phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp
changeset 30 ebdbd102c78a
parent 27 2f8f8080a020
child 51 f39ed5e045e0
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp	Mon May 03 12:31:11 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp	Fri May 14 15:51:57 2010 +0300
@@ -41,7 +41,8 @@
     m_activeProgressNoteId(0),
     m_pSetWrapper(NULL),
     m_cpSettingsWrapper(NULL),
-    mCellularSettings()
+    mCellularSettings(),
+    m_dialog(NULL)
 {
     DPRINT << ": IN";
     
@@ -67,7 +68,12 @@
     setModel(model.take());
     m_pSetWrapper = pSetWrapperGuard.take();
     m_cpSettingsWrapper = cpSettingsWrapperGuard.take();
-    
+
+    if(!isPhoneOnLine()) {
+        DPRINT << "offline, set dimmed";
+        m_NetworkOperatorSelectionItemData->setEnabled(false);
+    }
+
     DPRINT << ": OUT";
 }
 
@@ -312,7 +318,7 @@
     // #2C operator selection mode changed
     DPRINT << ": IN ";
     
-    if(isPhoneOnLine()) {
+    if (isPhoneOnLine()) {
         PSetNetworkWrapper::NetworkSelectionMode mode;
         m_psetNetworkWrapper->getNetworkSelectionMode(mode);
         switch (mode) {
@@ -449,7 +455,7 @@
     DPRINT << ": IN";
     
     m_networkInfoList = &networkInfoList;
-    showManualSeletiondialog();
+    showManualSelectiondialog();
     
     DPRINT << ": OUT";
 }
@@ -525,7 +531,7 @@
        }
     else if(type == PSetNetworkWrapper::RequestSetNetwork && 
             error == PSetNetworkWrapper::ErrNoNetworkAccess) {
-        showManualSeletiondialog();
+        showManualSelectiondialog();
     }
     else if(type == PSetNetworkWrapper::RequestSetNetwork ||
             type == PSetNetworkWrapper::RequestSetNetworkAutomatic ||
@@ -552,7 +558,7 @@
 
 
 /*!
-  CpNetworkPluginForm::userCancel
+  CpNetworkPluginForm::handleSearchingNetworks
   */
 void CpNetworkPluginForm::handleSearchingNetworks(
     PSetNetworkWrapper::RequestType &type)
@@ -577,7 +583,7 @@
 
 
 /*!
-  CpNetworkPluginForm::userCancel
+  CpNetworkPluginForm::handleRequestingSelectedNetwork
   */
 void CpNetworkPluginForm::handleRequestingSelectedNetwork(bool ongoing)
 {
@@ -601,7 +607,7 @@
 
 
 /*!
-  CpNetworkPluginForm::userCancel
+  CpNetworkPluginForm::handleNetworkChanged
   */
 void CpNetworkPluginForm::handleNetworkChanged(
     PSetNetworkWrapper::NetworkInfo& currentInfo,
@@ -629,66 +635,90 @@
 
 
 /*!
-  CpNetworkPluginForm::showManualSeletiondialog
+  CpNetworkPluginForm::showManualSelectiondialog
   */
-void CpNetworkPluginForm::showManualSeletiondialog()
+void CpNetworkPluginForm::showManualSelectiondialog()
 {
     DPRINT << ": IN";
     
-    HbDialog *dialog = createDialog(hbTrId("txt_cp_title_select_operator"));
-    HbListWidget *list = new HbListWidget(dialog);
+    QScopedPointer<HbDialog> dialog(
+        createDialog(hbTrId("txt_cp_title_select_operator")));
+    HbListWidget *list = new HbListWidget(dialog.data());
     //then insert found networks
     int itemsCount = m_networkInfoList->count();
-    for(int i = 0; i < itemsCount; i++)
-        {
+    for (int i = 0; i < itemsCount; i++) {
         PSetNetworkWrapper::NetworkInfo *info = m_networkInfoList->at(i);
         QString text = networkName(*info);
         addItemToListWidget(list, text, i);
         DPRINT << ":  " << info;
-        }
+    }
     // Connect list item activation signal to close the popup
     connect(
         list, SIGNAL(activated(HbListWidgetItem*)), 
-        dialog, SLOT(close()));
+        dialog.data(), SLOT(close()));
     // Sets the "Cancel"-action/button
     HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
-    dialog->setPrimaryAction(cancelAction);
+    dialog->addAction(cancelAction);
     dialog->setContentWidget(list);
     // Launch popup and handle the response
-    if (dialog->exec() != cancelAction) {
-        // Update the view with selected text
-        int seletion = 0;
-        if(list->currentItem()) {
-            seletion = list->currentItem()->data().toInt();
-            DPRINT << ": seletion : " << seletion;
-        }
-        PSetNetworkWrapper::NetworkInfo param;
-        param.m_id.m_countryCode = 
-            m_networkInfoList->at(seletion)->m_id.m_countryCode;
-        param.m_id.m_networkCode = 
-            m_networkInfoList->at(seletion)->m_id.m_networkCode;
-        param.m_mode = PSetNetworkWrapper::SelectionModeManual;
-        DPRINT << ": m_countryCode : " << param.m_id.m_countryCode;
-        DPRINT << ": m_networkCode : " << param.m_id.m_networkCode;
-        DPRINT << ": m_mode : " << param.m_mode;
-        m_psetNetworkWrapper->selectNetwork(param);
+    dialog->open(this, SLOT(finishedManualSelectiondialog(HbAction*)));
+    if (m_dialog) {
+        m_dialog->deleteLater();
+        m_dialog = NULL;
     }
-    else {
-        DPRINT << ": Cancel";
-        m_psetNetworkWrapper->cancelRequest();
-        restoreUiSelection();
-    }
-
-    disconnect(
-        list, SIGNAL(activated(HbListWidgetItem*)), 
-        dialog, SLOT(close()));
-    delete dialog;
+    m_dialog = dialog.take();
     
     DPRINT << ": OUT";
 }
 
 
 /*!
+  CpNetworkPluginForm::finishedManualSelectiondialog.
+ */
+void CpNetworkPluginForm::finishedManualSelectiondialog(HbAction* action)
+{
+    DPRINT << ": IN";
+    
+    if (m_dialog) {
+        QList<QAction *> actionList = m_dialog->actions();
+        bool cancelAction = actionList.contains(action);
+        if (!cancelAction) {
+            // Update the view with selected text
+            QGraphicsWidget *contectWidget = m_dialog->contentWidget();
+            HbListWidget *list(NULL);
+            if (contectWidget) {
+                list = qobject_cast<HbListWidget *>(contectWidget);
+            }
+            if (list) {
+                int seletion = 0;
+                if(list->currentItem()) {
+                    seletion = list->currentItem()->data().toInt();
+                    DPRINT << ": seletion : " << seletion;
+                }
+                PSetNetworkWrapper::NetworkInfo param;
+                param.m_id.m_countryCode = 
+                    m_networkInfoList->at(seletion)->m_id.m_countryCode;
+                param.m_id.m_networkCode = 
+                    m_networkInfoList->at(seletion)->m_id.m_networkCode;
+                param.m_mode = PSetNetworkWrapper::SelectionModeManual;
+                DPRINT << ": m_countryCode : " << param.m_id.m_countryCode;
+                DPRINT << ": m_networkCode : " << param.m_id.m_networkCode;
+                DPRINT << ": m_mode : " << param.m_mode;
+                m_psetNetworkWrapper->selectNetwork(param);
+            }
+        } else {
+            DPRINT << ": Cancel";
+            m_psetNetworkWrapper->cancelRequest();
+            restoreUiSelection();
+        }
+        m_dialog->deleteLater();
+        m_dialog = NULL;
+    }
+    
+    DPRINT << ": OUT";
+}
+
+/*!
   CpNetworkPluginForm::restoreUiSelection
   */
 void CpNetworkPluginForm::restoreUiSelection()
@@ -832,9 +862,9 @@
 }
 
 /*!
-  CpNetworkPluginForm::SearchAvailableNetworks
+  CpNetworkPluginForm::searchAvailableNetworks
  */
-void CpNetworkPluginForm::SearchAvailableNetworks()
+void CpNetworkPluginForm::searchAvailableNetworks()
 {
     DPRINT << ": IN";