phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpplugincommon.cpp
changeset 21 92ab7f8d0eab
child 22 6bb1b21d2484
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpplugincommon.cpp	Fri Mar 19 09:28:42 2010 +0200
@@ -0,0 +1,383 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * 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".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+
+
+#include <etelmm.h>
+#include <xqsysinfo.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <e32base.h>
+#include <etelmm.h>
+#include <exterror.h>               
+#include <gsmerror.h>
+#include <settingsinternalcrkeys.h>
+#include <LogsDomainCRKeys.h>
+#include <BTSapDomainPSKeys.h>
+#include <NumberGroupingCRKeys.h>
+#include <QPluginLoader>
+#include <cppluginplatinterface.h>
+#include <hbglobal.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
+#include "cptelephonyutilsdefs.h"
+#include "cpplugincommon.h"
+#include "cppluginlogging.h"
+
+const int CenrepKeyValueOff = 0;
+const int CenrepKeyValueOn = 1;
+
+const int SoftRejectTextDefault = 0; 
+const int SoftRejectTextUserDefined = 1; 
+
+/*!
+  Tools::loadCpPlugin
+*/
+CpPluginPlatInterface* Tools::loadCpPlugin(const QString& name)
+{
+    QPluginLoader loader("\\resource\\qt\\plugins\\controlpanel\\"+name+".qtplugin");
+    return qobject_cast<CpPluginPlatInterface*> (loader.instance());
+}
+
+/*!
+  Tools::unloadCpPlugin
+*/
+bool Tools::unloadCpPlugin(const QString& name)
+{
+    QPluginLoader loader("\\resource\\qt\\plugins\\controlpanel\\"+name+".qtplugin");
+    return loader.unload();
+}
+
+/*!
+  Tools::voipSupported
+*/
+bool Tools::voipSupported()
+{
+    return XQSysInfo::isSupported(KFeatureIdCommonVoip);
+}
+
+/*!
+  Tools::videoSupported
+*/
+bool Tools::videoSupported()
+{
+    return XQSysInfo::isSupported(KFeatureIdCsVideoTelephony);
+}
+
+/*!
+  Tools::convertEtelMobileServiceCode
+*/
+BasicServiceGroups Tools::convertEtelMobileServiceCode(int serviceCode)
+{
+    DPRINT;
+
+    switch (serviceCode) {
+        case RMobilePhone::EAllServices:
+            return AllTeleAndBearer;
+        case RMobilePhone::EAllTele:
+            return AllTele;
+        case RMobilePhone::EVoiceService:
+        case RMobilePhone::ETelephony:
+            return Telephony;
+        case RMobilePhone::EAllDataTele:
+            return AllDataTele;
+        case RMobilePhone::EFaxService:
+            return Fax;
+        case RMobilePhone::EShortMessageService:
+            return Sms;
+        case RMobilePhone::EAllDataExSms:
+            return AllDataExSms;
+        case RMobilePhone::EAllTeleExcSms:
+            return AllTeleExcSms;
+        case RMobilePhone::EAllPlmnTele:
+            return AllPlmnTele;
+        case RMobilePhone::EPlmnTele1:
+            return PlmnTele1;
+        case RMobilePhone::EPlmnTele2:
+            return PlmnTele2;
+        case RMobilePhone::EPlmnTele3:
+            return PlmnTele3;
+        case RMobilePhone::EPlmnTele4:
+            return PlmnTele4;
+        case RMobilePhone::EPlmnTele5:
+            return PlmnTele5;
+        case RMobilePhone::EPlmnTele6:
+            return PlmnTele6;
+        case RMobilePhone::EPlmnTele7:
+            return PlmnTele7;
+        case RMobilePhone::EPlmnTele8:
+            return PlmnTele8;
+        case RMobilePhone::EPlmnTele9:
+            return PlmnTele9;
+        case RMobilePhone::EPlmnTeleA:
+            return PlmnTeleA;
+        case RMobilePhone::EPlmnTeleB:
+            return PlmnTeleB;
+        case RMobilePhone::EPlmnTeleC:
+            return PlmnTeleC;
+        case RMobilePhone::EPlmnTeleD:
+            return PlmnTeleD;
+        case RMobilePhone::EPlmnTeleE:
+            return PlmnTeleE;
+        case RMobilePhone::EPlmnTeleF:
+            return PlmnTeleF;
+        case RMobilePhone::EAllBearer:
+            return AllBearer;
+        case RMobilePhone::EAllAsync:
+            return AllAsync;
+        case RMobilePhone::EAllSync:
+            return AllSync;
+        case RMobilePhone::ECircuitDataService:
+        case RMobilePhone::ESyncData:
+            return SyncData;
+        case RMobilePhone::EPacketDataService:
+        case RMobilePhone::EAsyncData:
+            return AsyncData;
+        case RMobilePhone::EPacketData:
+            return PacketData;
+        case RMobilePhone::EPadAccess:
+            return PadAccess;
+        case RMobilePhone::EAllPlmnBearer:
+            return AllPlmnBearer;
+        case RMobilePhone::EPlmnBearerServ1:
+            return PlmnBearerServ1;
+        case RMobilePhone::EPlmnBearerServ2:
+            return PlmnBearerServ2;
+        case RMobilePhone::EPlmnBearerServ3:
+            return PlmnBearerServ3;
+        case RMobilePhone::EPlmnBearerServ4:
+            return PlmnBearerServ4;
+        case RMobilePhone::EPlmnBearerServ5:
+            return PlmnBearerServ5;
+        case RMobilePhone::EPlmnBearerServ6:
+            return PlmnBearerServ6;
+        case RMobilePhone::EPlmnBearerServ7:
+            return PlmnBearerServ7;
+        case RMobilePhone::EPlmnBearerServ8:
+            return PlmnBearerServ8;
+        case RMobilePhone::EPlmnBearerServ9:
+            return PlmnBearerServ9;
+        case RMobilePhone::EPlmnBearerServA:
+            return PlmnBearerServA;
+        case RMobilePhone::EPlmnBearerServB:
+            return PlmnBearerServB;
+        case RMobilePhone::EPlmnBearerServC:
+            return PlmnBearerServC;
+        case RMobilePhone::EPlmnBearerServD:
+            return PlmnBearerServD;
+        case RMobilePhone::EPlmnBearerServE:
+            return PlmnBearerServE;
+        case RMobilePhone::EPlmnBearerServF:
+            return PlmnBearerServF;
+        case RMobilePhone::EAuxVoiceService:
+        case RMobilePhone::EAltTele:
+            return AltTele;
+        case RMobilePhone::EServiceUnspecified:
+        default:
+            qDebug() << "CpPhoneNotes::convertEtelMobileServiceCode, DEFAULT";
+            return Unknown;
+    }
+}
+
+/*!
+  Tools::errorCodeTextMapping.
+ */
+bool Tools::errorCodeTextMapping(const int errorcode, QString &errorText)
+{
+    DPRINT;
+    errorText.clear();
+    bool errorTextFound(true);
+
+    switch(errorcode){
+        case KErrGsmSSSubscriptionViolation:
+            errorText = hbTrId("Barring operation not successful. Contact your service provider");
+            break;
+        case KErrGsmSSUnknownSubscriber:
+        case KErrGsmSSAbsentSubscriber:
+        case KErrGsmSSIllegalOperation:
+        case KErrGsmSSIllegalSubscriber:
+        case KErrGsmSSIllegalEquipment:
+        case KErrGsmSSCallBarred:
+        case KErrGsmSSDataMissing:
+            errorText = hbTrId("Not allowed");
+            break;
+        case KErrGsmSSIncompatibility:
+            errorText = hbTrId("Services in conflict");
+            break;
+        case KErrGsmSSSystemFailure:
+            errorText = hbTrId("Result unknown");
+            break;
+        case KErrGsmSSUnexpectedDataValue:
+        case KErrGsmSSResourcesUnavailable:
+            errorText = hbTrId("Request rejected");
+            break;
+        case KErrGsmSSNegativePasswordCheck:
+        case KErrGsmSSPasswordRegistrationFailure:
+            errorText = hbTrId("Password error");
+            break;
+        case KErrGsmSSPasswordAttemptsViolation:
+            errorText = hbTrId("Password blocked");
+            break;
+        case KErrGsmSMSNoNetworkService:
+        case KErrGsmNoService:
+            errorText = hbTrId("No network coverage");
+            break;
+        case KErrSsActivationDataLost:
+            errorText = hbTrId("Check network services");
+            break;
+        case KErrGsmOfflineOpNotAllowed:
+            if(XQSysInfo::isSupported(KFeatureIdOfflineMode)){
+                XQSettingsManager *xqsettingsManager = new XQSettingsManager();
+                XQSettingsKey key(XQSettingsKey::TargetPublishAndSubscribe,
+                        KPSUidBluetoothSapConnectionState.iUid,
+                        KBTSapConnectionState);
+                QVariant startupValue = xqsettingsManager->readItemValue(key);
+                int value = startupValue.toInt();
+                delete xqsettingsManager;
+                xqsettingsManager = NULL;
+                if (value == EBTSapConnected){
+                    errorText = hbTrId("Operation not possible in SIM access profile mode");
+                } else {
+                    errorText = hbTrId("Operation not possible in Off-line mode");
+                }
+            } else {
+                errorText = hbTrId("Not done");
+            }
+            break;
+        case KErrGsmSSUnknownAlphabet:
+            errorText = hbTrId("Invalid phone number");
+            break;
+        default:
+            errorText = hbTrId("Not done");
+            break;
+    }
+
+    return errorTextFound;
+}
+
+CpSettingsWrapper::CpSettingsWrapper(QObject *parent): 
+    QObject(parent)
+{
+    m_Settings = new XQSettingsManager();
+}
+
+CpSettingsWrapper::~CpSettingsWrapper()
+{
+    delete m_Settings;
+}
+
+bool CpSettingsWrapper::showCallDuration()
+{
+    bool showDuration; 
+    if (CenrepKeyValueOn == readCenrepValue(KCRUidLogs.iUid, KLogsShowCallDuration).toInt()) {
+        showDuration = true; 
+    } else {
+        showDuration = false;
+    }
+    
+    DPRINT << "show call duration:" << showDuration;
+    return showDuration;
+}
+
+int CpSettingsWrapper::setShowCallDuration(bool value)
+{
+    int cenrepValue; 
+    DPRINT << "show call duration:" << value;
+
+    if (value) {
+        cenrepValue = CenrepKeyValueOn;
+    } else {
+        cenrepValue = CenrepKeyValueOff; 
+    }
+    return writeCenrepValue(KCRUidLogs.iUid, KLogsShowCallDuration, cenrepValue );
+}
+
+void CpSettingsWrapper::readSoftRejectText(QString &text, bool &userDefined )
+{
+    if (SoftRejectTextDefault ==
+        readCenrepValue(KCRUidTelephonySettings.iUid, KSettingsSoftRejectDefaultInUse ).toInt()) {
+        userDefined = false; 
+    } else {
+        userDefined = true; 
+    }
+        
+    text = readCenrepString(KCRUidTelephonySettings.iUid, KSettingsSoftRejectText);
+    DPRINT << "text:" << text << " ,userDefined:" << userDefined;
+}
+
+int CpSettingsWrapper::writeSoftRejectText(const QString &text, bool userDefined )
+{
+    int err = writeCenrepValue(KCRUidTelephonySettings.iUid, KSettingsSoftRejectText, text);
+    int cenrepValue; 
+    if (userDefined) {
+        cenrepValue = SoftRejectTextUserDefined; 
+    } else {
+        cenrepValue = SoftRejectTextDefault; 
+    }
+    err |= writeCenrepValue(KCRUidTelephonySettings.iUid, KSettingsSoftRejectDefaultInUse, cenrepValue);
+    DPRINT << "text:" << text << " ,userDefined:" << userDefined << " , err:" << err;
+    return err;
+}
+
+ bool CpSettingsWrapper::numberGroupingSupported() const
+ {
+     return readCenrepValue(KCRUidNumberGrouping.iUid, KNumberGrouping).toBool();
+ }
+
+QVariant CpSettingsWrapper::readCenrepValue(
+    const long int uid, const unsigned long int key) const
+{
+    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, uid, key);
+    QVariant ret = m_Settings->readItemValue(settingsKey);
+    DPRINT << "ret: " << ret;
+    return ret;
+}
+
+QString CpSettingsWrapper::readCenrepString(
+    const long int uid, const unsigned long int key) const
+{
+    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, uid, key);
+    QString text = m_Settings->readItemValue(settingsKey, XQSettingsManager::TypeString).toString();
+    DPRINT << "text: " << text;
+    return text;
+}
+
+int CpSettingsWrapper::writeCenrepValue(
+    const long int uid, const unsigned long int key, const QVariant &settingsKeyValue ) const
+{
+    DPRINT << "uid:" << uid << ", key:" << key << ", settingsKeyValue:" << settingsKeyValue;
+    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, uid, key);
+    int err = m_Settings->writeItemValue(settingsKey, settingsKeyValue );
+    DPRINT << "err: " << err;
+    return err;
+}
+
+bool CpSettingsWrapper::isFeatureCallWaitingDistiquishNotProvisionedEnabled()
+{
+    bool enabled = readCenrepValue(KCRUidPhoneSettings.iUid, KPSetCallWaiting).toBool();
+    DPRINT << "enabled: " << enabled;
+    return enabled;
+}
+
+bool CpSettingsWrapper::isPhoneOffline() const
+{
+    bool offLinesupport(false);
+    if (XQSysInfo::isSupported(KFeatureIdOfflineMode)) {
+        offLinesupport = !readCenrepValue(
+                KCRUidCoreApplicationUIs.iUid, 
+                KCoreAppUIsNetworkConnectionAllowed).toBool();
+    }
+    return offLinesupport;
+}