vmbx/vmbxcpplugin/src/vmbxuiengine.cpp
changeset 12 ae8abd0db65c
child 13 e32024264ebb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vmbx/vmbxcpplugin/src/vmbxuiengine.cpp	Fri Mar 19 09:40:14 2010 +0200
@@ -0,0 +1,209 @@
+/*
+ * 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 <cvoicemailbox.h>
+#include <cvoicemailboxentry.h>
+#include <QtGlobal>
+#include <QVariant>
+#include "vmbxuiengine.h"
+#include "loggerutil.h"
+
+
+// -----------------------------------------------------------------------------
+// Comment me!
+// -----------------------------------------------------------------------------
+//
+VmbxUiEngine::VmbxUiEngine() :
+    mVmbxEngine( 0 )
+{ 
+    _DBGLOG("VmbxUiEngine::VmbxUiEngine>")
+
+    // TODO: test that leave vs thrown exception really works
+    //mVmbxEngine = QT_TRAP_THROWING( CVoiceMailbox::NewL() ); this available in qt 4.6  
+    // TODO: replace all this trapping&throwing using QT_TRAP_THROWING when qt 4.6
+    TRAPD( error, mVmbxEngine = CVoiceMailbox::NewL(); );
+    if ( error || !mVmbxEngine ) {
+        QT_THROW( 0 );
+    }
+    _DBGLOG("VmbxUiEngine::VmbxUiEngine <")
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+VmbxUiEngine::~VmbxUiEngine()
+{
+    _DBGLOG( "VmbxUiEngine::~VmbxUiEngine >")
+    delete mVmbxEngine;
+    // TODO: check cleanup, this is a first draft!
+    _DBGLOG( "VmbxUiEngine::~VmbxUiEngine <")
+    }
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void VmbxUiEngine::GetCsVoice1Number( QString& aValue )
+{
+    _DBGLOG("VmbxUiEngine::GetCsVoice1Number >")
+
+    CVoiceMailboxEntry* vmbxEntry = NULL;
+    TVoiceMailboxParams vmbxParams;
+    vmbxParams.iType = EVmbxVoice;
+    vmbxParams.iLineType = EVmbxAlsLine1;
+    vmbxParams.iServiceId = KVmbxServiceVoice;
+    TInt result = mVmbxEngine->GetStoredEntry( vmbxParams, vmbxEntry );
+    _DBGLOG2("VmbxUiEngine::GetCsVoice1Number, GetStoredEntry result=", result);
+    if ( KErrNone == result && vmbxEntry )
+        { 
+        TPtrC entryNumber( KNullDesC );
+        result = vmbxEntry->GetVmbxNumber( entryNumber );
+        _DBGLOG3("VmbxUiEngine::GetCsVoice1Number, GetVmbxNumber result=", 
+            result,
+            " but ignore code and allow returing of an empty string to UI");
+        aValue = QString( (QChar*)entryNumber.Ptr(), entryNumber.Length() );
+        }
+
+    _DBGLOG2("VmbxUiEngine::GetCsVoice1Number < , string=", aValue)
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void VmbxUiEngine::GetCsVoice2Number( QString& aValue )
+{
+    _DBGLOG("VmbxUiEngine::GetCsVoice2Number >")
+    CVoiceMailboxEntry* vmbxEntry = NULL;
+    TVoiceMailboxParams vmbxParams;
+    vmbxParams.iType = EVmbxVoice;
+    vmbxParams.iLineType = EVmbxAlsLine2;
+    vmbxParams.iServiceId = KVmbxServiceVoice;
+    TInt result = mVmbxEngine->GetStoredEntry( vmbxParams, vmbxEntry );
+    _DBGLOG2("VmbxUiEngine::GetCsVoice2Number, GetStoredEntry result=", result);
+    if ( KErrNone == result && vmbxEntry )
+        { 
+        TPtrC entryNumber( KNullDesC );
+        result = vmbxEntry->GetVmbxNumber( entryNumber );
+        _DBGLOG3("VmbxUiEngine::GetCsVoice2Number, GetVmbxNumber result=", 
+            result,
+            " but ignore code and allow returing of an empty string to UI");
+        aValue = QString( (QChar*)entryNumber.Ptr(),entryNumber.Length() );
+        }
+    _DBGLOG2("VmbxUiEngine::GetCsVoice2Number < , string=", aValue)
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void VmbxUiEngine::GetCsVideo1Number( QString& aValue )
+{
+    _DBGLOG("VmbxUiEngine::GetCsVideo1Number >")
+    CVoiceMailboxEntry* vmbxEntry = NULL;
+    TVoiceMailboxParams vmbxParams;
+    vmbxParams.iType = EVmbxVideo;
+    vmbxParams.iLineType = EVmbxAlsLine1;
+    vmbxParams.iServiceId = KVmbxServiceVideo;
+    TInt result = mVmbxEngine->GetStoredEntry( vmbxParams, vmbxEntry );
+    _DBGLOG2("VmbxUiEngine::GetCsVideo1Number, GetStoredEntry result=", result);
+    if ( KErrNone == result && vmbxEntry )
+        { 
+        TPtrC entryNumber( KNullDesC );
+        result = vmbxEntry->GetVmbxNumber( entryNumber );
+        _DBGLOG3("VmbxUiEngine::GetCsVideo1Number, GetVmbxNumber result=", 
+            result,
+            " but ignore code and allow returing of an empty string to UI");
+        aValue = QString( (QChar*)entryNumber.Ptr(),entryNumber.Length() );
+        }
+    _DBGLOG2("VmbxUiEngine::GetCsVideo1Number < , string=", aValue)
+}
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+VmbxUiEngine::TUiDefaultVoiceMailboxType VmbxUiEngine::DefaultMailboxType()
+{
+    _DBGLOG( "VmbxUiEngine::DefaultMailboxType")
+    TUiDefaultVoiceMailboxType result = EUiDefaultVmbxNone;
+    // TODO: get type from engine IF AND WHEN THIS FEATURE IS SUPPORTED
+    _DBGLOG2("VmbxUiEngine::GetCsVideo1Number < , string=", result)
+    return result;
+}
+
+// -----------------------------------------------------------------------------
+// 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")
+    /* TODO:  consider is there need to pass the actual modified data 
+    and mailbox type enum to slot.
+    
+    TODO: issue the notification request to vmbxengine, that is missing
+    at the moment !
+    */
+    emit voiceMailboxEngineEntriesUpdated();
+}
+
+// -----------------------------------------------------------------------------
+// Callback from voice mailbox engine when number has been updated
+// This method notifies the UI to refresh its data. 
+// -----------------------------------------------------------------------------
+//
+void VmbxUiEngine::uiCsVoice1Changed( const QString& aValue )
+{
+    _DBGLOG2("VmbxUiEngine::uiCsVoice1Changed, value=",aValue)
+    CVoiceMailboxEntry* vmbxEntry = NULL;
+    TVoiceMailboxParams vmbxParams;
+    vmbxParams.iType = EVmbxVoice;
+    vmbxParams.iLineType = EVmbxAlsLine1;
+    vmbxParams.iServiceId = KVmbxServiceVoice;
+    TInt result = mVmbxEngine->GetStoredEntry( vmbxParams, vmbxEntry );
+    _DBGLOG2("VmbxUiEngine::uiCsVoice1Changed, GetStoredEntry result=", result);
+    if ( KErrNone != result )
+        {
+        // TODO: test that leave vs thrown exception really works
+        //vmbxEntry = QT_TRAP_THROWING( CVoiceMailboxEntry::NewL() ); this available in qt 4.6  
+        // TODO: replace all this trapping using QT_TRAP_THROWING when qt 4.6
+        TRAP_IGNORE( vmbxEntry = CVoiceMailboxEntry::NewL() );
+        vmbxEntry->SetServiceId( KVmbxServiceVoice );
+        vmbxEntry->SetVoiceMailboxType( EVmbxVoice );
+        vmbxEntry->SetVmbxAlsLineType( EVmbxAlsLine1 );
+        // Service name for cs is basically the one in service table,
+        // but in this case it's not used for anything by vmbx.
+        // So let's not set anything as name...fix if problems arise
+        }
+    _DBGLOG( "VmbxUiEngine::uiCsVoice1Changed: cast to TPtrC")
+    TPtrC newNumber( 
+        reinterpret_cast<const TUint16*>( aValue.utf16() ),
+        aValue.length() );
+    result = vmbxEntry->SetVmbxNumber( newNumber );
+    _DBGLOG2("VmbxUiEngine::uiCsVoice1Changed, SetVmbxNumber result=", result);
+
+    if ( KErrNone == result )
+        {
+        result = mVmbxEngine->SaveEntry( *vmbxEntry );
+        } 
+    delete vmbxEntry;
+    // TODO: handle error here
+    _DBGLOG2("VmbxUiEngine::uiCsVoice1Changed <, SaveEntry result=", result);
+}