--- a/memspyui/source/MemSpyViewWindowGroups.cpp Thu Aug 19 09:55:38 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,314 +0,0 @@
-/*
-* 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 "MemSpyViewWindowGroups.h"
-
-// System includes
-#include <eikclbd.h>
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-// Literal constants
-const TInt KMaxInfoLength = 128;
-
-
-CMemSpyViewWindowGroups::CMemSpyViewWindowGroups( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-: CMemSpyViewBase( aEngine, aObserver )
- {
- }
-
-
-CMemSpyViewWindowGroups::~CMemSpyViewWindowGroups()
- {
- delete iWindowGroupList;
- }
-
-
-void CMemSpyViewWindowGroups::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
- {
- _LIT( KTitle, "Window Groups" );
- SetTitleL( KTitle );
- //
- CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
- }
-
-
-CEikListBox* CMemSpyViewWindowGroups::ConstructListBoxL()
- {
- delete iListBox;
- iListBox = NULL;
- CAknSingleNumberStyleListBox* listbox = new (ELeave) CAknSingleNumberStyleListBox();
- iListBox = listbox;
- listbox->ConstructL( this, EAknListBoxSelectionList | EAknListBoxLoopScrolling );
- listbox->SetContainerWindowL( *this );
- listbox->CreateScrollBarFrameL( ETrue );
- SetListBoxModelL();
- listbox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
- listbox->SetListBoxObserver( this );
- listbox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
- listbox->SetObserver( this );
- return listbox;
- }
-
-void CMemSpyViewWindowGroups::RefreshL()
- {
- SetListBoxModelL();
- CMemSpyViewBase::RefreshL();
- }
-
-
-TMemSpyViewType CMemSpyViewWindowGroups::ViewType() const
- {
- return EMemSpyViewTypeWindowGroups;
- }
-
-
-CMemSpyViewBase* CMemSpyViewWindowGroups::PrepareParentViewL()
- {
- CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
- CleanupStack::PushL( parent );
- parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
- CleanupStack::Pop( parent );
- return parent;
- }
-
-
-CMemSpyViewBase* CMemSpyViewWindowGroups::PrepareChildViewL()
- {
- CMemSpyViewBase* child = NULL;
- if ( iListBox &&
- iListBox->Model()->NumberOfItems() &&
- iListBox->CurrentItemIndex() > KErrNotFound )
- {
- DetailsL();
- }
- return child;
- }
-
-
-void CMemSpyViewWindowGroups::SetListBoxModelL()
- {
- // Take ownership of new model
- MMemSpyEngineHelperWindowServer& windowServerManager = iEngine.HelperWindowServer();
- MMemSpyEngineWindowGroupList* windowGroupList = windowServerManager.WindowGroupListL();
- delete iWindowGroupList;
- iWindowGroupList = windowGroupList;
-
- // Set up list box
- CAknSingleNumberStyleListBox* listbox = static_cast< CAknSingleNumberStyleListBox* >( iListBox );
- listbox->Model()->SetItemTextArray( iWindowGroupList );
- listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- }
-
-
-TBool CMemSpyViewWindowGroups::HandleCommandL( TInt aCommand )
- {
- TBool handled = ETrue;
- //
- switch ( aCommand )
- {
- case EMemSpyCmdWindowGroupTerminate:
- {
- TRAPD( err, OnCmdEndL( aCommand ) );
- CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
- if ( err )
- {
- note->ExecuteLD( _L("Cannot terminate task") );
- }
- else
- {
- note->ExecuteLD( _L("Task terminated") );
- }
- break;
- }
- case EMemSpyCmdWindowGroupSwitchTo:
- {
- TRAPD( err, OnCmdSwitchToL() );
- if ( err )
- {
- CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
- note->ExecuteLD( _L("Cannot bring to foreground") );
- }
- break;
- }
- case EMemSpyCmdWindowGroupEnd:
- {
- TRAPD( err, OnCmdEndL( aCommand ) );
- CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
- if ( err )
- {
- note->ExecuteLD( _L("Cannot end task") );
- }
- else
- {
- note->ExecuteLD( _L("Task exited") );
- }
- break;
- }
- case EMemSpyCmdWindowGroupPanic:
- {
- TRAPD( err, OnCmdEndL( aCommand ) );
- CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
- if ( err )
- {
- note->ExecuteLD( _L("Cannot panic task") );
- }
- else
- {
- note->ExecuteLD( _L("Task panic'ed") );
- }
- break;
- }
- default:
- {
- handled = CMemSpyViewBase::HandleCommandL( aCommand );
- break;
- }
- }
- //
- return handled;
- }
-
-
-void CMemSpyViewWindowGroups::OnCmdSwitchToL()
- {
- MMemSpyEngineHelperWindowServer& windowServerManager = iEngine.HelperWindowServer();
- TInt id = iWindowGroupList->At( iListBox->CurrentItemIndex() ).iId;
- windowServerManager.SwitchToL( id );
- }
-
-
-void CMemSpyViewWindowGroups::OnCmdEndL( TInt aCommand )
- {
- TBool doTerminate = ETrue;
-
- CMemSpyEngineObjectContainer& container = iEngine.Container();
- TThreadId id = iWindowGroupList->At( iListBox->CurrentItemIndex() ).iThreadId;
-
- // Try to find the thread in question...
- CMemSpyProcess* process = NULL;
- CMemSpyThread* thread = NULL;
- User::LeaveIfError( container.ProcessAndThreadByThreadId( id, process, thread ) );
-
- if ( thread )
- {
- thread->Open();
- //
- if ( thread->IsSystemPermanent() || thread->IsSystemCritical() )
- {
- CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
- doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
- }
- //
- if ( doTerminate )
- {
- switch ( aCommand )
- {
- case EMemSpyCmdWindowGroupTerminate:
- {
- thread->TerminateL();
- break;
- }
- case EMemSpyCmdWindowGroupEnd:
- {
- thread->KillL();
- break;
- }
- case EMemSpyCmdWindowGroupPanic:
- {
- thread->PanicL();
- break;
- }
- default:
- {
- // Programming error
- __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
- }
- }
- }
- }
- RefreshL();
- }
-
-
-void CMemSpyViewWindowGroups::DetailsL()
- {
- HBufC* messageBuf = HBufC::NewLC( 4096 );
- TPtr messagePtr = messageBuf->Des();
-
- // Fetch data from helper
- TMemSpyEngineWindowGroupDetails selectedObject;
- MMemSpyEngineHelperWindowServer& windowServerManager = iEngine.HelperWindowServer();
- TInt id = iWindowGroupList->At( iListBox->CurrentItemIndex() ).iId;
- windowServerManager.GetWindowGroupDetailsL( id, selectedObject );
-
- // Append info to string buffer
- AppendFormatString( messagePtr, _L("WG ID: %d\n"), selectedObject.iId );
- AppendFormatString( messagePtr, _L("Client ThreadId: %Lu\n"), selectedObject.iThreadId.Id() );
- TFullName name;
- name.Copy( selectedObject.iFullName );
- AppendFormatString( messagePtr, _L("Thr: %S\n"), &name );
- name.Zero();
- AppendFormatString( messagePtr, _L("Priority: %d\n"), selectedObject.iPriority );
- AppendFormatString( messagePtr, _L("Handle: 0x%08X\n"), selectedObject.iWindowGroupHandle );
- name.Copy( selectedObject.iName );
- AppendFormatString( messagePtr, _L("Name: %S\n"), &name );
- name.Zero();
- AppendFormatString( messagePtr, _L("UID: 0x%08X\n"), selectedObject.iUID );
- AppendFormatString( messagePtr, _L("IsBusy: %d\n"), selectedObject.iIsBusy );
- AppendFormatString( messagePtr, _L("IsSystem: %d\n"), selectedObject.iIsSystem );
- AppendFormatString( messagePtr, _L("IsHidden: %d\n"), selectedObject.iIsHidden );
- name.Copy( selectedObject.iCaption );
- AppendFormatString( messagePtr, _L("Caption: %S\n"), &name );
- name.Zero();
- name.Copy( selectedObject.iDocName );
- AppendFormatString( messagePtr, _L("Docname: %S"), &name );
- name.Zero();
-
- // Display the buffer on a dialog
- CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog( CAknQueryDialog::ENoTone );
- dialog->PrepareLC( R_MEMSPY_KERNEL_OBJECT_DETAILS_DIALOG );
- TFileName headerText;
- headerText.Copy( selectedObject.iFullName );
- dialog->SetHeaderTextL( headerText );
- dialog->SetMessageTextL( messagePtr );
- dialog->RunLD();
-
- CleanupStack::PopAndDestroy( messageBuf );
- }
-
-
-void CMemSpyViewWindowGroups::AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... )
- {
- TBuf<KMaxInfoLength> infoString;
- VA_LIST list;
- VA_START ( list, aFmt );
- infoString.FormatList( aFmt, list );
- aPtr.Append( infoString );
- }
-
-