diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truimainview.cpp --- a/textinput/peninputhwrtrui/src/truimainview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,401 +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 CTruiMainView -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "truimainview.h" -#include "truimainviewcontainer.h" -#include "trui.hrh" -#include "truiappui.h" -#include "truiengine.h" -#include "truishortcutsview.h" - -// ======== MEMBER FUNCTIONS ======== - -CTruiMainView::CTruiMainView() - { - } - -void CTruiMainView::ConstructL() - { - BaseConstructL( R_TRUI_MAINVIEW ); - } - -CTruiMainView* CTruiMainView::NewL() - { - CTruiMainView* self = CTruiMainView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiMainView* CTruiMainView::NewLC() - { - CTruiMainView* self = new( ELeave ) CTruiMainView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiMainView::~CTruiMainView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiMainView::Id() const - { - return KTruiMainViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Command handling function. -// --------------------------------------------------------------------------- -// -void CTruiMainView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EMainViewCharGrid: - { - // Handle menu item command "Character Grid" - iContainer->HandleChooseCharEventL(); - } - break; - case EMainViewSubmenuWestern: - case EMainViewSubmenuCyrillic: - case EMainViewSubmenuGreek: - case EMainViewSubmenuHebrew: - { - iContainer->HandleLanguageScriptChangedL( aCommand ); - } - break; - case EMainViewSubmenuLatinLowerLetter: - case EMainViewSubmenuLatinUpperLetter: - case EMainViewSubmenuLatinAccent: - case EMainViewSubmenuDigital: - case EMainViewSubmenuSymbols: - case EMainViewSubmenuCyrillicLowerLetters: - case EMainViewSubmenuCyrillicUpperLetters: - case EMainViewSubmenuCyrillicAccent: - case EMainViewSubmenuGreekLowerLetters: - case EMainViewSubmenuGreekUpperLetters: - case EMainViewSubmenuHebrewLetters: - { - // Handle character range changed - // Get range index in menu pane by range Id - CTruiAppUi* appui = static_cast( AppUi() ); - CTruiEngine* engine = appui->HwrEngine(); - const RArray& rangeIdArray = - engine->GetCurrentSupportedRangesId(); - TInt indexOfMenuItems = rangeIdArray.Find( aCommand ); - if ( indexOfMenuItems != KErrNotFound ) - { - // Set current character range by index in Engine - engine->SetCharacterRangeByIndexL( indexOfMenuItems ); - - // Call iContainer->HandleCharRangeChanged to handle it. - iContainer->HandleCharRangeChangedL( indexOfMenuItems, - aCommand ); - } - } - break; - case EMainViewDeleteCurrentModel: - { - iContainer->DeleteModelL(); - } - break; - case EMainViewDeleteAllModel: - { - iContainer->DeleteAllModelL(); - break; - } - case EMainViewPreviewModel: - { - iContainer->PreviewCharacterModel(); - break; - } - case EMainViewToShortcutsView: - { - CTruiAppUi* appui = static_cast( AppUi() ); - CAknNavigationDecorator* naviDecorator = appui->GetNaviDecorator(); - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - tabGroup->SetActiveTabById( ENavigationPaneShortcutsViewTab ); - // Switch to local view. - appui->ActivateLocalViewL( KTruiShortcutsViewId ); - break; - } - case EAknSoftkeyExit: - { - iContainer->PrepareToExitL(); - AppUi()->HandleCommandL( aCommand ); - } - break; - default: - { - AppUi()->HandleCommandL( aCommand ); - } - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiMainView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - // Set title pane - CTruiAppUi* appui = static_cast( AppUi() ); - HBufC* titleText = - iEikonEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - - iContainer = CTruiMainViewContainer::NewL( ClientRect() ); - iContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->SetView( this ); - - // Set toolbar - CAknToolbar* toolbar = Toolbar(); - if ( toolbar ) - { - toolbar->SetToolbarObserver( this ); - toolbar->SetToolbarVisibility( ETrue, EFalse ); - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiMainView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// From class MAknToolbarObserver. -// Handles toolbar events for a certain toolbar item. -// --------------------------------------------------------------------------- -// -void CTruiMainView::OfferToolbarEventL( TInt aCommand ) - { - switch ( aCommand ) - { - case EMainViewButtonIdGrid: - { - // Open SCT - iContainer->HandleChooseCharEventL(); - break; - } - case EMainViewButtonIdPreview: - { - // Preview character animation - iContainer->PreviewCharacterModel(); - break; - } - case EMainViewButtonIdDelete: - { - // Clear HWR box and delete character model - iContainer->DeleteModelL(); - break; - } - } - } - -// --------------------------------------------------------------------------- -// Dynamically initialises a menu pane. -// --------------------------------------------------------------------------- -// -void CTruiMainView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - // Get engine - CTruiAppUi* appui = static_cast( AppUi() ); - CTruiEngine* engine = appui->HwrEngine(); - - if ( aResourceId == R_TRUI_MAINVIEW_MENUPANE ) - { - // Get language script from engine - // Determine whether "Language script" will be displayed. - aMenuPane->SetItemDimmed( EMainViewLanguageScript, - ( engine->SupportedLanguageScript().Count() <= 1 ) ); - - // Determine whether "Delete model" will be displayed - iDimAllDelete = iContainer->IsAllDelete(); - - TBool isDimmed = ( iContainer->IsButtonDimmed() && iDimAllDelete ) - ? ETrue: EFalse; - aMenuPane->SetItemDimmed( EMainViewDeleteModel, isDimmed ); - - // Determine whether "Preview model" will be displayed. - TBool isPreviewDimmed = iContainer->IsButtonDimmed() ? ETrue: EFalse; - aMenuPane->SetItemDimmed( EMainViewPreviewModel, isPreviewDimmed ); - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_LANGUAGESCRIPT_CASCADE ) - { - // Set which items will be displayed by supported language script - const RArray& languageScriptId = - engine->SupportedLanguageScript(); - aMenuPane->SetItemDimmed( EMainViewSubmenuWestern, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuCyrillic, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuGreek, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuHebrew, ETrue ); - for ( TInt i = 0; i < languageScriptId.Count(); i++ ) - { - aMenuPane->SetItemDimmed( languageScriptId[i], EFalse ); - } - - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuWestern ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuWestern ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuCyrillic ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuCyrillic ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuGreek ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuGreek ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuHebrew ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuHebrew ); - } - - // Set which item will be indicated by current language script - aMenuPane->SetItemButtonState( engine->CurrentLanguageScript(), - EEikMenuItemSymbolOn ); - - // Set current selected item - TInt pos; - aMenuPane->ItemAndPos( engine->CurrentLanguageScript(), pos ); - aMenuPane->SetSelectedItem( pos ); - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_CHARRANGE_CASCADE ) - { - // Get language script from model - // Init character range submenu - InitCharRangeSubMenuL( engine->CurrentLanguageScript(), aMenuPane ); - - if ( engine->CurrentLanguageScript() == EMainViewSubmenuCyrillic ) - { - // Dim cyrillic accent range - aMenuPane->SetItemDimmed( EMainViewSubmenuCyrillicAccent, ETrue ); - } - - // Get the current item's Id - TInt rangeId = engine->GetCurrentCharacterRange(); - - // Set which item to be indicated - aMenuPane->SetItemButtonState( rangeId, EEikMenuItemSymbolOn ); - - // Set which item to be highlighted - const RArray& rangeIdArray = - engine->GetCurrentSupportedRangesId(); - TInt indexOfMenuItems = rangeIdArray.Find( rangeId ); - if ( indexOfMenuItems != KErrNotFound ) - { - aMenuPane->SetSelectedItem( indexOfMenuItems ); - } - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_DELETE_CASCADE ) - { - aMenuPane->SetItemDimmed( EMainViewDeleteCurrentModel, - iContainer->IsButtonDimmed() ); - aMenuPane->SetItemDimmed( EMainViewDeleteAllModel, iDimAllDelete ); - } - } - -// --------------------------------------------------------------------------- -// Dynamically initialises the character range menu pane. -// --------------------------------------------------------------------------- -// -void CTruiMainView::InitCharRangeSubMenuL( TInt aScriptId, - CEikMenuPane* aMenuPane) - { - // Get the corrent reource ID of MENU_ITEMS by - TInt reourceId = MenuItemsReourceId( aScriptId ); - // Add these menu items into menu pane - aMenuPane->AddMenuItemsL( reourceId ); - } - -// --------------------------------------------------------------------------- -// Get reource ID of menu items for initializing menu pane. -// --------------------------------------------------------------------------- -// -TInt CTruiMainView::MenuItemsReourceId( TInt aScriptId ) - { - TInt reourceId; - switch ( aScriptId ) - { - case EMainViewSubmenuWestern: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_LATIN; - } - break; - case EMainViewSubmenuCyrillic: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_CYRILLIC; - } - break; - case EMainViewSubmenuGreek: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_GREEK; - } - break; - case EMainViewSubmenuHebrew: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_HEBREW; - } - break; - default: - reourceId = 0; - break; - } - return reourceId; - } - -// --------------------------------------------------------------------------- -// Check menu item dimmed by menu item id. -// --------------------------------------------------------------------------- -// -TBool CTruiMainView::IsMenuItemDimmed( CEikMenuPane* aMenuPane, TInt aMenuItemId ) - { - CEikMenuPaneItem::SData& itemdata = aMenuPane->ItemData( aMenuItemId ); - return ( itemdata.iFlags & EEikMenuItemDimmed == EEikMenuItemDimmed ); - }