vmbx/vmbxengine/src/vmbxuiutilities.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vmbx/vmbxengine/src/vmbxuiutilities.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,309 @@
+/*
+* 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 VmbxUtilities class
+*
+*/
+
+
+// INCLUDE FILES
+#include <cvoicemailboxentry.h>
+
+#include "voicemailboxdefsinternal.h"
+#include "vmbxutilities.h"
+#include "vmbxlogger.h"
+#include "vmbxuiutilities.h"
+#include "vmbxuihandler.h"
+
+// ============================ MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::CVmbxUiUtilities
+// C++ default constructor can NOT contain any code
+// ---------------------------------------------------------------------------
+CVmbxUiUtilities::CVmbxUiUtilities()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::CVmbxUiUtilities <=>" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::~CVmbxUiUtilities
+// Destructor
+// ---------------------------------------------------------------------------
+CVmbxUiUtilities::~CVmbxUiUtilities()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::~CVmbxUiUtilities =>" );
+    delete iUiHandler;
+    //If there are still dialog is running, The dialogs should be dismissed.
+    //The leave will be ignored as the CVmbxUiUtilities is distructing
+    TRAP_IGNORE( DismissDialogL() );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::~CVmbxUiUtilities <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// CVoiceMailboxImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CVmbxUiUtilities* CVmbxUiUtilities::NewL()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::NewL =>" );
+    CVmbxUiUtilities* vmbx = new( ELeave )CVmbxUiUtilities();
+    CleanupStack::PushL( vmbx );
+    vmbx->ConstructL();
+    CleanupStack::Pop( vmbx );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::NewL <=" );
+    return vmbx;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoiceMailboxImpl::ConstructL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ConstructL()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ConstructL =>" );
+    // create resource handler
+    TRAP_IGNORE(iUiHandler = CVmbxUiHandler::NewL());
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ConstructL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowQuery
+// Show query
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowQueryL( const TVmbxType& aType,
+        const TVmbxQueryMode & aMode, TDes& aNumber )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryL =>" );
+    VMBLOGSTRING3( "VMBX: CVmbxUiUtilities::ShowQueryL: aMode=%d aNumber=%S ",
+                    aMode, &aNumber );
+    if ( !iUiHandler ) 
+        {
+        VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryL no qt env Exit" )
+        User::Leave(KErrNotSupported);
+        }
+    
+    // Show "define mailbox number" notification at define mode
+    if (EVmbxDefineMode == aMode) {
+        switch( aType ) {
+        case EVmbxVoice:
+            ShowInformationdNoteL(EDefineVoiceNumber);
+            break;
+        case EVmbxVideo:
+            ShowInformationdNoteL(EDefineVideoNumber);
+            break;
+        default:
+            break;
+        }
+    }
+    
+    TInt result( KErrNone );
+    FOREVER
+        {
+        ShowQueryDialogL( aType, aMode, aNumber, result );
+        if ( KErrCancel == result )
+            {
+            break;
+            }
+
+        if ( KErrNone == result )
+            {
+            if ( aNumber.Length() )
+                {
+                // Convert back to western digits
+                // check the given number here (emergency numbers not allowed)
+                if ( VmbxUtilities::IsValidPhoneNumber( aNumber )
+                     && !VmbxUtilities::IsEmergencyNumber( aNumber ) )
+                    {
+                    break;
+                    }// valid number
+                else
+                    {
+                    //invalid dialog
+                    ShowInvalidWarningDialogL();
+                    continue;
+                    }// invalid number
+                }
+            else
+                {
+                result = KErrNone;
+                break;
+                }// number NULL
+            }
+        }// End FOREVER
+    VMBLOGSTRING2( "VMBX: CVmbxUiUtilities::ShowQueryL: result=%I ", result );
+    User::LeaveIfError( result );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowInformationdNote
+//
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowInformationdNoteL(const TVmbxNoteType aType )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowInformationdNoteL =>" );
+    if ( iUiHandler ) 
+        {
+        iUiHandler->ShowInformationdNoteL( aType );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowInformationdNoteL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowDefineSelectionDialogL
+// Show define number in selection list
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowDefineSelectionDialogL( TVmbxType& aType,
+                                                         TInt& aResult )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowDefineSelectionDialogL =>" );
+    if (!iUiHandler ) 
+        {
+        VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowDefineSelectionDialogL\
+            no qt env Exit" )
+        User::Leave(KErrNotSupported);
+        }
+    iUiHandler->ShowDefineSelectionDialogL( aType, aResult );
+    VMBLOGSTRING3( "VMBX: CVmbxUiUtilities::ShowDefineSelectionDialogL: \
+                     aType=%I, aResult=%I <=", aType, aResult );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowDefineSelectionDialogL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowCallSelectionDialogL
+// Show call number in selection list
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowCallSelectionDialogL(
+                    const RPointerArray<CVoiceMailboxEntry>& aArray,
+                    TVoiceMailboxParams& aParams,
+                    TInt& aResult )
+    {
+    VMBLOGSTRING("VMBX: CVmbxUiUtilities::ShowCallSelectionDialogL  =>");
+    if (!iUiHandler) 
+        {
+        VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowCallSelectionDialogL\
+            no qt env Exit" )
+        User::Leave(KErrNotSupported);
+        }
+    if ( aArray.Count() < 1 )
+        {
+        User::Leave( KErrArgument );
+        }
+    iUiHandler->ShowCallSelectionDialogL( aArray, aParams, aResult );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowCallSelectionDialogL <=" );
+    }
+
+// --------------------------------------------------------------------------
+// CVmbxUiUtilities::ShowNotAllowedEditingDialogL
+// --------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowNotAllowedEditingDialogL()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowNotAllowedEditingDialogL =>" );
+    // Information user can't edit.
+    if ( iUiHandler) 
+        {
+        iUiHandler->ShowInformationdNoteL( ENotAllowUserEditing );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowNotAllowedEditingDialogL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowInvalidWarningDialogL
+//
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowInvalidWarningDialogL()
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowInvalidWarningDialogL =>" );
+    if ( iUiHandler) 
+        {
+        iUiHandler->ShowInformationdNoteL( EInvalidNumber );
+        }
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowInvalidWarningDialogL <=" );
+    }
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::DismissDialogL
+// Tries to close all open dialogs
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::DismissDialogL()
+    {
+    VMBLOGSTRING( 
+    "VMBX: CVmbxUiUtilities::DismissDialogL EMPTY IMPLEMENTATION!=>" );
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::DismissDialogL <=" );
+    }
+
+// Commented out because branding is not supported yet.
+// ---------------------------------------------------------------------------
+// CVmbxUiUtilities::GetVmbxImageL
+//
+// ---------------------------------------------------------------------------
+/*
+CGulIcon* CVmbxUiUtilities::GetVmbxImageL(
+                        const TVoiceMailboxParams& aParams )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::GetVmbxImageL" );
+*/
+
+// ---------------------------------------------------------------------------
+// VmbxUtilities::ShowQueryDialogL
+// Show query dialog
+// ---------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::ShowQueryDialogL( const TVmbxType& aType,
+                                         const TVmbxQueryMode& /*aMode*/,
+                                         TDes& aNumber, TInt& aResult )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryDialogL =>" );
+
+    if( EVmbxVideo != aType && EVmbxVoice != aType  )
+        {
+        VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryDialogL: \
+                            User::Leave( KErrNotSupported )" );
+        User::Leave( KErrArgument );
+        }
+    VMBLOGSTRING2( "VMBX: CVmbxUiUtilities::ShowQueryDialogL: in\
+    aNumber = %S", &aNumber );
+    // to show dialog via qt part
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::ShowQueryDialogL to show qt" );
+    iUiHandler->ShowVmbxQueryDialogL( aType, aNumber, aResult );
+    VMBLOGSTRING2( "VMBX: CVmbxUiUtilities::ShowQueryDialogL: out\
+    aNumber = %S", &aNumber );
+    VMBLOGSTRING2( "VMBX: CVmbxUiUtilities::ShowQueryDialogL: aResult=%I <=",
+     aResult );
+    }
+
+// -----------------------------------------------------------------------------
+// CVmbxUiUtilities::FetchNumberFromPhonebook2L
+// Create and show Phonebook's Single Fetch Dialog
+// -----------------------------------------------------------------------------
+//
+void CVmbxUiUtilities::FetchNumberFromPhonebook2L( 
+                                          TDes& /*aPhoneNumber*/ )
+    {
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::FetchNumberFromPhonebook2L =>" );
+    /* TODO: Later remove this or replace with some Qt Phonebook API
+        */
+    VMBLOGSTRING( "VMBX: CVmbxUiUtilities::FetchNumberFromPhonebook2L <=" );
+    }
+
+// End of file