--- a/bluetoothengine/btui/Ecom/src/BTUIMainContainer.cpp Thu Aug 19 10:05:41 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-/*
-* Copyright (c) 2006-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 is the implementation of main container. It contains
-* all necessary AVKON components and handles user inputs.
-*
-*/
-
-#include <e32base.h>
-#include <centralrepository.h>
-#include <barsread.h> // Resource reader
-#include <BtuiViewResources.rsg> // Compiled resource ids
-#include <btfeaturescfg.h> // For EnterpriseEnablementL()
-#include "BTUIMainContainer.h"
-#include "debug.h" // Global declarations
-#include "btui.h"
-#ifdef __SERIES60_HELP
-#include <csxhelp/bt.hlp.hrh> // Help ids
-#endif
-
-// ---------------------------------------------------------
-// CBTUIMainContainer::ConstructL
-// Symbian OS 2nd phase constructor can leave
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::ConstructL(const TRect& aRect, CBTUIMainView* aMainView )
- {
- TRACE_FUNC_ENTRY
-
- CreateWindowL();
-
- iMainView = aMainView;
-
- // Check if listbox is empty
- __ASSERT_DEBUG(iBtMainListBox==0, PANIC( EBTMainListNotEmpty ));
- __ASSERT_DEBUG(iBtAllItemsArray==0, PANIC( EBTAllFormatStingsArrayNotEmpty ));
- __ASSERT_DEBUG(iBtListItemArray==0, PANIC( EBTFormatStingsArrayNotEmpty ));
-
- // Create main itemlist
- iBtMainListBox = new (ELeave) CAknSettingStyleListBox;
- iBtMainListBox->SetContainerWindowL( *this );
- iBtMainListBox->ConstructL( this, EAknListBoxMarkableList );
-
-
- // Update settings from original sources via model
- iBtEngSettingsRef = iMainView->GetBtSettingsReference();
-
- __ASSERT_DEBUG(iBtEngSettingsRef!=0, PANIC(EBTPanicIllegalValue));
-
- // Read all format strings from resources and create array for them
- iBtAllItemsArray = iCoeEnv->ReadDesCArrayResourceL( R_BT_LABEL_STRINGS );
- iBtListItemArray = new (ELeave) TMainListItemArray(
- iBtAllItemsArray, aMainView, iBtEngSettingsRef );
-
- // Set up/down arrows at bottom of the screen (scrollbar)
- iBtMainListBox->CreateScrollBarFrameL( ETrue );
- iBtMainListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto );
-
- // Set text labels for list items again (overwriting resource definitions)
- iBtMainListBox->Model()->SetItemTextArray( iBtListItemArray );
- iBtMainListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); // Does not delete items array
-
- // Set up the observer (events listener)
- iBtMainListBox->SetListBoxObserver( this );
-
-
-
- SetRect(aRect);
- ActivateL();
-
- TRACE_FUNC_EXIT
- }
-
-// ---------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------
-//
-CBTUIMainContainer::~CBTUIMainContainer()
- {
- TRACE_FUNC_ENTRY
- delete iBtMainListBox;
- delete iBtAllItemsArray;
- delete iBtListItemArray;
- TRACE_FUNC_EXIT
- }
-
-// ---------------------------------------------------------
-// CBTUIMainContainer::SizeChanged()
-// From CCoeControl
-// Called by framework when the view size is changed
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::SizeChanged()
- {
- TRACE_FUNC_ENTRY
- iBtMainListBox->SetRect(Rect()); // Mandatory, otherwise not drawn
- }
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::CountComponentControls() const
-// ---------------------------------------------------------
-//
-TInt CBTUIMainContainer::CountComponentControls() const
- {
- TRACE_FUNC_ENTRY
- if(iBtMainListBox )
- return 1;
- else
- return 0; // return nbr of controls inside this container
- }
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::ComponentControl(TInt aIndex) const
-// ---------------------------------------------------------
-//
-CCoeControl* CBTUIMainContainer::ComponentControl(TInt aIndex) const
- {
- TRACE_FUNC_ENTRY
- if( aIndex ==0 )
- {
- return iBtMainListBox;
- }
- return NULL;
- }
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::Draw
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::Draw(const TRect& /* aRect */) const
- {
- }
-
-// ---------------------------------------------------------
-// From CoeControl
-// CBTUIMainContainer::HandleControlEventL
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::HandleControlEventL( CCoeControl* /* aControl */, TCoeEvent /* aEventType */)
- {
- }
-
-// ---------------------------------------------------------
-// From CoeControl
-// CBTUIMainContainer::OfferKeyEventL
-// Redirect keypresses to the listbox
-// ---------------------------------------------------------
-//
-TKeyResponse CBTUIMainContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
- {
- TRACE_FUNC_ENTRY
- if(( iBtMainListBox ) && ( aKeyEvent.iCode != EKeyLeftArrow )
- && (aKeyEvent.iCode != EKeyRightArrow ))
- {
- TKeyResponse res = iBtMainListBox->OfferKeyEventL( aKeyEvent, aType );
-
- // Store current item index for options list usage later
- //
- iCurrentItemIndex = iBtMainListBox->CurrentItemIndex();
- return res;
- }
- return EKeyWasNotConsumed;
- }
-
-// ---------------------------------------------------------
-// From MEikListBoxObserver
-// CBTUIMainContainer::HandleListBoxEventL
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType)
- {
- TRACE_FUNC_ENTRY
-
- __ASSERT_DEBUG(iMainView!=0, PANIC(EBTPanicIllegalValue));
-
- // this is no longer called, unless MSK is disabled.
- // if msk is not disabled, then
- // BTMainView::HandleCommand(EBTUICmdMSK) is called instead
- if( aEventType == EEventEnterKeyPressed
- || aEventType == EEventItemSingleClicked ) // Selection key pressed, or item clicked
- {
- TInt currentHighLightPosition = aListBox->CurrentItemIndex();
- switch(currentHighLightPosition)
- {
- case EBTMainListItemPowerMode:
- iMainView->HandleCommandL( EBTUICmdChangePowerStateSelect );
- break;
- case EBTMainListItemVisibilityMode:
- iMainView->HandleCommandL( EBTUICmdChangeVisibilitySelect );
- break;
- case EBTMainListItemNameSetting:
- iMainView->HandleCommandL( EBTUICmdChangeBTNameSelect );
- break;
-
- // For Bluetooth SIM Access Profile feature
- //
- case EBTMainListItemSapMode:
- iMainView->HandleCommandL( EBTUICmdChangeSapStateSelect );
- break;
- default:
- break;
- }
- aListBox->DrawItem(currentHighLightPosition); // Redraw item only to the screen
- }
- }
-
-// ----------------------------------------------------
-// From CEikListBox
-// CBTUIMainContainer::CurrentItemIndex
-// ----------------------------------------------------
-//
-TInt CBTUIMainContainer::CurrentItemIndex()
- {
- TRACE_FUNC_ENTRY
-
- return iBtMainListBox->CurrentItemIndex();
- }
-
-// ----------------------------------------------------
-// CBTUIMainContainer::SettingChangedL
-// ----------------------------------------------------
-//
-void CBTUIMainContainer::SettingChanged( TBTMainListItemIndexes /* aListItem */ )
- {
- TRACE_FUNC_ENTRY
-
- iBtMainListBox->DrawDeferred();
- }
-
-#ifdef __SERIES60_HELP
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::GetHelpContext
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::GetHelpContext(TCoeHelpContext& aContext) const
- {
- TRACE_FUNC_ENTRY
-
- aContext.iMajor = KBtuiUid3;
- aContext.iContext = KBT_HLP_MAIN;
- }
-
-#else
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::GetHelpContext
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::GetHelpContext(TCoeHelpContext& /*aContext*/) const
- {
- TRACE_FUNC_ENTRY
- }
-
-#endif
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::HandleResourceChange
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::HandleResourceChange( TInt aType )
- {
- TRACE_FUNC_ENTRY
- //Pass the event to base class, so whenever resource changing happened,
- //this control will be considered to be re-drawed by base class, therefore
- //no specific DrawNow() function call is needed here.
- CCoeControl::HandleResourceChange(aType);
-
- //Handle change in layout orientation
- //aType == KAknsMessageSkinChange is handled by base class.
- if (aType == KEikDynamicLayoutVariantSwitch)
- {
- //"TRect rect = iAvkonAppUi->ClientRect();"
- // The line above provides to big rectangle in the bottom causing cba's overdrawn by by blank area.
- // Correct way to do this is below.
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
- SetRect(mainPaneRect);
- }
- }
-
-// ---------------------------------------------------------
-// From CCoeControl
-// CBTUIMainContainer::FocusChanged
-// ---------------------------------------------------------
-//
-void CBTUIMainContainer::FocusChanged(TDrawNow /*aDrawNow*/)
- {
- TRACE_FUNC_ENTRY
- if( iBtMainListBox)
- {
- iBtMainListBox->SetFocus( IsFocused() );
- }
- }
-
-
-// *******************************************
-// Nested class function implemenations:
-// *******************************************
-
-// ----------------------------------------------------
-// CBTUIMainContainer::TMainListItemArray::TMainListItemArray
-// Initialize friend class
-// ----------------------------------------------------
-CBTUIMainContainer::TMainListItemArray::TMainListItemArray( CDesCArray* aBtAllItemsArray,
- CBTUIMainView* aMainView, CBTEngSettings* aBtEngSettings)
-
- : iArray( *aBtAllItemsArray ), // Store references
- iMainView( aMainView ),
- iBtEngSettingsRef( aBtEngSettings )
-
- {
- TRACE_FUNC_ENTRY
- }
-
-// ----------------------------------------------------
-// CBTUIMainContainer::TMainListItemArray::MdcaCount()
-// ----------------------------------------------------
-//
-TInt CBTUIMainContainer::TMainListItemArray::MdcaCount() const
- {
- TRACE_FUNC_ENTRY
- return KNumberOfMainViewItems;
- }
-
-// ----------------------------------------------------
-// CBTUIMainContainer::TMainListItemArray::MdcaPointL
-// Main view listbox item formatter:
-// Returns the current format string depending value
-// of the item concerned.
-// ----------------------------------------------------
-//
-TPtrC CBTUIMainContainer::TMainListItemArray::MdcaPoint( TInt aIndex ) const
- {
- TRACE_FUNC_ENTRY
- _LIT(KBTUIEmptyFormatString, " \t \t\t "); // Empty format string if illegal indexing
- TPtrC chosen;
-
- switch ( aIndex )
- {
- case EBTMainListItemPowerMode:
- {
- TBTPowerStateValue powerState;
- iBtEngSettingsRef->GetPowerState(powerState);
- if( powerState==EBTPowerOn )
- chosen.Set( iArray.MdcaPoint( EBTUISettModulePowerOn ));
- else
- chosen.Set( iArray.MdcaPoint( EBTUISettModulePowerOff ));
- break;
- }
-
- case EBTMainListItemVisibilityMode:
- {
- TBTVisibilityMode mode;
- iBtEngSettingsRef->GetVisibilityMode(mode);
-
- switch(mode)
- {
- case EBTVisibilityModeGeneral:
- chosen.Set( iArray.MdcaPoint( EBTUISettVisibilityModeGeneral ));
- break;
-
- case EBTVisibilityModeHidden:
- chosen.Set( iArray.MdcaPoint( EBTUISettVisibilityModeHidden ));
- break;
-
- case EBTVisibilityModeTemporary:
- chosen.Set( iArray.MdcaPoint( EBTUISettVisibilityModeTemp ));
- break;
-
- default:
- break;
- }
- break;
- }
-
- case EBTMainListItemNameSetting:
- {
- TDes &buf = MUTABLE_CAST(TBuf<KBTUIMaxFormattedNameLength>&,iItemText);
- buf.Zero();
- buf.Append( iArray.MdcaPoint( EBTUISettBTNameHeader ) );
- buf.Append( *iMainView->GetBTLocalName() );
- chosen.Set( iItemText );
- break;
- }
-
- // For Bluetooth SIM Access Profile feature
- case EBTMainListItemSapMode:
- {
- BluetoothFeatures::TEnterpriseEnablementMode mode = BluetoothFeatures::EEnabled;
- TRAPD(err, mode = BluetoothFeatures::EnterpriseEnablementL());
- if ( err == KErrNone )
- {
- if ( mode == BluetoothFeatures::EDataProfilesDisabled )
- {
- chosen.Set( iArray.MdcaPoint( EBTUISettSapDisabled ));
- break;
- }
- }
-
- TInt sapStatus;
- TRAP_IGNORE(GetSapStatusL(sapStatus););
-
- if(sapStatus==EBTSapEnabled)
- {
- chosen.Set( iArray.MdcaPoint( EBTUISettSapEnabled ));
- }
- else
- {
- chosen.Set( iArray.MdcaPoint( EBTUISettSapDisabled ));
- }
-
- TInt sapMode = KErrNone;
- TRAP_IGNORE(sapMode = iMainView->GetSapStatusL());
-
-
- if(sapMode==EBTSapEnabled)
- {
- if ( sapMode )
- {
- chosen.Set( iArray.MdcaPoint( EBTUISettSapEnabled ));
- }
- else
- {
- chosen.Set( iArray.MdcaPoint( EBTUISettSapDisabled ));
- }
- }
-
- break;
- }
- default:
- chosen.Set( KBTUIEmptyFormatString );
- break;
- }
-
- return chosen;
- }
-
-// ----------------------------------------------------------------------
-// CBTUIMainContainer::TMainListItemArray::GetSapStatusL(TInt& aStatus)
-// ----------------------------------------------------------------------
-//
-void CBTUIMainContainer::TMainListItemArray::GetSapStatusL( TInt& aStatus )
-{
- CRepository* repository = CRepository::NewL(KCRUidBTEngPrivateSettings);
- CleanupStack::PushL(repository);
- repository->Get(KBTSapEnabled, aStatus);
- CleanupStack::PopAndDestroy(repository);
-}