idlehomescreen/examples/hscontentcontrolexample/src/HsContentControlListBox.cpp
branchRCL_3
changeset 102 ba63c83f4716
parent 93 b01126ce0bec
child 103 966d119a7e67
--- 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 <aknlists.h>
-#include <akncontext.h>
-#include <akntitle.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <akntabgrp.h>
-#include <aknstyluspopupmenu.h>
-
-#include <aknsinglestyletreelist.h>
-#include <aknsbasicbackgroundcontrolcontext.h>
-
-#include <hsccapiclient.h>
-#include <hscontentinfo.h>
-#include <hscontentinfoarray.h>
-
-#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