sl@0: /* sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * Series 60 version of Hindi Demo application sl@0: * Implementation of CHindiDemoAppUi sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: sl@0: #include "HindiDemo.hrh" sl@0: #include "HindiDemoappui.h" sl@0: #include "HindiDemoview.h" sl@0: #include "MainViewview.h" sl@0: sl@0: // ----------------------------------------------------------------------- sl@0: // Method managed by IDE to construct views sl@0: // Please do not edit this routine as its sl@0: // contents are regenerated upon new view creation. sl@0: // ----------------------------------------------------------------------- sl@0: void CHindiDemoAppUi::InitViewsL() sl@0: { sl@0: iHindiDemoView = CHindiDemoView::NewL(); sl@0: AddViewL( iHindiDemoView ); sl@0: iMainViewView = CMainViewView::NewL(); sl@0: AddViewL( iMainViewView ); sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------- sl@0: // Constructs AppUI Object sl@0: // ----------------------------------------------------------------------- sl@0: void CHindiDemoAppUi::ConstructL() sl@0: { sl@0: BaseConstructL(); sl@0: InitViewsL(); sl@0: sl@0: #ifdef WITH_TAB_GROUP sl@0: // ----------------------------------------------------------------------- sl@0: // Show tabs for main views from resources sl@0: // ----------------------------------------------------------------------- sl@0: CEikStatusPane* sp = StatusPane(); sl@0: iNaviPane = (CAknNavigationControlContainer *)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)); sl@0: sp->SetDimmed(ETrue); sl@0: sl@0: // ------------------------------------------------------------------------------- sl@0: // Tabgroup has been read from resource and it was pushed to the navi pane. sl@0: // Get pointer to the navigation decorator with the ResourceDecorator() function. sl@0: // Application owns the decorator and it has responsibility to delete the object. sl@0: // ------------------------------------------------------------------------------- sl@0: iDecoratedTabGroup = iNaviPane->ResourceDecorator(); sl@0: sl@0: if (iDecoratedTabGroup) sl@0: { sl@0: iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl(); sl@0: } sl@0: sl@0: if (iTabGroup) sl@0: { sl@0: ActivateLocalViewL(TUid::Uid(iTabGroup->ActiveTabId())); sl@0: } sl@0: #else sl@0: // ----------------------------------------------------------------------- sl@0: // Set default view sl@0: // ----------------------------------------------------------------------- sl@0: SetDefaultViewL(*iMainViewView); sl@0: #endif sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------- sl@0: // Cleanup of AppUI object sl@0: // ----------------------------------------------------------------------- sl@0: CHindiDemoAppUi::~CHindiDemoAppUi() sl@0: { sl@0: #ifdef WITH_TAB_GROUP sl@0: delete iDecoratedTabGroup; sl@0: #endif sl@0: } sl@0: sl@0: sl@0: #ifdef WITH_TAB_GROUP sl@0: // ----------------------------------------------------------------------- sl@0: // Key Event Handler - Primarily to automate navigation through tab groups sl@0: // ----------------------------------------------------------------------- sl@0: TKeyResponse CHindiDemoAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) sl@0: { sl@0: if (aType == EEventKey) sl@0: { sl@0: if (iTabGroup == NULL) sl@0: { sl@0: return EKeyWasNotConsumed; sl@0: } sl@0: } sl@0: sl@0: TInt active = iTabGroup->ActiveTabIndex(); sl@0: TInt count = iTabGroup->TabCount(); sl@0: sl@0: switch (aKeyEvent.iCode) sl@0: { sl@0: case EKeyLeftArrow: sl@0: if (active > 0) sl@0: { sl@0: // ----------------------------------------------------------------------- sl@0: // Change to usual layout sl@0: // ----------------------------------------------------------------------- sl@0: TRect cr = ClientRect(); sl@0: if (cr.iTl.iY == Kqpn_height_status_pane_idle) sl@0: { sl@0: StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); sl@0: } sl@0: sl@0: active--; sl@0: iTabGroup->SetActiveTabByIndex(active); sl@0: ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active))); sl@0: return EKeyWasConsumed; sl@0: } sl@0: break; sl@0: sl@0: case EKeyRightArrow: sl@0: if((active + 1) < count) sl@0: { sl@0: TRect cr = ClientRect(); sl@0: if (cr.iTl.iY == Kqpn_height_status_pane_idle) sl@0: { sl@0: StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); sl@0: } sl@0: sl@0: active++; sl@0: iTabGroup->SetActiveTabByIndex(active); sl@0: ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active))); sl@0: return EKeyWasConsumed; sl@0: } sl@0: break; sl@0: sl@0: default: sl@0: break; sl@0: } sl@0: sl@0: return EKeyWasNotConsumed; sl@0: } sl@0: #endif sl@0: sl@0: sl@0: // ----------------------------------------------------------------------- sl@0: // Default handler of Command Events sl@0: // ----------------------------------------------------------------------- sl@0: void CHindiDemoAppUi::HandleCommandL(TInt aCommand) sl@0: { sl@0: if (DispatchAppUICommandEvents(aCommand)) sl@0: return; sl@0: sl@0: switch (aCommand) sl@0: { sl@0: case 1014: sl@0: case EEikCmdExit: sl@0: case EAknSoftkeyExit: sl@0: Exit(); sl@0: break; sl@0: sl@0: default: sl@0: break; sl@0: } sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------- sl@0: // Here we dispatch to Command Event Handlers sl@0: // sl@0: // NOTE: This routine is managed by the C++Builder IDE - DO NOT MODIFY sl@0: // ----------------------------------------------------------------------- sl@0: bool CHindiDemoAppUi::DispatchAppUICommandEvents(TInt aCommand) sl@0: { sl@0: return false; sl@0: } sl@0: sl@0: sl@0: