src/hbwidgets/popups/hbinputdialog_p.cpp
branchGCC_SURGE
changeset 15 f378acbc9cfb
parent 7 923ff622b8b9
child 21 4633027730f5
child 34 ed14f46c0e55
--- a/src/hbwidgets/popups/hbinputdialog_p.cpp	Thu Jul 15 14:03:49 2010 +0100
+++ b/src/hbwidgets/popups/hbinputdialog_p.cpp	Thu Jul 22 16:36:53 2010 +0100
@@ -52,10 +52,14 @@
     mEdit1 = new HbLineEdit(this);
     HbStyle::setItemName(mEdit1, "text-1");
 
+    connect(mEdit1,SIGNAL(textChanged(const QString)),this,SLOT(emitTextChange(const QString)));
     this->setProperty("additionalRowVisible",QVariant(false));
 }
 
-
+void HbInputDialogContentWidget::emitTextChange(const QString & data)
+{
+    emit textChanged(data);
+}
 void HbInputDialogContentWidget::setAdditionalRowVisible(bool visible)
 {
     mAdditionalRowVisible = visible;
@@ -103,7 +107,6 @@
 {
 }
 
-
 void HbInputDialogPrivate::init()
 {
 #ifdef HBINPUTDIALOG_DEBUG
@@ -116,10 +119,17 @@
     //Populate the widget
     mContentWidget = new HbInputDialogContentWidget(this);
 
+    q->connect(mContentWidget,SIGNAL(textChanged(const QString)),q,SLOT(textChange(const QString)));
     q->setContentWidget(mContentWidget);
-    q->addAction(new HbAction(q->tr("Ok"), q));
 
-    q->addAction(new HbAction(q->tr("Cancel"), q));
+    action1=new HbAction(hbTrId("txt_common_button_ok"),q);
+    action1->setEnabled(false);
+    q->addAction(action1);
+    q->connect(action1,SIGNAL(triggered()),q,SLOT(accept()));
+
+    HbAction *action2=new HbAction(hbTrId("txt_common_button_cancel"),q);
+    q->addAction(action2);
+    q->connect(action2,SIGNAL(triggered()),q,SLOT(reject()));
 
     q->setTimeout(HbPopup::NoTimeout); 
     q->setModal(true); // Dialog is modal  
@@ -131,6 +141,22 @@
                     SLOT( _q_notesOrientationChanged(Qt::Orientation) ) );
 }
 
+void HbInputDialogPrivate::textChange(const QString data)
+{
+    Q_UNUSED(data);
+    Q_Q(HbInputDialog);
+
+    if(q->actions().count() == 0) {
+        return;
+    }
+
+    if(mContentWidget->mEdit1->hasAcceptableInput()) {
+        q->actions().at(0)->setEnabled(true);
+    } else {
+        q->actions().at(0)->setEnabled(false);
+    }
+
+}
 
 void HbInputDialogPrivate::setInputMode(HbLineEdit *pEdit, HbInputDialog::InputMode mode)
 {
@@ -144,12 +170,10 @@
         {
             //set the validator
             if(mValid) {
-                // NOTE:This validation is for readability. mValid is being deleted 
-                // when setValidator is called on editor.
-                mValid = 0;
+                delete mValid;
             }
-            mValid = new HbValidator();
-            QValidator *intValidator = new QIntValidator(q);
+            mValid = new HbValidator(q);
+            QValidator *intValidator = new QIntValidator;
             mValid->addField(intValidator, "0");
             pEdit->setValidator(mValid);
 
@@ -161,11 +185,11 @@
         {
             //set the validator
             if(mValid) {
-                mValid = 0;
+                delete mValid;
             }
 
-            mValid = new HbValidator();
-            QValidator *doubleValidator = new QDoubleValidator(q);
+            mValid = new HbValidator(q);
+            QValidator *doubleValidator = new QDoubleValidator(mValid);
             mValid->addField(doubleValidator, "0");
             pEdit->setValidator(mValid);
 
@@ -176,9 +200,12 @@
     case HbInputDialog::IpInput:
         {
             QString text = pEdit->text();
-            mValid = new HbValidator;
+            if(mValid){
+                delete mValid;
+            }
+            mValid = new HbValidator(q);
             mValid->setDefaultSeparator(".");
-            QStringList list = text.split(".");
+            QStringList list = text.split('.');
             if (list.count() != 4 ) {
                     mValid->setDefaultSeparator(".");
                     mValid->addField(new QIntValidator(0, 255, 0), "127");