controlpanelui/src/cpplugins/communicationplugin/src/cpcommunicationgroupitemdata.cpp
changeset 17 4a9568303383
parent 11 10d0dd0e43f1
child 24 f5dfdd5e4a1b
--- a/controlpanelui/src/cpplugins/communicationplugin/src/cpcommunicationgroupitemdata.cpp	Thu May 27 12:52:25 2010 +0300
+++ b/controlpanelui/src/cpplugins/communicationplugin/src/cpcommunicationgroupitemdata.cpp	Fri Jun 11 13:39:17 2010 +0300
@@ -16,10 +16,16 @@
  */
 #include "cpcommunicationgroupitemdata.h"
 #include <QStringList>
+#include <QtAlgorithms>
+#include <settingsinternalcrkeys.h>
+#include <xqsettingsmanager.h>
+#include <cpitemdatahelper.h>
 
 CpCommunicationGroupItemData::CpCommunicationGroupItemData(const QString &configFile,
                                                            const HbDataFormModelItem *parent):
-CpCategorySettingFormItemData(configFile,parent)
+                                                           CpCategorySettingFormItemData(configFile,parent),
+                                                           mAirplaneModeItem(0),
+                                                           mSettingManager(new XQSettingsManager())
 {
 
 }
@@ -28,24 +34,64 @@
                                                            const QString &label,
                                                            const QString &configFile,
                                                            const HbDataFormModelItem *parent):
-CpCategorySettingFormItemData(type, label, configFile, parent)
+                                                           CpCategorySettingFormItemData(type, label, configFile, parent),
+                                                           mAirplaneModeItem(0),
+                                                           mSettingManager(new XQSettingsManager())
 {
 
 }
+
 CpCommunicationGroupItemData::~CpCommunicationGroupItemData()
 {
+    delete mSettingManager;
+}
+
+void CpCommunicationGroupItemData::beforeLoadingConfigPlugins(CpItemDataHelper &itemDataHelper)
+{
+    mAirplaneModeItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem,
+                                                hbTrId("txt_cp_setlabel_offline_airplane_mode"));
+    
+    itemDataHelper.addConnection(mAirplaneModeItem,
+            SIGNAL(clicked()),
+            this,
+            SLOT(toggleAirplaneMode()));
+    
+    XQCentralRepositorySettingsKey key(KCRUidCommunicationSettings.iUid,KSettingsAirplaneMode);
+    QVariant airplaneMode = mSettingManager->readItemValue(key,XQSettingsManager::TypeInt);
+    settingValueChanged(key,airplaneMode);
+    
+    mSettingManager->startMonitoring(key,XQSettingsManager::TypeInt);
+    connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
+            this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
+    
+    this->appendChild(mAirplaneModeItem);
     
 }
-void CpCommunicationGroupItemData::beforeLoadingConfigPlugins(CpItemDataHelper &/*itemDataHelper*/)
+
+void CpCommunicationGroupItemData::toggleAirplaneMode()
+{
+    XQCentralRepositorySettingsKey key(KCRUidCommunicationSettings.iUid,KSettingsAirplaneMode);
+    QVariant airplaneMode = mSettingManager->readItemValue(key,XQSettingsManager::TypeInt);
+        
+    airplaneMode.setValue( static_cast<int> (!airplaneMode.toBool()) );
+
+    mSettingManager->writeItemValue(key,airplaneMode);
+}
+
+void CpCommunicationGroupItemData::settingValueChanged(const XQSettingsKey &key, const QVariant &value)
 {
-    HbDataFormModelItem *airPlaneMode = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem,
-                                                                tr("Offline mode"));
-    QStringList airModeList;
-    airModeList << QObject::tr("On") << QObject::tr("Off");
-    
-    airPlaneMode->setContentWidgetData("text",airModeList.at(1));
-    airPlaneMode->setContentWidgetData("additionalText",airModeList.at(0));
+    if (mAirplaneModeItem 
+        && key.uid() == KCRUidCommunicationSettings.iUid 
+        && key.key() == KSettingsAirplaneMode 
+        && value.isValid()) {
+        QString text = hbTrId("txt_cp_setlabel_offline_mode_val_on");
+        QString additionalText = hbTrId("txt_cp_setlabel_offline_mode_val_off");
+        if (!value.toBool()) {
+            ::qSwap (text, additionalText);
+        }
+        mAirplaneModeItem->setContentWidgetData("text",text);
+        mAirplaneModeItem->setContentWidgetData("additionalText",additionalText);
+    }
+}
 
-    this->appendChild(airPlaneMode);
-    
-}
+//End of File