vmbx/vmbxengine/src/vmbxvoipengine.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vmbx/vmbxengine/src/vmbxvoipengine.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,325 @@
+/*
+* 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:  Implementation of the CVmbxVoIpEngine class
+*
+*/
+
+// INCLUDE FILES
+#include <fbs.h>
+#include <cvoicemailboxentry.h>
+
+#include "vmbxenginebase.h"
+#include "vmbxlogger.h"
+#include "vmbxuiutilities.h"
+#include "vmbxutilities.h"
+#include "vmspshandler.h"
+#include "vmbshandler.h"
+#include "voicemailboxdefsinternal.h"
+#include "vmbxvoipengine.h"
+
+// ============================ MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::CVmbxVoIpEngine
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ---------------------------------------------------------------------------
+//
+CVmbxVoIpEngine::CVmbxVoIpEngine( MVmbxResourceProvider& aProvider )
+                                : CVmbxEngineBase( aProvider )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::CVmbxVoIpEngine =>" );
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::CVmbxVoIpEngine <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::~CVmbxVoIpEngine
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CVmbxVoIpEngine::~CVmbxVoIpEngine()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::~CVmbxVoIpEngine =>" );
+    delete iVmSpsHandler;
+    delete iVmBsHandler;
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::~CVmbxVoIpEngine <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CVmbxVoIpEngine* CVmbxVoIpEngine::NewL( MVmbxResourceProvider& aProvider)
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::NewL =>" );
+    if ( !VmbxUtilities::VoIPSupported() )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    CVmbxVoIpEngine* self = new( ELeave ) CVmbxVoIpEngine( aProvider );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::NewL <=" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::ConstructL()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::ConstructL =>" );
+    if ( VmbxUtilities::VoIPSupported() )
+        {
+        iVmSpsHandler = CVmSPSHandler::NewL();
+        }
+
+    iVmBsHandler = CVmBSHandler::NewL();
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::ConstructL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::GetL
+// Gets voice mailbox number
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::GetL( CVoiceMailboxEntry*& aEntry )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetL =>" );
+    TInt result( KErrNone );
+    CVoiceMailboxEntry* vmbxEntry = CVoiceMailboxEntry::NewLC();
+
+    vmbxEntry->SetVoiceMailboxType( EVmbxVoip );
+    vmbxEntry->SetServiceId( iVmbxServiceId );
+
+    HBufC8* brandId = HBufC8::NewLC( KSPMaxDesLength );
+    TPtr8 ptr( brandId->Des() );
+    BrandIdL( iVmbxServiceId, ptr );
+    // set brand id
+    result = vmbxEntry->SetBrandId( ptr );
+    CleanupStack::PopAndDestroy( brandId );
+    if ( KErrNone == result )
+        {
+        TVmbxServiceInfo serviceInfo;
+        serviceInfo.iServiceId = iVmbxServiceId;
+        result = GetServiceInfo( serviceInfo );
+        if ( KErrNone == result )
+            {
+            // set voip name
+            result = vmbxEntry->SetVmbxName( serviceInfo.iName );
+            if ( KErrNone == result )
+                {
+                // set voip address
+                result = vmbxEntry->SetVmbxNumber( serviceInfo.iAddress );
+                }
+            }
+        }
+    VMBLOGSTRING2( "VMBX: CVmbxVoIpEngine::GetL: result=%I", result );
+    User::LeaveIfError( result );
+    CleanupStack::Pop( vmbxEntry );
+    aEntry = vmbxEntry;
+    vmbxEntry = NULL;
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::SaveL
+// Saves voice mailbox number
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::SaveL( const CVoiceMailboxEntry& /*aEntry*/,
+                             TBool /*aShowNotesAllowed*/ )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::SaveL <=>" );
+    User::Leave( KErrNotSupported );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::SaveProvisionedEntryL
+// Saves Provisioned voice mailbox number
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::SaveProvisionedEntryL( 
+                                const CVoiceMailboxEntry& /*aEntry*/ )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::SaveProvisionedEntryL <=>" );
+    User::Leave( KErrNotSupported );
+    }
+
+// ----------------------------------------------------------------------------
+//  CVmbxVoIpEngine::CheckConfiguration()
+// ----------------------------------------------------------------------------
+//
+TBool CVmbxVoIpEngine::CheckConfiguration( 
+        const TVoiceMailboxParams& aParams, const TInt aFlags )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::CheckConfiguration: =>" );
+    TBool result( EFalse );
+    result = CVmbxEngineBase::CheckConfiguration(aParams, aFlags);
+    VMBLOGSTRING2( "VMBX: CVmbxVoIpEngine::CheckConfiguration: result%I <=",
+     result );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::QueryDefineNumberL
+//
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::QueryDefineNumberL( CVoiceMailboxEntry& /*aEntry*/ )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::QueryDefineNumberL <=>" );
+    User::Leave( KErrNotSupported );
+    }
+
+// ----------------------------------------------------------------------------
+// CVmbxEngineBase::QueryChangeNumberL
+//
+// ----------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::QueryChangeNumberL( CVoiceMailboxEntry& /*aEntry*/ )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::QueryChangeNumberL <=>" );
+    User::Leave( KErrNotSupported );        
+    }
+
+// Commented out because branding is not supported yet.
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::GetVmbxImageL
+// 
+// ---------------------------------------------------------------------------
+//
+/* CGulIcon* CVmbxVoIpEngine::GetVmbxImageL( const TVoiceMailboxParams& aParams )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetVmbxImageL =>" );
+    CGulIcon* guiIcon( NULL );
+    if ( IsVoIPProfilesFound() )
+        {
+        TBuf8<KSPMaxDesLength> brandId( KNullDesC8 );
+        BrandIdL(aParams.iServiceId, brandId );
+
+        CFbsBitmap* brandedBitmap( NULL );
+        CFbsBitmap* brandedBitmapMask( NULL );  
+        TRAPD( err, GetBrandedIconL( 
+                        brandId, brandedBitmap, brandedBitmapMask ) );
+
+        if ( KErrNotFound == err )
+            {
+            VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetVmbxImageL: \
+                                                 no found profiles<= " );
+            guiIcon = iProvider.VmbxUiUtilities().GetVmbxImageL( aParams );
+            }
+        else if ( KErrNone == err )
+            {
+            guiIcon = 
+                       CGulIcon::NewL( brandedBitmap, brandedBitmapMask );
+            VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetVmbxImageL: \
+                            found profiles" );
+            }
+        }
+    else
+        {
+        VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetVmbxImageL: use default " );
+        guiIcon = iProvider.VmbxUiUtilities().GetVmbxImageL( aParams );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetVmbxImageL <=" );
+    return guiIcon; 
+    } */
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::IsVoIPProfilesFound
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CVmbxVoIpEngine::IsVoIPProfilesFound()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::IsVoIPProfilesFound <=>" );
+    return iVmSpsHandler->IsVoIPProfilesFound();
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::GetServiceIds
+// 
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::GetServiceIdsL( RIdArray& aProfileIds )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetServiceIds: =>" );
+    if ( VmbxUtilities::VoIPSupported() && IsVoIPProfilesFound() )
+        {
+        iVmSpsHandler->GetServiceIdsL( aProfileIds );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetServiceIds: <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::GetBrandedIconL
+// 
+// ---------------------------------------------------------------------------
+//
+/* void CVmbxVoIpEngine::GetBrandedIconL( const TDesC8& aBrandingId,
+    CFbsBitmap*& aBrandedBitmap, CFbsBitmap*& aBrandedBitmapMask )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetBrandedIconL: =>" );
+
+    iVmBsHandler->GetBrandedIconL( 
+                aBrandingId, aBrandedBitmap, aBrandedBitmapMask );
+    
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetBrandedIconL: <=" );
+    }
+ */
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::BrandIdL
+// 
+// ---------------------------------------------------------------------------
+//
+void CVmbxVoIpEngine::BrandIdL( TInt aServiceId, TDes8& aBrandId )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::BrandIdL: =>" );
+
+    if ( VmbxUtilities::VoIPSupported() )
+        {
+        iVmSpsHandler->BrandIdL( aServiceId, aBrandId );
+        }
+
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::BrandIdL: <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVmbxVoIpEngine::GetServiceInfo
+// 
+// ---------------------------------------------------------------------------
+//
+TInt CVmbxVoIpEngine::GetServiceInfo( TVmbxServiceInfo& aServiceInfo )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetServiceInfo: =>" );
+    TInt ret( KErrNotFound );
+    if ( VmbxUtilities::VoIPSupported() )
+        {
+        ret = iVmSpsHandler->GetServiceInfo( aServiceInfo );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxVoIpEngine::GetServiceInfo: <=" );
+    return ret;
+    }
+
+// End of file