cellular/telephonysettings/xqbindings/psetwrapper/src/psetcalldivertingwrapper.cpp
changeset 31 a2467631ae02
parent 13 e32024264ebb
child 32 1f002146abb4
--- 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<CVoiceMailbox> 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;
 }
 
 /*!