diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-09-01 13:46:09 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-09-01 13:46:09 +0000 |
| commit | 7a1bbda224cf38a593f39a1bd9c02e2027e6f73a (patch) | |
| tree | 6ab052c9d03eee07e61c11f65770fbc6ec5509b0 | |
| parent | 4a82cdf9d88d28d26923091bff34e3a3d5163138 (diff) | |
| download | qmmp-7a1bbda224cf38a593f39a1bd9c02e2027e6f73a.tar.gz qmmp-7a1bbda224cf38a593f39a1bd9c02e2027e6f73a.tar.bz2 qmmp-7a1bbda224cf38a593f39a1bd9c02e2027e6f73a.zip | |
added user interface language option
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2919 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/qmmp/qmmp.cpp | 25 | ||||
| -rw-r--r-- | src/qmmp/qmmp.h | 12 | ||||
| -rw-r--r-- | src/qmmpui/configdialog.cpp | 42 | ||||
| -rw-r--r-- | src/qmmpui/configdialog.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/forms/configdialog.ui | 2 |
5 files changed, 80 insertions, 2 deletions
diff --git a/src/qmmp/qmmp.cpp b/src/qmmp/qmmp.cpp index 05987b7f9..69127abad 100644 --- a/src/qmmp/qmmp.cpp +++ b/src/qmmp/qmmp.cpp @@ -31,6 +31,7 @@ #include "qmmp.h" QString Qmmp::m_configFile; +QString Qmmp::m_langID; const QString Qmmp::configFile() { @@ -78,6 +79,15 @@ const QString Qmmp::pluginsPath() QString Qmmp::systemLanguageID() { + if(m_langID.isEmpty()) + { + m_langID = uiLanguageID(); + qDebug("Qmmp: ui language: %s", qPrintable(m_langID)); + } + + if(m_langID != "auto") + return m_langID; + #ifdef Q_OS_UNIX QByteArray v = qgetenv ("LC_ALL"); if (v.isEmpty()) @@ -89,3 +99,18 @@ QString Qmmp::systemLanguageID() #endif return QLocale::system().name(); } + +QString Qmmp::uiLanguageID() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + QString langID = settings.value("General/locale", "auto").toString(); + langID = langID.isEmpty() ? "auto" : langID; + return langID; +} + +void Qmmp::setUiLanguageID(const QString &code) +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("General/locale", code); + m_langID.clear(); +} diff --git a/src/qmmp/qmmp.h b/src/qmmp/qmmp.h index 7317417b2..4cd81fd94 100644 --- a/src/qmmp/qmmp.h +++ b/src/qmmp/qmmp.h @@ -102,12 +102,22 @@ public: */ static const QString pluginsPath(); /*! - * Returns system language + * Returns system language if uiLanguageID() is 'auto'. Otherwise returns uiLanguageID(). */ static QString systemLanguageID(); + /*! + * Returns state of the user interface language option. Code "auto" means autodetection. + */ + static QString uiLanguageID(); + /*! + * Sets user interface language. + * @param code Language code; code "auto" means autodetection. + */ + static void setUiLanguageID(const QString &code); private: static QString m_configFile; + static QString m_langID; }; diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp index 78b62e2cc..f97b9aa06 100644 --- a/src/qmmpui/configdialog.cpp +++ b/src/qmmpui/configdialog.cpp @@ -69,6 +69,7 @@ ConfigDialog::ConfigDialog (QWidget *parent) : QDialog (parent) m_ui->replayGainModeComboBox->addItem (tr("Disabled"), QmmpSettings::REPLAYGAIN_DISABLED); readSettings(); loadPluginsInfo(); + loadLanguages(); createMenus(); //setup icons m_ui->preferencesButton->setIcon(QIcon::fromTheme("configure")); @@ -297,6 +298,43 @@ void ConfigDialog::createMenus() connect(menu, SIGNAL(triggered (QAction *)), SLOT(addTitleString(QAction *))); } +void ConfigDialog::loadLanguages() +{ + QMap<QString, QString> l; + l["auto"] = tr("<Autodetect>"); + l["pt_BR"] = tr("Brazilian Portuguese"); + l["zh_CN"] = tr("Chinese Simplified"); + l["zh_TW"] = tr("Chinese Traditional"); + l["cs"] = tr("Czech"); + l["nl"] = tr("Dutch"); + l["en_US"] = tr("English"); + l["fr"] = tr("French"); + l["de"] = tr("German"); + l["hu"] = tr("Hungarian"); + l["it"] = tr("Italian"); + l["ja"] = tr("Japanese"); + l["kk"] = tr("Kazakh"); + l["lt"] = tr("Lithuanian"); + l["pl_PL"] = tr("Polish"); + l["ru_RU"] = tr("Russian"); + l["sk"] = tr("Slovak"); + l["es"] = tr("Spanish"); + l["tr"] = tr("Turkish"); + l["uk_UA"] = tr("Ukrainian"); + + foreach(QString code, l.keys()) + { + QString title = code != "auto" ? l.value(code) + " (" + code + ")" : l.value(code); + m_ui->langComboBox->addItem(title, code); + } + + QString code = Qmmp::uiLanguageID(); + int index = m_ui->langComboBox->findData(code); + if(index < 0) + index = m_ui->langComboBox->findData("auto"); + m_ui->langComboBox->setCurrentIndex(index); +} + void ConfigDialog::addTitleString(QAction * a) { if (m_ui->formatLineEdit->cursorPosition () < 1) @@ -351,6 +389,10 @@ void ConfigDialog::saveSettings() QSettings settings (Qmmp::configFile(), QSettings::IniFormat); settings.setValue("ConfigDialog/splitter_sizes", var_sizes); settings.setValue("ConfigDialog/window_size", size()); + //User interface language + int index = m_ui->langComboBox->currentIndex(); + if(index >= 0) + Qmmp::setUiLanguageID(m_ui->langComboBox->itemData(index).toString()); } void ConfigDialog::on_treeWidget_itemChanged (QTreeWidgetItem *item, int column) diff --git a/src/qmmpui/configdialog.h b/src/qmmpui/configdialog.h index 163df66ad..b039c3529 100644 --- a/src/qmmpui/configdialog.h +++ b/src/qmmpui/configdialog.h @@ -72,6 +72,7 @@ private: void findSkins(const QString &path); void loadPluginsInfo(); void createMenus(); + void loadLanguages(); int m_insert_row; Ui::ConfigDialog *m_ui; diff --git a/src/qmmpui/forms/configdialog.ui b/src/qmmpui/forms/configdialog.ui index 95183279a..14ecc4d49 100644 --- a/src/qmmpui/forms/configdialog.ui +++ b/src/qmmpui/forms/configdialog.ui @@ -724,7 +724,7 @@ <property name="title"> <string>Audio</string> </property> - <layout class="QGridLayout" name="gridLayout"> + <layout class="QGridLayout" name="gridLayout3"> <item row="0" column="0"> <widget class="QLabel" name="label_20"> <property name="text"> |
