memspyui/ui/hb/src/memspykernelobjectview.cpp
changeset 48 da3ec8478e66
parent 47 11fa016241a4
child 54 9347c563e054
--- a/memspyui/ui/hb/src/memspykernelobjectview.cpp	Thu Sep 02 20:27:24 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +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 <QStringListModel>
-
-#include "memspykernelobjectview.h"
-#include "viewmanager.h"
-
-MemSpyKernelObjectModel::MemSpyKernelObjectModel(EngineWrapper &engine, int objectType, QObject *parent) :
-	QAbstractListModel(parent),
-	mObjects(engine.getKernelObjects(objectType))
-{
-}
-
-MemSpyKernelObjectModel::~MemSpyKernelObjectModel()
-{
-	qDeleteAll(mObjects);
-}
-	
-int MemSpyKernelObjectModel::rowCount(const QModelIndex &parent) const
-{
-	Q_UNUSED(parent);
-	return mObjects.count();
-}
-	
-QVariant MemSpyKernelObjectModel::data(const QModelIndex &index, int role) const
-{
-	if (role == Qt::DisplayRole) {
-		QStringList lines;
-		lines << mObjects.at(index.row())->name();
-		
-		return lines;
-	}
-	
-	if (role == Qt::UserRole) {
-		return qVariantFromValue<void*>(mObjects.at(index.row()));
-	}
-	
-	return QVariant();
-}
-
-void MemSpyKernelObjectView::initialize(const QVariantMap& params)
-{
-	QStringList list = QStringList() << "Threads" << "Processes" << "Chunks" << "Libraries" <<
-			"Semaphores" << "Mutexes" << "Timers" << "Servers" << "Sessions" << "Logical Devices" <<
-			"Physical Devices" << "Logical Channels" << "Change Notifiers" << "Undertakers" <<
-			"Message Queues" << "Property Refs." << "Conditional Vars.";
-	
-	int type = params.value("type").toInt();
-	
-	setTitle(list.at(type));
-	
-	MemSpyView::initialize(params);
-	
-	//mListView.setModel(new MemSpyKernelObjectTypeModel(mEngine, this));
-	mListView.setModel(new MemSpyKernelObjectModel(mEngine, type, this));
-	
-	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-bool MemSpyKernelObjectView::isBreadCrumbVisible() const
-{
-    return true;
-}
-            
-QString MemSpyKernelObjectView::getBreadCrumbText() const
-{
-    return tr("Kernel Objects");
-}
-
-
-void MemSpyKernelObjectView::itemClicked(const QModelIndex& index)
-{
-	QVariantMap map;
-	map.insert("details", getDetails(static_cast<MemSpyKernelObject*>(qVariantValue<void*>(index.data(Qt::UserRole)))));
-	map.insert("typeName", title());
-	map.insert("objectName", static_cast<MemSpyKernelObject*>(qVariantValue<void*>(index.data(Qt::UserRole)))->nameDetail());
-    mViewManager.showView(KernelObjectDetailView, map);
-}
-
-QStringList MemSpyKernelObjectView::getDetails(MemSpyKernelObject *object)
-{
-	QStringList result;
-	
-	result << QString("%1: %2").arg(tr("Name")).arg(object->nameDetail());
-	result << QString("%1: %2").arg(tr("Full Name")).arg(object->name());
-	result << QString("%1: %2").arg(tr("AccessCount")).arg(object->accessCount());
-	result << QString("%1: %2").arg(tr("UniqueID")).arg(object->uniqueId());
-	result << QString("%1: %2").arg(tr("Protection")).arg(object->protection());
-	result << QString("%1: %2").arg(tr("OwnrAddr")).arg(object->addressOfKernelOwner());
-	result << QString("%1: %2").arg(tr("KernelAddr")).arg(object->kernelAddress());
-		    
-	    // Object type specific attributes:
-	    switch (object->type())
-	        {
-	        case KernelObjectTypeUnknown:
-	            {
-	            break;
-	            }
-	        case KernelObjectTypeThread:
-	            {
-	            result << QString("%1: %2").arg(tr("OwnrPrAddr")).arg(object->addressOfOwningProcess());
-	            result << QString("%1: %2").arg(tr("ThreadID")).arg(object->id());
-	            result << QString("%1: %2").arg(tr("Priority")).arg(object->priority());
-	            result << QString("%1: %2").arg(tr("Proc")).arg(object->nameOfOwner());
-	            break;
-	            }
-	        case KernelObjectTypeProcess:
-	            {
-	            result << QString("%1: %2").arg(tr("OwnrPrAddr")).arg(object->addressOfOwningProcess());
-	            result << QString("%1: %2").arg(tr("CreatorId")).arg(object->creatorId());
-	            result << QString("%1: %2").arg(tr("Attributes")).arg(object->attributes());
-	            result << QString("%1: %2").arg(tr("StckChnk")).arg(object->addressOfDataBssStackChunk());
-	            result << QString("%1: %2").arg(tr("ProcessID")).arg(object->id());
-	            result << QString("%1: %2").arg(tr("Priority")).arg(object->priority());
-	            result << QString("%1: %2").arg(tr("SecurityZone")).arg(object->securityZone());
-	            
-	            /* TODO: to solve process details
-	            CMemSpyEngineObjectContainer& container = iEngine.Container();
-	            TProcessId id( iKernelObjectItems[iListBox->CurrentItemIndex().iId );
-	            TRAP_IGNORE(
-	                CMemSpyProcess& process = container.ProcessByIdL( id );
-	                AppendFormatString( messagePtr, _L("\nSID: 0x%08X\n"), process.SID() );
-	                AppendFormatString( messagePtr, _L("VID: 0x%08X\n"), process.VID() );
-	                AppendFormatString( messagePtr, _L("UID1: 0x%08X\n"), process.UIDs()[0].iUid  );
-	                AppendFormatString( messagePtr, _L("UID2: 0x%08X\n"), process.UIDs()[1].iUid  );
-	                AppendFormatString( messagePtr, _L("UID3: 0x%08X\n"), process.UIDs()[2].iUid );
-	                AppendFormatString( messagePtr, _L("Caps: 0x%08X%08X"), process.Capabilities().iCaps[0], process.Capabilities().iCaps[1]);
-	                );
-	            */
-	            break;
-	            }
-	        case KernelObjectTypeChunk:
-	            {
-	            result << QString("%1: %2").arg(tr("OwnrPrAddr")).arg(object->addressOfOwningProcess());
-	            result << QString("%1: %2").arg(tr("Size")).arg(object->size());
-	            result << QString("%1: %2").arg(tr("MaxSize")).arg(object->maxSize());
-	            result << QString("%1: %2").arg(tr("Bottom")).arg(object->bottom());
-	            result << QString("%1: %2").arg(tr("Top")).arg(object->top());
-	            result << QString("%1: %2").arg(tr("Attr")).arg(object->attributes());
-	            result << QString("%1: %2").arg(tr("Start")).arg(object->startPos());
-	            result << QString("%1: %2").arg(tr("CntrlID")).arg(object->controllingOwner());
-	            result << QString("%1: %2").arg(tr("Restrictions")).arg(object->restrictions());
-	            result << QString("%1: %2").arg(tr("MapAttr")).arg(object->mapAttr());
-	            result << QString("%1: %2").arg(tr("Type")).arg(object->chunkType());
-	            result << QString("%1: %2").arg(tr("Proc")).arg(object->nameOfOwner());
-	            break;
-	            }
-	        case KernelObjectTypeLibrary:
-	            {
-	            result << QString("%1: %2").arg(tr("MapCount")).arg(object->mapCount());
-	            result << QString("%1: %2").arg(tr("State")).arg(object->state());
-	            result << QString("%1: %2").arg(tr("CodeSeg")).arg(object->addressOfCodeSeg());
-	            break;
-	            }
-	        case KernelObjectTypeSemaphore:
-	            {
-	            result << QString("%1: %2").arg(tr("Count")).arg(object->count());
-	            result << QString("%1: %2").arg(tr("Resetting")).arg(object->resetting());
-	            break;
-	            }
-	        case KernelObjectTypeMutex:
-	            {
-	            result << QString("%1: %2").arg(tr("HoldCount")).arg(object->count());
-	            result << QString("%1: %2").arg(tr("WaitCount")).arg(object->waitCount());
-	            result << QString("%1: %2").arg(tr("Resetting")).arg(object->resetting());
-	            result << QString("%1: %2").arg(tr("Order")).arg(object->order());
-	            break;
-	            }
-	        case KernelObjectTypeTimer:
-	            {
-	            result << QString("%1: %2").arg(tr("State")).arg(object->timerState());
-	            result << QString("%1: %2").arg(tr("Type")).arg(object->timerType());
-	            break;
-	            }
-	        case KernelObjectTypeServer:
-	            {
-	            result << QString("%1: %2").arg(tr("ThrdAddr")).arg(object->addressOfOwningThread());
-	            result << QString("%1: %2").arg(tr("Thr")).arg(object->nameOfOwner());
-	            result << QString("%1: %2").arg(tr("Type")).arg(object->sessionType());
-//	            RArray<TMemSpyDriverServerSessionInfo> sessions;
-//	            CleanupClosePushL( sessions );
-	            /* TODO: to solve server sessions
-	            iEngine.HelperServer().GetServerSessionsL( iKernelObjectItems[iListBox->CurrentItemIndex(), sessions );
-	            const TInt count = sessions.Count();
-	            for ( TInt i = 0; i < count; i++ )
-	                {
-	                const TMemSpyDriverServerSessionInfo& session = sessions[ i ];
-	                AppendFormatString( messagePtr, _L("SessAddr: 0x%08X\n"), session.iAddress );
-	                TFullName sessName;
-	                sessName.Copy( session.iName );
-	                AppendFormatString( messagePtr, _L("Sess: %S\n"), &sessName );
-	                }
-	            CleanupStack::PopAndDestroy( &sessions );
-	            */
-	            break;
-	            }
-	        case KernelObjectTypeSession:
-	            {
-	            result << QString("%1: %2").arg(tr("Server")).arg(object->addressOfServer());
-				result << QString("%1: %2").arg(tr("Srv")).arg(object->name());
-				result << QString("%1: %2").arg(tr("AccCount")).arg(object->totalAccessCount());
-				result << QString("%1: %2").arg(tr("SesType")).arg(object->sessionType());
-				result << QString("%1: %2").arg(tr("SvrType")).arg(object->svrSessionType());
-				result << QString("%1: %2").arg(tr("MsgCount")).arg(object->msgCount());
-				result << QString("%1: %2").arg(tr("MsgLimit")).arg(object->msgLimit());
-
-	            break;
-	            }
-	        case KernelObjectTypeLogicalDevice:
-	            {
-	            result << QString("%1: %2").arg(tr("Version")).arg(object->version());
-				result << QString("%1: %2").arg(tr("ParseMask")).arg(object->parseMask());
-				result << QString("%1: %2").arg(tr("UnitsMask")).arg(object->unitsMask());
-				result << QString("%1: %2").arg(tr("Open channels")).arg(object->openChannels());
-	            break;
-	            }
-	        case KernelObjectTypePhysicalDevice:
-	            {
-	            result << QString("%1: %2").arg(tr("Version")).arg(object->version());
-				result << QString("%1: %2").arg(tr("UnitsMask")).arg(object->unitsMask());
-				result << QString("%1: %2").arg(tr("CodeSeg")).arg(object->addressOfCodeSeg());
-	            break;
-	            }
-	        case KernelObjectTypeLogicalChannel:
-	            {
-	            // No other details
-	            break;
-	            }
-	        case KernelObjectTypeChangeNotifier:
-	            {
-	            result << QString("%1: %2").arg(tr("Changes")).arg(object->changes());
-				result << QString("%1: %2").arg(tr("ThrdAddr")).arg(object->addressOfOwningThread());
-				result << QString("%1: %2").arg(tr("Thr")).arg(object->nameOfOwner());
-	            break;
-	            }
-	        case KernelObjectTypeUndertaker:
-	            {
-	            result << QString("%1: %2").arg(tr("ThrdAddr")).arg(object->addressOfOwningThread());
-	            result << QString("%1: %2").arg(tr("Thr")).arg(object->nameOfOwner());
-				break;
-	            }
-	        case KernelObjectTypeMsgQueue:
-	            {
-	            // No other details
-	            break;
-	            }
-	        case KernelObjectTypePropertyRef:
-	            {
-	            /*
-	            Not listing details here, as propertyRef is not listed in TaskMgr.
-	            Following propertyRef attributes are available at engine side. 
-	            
-	            IsReady
-	            Type
-	            Category
-	            Key
-	            RefCount
-	            ThreadId
-	            CreatorSID
-	            */
-	            break;
-	            }
-	        case KernelObjectTypeCondVar:
-	            {
-	            result << QString("%1: %2").arg(tr("Resetting")).arg(object->resetting());
-				result << QString("%1: %2").arg(tr("Mutex")).arg(object->addressOfOwningThread());
-				result << QString("%1: %2").arg(tr("Mtx")).arg(object->nameOfOwner());
-				result << QString("%1: %2").arg(tr("WaitCount")).arg(object->waitCount());
-	            
-//	            RArray<TMemSpyDriverCondVarSuspendedThreadInfo> threads;
-//	            CleanupClosePushL( threads );
-	            /* TODO: to solve thread cond. vars.
-	            iEngine.HelperCondVar().GetCondVarSuspendedThreadsL( iKernelObjectItems[iListBox->CurrentItemIndex(), threads );
-	            const TInt count = threads.Count();
-	            for ( TInt i = 0; i < count; i++ )
-	                {
-	                const TMemSpyDriverCondVarSuspendedThreadInfo& thr = threads[ i ];
-	                AppendFormatString( messagePtr, _L("SuspThrdAddr: 0x%08X\n"), thr.iAddress );
-	                TFullName thrName;
-	                thrName.Copy( thr.iName );
-	                AppendFormatString( messagePtr, _L("Thr: %S\n"), &thrName );
-	                }
-	            CleanupStack::PopAndDestroy( &threads );
-	            */
-	            break;
-	            }
-//	        default:
-//	            {
-//	            // Programming error
-//	            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
-//	            }
-	        }
-	
-	return result;
-}