aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike FABIAN <mike.fabian@basyskom.de>2010-03-03 11:26:51 +0100
committerMike FABIAN <mike.fabian@basyskom.de>2010-03-03 16:44:28 +0100
commit428f3babdd67eacd36b3960bd4fbebb26ce82d2a (patch)
treef5960f1b82b10fa86e8d6a16782a352c66c4fa74
parentcdc643b028dc8127daa72141627647bac7091564 (diff)
Changes: some improvements to the change language dialog in widgetsgallery
RevBy: John Tapsell Details: - disconnect the signal to change the language while the combobox is re-created to avoid useless extra signals - set gconf key only if language really changed
-rw-r--r--demos/widgetsgallery/languagepage.cpp16
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);
+ }
}