diff -r 0ba996a9b75d -r 613943a21004 bluetoothengine/bthid/bthidkbdsettings/src/bthidsettingview.cpp --- a/bluetoothengine/bthid/bthidkbdsettings/src/bthidsettingview.cpp Thu Aug 19 10:05:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,436 +0,0 @@ -/* -* Copyright (c) 2006 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 is the implementation of setting view class -* -*/ - -#include -#include -#include -#include -#include -#include // Help launcher -#include -#include -#include -#include // Help IDs -#include -#include -#include "bthidsettingview.h" -#include "bthidsettingcontainer.h" -#include "bthidsettings.h" -#include "bthidsettinglist.h" -#include "btkeyboard.hrh" -#include -#include "btengprivatecrkeys.h" -#include "layoutmgr.h" -#include "hidlayoutids.h" -#include "debug.h" - -const TUid KBtHidSettingViewId = - { - 0x2001E30B - } - ; // UID of HID device setting view. -// --------------------------------------------------------- -// CBtHidSettingView::NewNewGsPluginL -// Two phased constructor -// --------------------------------------------------------- -// -CBtHidSettingView* CBtHidSettingView::NewBtuiPluginL() - { - //TRACE_FUNC(_L("[BTHID]\t CBtHidSettingView::NewBtuiPluginL(), BEGIN")); - - CBtHidSettingView* self = new (ELeave) CBtHidSettingView(); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - //TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::NewBtuiPluginL, END"),self) ); - - return self; - } - - -// ---------------------------------------------------- -// CBtHidSettingView::CBtHidSettingView -// default constructor -// ---------------------------------------------------- -// -CBtHidSettingView::CBtHidSettingView() - {} - -// ---------------------------------------------------- -// CBtHidSettingView::ConstructL -// ---------------------------------------------------- -// -void CBtHidSettingView::ConstructL() - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]:ConstructL(), BEGIN"),this) ); - - User::LeaveIfError(iLayoutSession.Connect()); - - // Check to see what type of layout code the layout manager will return - // us. (i.e nokia or standard) - // This is used to know which settings page to display. - TBool ignore; - TRACE_INFO(_L("[BTHID]\t CBtHidMainView::ConstructL(), get layout info...")); - User::LeaveIfError(iLayoutSession.GetDeviceInfo(iIsNokiaKeyboard, ignore)); - - iEikEnv = CEikonEnv::Static(); - TFileName filename; - filename += KFileDrive; - filename += KDC_RESOURCE_FILES_DIR; - filename += KResourceFileName; - BaflUtils::NearestLanguageFile( iEikEnv->FsSession(), filename ); - iResourceFileFlag=iEikEnv->AddResourceFileL(filename); - BaseConstructL( R_BTKEYBOARD_SETTING_VIEW ); - - CEikStatusPane *sp = ((CAknAppUi*)iEikonEnv->EikAppUi())->StatusPane(); - // Fetch pointer to the default title pane control - iContextPane = (CAknContextPane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidContext)); - - iSettings = CBtHidSettings::NewL(); - - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]:ConstructL(), END"),this) ); - } -// ---------------------------------------------------- -// CBtHidSettingView::~CBtHidSettingView() -// Destructor -// Frees reserved resources -// ---------------------------------------------------- -// -CBtHidSettingView::~CBtHidSettingView() - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::~CBtHidSettingView()"), this) ); - iLayoutSession.Close(); - - delete iNaviDecorator; - iEikEnv->DeleteResourceFile(iResourceFileFlag); - - if ( iSettingList ) - { - AppUi()->RemoveFromStack( (CCoeControl*) iSettingList ); - delete iSettingList; - } - if ( iContainer ) - { - AppUi()->RemoveFromStack(iContainer ); - delete iContainer; - } - if( iCenRepWatcher ) - delete iCenRepWatcher; - - if (iSettings ) - delete iSettings; - TRACE_FUNC_EXIT - } - -// --------------------------------------------------------- -// TUid CBtHidSettingView::Id -// --------------------------------------------------------- -// -TUid CBtHidSettingView::Id() const - { - TUid id = KBtHidSettingViewId; //view id - return id; - } - -// ---------------------------------------------------- -// CBtHidSettingView::HandleCommandL(TInt aCommand) -// takes care of command handling -// ---------------------------------------------------- -// -void CBtHidSettingView::HandleCommandL(TInt aCommand) - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::HandleCommandL(%d)"),this, aCommand) ); - switch ( aCommand ) - { - case EEikCmdExit: // fall-through, handled similarily - case EAknSoftkeyExit: // fall-through, handled similarily - //case EBTKeyCmdExit: - { - AppUi()->HandleCommandL( EEikCmdExit); - } - case EAknSoftkeyChange: - case EBTKeyCmdAppChange: - { - if( iSettingList ) - { - iCenRepWatcher->DisableNotifications(); - iSettingList->EditCurrentItemL( aCommand ); - iCenRepWatcher->EnableNotifications(); - } - break; - } - case EAknSoftkeyBack: - { - AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid ); - break; - } - -#ifdef __SERIES60_HELP - case EBTKeyCmdAppHelp: - { - HlpLauncher::LaunchHelpApplicationL( - iEikEnv->WsSession(), AppUi()->AppHelpContextL()); - break; - } - -#endif - default: - { - AppUi()->HandleCommandL( aCommand ); - break; - } - } - } - -// --------------------------------------------------------------------------- -// CBtHidSettingView::DoActivateL() -// --------------------------------------------------------------------------- -// -void CBtHidSettingView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::DoActivateL, BEGIN"),this) ); - iPrevViewId = aPrevViewId; - (void) aCustomMessageId; - - // Setup the title - HBufC* title; - title = iCoeEnv->AllocReadResourceLC(R_BTKEYBOARD_SETTINGS_STATUS_PANE_TITLE); - - CEikStatusPane* statusPane = StatusPane(); - CAknTitlePane* titlePane; - titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle)); - titlePane->SetTextL(title->Des()); - CleanupStack::PopAndDestroy(); // title - title = NULL; - - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::DoActivateL(), Creating container..."),this) ); - iContainer = new (ELeave) CBTHidSettingContainer; - iContainer->SetMopParent(this); - iContainer->ConstructL( ClientRect()); - iContainer->MakeVisible( ETrue ); - iContainer->ActivateL(); - AppUi()->AddToStackL(iContainer); - - CreateSettingListL(); - iCenRepWatcher = CBtHidCenRepWatcher::NewL( KCRUidBTEngPrivateSettings, *this ); // create listener for cenrep events. - SetNavipaneTextL(aCustomMessage); - - TRACE_INFO((_L("[BTHID]\t CBtHidSettingView[0x%08x]::DoActivateL, END"),this) ); - } - - -// --------------------------------------------------------------------------- -// CBtHidSettingView::DoDeactivate -// -// Deactivate the settings view. -// --------------------------------------------------------------------------- -// -void CBtHidSettingView::DoDeactivate() - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::DoDeactivate, BEGIN"),this) ); - if ( iSettingList ) - { - AppUi()->RemoveFromStack( (CCoeControl*) iSettingList ); - delete iSettingList; - iSettingList = NULL; - } - if( iContainer ) - { - iContainer->MakeVisible(EFalse); - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - - if (iNaviDecorator) - { - delete iNaviDecorator; - iNaviDecorator = NULL; - } - iLastSelectedLayout = iSettings->LoadLayoutSetting(); - iLayoutSession.SetLayout(iLastSelectedLayout); - delete iCenRepWatcher; - iCenRepWatcher = NULL; - TRACE_FUNC_EXIT - } - -// ---------------------------------------------------- -// CBtHidSettingView::DynInitMenuPaneL -// ---------------------------------------------------- -// -void CBtHidSettingView::DynInitMenuPaneL( - TInt aResourceId, CEikMenuPane* aMenuPane) - { - if (aResourceId == R_BTKEYBOARD_SETTING_MENU ) - { - aMenuPane->SetItemDimmed(EBTKeyCmdAppChange, ETrue); - } - - - } - -// ---------------------------------------------------- -// CBtHidSettingView::CreateSettingListL -// ---------------------------------------------------- -// -void CBtHidSettingView::CreateSettingListL() - { - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::CreateSettingListL, BEGIN"),this) ); - - TInt resourceId = R_BTKEYBOARD_STANDARD_SETTING_LIST; - - TBool foundLayout; - User::LeaveIfError(iLayoutSession.GetDeviceInfo(iIsNokiaKeyboard, foundLayout)); - - if(iIsNokiaKeyboard) - { - resourceId = R_BTKEYBOARD_NOKIA_SETTING_LIST; - } - else - { - resourceId = R_BTKEYBOARD_STANDARD_SETTING_LIST; - } - - TInt layoutCode; - if ( !foundLayout ) - { - //No layout found, find an appropriate one. - layoutCode = CurrentLayoutL(); - SetCurrentLayoutL(static_cast(layoutCode)); - } - else - { - //Layout found, load it as default - iLayoutSession.GetLayout(layoutCode); - SetCurrentLayoutL(static_cast(layoutCode)); - } - - if ( iSettingList ) - { - AppUi()->RemoveFromStack( (CCoeControl*) iSettingList ); - } - delete iSettingList; - iSettingList = NULL; - - iSettingList = new (ELeave) CBTKeySettingList( *iSettings, this); - iSettingList->SetMopParent(this); - iSettingList->ConstructFromResourceL(resourceId); - AppUi()->AddToStackL( (CCoeControl*) iSettingList ); - iSettingList->MakeVisible(ETrue); - iSettingList->SetRect(ClientRect()); - iSettingList->ActivateL(); - iSettingList->DrawNow(); - TRACE_INFO( (_L("[BTHID]\t CBtHidSettingView[0x%08x]::CreateSettingListL, END"),this) ); - } - -// ---------------------------------------------------- -// CBtHidSettingView::SetCurrentLayoutL -// ---------------------------------------------------- -// -void CBtHidSettingView::SetCurrentLayoutL(THidKeyboardLayoutId aLayoutValue) - { - // Ask the layout manager to change layout. - // Use the leaving version so we the user can't confirm a selection - // if an error occurs. - iLayoutSession.SetLayoutL(aLayoutValue); - - iSettings->SaveLayoutSettingL( aLayoutValue ); - } - -THidKeyboardLayoutId CBtHidSettingView::CurrentLayoutL() const - { - // Ask the layout manager for the current layout. - // Use the leaving version. - TInt layoutCode = iLayoutSession.GetLayoutL(); - - // Convert the Int to the enum. - THidKeyboardLayoutId layoutID = - static_cast(layoutCode); - - // If we believe this to be a Nokia keyboard then the layout settings - // page will contain the list of Nokia Su8 items. - // Conversly if we think this is a Standard keyboard the layout settings - // page will contain the list of Standard layouts. - // We must pass a valid value to the Settings page or it will panic. - // Validate the code from the Layout Manager before returning it. - if ( iIsNokiaKeyboard ) - { - CLayoutUtils::ValidateNokiaSU8Layout(layoutID); - } - else - { - CLayoutUtils::ValidateStandardLayout(layoutID); - } - - return layoutID; - } - -void CBtHidSettingView::SetNavipaneTextL(const TDesC8& aDeviceName) - { - TRACE_INFO(_L("[BTHID]\t CBtHidSettingView::SetNavipaneTextL Start")); - CEikStatusPane* sp = - iEikonEnv->AppUiFactory()->StatusPane(); - - CAknNavigationControlContainer* np = - static_cast( - sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - - delete iNaviDecorator; - iNaviDecorator = NULL; - - TInt blank(1); - if (aDeviceName.Length()>0 ) - { - HBufC* stringHolder = HBufC::NewLC(aDeviceName.Length() + blank); - stringHolder->Des().Copy(aDeviceName); - stringHolder->Des().Append(_L(" ")); - iNaviDecorator = np->CreateNavigationLabelL( *stringHolder ); - np->PushL( *iNaviDecorator ); - sp->DrawNow(); - CleanupStack::PopAndDestroy(stringHolder); // stringHolder - } - else - { - HBufC* temp = HBufC::NewLC(aDeviceName.Length()); - temp->Des().Copy(aDeviceName); - iNaviDecorator = np->CreateNavigationLabelL( *temp ); - np->PushL( *iNaviDecorator ); - sp->DrawNow(); - CleanupStack::PopAndDestroy(temp); // temp - } - TRACE_INFO(_L("[BTHID]\t CBtHidSettingView::SetNavipaneTextL End")); - } -// ---------------------------------------------------- -// CBtHidSettingView::CenRepDataChanged -// ---------------------------------------------------- -// -void CBtHidSettingView::CenRepDataChanged(TUid& aUid, TUint32 aKey) - { - // just recreate the setting list - TRACE_INFO((_L("[BTHID]\t CBtHidSettingView[0x%08x]::CenRepDataChanged"),this)); - (void) aUid; - if ( aKey == KBtHidKeyboardLayout ) - { - TRAPD( err, CreateSettingListL()); - err = err; - } - } -// End of File