diff -r 4f2773374eff -r 4b22a598b890 memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp --- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp Fri May 14 15:53:02 2010 +0300 +++ b/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp Thu May 27 12:52:19 2010 +0300 @@ -25,6 +25,10 @@ #include #include #include +#include + +// UI Utils include +#include "MemSpyUiUtils.h" // User includes #include "MemSpyContainerObserver.h" @@ -42,16 +46,15 @@ const TInt KMemSpyIdleResetListboxTimerPeriod = 250000; -CMemSpyViewThreadInfoItemList::CMemSpyViewThreadInfoItemList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThread& aThread ) -: CMemSpyViewBase( aEngine, aObserver ), iThread( aThread ) +CMemSpyViewThreadInfoItemList::CMemSpyViewThreadInfoItemList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcess, TThreadId aThread ) +: CMemSpyViewBase( aSession, aObserver ), iParentProcessId( aProcess ), iThreadId( aThread ) { - iThread.Process().Open(); - iThread.Open(); } CMemSpyViewThreadInfoItemList::~CMemSpyViewThreadInfoItemList() { + /* TODO: to consider what to do with this delete iIdleResetListboxTimer; TRAP_IGNORE( @@ -63,9 +66,7 @@ { iCurrentInfoItem->Close(); } - - iThread.Process().Close(); - iThread.Close(); + */ } @@ -77,13 +78,15 @@ // iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityIdle ); // + /* CMemSpyThreadInfoContainer& container = iThread.InfoContainerL(); container.ObserverAddL( *this ); + */ // CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune ); // - if ( aSelectionRune ) - { + /*if ( aSelectionRune ) + { CMemSpyThreadInfoItemBase* selectedItem = reinterpret_cast< CMemSpyThreadInfoItemBase* >( aSelectionRune ); const TInt index = container.InfoItemIndexByType( selectedItem->Type() ); if ( index >= 0 && index < iListBox->Model()->NumberOfItems() ) @@ -93,32 +96,18 @@ } } else if ( container.MdcaCount() > 0 ) - { - iListBox->SetCurrentItemIndex( 0 ); + {*/ + iListBox->SetCurrentItemIndex( 0 ); //for now HandleListBoxItemSelectedL( 0 ); - } + //} } - -const CMemSpyProcess& CMemSpyViewThreadInfoItemList::Process() const - { - return iThread.Process(); - } - - -const CMemSpyThread& CMemSpyViewThreadInfoItemList::Thread() const - { - return iThread; - } - - const CMemSpyThreadInfoItemBase& CMemSpyViewThreadInfoItemList::CurrentInfoItem() const { - __ASSERT_ALWAYS( iCurrentInfoItem != NULL, User::Invariant() ); + //__ASSERT_ALWAYS( iCurrentInfoItem != NULL, User::Invariant() ); return *iCurrentInfoItem; } - void CMemSpyViewThreadInfoItemList::RefreshL() { SetListBoxModelL(); @@ -134,9 +123,9 @@ CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareParentViewL() { - CMemSpyViewBase* parent = new(ELeave) CMemSpyViewThreads( iEngine, iObserver, iThread.Process() ); + CMemSpyViewBase* parent = new(ELeave) CMemSpyViewThreads( iMemSpySession, iObserver, iParentProcessId ); CleanupStack::PushL( parent ); - parent->ConstructL( Rect(), *Parent(), &iThread ); + parent->ConstructL( Rect(), *Parent() ); CleanupStack::Pop( parent ); return parent; } @@ -144,38 +133,41 @@ CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareChildViewL() { - __ASSERT_ALWAYS( iCurrentInfoItem != NULL, User::Invariant() ); CMemSpyViewBase* child = NULL; - // Decide what type of child view to create... - const TMemSpyThreadInfoItemType type = iCurrentInfoItem->Type(); - // + TMemSpyThreadInfoItemType type; + iMemSpySession.GetInfoItemType( iCurrentInfoItemId, iThreadId, type ); + switch( type ) - { + { case EMemSpyThreadInfoItemTypeHeap: - child = new(ELeave) CMemSpyViewThreadInfoItemHeap( iEngine, iObserver, iThread.InfoContainerL() ); - break; + child = new(ELeave) CMemSpyViewThreadInfoItemHeap( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); + break; case EMemSpyThreadInfoItemTypeStack: - child = new(ELeave) CMemSpyViewThreadInfoItemStack( iEngine, iObserver, iThread.InfoContainerL() ); - break; + child = new(ELeave) CMemSpyViewThreadInfoItemStack( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); + break; case EMemSpyThreadInfoItemTypeChunk: - child = new(ELeave) CMemSpyViewThreadInfoItemChunk( iEngine, iObserver, iThread.InfoContainerL() ); + child = new(ELeave) CMemSpyViewThreadInfoItemChunk( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); break; case EMemSpyThreadInfoItemTypeCodeSeg: - child = new(ELeave) CMemSpyViewThreadInfoItemCodeSeg( iEngine, iObserver, iThread.InfoContainerL() ); - break; + child = new(ELeave) CMemSpyViewThreadInfoItemCodeSeg( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); + break; case EMemSpyThreadInfoItemTypeServer: - child = new(ELeave) CMemSpyViewThreadInfoItemServer( iEngine, iObserver, iThread.InfoContainerL() ); - break; + child = new(ELeave) CMemSpyViewThreadInfoItemServer( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); + break; case EMemSpyThreadInfoItemTypeActiveObject: - child = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iEngine, iObserver, iThread.InfoContainerL() ); - break; + child = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); + break; case EMemSpyThreadInfoItemTypeGeneralInfo: - child = new(ELeave) CMemSpyViewThreadInfoItemGeneralInfo( iEngine, iObserver, iThread.InfoContainerL() ); + child = new(ELeave) CMemSpyViewThreadInfoItemGeneralInfo( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); break; + /* + * This subview is permanently removed from Thread Info Item subview. + * case EMemSpyThreadInfoItemTypeMemoryTracking: child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, iThread.InfoContainerL() ); break; + */ case EMemSpyThreadInfoItemTypeSession: case EMemSpyThreadInfoItemTypeSemaphore: case EMemSpyThreadInfoItemTypeMutex: @@ -192,14 +184,14 @@ case EMemSpyThreadInfoItemTypeOtherProcesses: case EMemSpyThreadInfoItemTypeOwnedThreadHandles: case EMemSpyThreadInfoItemTypeOwnedProcessHandles: - child = new(ELeave) CMemSpyViewThreadInfoItemGeneric( iEngine, iObserver, iThread.InfoContainerL(), type ); + child = new(ELeave) CMemSpyViewThreadInfoItemGeneric( iMemSpySession, iObserver, iParentProcessId, iThreadId, type ); break; default: - __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0) ); - break; + // __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0) ); + break; } - // + CleanupStack::PushL( child ); child->ConstructL( Rect(), *Parent() ); CleanupStack::Pop( child ); @@ -230,7 +222,7 @@ { if ( aResourceId == R_MEMSPY_MENUPANE ) { - aMenuPane->SetItemDimmed( EMemSpyCmdThread, iThread.IsDead() ); + // aMenuPane->SetItemDimmed( EMemSpyCmdThread, iThread.IsDead() ); //TODO } else if ( aResourceId == MenuCascadeResourceId() ) { @@ -243,12 +235,12 @@ void CMemSpyViewThreadInfoItemList::OnCmdInfoHandlesL() { - iThread.InfoContainerForceSyncronousConstructionL().PrintL(); + //iThread.InfoContainerForceSyncronousConstructionL().PrintL(); //TODO: } void CMemSpyViewThreadInfoItemList::HandleMemSpyEngineInfoContainerEventL( TEvent aEvent, TMemSpyThreadInfoItemType aType ) - { + {/* if ( aEvent == EInfoItemChanged ) { } @@ -263,13 +255,123 @@ iIdleResetListboxTimer->Cancel(); iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) ); + */ } void CMemSpyViewThreadInfoItemList::SetListBoxModelL() - { - CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); - listbox->Model()->SetItemTextArray( &iThread.InfoContainerL() ); + { + CDesC16ArrayFlat* iModel = new (ELeave) CDesC16ArrayFlat( 32 ); + + HBufC* iItem = HBufC::NewL( 32 ); + + iItem = MemSpyUiUtils::FormatItem( KGeneral ); + TPtr pItem( iItem->Des() ); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KHeap ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KStack ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KChunks ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KCodeSegs ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KOpenFiles ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KActiveObjects ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KThreadHandlers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KProcessHandlers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KServers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KConnections ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KSemaphores ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KThreadReferences ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KProcessReferences ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KMutexes ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KTimers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KDD ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KChangeNotif ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KUndertakers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KLogicalDrivers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + iItem = MemSpyUiUtils::FormatItem( KPhysicalDrivers ); + pItem = iItem->Des(); + iModel->AppendL( pItem ); + pItem.Zero(); + + CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox ); + listbox->Model()->SetItemTextArray( iModel ); listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); } @@ -283,6 +385,9 @@ void CMemSpyViewThreadInfoItemList::HandleListBoxItemSelectedL( TInt aIndex ) { + iCurrentInfoItemId = aIndex; + + /* if ( iCurrentInfoItem ) { CMemSpyThreadInfoItemBase* item = iCurrentInfoItem; @@ -293,7 +398,7 @@ // Identify the type of item to display... iCurrentInfoItem = &iThread.InfoContainerL().Item( aIndex ); iCurrentInfoItem->Open(); - +*/ // Notify observer about item selection ReportEventL( MMemSpyViewObserver::EEventItemSelected ); } @@ -309,6 +414,7 @@ void CMemSpyViewThreadInfoItemList::DoIdleUpdateListBoxModelL() { + /* CMemSpyThreadInfoContainer& container = iThread.InfoContainerL(); // Try to maintain current item selection if at all possible. @@ -332,5 +438,5 @@ } iIdleResetListboxTimer->Cancel(); + */ } -