--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/memspyui/source/MemSpyViewECom.cpp Wed Sep 01 12:30:35 2010 +0100
@@ -0,0 +1,475 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#include "MemSpyViewECom.h"
+
+// System includes
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyenginehelperecom.h>
+
+// User includes
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+CMemSpyViewECom::CMemSpyViewECom( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+: CMemSpyViewBase( aEngine, aObserver )
+ {
+ }
+
+
+void CMemSpyViewECom::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+ {
+ _LIT( KTitle, "ECom" );
+ SetTitleL( KTitle );
+
+ // Finish construction
+ CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+ // Select first item
+ TInt index = KErrNotFound;
+ if ( aSelectionRune != NULL )
+ {
+ iCurrent = reinterpret_cast< CMemSpyEngineEComCategory* >( aSelectionRune );
+ index = iEngine.HelperECom().IndexOf( *iCurrent );
+ }
+
+ if ( index >= 0 && index < iEngine.HelperECom().Count() )
+ {
+ iListBox->SetCurrentItemIndex( index );
+ HandleListBoxItemSelectedL( index );
+ iListBox->DrawDeferred();
+ }
+ }
+
+
+void CMemSpyViewECom::RefreshL()
+ {
+ SetListBoxModelL();
+ CMemSpyViewBase::RefreshL();
+ }
+
+
+TMemSpyViewType CMemSpyViewECom::ViewType() const
+ {
+ return EMemSpyViewTypeECom;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewECom::PrepareParentViewL()
+ {
+ CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+ CleanupStack::PushL( parent );
+ parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+ CleanupStack::Pop( parent );
+ return parent;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewECom::PrepareChildViewL()
+ {
+ CMemSpyViewBase* child = new(ELeave) CMemSpyViewEComCategory( iEngine, iObserver, *iCurrent );
+ CleanupStack::PushL( child );
+ child->ConstructL( Rect(), *Parent() );
+ CleanupStack::Pop( child );
+ return child;
+ }
+
+
+void CMemSpyViewECom::SetListBoxModelL()
+ {
+ CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+ listbox->Model()->SetItemTextArray( &iEngine.HelperECom() );
+ listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+ }
+
+
+void CMemSpyViewECom::HandleListBoxItemActionedL( TInt aIndex )
+ {
+ const TInt count = iEngine.HelperECom().Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComCategory& category = iEngine.HelperECom().At( aIndex );
+ iCurrent = &category;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+ }
+
+
+void CMemSpyViewECom::HandleListBoxItemSelectedL( TInt aIndex )
+ {
+ const TInt count = iEngine.HelperECom().Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComCategory& category = iEngine.HelperECom().At( aIndex );
+ iCurrent = &category;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewEComCategory::CMemSpyViewEComCategory( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComCategory& aCategory )
+: CMemSpyViewBase( aEngine, aObserver ), iCategory( aCategory )
+ {
+ }
+
+
+void CMemSpyViewEComCategory::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+ {
+ SetTitleL( iCategory.Name() );
+
+ // Finish construction
+ CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+ // Select first item
+ TInt index = KErrNotFound;
+ if ( aSelectionRune != NULL )
+ {
+ iCurrent = reinterpret_cast< CMemSpyEngineEComInterface* >( aSelectionRune );
+ index = iCategory.IndexOf( *iCurrent );
+ }
+
+ if ( index >= 0 && index < iCategory.Count() )
+ {
+ iListBox->SetCurrentItemIndex( index );
+ HandleListBoxItemSelectedL( index );
+ iListBox->DrawDeferred();
+ }
+ }
+
+
+void CMemSpyViewEComCategory::RefreshL()
+ {
+ SetListBoxModelL();
+ CMemSpyViewBase::RefreshL();
+ }
+
+
+TMemSpyViewType CMemSpyViewEComCategory::ViewType() const
+ {
+ return EMemSpyViewTypeEComCategory;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewEComCategory::PrepareParentViewL()
+ {
+ CMemSpyViewECom* parent = new(ELeave) CMemSpyViewECom( iEngine, iObserver );
+ CleanupStack::PushL( parent );
+ parent->ConstructL( Rect(), *Parent(), &iCategory );
+ CleanupStack::Pop( parent );
+ return parent;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewEComCategory::PrepareChildViewL()
+ {
+ CMemSpyViewBase* child = new(ELeave) CMemSpyViewEComInterface( iEngine, iObserver, *iCurrent );
+ CleanupStack::PushL( child );
+ child->ConstructL( Rect(), *Parent() );
+ CleanupStack::Pop( child );
+ return child;
+ }
+
+
+void CMemSpyViewEComCategory::SetListBoxModelL()
+ {
+ CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+ listbox->Model()->SetItemTextArray( &iCategory );
+ listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+ }
+
+
+void CMemSpyViewEComCategory::HandleListBoxItemActionedL( TInt aIndex )
+ {
+ const TInt count = iCategory.Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComInterface& entry = iCategory.At( aIndex );
+ iCurrent = &entry;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+ }
+
+
+void CMemSpyViewEComCategory::HandleListBoxItemSelectedL( TInt aIndex )
+ {
+ const TInt count = iCategory.Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComInterface& entry = iCategory.At( aIndex );
+ iCurrent = &entry;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewEComInterface::CMemSpyViewEComInterface( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComInterface& aInterface )
+: CMemSpyViewBase( aEngine, aObserver ), iInterface( aInterface )
+ {
+ }
+
+
+void CMemSpyViewEComInterface::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+ {
+ SetTitleL( iInterface.Name() );
+
+ // Finish construction
+ CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+ // Select first item
+ TInt index = KErrNotFound;
+ if ( aSelectionRune != NULL )
+ {
+ iCurrent = reinterpret_cast< CMemSpyEngineEComImplementation* >( aSelectionRune );
+ index = iInterface.IndexOf( *iCurrent );
+ }
+
+ if ( index >= 0 && index < iInterface.Count() )
+ {
+ iListBox->SetCurrentItemIndex( index );
+ HandleListBoxItemSelectedL( index );
+ iListBox->DrawDeferred();
+ }
+ }
+
+
+void CMemSpyViewEComInterface::RefreshL()
+ {
+ SetListBoxModelL();
+ CMemSpyViewBase::RefreshL();
+ }
+
+
+TMemSpyViewType CMemSpyViewEComInterface::ViewType() const
+ {
+ return EMemSpyViewTypeEComInterface;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewEComInterface::PrepareParentViewL()
+ {
+ CMemSpyViewEComCategory* parent = new(ELeave) CMemSpyViewEComCategory( iEngine, iObserver, iInterface.Category() );
+ CleanupStack::PushL( parent );
+ parent->ConstructL( Rect(), *Parent(), &iInterface );
+ CleanupStack::Pop( parent );
+ return parent;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewEComInterface::PrepareChildViewL()
+ {
+ CMemSpyViewBase* child = new(ELeave) CMemSpyViewEComImplementation( iEngine, iObserver, *iCurrent );
+ CleanupStack::PushL( child );
+ child->ConstructL( Rect(), *Parent() );
+ CleanupStack::Pop( child );
+ return child;
+ }
+
+
+void CMemSpyViewEComInterface::SetListBoxModelL()
+ {
+ CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+ listbox->Model()->SetItemTextArray( &iInterface );
+ listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+ }
+
+
+void CMemSpyViewEComInterface::HandleListBoxItemActionedL( TInt aIndex )
+ {
+ const TInt count = iInterface.Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComImplementation& entry = iInterface.At( aIndex );
+ iCurrent = &entry;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+ }
+
+
+void CMemSpyViewEComInterface::HandleListBoxItemSelectedL( TInt aIndex )
+ {
+ const TInt count = iInterface.Count();
+ if ( aIndex >= 0 && aIndex < count )
+ {
+ CMemSpyEngineEComImplementation& entry = iInterface.At( aIndex );
+ iCurrent = &entry;
+ }
+ else
+ {
+ iCurrent = NULL;
+ }
+
+ // Notify observer about item selection
+ ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewEComImplementation::CMemSpyViewEComImplementation( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComImplementation& aImplementation )
+: CMemSpyViewBase( aEngine, aObserver ), iImplementation( aImplementation )
+ {
+ }
+
+
+void CMemSpyViewEComImplementation::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+ {
+ SetTitleL( iImplementation.Name() );
+
+ // Finish construction
+ CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+ // Select first item
+ if ( iImplementation.MdcaCount() )
+ {
+ iListBox->SetCurrentItemIndex( 0 );
+ HandleListBoxItemSelectedL( 0 );
+ iListBox->DrawDeferred();
+ }
+ }
+
+
+void CMemSpyViewEComImplementation::RefreshL()
+ {
+ SetListBoxModelL();
+ CMemSpyViewBase::RefreshL();
+ }
+
+
+TMemSpyViewType CMemSpyViewEComImplementation::ViewType() const
+ {
+ return EMemSpyViewTypeEComImplementation;
+ }
+
+
+CMemSpyViewBase* CMemSpyViewEComImplementation::PrepareParentViewL()
+ {
+ CMemSpyViewEComInterface* parent = new(ELeave) CMemSpyViewEComInterface( iEngine, iObserver, iImplementation.Interface() );
+ CleanupStack::PushL( parent );
+ parent->ConstructL( Rect(), *Parent(), &iImplementation );
+ CleanupStack::Pop( parent );
+ return parent;
+ }
+
+
+void CMemSpyViewEComImplementation::SetListBoxModelL()
+ {
+ CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+ listbox->Model()->SetItemTextArray( &iImplementation );
+ listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+ }
+