--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbinput/inputwidgets/hbinputcommondialogs.cpp Mon Apr 19 14:02:13 2010 +0300
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbInput module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+#include <QDir>
+#include <hbinputdef.h>
+#include <hblistdialog.h>
+#include <hblistwidgetitem.h>
+#include <hbinpututils.h>
+#include <hbinputsettingproxy.h>
+#include <hbinputmethod.h>
+
+#include "hbinputcommondialogs.h"
+
+/*!
+Displays language selection dialog and returns selected language.
+*/
+HbInputLanguage HbInputCommonDialogs::showLanguageSelectionDialog(QLocale::Language selectedLanguage, const QList<HbInputLanguage> languageList)
+{
+ HbListDialog* langDialog = new HbListDialog();
+ langDialog->setObjectName("Language dialog");
+
+#if QT_VERSION >= 0x040600
+ // Make sure the language dialog never steals focus.
+ langDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
+ langDialog->setActive(false);
+#endif
+
+ HbInputSettingProxy* settings = HbInputSettingProxy::instance();
+ HbInputLanguage currentLang = settings->globalInputLanguage();
+ QList<HbInputLanguage> languages;
+ if (languageList.count() == 0) {
+ HbInputUtils::listSupportedInputLanguages(languages);
+ } else {
+ languages=languageList;
+ }
+
+ QList<HbListWidgetItem*> listItems;
+ HbListWidgetItem* item = 0;
+ foreach( HbInputLanguage language, languages ) {
+ QString langName = language.localisedName();
+ if (langName.length() == 0) {
+ langName = QString("Unknown");
+ }
+ item = new HbListWidgetItem();
+ item->setText(langName);
+ if (language == currentLang ) {
+ QList<int> selected;
+ selected.append(listItems.count());
+ langDialog->setSelectedItems(selected);
+ }
+ if (language.language() == QLocale::Chinese) {
+ item->setData(language.variant(), Hb::UserRole);
+ } else {
+ item->setData(language.language(), Hb::UserRole);
+ }
+
+ listItems.append(item);
+ }
+ langDialog->setWidgetItems(listItems, true);
+ langDialog->setSelectionMode(HbAbstractItemView::SingleSelection);
+ langDialog->setDismissPolicy(HbPopup::NoDismiss);
+ langDialog->setModal(true);
+ langDialog->exec();
+ //TODO: needed to check from action which button was pressed (ok, cancel)
+ //HbAction* action = langDialog->exec();
+ if (langDialog->selectedItems().count()) {
+ int selection = langDialog->selectedItems().at(0);
+ HbInputLanguage result;
+ if(languages.at(selection).language() == QLocale::Chinese) {
+ result = languages.at(selection);
+ } else {
+ result = languages.at(selection).language();
+ }
+ return result;
+ } else {
+ return selectedLanguage;
+ }
+}
+
+/*!
+Displays input method selection dialog. The returned descriptor will contain string defined by HbDefaultModeIdString
+constant in its path field in case the system default input was selected. Otherwise the descriptor
+points to selected custom input plugin.
+*/
+HbInputMethodDescriptor HbInputCommonDialogs::showCustomInputMethodSelectionDialog(const HbInputLanguage &language)
+{
+ Q_UNUSED(language);
+
+ HbListDialog* methodDialog = new HbListDialog();
+ methodDialog->setObjectName("Input method dialog");
+
+#if QT_VERSION >= 0x040600
+ // Make sure the language dialog never steals focus.
+ methodDialog->setFlag(QGraphicsItem::ItemIsPanel, true);
+ methodDialog->setActive(false);
+#endif
+
+ QList<HbInputMethodDescriptor> customList = HbInputMethod::listCustomInputMethods();
+
+ QList<HbListWidgetItem*> listItems;
+ HbListWidgetItem* item = new HbListWidgetItem();
+ QString methodName("Default");
+ item->setText(methodName);
+ listItems.append(item);
+
+ //for (int i=0; i<customList.dllName.count() ; i++) {
+ foreach (HbInputMethodDescriptor descriptor, customList) {
+ QString displayName = descriptor.displayName();
+ if (displayName.length() == 0) {
+ displayName = QString("Unknown");
+ }
+ item = new HbListWidgetItem();
+ item->setText(displayName);
+ listItems.append(item);
+ }
+ methodDialog->setWidgetItems(listItems, true);
+ methodDialog->setSelectionMode(HbAbstractItemView::SingleSelection);
+ methodDialog->setDismissPolicy(HbPopup::NoDismiss);
+ methodDialog->setModal(true);
+ methodDialog->exec();
+ //TODO: needed to check from action which button was pressed (ok, cancel)
+ //HbAction* action = langDialog->exec();
+
+ HbInputMethodDescriptor result;
+ if (methodDialog->selectedItems().count()) {
+ int selection = methodDialog->selectedItems().first();
+ if (selection == 0) {
+ result.setDefault();
+ } else {
+ result = customList[selection-1];
+ }
+ }
+
+ return result;
+}
+
+// End of file