textinput/peninputhwrtrui/src/truishortcutscontainer.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/textinput/peninputhwrtrui/src/truishortcutscontainer.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1010 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Implement of class CTruiShortcutsContainer
-*
-*/
-
-
-#include <barsread.h>
-#include <aknnavide.h>
-#include <akntabgrp.h>
-#include <eikspane.h>
-#include <aknViewAppUi.h>
-#include <aknlists.h>
-#include <AknIconArray.h>
-#include <eikclbd.h>
-#include <trui.rsg>
-#include <StringLoader.h>
-#include <trui_icons.mbg>
-#include <AknIconUtils.h>
-#include <gulicon.h> 
-#include <akntextsettingpage.h>
-#include <AknQueryDialog.h>  
-#include <AknPreviewPopUpController.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <akntoolbar.h>
-#include <aknbutton.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <biditext.h>
-
-#include "truicontainerbase.h"
-#include "truishortcutscontainer.h"
-#include "truimainview.h"
-#include "truiengine.h"
-#include "truiappui.h"
-#include "truiengine.h"
-#include "truishortcuteditview.h"
-#include "trui.hrh"
-#include "truiapplication.h"
-#include "truihelp.h"
-#include "truihwrbox.h"
-#include "truishortcutedittextview.h"
-#include "truiinfomessageview.h"
-#include "truishortcutsview.h"
-
-_LIT( KTRUIICONSFILENAME, "\\resource\\apps\\trui_icons.mif" );
-
-// Initialized size for item array
-const TInt KItemArraySize = 1;
-
-// Initialized size for icon array
-const TInt KIconArraySize = 3;
-
-// listbox item format string
-_LIT( KListItemWithPicFormat, "1\t%S\t\t" );
-_LIT( KListItemFormat, "\t%S\t\t" );
-    
-// Delay time of showing tooltip
-const TTimeIntervalMicroSeconds32 KTooltipShowDelay = 1000000;
-
-// Delay time of hiding tooltip
-const TTimeIntervalMicroSeconds32 KTooltipHideDelay = 3000000;
-
-// Rect of popup hwrbox
-const TRect KPopupHwrBoxRect = TRect( TPoint( 0, 0 ), TSize( 75, 75 ) );
-
-const TPoint KPopupHwrBoxPosLandscape = TPoint( 479, 360 );
-const TPoint KPopupHwrBoxPosPortrait = TPoint( 337, 500 );
-
-const TInt KPopupWindowVarity = 0;
-
-const TInt KParaDelimiterSize = 1;
-_LIT( KParaDelimiterFormat, "%c" );
-    
-// ======== MEMBER FUNCTIONS ========
-
-CTruiShortcutsContainer::CTruiShortcutsContainer()
-    {  
-    }
-    
-void CTruiShortcutsContainer::ConstructL( const TRect& aRect )
-    {
-    // Initialize control array
-    InitComponentArrayL();
-        
-    // Set parent control or owning window
-    CreateWindowL();   
-    
-    // Load shortcuts
-    iEngine->UpdateShortcutListL();
-    
-    // Initialize controls
-    InitializeControlsL();
-    SetRect( aRect );
-                
-    // Set default selected index
-    iListBox->SetCurrentItemIndex( iEngine->CurrentSelectedIndex() );
-               
-    HandleListBoxFocusChangedL( CurrentItemIndex() );
-    
-    ActivateL();    
-    }
-    
-CTruiShortcutsContainer* CTruiShortcutsContainer::NewL( const TRect& aRect )
-    {
-    CTruiShortcutsContainer* self = CTruiShortcutsContainer::NewLC( aRect );
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-CTruiShortcutsContainer* CTruiShortcutsContainer::NewLC
-                                                  ( const TRect& aRect )
-    {
-    CTruiShortcutsContainer* self = new (ELeave) CTruiShortcutsContainer();
-    CleanupStack::PushL( self );
-    self->ConstructL( aRect );
-    return self;
-    }
-    
-CTruiShortcutsContainer::~CTruiShortcutsContainer()
-    {    
-    delete iPopupController;     
-    delete iHwrBox;
-    }
-    
-// ---------------------------------------------------------------------------
-// Create controls to be displayed in this container.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::InitializeControlsL()
-    {
-    // Create toolbar
-    CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar();
-    // Get Clear button from toolbar    
-    CAknButton* deleteButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdDelete ) );
-
-    // Create listbox
-    CreateListBoxL();
-    
-    // Create preview popup window
-    iPopupController = CreatePopupHwrBoxL();    
-    }
-            
-// ---------------------------------------------------------------------------
-// From class CCoeControl.
-// Responds to changes to the size and position of the contents of this control.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::SizeChanged()
-    {
-    if ( iListBox )
-        {
-        iListBox->SetRect( Rect() );
-        }    
-    
-    // caculate main pane
-    TRect rect = Rect();    
-    TAknWindowComponentLayout main_pane_layout = 
-                            AknLayoutScalable_Apps::main_hwr_training_pane();
-    TAknLayoutRect main_pane_layout_rect;
-    main_pane_layout_rect.LayoutRect( rect, main_pane_layout );
-    TRect main_pane_rect = main_pane_layout_rect.Rect();
-    
-    // Calculate popup_hwr_training_preview_window
-    TAknWindowComponentLayout preview_popup_layout = 
-               AknLayoutScalable_Apps::popup_hwr_training_preview_window
-                                                     ( KPopupWindowVarity );
-    TAknLayoutRect preview_popup_layout_rect;
-    preview_popup_layout_rect.LayoutRect( main_pane_rect, preview_popup_layout );    
-    
-    iHwrBox->SetSize( preview_popup_layout_rect.Rect().Size() );
-    
-    TPoint itemPos = PopupWindowPosition( CurrentItemIndex() );
-    iPopupController->SetPosition( itemPos );
-    }       
-
-// ---------------------------------------------------------------------------
-// From class CCoeControl.
-// This is called whenever the control gains or loses focus, 
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::FocusChanged( TDrawNow /*aDrawNow*/ )
-    {
-    if ( IsFocused() )
-        {        
-        if ( iDisplayPopupWindow )
-            {            
-            TRAPD( err, CheckAndPreviewShortcutModelL( CurrentItemIndex() ) );
-            if ( err != KErrNone )
-                {
-                iDisplayPopupWindow = EFalse;
-                }
-            }
-        }
-    else
-        {        
-        // Close pupup preview window
-        iPopupController->HidePopUp();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class CCoeControl.
-// Handles pointer events.
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent )
-    {
-    iPenDownPoint = aPointerEvent.iPosition;
-    CCoeControl::HandlePointerEventL( aPointerEvent );    
-    }
-    
-// ---------------------------------------------------------------------------
-// Popup the TextSettingPage and added the new shortcut to ListBox.
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::AddShortcutL()
-    {    
-    iEngine->NewShortcut( ETrue );
-    iEngine->SetShortcut( KNullDesC );
-    // Get always display setting from ini file
-    TInt isNotDisplayWizard = 0;
-    TRAPD( err, GetSettingFromIniFileL( KAlwaysDisplayWizardKey, isNotDisplayWizard ) );
-    if ( err != KErrNone )
-        {
-        isNotDisplayWizard = 0;
-        }
-        
-    if ( isNotDisplayWizard )
-        {
-        iEngine->SetDisplayWizard( EFalse );
-        iAppUi->ActivateLocalViewL( KTruiShortcutEditTextViewId );
-        }
-    else
-        {
-        iEngine->SetDisplayWizard( ETrue );
-        iAppUi->ActivateLocalViewL( KTruiInfoMessageViewId );
-        }    
-    }
-
-// ---------------------------------------------------------------------------
-// Edit shortcut
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::EditShortcutL( TBool aOnlyEditText )
-    {
-    CDesCArray* shortcutlist = iEngine->ShortcutTextList();
-    TInt posInEngine = iListBox->CurrentItemIndex() - 1;
-    iEngine->SetShortcut( shortcutlist->MdcaPoint( posInEngine ) );
-    iEngine->NewShortcut( EFalse );
-    // Switch to shortcut edit view 
-    if ( aOnlyEditText )
-        {
-        iAppUi->ActivateLocalViewL( KTruiShortcutEditTextViewId );
-        }
-    else
-        {
-        iAppUi->ActivateLocalViewL( KTruiShortcutEditViewId );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Check if reset introduction
-// ---------------------------------------------------------------------------
-// 
-TBool CTruiShortcutsContainer::IsResetIntroduction()
-    {
-    TInt value = 0;
-    TRAPD( err, GetSettingFromIniFileL( KAlwaysDisplayWizardKey, value ) );
-    if ( err != KErrNone )
-        {
-        value = 0;
-        }
-    return value ? ETrue: EFalse;
-    }    
-
-// ---------------------------------------------------------------------------
-// Reset introduction
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::ResetIntroductionL()
-    {
-    SaveSettingIntoIniFileL( KAlwaysDisplayWizardKey, 0 );
-    iAppUi->ActivateLocalViewL( KTruiInfoMessageViewId );
-    }
-    
-// ---------------------------------------------------------------------------
-// From MEikListBoxObserver
-// Handle event from an listbox
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-                                                  TListBoxEvent aEventType )
-    {       
-    switch( aEventType )
-        {
-        case EEventPenDownOnItem:
-            {            
-            iPopupController->HidePopUp();
-            // Check index
-            TInt index = CurrentItemIndex();
-            iListBox->View()->XYPosToItemIndex( iPenDownPoint, index );
-            // Popup preview window
-            HandleListBoxFocusChangedL( index );
-            }
-            break;
-        case EEventItemClicked:
-            {
-            break;
-            }
-        case EEventItemDoubleClicked:
-            {            
-            if ( CurrentItemIndex() > 0 )
-                {
-                if ( MarkCount() == 0 )
-                    {
-                    // Pop context menu
-                    PopupContextMenuL( R_TRUI_SHORTCUTSVIEW_CONTEXT_MENUBAR );
-                    }
-                }
-            else
-               {                
-               // Tap on "New shortcut"
-               AddShortcutL();
-               }
-            // Set the current index into engine
-            // Update toolbar button's status
-            break;
-            }
-        case EEventItemDraggingActioned:
-            {            
-            iPopupController->HidePopUp();            
-            TInt index = CurrentItemIndex();
-            iListBox->View()->XYPosToItemIndex( iPenDownPoint, index );
-            // Popup preview window
-            HandleListBoxFocusChangedL( index );
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class CCoeControl.
-// Handles key event.
-// ---------------------------------------------------------------------------
-//      
-TKeyResponse CTruiShortcutsContainer::OfferKeyEventL
-                                      ( const TKeyEvent& aKeyEvent, 
-                                        TEventCode aType )
-    {
-    if ( aType == EEventKey )
-        {        
-        switch ( aKeyEvent.iCode )
-            {            
-            case EKeyLeftArrow:
-                {                
-                CAknNavigationDecorator* naviDecorator = 
-                                         iAppUi->GetNaviDecorator();
-                CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>
-                                        ( naviDecorator->DecoratedControl() );
-                return tabGroup->OfferKeyEventL( aKeyEvent, aType );   
-                }
-            case EKeyRightArrow:
-                {                
-                return EKeyWasConsumed;
-                }
-            case EKeyUpArrow:
-            case EKeyDownArrow:
-                {
-                if ( iListBox )
-                    {                    
-                    iPopupController->HidePopUp();
-                    TKeyResponse keyResponse = iListBox->OfferKeyEventL
-                                               ( aKeyEvent, aType );
-                    // Set the CBA button
-                    if ( IsMarked( 0 ) )
-                        {
-                        iListBox->SetCurrentItemIndex( 0 );
-                        AknSelectionService::HandleMarkableListProcessCommandL
-                                             ( EAknCmdUnmark, iListBox );
-                        iListBox->SetCurrentItemIndexAndDraw( iEngine->CurrentSelectedIndex() );
-                        }                        
-                    HandleListBoxFocusChangedL( CurrentItemIndex() );
-                    return keyResponse;
-                    }		   
-			    }		
-			case EKeyEnter:
-			case EKeyOK:
-			    {
-			    
-                if ( iListBox != NULL && CurrentItemIndex() == 0 )
-                    {
-                    // Select "Create new shortcut" item
-                    AddShortcutL();
-                    }
-                else
-                    {
-                    if ( MarkCount() == 0 )
-                        {
-                        // Pop context menu
-                        PopupContextMenuL( R_TRUI_SHORTCUTSVIEW_CONTEXT_MENUBAR );
-                        }
-                    }
-                return EKeyWasConsumed;                
-                 }
-            default:
-                break;			    
-            }
-       }    
-    return EKeyWasNotConsumed;    
-    }
-
-// ---------------------------------------------------------------------------
-// Gets the control's help context. Returns a NULL context by default.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KUidtruiApp;
-    aContext.iContext = HWRT_HLP_SHORTCUTS;
-    }
-        
-// ---------------------------------------------------------------------------
-// Delete shortcut from ListBox
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::DeleteItemsL()
-    {
-    CTextListBoxModel* model = iListBox->Model();
-    CDesCArray* itemArray = static_cast<CDesCArray*>( model->ItemTextArray() );
-    if ( MarkCount() > 0 )
-        {
-        // Delete all marked items, ignoring the selected item.
-        RArray<TInt> selectionIndexes;
-        CleanupClosePushL( selectionIndexes );
-        const CArrayFix<TInt>* indexArray = iListBox->SelectionIndexes();
-        TInt indexArrayLen = indexArray->Count();
-        
-        // Copy the selection indexes array into RArray<TInt>
-        for ( TInt i = 0; i < indexArrayLen; i++ )
-            {
-            selectionIndexes.Append( ( *indexArray )[i] );
-            }
-        selectionIndexes.Sort();
-        // Delete all marked items    
-        TInt selectionCount = selectionIndexes.Count();                    
-        for ( TInt i = selectionCount - 1; i >= 0; i-- )
-            {   
-            // Delete item from Engine
-            TInt itemArrayIndex = selectionIndexes[i];
-            CDesCArray* shortcutList = iEngine->ShortcutTextList();
-
-            if ( shortcutList )
-                {
-                iEngine->DeleteShortcut( (*shortcutList)[itemArrayIndex-1] );            
-                // Delete the currently selected item from array
-                itemArray->Delete( itemArrayIndex );
-                // Update ListBox
-                AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( iListBox, 
-                                                                        itemArrayIndex,
-                                                                        ETrue);     
-                }        
-            }
-        CleanupStack::PopAndDestroy( &selectionIndexes ); // selectionIndexes           
-        }
-    else
-        {
-        // Delete the currently selected item.
-        // Get the currently selected item
-        TInt selectedIndex = CurrentItemIndex();
-
-        // Delete item from Engine
-        CDesCArray* shortcutList = iEngine->ShortcutTextList();
-        if ( shortcutList )
-            {
-            iEngine->DeleteShortcut( (*shortcutList)[selectedIndex-1] );            
-            // Delete the currently selected item from array
-            itemArray->Delete( selectedIndex );
-            // Update ListBox
-            AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( iListBox, 
-                                                                    selectedIndex,
-                                                                    ETrue);     
-            }        
-    }
-    iListBox->DrawNow();                
-    iEngine->UpdateShortcutListL();
-    // Set the current CBA
-    HandleListBoxFocusChangedL( CurrentItemIndex() );
-    }
-    
-// ---------------------------------------------------------------------------
-// Delete shortcut
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::DeleteShortcutL()
-    {
-    // Popup note dialog
-    CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-    HBufC* prompt = NULL;
-    TInt count = MarkCount();
-    if ( count )
-        {
-        prompt = StringLoader::LoadLC( R_QTN_HWRT_QUERY_DELETE_SEVERAL_SHORTCUTS, count );
-        }
-    else
-        {
-        prompt = StringLoader::LoadLC( R_QTN_HWRT_QUERY_DELETE_SHORTCUT );
-        }
-    
-    if ( dlg->ExecuteLD( R_TRUI_QUERYDIALOG_DELETE_SHORTCUT, *prompt ) )
-        {
-        // press yes 
-        // Delete item from Listbox, also delete from Engine in it.
-        iPopupController->HidePopUp();
-        DeleteItemsL();        
-        }
-    CleanupStack::PopAndDestroy( prompt ); // prompt
-    }
-
-// ---------------------------------------------------------------------------
-// Handle event when listbox change to another focused item.
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::HandleListBoxFocusChangedL( TInt aIndex )
-    {
-    // Set the current index into engine
-    iEngine->SetCurrentSelectedIndex( aIndex );
-    // Update toolbar button's status
-    UpdateToolbarButtonStatus( aIndex );
-    // Draw current item // add this line
-    iListBox->DrawItem( aIndex ); // add this line
-    // Preview shortcut model if it has model.
-    CheckAndPreviewShortcutModelL( aIndex );
-    }
-    
-// ---------------------------------------------------------------------------
-// Mark shortcut
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::MarkShortcutL()
-    {
-    // The first item mustn't be marked
-    TInt currentIndex = CurrentItemIndex();
-    if ( currentIndex != 0 )
-        {
-        AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdMark,
-                                                                iListBox );       
-        }
-        
-    CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar();
-    if ( toolbar )
-        {
-        // Set edit text button's status
-        CAknButton* editTextButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) );
-        editTextButton->SetDimmed( ETrue );
-        editTextButton->DrawNow();
-        // Set edit model button's status
-        CAknButton* editModelButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) );
-        editModelButton->SetDimmed( ETrue );
-        editModelButton->DrawNow();
-        }    
-    }
-    
-// ---------------------------------------------------------------------------
-// Unmark shortcut
-// ---------------------------------------------------------------------------
-//     
-void CTruiShortcutsContainer::UnmarkShortcutL()
-    {
-    // The first item mustn't be unmarked
-    TInt currentIndex = CurrentItemIndex();
-    if ( currentIndex != 0 )
-        {
-        AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdUnmark,
-                                                                iListBox );
-        }
-    if ( MarkCount() == 0 )
-        {
-        CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar();
-        if ( toolbar )
-            {
-            // Set edit text button's status
-            CAknButton* editTextButton = static_cast<CAknButton*>
-                        ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) );
-            editTextButton->SetDimmed( EFalse );
-            editTextButton->DrawNow();
-            // Set edit model button's status
-            CAknButton* editModelButton = static_cast<CAknButton*>
-                        ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) );
-            editModelButton->SetDimmed( EFalse );
-            editModelButton->DrawNow();
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// Return current selected item's index
-// ---------------------------------------------------------------------------
-//
-TInt CTruiShortcutsContainer::CurrentItemIndex()
-    {       
-    return iListBox->CurrentItemIndex();
-    }
-
-// ---------------------------------------------------------------------------
-// Test if the currently selected index is marked
-// ---------------------------------------------------------------------------
-//    
-TBool CTruiShortcutsContainer::IsMarked( TInt aSelectedIndex )
-    {
-    const CArrayFix<TInt>* aIndexArray = iListBox->SelectionIndexes();    
-    for ( TInt index = 0; index < aIndexArray->Count(); index++ )
-        {
-        if ( aSelectedIndex == ( *aIndexArray )[index] )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;        
-    }
-
-// ---------------------------------------------------------------------------
-// Return the count of being marked currently.
-// ---------------------------------------------------------------------------
-// 
-TInt CTruiShortcutsContainer::MarkCount()
-    {
-    const CArrayFix<TInt>* aIndexArray = iListBox->SelectionIndexes();
-    return aIndexArray->Count();
-    }
-
-// ---------------------------------------------------------------------------
-// Create preview popup controller to show popup hwrbox.
-// ---------------------------------------------------------------------------
-// 
-CAknPreviewPopUpController* CTruiShortcutsContainer::CreatePopupHwrBoxL()
-    {   
-    iHwrBox = CTruiHwrBox::NewL( this, NULL );   
-    iHwrBox->SetHwrBoxFlag( CTruiHwrBox::ENoFrameHwrBox 
-                            | CTruiHwrBox::EReadOnlyHwrBox );
-    CAknPreviewPopUpController* popupController =
-                      CAknPreviewPopUpController::NewL
-                      ( *iHwrBox, CAknPreviewPopUpController::EPermanentMode );
-    popupController->AddObserverL( *this );
-    return popupController;
-    }
-
-// ---------------------------------------------------------------------------
-// Show the text tooltip.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::PopupHwrBoxL( const TPoint& aPosition, 
-                           const TTimeIntervalMicroSeconds32& aShowDelay,
-                           const TTimeIntervalMicroSeconds32& aHideDelay )
-    {    
-    if ( iPopupController && iHwrBox )
-        {
-        iPopupController->SetPosition( aPosition );
-        // Set hwrbox's rect to engine and set guiding line to hwrbox
-        iHwrBox->SetDisplayBottomGuideLine( ETrue );
-        if ( iEngine->CurrentLanguageScript() == EMainViewSubmenuHebrew )
-            {
-            iHwrBox->SetDisplayTopGuideLine( ETrue );
-            }        
-        iPopupController->SetPopUpShowDelay( aShowDelay );
-        iPopupController->SetPopUpHideDelay( aHideDelay );
-        iPopupController->ShowPopUp();
-        }
-    }   
-    
-// ---------------------------------------------------------------------------
-// Preview shortcut model in popup hwrbox.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::PreviewShortcutModelL( const TDesC& aShortcutText,
-                                                     TInt aIndex )
-    {
-    // Get shortcut model
-    if ( iEngine->CheckShortcutModel( aShortcutText ) )
-        {        
-        TRAPD( err, iEngine->GetShortcutModelL( aShortcutText, 
-                                                iHwrBox->Model(), 
-                                                iShortcutUnicode ) );
-        if ( err == KErrNone )
-            { 
-            // Popup hwrbox
-            // Get position for popup window
-            TPoint itemPos = PopupWindowPosition( aIndex );            
-            PopupHwrBoxL( itemPos,
-                          KTooltipShowDelay,
-                          KTooltipHideDelay );
-            }
-        }    
-    }
-    
-// ---------------------------------------------------------------------------
-// Called by the preview popup when an appropriate event takes place.
-// ---------------------------------------------------------------------------
-//
-void CTruiShortcutsContainer::HandlePreviewPopUpEventL(
-      CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent )
-    {
-    if ( aController == iPopupController && aEvent == EPreviewPopUpShown )
-        {
-        TSize refSize = CTruiContainerBase::OriginSymbolSize();       
-        iHwrBox->ShowTrails( iHwrBox->Model(), ETrue, refSize );        
-        iDisplayPopupWindow = EFalse;
-        }
-    else
-        {
-        iHwrBox->ClearExistModel();
-        iHwrBox->DrawNow();
-        iDisplayPopupWindow = ETrue;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Create list box to display all shortcut
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::CreateListBoxL()
-    {
-    // listbox instance
-    iListBox = new (ELeave) CAknSingleGraphicStyleListBox;
-    Components().AppendLC( iListBox );
-    CleanupStack::Pop( iListBox ); // iListBox
-    
-    // Construct listbox
-    iListBox->ConstructL( this, EAknListBoxMarkableList ); 
-
-    // Set container control
-    iListBox->SetContainerWindowL( *this );
-    
-    // Set observer
-    iListBox->SetListBoxObserver( this );
-
-    // Add scrollbars to listbox
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
-        CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto );    
-
-    // Get shortcut list from engine
-    CDesCArray* primalList = iEngine->ShortcutTextList();   
-
-    LoadTextArrayL( primalList );
-
-    // construct icon array with granularity 3
-    CArrayPtr<CGulIcon>* iconList = new (ELeave) CAknIconArray( KIconArraySize );
-    CleanupStack::PushL( iconList );
-    CFbsBitmap* bitmap;
-    CFbsBitmap* bitmapm;
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    AknsUtils::CreateColorIconL( skin,
-                                 KAknsIIDQgnIndiMarkedAdd,
-                                 KAknsIIDQsnIconColors,
-                                 EAknsCIQsnIconColorsCG16,
-                                 bitmap,
-                                 bitmapm,
-                                 KTRUIICONSFILENAME,
-                                 EMbmTrui_iconsQgn_indi_marked_add,
-                                 EMbmTrui_iconsQgn_indi_marked_add_mask,
-                                 KRgbBlack
-                                 ); 
-    CleanupStack::PushL( bitmap );
-    CleanupStack::PushL( bitmapm );
-    CGulIcon* iconMark = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered
-    CleanupStack::Pop( bitmapm );
-    CleanupStack::Pop( bitmap );                                   
-    CleanupStack::PushL( iconMark );
-    iconList->AppendL( iconMark );
-    CleanupStack::Pop( iconMark );
-    
-    AknsUtils::CreateIconL( skin,
-                            KAknsIIDQgnPropHwrTrainingShortcut,
-                            bitmap,
-                            bitmapm,
-                            KTRUIICONSFILENAME,
-                            EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_new,
-                            EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_new_mask
-                            );
-    CleanupStack::PushL( bitmap );
-    CleanupStack::PushL( bitmapm );    
-    CGulIcon* iconNew = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered
-    CleanupStack::Pop( bitmapm );
-    CleanupStack::Pop( bitmap );
-    CleanupStack::PushL( iconNew );
-    iconList->AppendL( iconNew );
-    CleanupStack::Pop( iconNew );
-
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray( iconList );
-    
-    CleanupStack::Pop( iconList ); // iconList
-
-    iListBox->SetFocus( ETrue );
-    // update listbox
-    iListBox->ActivateL();    
-    }
-
-// ---------------------------------------------------------------------------
-// Setup text data for listbox
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::LoadTextArrayL( const CDesCArray* aTextArray )
-    {  
-    // Construct listbox item array.
-    // The items in the list contain an option of create new shortcut
-    // and the primal shortcuts from HWR engine
-    CDesCArray* itemList = new (ELeave) CDesCArrayFlat( KItemArraySize ); 
-    CleanupStack::PushL(itemList);
-          
-    TBuf<KShortcutMaxLength> item;    
-    HBufC* newShortcutText = StringLoader::LoadL( R_TRUI_SHORTCUTVIEW_NEW_SHORTCUT );
-    item.Format( KListItemWithPicFormat, newShortcutText );
-    delete newShortcutText;
-    newShortcutText = NULL;
-    itemList->AppendL(item);
-    
-    // if at least one shortcut exists
-     if ( aTextArray )
-        {
-        // Item from WHR engine
-        for ( TInt i=0; i < aTextArray->Count(); i++ )
-            {
-            TBuf<KShortcutMaxLength> itemPrimal;
-            itemPrimal = aTextArray->MdcaPoint(i);
-            item.Format( KListItemFormat, &itemPrimal );
-            TBuf<KParaDelimiterSize> paraDelimiter;
-            paraDelimiter.Format( KParaDelimiterFormat, EKeyEnter );
-            AknTextUtils::ReplaceCharacters( item, paraDelimiter, TChar( EKeySpace ) );          
-            itemList->AppendL( item );
-            }        
-        } 
-    // set items and ownership
-    CleanupStack::Pop( itemList );
-    iListBox->Model()->SetItemTextArray( itemList );
-    iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    iListBox->HandleItemAdditionL();    
-    }
-    
-// ---------------------------------------------------------------------------
-// Popup context menu.
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::PopupContextMenuL( TInt aResourceId )
-    {    
-    // Hide popup preview window
-    iPopupController->HidePopUp();  
-    // Popup context menu  
-    CEikMenuBar* parentMenuBar = iAppUi->View( KTruiShortcutsViewId )->MenuBar();
-    if ( parentMenuBar )
-        {
-        parentMenuBar->SetMenuTitleResourceId( aResourceId );
-        parentMenuBar->SetMenuType( CEikMenuBar::EMenuContext );
-        parentMenuBar->TryDisplayMenuBarL();
-        parentMenuBar->SetMenuTitleResourceId( R_TRUI_SHORTCUTSVIEW_MENUBAR );
-        parentMenuBar->SetMenuType( CEikMenuBar::EMenuOptions );
-        }    
-    }
-
-// ---------------------------------------------------------------------------
-// Get position relative to screen origin for popup window.
-// ---------------------------------------------------------------------------
-// 
-TPoint CTruiShortcutsContainer::PopupWindowPosition( TInt aIndex )
-    {
-    // Place popup window to left-bottom
-    TPoint itemPos = iListBox->View()->ItemPos( aIndex ) 
-                     + iListBox->PositionRelativeToScreen();
-    TSize itemSize = iListBox->View()->ItemSize( aIndex );    
-    itemPos.iY += itemSize.iHeight;
-    
-    // if direction is upforwards.
-    if ( Rect().iBr.iY + iListBox->PositionRelativeToScreen().iY - 
-         ( itemPos.iY + iPopupController->Size().iHeight ) < 0 )
-        {
-        itemPos.iY -= ( itemSize.iHeight + iPopupController->Size().iHeight );
-        }
-        
-    if ( TBidiText::ScriptDirectionality( User::Language() )
-         ==  TBidiText::ELeftToRight )
-        { // None-arabic,hebrew, place popup window to right-bottom
-        itemPos.iX += itemSize.iWidth;
-        // Sub width of scroll bar
-        TInt scrollbarWidth = 0;
-        if ( iListBox->ScrollBarFrame() )
-            {
-            scrollbarWidth = iListBox->ScrollBarFrame()
-                             ->ScrollBarBreadth( CEikScrollBar::EVertical );
-            }
-        itemPos.iX -= scrollbarWidth;
-        }
-    else
-        {
-        itemPos.iX += iPopupController->Size().iWidth;        
-        }
-    return itemPos;
-    }
-    
-// ---------------------------------------------------------------------------
-// Check if need to preview shortcut and perform previewing necessarily.
-// ---------------------------------------------------------------------------
-// 
-TBool CTruiShortcutsContainer::CheckAndPreviewShortcutModelL( TInt aIndex )
-    {
-    TBool ret = EFalse;
-    if ( aIndex > 0 )
-        {
-        // Get selected shortcut text
-        CDesCArray* shortcutlist = iEngine->ShortcutTextList();
-        TInt posInEngine = aIndex - 1;
-        // Popup hwr box to preview
-        PreviewShortcutModelL( shortcutlist->MdcaPoint( posInEngine ), aIndex );
-        ret = ETrue;
-        }
-    else
-        {
-        iPopupController->HidePopUp();
-        ret = EFalse;
-        }    
-    return ret;
-    }
-    
-// ---------------------------------------------------------------------------
-// Update buttons' status in toolbar
-// ---------------------------------------------------------------------------
-// 
-void CTruiShortcutsContainer::UpdateToolbarButtonStatus( TInt aIndex )
-    {
-    CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar();
-    if ( toolbar )
-        {
-        // Set edit text button's status
-        CAknButton* editTextButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) );
-        if ( editTextButton )
-            {
-            if ( aIndex > 0 )
-                {
-                if ( MarkCount() > 0 )
-                    {
-                    editTextButton->SetDimmed( ETrue );
-                    }
-                else
-                    {
-                    editTextButton->SetDimmed( EFalse );
-                    }
-                }
-            else
-                {
-                editTextButton->SetDimmed( ETrue );
-                }
-            editTextButton->DrawNow();
-            }
-            
-        // Set edit model button's status
-        CAknButton* editModelButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) );
-        if ( editModelButton )
-            {
-            if( aIndex > 0 )
-                {
-                if ( MarkCount() > 0 )
-                    {
-                    editModelButton->SetDimmed( ETrue );
-                    }
-                else
-                    {
-                    CDesCArray* shortcutlist = iEngine->ShortcutTextList();
-                    TInt posInEngine = aIndex - 1;
-                    if ( iEngine->CheckShortcutModel
-                                 ( shortcutlist->MdcaPoint( posInEngine ) ) )
-                        {
-                        // Shortcut model exist and allow to edit model.
-                        editModelButton->SetDimmed( EFalse );
-                        }
-                    }
-                }
-            else
-                {
-                editModelButton->SetDimmed( ETrue );
-                }
-            editModelButton->DrawNow();
-            }
-                    
-        // Set delete button's status            
-        CAknButton* deleteButton = static_cast<CAknButton*>
-                    ( toolbar->ControlOrNull( EShortcutsViewButtonIdDelete ) );
-        if ( deleteButton )  
-            {
-            TBool isDimmed = aIndex > 0 ? EFalse : ETrue;
-            deleteButton->SetDimmed( isDimmed );
-            deleteButton->DrawNow(); 
-            }
-        }
-    }