bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialoginputwidget.cpp
changeset 40 997690c3397a
parent 19 43824b19ee35
child 57 5ebadcda06cb
--- a/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialoginputwidget.cpp	Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialoginputwidget.cpp	Wed Jun 23 18:23:52 2010 +0300
@@ -21,8 +21,12 @@
 #include <bluetoothdevicedialogs.h>
 #include <hbaction.h>
 #include <hbdialog.h>
+#include <hblabel.h>
+#include <hbvalidator.h>
 #include "btdevicedialogpluginerrors.h"
 
+const int PASSCODE_MAX_LEN = 16; // from BT specs
+
 /*!
     class Constructor
  */
@@ -118,7 +122,8 @@
 {
     TRACE_ENTRY
 
-    QString keyStr, prompt;
+    QString keyStr, prompt,title,regExp;
+    QVariant name;
     keyStr.setNum( TBluetoothDialogParams::EResource );
     // Validate if the resource item exists.
     QVariantMap::const_iterator i = parameters.constFind( keyStr );
@@ -130,7 +135,11 @@
 
     QVariant param = parameters.value( keyStr );
     if ( param.toInt() == EPinInput ) {
-        prompt = QString( tr( "Passcode for device %1:" ) );
+        // Numeric value only
+        mInputDialog->setInputMode(HbInputDialog::RealInput);
+        title = QString(hbTrId("txt_bt_title_pairing_with_1"));
+        // todo: Fixe the multiline problem
+        prompt = QString( hbTrId( "txt_bt_dialog_please_enter_the_passcode_for_1" ) );
     }
     else {
         mLastError = ParameterError;
@@ -141,23 +150,46 @@
     keyStr.setNum( TBluetoothDeviceDialog::EAdditionalDesc );
     i = parameters.constFind( keyStr );
     // Mini Length required, update prompt
-    // ToDo: use Validator to check input length. 
+    // ToDo: The validator doesn't seem to work properly 
     if ( i != parameters.constEnd() ) {
-        prompt = QString( tr( "Enter %1 digit passcode for device %2:" ) );
+        // Todo : The string ID for the localization is not available yet
+        // for string : "Enter %1 digit passcode for device %2:"
+        // I'm using the "Enter the passcode for device %1" instead
+        prompt = QString( hbTrId( "txt_bt_dialog_please_enter_the_passcode_for_1" ) );
         param = parameters.value( keyStr );
+        regExp = tr("^\\d{%1,}$");
+        regExp.arg(param.toString());
+        HbValidator* validator = new HbValidator(mInputDialog->lineEdit());
+        validator->addField(
+                new QRegExpValidator(
+                        QRegExp(regExp, Qt::CaseInsensitive), validator ),"");
+        mInputDialog->setValidator(validator);
+    }else{
+    // Minimum requirement is to have at least 1 digit
+        regExp = tr("^\\d{1,}$");
+        HbValidator* validator = new HbValidator(mInputDialog->lineEdit());
+        validator->addField(
+                new QRegExpValidator(
+                        QRegExp(regExp, Qt::CaseInsensitive), validator ),"");
+        mInputDialog->setValidator(validator);    
     }
-    
     // replace % with the miniLength and device name
     int repls = prompt.count( QString( "%" ) );
     if ( repls > 1 ) {
         prompt = prompt.arg( param.toString() );
     }
     if ( repls > 0 ) {
-        QVariant name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
+        name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
         prompt = prompt.arg( name.toString() );
     }
-    // set property value to this dialog widget
-    mInputDialog->setPromptText( prompt );
+    repls = title.count(QString("%"));
+    if(repls > 0){
+        title = title.arg( name.toString() );
+    }
+    mInputDialog->setHeadingWidget(new HbLabel(title));
+    mInputDialog->lineEdit(0)->setMaxLength(PASSCODE_MAX_LEN);
+    mInputDialog->lineEdit(0)->setText(tr("")); // clear the input field
+    mInputDialog->setPromptText(prompt);
     TRACE_EXIT
 }