--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbwidgets/popups/hbinputdialog_p.cpp Mon Apr 19 14:02:13 2010 +0300
@@ -0,0 +1,340 @@
+/****************************************************************************
+**
+** 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 HbWidgets 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 "hbinputdialog_p.h"
+#include "hbinputdialogcontent_p.h"
+#include "hbstyleoptioninputdialog.h"
+
+#include <hblineedit.h>
+#include <hbaction.h>
+#include <hbvalidator.h>
+#include <hbstyle.h>
+#include <hbinputeditorinterface.h>
+#include <hbinputsettingproxy.h>
+#include <hbmainwindow.h>
+
+//#define HBINPUTDIALOG_DEBUG
+#ifdef HBINPUTDIALOG_DEBUG
+#include <QtDebug>
+#endif
+
+HbInputDialogContentWidget::HbInputDialogContentWidget(HbInputDialogPrivate* priv,QGraphicsItem* parent) :
+ HbWidget(parent),
+ d(priv),
+ mLabel1(0),
+ mLabel2(0),
+ mEdit2(0),
+ mAdditionalRowVisible(false)
+{
+ mLabel1 = style()->createPrimitive(HbStyle::P_InputDialog_text,this);
+ mEdit1 = new HbLineEdit(this);
+ HbStyle::setItemName(mEdit1, "text-1");
+
+ this->setProperty("additionalRowVisible",QVariant(false));
+}
+
+
+void HbInputDialogContentWidget::setAdditionalRowVisible(bool visible)
+{
+ mAdditionalRowVisible = visible;
+
+ if(!mLabel2 && visible) {
+ mLabel2 = style()->createPrimitive(HbStyle::P_InputDialog_additional_text,this);
+ }
+
+ if(!mEdit2 && visible) {
+ //Retrieve the cached data here and assign//
+ mEdit2 = new HbLineEdit(this);
+ mEdit2->setText(d->mText);
+ mEdit2->setEchoMode(d->mEchoMode);
+ //Retrieve the cached data here//
+ d->setInputMode(mEdit2, d->mSecondaryMode);
+ HbStyle::setItemName(mEdit2, "text-2");
+ this->setProperty("additionalRowVisible",QVariant(true));
+ }
+ if(!visible) {
+ if(mEdit2) {
+ delete mEdit2;
+ mEdit2 = 0;
+ }
+ this->setProperty("additionalRowVisible",QVariant(false));
+ }
+ repolish();
+}
+
+
+HbInputDialogPrivate::HbInputDialogPrivate() :
+ mCustomButtonBank(0),
+ mDotButton(0),
+ mDashButton(0),
+ mValid(0),
+ mSecondaryMode(HbInputDialog::TextInput),
+ mEchoMode(HbLineEdit::Normal),
+ mPromptText(),
+ mPromptAdditionalText(),
+ mText()
+{
+}
+
+
+HbInputDialogPrivate::~HbInputDialogPrivate()
+{
+ if(primaryAction){
+ delete primaryAction;
+ }
+ if(secondaryAction){
+ delete secondaryAction;
+ }
+}
+
+
+void HbInputDialogPrivate::init()
+{
+#ifdef HBINPUTDIALOG_DEBUG
+ qDebug()<<" Entering init()";
+#endif
+ Q_Q(HbInputDialog);
+
+ mPrimaryMode = HbInputDialog::TextInput; //Default input mode is text input
+
+ //Populate the widget
+ mContentWidget = new HbInputDialogContentWidget(this);
+
+ q->setContentWidget(mContentWidget);
+ primaryAction = new HbAction(QString(q->tr("Ok")));
+ q->setPrimaryAction(primaryAction);
+
+ secondaryAction = new HbAction(QString(q->tr("Cancel")));
+ q->setSecondaryAction(secondaryAction);
+
+ q->setTimeout(HbPopup::NoTimeout);
+ q->setModal(true); // Dialog is modal
+ q->setDismissPolicy(HbPopup::NoDismiss);
+
+ QObject::connect( q->mainWindow(),
+ SIGNAL( orientationChanged(Qt::Orientation )),
+ q,
+ SLOT( _q_notesOrientationChanged(Qt::Orientation) ) );
+}
+
+
+void HbInputDialogPrivate::setInputMode(HbLineEdit *pEdit, HbInputDialog::InputMode mode)
+{
+ Q_Q(HbInputDialog);
+#ifdef HBINPUTDIALOG_DEBUG
+ qDebug()<<"Entering setInputMode";
+#endif
+ HbEditorInterface eInt(pEdit);
+ switch(mode) {
+ case HbInputDialog::TextInput:
+#ifdef HBINPUTDIALOG_DEBUG
+ qDebug()<<"TextInputMode";
+#endif
+ eInt.setConstraints(HbEditorConstraintNone);
+ break;
+ case HbInputDialog::IntInput:
+ {
+#ifdef HBINPUTDIALOG_DEBUG
+ qDebug()<<"IntInputMode";
+#endif
+ //set the validator
+ if(mValid) {
+ // NOTE:This validation is for readability. mValid is being deleted
+ // when setValidator is called on editor.
+ mValid = 0;
+ }
+ mValid = new HbValidator();
+ QValidator *intValidator = new QIntValidator(q);
+ mValid->addField(intValidator, "0");
+ pEdit->setValidator(mValid);
+
+ eInt.setConstraints(HbEditorConstraintFixedInputMode);
+ eInt.setInputMode(HbInputModeNumeric);
+ //eInt.setFilter(HbConverterNumberFilter::instance());
+/* Old custom button API has been deprecated for some time now. Commented out to prevent a build break.
+ customButtonBank = HbInputCustomButtonStore::instance()->newBank();
+ 1, intValidator->locale().negativeSign(), intValidator->locale().negativeSign());
+ mCustomButtonBank->addButton(mDashButton);
+ dashButton = new HbInputCustomButton(HbInputCustomButton::HbCustomButtonShortcut,
+ 1, intValidator->locale().negativeSign(), intValidator->locale().negativeSign());
+ customButtonBank->addButton(dashButton);
+ eInt.setCustomButtonBank(customButtonBank->id()); */
+
+ break;
+ }
+ case HbInputDialog::RealInput:
+ {
+#ifdef HBINPUTDIALOG_DEBUG
+ qDebug()<<"RealInputMode";
+#endif
+ //set the validator
+ if(mValid) {
+ mValid = 0;
+ }
+
+ mValid = new HbValidator();
+ QValidator *doubleValidator = new QDoubleValidator(q);
+ mValid->addField(doubleValidator, "0");
+ pEdit->setValidator(mValid);
+
+ eInt.setConstraints(HbEditorConstraintFixedInputMode);
+ eInt.setInputMode(HbInputModeNumeric);
+ //eInt.setFilter(HbConverterNumberFilter::instance());
+/* Old custom button API has been deprecated for some time now. Commented out to prevent a build break.
+ customButtonBank = HbInputCustomButtonStore::instance()->newBank();
+ dotButton = new HbInputCustomButton(HbInputCustomButton::HbCustomButtonShortcut,
+ 0, doubleValidator->locale().decimalPoint(), doubleValidator->locale().decimalPoint());
+ customButtonBank->addButton(dotButton);
+ dashButton = new HbInputCustomButton(HbInputCustomButton::HbCustomButtonShortcut,
+ 1, doubleValidator->locale().negativeSign(), doubleValidator->locale().negativeSign());
+ customButtonBank->addButton(dashButton);
+ eInt.setCustomButtonBank(customButtonBank->id()); */
+
+ break;
+ }
+ case HbInputDialog::IpInput:
+ {
+ mValid = new HbValidator;
+ QRegExp r("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
+ mValid->setMasterValidator(new QRegExpValidator(r,0));
+ mValid->addField(new QIntValidator(0,255,0),"127");
+ mValid->addSeparator(QString("."));
+ mValid->addField(new QIntValidator(0,255,0),"0");
+ mValid->addSeparator(QString("."));
+ mValid->addField(new QIntValidator(0,255,0),"0");
+ mValid->addSeparator(QString("."));
+ mValid->addField(new QIntValidator(0,255,0),"1");
+
+ pEdit->setValidator(mValid);
+ eInt.setInputMode(HbInputModeNumeric);
+
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+
+void HbInputDialogPrivate::setInputMode(HbInputDialog::InputMode mode,int row)
+{
+ if(row > 1) {
+ return;
+ }
+ if(row == 0) {
+ mPrimaryMode = mode;
+ setInputMode(mContentWidget->mEdit1, mode);
+ } else {
+ mSecondaryMode = mode;
+ if(mContentWidget->mAdditionalRowVisible) {
+ setInputMode(mContentWidget->mEdit2,mode);
+ }
+ }
+}
+
+
+void HbInputDialogPrivate::setPromptText(const QString& text,int row)
+{
+ Q_Q(HbInputDialog);
+ if(row > 1) {
+ return;
+ }
+ HbStyleOptionInputDialog option;
+ if(row == 0) {
+ mPromptText = text;
+ q->initStyleOption(&option);
+ q->style()->updatePrimitive(mContentWidget->mLabel1,HbStyle::P_InputDialog_text,&option);
+ } else {
+ mPromptAdditionalText = text;
+ q->initStyleOption(&option);
+ if(mContentWidget->mAdditionalRowVisible) {
+ q->style()->updatePrimitive(mContentWidget->mLabel2,HbStyle::P_InputDialog_additional_text,&option);
+ }
+ }
+}
+
+
+QString HbInputDialogPrivate::promptText(int row) const
+{
+ if( row > 1 ) {
+ return QString();
+ }
+ if(row == 0) {
+ return mPromptText;
+ } else {
+ return mPromptAdditionalText;
+ }
+}
+
+
+void HbInputDialogPrivate::setText(const QString& text,int row)
+{
+ if(row > 1) {
+ return;
+ }
+ if(row == 0) {
+ mContentWidget->mEdit1->setText(text);
+ } else {
+ mText = text;
+ if(mContentWidget->mAdditionalRowVisible) {
+ mContentWidget->mEdit2->setText(mText);
+ }
+ }
+}
+
+
+QString HbInputDialogPrivate::text(int row) const
+{
+ if(row > 1) {
+ return QString();
+ }
+ if(row == 0) {
+ return mContentWidget->mEdit1->text();
+ } else {
+ if(mContentWidget->mEdit2) {
+ return mContentWidget->mEdit2->text();
+ } else {
+ return mText;
+ }
+ }
+}
+
+
+void HbInputDialogPrivate::setAdditionalRowVisible(bool visible)
+{
+ mContentWidget->setAdditionalRowVisible(visible);
+}
+
+
+bool HbInputDialogPrivate::isAdditionalRowVisible()const
+{
+ return mContentWidget->mAdditionalRowVisible;
+}
+
+void HbInputDialogPrivate::_q_notesOrientationChanged(Qt::Orientation)
+{
+ Q_Q(HbInputDialog);
+ q->repolish();
+}