voiceui/vcommand/src/vcgenericview.cpp
branchRCL_3
changeset 18 cad71a31b7fc
parent 17 8ce15fced3a6
child 19 e36f3802f733
--- a/voiceui/vcommand/src/vcgenericview.cpp	Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,587 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Generic view class for vcommand app
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <AknQueryDialog.h>
-#include <aknnotewrappers.h>
-#include <featmgr.h>
-#include <StringLoader.h>
-#include <AknGlobalNote.h>
-#include <AknWaitDialog.h>
-#include <hlplch.h>
-
-#include <ctsydomainpskeys.h>
-
-#include <vcommand.rsg>
-#include "vcappui.h"
-#include "vcgenericview.h"
-#include "vcfolderview.h"
-#include "vcgenericcontainer.h" 
-#include "vcommandconstants.h"
-#include "vcommand.hrh"
-#include "vcommandconstants.h"
-#include "vcplaybackdialog.h"
-#include "voiceuibldvariant.hrh"
-
-#include <vcommanddomaincrkeys.h>
-#include <centralrepository.h>
-
-#include <coemain.h>
-#include <apgcli.h>
-#include <apgtask.h>
-#include <apacmdln.h>
-
-#include "rubydebug.h"
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::CVCGenericView
-// C++ constructor
-// ----------------------------------------------------------------------------
-//
-CVCGenericView::CVCGenericView( CVCModel& aModel ): 
-    iModel( aModel )
-    {   
-    }
- 
-// ----------------------------------------------------------------------------
-// CVCGenericView::ConstructL
-// Two-phased constructor
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::ConstructL( TInt aResourceId ) 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::ConstructL" );
-    
-    BaseConstructL( aResourceId );
-    SetFolderTitleL( KNullDesC() );
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::~CVCGenericView
-// Destructor
-// ----------------------------------------------------------------------------
-//
-CVCGenericView::~CVCGenericView() 
-    {
-    delete iFolderName;
-    
-    if( iContainer ) 
-        {  
-        AppUi()->RemoveFromStack( iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// TUid CVCGenericView::Id
-// ----------------------------------------------------------------------------
-//
-TUid CVCGenericView::Id() const 
-    {
-    return KUidVCMainView;
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::HandleCommandL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::HandleCommandL( TInt aCommand ) 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::HandleCommandL" );
-    
-    // We will only handle one event at a time
-    if( !iContainer->IsHandlingKeyPressInProgress() )
-        {
-        iContainer->SetHandlingKeyPressInProgress( ETrue );
-        DoHandleCommandL( aCommand );
-        iContainer->SetHandlingKeyPressInProgress( EFalse );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::DoHandleCommandL
-// ----------------------------------------------------------------------------
-//
-// Defines basic operations for listbox items. Those operations are: opening a folder,
-// editing an item, playing an item and launching help. More sophisticated features
-// can be defined in inherited classes.
-//
-void CVCGenericView::DoHandleCommandL( TInt aCommand ) 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::DoHandleCommandL" );
-    
-    switch ( aCommand ) 
-        {
-        case EAknSoftkeySelect: // Middle softkey
-            {
-            TInt current( iContainer->CurrentSelection() );
-            
-            // Msk can be pressed before the listbox is populated in which case
-            // we ignore the key press
-            if( current != KErrNotFound )
-                {
-                if( iContainer->IsItemFolderL( current ) )
-                    {
-                    DoHandleCommandL( EVCCmdOpen );
-                    }
-                else
-                    {
-                    DoHandleCommandL( EVCCmdEdit );
-                    }                
-                }
-            
-            break;
-            }
-        
-        case EAknSoftkeyExit: // exit the application
-            {
-            static_cast<CVCAppUi*>( iEikonEnv->AppUi() )->ExitProgram();
-            break;
-            }
-      
-        case EAknSoftkeyBack: // back to main view from folder
-            {
-#ifdef __VCOMMAND_CONTROL_PANEL
-            if( Id() == KUidVCMainView )
-                {
-                static_cast<CVCAppUi*>( iEikonEnv->AppUi() )->ExitProgram();
-                break; 
-                }
-            else // Id() == KUidVCFolderView
-                {
-                AppUi()->ActivateLocalViewL( KUidVCMainView );
-                break;
-                }
-#else
-            AppUi()->ActivateLocalViewL( KUidVCMainView );
-            break;
-#endif
-            }
-      
-        case EVCCmdOpen: // open folder
-            {
-            TInt current = iContainer->CurrentSelection();
-            static_cast <CVCFolderView*>
-                ( AppUi()->View( KUidVCFolderView ) )
-                ->SetFolderTitleL( iContainer->GetFolderTitle( current ) );
-            // Store the focused folder. Used when returning from folder view.
-            iFocusedIndex = current;
-            AppUi()->ActivateLocalViewL( KUidVCFolderView );
-            
-            break; 
-            }
-
-        case EVCCmdEdit: // edit voice command extra text
-            {
-            TRAPD(err,  iContainer->ShowEditTextL() );
-            if ( err == KErrNoMemory || err == KErrDiskFull ) User::Leave(err);
-            break;
-            }
-
-        case EVCCmdPlayback: // playback voice command
-            {
-            TRAP_IGNORE( PlaybackVoiceCommandL() );
-            break;
-            }
-
-        case EVCCmdDelete: // delete a voice command
-            {
-            TRAP_IGNORE( iContainer->DeleteVCommandL() );
-            break;
-            }
-     
-        case EVCCmdSettings: // modify settings
-            {
-            iFocusedIndex = iContainer->CurrentSelection();
-            AppUi()->ActivateLocalViewL( KUidVCSettingsView );
-            break;
-            }
-   
-        case EVCCmdStartVui: // start  in tutorial mode
-            {
-            TRAP_IGNORE( LaunchDemoVoiceUiL() );
-            break;
-            }
-        
-        case EAknCmdHelp: // launch help dialog 
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), 
-                                                 AppUi()->AppHelpContextL() );
-            break;
-            }
-        
-        case EVCCmdRemove: // item can not be removed
-            {
-            CannotDeleteNoteL();
-            break;
-            }
-            
-        case EVCCmdIgnore:
-            {
-            break; // do nothing
-            }
-        
-        default: 
-            {
-            AppUi()->HandleCommandL( aCommand );
-            break;
-            }
-        }      
-    }   
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::LaunchDemoVoiceUiL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::LaunchDemoVoiceUiL() const
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::LaunchDemoVoiceUiL" );
-
-    CRepository* client = CRepository::NewLC( KCRUidVCommandSettings );
-    User::LeaveIfError( client->Set( KVuiDemoMode, ETrue ) );
-    CleanupStack::PopAndDestroy( client );
-
-    TApaTaskList apaTaskList( CCoeEnv::Static()->WsSession() );
-    TApaTask apaTask = apaTaskList.FindApp( KVoiceUiUid );
-    
-    if ( apaTask.Exists() )
-        {
-        apaTask.BringToForeground();
-        }
-    else
-        {
-        RApaLsSession apaLsSession;
-        User::LeaveIfError( apaLsSession.Connect() );
-        
-        TApaAppInfo appInfo;
-        User::LeaveIfError( apaLsSession.GetAppInfo( appInfo, KVoiceUiUid ) );
-        
-        TFileName appName = appInfo.iFullName;
-        CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC();
-
-        apaCommandLine->SetExecutableNameL( appName );
-        apaCommandLine->SetCommandL( EApaCommandRunWithoutViews );
-        User::LeaveIfError ( apaLsSession.StartApp( *apaCommandLine ) );
-        CleanupStack::PopAndDestroy( apaCommandLine );
-    
-        apaLsSession.Close();
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CVCGenericView::CheckMiddleSoftkeyLabelL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::SetMiddleSoftkeyLabelL( TInt aIndex ) const
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::SetMiddleSoftkeyLabelL" );
-    
-    RemoveCommandFromMSK();
-    
-    if( iModel.Count() == 0 )
-        {
-        DoSetMiddleSoftKeyLabelL( R_TEXT_SOFTKEY_EMPTY, EVCCmdIgnore );
-        }
-    else if( iContainer->IsItemFolderL( aIndex ) )
-        {
-        DoSetMiddleSoftKeyLabelL( R_QTN_VC_OPEN, EVCCmdOpen );
-        }
-    else
-        {
-        DoSetMiddleSoftKeyLabelL( R_QTN_VC_EDIT, EVCCmdEdit );
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CVCGenericView::SetMiddleSoftKeyLabelL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::DoSetMiddleSoftKeyLabelL( const TInt aResourceId,
-                                               const TInt aCommandId  ) const
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::DoSetMiddleSoftKeyLabelL" );
-    
-    CEikButtonGroupContainer* cbaGroup = Cba();
-    if ( cbaGroup )
-        {
-        HBufC* mskText = StringLoader::LoadLC( aResourceId );
-        TPtr mskPtr = mskText->Des();
-        cbaGroup->AddCommandToStackL( KVcMskControlID, aCommandId, mskPtr );
-        CleanupStack::PopAndDestroy( mskText );
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CVCGenericView::RemoveCommandFromMSK
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::RemoveCommandFromMSK() const
-    {
-    if ( Cba() )
-        {
-        Cba()->RemoveCommandFromStack( KVcMskControlID, EVCCmdOpen );
-        Cba()->RemoveCommandFromStack( KVcMskControlID, EVCCmdEdit );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::HandleClientRectChange
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::HandleClientRectChange() 
-    {
-    if ( iContainer ) 
-        {
-        iContainer->SetRect( ClientRect() );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::DoActivateL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::DoActivateL( const TVwsViewId& aPrevViewId,
-                                  TUid, const TDesC8& ) 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::DoActivateL" );
-    
-    if( !iContainer ) 
-        {
-        iContainer = new ( ELeave ) CVCGenericContainer( MenuBar(), iModel, *this );
-        iContainer->SetMopParent( this );
-        iContainer->ConstructL( ClientRect() );
-        AppUi()->AddToStackL( *this, iContainer );
-        
-        iContainer->ActivateL();
-        }
-    
-    // Returning from folder or settings view
-    if( aPrevViewId.iViewUid.iUid == KUidVCFolderView.iUid ||
-        aPrevViewId.iViewUid.iUid == KUidVCSettingsView.iUid )
-        {
-        // Set the focus on the folder that was opened previously
-        iContainer->SetCurrentSelection( iFocusedIndex );
-        }
-    
-    // Set msk label  
-    SetMiddleSoftkeyLabelL( iContainer->CurrentSelection() );
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::DoDeactivate
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::DoDeactivate() 
-    {
-    if( iContainer ) 
-        {
-        AppUi()->RemoveFromStack( iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-    
-
-// ----------------------------------------------------------------------------
-//  CVCGenericView::DynInitMenuPaneL
-// ----------------------------------------------------------------------------
-void CVCGenericView::DynInitMenuPaneL( TInt aResourceId,
-                                       CEikMenuPane* aMenuPane ) 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::DynInitMenuPaneL" );
-    
-    if( aMenuPane ) 
-        {   
-        // Check which menu item we are handling
-        if( aResourceId == R_VCOMMAND_MENU ) 
-            {
-            // if help is not enabled, do not show "help"
-            if( !FeatureManager::FeatureSupported( KFeatureIdHelp ) ) 
-                {
-                aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue );
-                }
-                
-            TInt listBoxIndex( iContainer->CurrentSelection() );
-            
-            if( listBoxIndex >= 0 )
-                {
-                TBool isFolder = iContainer->IsItemFolderL( listBoxIndex );
-
-                if( isFolder ) // Folder is highlighted.
-                    {
-                    aMenuPane->SetItemDimmed( EVCCmdPlayback, ETrue );
-                    aMenuPane->SetItemDimmed( EVCCmdEdit, ETrue );
-                    aMenuPane->SetItemDimmed( EVCCmdDelete, ETrue );
-                    }
-                else // Folder is not highlighted.
-                    { 
-                    aMenuPane->SetItemDimmed( EVCCmdOpen, ETrue );
-                    
-                    // Show delete item only if the command is user edited
-                    TDesC* secondRow = iContainer->GetSecondRowNameLC(
-                                       iContainer->CurrentSelection() );
-                    if( secondRow->Length() == 0 )
-                        {
-                        aMenuPane->SetItemDimmed( EVCCmdDelete, ETrue );
-                        }
-                    CleanupStack::PopAndDestroy( secondRow );
-                    }                
-                }
-            else // No items in listbox
-                {
-                aMenuPane->SetItemDimmed( EVCCmdPlayback, ETrue );
-                aMenuPane->SetItemDimmed( EVCCmdEdit, ETrue );
-                aMenuPane->SetItemDimmed( EVCCmdDelete, ETrue );
-                aMenuPane->SetItemDimmed( EVCCmdOpen, ETrue );
-                }
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-//  CVCGenericView::PlaybackVoiceCommandL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::PlaybackVoiceCommandL() 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::PlaybackVoiceCommandL" );
-    
-    CVCAppUi* appUi = static_cast <CVCAppUi*> ( iEikonEnv->AppUi() );
-    
-    TInt state = appUi->CheckCallStateL();
-    TBool videoCallState = appUi->IsVideoCallL();
-    
-    if( ( state == EPSCTsyCallStateNone || state == EPSCTsyCallStateUninitialized ||
-           state == EPSCTsyCallStateHold || state == KErrNotFound ) && !videoCallState ) 
-        {        
-        TInt listboxIndex = iContainer->CurrentSelection();
-        TDesC* listboxItem = iContainer->GetFirstRowNameLC( listboxIndex );
-        
-        const CVCommandUiEntry& vcommand = iModel.GetVCommandL( *listboxItem );
-        CleanupStack::PopAndDestroy( listboxItem );
-        
-        CVCPlaybackDialog* dlg = new (ELeave) CVCPlaybackDialog(
-            iModel.Service(), vcommand );
-        dlg->PrepareLC( R_PLAYBACK_VOICE_COMMAND_DIALOG );
-        dlg->RunLD();
-        dlg = NULL;
-        }
-    else 
-        {
-        // Display call in progress note
-        appUi->CallInProgressNoteL();
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CVCGenericView::CannotDeleteNoteL
-// ----------------------------------------------------------------------------
-//
-void CVCGenericView::CannotDeleteNoteL() 
-    {
-    RUBY_DEBUG_BLOCKL( "CVCGenericView::CannotDeleteNoteL" );
-    
-    TDesC* name;
-    name = iContainer
-        ->GetSecondRowNameLC( iContainer->CurrentSelection() );
-    
-    if( name->Length() == 0 )
-        {
-        CleanupStack::PopAndDestroy( name );
-        name = iContainer
-            ->GetFirstRowNameLC( iContainer->CurrentSelection() );
-        }
-    
-    HBufC* stringholder = StringLoader::LoadL( R_QTN_VC_INFO_CANNOT_DEL,
-                                               *name, iEikonEnv );
-    CleanupStack::PopAndDestroy( name );
-    CleanupStack::PushL( stringholder );
-    
-    CAknNoteWrapper* note = new ( ELeave ) CAknNoteWrapper();
-    note->ExecuteLD( R_CANNOT_DELETE_NOTE, *stringholder );
-    CleanupStack::PopAndDestroy( stringholder );
-    }
-    
-// -----------------------------------------------------------------------------
-// CVCGenericView::HandleSizeChange
-// Handle screen size change.
-// -----------------------------------------------------------------------------
-//
-void CVCGenericView::HandleSizeChange() 
-    {
-    if (iContainer) 
-        {
-        TRect genericPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, genericPaneRect );
-        iContainer->SetRect( genericPaneRect );
-        }
-    }    
-
-// -----------------------------------------------------------------------------
-// CVCGenericView::FolderTitle
-// Returns the title of the view's active folder.
-// -----------------------------------------------------------------------------
-//
-const TDesC& CVCGenericView::FolderTitle() const 
-    {
-    return *iFolderName;
-    }
-
-// -----------------------------------------------------------------------------
-// CVCGenericView::SetFolderTitleL
-// -----------------------------------------------------------------------------
-//
-void CVCGenericView::SetFolderTitleL( const TDesC& aNewName ) 
-    {
-    delete iFolderName;
-    iFolderName = NULL;
-    iFolderName = aNewName.AllocL();    
-    }
-
-// -----------------------------------------------------------------------------
-// CVCGenericView::RefreshViewL
-// -----------------------------------------------------------------------------
-//   
-void CVCGenericView::RefreshViewL()
-    {
-    // This is the focused view
-    if( iContainer )
-        {
-        CVCommandUiEntryArray* oldCommands = iModel.VCommandArrayL();
-        CleanupStack::PushL( oldCommands );
-
-        // Update model
-        iModel.LoadVCommandsL();
-            
-        CVCommandUiEntryArray* newCommands = iModel.VCommandArrayL();
-        CleanupStack::PushL( newCommands );
-    
-        iContainer->RefreshListboxL( *oldCommands, *newCommands );
-    
-        CleanupStack::PopAndDestroy( newCommands );
-        CleanupStack::PopAndDestroy( oldCommands );  
-        }
-    }
-
-// End of File