src/hbinput/inputwidgets/hbinputsettinglist.cpp
changeset 6 c3690ec91ef8
parent 5 627c4a0fd0e7
child 7 923ff622b8b9
equal deleted inserted replaced
5:627c4a0fd0e7 6:c3690ec91ef8
    20 **
    20 **
    21 ** If you have questions regarding the use of this file, please contact
    21 ** If you have questions regarding the use of this file, please contact
    22 ** Nokia at developer.feedback@nokia.com.
    22 ** Nokia at developer.feedback@nokia.com.
    23 **
    23 **
    24 ****************************************************************************/
    24 ****************************************************************************/
       
    25 #include "hbinputsettinglist.h"
    25 
    26 
    26 #include <QGraphicsLinearLayout>
    27 #include <QGraphicsLinearLayout>
    27 #include <QGraphicsGridLayout>
    28 #include <QGraphicsGridLayout>
    28 
    29 
    29 #include <hblabel.h>
    30 #include <hblabel.h>
    34 #include <hbinputsettingproxy.h>
    35 #include <hbinputsettingproxy.h>
    35 #include <hbinpututils.h>
    36 #include <hbinpututils.h>
    36 #include <hbinputpredictionfactory.h>
    37 #include <hbinputpredictionfactory.h>
    37 #include <hbinputregioncollector_p.h>
    38 #include <hbinputregioncollector_p.h>
    38 
    39 
    39 #include "hbinputsettinglist.h"
       
    40 #include "hbdialog_p.h"
    40 #include "hbdialog_p.h"
    41 
    41 
    42 const QString settingsIcon("qtg_mono_settings");
    42 const QString settingsIcon("qtg_mono_settings");
    43 const QString inputMethodIcon("qtg_mono_virtual_input");
    43 const QString inputMethodIcon("qtg_mono_virtual_input");
    44 
    44 
    59     HbInputLanguage mSecondaryLanguage;
    59     HbInputLanguage mSecondaryLanguage;
    60     QList<QString> mPredictionValues;
    60     QList<QString> mPredictionValues;
    61 };
    61 };
    62 
    62 
    63 HbInputSettingListPrivate::HbInputSettingListPrivate()
    63 HbInputSettingListPrivate::HbInputSettingListPrivate()
    64  : mLanguageButton(0), mPredictionButton(0), mOptionList(0)
    64     : mLanguageButton(0), mPredictionButton(0), mOptionList(0)
    65 {
    65 {
    66 }
    66 }
    67 
    67 
    68 qreal HbInputSettingListPrivate::languageNameWidth()
    68 qreal HbInputSettingListPrivate::languageNameWidth()
    69 {
    69 {
    70     qreal nameWidth(0);
    70     qreal nameWidth(0);
    71     QList<HbInputLanguage> languages;
    71     QList<HbInputLanguage> languages;
    72     HbInputUtils::listSupportedInputLanguages(languages);
    72     HbInputUtils::listSupportedInputLanguages(languages);
    73     QFontMetrics fontMetrics(mLanguageButton->font());
    73     QFontMetrics fontMetrics(mLanguageButton->font());
    74 
    74 
    75     foreach (HbInputLanguage language, languages) {
    75     foreach(HbInputLanguage language, languages) {
    76         qreal width = fontMetrics.width(language.localisedName());
    76         qreal width = fontMetrics.width(language.localisedName());
    77         if (width > nameWidth) {
    77         if (width > nameWidth) {
    78             nameWidth = width;
    78             nameWidth = width;
    79         }
    79         }
    80     }
    80     }
    85 /// @endcond
    85 /// @endcond
    86 
    86 
    87 /*!
    87 /*!
    88 Constructs input setting list
    88 Constructs input setting list
    89 */
    89 */
    90 HbInputSettingList::HbInputSettingList(QGraphicsWidget* parent)
    90 HbInputSettingList::HbInputSettingList(QGraphicsWidget *parent)
    91  : HbDialog(*new HbInputSettingListPrivate(), parent)
    91     : HbDialog(*new HbInputSettingListPrivate(), parent)
    92 {
    92 {
    93     Q_D(HbInputSettingList);
    93     Q_D(HbInputSettingList);
    94     HbInputRegionCollector::instance()->attach(this);
    94     HbInputRegionCollector::instance()->attach(this);
    95 
    95 
    96     QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
    96     QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
    97     QGraphicsGridLayout *gridLayout = new QGraphicsGridLayout();
    97     QGraphicsGridLayout *gridLayout = new QGraphicsGridLayout();
    98     
    98 
    99     HbLabel *languageLabel = new HbLabel(tr("Language"), this);
    99     HbLabel *languageLabel = new HbLabel(tr("Language"), this);
   100     languageLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
   100     languageLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
   101     d->mLanguageButton = new HbPushButton(QString(), this);
   101     d->mLanguageButton = new HbPushButton(QString(), this);
   102     d->mLanguageButton->setFontSpec(HbFontSpec(HbFontSpec::Primary));
   102     d->mLanguageButton->setFontSpec(HbFontSpec(HbFontSpec::Primary));
   103     d->mLanguageButton->setObjectName("Language setting button");
   103     d->mLanguageButton->setObjectName("Language setting button");
   128     gridLayout->setRowFixedHeight(0, buttonHeight);
   128     gridLayout->setRowFixedHeight(0, buttonHeight);
   129     gridLayout->setRowFixedHeight(1, buttonHeight);
   129     gridLayout->setRowFixedHeight(1, buttonHeight);
   130 
   130 
   131     mainLayout->addItem(gridLayout);
   131     mainLayout->addItem(gridLayout);
   132     mainLayout->addItem(d->mOptionList);
   132     mainLayout->addItem(d->mOptionList);
   133     setLayout(mainLayout);
   133     QGraphicsWidget *content = new QGraphicsWidget(this);
       
   134     content->setLayout(mainLayout);
       
   135     setContentWidget(content);
   134 
   136 
   135     d->mPredictionValues.append(tr("Off"));
   137     d->mPredictionValues.append(tr("Off"));
   136     d->mPredictionValues.append(tr("On"));
   138     d->mPredictionValues.append(tr("On"));
   137 
   139 
   138     // set default values for popup
   140     // set default values for popup
   139     setTimeout(HbDialog::NoTimeout);
   141     setTimeout(HbDialog::NoTimeout);
   140     setBackgroundFaded(false);
   142     setBackgroundFaded(false);
   141     setDismissPolicy(TapOutside);
   143     setDismissPolicy(TapOutside);
   142 
   144 
   143 #if QT_VERSION >= 0x040600
       
   144     // Make sure the custom button list never steals focus.
   145     // Make sure the custom button list never steals focus.
   145     setFlag(QGraphicsItem::ItemIsPanel, true);
   146     setFlag(QGraphicsItem::ItemIsPanel, true);
   146     setActive(false);
   147     setActive(false);
   147 #endif
       
   148 
   148 
   149     connect(d->mLanguageButton, SIGNAL(clicked(bool)), this, SLOT(languageButtonClicked()));
   149     connect(d->mLanguageButton, SIGNAL(clicked(bool)), this, SLOT(languageButtonClicked()));
   150     connect(d->mPredictionButton, SIGNAL(clicked(bool)), this, SLOT(predictionButtonClicked()));
   150     connect(d->mPredictionButton, SIGNAL(clicked(bool)), this, SLOT(predictionButtonClicked()));
   151     connect(d->mOptionList, SIGNAL(activated(HbListWidgetItem*)), this, SLOT(listItemActivated(HbListWidgetItem*)));
   151     connect(d->mOptionList, SIGNAL(activated(HbListWidgetItem *)), this, SLOT(listItemActivated(HbListWidgetItem *)));
   152     connect(d->mOptionList, SIGNAL(longPressed(HbListWidgetItem*, const QPointF&)), this, SLOT(listItemActivated(HbListWidgetItem*)));
   152     connect(d->mOptionList, SIGNAL(longPressed(HbListWidgetItem *, const QPointF &)), this, SLOT(listItemActivated(HbListWidgetItem *)));
   153 
   153 
   154     HbInputSettingProxy *settings = HbInputSettingProxy::instance();
   154     HbInputSettingProxy *settings = HbInputSettingProxy::instance();
   155     connect(settings, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), this, SLOT(primaryLanguageChanged(const HbInputLanguage &)));
   155     connect(settings, SIGNAL(globalInputLanguageChanged(const HbInputLanguage &)), this, SLOT(primaryLanguageChanged(const HbInputLanguage &)));
   156     connect(settings, SIGNAL(globalSecondaryInputLanguageChanged(const HbInputLanguage &)), this, SLOT(secondaryLanguageChanged(const HbInputLanguage &)));
   156     connect(settings, SIGNAL(globalSecondaryInputLanguageChanged(const HbInputLanguage &)), this, SLOT(secondaryLanguageChanged(const HbInputLanguage &)));
   157     connect(settings, SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags, bool)), this, SLOT(predictionStatusChanged(HbKeyboardSettingFlags, bool)));
   157     connect(settings, SIGNAL(predictiveInputStateChanged(HbKeyboardSettingFlags, bool)), this, SLOT(predictionStatusChanged(HbKeyboardSettingFlags, bool)));
   216 */
   216 */
   217 void HbInputSettingList::languageButtonClicked()
   217 void HbInputSettingList::languageButtonClicked()
   218 {
   218 {
   219     Q_D(HbInputSettingList);
   219     Q_D(HbInputSettingList);
   220 
   220 
   221 	HbInputSettingProxy *settings = HbInputSettingProxy::instance();
   221     HbInputSettingProxy *settings = HbInputSettingProxy::instance();
   222     HbPredictionFactory *predFactory = HbPredictionFactory::instance();
   222     HbPredictionFactory *predFactory = HbPredictionFactory::instance();
   223     if (d->mSecondaryLanguage == HbInputLanguage()) {
   223     if (d->mSecondaryLanguage == HbInputLanguage()) {
   224         emit inputSettingsButtonClicked();
   224         emit inputSettingsButtonClicked();
   225     } else {
   225     } else {
   226 		HbInputLanguage language = d->mPrimaryLanguage;
   226         HbInputLanguage language = d->mPrimaryLanguage;
   227 		bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(language) != NULL);	
   227         bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(language) != NULL);
   228         d->mPrimaryLanguage = d->mSecondaryLanguage;
   228         d->mPrimaryLanguage = d->mSecondaryLanguage;
   229         d->mSecondaryLanguage = language;
   229         d->mSecondaryLanguage = language;
   230 
   230 
   231         HbInputSettingProxy::instance()->setGlobalInputLanguage(d->mPrimaryLanguage);
   231         HbInputSettingProxy::instance()->setGlobalInputLanguage(d->mPrimaryLanguage);
   232 		bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryLanguage) != NULL);	
   232         bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryLanguage) != NULL);
   233         HbInputSettingProxy::instance()->setGlobalSecondaryInputLanguage(d->mSecondaryLanguage);
   233         HbInputSettingProxy::instance()->setGlobalSecondaryInputLanguage(d->mSecondaryLanguage);
   234         
   234 
   235 		if( oldPLangSupportsPrediction != langSupportsPrediction) {
   235         if (oldPLangSupportsPrediction != langSupportsPrediction) {
   236             settings->setPredictiveInputStatusForActiveKeyboard(langSupportsPrediction);
   236             settings->setPredictiveInputStatusForActiveKeyboard(langSupportsPrediction);
   237 		} 	
   237         }
   238     }
   238     }
   239 
   239 
   240     close();
   240     close();
   241 }
   241 }
   242 
   242