--- 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 <memspy/engine/memspyengineobjectthreadinfoobjects.h>
#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspysession.h>
+
+// 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();
+ */
}
-