diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbinput/inputwidgets/hbinputsettinglist.cpp --- a/src/hbinput/inputwidgets/hbinputsettinglist.cpp Mon Oct 04 17:49:30 2010 +0300 +++ b/src/hbinput/inputwidgets/hbinputsettinglist.cpp Mon Oct 18 18:23:13 2010 +0300 @@ -39,7 +39,14 @@ #include #include -#include "hbdialog_p.h" +#include "hbinputpopupbase_p.h" + +/*! +@stable +@hbinput +\class HbInputSettingList +\brief Input options popup opened from virtual keyboards. +*/ const QString settingsIcon("qtg_mono_settings"); const QString inputMethodIcon("qtg_mono_virtual_input"); @@ -49,7 +56,7 @@ /// @cond -class HbInputSettingListPrivate : public HbDialogPrivate +class HbInputSettingListPrivate : public HbInputPopupBasePrivate { Q_DECLARE_PUBLIC(HbInputSettingList) @@ -68,10 +75,11 @@ HbInputLanguage mSecondaryLanguage; QList mPredictionValues; HbInputMethodSelectionList *mInputMethodSelectionList; + bool mIsPredictionDisabled; }; HbInputSettingListPrivate::HbInputSettingListPrivate() - : mLanguageButton(0), mPredictionButton(0), mOptionList(0), mInputMethodSelectionList(0) + : mLanguageButton(0), mPredictionButton(0), mOptionList(0), mInputMethodSelectionList(0), mIsPredictionDisabled(false) { } @@ -127,17 +135,16 @@ Constructs input setting list */ HbInputSettingList::HbInputSettingList(QGraphicsWidget *parent) - : HbDialog(*new HbInputSettingListPrivate(), parent) + : HbInputPopupBase(*new HbInputSettingListPrivate(), parent) { Q_D(HbInputSettingList); HbInputRegionCollector::instance()->attach(this); // Get correct size from style parameters - HbStyle style; qreal listWidth(300); - style.parameter(QString("expr(var(hb-param-screen-short-edge)-(2*var(hb-param-margin-gene-screen)))"), listWidth); + style()->parameter(QString("expr(var(hb-param-screen-short-edge)-(2*var(hb-param-margin-gene-screen)))"), listWidth); qreal margin(5); - style.parameter(QString("hb-param-margin-gene-popup"), margin); + style()->parameter(QString("hb-param-margin-gene-popup"), margin); QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical); QGraphicsGridLayout *gridLayout = new QGraphicsGridLayout(); @@ -170,7 +177,7 @@ // Width for language button is based on the width of language name string and button margins qreal buttonMargin(20); - style.parameter(QString("expr(var(hb-param-margin-gene-left)+var(hb-param-margin-gene-right))"), buttonMargin); + style()->parameter(QString("expr(var(hb-param-margin-gene-left)+var(hb-param-margin-gene-right))"), buttonMargin); gridLayout->setColumnFixedWidth(1, buttonMargin + d->languageNameWidth()); mainLayout->addItem(gridLayout); @@ -191,10 +198,6 @@ setContentsMargins(margin, margin, margin, margin); setPreferredWidth(listWidth); - // Make sure the input settings list never steals focus. - setFlag(QGraphicsItem::ItemIsPanel, true); - setActive(false); - connect(d->mLanguageButton, SIGNAL(clicked(bool)), this, SLOT(languageButtonClicked())); connect(d->mPredictionButton, SIGNAL(clicked(bool)), this, SLOT(predictionButtonClicked())); connect(d->mOptionList, SIGNAL(activated(HbListWidgetItem *)), this, SLOT(listItemActivated(HbListWidgetItem *))); @@ -240,6 +243,15 @@ } else if (d->mOptionList->count() == 2 && !showInputMethod) { delete d->mOptionList->takeItem(0); } + + HbInputMethod* input = HbInputMethod::activeInputMethod(); + + if (input && input->focusObject() && input->focusObject()->editorInterface().inputConstraints() & HbEditorConstraintLatinAlphabetOnly){ + setLanguageSelectionEnabled(false); + } else { + setLanguageSelectionEnabled(true); + } + } /*! @@ -287,7 +299,6 @@ emit inputSettingsButtonClicked(); } else { HbInputLanguage language = d->mPrimaryLanguage; - bool oldPLangSupportsPrediction = (predFactory->predictionEngineForLanguage(language) != NULL); d->mPrimaryLanguage = d->mSecondaryLanguage; d->mSecondaryLanguage = language; @@ -295,8 +306,13 @@ bool langSupportsPrediction = (predFactory->predictionEngineForLanguage(d->mPrimaryLanguage) != NULL); HbInputSettingProxy::instance()->setGlobalSecondaryInputLanguage(d->mSecondaryLanguage); - if (oldPLangSupportsPrediction != langSupportsPrediction) { - settings->setPredictiveInputStatusForActiveKeyboard(langSupportsPrediction); + bool predictionStatus = settings->predictiveInputStatusForActiveKeyboard(); + if (!langSupportsPrediction && predictionStatus) { + d->mIsPredictionDisabled = true; + settings->setPredictiveInputStatusForActiveKeyboard(false); + } else if(d->mIsPredictionDisabled){ + settings->setPredictiveInputStatusForActiveKeyboard(true); + d->mIsPredictionDisabled = false; } }