Skip to content

Commit

Permalink
[systemsettings] Add LanguageModel::supportedLanguages()
Browse files Browse the repository at this point in the history
  • Loading branch information
Bea Lam committed Sep 9, 2013
1 parent f571584 commit 7fdaebd
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
48 changes: 27 additions & 21 deletions src/languagemodel.cpp
Expand Up @@ -91,27 +91,7 @@ LanguageModel::LanguageModel(QObject *parent)
: QAbstractListModel(parent),
m_currentIndex(-1)
{
// get supported languages
QDir languageDirectory(LanguageSupportDirectory);
QFileInfoList fileInfoList = languageDirectory.entryInfoList(QStringList("*.conf"), QDir::Files);

foreach (const QFileInfo &fileInfo, fileInfoList) {
QSettings settings(fileInfo.filePath(), QSettings::IniFormat);
settings.setIniCodec("UTF-8");
QString name = settings.value("Name").toString();
QString localeCode = settings.value("LocaleCode").toString();
QString region = settings.value("Region").toString();
//% "Region: %1"
QString regionLabel = settings.value("RegionLabel", qtTrId("settings_system-la-region")).toString();
if (name.isEmpty() || localeCode.isEmpty() || region.isEmpty()) {
continue;
}
Language newLanguage(name, localeCode, region, regionLabel);
m_languages.append(newLanguage);
}

qSort(m_languages.begin(), m_languages.end(), nameLessThan);

m_languages = supportedLanguages();
readCurrentLocale();
}

Expand Down Expand Up @@ -227,6 +207,32 @@ void LanguageModel::setSystemLocale(const QString &localeCode, LocaleUpdateMode
}
}

QList<Language> LanguageModel::supportedLanguages()
{
// get supported languages
QDir languageDirectory(LanguageSupportDirectory);
QFileInfoList fileInfoList = languageDirectory.entryInfoList(QStringList("*.conf"), QDir::Files);
QList<Language> languages;

foreach (const QFileInfo &fileInfo, fileInfoList) {
QSettings settings(fileInfo.filePath(), QSettings::IniFormat);
settings.setIniCodec("UTF-8");
QString name = settings.value("Name").toString();
QString localeCode = settings.value("LocaleCode").toString();
QString region = settings.value("Region").toString();
//% "Region: %1"
QString regionLabel = settings.value("RegionLabel", qtTrId("settings_system-la-region")).toString();
if (name.isEmpty() || localeCode.isEmpty() || region.isEmpty()) {
continue;
}
Language newLanguage(name, localeCode, region, regionLabel);
languages.append(newLanguage);
}

qSort(languages.begin(), languages.end(), nameLessThan);
return languages;
}

int LanguageModel::getLocaleIndex(const QString &locale) const
{
int i = 0;
Expand Down
2 changes: 2 additions & 0 deletions src/languagemodel.h
Expand Up @@ -82,6 +82,8 @@ class LanguageModel: public QAbstractListModel

Q_INVOKABLE void setSystemLocale(const QString &localeCode, LocaleUpdateMode updateMode);

static QList<Language> supportedLanguages();

signals:
void currentIndexChanged();

Expand Down

0 comments on commit 7fdaebd

Please sign in to comment.