src/hbinput/inputwidgets/hbinputsettingdialog.cpp
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
--- a/src/hbinput/inputwidgets/hbinputsettingdialog.cpp	Mon Apr 19 14:02:13 2010 +0300
+++ b/src/hbinput/inputwidgets/hbinputsettingdialog.cpp	Mon May 03 12:48:33 2010 +0300
@@ -26,6 +26,7 @@
 #if QT_VERSION >= 0x040600
 #include <QGraphicsDropShadowEffect>
 #endif
+#include <QtAlgorithms>
 
 #include <hbdataform.h>
 #include <hbdataformmodel.h>
@@ -38,7 +39,7 @@
 #include <hbdeviceprofile.h>
 
 #include <hbinputlanguage.h>
-
+#include <hbstringutil.h>
 #include <hbdialog_p.h>
 
 #include "hbinputsettingproxy.h"
@@ -57,6 +58,7 @@
     void fillLanguageList(QStringList &list, QList<HbInputLanguage> &languageList, QString replace = QString(" "));
     int languageToIndex(HbInputLanguage &language, QList<HbInputLanguage> &languageList);
     HbInputLanguage indexToLanguage(int index, QList<HbInputLanguage> &languageList);
+    static bool caseInsensitiveLessThan(const HbInputLanguage &s1, const HbInputLanguage &s2);
 
 public:
     HbDataForm *mForm;
@@ -64,23 +66,24 @@
     QList<HbInputLanguage> mSecondaryLanguages;
     HbInputLanguage mPrimaryInputLanguage;
     HbInputLanguage mSecondaryInputLanguage;
-    int mPredictionStatus;
-    HbComboBox *mPrimaryComboBox;
-    HbComboBox *mSecondaryComboBox;
+    bool mPredictionStatus;
     HbPushButton *mPredictionButton;
+    HbDataFormModelItem *mSecondaryLangComboBox;
 };
 
 HbInputSettingDialogPrivate::HbInputSettingDialogPrivate()
- : mPrimaryComboBox(0), mSecondaryComboBox(0), mPredictionButton(0)
+ : mPredictionButton(0), mSecondaryLangComboBox(0)
 {
     mForm = new HbDataForm();
 
     HbInputSettingProxy *settings = HbInputSettingProxy::instance();
     mPrimaryInputLanguage = settings->globalInputLanguage();
     mSecondaryInputLanguage = settings->globalSecondaryInputLanguage();
-    mPredictionStatus = settings->predictiveInputStatus();
+    mPredictionStatus = settings->predictiveInputStatusForActiveKeyboard();
 
     HbInputUtils::listSupportedInputLanguages(mPrimaryLanguages);
+    qStableSort(mPrimaryLanguages.begin(), mPrimaryLanguages.end(), HbInputSettingDialogPrivate::caseInsensitiveLessThan);
+    //No need to sort secondary language as primary language list is already sorted.
     createSecondaryLanguageList();
 }
 
@@ -134,13 +137,24 @@
     }
 }
 
+bool HbInputSettingDialogPrivate::caseInsensitiveLessThan(const HbInputLanguage &s1, const HbInputLanguage &s2)
+{
+    //Temporaries because localisedName() is a non-const function
+    HbInputLanguage t1 = s1;
+    HbInputLanguage t2 = s2;
+    //Locale based comparison does not seem to be working perfectly.
+    //return !HbStringUtil::compareC(s1.localisedName(),s2.localisedName());
+    return t1.localisedName().toLower() < t2.localisedName().toLower();
+}
+
+
 /// @endcond
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::HbInputSettingDialog
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::HbInputSettingDialog(HbSettingItems, QGraphicsWidget*)
+    is deprecated. HbInputSettingDialog will be removed.
+
+*/
 HbInputSettingDialog::HbInputSettingDialog(HbSettingItems items, QGraphicsWidget *parent)
     : HbDialog(*new HbInputSettingDialogPrivate, parent)
 {
@@ -192,14 +206,13 @@
     }
     // Create drop down list for secondary language selection
     if(items & HbSettingItemSecondaryLang) {
-        HbDataFormModelItem *secondaryLanguage =
-            model->appendDataFormItem(HbDataFormModelItem::ComboBoxItem, tr("Secondary Writing language"));
+        d->mSecondaryLangComboBox = model->appendDataFormItem(HbDataFormModelItem::ComboBoxItem, tr("Secondary Writing language"));
         QStringList secondaryLanguageItems;
         d->fillLanguageList(secondaryLanguageItems, d->mSecondaryLanguages, tr("None"));
-        secondaryLanguage->setContentWidgetData(QString("items"),secondaryLanguageItems);
-        secondaryLanguage->setContentWidgetData(QString("currentIndex"),d->languageToIndex(d->mSecondaryInputLanguage, d->mSecondaryLanguages));
-        secondaryLanguage->setData(HbDataFormModelItem::KeyRole, QString("secondary_language"));
-        d->mForm->addConnection(secondaryLanguage, SIGNAL(currentIndexChanged(int)), this, SLOT(secondaryLanguageChanged(int)));
+        d->mSecondaryLangComboBox->setContentWidgetData(QString("items"),secondaryLanguageItems);
+        d->mSecondaryLangComboBox->setContentWidgetData(QString("currentIndex"),d->languageToIndex(d->mSecondaryInputLanguage, d->mSecondaryLanguages));
+        d->mSecondaryLangComboBox->setData(HbDataFormModelItem::KeyRole, QString("secondary_language"));
+        d->mForm->addConnection(d->mSecondaryLangComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(secondaryLanguageChanged(int)));
     }
     if(items & HbSettingItemPrediction) {
         QString statusOff = tr("Off");
@@ -226,20 +239,21 @@
     setContentWidget(d->mForm);
 }
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::~HbInputSettingDialog
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::~HbInputSettingDialog()
+    is deprecated. HbInputSettingDialog will be removed.
+
+*/
 HbInputSettingDialog::~HbInputSettingDialog()
 {
 }
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::selected
-// Called when new settings are accepted
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::selected()
+    is deprecated. HbInputSettingDialog will be removed.
+
+Called when new settings are accepted
+*/
 void HbInputSettingDialog::selected()
 {
     Q_D(HbInputSettingDialog);
@@ -261,46 +275,49 @@
         d->mPredictionStatus = false;
     }
     //  synchronize the prediction status in settings to prediction status set through the settings dialog.	
-    if(d->mPredictionStatus != settings->predictiveInputStatus()) {
-        settings->setPredictiveInputStatus(d->mPredictionStatus);
+    if (d->mPredictionStatus != settings->predictiveInputStatusForActiveKeyboard()) {
+        settings->setPredictiveInputStatusForActiveKeyboard(d->mPredictionStatus);
     }
 }
 
 /*!
 \deprecated HbInputSettingDialog::settingItemDisplayed(const QModelIndex&)
-  is deprecated and will be removed.
+    is deprecated. HbInputSettingDialog will be removed.
+
+Called when setting items are shown
 */
 void HbInputSettingDialog::settingItemDisplayed(const QModelIndex &index)
 {
     Q_UNUSED(index);
 }
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::primaryLanguageChanged
-// Called when user changes primary language
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::primaryLanguageChanged(int index)
+    is deprecated. HbInputSettingDialog will be removed.
+
+Called when user changes primary language
+*/
 void HbInputSettingDialog::primaryLanguageChanged(int index)
 {
     Q_D(HbInputSettingDialog);
 
     HbInputSettingProxy *settings = HbInputSettingProxy::instance();
     HbPredictionFactory *predFactory = HbPredictionFactory::instance();
-    int oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryInputLanguage) != NULL);		
+    bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryInputLanguage) != NULL);		
     d->mPrimaryInputLanguage = d->indexToLanguage(index, d->mPrimaryLanguages);
-    int langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryInputLanguage) != NULL);		
+    bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryInputLanguage) != NULL);		
     if( oldPLangSupportsPrediction != langSupportsPrediction ) {
         if(langSupportsPrediction) { // language supports prediction
             // first we need to enable the button then only we can click on it
-            if (d->mPredictionButton && settings->predictiveInputStatus() != d->mPredictionStatus) {
+            if (d->mPredictionButton && settings->predictiveInputStatusForActiveKeyboard() != d->mPredictionStatus) {
                 d->mPredictionButton->click();
-            } else if (!d->mPredictionButton && settings->predictiveInputStatus() != d->mPredictionStatus) { 
+            } else if (!d->mPredictionButton && settings->predictiveInputStatusForActiveKeyboard() != d->mPredictionStatus) { 
                 // for numeric editors we dont have prediction button but we need to change the prediction status while changing language
-                d->mPredictionStatus = settings->predictiveInputStatus();
+                d->mPredictionStatus = settings->predictiveInputStatusForActiveKeyboard();
             }
         } else { // language does not supports prediction
             if(d->mPredictionButton && (d->mPredictionStatus)) {
-                d->mPredictionButton->click();		
+                d->mPredictionButton->click();
             } else if (!d->mPredictionButton && langSupportsPrediction != d->mPredictionStatus) {
                 // for numeric editors we dont have prediction button but we need to change the prediction status
                 d->mPredictionStatus = langSupportsPrediction;	
@@ -310,26 +327,23 @@
             d->mPredictionButton->setEnabled(langSupportsPrediction);
         }
     }
-    if (d->mSecondaryComboBox) {
-        HbInputLanguage secondaryLanguage = d->mSecondaryInputLanguage;
 
-        // Update secondary language list
+    // refreshing the secondary language list
+    // remove the current primary language selected from the secondary language items list
+    if(d->mSecondaryLangComboBox) {
         d->createSecondaryLanguageList();
         QStringList secondaryLanguageItems;
         d->fillLanguageList(secondaryLanguageItems, d->mSecondaryLanguages, tr("None"));
-        d->mSecondaryComboBox->setItems(secondaryLanguageItems);
-
-        if (d->mPrimaryInputLanguage != secondaryLanguage) {
-            d->mSecondaryComboBox->setCurrentIndex(d->languageToIndex(secondaryLanguage, d->mSecondaryLanguages));
-        }
+        d->mSecondaryLangComboBox->setContentWidgetData(QString("items"),secondaryLanguageItems);
     }
 }
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::secondaryLanguageChanged
-// Called when user changes secondary language
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::secondaryLanguageChanged(int)
+    is deprecated. HbInputSettingDialog will be removed.
+
+Called when user changes secondary language
+*/
 void HbInputSettingDialog::secondaryLanguageChanged(int index)
 {
     Q_D(HbInputSettingDialog);
@@ -337,11 +351,12 @@
     d->mSecondaryInputLanguage = d->indexToLanguage(index, d->mSecondaryLanguages);
 }
 
-// ---------------------------------------------------------------------------
-// HbInputSettingDialog::predictionStatusChanged
-// Called when user changes prediction status
-// ---------------------------------------------------------------------------
-//
+/*!
+\deprecated HbInputSettingDialog::predictionStatusChanged()
+    is deprecated. HbInputSettingDialog will be removed.
+
+Called when user changes prediction status
+*/
 void HbInputSettingDialog::predictionStatusChanged()
 {
     Q_D(HbInputSettingDialog);
@@ -350,6 +365,9 @@
 }
 
 /*!
+\deprecated HbInputSettingDialog::showEvent(QShowEvent*)
+    is deprecated. HbInputSettingDialog will be removed.
+
 \reimp
 */
 void HbInputSettingDialog::showEvent(QShowEvent *event)