diff options
-rw-r--r-- | demos/widgetsgallery/languagepage.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/demos/widgetsgallery/languagepage.cpp b/demos/widgetsgallery/languagepage.cpp index b4de9959..810caae3 100644 --- a/demos/widgetsgallery/languagepage.cpp +++ b/demos/widgetsgallery/languagepage.cpp @@ -32,6 +32,7 @@ #include <QGraphicsLinearLayout> #include <QStandardItemModel> #include <QStringList> +#include <QDebug> LanguagePage::LanguagePage() : comboBox(0), @@ -58,7 +59,6 @@ void LanguagePage::createContent() comboBox = new DuiComboBox; comboBox->setIconID("Icon-browser"); policy->addItem(comboBox, 1, 1); - connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLanguage(int))); retranslateUi(); } @@ -69,6 +69,8 @@ void LanguagePage::retranslateUi() if (!isContentCreated()) return; + disconnect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLanguage(int))); + QList<QStringList> rows; //% "None" rows << (QStringList() << qtTrId("xx_language_none") << "") @@ -86,6 +88,7 @@ void LanguagePage::retranslateUi() << (QStringList() << qtTrId("xx_language_hungarian") << "hu"); QStandardItemModel *newModel = new QStandardItemModel(rows.count(), 2, this); + Q_CHECK_PTR(newModel); int rowsCount = rows.count(); for (int i = 0; i < rowsCount; ++i) for (int j = 0; j < 2; ++j) @@ -93,7 +96,7 @@ void LanguagePage::retranslateUi() // comboBox->clear(); comboBox->setItemModel(newModel); - if (model) delete model; + if (model && model->QObject::parent() == this) delete model; model = newModel; DuiGConfItem languageItem("/Dui/i18n/Language"); QString currentLanguage = languageItem.value().toString(); @@ -104,12 +107,17 @@ void LanguagePage::retranslateUi() } //% "Please select language" comboBox->setTitle(qtTrId("xx_language_combobox_title")); + + connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLanguage(int))); } void LanguagePage::changeLanguage(int index) { - if ((uint) index >= model->rowCount()) + if (index < 0 || index >= model->rowCount()) return; + QString newLanguage = model->item(index, 1)->text(); DuiGConfItem languageItem("/Dui/i18n/Language"); - languageItem.set(model->item(index, 1)->text()); + if (newLanguage != languageItem.value().toString()) { + languageItem.set(newLanguage); + } } |