securitysettings/cpeapuiplugins/cpeapsimakaui/src/cpeapsimakaui.cpp
changeset 39 fe6b6762fccd
parent 33 938269283a16
child 52 c23bdf5a328a
--- a/securitysettings/cpeapuiplugins/cpeapsimakaui/src/cpeapsimakaui.cpp	Wed Jun 23 18:14:55 2010 +0300
+++ b/securitysettings/cpeapuiplugins/cpeapsimakaui/src/cpeapsimakaui.cpp	Tue Jul 06 14:18:35 2010 +0300
@@ -2,7 +2,7 @@
  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
  * All rights reserved.
  * This component and the accompanying materials are made available
- * under the terms of the License "Eclipse Public License v1.0"
+ * under the terms of "Eclipse Public License v1.0"
  * which accompanies this distribution, and is available
  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
  *
@@ -17,13 +17,14 @@
  */
 
 /*
- * %version:  16 %
+ * %version:  18 %
  */
 
 // System includes
 #include <HbDataForm>
 #include <HbDataFormModel>
 #include <HbDataFormViewItem>
+#include <HbParameterLengthLimiter>
 #include <HbMessageBox> 
 #include <HbAction>
 #include <HbLineEdit>
@@ -61,11 +62,13 @@
     const int iapId,
     const EapQtPluginInfo &plugin,
     const EapQtPluginHandle& outerHandle) :
-        mConfigIf(new EapQtConfigInterface(bearer, iapId)),
+        mConfigIf(NULL),
         mPluginInfo(plugin),
         mOuterHandle(outerHandle),
         mForm(NULL),
         mModel(NULL),
+        mItemDataHelper(NULL),
+        mGroupItem(NULL),
         mUsernameAutomatic(NULL),
         mUsername(NULL),
         mRealmAutomatic(NULL),
@@ -82,7 +85,10 @@
         // scoped pointer gets deleted automaticaly on exception
     }
 
-    initializeSimAkaUi();
+    // Get EAP config interface
+    mConfigIf.reset(new EapQtConfigInterface(bearer, iapId));
+    
+    createUi();
 }
 
 /*!
@@ -97,37 +103,58 @@
 }
 
 /*!
- * Initializes the sim-aka ui and initializes objects based on configuration
- * read from the database.
+ * Creates EAP-SIM/AKA UI and initilizes settings read via
+ * EapQtConfigInterface
  */
-void CpEapSimAkaUi::initializeSimAkaUi()
+void CpEapSimAkaUi::createUi()
 {
-    qDebug("CpEapSimAkaUi::initializeSimAkaUi");
+    qDebug("CpEapSimAkaUi::createUi");
 
-    CpItemDataHelper itemDataHelper;
-
-    // Read Configurations
-    EapQtConfig eapConfig;
+    // Read EAP Configurations
     bool configurationRead = mConfigIf->readConfiguration(mOuterHandle, mPluginInfo.pluginHandle(),
-        eapConfig);
+        mEapConfig);
     if (!configurationRead) {
         qDebug("CpEapSimAkaUi::initializeSimAkaUi - read configuration failed.");
     }
     
-    // Create UI objects and group 
+    // Construct EAP-SIM/AKA settings UI 
     mForm = new HbDataForm();
     this->setWidget(mForm);
+    mModel = new HbDataFormModel(mForm);
+
+    mGroupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem,
+        HbParameterLengthLimiter(
+            hbTrId("txt_occ_subhead_eap_module_settings")).arg(
+                mPluginInfo.localizationId()));
+    mModel->appendDataFormItem(mGroupItem);
+
+    // The parameter given as 0 is a HbDataForm pointer, not parent
+    mItemDataHelper = new CpItemDataHelper(0);
+    mItemDataHelper->setParent(this);
+
+    // Create UI components
+    createUsername();
+    createRealm();
     
-    mModel = new HbDataFormModel(mForm);
-    HbDataFormModelItem *groupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem,
-        hbTrId("txt_occ_subhead_eap_module_settings").arg(mPluginInfo.localizationId()));
-    mModel->appendDataFormItem(groupItem);
-
+    mItemDataHelper->bindToForm(mForm);
+    mForm->setModel(mModel);
+    
     // Connect signal to add validators when items get activated (visualization created).
     bool connected = connect(mForm, SIGNAL( itemShown(const QModelIndex&) ), this,
         SLOT( setValidator(const QModelIndex) ));
     Q_ASSERT(connected);
 
+    // Expand EAP-SIM/AKA settings group
+    mForm->setExpanded(mModel->indexFromItem(mGroupItem), true);
+}
+
+/*!
+ * Creates Username group:
+ * Generate automatically checkBox and username lineEdit
+ */
+void CpEapSimAkaUi::createUsername()
+{
+    qDebug("CpEapSimAkaUi::createUsername()");
     // UsernameAutomatic
     mUsernameAutomatic = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, hbTrId(
         "txt_occ_setlabel_user_name"));
@@ -135,21 +162,29 @@
         "txt_occ_setlabel_user_name_val_generate_automatica"));
     // Initialize the value from EapQtConfig
     // Generate username automatically is selected by default
-    mUsernameAutomatic->setContentWidgetData("checkState", boolToCheckState(eapConfig.value(
+    mUsernameAutomatic->setContentWidgetData("checkState", boolToCheckState(mEapConfig.value(
         EapQtConfig::UsernameAutomatic).toBool()));
     // Connect signal to disable/enable username when usernameAutomatic changed   
     mForm->addConnection(mUsernameAutomatic, SIGNAL(stateChanged(int)), this,
         SLOT(usernameAutomaticChanged(int)));
-    groupItem->appendChild(mUsernameAutomatic);
+    mGroupItem->appendChild(mUsernameAutomatic);
 
     //Username
     mUsername = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId(
         "txt_occ_setlabel_user_name"));
-    mUsername->setContentWidgetData("text", eapConfig.value(EapQtConfig::Username));
-    // Dimmed username if usernameAutomatic selected
+    mUsername->setContentWidgetData("text", mEapConfig.value(EapQtConfig::Username));
+    // Dim username if usernameAutomatic selected
     usernameAutomaticChanged(mUsernameAutomatic->contentWidgetData("checkState") == Qt::Checked);
-    groupItem->appendChild(mUsername);
+    mGroupItem->appendChild(mUsername);
+}
 
+/*!
+ * Creates Realm group:
+ * Generate automatically checkBox and realm lineEdit
+ */
+void CpEapSimAkaUi::createRealm()
+{
+    qDebug("CpEapSimAkaUi::createRealm()");
     // RealmAutomatic
     mRealmAutomatic = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, hbTrId(
         "txt_occ_setlabel_realm"));
@@ -157,27 +192,20 @@
         "txt_occ_setlabel_realm_val_generate_automatically"));
     // Initialize the value from EapQtConfig
     // Generate realm automatically is selected by default
-    mRealmAutomatic->setContentWidgetData("checkState", boolToCheckState(eapConfig.value(
+    mRealmAutomatic->setContentWidgetData("checkState", boolToCheckState(mEapConfig.value(
         EapQtConfig::RealmAutomatic).toBool()));
     // connect signal to disable/enable realm when realmAutomatic changed 
     mForm->addConnection(mRealmAutomatic, SIGNAL(stateChanged(int)), this,
         SLOT(realmAutomaticChanged(int)));
-    groupItem->appendChild(mRealmAutomatic);
+    mGroupItem->appendChild(mRealmAutomatic);
 
     //Realm
     mRealm = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId(
         "txt_occ_setlabel_realm"));
-    mRealm->setContentWidgetData("text", eapConfig.value(EapQtConfig::Realm));
-    // Dimmed realm if realmAutomatic selected
+    mRealm->setContentWidgetData("text", mEapConfig.value(EapQtConfig::Realm));
+    // Dim realm if realmAutomatic selected
     realmAutomaticChanged(mRealmAutomatic->contentWidgetData("checkState") == Qt::Checked);
-    groupItem->appendChild(mRealm);
-
-    // Set the model
-    itemDataHelper.bindToForm(mForm);
-    mForm->setModel(mModel);
-
-    // Expand simakaui settings group
-    mForm->setExpanded(mModel->indexFromItem(groupItem), TRUE);
+    mGroupItem->appendChild(mRealm);
 }
 
 /*!
@@ -219,20 +247,50 @@
 void CpEapSimAkaUi::close()
 {
     qDebug("CpEapSimAkaUi::close");
+
+    // Validate configuration
     if (validate()) {
-        qDebug("CpEapSimAkaUi::close - Store settings and exit");
-        storeSettings();
-        CpBaseSettingView::close();
+        qDebug("CpEapSimAkaUi::close - Validation OK");
+
+        // Store settings
+        if (storeSettings()){
+            qDebug("CpEapSimAkaUi::close - Settings stored, close view");
+            // Close view
+            CpBaseSettingView::close();   
+        }
+        else {
+            qDebug("CpEapSimAkaUi::close - Store settings failed, prompt warning");
+            // Store failed. Show error note to user
+            QScopedPointer<HbMessageBox> infoBox;
+            infoBox.reset(new HbMessageBox(
+                HbMessageBox::MessageTypeWarning));
+            infoBox->setAttribute(Qt::WA_DeleteOnClose);
+            infoBox->setText(hbTrId("txt_occ_info_unable_to_save_setting"));
+            infoBox->clearActions();
+            // Connect 'OK'-button to CpBaseSettingView 'aboutToClose'-signal
+            HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
+            infoBox->addAction(okAction);
+            bool connected = connect(
+                okAction,
+                SIGNAL(triggered()),
+                this,
+                SIGNAL(aboutToClose()));
+            Q_ASSERT(connected);
+            infoBox->open();
+            infoBox.take();
+        }
     }
     else {
         qDebug("CpEapSimAkaUi::close - validation failed. Prompt question.");
-        HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-        note->setAttribute(Qt::WA_DeleteOnClose);
-        note->setText(hbTrId("txt_occ_info_incomplete_details_return_without_sa"));
-        note->clearActions();
+        QScopedPointer<HbMessageBox> messageBox;
+        messageBox.reset(new HbMessageBox(
+            HbMessageBox::MessageTypeQuestion));
+        messageBox->setAttribute(Qt::WA_DeleteOnClose);
+        messageBox->setText(hbTrId("txt_occ_info_incomplete_details_return_without_sa"));
+        messageBox->clearActions();
         // Connect 'YES'-button to CpBaseSettingView 'aboutToClose'-signal
         HbAction *okAction = new HbAction(hbTrId("txt_common_button_yes"));
-        note->addAction(okAction);
+        messageBox->addAction(okAction);
         bool connected = connect(
             okAction,
             SIGNAL(triggered()),
@@ -241,9 +299,10 @@
         Q_ASSERT(connected);
         // Clicking 'NO'-button does nothing
         HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_no"));
-        note->addAction(cancelAction);
-        note->setTimeout(HbPopup::NoTimeout);
-        note->open();
+        messageBox->addAction(cancelAction);
+        messageBox->setTimeout(HbPopup::NoTimeout);
+        messageBox->open();
+        messageBox.take();
     }
 }
 
@@ -332,8 +391,10 @@
 
 /*!
  * Stores settings given via SIM-AKA configuration UI
+ * 
+ * @return false if saving failed, true otherwise
  */
-void CpEapSimAkaUi::storeSettings()
+bool CpEapSimAkaUi::storeSettings()
 {
     qDebug("CpEapSimAkaUi::storeSettings");
 
@@ -347,7 +408,10 @@
         mRealmAutomatic->contentWidgetData("checkState").toInt()));
     eapConfig.setValue(EapQtConfig::Realm, mRealm->contentWidgetData("text"));
 
+    // Save configuration
     if (!mConfigIf->saveConfiguration(mPluginInfo.pluginHandle(), eapConfig)) {
         qDebug("CpEapSimAkaUi::storeSettings - configuration saving failed.");
+        return false;
     }
+    return true;
 }