phoneclientserver/callui/src/cauiengine/cauidialogs.cpp
changeset 51 12bc758d6a02
parent 48 78df25012fda
child 53 25b8d29b7c59
--- a/phoneclientserver/callui/src/cauiengine/cauidialogs.cpp	Fri Sep 17 17:09:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,658 +0,0 @@
-/*
-* Copyright (c) 2008 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 CallUIEngine.
-*
-*/
-
-
-// INCLUDES
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <featmgr.h>
-#include <stringloader.h> 
-#include <callui.rsg> // Resources. 
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-#include <akngloballistquery.h> 
-#include <aknglobalnote.h> 
-#include <mcauireconnectqueryobserver.h>
-#include "cauidialogs.h" 
-#include "cauilogger.h" 
-#include "cauiquery.h" 
-#include "cauiengine.h" 
-#include "cphcntmatcher.h" 
-#include "cauiactiveobject.h" 
-
-// CLASS DECLARATION
-
-/**
-*  Container for informatioin needed in Reconnection query.
-*
-*  @lib CaUiEngine.lib
-*  @since 2.6
-*/
-NONSHARABLE_CLASS( CCaUiReConQueryInformation ) 
-    : public CBase
-    {
-    public:  // Constructors and destructor
-        
-        /**
-        * C++ constructor.
-        * 
-        * @see CCaUiEngApi::LaunchNoteAndReconConfQueryL().
-        */
-        CCaUiReConQueryInformation(
-            MCaUiReconnectQueryObserver& aObserver,
-            CPhCntMatcher* aPhCntMatcher,
-            const TPtrC aPhoneNumber,
-            const TBool aIncludeVideoCallOption,
-            const TPtrC aNoteText );
-        
-        /**
-        * Destructor.
-        */
-        ~CCaUiReConQueryInformation();
-
-
-    public:    // Data
-
-        // Observer storage.
-        MCaUiReconnectQueryObserver&    iObserver;
-
-        // Matcher storage.
-        CPhCntMatcher*                  iPhCntMatcher;
-
-        // Phone number storage.
-        const TPtrC                     iPhoneNumber;
-
-        // Video call option storage.
-        const TBool                     iIncludeVideoCallOption;
-    
-        // The name corresponding the phone number.
-        const TPtrC                     iAlias;
-
-    };
-
-
-// -----------------------------------------------------------------------------
-// CCaUiReConQueryInformation::CCaUiReConQueryInformation
-// 
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CCaUiReConQueryInformation::CCaUiReConQueryInformation(
-    MCaUiReconnectQueryObserver& aObserver,
-    CPhCntMatcher* aPhCntMatcher,
-    const TPtrC aPhoneNumber,
-    const TBool aIncludeVideoCallOption,
-    const TPtrC aAlias )
-    : iObserver( aObserver ),
-      iPhCntMatcher( aPhCntMatcher ),
-      iPhoneNumber( aPhoneNumber ),
-      iIncludeVideoCallOption( aIncludeVideoCallOption ),
-      iAlias( aAlias )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCaUiReConQueryInformation::~CCaUiReConQueryInformation
-// 
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CCaUiReConQueryInformation::~CCaUiReConQueryInformation()
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::CCaUiDialogs
-// 
-//
-// -----------------------------------------------------------------------------
-//
-CCaUiDialogs::CCaUiDialogs( CCaUiEngine& aCaUiEngine )
-    : iCaUiEngine( aCaUiEngine )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::NewL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-CCaUiDialogs* CCaUiDialogs::NewL( CCaUiEngine& aCaUiEngine )
-    {
-    CCaUiDialogs* self = new( ELeave ) CCaUiDialogs( aCaUiEngine );
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::ConstructL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::ConstructL()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::ConstructL() Begin");
-    // Create reconnect query, not visible yet.
-    iReconListQuery = CAknGlobalListQuery::NewL();
-    
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::ConstructL() End");
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::~CCaUiDialogs
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-CCaUiDialogs::~CCaUiDialogs()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::~CCaUiDialogs() Begin");
-    // Cancel confirmation query if exists.
-    CancelReconConfQuery();
-    delete iReconListQuery;
-    
-    // Delete reconnection query information.
-    delete iReConQueryInformation;
-    
-    // Cancel and delete note timer if exists.
-    if ( iNoteTimer )
-        {
-        iNoteTimer->Cancel();
-        delete iNoteTimer;
-        }
-
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::~CCaUiDialogs() End");
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::QueryVideoCallDefaultActionL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-TInt CCaUiDialogs::QueryVideoCallDefaultActionL()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::QueryVideoCallDefaultActionL() Begin");
-    HBufC* vtstring = NULL;
-    HBufC* header = NULL;
-    vtstring = StringLoader::LoadLC( R_CALLUI_VT_SETTING_NOTE );
-    header = StringLoader::LoadLC( R_CALLUI_POPUP_VT_TITLE_SETTING );
-
-    CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *vtstring );
-    CleanupStack::PushL( dlg );
-    dlg->SetHeaderTextL( *header );
-    CleanupStack::Pop( dlg );
-
-    // Show query note to user
-    TInt result = dlg->ExecuteLD( R_CALLUI_VT_SETTING_QUERY );
-
-    CleanupStack::PopAndDestroy( 2, vtstring ); // header, vtstring
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::QueryVideoCallDefaultActionL() End");
-    
-    return result;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::LaunchCreateListQueryL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-TBool CCaUiDialogs::LaunchCreateListQueryL( TPhCltCallType& aCallType )
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchCreateListQueryL() Begin");
-    
-    TInt choice = KErrNotFound;
-
-    CListMappingArray* mappingList = new ( ELeave ) CListMappingArray( 4 );
-    CleanupStack::PushL( mappingList ); 
-
-    // Create query dialog.
-    CCaUiCreateListQuery* dlg = 
-        new ( ELeave ) CCaUiCreateListQuery( &choice );
-    dlg->PrepareLC( R_CALLUI_CREATE_LIST_QUERY );
-    
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchCreateListQueryL() 1");
-
-    // new clean list item array
-    CDesCArray* textArray = new( ELeave ) CDesCArrayFlat( 4 );
-    CleanupStack::PushL( textArray );
-
-    FillListQueryItemsL( *textArray, *mappingList );
-
-    CleanupStack::Pop( textArray );
-
-    // Dialog takes the ownership of textArray          
-    if( textArray )
-        {
-        dlg->SetOwnershipType( ELbmOwnsItemArray );
-        dlg->SetItemTextArray( textArray );
-        }
-
-    // Highlight preferred item from listbox
-    if( aCallType == EPhCltVideo )
-        {
-        dlg->ListBox()->SetCurrentItemIndex( KCallUiVideoCall );
-        }
-
-    TBool ok = dlg->RunLD();
-    CAUILOGSTRING2("CALLUI: >>>CCaUiDialogs::LaunchCreateListQueryL() ok = %d", ok );
-    CAUILOGSTRING2("CALLUI: >>>CCaUiDialogs::LaunchCreateListQueryL() choice = %d", choice );
-    if ( ok  )
-        {
-        // Check what call type was selected.
-
-        // Dynamic list made because of voip support
-        // take calltype from mappinglist
-        aCallType = mappingList->At( choice ).iCallType;
-        }
-
-    CleanupStack::PopAndDestroy( mappingList );
-
-    return ok;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::FillListQueryItemsL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::FillListQueryItemsL( 
-    CDesCArray& aTextArray, 
-    CListMappingArray& aMappingList )
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::FillListQueryItemsL() Begin");
-    
-    // Pointer for strings to be loaded.
-    HBufC* bufPtr = NULL;
-    TInt index = 0;
-    TListMappingItem item;
-
-    // Voice call option.
-    bufPtr = StringLoader::LoadLC( R_CALLUI_CREATE_LIST_VOICE );
-    aTextArray.AppendL( *bufPtr );
-    CleanupStack::PopAndDestroy( bufPtr );  
-    bufPtr = NULL;
-    item.iIndex = index;
-    item.iCallType = EPhCltVoice;
-    aMappingList.AppendL( item );
-    index++;
-    
-     // Video call option.
-    if ( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
-        {
-        CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::FillListQueryItemsL() Adding video call option");
-        bufPtr = StringLoader::LoadLC( R_CALLUI_CREATE_LIST_VIDEO );
-        aTextArray.AppendL( *bufPtr );
-        CleanupStack::PopAndDestroy( bufPtr );
-        bufPtr = NULL;
-        item.iIndex = index;
-        item.iCallType = EPhCltVideo;
-        aMappingList.AppendL( item );
-        index++;
-        }
-    // Internet call option is shown if dynamic voip is set on
-    // and there are VoIP profiles defined
-    if( iCaUiEngine.IsVoIPProfiles() )
-        {
-        // Internet call option.
-        CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::FillListQueryItemsL() Adding internet call option");
-        bufPtr = StringLoader::LoadLC( R_CALLUI_CREATE_LIST_INTERNET );
-        aTextArray.AppendL( *bufPtr );
-        CleanupStack::PopAndDestroy( bufPtr );
-        bufPtr = NULL;
-        item.iIndex = index;
-        item.iCallType = EPhCltCallVoIP;
-        aMappingList.AppendL( item );
-        index++;
-        }
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::FillListQueryItemsL() End");
-    }
-
-
-/** not tested **/
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::LaunchNoNetSupNoteL
-// 
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::LaunchNoNetSupNoteL()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchNoNetSupNoteL() Begin");
-    HBufC* string = StringLoader::LoadLC( R_CALLUI_NO_VIDEO_NETWORK );  
-
-    CAknInformationNote* dlg = new ( ELeave ) CAknInformationNote( EFalse );
-    dlg->ExecuteLD( *string );
-    dlg = NULL;
-
-    CleanupStack::PopAndDestroy( string );
-    string = NULL;
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchNoNetSupNoteL() End");
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::LaunchReconConfQueryL
-// 
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::LaunchReconConfQueryL( 
-    MCaUiReconnectQueryObserver& aObserver,
-    CPhCntMatcher* aPhCntMatcher,
-    const TPtrC aPhoneNumber,
-    const TBool aIncludeVideoCallOption,
-    const TPtrC aAlias )
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchReconConfQueryL() Begin ");
-    CDesCArray* textArray = new( ELeave ) CDesCArrayFlat( 4 );
-    CleanupStack::PushL( textArray );
-
-    // Delete the old query if exists.
-    CancelReconConfQuery();
-    
-    // Create new active object to handle query results.
-    iReconActObject = CCaUiGlnActiveObject::NewL( 
-        aObserver,
-        aPhCntMatcher,
-        aPhoneNumber,
-        aAlias );
-
-    CCaUiTIntArray* objectArray = iReconActObject->ReconQueryOptionsArray();
-    
-    // Pointer for strings to be loaded.
-    HBufC* bufPtr = NULL;
-
-    // Voice call option.
-    bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_LIST_ITEM_VOICE );
-    textArray->AppendL( *bufPtr );
-    CleanupStack::PopAndDestroy( bufPtr );
-    bufPtr = NULL;
-    objectArray->AppendL( CCaUiGlnActiveObject::ECaUiVoiceCall );
-
-    // Video call option is included only if it is wanted.
-    if ( aIncludeVideoCallOption )
-        {
-        bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_LIST_ITEM_VIDEO );
-        textArray->AppendL( *bufPtr );
-        CleanupStack::PopAndDestroy( bufPtr );
-        bufPtr = NULL;
-        objectArray->AppendL( CCaUiGlnActiveObject::ECaUiVideoCall );
-        }
-
-#ifndef RD_UNIFIED_EDITOR
-    // MMS option.
-    if (FeatureManager::FeatureSupported(KFeatureIdMMS))
-        {   
-        bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_LIST_ITEM_MMS  );
-        textArray->AppendL( *bufPtr );
-        CleanupStack::PopAndDestroy( bufPtr );
-        bufPtr = NULL;
-        objectArray->AppendL( CCaUiGlnActiveObject::ECaUiMms );
-        }
-
-    // SMS option.
-    bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_LIST_ITEM_SMS  );
-    textArray->AppendL( *bufPtr );
-    CleanupStack::PopAndDestroy( bufPtr );
-    bufPtr = NULL;
-    objectArray->AppendL( CCaUiGlnActiveObject::ECaUiSms );
-
-#else  
-    // Send message option.
-    bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_LIST_ITEM_MESSAGE  );
-    textArray->AppendL( *bufPtr );
-    CleanupStack::PopAndDestroy( bufPtr );
-    bufPtr = NULL;
-    objectArray->AppendL( CCaUiGlnActiveObject::ECaUiMsg );
-#endif // RD_UNIFIED_EDITOR
-
-    // Load query header.
-    bufPtr = StringLoader::LoadLC( R_CALLUI_RECONNECT_QUERY_HEADER  );
-    iReconListQuery->SetHeadingL( *bufPtr ); // Set query heading.
-    CleanupStack::PopAndDestroy( bufPtr );
-    bufPtr = NULL;
-
-    // Show query.
-    iReconActObject->SetActive();
-    iReconListQuery->ShowListQueryL( textArray, iReconActObject->iStatus );
-
-    CleanupStack::PopAndDestroy( textArray );
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchReconConfQueryL() End ");
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::CancelReconConfQuery
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::CancelReconConfQuery()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::CancelReconConfQuery() Begin ");
-    // Cancel the earlier query if exists.
-    if( iReconListQuery )
-        {
-        iReconListQuery->CancelListQuery();
-        }
-
-    // Cancel the active object.
-    if( iReconActObject )
-        {
-        if ( iReconActObject->IsActive() )
-            {
-            iReconActObject->Cancel();
-            }
-        }
-    iReconfQueryOngoing = EFalse;
-    delete iReconActObject;
-    iReconActObject = NULL;
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::CancelReconConfQuery() End ");
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::CancelNoteAndReconConfQuery
-// 
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::CancelNoteAndReconConfQuery()
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::CancelNoteAndReconConfQuery() Begin ");
-    // Delete reconnection query information.
-    delete iReConQueryInformation;
-    iReConQueryInformation = NULL;
-
-    // Cancel Note timer if exists.
-    if ( iNoteTimer )
-        {
-        // Cancel note timer.
-        iNoteTimer->Cancel();
-        }
-
-    // Cancel the reconnect query if exists.
-    if( iReconListQuery )
-        {
-        iReconListQuery->CancelListQuery();
-        }
-
-    // Cancel the active object.
-    if( iReconActObject )
-        {
-        if ( iReconActObject->IsActive() )
-            {
-            iReconActObject->Cancel();
-            }
-        }
-
-    delete iReconActObject;
-    iReconActObject = NULL;
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::CancelNoteAndReconConfQuery() End ");
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::LaunchNoteAndReconConfQueryL
-// 
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::LaunchNoteAndReconConfQueryL( 
-    MCaUiReconnectQueryObserver& aObserver,
-    CPhCntMatcher* aPhCntMatcher,
-    const TPtrC aPhoneNumber,
-    const TBool aIncludeVideoCallOption,
-    const TPtrC aNoteText,
-    const TPtrC aAlias )
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchNoteAndReconConfQueryL() Begin ");
-    iReconfQueryOngoing = ETrue;
-    delete iReConQueryInformation;
-    iReConQueryInformation = NULL;
-    iReConQueryInformation = new ( ELeave ) CCaUiReConQueryInformation(
-        aObserver,
-        aPhCntMatcher,
-        aPhoneNumber,
-        aIncludeVideoCallOption,
-        aAlias );
-
-    HBufC* string = NULL;
-    TInt noteTextLength = aNoteText.Length();
-
-    // Use either given note string or the qtn.tel.no.video.network string.
-    if ( noteTextLength )
-        {
-        string = HBufC::NewLC( noteTextLength );
-        string->Des() = aNoteText;
-        }
-    else
-        {
-        string = StringLoader::LoadLC( R_CALLUI_NO_VIDEO_NETWORK );
-        }
-
-    if ( !iInfoNote )
-        {
-        iInfoNote = new ( ELeave ) CAknInformationNote( EFalse );
-        iInfoNote->SetTimeout( CAknNoteDialog::ELongTimeout );
-        iInfoNote->ExecuteLD( *string );
-        }
-    
-    // Start note wait timer.
-    if ( !iNoteTimer )
-        {
-        iNoteTimer = CPeriodic::NewL( CActive::EPriorityStandard );
-        }
-    iNoteTimer->Cancel();
-    iNoteTimer->Start(
-        KCaUiEngNoteTimeout, 
-        KCaUiEngNoteTimeout,
-        TCallBack( DoPerformNoteLaunchCallBackL, this ) );
-
-    CleanupStack::PopAndDestroy( string );
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::LaunchNoteAndReconConfQueryL() End");
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CCaUiDialogs::DoPerformNoteLaunchCallBackL
-// 
-//
-// -----------------------------------------------------------------------------
-//
-TInt CCaUiDialogs::DoPerformNoteLaunchCallBackL( TAny* aAny )
-    {
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::DPNoteLaunchCallBackL() Begin");
-
-    CCaUiDialogs* self = static_cast< CCaUiDialogs* >( aAny );
-
-    if ( self )
-        {
-        if ( self->iNoteTimer )
-            {
-            // Cancel note timer.
-            self->iNoteTimer->Cancel();
-            }
-
-        if ( self->iInfoNote )
-            {
-            // Information note still displayed
-            return KErrNone;
-            }
-
-        if ( self->iReConQueryInformation && self->IsReconfQueryOngoing() )
-            {
-            // Launch reconnect query.
-            self->LaunchReconConfQueryL(
-                self->iReConQueryInformation->iObserver,
-                self->iReConQueryInformation->iPhCntMatcher,
-                self->iReConQueryInformation->iPhoneNumber,
-                self->iReConQueryInformation->iIncludeVideoCallOption,
-                self->iReConQueryInformation->iAlias );
-            }
-
-        delete self->iReConQueryInformation;
-        self->iReConQueryInformation = NULL;
-        }
-    CAUILOGSTRING("CALLUI: >>>CCaUiDialogs::DPNoteLaunchCallBackL() end");
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiEngine::IsReconfQueryOngoing
-// 
-//
-// -----------------------------------------------------------------------------
-//
-TBool CCaUiDialogs::IsReconfQueryOngoing()
-    {
-    return iReconfQueryOngoing;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCaUiEngine::IsReconfQueryOngoing
-// 
-//
-// -----------------------------------------------------------------------------
-//
-void CCaUiDialogs::SetReconfQueryOngoing( const TBool aOngoing )
-    {
-    iReconfQueryOngoing = aOngoing;
-    }