--- 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 <aknViewAppUi.h>
-#include <eikmenup.h>
-#include <trui.rsg>
-#include <akntoolbar.h>
-#include <aknnavide.h>
-#include <akntabgrp.h>
-
-#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<CTruiAppUi*>( AppUi() );
- CTruiEngine* engine = appui->HwrEngine();
- const RArray<TInt>& 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<CTruiAppUi*>( AppUi() );
- CAknNavigationDecorator* naviDecorator = appui->GetNaviDecorator();
- CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>
- ( 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<CTruiAppUi*>( 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<CTruiAppUi*>( 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<TInt>& 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<TInt>& 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 );
- }