diff -r b01126ce0bec -r ba63c83f4716 idlehomescreen/examples/hscontentcontrolexample/src/HsContentControlListBox.cpp --- a/idlehomescreen/examples/hscontentcontrolexample/src/HsContentControlListBox.cpp Wed Sep 15 12:00:00 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,598 +0,0 @@ -/* -* Copyright (c) 2010 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: Content Control example -* -*/ - - -// Includes -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include "HsContentControlListBox.h" - -// Constants -const TInt KFlags( CAknSingleStyleTreeList::EPersistent | - CAknSingleStyleTreeList::EExpanded ); - -_LIT( KActivate, "Activate" ); - -enum TTabs - { - ETabFirst = 0, - ETabActiveConfiguration = ETabFirst, - ETabConfigurations, - ETabViews, - ETabWidgets, - ETabLast = ETabWidgets - }; - -// ============================ LOCAL FUNCTIONS ================================ - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::CHsContentControlListBox -// -// ----------------------------------------------------------------------------- -// -CHsContentControlListBox::CHsContentControlListBox() - { - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::~CHsContentControlListBox -// -// ----------------------------------------------------------------------------- -// -CHsContentControlListBox::~CHsContentControlListBox() - { - delete iHsCcApiClient; - delete iCallback; - delete iPopup; - delete iListBox; - delete iBgContext; - delete iArray; - delete iDecorator; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::NewL -// -// ----------------------------------------------------------------------------- -// -CHsContentControlListBox* CHsContentControlListBox::NewL( const TRect& aRect, - const CCoeControl* aParent, MEikCommandObserver* aCommandObserver ) - { - CHsContentControlListBox* self = - CHsContentControlListBox::NewLC( aRect, aParent, aCommandObserver ); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::NewLC -// -// ----------------------------------------------------------------------------- -// -CHsContentControlListBox* CHsContentControlListBox::NewLC( const TRect& aRect, - const CCoeControl* aParent, MEikCommandObserver* aCommandObserver ) - { - CHsContentControlListBox* self = new ( ELeave ) CHsContentControlListBox(); - CleanupStack::PushL( self ); - - self->ConstructL( aRect, aParent, aCommandObserver ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::ConstructL -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::ConstructL( const TRect& aRect, - const CCoeControl* aParent, MEikCommandObserver* /*aCommandObserver*/ ) - { - iHsCcApiClient = CHsCcApiClient::NewL( this ); - - TCallBack cb( PopulateList, this ); - - iCallback = new ( ELeave ) CAsyncCallBack( cb, CActive::EPriorityStandard ); - - if ( !aParent ) - { - CreateWindowL(); - } - else - { - SetContainerWindowL( *aParent ); - } - - InitializeControlsL(); - - SetRect( aRect ); - - ActivateL(); - - PopulateListL(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::CountComponentControls -// -// ----------------------------------------------------------------------------- -// -TInt CHsContentControlListBox::CountComponentControls() const - { - return 1; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::CHsContentControlListBox -// -// ----------------------------------------------------------------------------- -// -CCoeControl* CHsContentControlListBox::ComponentControl( TInt aIndex ) const - { - if ( aIndex == 0 ) - { - return iListBox; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::OfferKeyEventL -// -// ----------------------------------------------------------------------------- -// -TKeyResponse CHsContentControlListBox::OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType ) - { - if ( iListBox->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed ) - { - return EKeyWasConsumed; - } - - return CCoeControl::OfferKeyEventL( aKeyEvent, aType ); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::HandleResourceChange -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - - SetRect( iAvkonAppUi->ClientRect() ); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::SizeChanged -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::SizeChanged() - { - CCoeControl::SizeChanged(); - - LayoutControls(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::MopSupplyObject -// -// ----------------------------------------------------------------------------- -// -TTypeUid::Ptr CHsContentControlListBox::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext ) - { - return MAknsControlContext::SupplyMopObject( aId, iBgContext ); - } - - return CCoeControl::MopSupplyObject( aId ); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::HandleTreeListEvent -// -// ----------------------------------------------------------------------------- -// -TInt CHsContentControlListBox::HandleTreeListEvent( - CAknTreeList& /*aList*/, - TAknTreeItemID aItem, - TEvent aEvent ) - { - if ( aEvent == EItemSelected ) - { - if ( !iListBox->IsLeaf( aItem ) && !iListBox->IsMarked( aItem ) ) - { - return KErrNone; - } - - const TWsEvent& event( iCoeEnv->LastEvent() ); - - if ( event.Type() == EEventPointer ) - { - TInt x, y; - - TPointerEvent& pointer( *event.Pointer() ); - - x = pointer.iParentPosition.iX; - y = pointer.iParentPosition.iY; - - delete iPopup; - iPopup = NULL; - - iPopup = CAknStylusPopUpMenu::NewL( this, TPoint( x, y ) ); - - if ( iTabIndex == ETabConfigurations ) - { - iSelectedItem = aItem; - - iPopup->AddMenuItemL( KActivate, 1 ); - - iPopup->SetPosition( TPoint( x, y ), - CAknStylusPopUpMenu::EPositionTypeRightBottom ); - - iPopup->ShowMenu(); - } - } - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::ProcessCommandL -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::ProcessCommandL( TInt aCommandId ) - { - TAknTreeItemID item( iSelectedItem ); - - iSelectedItem = KAknTreeIIDNone; - - if ( item == KAknTreeIIDNone || aCommandId == KErrCancel ) - { - return; - } - - // Resolve selected item - if ( iTabIndex == ETabConfigurations ) - { - TAknTreeItemID id = iListBox->Child( KAknTreeIIDRoot, 0 ); - - TInt count( iListBox->ChildCount( id ) ); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iListBox->Child( id, i ) == item ) - { - CHsContentInfo* info( iArray->Array()[i] ); - - TRAP_IGNORE( iHsCcApiClient->ActivateAppL( *info ) ); - - break; - } - } - } - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::SetEmphasis -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::SetEmphasis( CCoeControl* /*aMenuControl*/, - TBool /*aEmphasis*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::TabChangedL -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::TabChangedL( TInt aIndex ) - { - if ( aIndex != iTabIndex ) - { - iTabIndex = aIndex; - - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ERightButton, EFalse ); - - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ELeftButton, EFalse ); - - if ( iTabIndex == ETabFirst ) - { - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ELeftButton, ETrue ); - } - else if ( iTabIndex == ETabLast ) - { - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ERightButton, ETrue ); - } - - iCallback->Cancel(); - iCallback->CallBack(); - } - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::NotifyWidgetListChanged -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::NotifyWidgetListChanged() - { - iCallback->Cancel(); - iCallback->CallBack(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::NotifyViewListChanged -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::NotifyViewListChanged() - { - iCallback->Cancel(); - iCallback->CallBack(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::NotifyAppListChanged -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::NotifyAppListChanged() - { - iCallback->Cancel(); - iCallback->CallBack(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::InitializeControlsL -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::InitializeControlsL() - { - iListBox = CAknSingleStyleTreeList::NewL( *this ); - iListBox->SetContainerWindowL( *this ); - iListBox->AddObserverL( this ); - iListBox->SetFocus( ETrue ); - - iBgContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgScreen, TRect(), ETrue ); - - CEikStatusPane* sp( iAvkonAppUi->StatusPane() ); - - TUid naviPaneUid( TUid::Uid( EEikStatusPaneUidNavi ) ); - - CAknNavigationControlContainer* naviPane = - static_cast< CAknNavigationControlContainer* >( sp->ControlL( naviPaneUid ) ); - - iDecorator = naviPane->ResourceDecorator(); - - iDecorator->MakeScrollButtonVisible( ETrue ); - - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ELeftButton, ETrue ); - - iDecorator->SetScrollButtonDimmed( - CAknNavigationDecorator::ERightButton, EFalse ); - - iTabGroup = static_cast< CAknTabGroup* > ( iDecorator->DecoratedControl() ); - iTabGroup->SetObserver( this ); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::LayoutControls -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::LayoutControls() - { - iListBox->SetRect( Rect() ); - - TRect rect; - - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, rect ); - - iBgContext->SetRect( rect ); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::PopulateListL -// -// ----------------------------------------------------------------------------- -// -void CHsContentControlListBox::PopulateListL() - { - if ( !iListBox->IsEmpty( KAknTreeIIDRoot ) ) - { - // Remove all - iListBox->RemoveItem( KAknTreeIIDRoot, EFalse ); - } - - delete iArray; - iArray = NULL; - - if ( iTabIndex == ETabActiveConfiguration ) - { - CHsContentInfo* activeApp = CHsContentInfo::NewL(); - CleanupStack::PushL( activeApp ); - - // Get active homescreen configuration - iHsCcApiClient->ActiveAppL( *activeApp ); - - _LIT( KActiveConfiguration, "Active configuration" ); - - TAknTreeItemID root = iListBox->AddNodeL( - KAknTreeIIDRoot, KActiveConfiguration, KFlags, EFalse ); - - CHsContentInfoArray* viewList = CHsContentInfoArray::NewL(); - CleanupStack::PushL( viewList ); - - // Get view list from the active configuration - iHsCcApiClient->ViewListL( *activeApp, *viewList ); - - _LIT( KView, "View " ); - - for ( TInt j = 0; j < viewList->Array().Count(); j++ ) - { - TBuf< 32 > viewname; - viewname = KView(); - viewname.AppendNum( j + 1 ); - - CHsContentInfo* view( viewList->Array()[j] ); - - TAknTreeItemID parent = iListBox->AddNodeL( - root, viewname, KFlags, EFalse ); - - CHsContentInfoArray* widgetList = CHsContentInfoArray::NewL(); - CleanupStack::PushL( widgetList ); - - // Get widget list from the view - iHsCcApiClient->WidgetListL( *view, *widgetList ); - - for ( TInt k = 0; k < widgetList->Array().Count(); k++ ) - { - CHsContentInfo* widget( widgetList->Array()[k] ); - - iListBox->AddLeafL( parent, widget->Name(), KFlags, EFalse ); - } - - CleanupStack::PopAndDestroy( widgetList ); - } - - CleanupStack::PopAndDestroy( viewList ); - - CleanupStack::PopAndDestroy( activeApp ); - } - else if ( iTabIndex == ETabConfigurations ) - { - _LIT( KConfigurations, "Configurations" ); - - TAknTreeItemID root = iListBox->AddNodeL( - KAknTreeIIDRoot, KConfigurations, KFlags, EFalse ); - - iArray = CHsContentInfoArray::NewL(); - - // Get all homescreen configurations - iHsCcApiClient->AppListL( *iArray ); - - _LIT( KConfiguration, "Configuration " ); - - for ( TInt i = 0; i < iArray->Array().Count(); i++ ) - { - TBuf< 32 > confname; - confname = KConfiguration(); - confname.AppendNum( i + 1 ); - - CHsContentInfo* app( iArray->Array()[i] ); - - iListBox->AddLeafL( root, confname, KFlags, EFalse ); - } - } - - else if ( iTabIndex == ETabViews ) - { - _LIT( KViews, "Views" ); - - TAknTreeItemID root = iListBox->AddNodeL( - KAknTreeIIDRoot, KViews, KFlags, EFalse ); - - iArray = CHsContentInfoArray::NewL(); - - // Get all homescreen views - iHsCcApiClient->ViewListL( *iArray ); - - _LIT( KView, "View " ); - - for ( TInt i = 0; i < iArray->Array().Count(); i++ ) - { - TBuf< 32 > viewname; - viewname = KView(); - viewname.AppendNum( i + 1 ); - - CHsContentInfo* view( iArray->Array()[i] ); - - iListBox->AddLeafL( root, viewname, KFlags, EFalse ); - } - } - - else if ( iTabIndex == ETabWidgets ) - { - _LIT( KWidgets, "Widgets" ); - - TAknTreeItemID root = iListBox->AddNodeL( - KAknTreeIIDRoot, KWidgets, KFlags, EFalse ); - - iArray = CHsContentInfoArray::NewL(); - - // Get all homescreen widgets - iHsCcApiClient->WidgetListL( *iArray ); - - for ( TInt i = 0; i < iArray->Array().Count(); i++ ) - { - CHsContentInfo* widget( iArray->Array()[i] ); - - iListBox->AddLeafL( root, widget->Name(), KFlags, EFalse ); - } - } - - DrawNow(); - } - -// ----------------------------------------------------------------------------- -// CHsContentControlListBox::PopulateList -// -// ----------------------------------------------------------------------------- -// -/*static*/ TInt CHsContentControlListBox::PopulateList( TAny* aAny ) - { - CHsContentControlListBox* self = - static_cast< CHsContentControlListBox* >( aAny ); - - TRAP_IGNORE( self->PopulateListL() ); - - return KErrNone; - } - -// End of file