Fix Cyrillic characters not being read correctly from QSettings inis (#535)
* set ini codecs to utf8 * fix color config reading in Latin1 rather than Utf8
This commit is contained in:
		
							parent
							
								
									93c8befece
								
							
						
					
					
						commit
						66f2369af2
					
				@ -173,6 +173,7 @@ QString AOApplication::get_config_value(QString p_identifier, QString p_config,
 | 
				
			|||||||
        p = get_case_sensitive_path(p);
 | 
					        p = get_case_sensitive_path(p);
 | 
				
			||||||
        if (file_exists(p)) {
 | 
					        if (file_exists(p)) {
 | 
				
			||||||
            QSettings settings(p, QSettings::IniFormat);
 | 
					            QSettings settings(p, QSettings::IniFormat);
 | 
				
			||||||
 | 
					            settings.setIniCodec("UTF-8");
 | 
				
			||||||
            QVariant value = settings.value(p_identifier);
 | 
					            QVariant value = settings.value(p_identifier);
 | 
				
			||||||
            if (value.type() == QVariant::StringList) {
 | 
					            if (value.type() == QVariant::StringList) {
 | 
				
			||||||
//              qDebug() << "got" << p << "is a string list, returning" << value.toStringList().join(",");
 | 
					//              qDebug() << "got" << p << "is a string list, returning" << value.toStringList().join(",");
 | 
				
			||||||
 | 
				
			|||||||
@ -277,6 +277,7 @@ QString AOApplication::read_design_ini(QString p_identifier,
 | 
				
			|||||||
                                       QString p_design_path)
 | 
					                                       QString p_design_path)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  QSettings settings(p_design_path, QSettings::IniFormat);
 | 
					  QSettings settings(p_design_path, QSettings::IniFormat);
 | 
				
			||||||
 | 
					  settings.setIniCodec("UTF-8");
 | 
				
			||||||
  QVariant value = settings.value(p_identifier);
 | 
					  QVariant value = settings.value(p_identifier);
 | 
				
			||||||
  if (value.type() == QVariant::StringList) {
 | 
					  if (value.type() == QVariant::StringList) {
 | 
				
			||||||
    return value.toStringList().join(",");
 | 
					    return value.toStringList().join(",");
 | 
				
			||||||
@ -435,7 +436,7 @@ QString AOApplication::get_chat_markup(QString p_identifier, QString p_chat)
 | 
				
			|||||||
  // New Chadly method
 | 
					  // New Chadly method
 | 
				
			||||||
  QString value = get_config_value(p_identifier, "chat_config.ini", current_theme, get_subtheme(), default_theme, p_chat);
 | 
					  QString value = get_config_value(p_identifier, "chat_config.ini", current_theme, get_subtheme(), default_theme, p_chat);
 | 
				
			||||||
  if (!value.isEmpty())
 | 
					  if (!value.isEmpty())
 | 
				
			||||||
    return value.toLatin1();
 | 
					    return value.toUtf8();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Backwards ass compatibility
 | 
					  // Backwards ass compatibility
 | 
				
			||||||
  QStringList backwards_paths{get_theme_path("misc/" + p_chat + "/config.ini"),
 | 
					  QStringList backwards_paths{get_theme_path("misc/" + p_chat + "/config.ini"),
 | 
				
			||||||
@ -446,7 +447,7 @@ QString AOApplication::get_chat_markup(QString p_identifier, QString p_chat)
 | 
				
			|||||||
  for (const QString &p : backwards_paths) {
 | 
					  for (const QString &p : backwards_paths) {
 | 
				
			||||||
    QString value = read_design_ini(p_identifier, p);
 | 
					    QString value = read_design_ini(p_identifier, p);
 | 
				
			||||||
    if (!value.isEmpty()) {
 | 
					    if (!value.isEmpty()) {
 | 
				
			||||||
      return value.toLatin1();
 | 
					      return value.toUtf8();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -521,6 +522,7 @@ QString AOApplication::read_char_ini(QString p_char, QString p_search_line,
 | 
				
			|||||||
  QSettings settings(get_character_path(p_char, "char.ini"),
 | 
					  QSettings settings(get_character_path(p_char, "char.ini"),
 | 
				
			||||||
                     QSettings::IniFormat);
 | 
					                     QSettings::IniFormat);
 | 
				
			||||||
  settings.beginGroup(target_tag);
 | 
					  settings.beginGroup(target_tag);
 | 
				
			||||||
 | 
					  settings.setIniCodec("UTF-8");
 | 
				
			||||||
  QString value = settings.value(p_search_line).value<QString>();
 | 
					  QString value = settings.value(p_search_line).value<QString>();
 | 
				
			||||||
  settings.endGroup();
 | 
					  settings.endGroup();
 | 
				
			||||||
  return value;
 | 
					  return value;
 | 
				
			||||||
@ -541,6 +543,7 @@ QStringList AOApplication::read_ini_tags(QString p_path, QString target_tag)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  QStringList r_values;
 | 
					  QStringList r_values;
 | 
				
			||||||
  QSettings settings(p_path, QSettings::IniFormat);
 | 
					  QSettings settings(p_path, QSettings::IniFormat);
 | 
				
			||||||
 | 
					  settings.setIniCodec("UTF-8");
 | 
				
			||||||
  if (!target_tag.isEmpty())
 | 
					  if (!target_tag.isEmpty())
 | 
				
			||||||
    settings.beginGroup(target_tag);
 | 
					    settings.beginGroup(target_tag);
 | 
				
			||||||
  QStringList keys = settings.allKeys();
 | 
					  QStringList keys = settings.allKeys();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user