diff -r 594d59766373 -r 7d48bed6ce0c vmbx/vmbxcpplugin/src/vmbxuiengine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vmbx/vmbxcpplugin/src/vmbxuiengine.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,337 @@ +/* + * Copyright (c) 2009 - 2010 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: + * + */ + +// System includes +#include +#include + +// User includes +#include "vmbxuiengine.h" +#include "loggerutil.h" + +/*! + Constructor +*/ +VmbxUiEngine::VmbxUiEngine() : mVmbxEngine(NULL), + mCsVoiceNumber(""),mCsVideoNumber("") +{ + _DBGLOG("VmbxUiEngine::VmbxUiEngine >") + QT_TRAP_THROWING(mVmbxEngine = CVoiceMailbox::NewL()); + init(); + _DBGLOG("VmbxUiEngine::VmbxUiEngine <") +} + +/*! + Destructor +*/ +VmbxUiEngine::~VmbxUiEngine() +{ + _DBGLOG( "VmbxUiEngine::~VmbxUiEngine >") + mVmbxEngine->NotifyVmbxNumberChangeCancel(); + delete mVmbxEngine; + mVmbxEngine = NULL; + _DBGLOG( "VmbxUiEngine::~VmbxUiEngine <") +} + +/*! + Initialize vmbx ui engine. +*/ +void VmbxUiEngine::init() +{ + _DBGLOG("VmbxUiEngine::init >") + // Init voice primary line number + getCsVoicePrimaryNumber(mCsVoiceNumber); + // Init video primary line nubmer + if (isVideoSupport()) { + getCsVideoPrimaryNumber(mCsVideoNumber); + } + _DBGLOG("VmbxUiEngine::init <") +} + +/*! + Getter method for primary voice number of Voice Mailbox. +*/ +void VmbxUiEngine::getCsVoiceNumber(QString &aValue) +{ + _DBGLOG("VmbxUiEngine::getCsVoiceNumber >") + aValue = mCsVoiceNumber; + _DBGLOG2("VmbxUiEngine::getCsVoiceNumber < , string=", aValue) +} + +/*! + Getter method for primary video number of Voice Mailbox. +*/ +void VmbxUiEngine::getCsVideoNumber(QString &aValue) +{ + _DBGLOG("VmbxUiEngine::getCsVideoNumber >") + aValue = mCsVideoNumber; + _DBGLOG2("VmbxUiEngine::getCsVideoNumber < , string=", aValue) +} + +/*! + Set number when cs voice number has been edited on UI. + @param aValue New value. +*/ +void VmbxUiEngine::setCsVoiceNumber(const QString &aValue) +{ + _DBGLOG2("VmbxUiEngine::setCsVoiceNumber >, value=",aValue) + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVoice; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVoice; + setNumber(vmbxParams, aValue); + mCsVoiceNumber = aValue; + _DBGLOG("VmbxUiEngine::setCsVoiceNumber <"); +} + +/*! + Set number when cs video number has been edited on UI. + @param aValue New value. +*/ +void VmbxUiEngine::setCsVideoNumber(const QString &aValue) +{ + _DBGLOG2("VmbxUiEngine::setCsVideoNumber >, value=",aValue) + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVideo; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVideo; + setNumber(vmbxParams, aValue); + mCsVideoNumber = aValue; + _DBGLOG("VmbxUiEngine::setCsVideoNumber <"); +} + +/*! + If video mailbox supported. +*/ +bool VmbxUiEngine::isVideoSupport() +{ + _DBGLOG("VmbxUiEngine::isVideoSupport >") + // video support + bool isVideoSupport(false); + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVideo; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVideo; + isVideoSupport = mVmbxEngine->CheckConfiguration(vmbxParams, + EVmbxVideoMailboxSupported); + _DBGLOG2("VmbxUiEngine::isVideoSupport ", isVideoSupport); + return isVideoSupport; +} + +/*! + If voice mailbox allow to write. +*/ +bool VmbxUiEngine::isVoiceWritable() +{ + _DBGLOG("VmbxUiEngine::isVoiceWritable >") + bool isVoiceWritable(false); + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVoice; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVoice; + isVoiceWritable = mVmbxEngine->CheckConfiguration(vmbxParams, + EVmbxChangeNbrAllowedOnUi); + _DBGLOG2("VmbxUiEngine::isVoiceWritable <", isVoiceWritable); + return isVoiceWritable; +} + +/*! + If video mailbox allow to write. +*/ +bool VmbxUiEngine::isVideoWritable() +{ + _DBGLOG( "VmbxUiEngine::isVideoWritable >") + bool isVideoWritable(false); + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVideo; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVideo; + isVideoWritable = mVmbxEngine->CheckConfiguration(vmbxParams, + EVmbxChangeNbrAllowedOnUi); + _DBGLOG2("VmbxUiEngine::isVoiceWritable >", isVideoWritable); + return isVideoWritable; +} + +/*! + queryVoiceNumber +*/ +int VmbxUiEngine::queryVoiceNumber(QString &aValue) +{ + _DBGLOG2("VmbxUiEngine::queryVoiceNumber >, value=",aValue) + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVoice; + vmbxParams.iServiceId = KVmbxServiceVoice; + int result = queryNumber(vmbxParams, aValue); + _DBGLOG2("VmbxUiEngine::queryVoiceNumber <, value=", aValue) + return result; +} + +/*! + queryVideoNumber +*/ +int VmbxUiEngine::queryVideoNumber(QString &aValue) +{ + _DBGLOG2("VmbxUiEngine::queryVideoNumber >, value=", aValue) + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVideo; + vmbxParams.iServiceId = KVmbxServiceVideo; + int result = queryNumber(vmbxParams, aValue); + _DBGLOG2("VmbxUiEngine::queryVideoNumber <, value=", aValue) + return result; +} + +/*! + Request notify when VMBX number changed + */ +void VmbxUiEngine::notifyVmbxNumberChange(bool aNotifyOnActiveLineOnly) +{ + _DBGLOG2("VmbxUiEngine::notifyVmbxNumberChange >, OnActiveLineOnly=", + aNotifyOnActiveLineOnly) + QT_TRAP_THROWING(mVmbxEngine->NotifyVmbxNumberChangeL + (*this, aNotifyOnActiveLineOnly)); + _DBGLOG2("VmbxUiEngine::notifyVmbxNumberChange <, OnActiveLineOnly=", + aNotifyOnActiveLineOnly) +} + +/*! + Callback from voice mailbox engine when number has been updated + This method notifies the UI to refresh its data. +*/ +void VmbxUiEngine::HandleNotifyL(const CVoiceMailboxEntry &aVmbxEntry) +{ + _DBGLOG( "VmbxUiEngine::HandleNotifyL >") + TVmbxType type = aVmbxEntry.VoiceMailboxType(); + TPtrC number(KNullDesC); + aVmbxEntry.GetVmbxNumber(number); + if (EVmbxVoice == type) { + mCsVoiceNumber = QString::fromUtf16(number.Ptr(), number.Length()); + } else if (EVmbxVideo == type) { + mCsVideoNumber = QString::fromUtf16(number.Ptr(), number.Length()); + } + emit voiceMailboxEngineEntriesUpdated(type); + _DBGLOG( "VmbxUiEngine::HandleNotifyL <") +} + +/*! + Getter method for primary voice number of Voice Mailbox. +*/ +void VmbxUiEngine::getCsVoicePrimaryNumber(QString &aValue) +{ + _DBGLOG("VmbxUiEngine::getCsVoicePrimaryNumber >") + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVoice; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVoice; + getNumber(vmbxParams, aValue); + _DBGLOG2("VmbxUiEngine::getCsVoicePrimaryNumber < , string=", aValue) +} + +/*! + Getter method for primary video number of Voice Mailbox. +*/ +void VmbxUiEngine::getCsVideoPrimaryNumber(QString &aValue) +{ + _DBGLOG("VmbxUiEngine::getCsVideoPrimaryNumber >") + TVoiceMailboxParams vmbxParams; + vmbxParams.iType = EVmbxVideo; + vmbxParams.iLineType = EVmbxAlsLine1; + vmbxParams.iServiceId = KVmbxServiceVideo; + getNumber(vmbxParams, aValue); + _DBGLOG2("VmbxUiEngine::getCsVideoPrimaryNumber < , string=", aValue) +} + +/*! + Private getter method for voice mailbox number. +*/ +void VmbxUiEngine::getNumber(const TVoiceMailboxParams &aParam, + QString &aValue) +{ + _DBGLOG("VmbxUiEngine::getNumber >") + CVoiceMailboxEntry* vmbxEntry = NULL; + TInt result = mVmbxEngine->GetStoredEntry( aParam, vmbxEntry ); + _DBGLOG2("VmbxUiEngine::getNumber, GetStoredEntry result=", result); + if ( KErrNone == result && vmbxEntry ){ + TPtrC entryNumber( KNullDesC ); + result = vmbxEntry->GetVmbxNumber( entryNumber ); + _DBGLOG3("VmbxUiEngine::getNumber, GetVmbxNumber result=", + result, + " but ignore code and allow returning of an empty string to UI"); + aValue = QString::fromUtf16(entryNumber.Ptr(), entryNumber.Length()); + } + delete vmbxEntry; + vmbxEntry = NULL; + _DBGLOG2("VmbxUiEngine::getNumber < , string=", aValue) +} + +/*! + Setter method for voice mailbox number. +*/ +void VmbxUiEngine::setNumber(const TVoiceMailboxParams &aParam, + const QString &aValue) +{ + _DBGLOG("VmbxUiEngine::setNumber >") + + CVoiceMailboxEntry* vmbxEntry = NULL; + QT_TRAP_THROWING(vmbxEntry = CVoiceMailboxEntry::NewL()); + vmbxEntry->SetServiceId(aParam.iServiceId); + vmbxEntry->SetVoiceMailboxType(aParam.iType); + vmbxEntry->SetVmbxAlsLineType(aParam.iLineType); + _DBGLOG2("VmbxUiEngine::setNumber, SetVmbxNumber aValue=", aValue); + _DBGLOG( "VmbxUiEngine::setNumber: cast to TPtrC") + TPtrC newNumber( + reinterpret_cast( aValue.utf16() ), + aValue.length() ); + int result = vmbxEntry->SetVmbxNumber( newNumber ); + if ( KErrNone == result ) { + result = mVmbxEngine->SaveEntry( *vmbxEntry ); + _DBGLOG2("VmbxUiEngine::setNumber, SaveEntry result=", result); + } + delete vmbxEntry; + vmbxEntry = 0; + _DBGLOG("VmbxUiEngine::setNumber <"); +} + +/*! + Query method for voice mailbox number. +*/ +int VmbxUiEngine::queryNumber(const TVoiceMailboxParams &aParam, + QString &aValue) +{ + _DBGLOG2("VmbxUiEngine::queryNumber >, value=", aValue) + getNumber(aParam, aValue); + CVoiceMailboxEntry *vmbxEntry = NULL; + int result(0); + if (aValue.length() > 0) { + result = mVmbxEngine->QueryChangeEntry(aParam, vmbxEntry); + } else { + result = mVmbxEngine->QueryNewEntry(aParam, vmbxEntry); + } + if (KErrNone == result && vmbxEntry) { + TPtrC entryNumber(KNullDesC); + result = vmbxEntry->GetVmbxNumber(entryNumber); + _DBGLOG3("VmbxUiEngine::queryNumber, GetVmbxNumber result=", + result, + " but ignore code and allow returing of an empty string to UI"); + aValue = QString::fromUtf16(entryNumber.Ptr(), entryNumber.Length()); + } + delete vmbxEntry; + vmbxEntry = NULL; + _DBGLOG2("VmbxUiEngine::queryNumber <, value=", aValue) + return result; +} + +//End of file