diff -r 7eb70891911c -r a2467631ae02 cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper.cpp --- a/cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper.cpp Fri Jun 11 14:07:16 2010 +0300 +++ b/cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper.cpp Wed Jun 23 18:49:32 2010 +0300 @@ -200,9 +200,12 @@ } /*! - PSetCallDivertingWrapper::getVoiceMailBoxNumber + * PSetCallDivertingWrapper::getVoiceMailBoxNumber + * @param aNumber empty if not set + * @return -1 if not supported */ -void PSetCallDivertingWrapper::getVoiceMailBoxNumber(QString &aVmbxNumber) +int PSetCallDivertingWrapper::getVoiceMailBoxNumber( + QString &aNumber, PsService aService) { DPRINT << ": IN"; @@ -213,46 +216,90 @@ TVoiceMailboxParams psetVoiceMailboxParams; // Selected mailbox type is voice - psetVoiceMailboxParams.iType = EVmbxVoice; + psetVoiceMailboxParams.iType = m_Priv->convert(aService); psetVoiceMailboxEntry = 0; - TInt error = psetVoiceMailBox->GetStoredEntry( psetVoiceMailboxParams, psetVoiceMailboxEntry ); - if ( KErrNone == error ) { + int ret = 0; + TInt error = psetVoiceMailBox->GetStoredEntry( + psetVoiceMailboxParams, psetVoiceMailboxEntry); + DPRINT << "error: " << error; + if (KErrNotSupported == error) { + ret = -1; + } else if (KErrNone == error) { // Entry ok, check the number - TPtrC ptrNumber( KNullDesC ); - if ( KErrNone == psetVoiceMailboxEntry->GetVmbxNumber( ptrNumber )) { + TPtrC ptrNumber(KNullDesC); + if (KErrNone == psetVoiceMailboxEntry->GetVmbxNumber(ptrNumber)) { // number ok - aVmbxNumber = QString::fromUtf16(ptrNumber.Ptr(), + aNumber = QString::fromUtf16(ptrNumber.Ptr(), ptrNumber.Length()); - } } - else if ( KErrNotFound == error ) { + + } else { + // illegal argument + } + + delete psetVoiceMailboxEntry; // Entry ownership was transferred + psetVoiceMailboxEntry = NULL; + + DPRINT << "aVmbxNumber: " << aNumber; + DPRINT << ": OUT"; + return ret; +} + +/*! + * PSetCallDivertingWrapper::queryVoiceMailBoxNumber + * @param aNumber empty if not set + * @return -1 if not supported + */ +int PSetCallDivertingWrapper::queryVoiceMailBoxNumber( + QString &aNumber, PsService aService) +{ + DPRINT << ": IN"; + + CVoiceMailboxEntry* psetVoiceMailboxEntry = NULL; + CVoiceMailbox* psetVoiceMailBoxScoped = NULL; + QT_TRAP_THROWING(psetVoiceMailBoxScoped = CVoiceMailbox::NewL()); + QScopedPointer psetVoiceMailBox(psetVoiceMailBoxScoped); + + TVoiceMailboxParams psetVoiceMailboxParams; + // Selected mailbox type is voice + psetVoiceMailboxParams.iType = m_Priv->convert(aService); + psetVoiceMailboxEntry = 0; + int ret = 0; + TInt error = psetVoiceMailBox->GetStoredEntry( + psetVoiceMailboxParams, psetVoiceMailboxEntry); + + if (KErrNotSupported == error) { + ret = -1; + } else if (KErrNone == error || KErrNotFound == error) { // No number defined, query new entry from user - error = psetVoiceMailBox->QueryNewEntry( psetVoiceMailboxParams, psetVoiceMailboxEntry ); + error = psetVoiceMailBox->QueryNewEntry( + psetVoiceMailboxParams, psetVoiceMailboxEntry); - if ( KErrNone == error ) { + if (KErrNone == error) { // Save new entry and get the number. error = psetVoiceMailBox->SaveEntry( *psetVoiceMailboxEntry ); TPtrC ptrNumber( KNullDesC ); if ( KErrNone == psetVoiceMailboxEntry->GetVmbxNumber( ptrNumber )) { // New number ok. - aVmbxNumber = QString::fromUtf16(ptrNumber.Ptr(), + aNumber = QString::fromUtf16(ptrNumber.Ptr(), ptrNumber.Length()); - } - } else { - // New number not given. - DPRINT << "New number error: " << error; } + + } else { + // New number not given. + DPRINT << "New number error: " << error; } - else { + } else { // illegal argument DPRINT << "error: " << error; - } + } delete psetVoiceMailboxEntry; // Entry ownership was transferred psetVoiceMailboxEntry = NULL; - DPRINT << "aVmbxNumber: " << aVmbxNumber; + DPRINT << "aVmbxNumber: " << aNumber; DPRINT << ": OUT"; + return ret; } /*!