diff -r 000000000000 -r f63038272f30 bluetoothengine/btui/src/BTUIAppUi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btui/src/BTUIAppUi.cpp Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,214 @@ +/* +* Copyright (c) 2002-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: This class the care of opening and closing the views. + * +*/ + + +// INCLUDE FILES +#include "BTUIDocument.h" +#include +#include "BTUIAppUi.h" +#include +#include +#include "BtuiPluginInterface.h" +#include "btui.h" +#include "BTUIMainView.h" +#include "debug.h" + +// ================= MEMBER FUNCTIONS ======================= + +// ---------------------------------------------------------- +// CBTUIAppUi::ConstructL +// +// Symbian 2nd phase constructor can leave. +// Contains status pane, navi pane, tab group and view +// creations and setting the main view active. +// ---------------------------------------------------------- +// +void CBTUIAppUi::ConstructL() + { + TRACE_FUNC_ENTRY + + BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible); + + // Show tabs for main views from resources + CEikStatusPane* sp = StatusPane(); + + // Fetch pointer to the default navi pane control + iNaviPane = (CAknNavigationControlContainer*)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)); + + // Tabgroup has been read from resource and it were pushed to the navi pane. + // Get pointer to the navigation decorator and set this to be a MAknTabObserver + iDecoratedTabGroup = iNaviPane->ResourceDecorator(); + + if (iDecoratedTabGroup) + { + iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl(); + iTabGroup->SetObserver( this ); + } + + // ----------------------------------------------------------------------- + // Construct Views by calling ECOM interface CBtuiPluginInterface's + // factory function NewL(), which in turn will call instantiation funtion + // of the concrate class that implement this interface. + // ----------------------------------------------------------------------- + + // 1.Construct Mainview + // + CBtuiPluginInterface* mainView = CBtuiPluginInterface::NewL(KBtuiPluginUidMainView,(MBtuiPluginViewActivationObserver*) this ); + + CleanupStack::PushL( mainView ); + AddViewL( mainView ); // Transfer ownership to CAknViewAppUi + CleanupStack::Pop(mainView ); + + // 2.Construct OtherDeviceView + // + CBtuiPluginInterface* otherDeviceView = CBtuiPluginInterface::NewL( + KBtuiPluginUidPairedDevicesView, (MBtuiPluginViewActivationObserver*) this ); + + CleanupStack::PushL( otherDeviceView ); + AddViewL( otherDeviceView ); // Transfer ownership to CAknViewAppUi + CleanupStack::Pop(otherDeviceView ); + + // 3.Construct BlockDeviceView + // + CBtuiPluginInterface* blockDeviceView = CBtuiPluginInterface::NewL( + KBtuiPluginUidBlockedDevicesView , (MBtuiPluginViewActivationObserver*) this ); + + CleanupStack::PushL( blockDeviceView ); + AddViewL( blockDeviceView ); // Transfer ownership to CAknViewAppUi + CleanupStack::Pop(blockDeviceView ); + + //ActivateLocalViewL( mainView->Id() ); + TRACE_FUNC_EXIT + } + +// ---------------------------------------------------- +// CBTUIAppUi::~CBTUIAppUi +// ---------------------------------------------------- +// +CBTUIAppUi::~CBTUIAppUi() + { + TRACE_FUNC_ENTRY + if(iNaviPane != NULL && iDecoratedTabGroup != NULL) + { + + delete iDecoratedTabGroup; // Tabgroup was read from resource. + iDecoratedTabGroup=NULL; + } + + REComSession::FinalClose(); + + TRACE_FUNC_EXIT + } + + +// ------------------------------------------------------------------------------ +// CBTUIAppUi::DynInitMenuPaneL +// +// This function is called by the UIKON framework just before it displays +// a menu pane. Its default implementation is empty, and by overriding it, +// the application can set the state of menu items dynamically according +// to the state of application data. +// ------------------------------------------------------------------------------ +// +void CBTUIAppUi::DynInitMenuPaneL( TInt /* aResourceId */, CEikMenuPane* /* aMenuPane */ ) + { + } + +// ---------------------------------------------------- +// CBTUIAppUi::HandleKeyEventL +// ---------------------------------------------------- +// + +TKeyResponse CBTUIAppUi::HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TRACE_FUNC + + iTabGroup = (CAknTabGroup*)iDecoratedTabGroup->DecoratedControl(); + + // Event will not be handled, if: + // 1.It is not a key event. + // 2.No tab group be created yet. + // 3.Device's BT name hasn't been initialized by user yet. + // + if (aType != EEventKey || !iTabGroup ) + { + return EKeyWasNotConsumed; + } + + return iTabGroup->OfferKeyEventL(aKeyEvent, aType); + } + +// ---------------------------------------------------- +// CBTUIAppUi::HandleCommandL +// +// Handle user commands. All commands are handled via +// this routine. +// ---------------------------------------------------- +// +void CBTUIAppUi::HandleCommandL(TInt aCommand) + { + TRACE_INFO((_L("command = %d"), aCommand )) + + switch ( aCommand ) + { + case EAknCmdExit: + case EEikCmdExit: + { + Exit(); + break; + } + default: + { + break; + } + } + } +// ---------------------------------------------------- +// CBTUIAppUi::PluginViewActivated +// ---------------------------------------------------- +// +void CBTUIAppUi::PluginViewActivated(TPluginViewId aViewId) + + { + TRACE_INFO((_L("view id = %d"), aViewId )) + if(iTabGroup->ActiveTabId()!=aViewId) + { + iTabGroup->SetActiveTabById(aViewId); + } + } + +// ---------------------------------------------------- +// CBTUIAppUi::TabChangedL +// ---------------------------------------------------- +// +void CBTUIAppUi::TabChangedL(TInt aIndex) + { + TRACE_FUNC + switch (aIndex) + { + case 0: + ActivateLocalViewL(KBtuiPluginUidMainView); + break; + case 1: + ActivateLocalViewL(KBtuiPluginUidPairedDevicesView); + break; + case 2: + ActivateLocalViewL(KBtuiPluginUidBlockedDevicesView); + break; + } + } +