controlpanelui/src/cpplugins/communicationplugin/src/cpcommunicationgroupitemdata.cpp
--- 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