--- /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;
+}