textinput/peninputhwrtrui/src/truimainview.cpp
changeset 27 694fa80c203c
parent 24 fc42a86c98e3
child 35 0f326f2e628e
--- a/textinput/peninputhwrtrui/src/truimainview.cpp	Wed Jun 23 04:57:58 2010 +0800
+++ /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 );    
-    }