cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper_p.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper_p.cpp Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,464 @@
+/*
+ * 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 <mpsetdivertobs.h>
+#include <mphcltemergencycallobserver.h>
+#include <mmlist.h>
+#include "psetcalldivertingwrapper_p.h"
+#include "logging.h"
+
+/*!
+ PSetCallDivertingWrapperPrivate::PSetCallDivertingWrapperPrivate
+ */
+PSetCallDivertingWrapperPrivate::PSetCallDivertingWrapperPrivate(
+ PSetCallDivertingWrapper &owner) :
+ m_Owner(owner)
+{
+ DPRINT;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::~PSetCallDivertingWrapperPrivate
+ */
+PSetCallDivertingWrapperPrivate::~PSetCallDivertingWrapperPrivate()
+{
+ DPRINT;
+ while (!m_DivertingStatusList.empty()) {
+ DPRINT << "m_DivertingStatusList item to be deleted";
+ delete m_DivertingStatusList.takeFirst();
+ }
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::HandleDivertingChangedL
+ */
+void PSetCallDivertingWrapperPrivate::HandleDivertingChangedL(
+ const TCallDivertSetting& aSetting, TBool aPlural)
+{
+ DPRINT << ": IN ";
+
+ m_callDivertingSetting.iCondition = convert(aSetting.iCondition);
+ m_callDivertingSetting.iStatus = convert(aSetting.iStatus);
+ m_callDivertingSetting.iSetting =
+ static_cast<PsCallDivertingSetting>(aSetting.iSetting);
+ m_callDivertingSetting.iServiceGroup = convert(aSetting.iServiceGroup);
+ m_callDivertingSetting.iNumber =
+ QString::fromUtf16(aSetting.iNumber.Ptr(), aSetting.iNumber.Length());
+ m_callDivertingSetting.iNoReplyTimer = aSetting.iNoReplyTimer;
+ QT_TRYCATCH_LEAVING(
+ emit m_Owner.handleDivertingChanged(m_callDivertingSetting, aPlural));
+
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::HandleDivertingStatusL
+ */
+void PSetCallDivertingWrapperPrivate::HandleDivertingStatusL(
+ CMobilePhoneCFList& aSetting, TBool aPlural)
+{
+ DPRINT << ": IN ";
+
+ // reset list
+ while (!m_DivertingStatusList.empty()) {
+ PSCallDivertingStatus* divertingStatus =
+ m_DivertingStatusList.takeFirst();
+ DPRINT << ": delete : " << divertingStatus;
+ delete divertingStatus;
+ }
+ TInt entries = aSetting.Enumerate();
+ TInt numberOfBscs = 0;
+ RMobilePhone::TMobilePhoneCFInfoEntryV1 cfInfo;
+ while (entries > numberOfBscs) {
+ cfInfo = aSetting.GetEntryL(numberOfBscs);
+ PSCallDivertingStatus* divertingStatus =
+ new (ELeave) PSCallDivertingStatus();
+ divertingStatus->iCondition = convert(cfInfo.iCondition);
+ divertingStatus->iServiceGroup = convert(cfInfo.iServiceGroup);
+ divertingStatus->iStatus = convert(cfInfo.iStatus);
+ divertingStatus->iNumber = QString::fromUtf16(
+ cfInfo.iNumber.iTelNumber.Ptr(),
+ cfInfo.iNumber.iTelNumber.Length());
+ divertingStatus->iTimeout = cfInfo.iTimeout;
+ m_DivertingStatusList.append(divertingStatus);
+ numberOfBscs++;
+ }
+
+ QT_TRYCATCH_LEAVING(
+ emit m_Owner.handleDivertingStatus(m_DivertingStatusList,aPlural));
+
+ DPRINT << ": OUT";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::HandleDivertingErrorL
+ */
+void PSetCallDivertingWrapperPrivate::HandleDivertingErrorL(TInt aReason)
+{
+ DPRINT << ": IN : aReason" << aReason;
+
+ QT_TRYCATCH_LEAVING(
+ emit m_Owner.handleDivertingError(aReason));
+
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::HandleCFRequestingL
+ */
+void PSetCallDivertingWrapperPrivate::HandleCFRequestingL(TBool aOngoing,
+ TBool aInterrupted)
+{
+ DPRINT << ": IN ";
+
+ QT_TRYCATCH_LEAVING(
+ emit m_Owner.handleCFRequesting(aOngoing, aInterrupted));
+
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::SetEngineContact
+ */
+void PSetCallDivertingWrapperPrivate::SetEngineContact(
+ MPsetCallDiverting* aDivertEngine)
+{
+ DPRINT << ": IN ";
+
+ Q_UNUSED(aDivertEngine);
+
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::HandleEmergencyDialL
+ */
+void PSetCallDivertingWrapperPrivate::HandleEmergencyDialL(const TInt aStatus)
+{
+ DPRINT << ": IN ";
+
+ Q_UNUSED(aStatus);
+
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::RequestComplete
+ */
+void PSetCallDivertingWrapperPrivate::RequestComplete()
+{
+ DPRINT << ": IN ";
+ QT_TRYCATCH_LEAVING(
+ emit m_Owner.requestDone());
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::RequestStatusChanged
+ */
+void PSetCallDivertingWrapperPrivate::RequestStatusChanged(TInt aNewStatus)
+{
+ DPRINT << ": IN ";
+ Q_UNUSED(aNewStatus);
+ DPRINT << ": OUT ";
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsCallDivertingCondition PSetCallDivertingWrapperPrivate::convert(
+ TCallDivertingCondition type)
+{
+ switch (type) {
+ case EDivertConditionUnconditional:
+ return DivertConditionUnconditional;
+ case EDivertConditionBusy:
+ return DivertConditionBusy;
+ case EDivertConditionNoReply:
+ return DivertConditionNoReply;
+ case EDivertConditionNotReachable:
+ return DivertConditionNotReachable;
+ case EDivertConditionAllCalls:
+ return DivertConditionAllCalls;
+ case EDivertConditionAllConditionalCases:
+ return DivertConditionAllConditionalCases;
+ default:
+ break;
+ }
+ return DivertConditionUnknown;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+TCallDivertingCondition PSetCallDivertingWrapperPrivate::convert(
+ PsCallDivertingCondition type)
+{
+ switch (type) {
+ case DivertConditionUnconditional:
+ return EDivertConditionUnconditional;
+ case DivertConditionBusy:
+ return EDivertConditionBusy;
+ case DivertConditionNoReply:
+ return EDivertConditionNoReply;
+ case DivertConditionNotReachable:
+ return EDivertConditionNotReachable;
+ case DivertConditionAllCalls:
+ return EDivertConditionAllCalls;
+ case DivertConditionAllConditionalCases:
+ return EDivertConditionAllConditionalCases;
+ default:
+ break;
+ }
+ return EDivertConditionUnconditional;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsCallDivertingCondition PSetCallDivertingWrapperPrivate::convert(
+ RMobilePhone::TMobilePhoneCFCondition type)
+{
+ switch (type) {
+ case RMobilePhone::ECallForwardingUnconditional:
+ return DivertConditionUnconditional;
+ case RMobilePhone::ECallForwardingBusy:
+ return DivertConditionBusy;
+ case RMobilePhone::ECallForwardingNoReply:
+ return DivertConditionNoReply;
+ case RMobilePhone::ECallForwardingNotReachable:
+ return DivertConditionNotReachable;
+ case RMobilePhone::ECallForwardingAllCases:
+ return DivertConditionAllCalls;
+ case RMobilePhone::ECallForwardingAllConditionalCases:
+ return DivertConditionAllConditionalCases;
+ default:
+ break;
+ }
+ return DivertConditionUnknown;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsCallDivertingStatus PSetCallDivertingWrapperPrivate::convert(
+ TDivertingStatus type)
+{
+ switch (type) {
+ case EDivertingStatusActive:
+ return DivertingStatusActive;
+ case EDivertingStatusInactive:
+ return DivertingStatusInactive;
+ case EDivertingStatusNotRegistered:
+ return DivertingStatusNotRegistered;
+ case EDivertingStatusNotProvisioned:
+ return DivertingStatusNotProvisioned;
+ default:
+ break;
+ }
+ return DivertingStatusUnknown;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+TDivertingStatus PSetCallDivertingWrapperPrivate::convert(
+ PsCallDivertingStatus type)
+{
+ switch (type) {
+ case DivertingStatusActive:
+ return EDivertingStatusActive;
+ case DivertingStatusInactive:
+ return EDivertingStatusInactive;
+ case DivertingStatusNotRegistered:
+ return EDivertingStatusNotRegistered;
+ case DivertingStatusNotProvisioned:
+ return EDivertingStatusNotProvisioned;
+ default:
+ break;
+ }
+ return EDivertingStatusUnknown;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsCallDivertingStatus PSetCallDivertingWrapperPrivate::convert(
+ RMobilePhone::TMobilePhoneCFStatus type)
+{
+ switch (type) {
+ case RMobilePhone::ECallForwardingStatusActive:
+ return DivertingStatusActive;
+ case RMobilePhone::ECallForwardingStatusNotActive:
+ return DivertingStatusInactive;
+ case RMobilePhone::ECallForwardingStatusNotRegistered:
+ return DivertingStatusNotRegistered;
+ case RMobilePhone::ECallForwardingStatusNotProvisioned:
+ return DivertingStatusNotProvisioned;
+ default:
+ break;
+ }
+ return DivertingStatusUnknown;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsServiceGroup PSetCallDivertingWrapperPrivate::convert(TServiceGroup type)
+{
+ PsServiceGroup ret(ServiceGroupAllTeleservices);
+ ret &= type;
+ return ret;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+TServiceGroup PSetCallDivertingWrapperPrivate::convert(PsServiceGroup type)
+{
+ const int tmp = type;
+ TServiceGroup ret = (TServiceGroup)tmp;
+ return ret;
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+TDivertingSetting PSetCallDivertingWrapperPrivate::convert(
+ PsCallDivertingSetting type)
+{
+ switch(type){
+ case ActivateDiverting:
+ return EActivateDiverting;
+ case CancelDiverting:
+ return ECancelDiverting;
+ case RegisterDiverting:
+ return ERegisterDiverting;
+ case EraseDiverting:
+ return EEraseDiverting;
+ case CheckStatus:
+ default:
+ return ECheckStatus;
+ }
+}
+
+/*!
+ PSetCallDivertingWrapperPrivate::convert
+ */
+PsServiceGroup PSetCallDivertingWrapperPrivate::convert(
+ RMobilePhone::TMobileService service )
+{
+ PsServiceGroup ret(0);
+ switch (service) {
+ case RMobilePhone::EAllServices:
+ ret |= ServiceGroupData;
+ ret |= ServiceGroupVoice;
+ ret |= ServiceGroupFax;
+ break;
+ case RMobilePhone::EAllTele:
+ case RMobilePhone::EAllTeleExcSms:
+ ret |= ServiceGroupVoice;
+ ret |= ServiceGroupFax;
+ break;
+ case RMobilePhone::ECircuitDataService:
+ case RMobilePhone::EPacketDataService:
+ case RMobilePhone::EAllDataExSms:
+ case RMobilePhone::ESyncData:
+ case RMobilePhone::EAsyncData:
+ case RMobilePhone::EPacketData:
+ case RMobilePhone::EAllGprsBearer:
+ case RMobilePhone::EAllPlmnBearer:
+ case RMobilePhone::EPlmnBearerServ1:
+ case RMobilePhone::EPlmnBearerServ2:
+ case RMobilePhone::EPlmnBearerServ3:
+ case RMobilePhone::EPlmnBearerServ4:
+ case RMobilePhone::EPlmnBearerServ5:
+ case RMobilePhone::EPlmnBearerServ6:
+ case RMobilePhone::EPlmnBearerServ7:
+ case RMobilePhone::EPlmnBearerServ8:
+ case RMobilePhone::EPlmnBearerServ9:
+ case RMobilePhone::EPlmnBearerServA:
+ case RMobilePhone::EPlmnBearerServB:
+ case RMobilePhone::EPlmnBearerServC:
+ case RMobilePhone::EPlmnBearerServD:
+ case RMobilePhone::EPlmnBearerServE:
+ case RMobilePhone::EPlmnBearerServF:
+ case RMobilePhone::EAllBearer:
+ case RMobilePhone::EPadAccess:
+ case RMobilePhone::EAllAsync:
+ case RMobilePhone::EAllSync:
+ ret |= ServiceGroupData;
+ break;
+ case RMobilePhone::ETelephony:
+ case RMobilePhone::EVoiceService:
+ case RMobilePhone::EAuxVoiceService:
+ case RMobilePhone::EAllPlmnTele:
+ case RMobilePhone::EPlmnTele1:
+ case RMobilePhone::EPlmnTele2:
+ case RMobilePhone::EPlmnTele3:
+ case RMobilePhone::EPlmnTele4:
+ case RMobilePhone::EPlmnTele5:
+ case RMobilePhone::EPlmnTele6:
+ case RMobilePhone::EPlmnTele7:
+ case RMobilePhone::EPlmnTele8:
+ case RMobilePhone::EPlmnTele9:
+ case RMobilePhone::EPlmnTeleA:
+ case RMobilePhone::EPlmnTeleB:
+ case RMobilePhone::EPlmnTeleC:
+ case RMobilePhone::EPlmnTeleD:
+ case RMobilePhone::EPlmnTeleE:
+ case RMobilePhone::EPlmnTeleF:
+ case RMobilePhone::EAltTele:
+ ret |= ServiceGroupVoice;
+ break;
+ case RMobilePhone::EAllDataTele:
+ case RMobilePhone::EFaxService:
+ ret |= ServiceGroupFax;
+ break;
+ case RMobilePhone::EVoiceGroupCall:
+ case RMobilePhone::EVoiceBroadcast:
+ case RMobilePhone::EShortMessageService:
+ case RMobilePhone::EServiceUnspecified:
+ default:
+ // Not supported, skip
+ break;
+ }
+ return ret;
+}
+
+TVmbxType PSetCallDivertingWrapperPrivate::convert(
+ PsService aService)
+{
+ TVmbxType ret = EVmbxNone;
+ switch (aService) {
+ case ServiceGroupVoice:
+ ret = EVmbxVoice;
+ break;
+ case ServiceGroupData:
+ ret = EVmbxVideo;
+ break;
+ case ServiceGroupAllTeleservices:
+ case ServiceGroupFax:
+ case ServiceGroupUnknown:
+ default:
+ ret = EVmbxNone;
+ break;
+ }
+ return ret;
+}
+
+// end of file