201035
authorhgs
Fri, 03 Sep 2010 17:11:21 +0300
changeset 51 b048e15729d6
parent 44 5db69f4c3d06
child 52 36d60d12b4af
201035
creator/engine/inc/creator.hrh
creator/engine/inc/creator_file.h
creator/engine/inc/creator_phonebook.h
creator/engine/inc/creator_phonebookapi.h
creator/engine/inc/creator_phonebookwrapper.h
creator/engine/src/creator_calendar.cpp
creator/engine/src/creator_contactelement.cpp
creator/engine/src/creator_file.cpp
creator/engine/src/creator_message.cpp
creator/engine/src/creator_note.cpp
creator/engine/src/creator_phonebook.cpp
creator/engine/src/creator_phonebookapi.cpp
creator/engine/src/creator_phonebookbase.cpp
creator/engine/src/creator_phonebookwrapper.cpp
creator/inc/engine.h
creator/inc/notifications.h
creator/src/engine.cpp
creator/src/enginewrapper.cpp
creator/src/notifications.cpp
filebrowser/engine/FB.hrh
filebrowser/engine/FBFileOps.cpp
filebrowser/engine/FBFileUtils.cpp
filebrowser/engine/FBFileUtils.h
filebrowser/engine/FBFolderSelector.cpp
filebrowser/engine/FBFolderSelector.h
filebrowser/engine/engine.h
filebrowser/group/ReleaseNotes_FileBrowser.txt
filebrowser/icons/qtg_indi_status_back.svg
filebrowser/ui/inc/driveentry.h
filebrowser/ui/inc/editorview.h
filebrowser/ui/inc/enginewrapper.h
filebrowser/ui/inc/fbattributesview.h
filebrowser/ui/inc/fbdriveentry.h
filebrowser/ui/inc/fbdrivemodel.h
filebrowser/ui/inc/fbdriveview.h
filebrowser/ui/inc/fbeditorview.h
filebrowser/ui/inc/fbfileentry.h
filebrowser/ui/inc/fbfileview.h
filebrowser/ui/inc/fbfolderselectiondialog.h
filebrowser/ui/inc/fbfolderselectorwrapper.h
filebrowser/ui/inc/fbmainwindow.h
filebrowser/ui/inc/fbsearchview.h
filebrowser/ui/inc/fbsettingsview.h
filebrowser/ui/inc/fileentry.h
filebrowser/ui/inc/menuaction.h
filebrowser/ui/inc/searchview.h
filebrowser/ui/inc/settingsview.h
filebrowser/ui/src/driveentry.cpp
filebrowser/ui/src/editorview.cpp
filebrowser/ui/src/enginewrapper.cpp
filebrowser/ui/src/fbattributesview.cpp
filebrowser/ui/src/fbdriveentry.cpp
filebrowser/ui/src/fbdrivelistviewitem.cpp
filebrowser/ui/src/fbdrivemodel.cpp
filebrowser/ui/src/fbdriveview.cpp
filebrowser/ui/src/fbeditorview.cpp
filebrowser/ui/src/fbfileentry.cpp
filebrowser/ui/src/fbfilemodel.cpp
filebrowser/ui/src/fbfileview.cpp
filebrowser/ui/src/fbfolderselectiondialog.cpp
filebrowser/ui/src/fbfolderselectorwrapper.cpp
filebrowser/ui/src/fbmainwindow.cpp
filebrowser/ui/src/fbsearchview.cpp
filebrowser/ui/src/fbsettingsview.cpp
filebrowser/ui/src/filebrowser.cpp
filebrowser/ui/src/fileentry.cpp
filebrowser/ui/src/main.cpp
filebrowser/ui/src/notifications.cpp
filebrowser/ui/src/searchview.cpp
filebrowser/ui/src/settingsview.cpp
filebrowser/ui/ui.pro
filebrowser/ui/ui.qrc
layers.sysdef.xml
loadgen/engine/inc/loadgen_applications.h
loadgen/engine/inc/loadgen_bluetooth.h
loadgen/engine/inc/loadgen_cpuload.h
loadgen/engine/inc/loadgen_httpreceiver.h
loadgen/engine/inc/loadgen_keypress.h
loadgen/engine/inc/loadgen_memoryeat.h
loadgen/engine/inc/loadgen_messages.h
loadgen/engine/inc/loadgen_netconn.h
loadgen/engine/inc/loadgen_phonecall.h
loadgen/engine/inc/loadgen_photocapture.h
loadgen/engine/inc/loadgen_pointerevent.h
loadgen/engine/src/loadgen_applications.cpp
loadgen/engine/src/loadgen_httpreceiver.cpp
loadgen/engine/src/loadgen_memoryeat.cpp
loadgen/engine/src/loadgen_netconn.cpp
loadgen/ui/hb/hb.pro
loadgen/ui/hb/inc/engine.h
loadgen/ui/hb/inc/enginewrapper.h
loadgen/ui/hb/src/engine.cpp
loadgen/ui/hb/src/enginewrapper.cpp
loadgen/ui/hb/src/main.cpp
loadgen/ui/hb/src/mainview.cpp
loadgen/ui/hb/src/notifications.cpp
memspyui/data/Example_MemSpyProcessMemoryTrackingAutoStartConfig.xml
memspyui/data/MemSpyEComInterfaceIds.xml
memspyui/data/MemSpyProcessMemoryTrackingAutoStartConfig.xml
memspyui/data/backup_registration.xml
memspyui/data/memspyui.rss
memspyui/data/memspyui_reg.rss
memspyui/group/bld.inf
memspyui/group/bld_generic.inf
memspyui/group/group.pro
memspyui/group/memspyui_icons_aif.mk
memspyui/group/memspyui_stub_sis.mk
memspyui/icons/qgn_menu_memspyui.svg
memspyui/memspyui.pro
memspyui/memspywindowserverhelper/bwins/memspywindowserverhelperu.def
memspyui/memspywindowserverhelper/eabi/memspywindowserverhelperu.def
memspyui/memspywindowserverhelper/group/bld.inf
memspyui/memspywindowserverhelper/group/memspywindowserverhelper.mmp
memspyui/memspywindowserverhelper/inc/MemSpyEngineHelperWindowServerImpl.h
memspyui/memspywindowserverhelper/src/MemSpyEngineHelperWindowServerImpl.cpp
memspyui/rom/memspyui.iby
memspyui/sis/MemSpy_S60-50.pkg
memspyui/sis/MemSpy_S60-50.sis
memspyui/sis/MemSpy_S60-52.pkg
memspyui/sis/MemSpy_S60-52.sis
memspyui/sis/MemSpy_stub.pkg
memspyui/ui/avkon/group/MemSpyCapabilities.mmh
memspyui/ui/avkon/group/bld.inf
memspyui/ui/avkon/group/memspyui.mmp
memspyui/ui/avkon/inc/MemSpy.hrh
memspyui/ui/avkon/inc/MemSpyApp.h
memspyui/ui/avkon/inc/MemSpyAppUi.h
memspyui/ui/avkon/inc/MemSpyContainer.h
memspyui/ui/avkon/inc/MemSpyContainerObserver.h
memspyui/ui/avkon/inc/MemSpyDeviceWideOperationDialog.h
memspyui/ui/avkon/inc/MemSpyDocument.h
memspyui/ui/avkon/inc/MemSpyExportBitmapsToMemoryCardDialog.h
memspyui/ui/avkon/inc/MemSpySettings.h
memspyui/ui/avkon/inc/MemSpyUiUtils.h
memspyui/ui/avkon/inc/MemSpyViewBase.h
memspyui/ui/avkon/inc/MemSpyViewChunkList.h
memspyui/ui/avkon/inc/MemSpyViewCodeSegList.h
memspyui/ui/avkon/inc/MemSpyViewDriveInfo.h
memspyui/ui/avkon/inc/MemSpyViewECom.h
memspyui/ui/avkon/inc/MemSpyViewFBServBitmaps.h
memspyui/ui/avkon/inc/MemSpyViewHeapTracking.h
memspyui/ui/avkon/inc/MemSpyViewHeapTrackingResults.h
memspyui/ui/avkon/inc/MemSpyViewHeapTrackingSettings.h
memspyui/ui/avkon/inc/MemSpyViewKernel.h
memspyui/ui/avkon/inc/MemSpyViewKernelContainers.h
memspyui/ui/avkon/inc/MemSpyViewKernelHeap.h
memspyui/ui/avkon/inc/MemSpyViewKernelObjects.h
memspyui/ui/avkon/inc/MemSpyViewMainMenu.h
memspyui/ui/avkon/inc/MemSpyViewMemoryTrackingAutoStartConfig.h
memspyui/ui/avkon/inc/MemSpyViewObserver.h
memspyui/ui/avkon/inc/MemSpyViewOpenFiles.h
memspyui/ui/avkon/inc/MemSpyViewProcesses.h
memspyui/ui/avkon/inc/MemSpyViewRAMInfo.h
memspyui/ui/avkon/inc/MemSpyViewROMInfo.h
memspyui/ui/avkon/inc/MemSpyViewServerList.h
memspyui/ui/avkon/inc/MemSpyViewSystemConfig.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemActiveObject.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemChunk.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemCodeSeg.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneralInfo.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneric.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemHeap.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemList.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemMemoryTracking.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemServer.h
memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemStack.h
memspyui/ui/avkon/inc/MemSpyViewThreads.h
memspyui/ui/avkon/inc/MemSpyViewType.h
memspyui/ui/avkon/inc/MemSpyViewWindowGroups.h
memspyui/ui/avkon/inc/viewcli.h
memspyui/ui/avkon/src/MemSpyApp.cpp
memspyui/ui/avkon/src/MemSpyAppUi.cpp
memspyui/ui/avkon/src/MemSpyContainer.cpp
memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp
memspyui/ui/avkon/src/MemSpyDocument.cpp
memspyui/ui/avkon/src/MemSpyExportBitmapsToMemoryCardDialog.cpp
memspyui/ui/avkon/src/MemSpySettings.cpp
memspyui/ui/avkon/src/MemSpyUiUtils.cpp
memspyui/ui/avkon/src/MemSpyViewBase.cpp
memspyui/ui/avkon/src/MemSpyViewChunkList.cpp
memspyui/ui/avkon/src/MemSpyViewCodeSegList.cpp
memspyui/ui/avkon/src/MemSpyViewDriveInfo.cpp
memspyui/ui/avkon/src/MemSpyViewECom.cpp
memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp
memspyui/ui/avkon/src/MemSpyViewHeapTracking.cpp
memspyui/ui/avkon/src/MemSpyViewHeapTrackingResults.cpp
memspyui/ui/avkon/src/MemSpyViewHeapTrackingSettings.cpp
memspyui/ui/avkon/src/MemSpyViewKernel.cpp
memspyui/ui/avkon/src/MemSpyViewKernelContainers.cpp
memspyui/ui/avkon/src/MemSpyViewKernelHeap.cpp
memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp
memspyui/ui/avkon/src/MemSpyViewMainMenu.cpp
memspyui/ui/avkon/src/MemSpyViewMemoryTrackingAutoStartConfig.cpp
memspyui/ui/avkon/src/MemSpyViewOpenFiles.cpp
memspyui/ui/avkon/src/MemSpyViewProcesses.cpp
memspyui/ui/avkon/src/MemSpyViewRAMInfo.cpp
memspyui/ui/avkon/src/MemSpyViewROMInfo.cpp
memspyui/ui/avkon/src/MemSpyViewServerList.cpp
memspyui/ui/avkon/src/MemSpyViewSystemConfig.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemActiveObject.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemChunk.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemCodeSeg.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneralInfo.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneric.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemHeap.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemMemoryTracking.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemServer.cpp
memspyui/ui/avkon/src/MemSpyViewThreadInfoItemStack.cpp
memspyui/ui/avkon/src/MemSpyViewThreads.cpp
memspyui/ui/avkon/src/MemSpyViewType.cpp
memspyui/ui/avkon/src/MemSpyViewWindowGroups.cpp
memspyui/ui/hb/hb.pro
memspyui/ui/hb/inc/enginewrapper.h
memspyui/ui/hb/inc/memspyheapdumpsview.h
memspyui/ui/hb/inc/memspykernelobjectdetailview.h
memspyui/ui/hb/inc/memspykernelobjecttypeview.h
memspyui/ui/hb/inc/memspykernelobjectview.h
memspyui/ui/hb/inc/memspylistview.h
memspyui/ui/hb/inc/memspymainview.h
memspyui/ui/hb/inc/memspyprocessview.h
memspyui/ui/hb/inc/memspysettingsview.h
memspyui/ui/hb/inc/memspyswmtview.h
memspyui/ui/hb/inc/memspythreaddetailindexview.h
memspyui/ui/hb/inc/memspythreaddetailview.h
memspyui/ui/hb/inc/memspythreadview.h
memspyui/ui/hb/inc/memspytrackingview.h
memspyui/ui/hb/inc/memspyview.h
memspyui/ui/hb/inc/viewmanager.h
memspyui/ui/hb/src/enginewrapper.cpp
memspyui/ui/hb/src/main.cpp
memspyui/ui/hb/src/memspyheapdumpsview.cpp
memspyui/ui/hb/src/memspykernelobjectdetailview.cpp
memspyui/ui/hb/src/memspykernelobjecttypeview.cpp
memspyui/ui/hb/src/memspykernelobjectview.cpp
memspyui/ui/hb/src/memspylistview.cpp
memspyui/ui/hb/src/memspymainview.cpp
memspyui/ui/hb/src/memspyprocessview.cpp
memspyui/ui/hb/src/memspysettingsview.cpp
memspyui/ui/hb/src/memspyswmtview.cpp
memspyui/ui/hb/src/memspythreaddetailindexview.cpp
memspyui/ui/hb/src/memspythreaddetailview.cpp
memspyui/ui/hb/src/memspythreadview.cpp
memspyui/ui/hb/src/memspytrackingview.cpp
memspyui/ui/hb/src/memspyview.cpp
memspyui/ui/hb/src/viewmanager.cpp
package_definition.xml
package_map.xml
perfapps/memspyui/data/Example_MemSpyProcessMemoryTrackingAutoStartConfig.xml
perfapps/memspyui/data/MemSpyEComInterfaceIds.xml
perfapps/memspyui/data/MemSpyProcessMemoryTrackingAutoStartConfig.xml
perfapps/memspyui/data/backup_registration.xml
perfapps/memspyui/data/memspyui.rss
perfapps/memspyui/data/memspyui_reg.rss
perfapps/memspyui/group/bld.inf
perfapps/memspyui/group/bld_generic.inf
perfapps/memspyui/group/group.pro
perfapps/memspyui/group/memspyui_icons_aif.mk
perfapps/memspyui/group/memspyui_stub_sis.mk
perfapps/memspyui/icons/qgn_menu_memspyui.svg
perfapps/memspyui/memspyui.pro
perfapps/memspyui/memspywindowserverhelper/bwins/memspywindowserverhelperu.def
perfapps/memspyui/memspywindowserverhelper/eabi/memspywindowserverhelperu.def
perfapps/memspyui/memspywindowserverhelper/group/bld.inf
perfapps/memspyui/memspywindowserverhelper/group/memspywindowserverhelper.mmp
perfapps/memspyui/memspywindowserverhelper/inc/MemSpyEngineHelperWindowServerImpl.h
perfapps/memspyui/memspywindowserverhelper/src/MemSpyEngineHelperWindowServerImpl.cpp
perfapps/memspyui/rom/memspyui.iby
perfapps/memspyui/sis/MemSpy_S60-50.pkg
perfapps/memspyui/sis/MemSpy_S60-50.sis
perfapps/memspyui/sis/MemSpy_S60-52.pkg
perfapps/memspyui/sis/MemSpy_S60-52.sis
perfapps/memspyui/sis/MemSpy_stub.pkg
perfapps/memspyui/ui/avkon/group/MemSpyCapabilities.mmh
perfapps/memspyui/ui/avkon/group/bld.inf
perfapps/memspyui/ui/avkon/group/memspyui.mmp
perfapps/memspyui/ui/avkon/inc/MemSpy.hrh
perfapps/memspyui/ui/avkon/inc/MemSpyApp.h
perfapps/memspyui/ui/avkon/inc/MemSpyAppUi.h
perfapps/memspyui/ui/avkon/inc/MemSpyContainer.h
perfapps/memspyui/ui/avkon/inc/MemSpyContainerObserver.h
perfapps/memspyui/ui/avkon/inc/MemSpyDeviceWideOperationDialog.h
perfapps/memspyui/ui/avkon/inc/MemSpyDocument.h
perfapps/memspyui/ui/avkon/inc/MemSpyExportBitmapsToMemoryCardDialog.h
perfapps/memspyui/ui/avkon/inc/MemSpySettings.h
perfapps/memspyui/ui/avkon/inc/MemSpyUiUtils.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewBase.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewChunkList.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewCodeSegList.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewDriveInfo.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewECom.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewFBServBitmaps.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTracking.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingResults.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingSettings.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewKernel.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelContainers.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelHeap.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelObjects.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewMainMenu.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewMemoryTrackingAutoStartConfig.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewObserver.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewOpenFiles.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewProcesses.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewRAMInfo.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewROMInfo.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewServerList.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewSystemConfig.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemActiveObject.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemChunk.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemCodeSeg.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneralInfo.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneric.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemHeap.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemList.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemMemoryTracking.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemServer.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemStack.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewThreads.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewType.h
perfapps/memspyui/ui/avkon/inc/MemSpyViewWindowGroups.h
perfapps/memspyui/ui/avkon/inc/viewcli.h
perfapps/memspyui/ui/avkon/src/MemSpyApp.cpp
perfapps/memspyui/ui/avkon/src/MemSpyAppUi.cpp
perfapps/memspyui/ui/avkon/src/MemSpyContainer.cpp
perfapps/memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp
perfapps/memspyui/ui/avkon/src/MemSpyDocument.cpp
perfapps/memspyui/ui/avkon/src/MemSpyExportBitmapsToMemoryCardDialog.cpp
perfapps/memspyui/ui/avkon/src/MemSpySettings.cpp
perfapps/memspyui/ui/avkon/src/MemSpyUiUtils.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewBase.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewChunkList.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewCodeSegList.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewDriveInfo.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewECom.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTracking.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTrackingResults.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTrackingSettings.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewKernel.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewKernelContainers.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewKernelHeap.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewMainMenu.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewMemoryTrackingAutoStartConfig.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewOpenFiles.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewRAMInfo.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewROMInfo.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewServerList.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewSystemConfig.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemActiveObject.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemChunk.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemCodeSeg.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneralInfo.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneric.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemHeap.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemMemoryTracking.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemServer.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemStack.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewThreads.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewType.cpp
perfapps/memspyui/ui/avkon/src/MemSpyViewWindowGroups.cpp
perfapps/memspyui/ui/hb/hb.pro
perfapps/memspyui/ui/hb/inc/enginewrapper.h
perfapps/memspyui/ui/hb/inc/memspyecomcategoryview.h
perfapps/memspyui/ui/hb/inc/memspyecomimplementationdetailview.h
perfapps/memspyui/ui/hb/inc/memspyecomimplementationview.h
perfapps/memspyui/ui/hb/inc/memspyecominterfaceview.h
perfapps/memspyui/ui/hb/inc/memspyheapdumpsview.h
perfapps/memspyui/ui/hb/inc/memspykernelobjectdetailview.h
perfapps/memspyui/ui/hb/inc/memspykernelobjecttypeview.h
perfapps/memspyui/ui/hb/inc/memspykernelobjectview.h
perfapps/memspyui/ui/hb/inc/memspylistview.h
perfapps/memspyui/ui/hb/inc/memspymainview.h
perfapps/memspyui/ui/hb/inc/memspyprocessview.h
perfapps/memspyui/ui/hb/inc/memspyserverview.h
perfapps/memspyui/ui/hb/inc/memspysettingsview.h
perfapps/memspyui/ui/hb/inc/memspyswmtview.h
perfapps/memspyui/ui/hb/inc/memspythreaddetailindexview.h
perfapps/memspyui/ui/hb/inc/memspythreaddetailview.h
perfapps/memspyui/ui/hb/inc/memspythreadview.h
perfapps/memspyui/ui/hb/inc/memspytrackingview.h
perfapps/memspyui/ui/hb/inc/memspyview.h
perfapps/memspyui/ui/hb/inc/viewmanager.h
perfapps/memspyui/ui/hb/src/enginewrapper.cpp
perfapps/memspyui/ui/hb/src/main.cpp
perfapps/memspyui/ui/hb/src/memspyecomcategoryview.cpp
perfapps/memspyui/ui/hb/src/memspyecomimplementationdetailview.cpp
perfapps/memspyui/ui/hb/src/memspyecomimplementationview.cpp
perfapps/memspyui/ui/hb/src/memspyecominterfaceview.cpp
perfapps/memspyui/ui/hb/src/memspyheapdumpsview.cpp
perfapps/memspyui/ui/hb/src/memspykernelobjectdetailview.cpp
perfapps/memspyui/ui/hb/src/memspykernelobjecttypeview.cpp
perfapps/memspyui/ui/hb/src/memspykernelobjectview.cpp
perfapps/memspyui/ui/hb/src/memspylistview.cpp
perfapps/memspyui/ui/hb/src/memspymainview.cpp
perfapps/memspyui/ui/hb/src/memspyprocessview.cpp
perfapps/memspyui/ui/hb/src/memspyserverview.cpp
perfapps/memspyui/ui/hb/src/memspysettingsview.cpp
perfapps/memspyui/ui/hb/src/memspyswmtview.cpp
perfapps/memspyui/ui/hb/src/memspythreaddetailindexview.cpp
perfapps/memspyui/ui/hb/src/memspythreaddetailview.cpp
perfapps/memspyui/ui/hb/src/memspythreadview.cpp
perfapps/memspyui/ui/hb/src/memspytrackingview.cpp
perfapps/memspyui/ui/hb/src/memspyview.cpp
perfapps/memspyui/ui/hb/src/viewmanager.cpp
perfapps/perfmon/data/perfmon.rss
perfapps/perfmon/data/perfmon_reg.rss
perfapps/perfmon/engine/inc/perfmon.hrh
perfapps/perfmon/engine/inc/perfmon_engine.h
perfapps/perfmon/engine/inc/perfmon_powerlistener.h
perfapps/perfmon/engine/src/perfmon_engine.cpp
perfapps/perfmon/engine/src/perfmon_powerlistener.cpp
perfapps/perfmon/envpatcher/EnvPatcher.pl
perfapps/perfmon/envpatcher/ReadMe.txt
perfapps/perfmon/group/ReleaseNotes_PerfMon.txt
perfapps/perfmon/group/backup_registration.xml
perfapps/perfmon/group/bld.inf
perfapps/perfmon/group/bld_generic.inf
perfapps/perfmon/group/group.pro
perfapps/perfmon/group/perfmon_icons_aif.mk
perfapps/perfmon/group/perfmon_stub_sis.mk
perfapps/perfmon/icons/qgn_menu_perfmon.svg
perfapps/perfmon/perfmon.pro
perfapps/perfmon/rom/perfmon.iby
perfapps/perfmon/rom/perfmon_datapopup.iby
perfapps/perfmon/sis/PerfMon_S60-30.pkg
perfapps/perfmon/sis/PerfMon_S60-30.sis
perfapps/perfmon/sis/PerfMon_stub.pkg
perfapps/perfmon/symbian_version.hrh
perfapps/perfmon/ui/avkon/group/bld.inf
perfapps/perfmon/ui/avkon/group/perfmon.mmp
perfapps/perfmon/ui/avkon/inc/perfmon_app.h
perfapps/perfmon/ui/avkon/inc/perfmon_appui.h
perfapps/perfmon/ui/avkon/inc/perfmon_datapopupcontainer.h
perfapps/perfmon/ui/avkon/inc/perfmon_document.h
perfapps/perfmon/ui/avkon/inc/perfmon_drawcallback.h
perfapps/perfmon/ui/avkon/inc/perfmon_graphscontainer.h
perfapps/perfmon/ui/avkon/inc/perfmon_graphsview.h
perfapps/perfmon/ui/avkon/inc/perfmon_model.h
perfapps/perfmon/ui/avkon/inc/perfmon_settingsviewdlg.h
perfapps/perfmon/ui/avkon/inc/perfmon_std.h
perfapps/perfmon/ui/avkon/inc/perfmon_valuescontainer.h
perfapps/perfmon/ui/avkon/inc/perfmon_valuesview.h
perfapps/perfmon/ui/avkon/src/perfmon_app.cpp
perfapps/perfmon/ui/avkon/src/perfmon_appui.cpp
perfapps/perfmon/ui/avkon/src/perfmon_datapopupcontainer.cpp
perfapps/perfmon/ui/avkon/src/perfmon_document.cpp
perfapps/perfmon/ui/avkon/src/perfmon_graphscontainer.cpp
perfapps/perfmon/ui/avkon/src/perfmon_graphsview.cpp
perfapps/perfmon/ui/avkon/src/perfmon_model.cpp
perfapps/perfmon/ui/avkon/src/perfmon_settingsviewdlg.cpp
perfapps/perfmon/ui/avkon/src/perfmon_valuescontainer.cpp
perfapps/perfmon/ui/avkon/src/perfmon_valuesview.cpp
perfapps/perfmon/ui/hb/app/app.pro
perfapps/perfmon/ui/hb/app/inc/application.h
perfapps/perfmon/ui/hb/app/inc/datacontainer.h
perfapps/perfmon/ui/hb/app/inc/datapopup.h
perfapps/perfmon/ui/hb/app/inc/enginewrapper.h
perfapps/perfmon/ui/hb/app/inc/graphdatacontainer.h
perfapps/perfmon/ui/hb/app/inc/mainview.h
perfapps/perfmon/ui/hb/app/inc/mainwindow.h
perfapps/perfmon/ui/hb/app/inc/popupdatacontainer.h
perfapps/perfmon/ui/hb/app/inc/settingsview.h
perfapps/perfmon/ui/hb/app/inc/valuedatacontainer.h
perfapps/perfmon/ui/hb/app/src/application.cpp
perfapps/perfmon/ui/hb/app/src/datapopup.cpp
perfapps/perfmon/ui/hb/app/src/enginewrapper.cpp
perfapps/perfmon/ui/hb/app/src/graphdatacontainer.cpp
perfapps/perfmon/ui/hb/app/src/main.cpp
perfapps/perfmon/ui/hb/app/src/mainview.cpp
perfapps/perfmon/ui/hb/app/src/mainwindow.cpp
perfapps/perfmon/ui/hb/app/src/popupdatacontainer.cpp
perfapps/perfmon/ui/hb/app/src/settingsview.cpp
perfapps/perfmon/ui/hb/app/src/valuedatacontainer.cpp
perfapps/perfmon/ui/hb/datapopup/datapopup.pro
perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupdialog_p.h
perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupplugin_p.h
perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopuppluginerrors_p.h
perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupwidget_p.h
perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupdialog.cpp
perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupplugin.cpp
perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupwidget.cpp
perfapps/perfmon/ui/hb/win/enginewrapper.cpp
perfapps/perfmon/ui/hb/win/enginewrapper.h
perfapps/perfmon/ui/hb/win/win.pro
perfapps/piprofilerui/group/bld.inf
perfapps/piprofilerui/group/bld_generic.inf
perfapps/piprofilerui/group/group.pro
perfapps/piprofilerui/piprofilerui.pro
perfapps/piprofilerui/sis/PIProfiler_S60-30.pkg
perfapps/piprofilerui/sis/PIProfiler_S60-31.pkg
perfapps/piprofilerui/sis/PIProfiler_S60-32.pkg
perfapps/piprofilerui/sis/PIProfiler_S60-50.pkg
perfapps/piprofilerui/sis/PIProfiler_Symbian3.pkg
perfapps/piprofilerui/sis/PIProfiler_Symbian4.pkg
perfapps/piprofilerui/sis/PIProfiler_stub.pkg
perfapps/piprofilerui/ui/avkon/data/piprofilerui.rss
perfapps/piprofilerui/ui/avkon/data/piprofilerui_reg.rss
perfapps/piprofilerui/ui/avkon/group/backup_registration.xml
perfapps/piprofilerui/ui/avkon/group/bld.inf
perfapps/piprofilerui/ui/avkon/group/piprofilerui.mmp
perfapps/piprofilerui/ui/avkon/group/piprofilerui_extraicons.mk
perfapps/piprofilerui/ui/avkon/group/piprofilerui_icons_aif.mk
perfapps/piprofilerui/ui/avkon/inc/profiler_gui.hrh
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_app.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_appui.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_attributes.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_document.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_maincontainer.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_mainview.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_model.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_samplersettingsviewdlg.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_settingsviewdlg.h
perfapps/piprofilerui/ui/avkon/inc/profiler_gui_std.h
perfapps/piprofilerui/ui/avkon/rom/piprofilerui_avkon.iby
perfapps/piprofilerui/ui/avkon/src/profiler_gui_app.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_appui.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_document.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_maincontainer.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_mainview.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_model.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_samplersettingsviewdlg.cpp
perfapps/piprofilerui/ui/avkon/src/profiler_gui_settingsviewdlg.cpp
perfapps/piprofilerui/ui/hb/hb.pro
perfapps/piprofilerui/ui/hb/inc/generalattributes.h
perfapps/piprofilerui/ui/hb/inc/notifications.h
perfapps/piprofilerui/ui/hb/inc/pimainview.h
perfapps/piprofilerui/ui/hb/inc/pimainwindow.h
perfapps/piprofilerui/ui/hb/inc/piprofilerengine.h
perfapps/piprofilerui/ui/hb/inc/piprofilerengineprivate.h
perfapps/piprofilerui/ui/hb/inc/pisettingsview.h
perfapps/piprofilerui/ui/hb/inc/pluginattributes.h
perfapps/piprofilerui/ui/hb/pimainview.docml
perfapps/piprofilerui/ui/hb/piprofiler.qrc
perfapps/piprofilerui/ui/hb/rom/piprofilerui_hb.iby
perfapps/piprofilerui/ui/hb/src/main.cpp
perfapps/piprofilerui/ui/hb/src/notifications.cpp
perfapps/piprofilerui/ui/hb/src/pimainview.cpp
perfapps/piprofilerui/ui/hb/src/pimainwindow.cpp
perfapps/piprofilerui/ui/hb/src/piprofilerengine.cpp
perfapps/piprofilerui/ui/hb/src/piprofilerengineprivate.cpp
perfapps/piprofilerui/ui/hb/src/pisettingsview.cpp
perfapps/piprofilerui/ui/hb/src/pluginattributes.cpp
perfapps/piprofilerui/ui/icons/qgn_menu_piprofilerui.svg
perfapps/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_disabled.svg
perfapps/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_enabled.svg
perfmon/data/perfmon.rss
perfmon/data/perfmon_reg.rss
perfmon/engine/inc/perfmon.hrh
perfmon/engine/inc/perfmon_engine.h
perfmon/engine/src/perfmon_engine.cpp
perfmon/envpatcher/EnvPatcher.pl
perfmon/envpatcher/ReadMe.txt
perfmon/group/ReleaseNotes_PerfMon.txt
perfmon/group/backup_registration.xml
perfmon/group/bld.inf
perfmon/group/bld_generic.inf
perfmon/group/group.pro
perfmon/group/perfmon_icons_aif.mk
perfmon/group/perfmon_stub_sis.mk
perfmon/icons/qgn_menu_perfmon.svg
perfmon/perfmon.pro
perfmon/rom/perfmon.iby
perfmon/rom/perfmon_datapopup.iby
perfmon/sis/PerfMon_S60-30.pkg
perfmon/sis/PerfMon_S60-30.sis
perfmon/sis/PerfMon_stub.pkg
perfmon/ui/avkon/group/bld.inf
perfmon/ui/avkon/group/perfmon.mmp
perfmon/ui/avkon/inc/perfmon_app.h
perfmon/ui/avkon/inc/perfmon_appui.h
perfmon/ui/avkon/inc/perfmon_datapopupcontainer.h
perfmon/ui/avkon/inc/perfmon_document.h
perfmon/ui/avkon/inc/perfmon_drawcallback.h
perfmon/ui/avkon/inc/perfmon_graphscontainer.h
perfmon/ui/avkon/inc/perfmon_graphsview.h
perfmon/ui/avkon/inc/perfmon_model.h
perfmon/ui/avkon/inc/perfmon_settingsviewdlg.h
perfmon/ui/avkon/inc/perfmon_std.h
perfmon/ui/avkon/inc/perfmon_valuescontainer.h
perfmon/ui/avkon/inc/perfmon_valuesview.h
perfmon/ui/avkon/src/perfmon_app.cpp
perfmon/ui/avkon/src/perfmon_appui.cpp
perfmon/ui/avkon/src/perfmon_datapopupcontainer.cpp
perfmon/ui/avkon/src/perfmon_document.cpp
perfmon/ui/avkon/src/perfmon_graphscontainer.cpp
perfmon/ui/avkon/src/perfmon_graphsview.cpp
perfmon/ui/avkon/src/perfmon_model.cpp
perfmon/ui/avkon/src/perfmon_settingsviewdlg.cpp
perfmon/ui/avkon/src/perfmon_valuescontainer.cpp
perfmon/ui/avkon/src/perfmon_valuesview.cpp
perfmon/ui/hb/app/app.pro
perfmon/ui/hb/app/inc/application.h
perfmon/ui/hb/app/inc/datacontainer.h
perfmon/ui/hb/app/inc/datapopup.h
perfmon/ui/hb/app/inc/enginewrapper.h
perfmon/ui/hb/app/inc/graphdatacontainer.h
perfmon/ui/hb/app/inc/mainview.h
perfmon/ui/hb/app/inc/mainwindow.h
perfmon/ui/hb/app/inc/popupdatacontainer.h
perfmon/ui/hb/app/inc/settingsview.h
perfmon/ui/hb/app/inc/valuedatacontainer.h
perfmon/ui/hb/app/src/application.cpp
perfmon/ui/hb/app/src/datapopup.cpp
perfmon/ui/hb/app/src/enginewrapper.cpp
perfmon/ui/hb/app/src/graphdatacontainer.cpp
perfmon/ui/hb/app/src/main.cpp
perfmon/ui/hb/app/src/mainview.cpp
perfmon/ui/hb/app/src/mainwindow.cpp
perfmon/ui/hb/app/src/popupdatacontainer.cpp
perfmon/ui/hb/app/src/settingsview.cpp
perfmon/ui/hb/app/src/valuedatacontainer.cpp
perfmon/ui/hb/datapopup/datapopup.pro
perfmon/ui/hb/datapopup/inc/perfmondatapopupdialog_p.h
perfmon/ui/hb/datapopup/inc/perfmondatapopupplugin_p.h
perfmon/ui/hb/datapopup/inc/perfmondatapopuppluginerrors_p.h
perfmon/ui/hb/datapopup/inc/perfmondatapopupwidget_p.h
perfmon/ui/hb/datapopup/src/perfmondatapopupdialog.cpp
perfmon/ui/hb/datapopup/src/perfmondatapopupplugin.cpp
perfmon/ui/hb/datapopup/src/perfmondatapopupwidget.cpp
perfmon/ui/hb/win/enginewrapper.cpp
perfmon/ui/hb/win/enginewrapper.h
perfmon/ui/hb/win/win.pro
piprofilerui/group/bld.inf
piprofilerui/group/bld_generic.inf
piprofilerui/group/group.pro
piprofilerui/piprofilerui.pro
piprofilerui/sis/PIProfiler_S60-30.pkg
piprofilerui/sis/PIProfiler_S60-31.pkg
piprofilerui/sis/PIProfiler_S60-32.pkg
piprofilerui/sis/PIProfiler_S60-50.pkg
piprofilerui/sis/PIProfiler_Symbian3.pkg
piprofilerui/sis/PIProfiler_Symbian4.pkg
piprofilerui/sis/PIProfiler_stub.pkg
piprofilerui/ui/avkon/data/piprofilerui.rss
piprofilerui/ui/avkon/data/piprofilerui_reg.rss
piprofilerui/ui/avkon/group/backup_registration.xml
piprofilerui/ui/avkon/group/bld.inf
piprofilerui/ui/avkon/group/piprofilerui.mmp
piprofilerui/ui/avkon/group/piprofilerui_extraicons.mk
piprofilerui/ui/avkon/group/piprofilerui_icons_aif.mk
piprofilerui/ui/avkon/inc/profiler_gui.hrh
piprofilerui/ui/avkon/inc/profiler_gui_app.h
piprofilerui/ui/avkon/inc/profiler_gui_appui.h
piprofilerui/ui/avkon/inc/profiler_gui_attributes.h
piprofilerui/ui/avkon/inc/profiler_gui_document.h
piprofilerui/ui/avkon/inc/profiler_gui_maincontainer.h
piprofilerui/ui/avkon/inc/profiler_gui_mainview.h
piprofilerui/ui/avkon/inc/profiler_gui_model.h
piprofilerui/ui/avkon/inc/profiler_gui_samplersettingsviewdlg.h
piprofilerui/ui/avkon/inc/profiler_gui_settingsviewdlg.h
piprofilerui/ui/avkon/inc/profiler_gui_std.h
piprofilerui/ui/avkon/rom/piprofilerui_avkon.iby
piprofilerui/ui/avkon/src/profiler_gui_app.cpp
piprofilerui/ui/avkon/src/profiler_gui_appui.cpp
piprofilerui/ui/avkon/src/profiler_gui_document.cpp
piprofilerui/ui/avkon/src/profiler_gui_maincontainer.cpp
piprofilerui/ui/avkon/src/profiler_gui_mainview.cpp
piprofilerui/ui/avkon/src/profiler_gui_model.cpp
piprofilerui/ui/avkon/src/profiler_gui_samplersettingsviewdlg.cpp
piprofilerui/ui/avkon/src/profiler_gui_settingsviewdlg.cpp
piprofilerui/ui/hb/hb.pro
piprofilerui/ui/hb/inc/generalattributes.h
piprofilerui/ui/hb/inc/notifications.h
piprofilerui/ui/hb/inc/pimainview.h
piprofilerui/ui/hb/inc/pimainwindow.h
piprofilerui/ui/hb/inc/piprofilerengine.h
piprofilerui/ui/hb/inc/piprofilerengineprivate.h
piprofilerui/ui/hb/inc/pisettingsview.h
piprofilerui/ui/hb/inc/pluginattributes.h
piprofilerui/ui/hb/pimainview.docml
piprofilerui/ui/hb/piprofiler.qrc
piprofilerui/ui/hb/rom/piprofilerui_hb.iby
piprofilerui/ui/hb/src/main.cpp
piprofilerui/ui/hb/src/notifications.cpp
piprofilerui/ui/hb/src/pimainview.cpp
piprofilerui/ui/hb/src/pimainwindow.cpp
piprofilerui/ui/hb/src/piprofilerengine.cpp
piprofilerui/ui/hb/src/piprofilerengineprivate.cpp
piprofilerui/ui/hb/src/pisettingsview.cpp
piprofilerui/ui/hb/src/pluginattributes.cpp
piprofilerui/ui/icons/qgn_menu_piprofilerui.svg
piprofilerui/ui/icons/qgn_prob_piprofilerui_status_disabled.svg
piprofilerui/ui/icons/qgn_prob_piprofilerui_status_enabled.svg
--- a/creator/engine/inc/creator.hrh	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/inc/creator.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -24,7 +24,14 @@
 
 enum TCreatorIds
     {
-    ECmdCreateFromFile=1,
+
+    // Phonebook entries shuld be the first, bacause some other entries references them
+    ECmdCreatePhoneBookEntries = 1,
+    ECmdCreatePhoneBookEntryContacts,
+    ECmdCreatePhoneBookEntryGroups,
+    ECmdCreatePhoneBookEntrySubscribedContacts,
+    
+    ECmdCreateFromFile,
 
     ECmdCreateCalendarEntries,
     ECmdCreateCalendarEntryAppointments,
@@ -129,11 +136,6 @@
     ECmdCreateMiscEntrySyncSettings,
     ECmdCreateMiscEntryLandmarks,
 
-    ECmdCreatePhoneBookEntries,
-    ECmdCreatePhoneBookEntryContacts,
-    ECmdCreatePhoneBookEntryGroups,
-    ECmdCreatePhoneBookEntrySubscribedContacts,
-
     ECmdDeleteEntries,
     ECmdDeleteAllEntries,
     ECmdDeleteAllCreatorEntries,
--- a/creator/engine/inc/creator_file.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/inc/creator_file.h	Fri Sep 03 17:11:21 2010 +0300
@@ -25,8 +25,9 @@
 #include "engine.h"
 #include "creator_modulebase.h"
 
-#include <caf/caf.h>
+#include <caf/cafplatform.h>
 using namespace ContentAccess;
+#include <DRMRights.h>
 
 #include <e32base.h>
 #include <bautils.h>
--- a/creator/engine/inc/creator_phonebook.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/inc/creator_phonebook.h	Fri Sep 03 17:11:21 2010 +0300
@@ -56,7 +56,7 @@
     void DeleteAllGroupsCreatedByCreatorL();
     
     void TestPrintOut(CPhonebookParameters* aParam);
-    
+    inline CCreatorPhonebookWrapper* GetPhonebookWrapper(){ return iPhonebookWrapper; };
 private:
     
     void InitializeContactParamsL();
--- a/creator/engine/inc/creator_phonebookapi.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/inc/creator_phonebookapi.h	Fri Sep 03 17:11:21 2010 +0300
@@ -42,6 +42,9 @@
     bool deleteContacts( const QList<QContactLocalId>& list );
     QContact contact( const QContactLocalId& contactId );
 
+    QString phoneNumber( const QContactLocalId& contactId );
+    bool contactDetails( const QContactLocalId& contactId, QString& name, QString& phoneNumber, QString& email );
+    
 private:
     bool IsContactGroupL( const QContact& contact );
     
--- a/creator/engine/inc/creator_phonebookwrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/inc/creator_phonebookwrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -150,6 +150,9 @@
     void DeleteAllGroupsL();
     void DeleteContactsL( RArray<TUint32>& aContactsToDelete, TUid aStoreUid );
     
+    HBufC* GetPhoneNumberL( TUint32 aContactId );
+    TBool GetContactDetailsL( TUint32 aContactId, TDes& aName, TDes& aPhoneNumber, TDes& aEmail );
+    
 private:
     QList<QContactDetail> CreateContactDetailsFromParameters( const TCreatorContactFields& Map );
     QContactDetail CreateContactDetail( QList<QContactDetail>& aContactDetailList,QString aDetail, QString aFieldContext, QString aFieldString, QString aData );
--- a/creator/engine/src/creator_calendar.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_calendar.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -26,6 +26,8 @@
 #include <e32math.h>
 #include <calrrule.h> 
 #include <calalarm.h>
+#include "creator_contactsetcache.h"
+#include "creator_phonebook.h"
 
 static const TInt KCalendarFieldLength = 128;
 
@@ -815,6 +817,32 @@
         	CleanupStack::Pop(); // attendee
         	}
         }
+    // linked attendees:
+     for( TInt i = 0; i < parameters->iAttendeeLinkIds.Count(); ++i )
+        {
+        CCreatorPhonebook* phonebook = dynamic_cast<CCreatorPhonebook*>(iEngine->GetPhonebook());
+        User::LeaveIfNull( phonebook );
+        CCreatorPhonebookWrapper* phonebookWrapper = phonebook->GetPhonebookWrapper();
+        
+        TLinkIdParam attendeeLinkId = parameters->iAttendeeLinkIds[i];
+        const CCreatorContactSet& set = ContactLinkCache::Instance()->ContactSet(attendeeLinkId.iLinkId);
+        const RArray<TUint32> links = set.ContactLinks();
+        TInt numberOfExplicitLinks = links.Count(); // Number of defined contacts in contact-set
+        for( TInt j = 0; j < numberOfExplicitLinks; ++j )
+            {
+            TBuf<128> email;
+            TBuf<128> name;
+            TBuf<128> phoneNumber;
+            phonebookWrapper->GetContactDetailsL( links[j], name, phoneNumber, email );
+            CCalAttendee* attendee = CCalAttendee::NewL( email );
+            CleanupStack::PushL(attendee);
+            if( name.Length() > 0 )
+                attendee->SetCommonNameL( name );
+            attendee->SetResponseRequested(ETrue);
+            aCalEntry.AddAttendeeL(attendee);
+            CleanupStack::Pop(); // attendee
+            }
+        }
     }
 //----------------------------------------------------------------------------
 
--- a/creator/engine/src/creator_contactelement.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_contactelement.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -196,23 +196,19 @@
             for( TInt i = 0; i < fieldList.Count(); ++i )
                 {
                 TPtrC fieldName = fieldList[i]->Name();
-                CCreatorContactField* field = 0;
-				field = CCreatorContactField::NewL();
-
                 const CCreatorScriptAttribute* amountAttr = fieldList[i]->FindAttributeByName(KAmount);
                 const CCreatorScriptAttribute* rndLenAttr = fieldList[i]->FindAttributeByName(KRandomLength);
                 const CCreatorScriptAttribute* increaseAttr = fieldList[i]->FindAttributeByName(KIncrease);
-                TBool increase( EFalse );
-                if ( increaseAttr )
-                    {
-                    increase = ConvertStrToBooleanL( increaseAttr->Value() );
-                    }
+                //TBool increase( EFalse );
+                //if ( increaseAttr )
+                //    {
+                //    increase = ConvertStrToBooleanL( increaseAttr->Value() );
+                //    }
                 for( TInt j = 0; j < fieldMappingTblSize; ++j )
                     {
                     const FieldMapping& mapping = fieldMappingTbl[j];
                     if( fieldName == mapping.iElementName )
                         {
-                        TInt rndLen = 0;
                         TPtrC content = fieldList[i]->Content();
                                                                         
 //                        MCreatorRandomDataField::TRandomLengthType randomLenType = MCreatorRandomDataField::ERandomLengthUndefined;
--- a/creator/engine/src/creator_file.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_file.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -16,8 +16,6 @@
 */
 
 
-#include <DRMRights.h>
-
 #include "engine.h"
 #include "enginewrapper.h"
 #include "creator_file.h" 
--- a/creator/engine/src/creator_message.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_message.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -22,6 +22,7 @@
 #include "creator_message.h" 
 #include "creator_traces.h"
 #include "creator_contactsetcache.h"
+#include "creator_phonebook.h"
 #include <apgcli.h>
 #include <MuiuServiceUtilities.h>
 #include <utf.h>
@@ -1201,12 +1202,13 @@
     header->SetSubjectL( parameters.iMessageSubject->Des() );
     if( iSenderArray.Count() == 0 )
         {
-        GetSendersL(iSenderArray, parameters, ETrue, 1 );
+        GetSendersL(iSenderArray, parameters, ETrue, KUndef );
         }
     
     if( iSenderArray.Count() > 0 )
         {
-        header->SetFromL(iSenderArray[0]->Des());
+        TInt rndNum = iEngine->RandomNumber( iSenderArray.Count() );
+        header->SetFromL(iSenderArray[rndNum]->Des());
         }
     else
         {
@@ -1529,11 +1531,12 @@
     // Only one sender allowed:
     if( iSenderArray.Count() == 0 )
         {
-        GetSendersL(iSenderArray, aParameters, aUseEmailAddress, 1 );
+        GetSendersL(iSenderArray, aParameters, aUseEmailAddress, KUndef );
         }
     if( iSenderArray.Count() > 0 )
         {        
-        aMsgEntry.iDetails.Set( iSenderArray[0]->Des() );        
+        TInt rnd = iEngine->RandomNumber( iSenderArray.Count() );
+        aMsgEntry.iDetails.Set( iSenderArray[rnd]->Des() );        
         }
     else
         {
@@ -1667,9 +1670,29 @@
         RPointerArray<HBufC>& aAddressArray, 
         const RArray<TLinkIdParam>& aLinkIds, 
         TBool aUseEmailAddress,
-        TInt aNumOfExistingAddresses )
+        TInt /*aNumOfExistingAddresses*/ )
     {
-}
+    CCreatorPhonebook* phonebook = dynamic_cast<CCreatorPhonebook*>(iEngine->GetPhonebook());
+    User::LeaveIfNull( phonebook );
+    CCreatorPhonebookWrapper* phonebookWrapper = phonebook->GetPhonebookWrapper();
+    
+    for( TInt i = 0; i < aLinkIds.Count(); ++i )
+        {
+        const CCreatorContactSet& set = ContactLinkCache::Instance()->ContactSet(aLinkIds[i].iLinkId);
+        const RArray<TUint32> links = set.ContactLinks();//ContactLinkCache::Instance()->ContactSets();//set.ContactLinks();
+        TInt numberOfExplicitLinks = links.Count(); // Number of defined contacts in contact-set
+        for( TInt j = 0; j < numberOfExplicitLinks; ++j )
+            {
+            TBuf<128> name;
+            TBuf<128> email;
+            TBuf<128> phoneNumber;
+            phonebookWrapper->GetContactDetailsL( links[j], name, phoneNumber, email );
+            HBufC* address = ( aUseEmailAddress ? email.AllocLC() : phoneNumber.AllocLC() );
+            aAddressArray.AppendL( address );
+            CleanupStack::Pop( address );
+            }
+        }
+    }
 
 //----------------------------------------------------------------------------
 void CCreatorMessages::DeleteAllL()
--- a/creator/engine/src/creator_note.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_note.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -22,14 +22,6 @@
 #include "creator_note.h" 
 #include "creator_traces.h"
 
-
-const TInt KCreatorDiskSpaceNeededForSingleDeletion( 8192 );
-_LIT( KCreatorNotepadFile, "c:Notepad.dat" );
-
-// @see \s60\app\organizer\notepad\notepad1\LibSrc\NpdCoreModel.cpp KSecureUid.Name()
-_LIT( KCreatorNotepadFormat, "SECURE[101F8878]" ); 
-_LIT( KCreatorNotepadDeleteAllSQL, "DELETE FROM Table1");
-
 //----------------------------------------------------------------------------
 
 CNotepadParameters::CNotepadParameters()
@@ -82,12 +74,13 @@
     if (iParameters)
         {
         delete iParameters;
-        iParameters;
+        iParameters = NULL;
         }
     
     if (iNotepadWrapper)
     	{
 		delete iNotepadWrapper;
+		iNotepadWrapper = NULL;
     	}
     }
 
--- a/creator/engine/src/creator_phonebook.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_phonebook.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -579,7 +579,7 @@
     }
 
 // Checks if the link is a group or not
-TBool CCreatorPhonebook::IsContactGroupL( TUint32& aLink )
+TBool CCreatorPhonebook::IsContactGroupL( TUint32& /*aLink*/ )
 	{
 	//not used right now
 	return EFalse;
--- a/creator/engine/src/creator_phonebookapi.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_phonebookapi.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -36,18 +36,17 @@
     // create a new contact item
     QContact store;
     quint32 id;
-    bool success = false;
     for(int i = 0 ; i < list.count() ; i++ )
     	{
 		QContactDetail cntdetail = list.at(i);
-		success = store.saveDetail(&cntdetail);
+		store.saveDetail(&cntdetail);
     	}
     /*foreach( QContactDetail cntdetail, list )
         {
-        success = store.saveDetail( &cntdetail );
+        store.saveDetail( &cntdetail );
         }
     */
-    success = mContactMngr->saveContact( &store );
+    mContactMngr->saveContact( &store );
     id = store.localId();
     return id;
     }
@@ -158,4 +157,33 @@
     {
     return mContactMngr->contact( contactId );
     }
+
+QString CCreatorPhonebookAPI::phoneNumber( const QContactLocalId& contactId )
+    {
+    QString strNumber;
+    QContact contact = mContactMngr->contact( contactId );
+    if( !contact.isEmpty() )
+        {
+        QContactPhoneNumber phoneNumber = static_cast<QContactPhoneNumber>( contact.detail( QContactPhoneNumber::DefinitionName ) );
+        strNumber = phoneNumber.number();
+        }
+    return strNumber;
+    }
+
+bool CCreatorPhonebookAPI::contactDetails( const QContactLocalId& contactId, QString& name, QString& phoneNumber, QString& email )
+    {
+    bool success(false);
+    QContact contact = mContactMngr->contact( contactId );
+    if( !contact.isEmpty() )
+        {
+        QContactPhoneNumber contactPhoneNumber = static_cast<QContactPhoneNumber>( contact.detail( QContactPhoneNumber::DefinitionName ) );
+        phoneNumber = contactPhoneNumber.number();
+        QContactEmailAddress contactEmailAddress = static_cast<QContactEmailAddress>( contact.detail( QContactEmailAddress::DefinitionName ) );
+        email = contactEmailAddress.emailAddress();
+        QContactDisplayLabel contactDisplayLabel = static_cast<QContactDisplayLabel>( contact.detail( QContactDisplayLabel::DefinitionName ) );
+        name = contactDisplayLabel.label();
+        success = true;
+        }
+    return success;
+    }
 // End of File
--- a/creator/engine/src/creator_phonebookbase.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_phonebookbase.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -24,7 +24,7 @@
     {
     LOGSTRING("Creator: CCreatorPhonebookBase::QueryDialogClosedL");
     
-    if(aPositiveAction == EFalse && aUserData!=ECreatorPhonebookGetContactFields )
+    if(aPositiveAction == EFalse && aUserData!=ECreatorPhonebookGetContactFields && aUserData!=ECreatorPhonebookContactsAllFields )
         {
         iEngine->ShutDownEnginesL();
         return;
--- a/creator/engine/src/creator_phonebookwrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/engine/src/creator_phonebookwrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -25,8 +25,6 @@
 
 #include <bautils.h> 
 
-_LIT(KTempPath, "C:\\Data\\Creator\\");
-
 typedef struct {
 TInt iFieldCode;
 QString iDetail;
@@ -172,7 +170,6 @@
 			QContactDetail contactDetail =  CreateContactDetail(contDetList, CreatorPbkTextFields[i].iDetail,CreatorPbkTextFields[i].iFieldContext,CreatorPbkTextFields[i].iFieldString, content );
 			AddFieldToList( contDetList, contactDetail );
 			}
-		
 		}
 	arraySize = sizeof(CreatorPhoneNumberFields)/sizeof(PhoneNumInfo);
 		for (TInt i = 0; i < arraySize; i++)
@@ -460,23 +457,6 @@
         if( aDetail == QContactAvatar::DefinitionName)                      //--Contact Picture-----------------------------
                 {
                 QContactAvatar contactAvatar;
-                /*TBuf<KMaxFileName> srcPath;
-                aEngine->RandomPictureFileL(srcPath);
-                TBuf<KMaxFileName> destPath(KTempPath);
-                            
-                if(!BaflUtils::FolderExists( fs, destPath ))
-                    {
-                    BaflUtils::EnsurePathExistsL( fs, destPath );
-                    }
-                
-                TInt err=BaflUtils::CopyFile( fs, srcPath, destPath );
-
-                TParse temp;
-                temp.Set( srcPath,NULL,NULL );
-                destPath.Append(temp.NameAndExt());
-                
-                QString avatarFile = QString::fromUtf16( destPath.Ptr(),destPath.Length() );
-                */
                 QUrl imageUrl;
                 imageUrl.setUrl(aData);
                 contactAvatar.setImageUrl(imageUrl);
@@ -652,3 +632,30 @@
     return KErrNotSupported;
     }
 
+
+HBufC* CCreatorPhonebookWrapper::GetPhoneNumberL( TUint32 aContactId )
+    {
+    QContactLocalId contact = QContactLocalId(aContactId);
+    QString phoneNumber = iPhonebookAPI->phoneNumber(contact);
+    HBufC *buf = HBufC::NewLC( phoneNumber.length() );
+    buf->Des().Copy( phoneNumber.utf16() );
+    CleanupStack::Pop( buf );
+    return buf;
+    }
+
+TBool CCreatorPhonebookWrapper::GetContactDetailsL( TUint32 aContactId, TDes& aName, TDes& aPhoneNumber, TDes& aEmail )
+    {
+    QString name;
+    QString phoneNumber;
+    QString email;
+    
+    QContactLocalId contact = QContactLocalId(aContactId);
+    bool success = iPhonebookAPI->contactDetails( contact, name, phoneNumber, email);
+    if( success )
+        {
+        aName.Copy( name.utf16() );
+        aPhoneNumber.Copy( phoneNumber.utf16() );
+        aEmail.Copy( email.utf16() );
+        }
+    return success ? ETrue : EFalse ;
+    }
--- a/creator/inc/engine.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/inc/engine.h	Fri Sep 03 17:11:21 2010 +0300
@@ -241,9 +241,10 @@
     static CCreatorEngine* NewLC(EngineWrapper *aEngineWrapper);	
     ~CCreatorEngine();
 	
-    inline RPointerArray<TMemoryDetails> GetMemoryDetailsList(){ return iMemoryDetailsList; };
-	inline TMemoryDetails GetMemoryDetails(){ return iMemoryDetails; };
+    inline const RPointerArray<TMemoryDetails>& GetMemoryDetailsList(){ return iMemoryDetailsList; };
+	inline const TMemoryDetails& GetMemoryDetails(){ return iMemoryDetails; };
 	inline EngineWrapper* GetEngineWrapper(){ return iEngineWrapper; };
+	inline CCreatorPhonebookBase* GetPhonebook(){ return  iPhonebook; };
 	
 private:
     CCreatorEngine();
--- a/creator/inc/notifications.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/inc/notifications.h	Fri Sep 03 17:11:21 2010 +0300
@@ -59,7 +59,7 @@
     /**
      * shows global HbGlobalCommonNote type note
      */
-	static void showGlobalNote(const QString& text, HbMessageBox::MessageBoxType type, HbPopup::DefaultTimeout timeout = HbPopup::ConfirmationNoteTimeout);
+	static void showGlobalNote(const QString& text, HbMessageBox::MessageBoxType type, int timeout = 1000 );
     };
 
 class CreatorDialog
--- a/creator/src/engine.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/src/engine.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -57,7 +57,6 @@
 #include <eikapp.h>
 #include <bitmaptransforms.h>
 
-_LIT(KEDriveError, "Not available");
 _LIT(KTempPathDrive, "d");
 _LIT(KTempPath, ":\\Creator\\");
 const TInt KRegisterDrive = EDriveC;
@@ -623,7 +622,6 @@
 		
 		// remove the progress dialog from the screen
         iEngineWrapper->CloseProgressbar();
-		//ProgressDialogCancelledL();
 		
 		if (iFailedCommands == 0)
 		    {
@@ -679,12 +677,7 @@
 				}
             }
 
-        if ( iPhonebook /*&& iPhonebook->IsActive()*/ )
-            {
-            // virtual phonebook is known to require asynchronous
-            // cancelling of operation
-            }
-        else if ( iDecoder  )
+        if ( iDecoder  )
             {
             iDecoder->Cancel();
             // CancelComplete() will be called from GenerateSourceImageFileL
@@ -1837,7 +1830,7 @@
 
 // ---------------------------------------------------------------------------
 
-TUint32 CCreatorEngine::AccessPointNameToIdL(const TDesC& aAPName, TBool aAnyIfNotFound )
+TUint32 CCreatorEngine::AccessPointNameToIdL(const TDesC& /*aAPName*/, TBool /*aAnyIfNotFound*/ )
     {
     LOGSTRING("Creator: CCreatorEngine::AccessPointNameToIdL");
     // Accespoint impl moved from engine to accespoint implementations for supporting 3.0-3.1 and 3.2->
--- a/creator/src/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/src/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -47,9 +47,11 @@
 {
     if (iEngine != 0) {
         delete iEngine;
+        iEngine = NULL;
     }
     if (iProgressDialog != 0) {
         delete iProgressDialog;
+        iProgressDialog = NULL;
     }
 }
 
@@ -76,12 +78,12 @@
 		for(int i=0; i<tMemDetList.Count(); i++)
 			{
 			TMemoryDetails* temp = tMemDetList.operator [](i);
-			QString free = QString::fromUtf16(tMemDetList.operator [](i)->iFree.Ptr(), tMemDetList.operator [](i)->iFree.Length());//QString((QChar*) temp->iFree.Ptr(), temp->iFree.Length());
-			QString size = QString::fromUtf16(tMemDetList.operator [](i)->iSize.Ptr(), tMemDetList.operator [](i)->iSize.Length());//QString((QChar*) temp->iSize.Ptr(), temp->iSize.Length());
-			QString driveLetter = QString::fromUtf8((const char*) &tMemDetList.operator [](i)->iDriveLetter, (int) sizeof(char) );//QString((QChar*) &temp->iDriveLetter, (int) sizeof( char ) );
+			QString free = QString::fromUtf16( temp->iFree.Ptr(), temp->iFree.Length() );
+			QString size = QString::fromUtf16( temp->iSize.Ptr(), temp->iSize.Length() );
+			QChar drive(temp->iDriveLetter.GetUpperCase());
 			memDet.mFree = free; //QString((QChar*)tMemDetList[i]->iFree.Ptr(), tMemDetList[i]->iFree.Length());
 			memDet.mSize = size; //QString((QChar*) tMemDetList[i]->iSize.Ptr(), tMemDetList[i]->iSize.Length());
-			memDet.mDriveLetter = driveLetter;
+			memDet.mDriveLetter = QString(drive);
 			
 			//memDetList[i].mDriveLetter = QString::fromUtf8( (char *) &tMemDetList[i]->iDriveLetter, (int) sizeof( char ) );
 			memDetList.append( memDet );
@@ -96,8 +98,8 @@
     MemoryDetails memoryDetails;
 
     // Convert TMemoryDetails to MemoryDetails 
-	memoryDetails.mRamFree  = QString((QChar*)tMemoryDetails.iRamFree.Ptr(), tMemoryDetails.iRamFree.Length());
-	memoryDetails.mRamSize  = QString((QChar*)tMemoryDetails.iRamSize.Ptr(), tMemoryDetails.iRamSize.Length());
+	memoryDetails.mRamFree  = QString::fromUtf16( tMemoryDetails.iRamFree.Ptr(), tMemoryDetails.iRamFree.Length() );
+	memoryDetails.mRamSize  = QString::fromUtf16( tMemoryDetails.iRamSize.Ptr(), tMemoryDetails.iRamSize.Length() );
 
 	return memoryDetails;
 }
@@ -117,7 +119,7 @@
 void EngineWrapper::ShowNote(const TDesC& aNoteMessage, TInt /*aResourceId*/)
 {
     QString note((QChar*)aNoteMessage.Ptr(),aNoteMessage.Length());
-    Notifications::showGlobalNote(note, HbMessageBox::MessageTypeInformation, HbPopup::ConfirmationNoteTimeout);
+    Notifications::showGlobalNote(note, HbMessageBox::MessageTypeInformation, 1000);
 }
 
 // ---------------------------------------------------------------------------
@@ -125,10 +127,7 @@
 void EngineWrapper::ShowProgressBar(const TDesC& aPrompt, int aMax)
 {
 	QString text((QChar*)aPrompt.Ptr(), aPrompt.Length());
-	if(iProgressDialog){
-        delete iProgressDialog;
-        iProgressDialog = NULL;
-	}
+	CloseProgressbar();
     iProgressDialog = Notifications::showProgressBar(text, aMax);
 	connect(iProgressDialog, SIGNAL(cancelled()), this, SLOT(ProgressDialogCancelled()));
 }
@@ -275,12 +274,15 @@
 
 void EngineWrapper::ProgressDialogCancelled()
 {
-	CloseProgressbar();
 	TRAPD(err, iEngine->ProgressDialogCancelledL());
 	// error handling
     if(err != KErrNone) {
         Notifications::error("Error in operation cancel.");
-    }	
+    }
+    // disconnect & delete iProgressDialog to free memory
+    disconnect(iProgressDialog, SIGNAL(cancelled()), this, SLOT(ProgressDialogCancelled()));
+    iProgressDialog->deleteLater();
+    iProgressDialog = NULL;
 }
 
 // ---------------------------------------------------------------------------
--- a/creator/src/notifications.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/creator/src/notifications.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -39,6 +39,7 @@
 {
     HbMessageBox *messageBox = new HbMessageBox(type);
     messageBox->setText(text);
+    messageBox->setStandardButtons( HbMessageBox::Ok );
     if(label.length())
         {
         HbLabel *header = new HbLabel(label, messageBox);
@@ -54,7 +55,7 @@
 void Notifications::about()
 {
     showMessageBox(HbMessageBox::MessageTypeInformation,
-        "Version 6.1.0 - June 18th 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.",
+        "Version 6.1.1 - August 27th 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.",
         "About Creator", 
         HbPopup::NoTimeout
         );
@@ -83,7 +84,7 @@
 
 // ---------------------------------------------------------------------------
 
-void Notifications::showGlobalNote(const QString& text, HbMessageBox::MessageBoxType type, HbPopup::DefaultTimeout timeout)
+void Notifications::showGlobalNote(const QString& text, HbMessageBox::MessageBoxType type, int timeout)
 {
     showMessageBox(type, text, QString("Creator"), timeout);
 }
@@ -100,6 +101,7 @@
 void CreatorYesNoDialog::launch(const QString& text, const QString& label, MUIObserver* observer, int userData) throw(std::exception)
 {
     CreatorYesNoDialog* dlg = new CreatorYesNoDialog(observer, userData);
+    dlg->setStandardButtons( HbMessageBox::Yes | HbMessageBox::No );
     dlg->setText(text);
     if(label.length())
         dlg->setHeadingWidget(new HbLabel(label, dlg));
@@ -143,10 +145,10 @@
     HbValidator *validator = new HbValidator(dlg);
     QString tmp;
     if (acceptsZero == false) {
-        tmp.append("[1-9]{1}\\d{1,4}");
+        tmp.append("^[1-9]{1}\\d{0,4}");
     }
     else {
-        tmp.append("^[0-9]{5}");
+        tmp.append("^[0-9]{1,5}");
     }
         
     QRegExp rxBasic(tmp);
@@ -213,6 +215,7 @@
         dlg->setHeadingWidget(new HbLabel(label, dlg));
     dlg->setStringItems(items);
     dlg->setSelectionMode(HbAbstractItemView::SingleSelection); 
+    dlg->setSelectedItems(QList<QVariant>());
     dlg->setAttribute(Qt::WA_DeleteOnClose);
     dlg->open(dlg, SLOT(DialogClosed(HbAction*)));
 }
--- a/filebrowser/engine/FB.hrh	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/engine/FB.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -285,4 +285,10 @@
     EMsgAttachmentsOutbox
     };
 
+enum TClipBoardMode
+    {
+    EClipBoardModeCut = 0,
+    EClipBoardModeCopy
+    };
+
 #endif      // FILEBROWSER_HRH
--- a/filebrowser/engine/FBFileOps.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/engine/FBFileOps.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -391,6 +391,8 @@
             {
             TRAP(err, DoFindEntriesRecursiveL(_L("*"), sourcePath));    // recursively under directories of current directory entry
             }
+        // ensure that target folder exists in case of copying empty folder
+        BaflUtils::EnsurePathExistsL(iFs, targetPath);
         // a path has a trailing backslash so it needs to be removed before the call
         err = FileOpAttribs(targetPath.Left(targetPath.Length()-1), aSourceEntry.iEntry.iAtt, 0, 0, 0);
         }
--- a/filebrowser/engine/FBFileUtils.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/engine/FBFileUtils.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -362,8 +362,8 @@
     //LOGSTRING("Creator: CCreatorEngine::CheckForMoreCommandsL");
     
     // update the progress bar
-    if (iProgressInfo)
-        iProgressInfo->IncrementAndDraw(1);
+//    if (iProgressInfo)
+//        iProgressInfo->IncrementAndDraw(1);
 
 	// check if we have more commands to be executed
 	if (iCurrentEntry >= CommandArrayCount() - 1)
@@ -406,15 +406,15 @@
             }
         else if (iSucceededOperations == 1 && iFailedOperations == 0)    
             {
-//            _LIT(KMessage, "Operation succeeded");
-//            iEngine->FileBrowserUI()->ShowConfirmationNote(KMessage);
+            _LIT(KMessage, "Operation succeeded");
+            iEngine->FileBrowserUI()->ShowConfirmationNote(KMessage);
             }
         else if (iSucceededOperations > 0 && iFailedOperations == 0)    
             {
-//            _LIT(KMessage, "%d operations succeeded");
-//            TBuf<128> noteMsg;
-//            noteMsg.Format(KMessage, iSucceededOperations);
-//            iEngine->FileBrowserUI()->ShowConfirmationNote(noteMsg);
+            _LIT(KMessage, "%d operations succeeded");
+            TBuf<128> noteMsg;
+            noteMsg.Format(KMessage, iSucceededOperations);
+            iEngine->FileBrowserUI()->ShowConfirmationNote(noteMsg);
             }
         else if (iSucceededOperations == 0 && iFailedOperations > 1)    
             {
@@ -443,6 +443,7 @@
             }
 
         RefreshViewL();
+        iEngine->FileBrowserUI()->NotifyModelHasChanged();
 
             }
 	else
@@ -629,16 +630,8 @@
 
 void CFileBrowserFileUtils::RefreshViewL()
     {
-	// TODO
-
 //    if (iEngine->FileListContainer())
 //        {
-//        // create a list box if it doesn't already exist
-//        if (!iEngine->FileListContainer()->ListBox())
-//            iEngine->FileListContainer()->CreateListBoxL(iEngine->Settings().iFileViewMode);
-//
-//        // clear selections if any
-//        iEngine->FileListContainer()->ListBox()->ClearSelection();
 //
 //        // make sure that the search field is disabled
 //        iEngine->FileListContainer()->DisableSearchFieldL();
@@ -651,17 +644,8 @@
 //
 //        // set text items
 //        iEngine->FileListContainer()->SetListBoxTextArrayL(GenerateItemTextArrayL());
-
-//        // make sure that the current item index is not out of array
-//        if (iEngine->FileListContainer()->CurrentListBoxItemIndex() == -1 && // -1 is a hardcoded value meaning that no current item index
-//                iEngine->FileListContainer()->ListBox()->Model()->NumberOfItems() > 0)
-//            iEngine->FileListContainer()->ListBox()->SetCurrentItemIndex( iEngine->FileListContainer()->ListBox()->Model()->NumberOfItems() - 1 );
-//
 //        }
-    
-//        iEngine->FileListContainer()->UpdateToolbar();
-
-        }
+    }
     
 // --------------------------------------------------------------------------------------------
 
@@ -1537,50 +1521,11 @@
     }
 
 // --------------------------------------------------------------------------------------------
-//TInt CFileBrowserFileUtils::GetSelectedItemsOrCurrentItemL(CFileEntryList* aFileEntryList)
-//    {
-//    aFileEntryList->Reset();
-//
-//    const CArrayFix<TInt>* selectionIndexes = iEngine->GetSelectedIndices();
-//    // by default use selected items
-//    if (selectionIndexes && selectionIndexes->Count() > 0)
-//        {
-//        TInt ref(0);
-//        TKeyArrayFix key(0, ECmpTUint16);
-//        TInt index(0);
-//
-//        for (TInt i=0; i<iFileEntryList->Count(); i++)
-//            {
-//            ref = i;
-//
-//            if (selectionIndexes->Find(ref, key, index) == 0)
-//                {
-//                aFileEntryList->AppendL(iFileEntryList->At(i));
-//                }
-//            }
-//        }
-//
-//    // or if none selected, use the current item index
-//    else
-//        {
-////        TInt currentItemIndex = iEngine->FileListContainer()->CurrentListBoxItemIndex();
-//        TInt currentItemIndex = iEngine->QueryCurrentItemIndex();
-//        if (iFileEntryList->Count() > currentItemIndex && currentItemIndex >= 0)
-//            {
-//            aFileEntryList->AppendL(iFileEntryList->At(currentItemIndex));
-//            }
-//        }
-//
-//    return aFileEntryList->Count();
-//    }
-
-// --------------------------------------------------------------------------------------------
 
 TInt CFileBrowserFileUtils::ClipboardCutL(const CArrayFix<TInt>* aSelectionIndices)
     {
 	
     iClipBoardMode = EClipBoardModeCut;
-    //TInt operations = GetSelectedItemsOrCurrentItemL(iClipBoardList);
     TInt operations = SetSelectedItemsOrCurrentItemL(aSelectionIndices, iClipBoardList);
     return operations;
     }
@@ -1590,7 +1535,6 @@
 TInt CFileBrowserFileUtils::ClipboardCopyL(const CArrayFix<TInt>* aSelectionIndices)
     {
     iClipBoardMode = EClipBoardModeCopy;
-    //TInt operations = GetSelectedItemsOrCurrentItemL(iClipBoardList);
     TInt operations = SetSelectedItemsOrCurrentItemL(aSelectionIndices, iClipBoardList);
     return operations;
     }
@@ -1634,17 +1578,10 @@
     // run folder selection dialog
     //    CFileBrowserDestinationFolderSelectionDlg* dlg = CFileBrowserDestinationFolderSelectionDlg::NewL(destinationFolder, iDriveEntryList, iconArray);
 
-    // get entry list
-    //CFileEntryList* entryList = new(ELeave) CFileEntryList(32);
-    //GetSelectedItemsOrCurrentItemL(entryList);
-    //CleanupStack::PushL(entryList);
-
     // do the file operations
     //DoCopyToFolderL(entryList, aTargetDir, aOverwriteOptions, aMove);
     DoCopyToFolderL(iCurrentSelectionList, aTargetDir, aOverwriteOptions, aMove);
 
-    //CleanupStack::PopAndDestroy(); // entryList
-
     //    CleanupStack::Pop(); //iconArray
     }
 
@@ -1735,12 +1672,6 @@
                     }
 
                 }
-
-            // execute all operations
-            if (aDeleteSource)
-                StartExecutingCommandsL(_L("Moving"));
-            else
-                StartExecutingCommandsL(_L("Copying"));
             }
         }
     }
@@ -1769,9 +1700,6 @@
             }
 
         }
-
-    // execute all operations
-    StartExecutingCommandsL(_L("Deleting"));
     }
 
 
@@ -1823,15 +1751,12 @@
                                  );
             }
         }
-
-    // execute all operations
-    StartExecutingCommandsL(_L("Touching"));
     }
 
 TBool CFileBrowserFileUtils::TargetExists(const TInt aIndex, const TFileName &newName)
     {
     TBool alreadyExists(EFalse);
-    if (iDriveEntryList->Count() > aIndex && aIndex >= 0)
+    if (iFileEntryList->Count() > aIndex && aIndex >= 0)
         {
 
         TFileEntry fileEntry = iFileEntryList->At(aIndex);
@@ -1854,7 +1779,7 @@
 
 void CFileBrowserFileUtils::RenameL(const TInt aIndex, const TFileName &newName)
     {
-        if (iDriveEntryList->Count() > aIndex && aIndex >= 0)
+        if (iFileEntryList->Count() > aIndex && aIndex >= 0)
         {
             TFileEntry fileEntry = iFileEntryList->At(aIndex);
 
@@ -1866,91 +1791,33 @@
                                   new(ELeave)CCommandParamsRename(fileEntry, targetEntry, CFileMan::EOverWrite)
                                  );
         }
-    // execute all operations done from caller
-    // StartExecutingCommandsL(_L("Renaming"));
     }
 
 // --------------------------------------------------------------------------------------------
 
-void CFileBrowserFileUtils::SetAttributesL()
+void CFileBrowserFileUtils::SetAttributesL(TUint &aSetAttMask, TUint &aClearAttMask, TBool &aRecurse)
     {
-//    CFileEntryList* entries = new(ELeave) CFileEntryList(16);
-//    GetSelectedItemsOrCurrentItemL(entries);
-//    CleanupStack::PushL(entries);
-//
-//    if (entries->Count() > 0)
-//        {
-//        TFileName naviText = _L("Multiple entries");
-//
-//        TUint setAttMask(0);
-//        TUint clearAttMask(0);
-//        //TBool recurse(EFalse);
-//
-//        // set default masks if only one file selected
-//        if (entries->Count() == 1)
-//            {
-//            TFileEntry fileEntry = entries->At(0);
-//
-//            naviText.Copy(fileEntry.iEntry.iName);
-//
-//            if (fileEntry.iEntry.IsArchive())
-//                setAttMask |= KEntryAttArchive;
-//            else
-//                clearAttMask |= KEntryAttArchive;
-//
-//            if (fileEntry.iEntry.IsHidden())
-//                setAttMask |= KEntryAttHidden;
-//            else
-//                clearAttMask |= KEntryAttHidden;
-//
-//            if (fileEntry.iEntry.IsReadOnly())
-//                setAttMask |= KEntryAttReadOnly;
-//            else
-//                clearAttMask |= KEntryAttReadOnly;
-//
-//            if (fileEntry.iEntry.IsSystem())
-//                setAttMask |= KEntryAttSystem;
-//            else
-//                clearAttMask |= KEntryAttSystem;
-//            }
-//
-        //iEngine->FileListContainer()->SetScreenLayoutL(EDisplayModeNormal);
-        //iEngine->FileListContainer()->SetNaviPaneTextL(naviText);
-
-        //CFileBrowserAttributeEditorDlg* dlg = CFileBrowserAttributeEditorDlg::NewL(setAttMask, clearAttMask, recurse);
-        //TBool dlgResult = dlg->RunEditorLD();
-
-        //iEngine->FileListContainer()->SetScreenLayoutL(iEngine->Settings().iDisplayMode);
-        //iEngine->FileListContainer()->SetNaviPaneTextL(iCurrentPath);        
-//
-//        if (dlgResult && (setAttMask > 0 || clearAttMask > 0))
-//            {
-//            for (TInt i=0; i<entries->Count(); i++)
-//                {
-//                TFileEntry fileEntry = entries->At(i);
-//
-//                // append the new command to the command array
-//                if (fileEntry.iEntry.IsDir() && recurse)
-//                    {
-//                    AppendToCommandArrayL(EFileBrowserFileOpCommandAttribs,
-//                                          new(ELeave)CCommandParamsAttribs(fileEntry, setAttMask, clearAttMask, fileEntry.iEntry.iModified, CFileMan::ERecurse)
-//                                         );
-//                    }
-//                else
-//                    {
-//                    AppendToCommandArrayL(EFileBrowserFileOpCommandAttribs,
-//                                          new(ELeave)CCommandParamsAttribs(fileEntry, setAttMask, clearAttMask, fileEntry.iEntry.iModified, 0)
-//                                         );
-//                    }
-//                }
-//
-//            // execute all operations
-//            StartExecutingCommandsL(_L("Changing attributes"));
-//            }
-//
-//        }
-//
-//    CleanupStack::PopAndDestroy(); //entries
+    for (TInt i=0; i<iCurrentSelectionList->Count(); i++)
+        {
+        TFileEntry fileEntry = iCurrentSelectionList->At(i);
+
+        // append the new command to the command array
+        if (fileEntry.iEntry.IsDir() && aRecurse)
+            {
+            AppendToCommandArrayL(EFileBrowserFileOpCommandAttribs,
+                                  new(ELeave)CCommandParamsAttribs(fileEntry, aSetAttMask, aClearAttMask, fileEntry.iEntry.iModified, CFileMan::ERecurse)
+                                 );
+            }
+        else
+            {
+            AppendToCommandArrayL(EFileBrowserFileOpCommandAttribs,
+                                  new(ELeave)CCommandParamsAttribs(fileEntry, aSetAttMask, aClearAttMask, fileEntry.iEntry.iModified, 0)
+                                 );
+            }
+        }
+
+    // execute all operations
+    StartExecutingCommandsL(_L("Changing attributes"));
     }
        
 // --------------------------------------------------------------------------------------------
--- a/filebrowser/engine/FBFileUtils.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/engine/FBFileUtils.h	Fri Sep 03 17:11:21 2010 +0300
@@ -57,6 +57,7 @@
     TTime           iMinDate;
     TTime           iMaxDate;
     TBool           iRecurse;
+    TBool           iDefaultWildCard;
 	};
 
 class TDriveEntry
@@ -182,11 +183,11 @@
     	EIdle = 0,              // do nothing
     	};
 
-    enum TClipBoardMode
-    	{
-    	EClipBoardModeCut = 0,
-    	EClipBoardModeCopy
-    	};
+//    enum TClipBoardMode
+//    	{
+//    	EClipBoardModeCut = 0,
+//    	EClipBoardModeCopy
+//    	};
 
 public:
 	static CFileBrowserFileUtils* NewL(CEngine* aEngine);
@@ -261,7 +262,7 @@
     TBool SelectionHasDirs();
     void TouchL(TBool aRecurse);
     void RenameL(const TInt aIndex, const TFileName &newName);
-    void SetAttributesL();
+    void SetAttributesL(TUint &aSetAttMask, TUint &aClearAttMask, TBool &aRecurse);
     void SearchL();
     void NewFileL(const TFileName &aNewFileName);
     void NewDirectoryL(const TFileName &aNewDirectoryName);
@@ -330,6 +331,7 @@
     inline TSearchResults SearchResults(){ return iFileSearchResults; };
     inline CFileEntryList* FoundFiles() { return iFileEntryList; };    
     inline void SetAllowProcessing(TBool aAllowProcessing) { iAllowProcessing = aAllowProcessing; }
+    TClipBoardMode GetClipBoardMode() { return iClipBoardMode; }
 	
 private:
     TState                          iState;
@@ -339,7 +341,7 @@
     TBool                           isWaitDialog;
     TBool                           isProgressDialog;
 
-    CEikProgressInfo*               iProgressInfo;
+    //CEikProgressInfo*               iProgressInfo;
     CCommandArray*                  iCommandArray;
     TInt                            iCurrentEntry;
     TInt                            iSucceededOperations;
@@ -353,7 +355,7 @@
     TFileName                       iCurrentPath;
     TInt                            iSortMode;
     TInt                            iOrderMode;
-    TInt                            iClipboardMode;
+//    TInt                            iClipboardMode;
     CDesCArray*                     iClipboardPaths;
     CDriveEntryList*                iDriveEntryList;
     CFileEntryList*                 iFileEntryList;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/engine/FBFolderSelector.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,622 @@
+/*
+* 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 "FBFolderSelector.h"
+#include "FBFileUtils.h"
+#include "FB.hrh"
+#include "FBStd.h"
+
+#if (!defined __SERIES60_30__ && !defined __SERIES60_31__)
+#include <driveinfo.h>
+#endif // !defined __SERIES60_30__ && !defined __SERIES60_31__
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CFileBrowserFolderSelector *CFileBrowserFolderSelector::NewL(
+        TDes& aReturnPath,
+        MFolderSelectorUI *aFolderSelectorUI)
+    {
+    CFileBrowserFolderSelector* self = new(ELeave) CFileBrowserFolderSelector(aReturnPath,
+                                                                              aFolderSelectorUI);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CFileBrowserFolderSelector::~CFileBrowserFolderSelector()
+    {
+    delete iFileEntryList;
+    delete iDriveEntryList;
+    
+    iFs.Close();
+
+    //iEikonEnv->InfoMsgCancel();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CFileBrowserFolderSelector::CFileBrowserFolderSelector(TDes& aReturnPath, MFolderSelectorUI *aFolderSelectorUI) :
+    iReturnPath(aReturnPath),
+    iFolderSelectorUI(aFolderSelectorUI)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::ConstructL()
+    {
+    User::LeaveIfError( iFs.Connect() );
+    iDriveEntryList = new(ELeave) CDriveEntryList(8);
+    iFileEntryList = new(ELeave) CFileEntryList(32);
+    iCurrentPath = KNullDesC;
+    
+    //iIsDragging = EFalse;
+    //EnableDragEvents();
+    
+    // get only writeable drives
+    GetDriveListL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+/*
+void CFileBrowserFolderSelector::HandlePointerEventL(const TPointerEvent &aPointerEvent)
+    {
+    // detect direction of dragging by comparing the start and finish points
+    
+    if (aPointerEvent.iType == TPointerEvent::EButton1Down)
+        {
+        iDragStartPoint = aPointerEvent.iPosition;
+        iIsDragging = EFalse;
+        }
+    else if (aPointerEvent.iType == TPointerEvent::EDrag)
+        {
+        iIsDragging = ETrue;
+        
+        return;
+        }
+    else if (aPointerEvent.iType == TPointerEvent::EButton1Up)
+        {
+        if (iIsDragging)
+            {
+            const TInt KDelta = iDragStartPoint.iX - aPointerEvent.iPosition.iX;
+            const TInt KThreshold = 30;
+            
+            if (KDelta < -KThreshold) // dragging to right
+                {
+                // "emulate" right key press
+                
+                TKeyEvent keyEvent;
+                keyEvent.iCode = EKeyRightArrow;
+                keyEvent.iModifiers = 0;
+                
+                TEventCode type = EEventKey;
+        
+                OfferKeyEventL(keyEvent, type);
+                
+                return;
+                }
+            else if (KDelta > KThreshold) // dragging to left
+                {
+                // "emulate" left key press
+                
+                TKeyEvent keyEvent;
+                keyEvent.iCode = EKeyLeftArrow;
+                keyEvent.iModifiers = 0;
+                
+                TEventCode type = EEventKey;
+        
+                OfferKeyEventL(keyEvent, type);
+                
+                return;
+                }            
+            }
+        iIsDragging = EFalse;
+        }
+    else
+        {
+        iIsDragging = EFalse;        
+        }
+
+    CAknListQueryDialog::HandlePointerEventL(aPointerEvent);    
+    }
+*/
+       
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CFileBrowserFolderSelector::OfferKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
+    {
+//    if(aType != EEventKey)
+//        return EKeyWasNotConsumed;
+    
+//    if (aKeyEvent.iCode == EKeyLeftArrow && !IsDriveListViewActive())
+//        {
+//        MoveUpOneLevelL();
+//        return EKeyWasConsumed;
+//        }
+//    else if (aKeyEvent.iCode == EKeyRightArrow && ((ListBox()->CurrentItemIndex() > 0 && !IsDriveListViewActive()) || IsDriveListViewActive()))
+//        {
+//        MoveDownToDirectoryL();
+//        return EKeyWasConsumed;
+//        }
+//    else if (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter)
+//        {
+//        if (IsDriveListViewActive())
+//            {
+//            MoveDownToDirectoryL();
+//            return EKeyWasConsumed;
+//            }
+//        else if (ListBox()->CurrentItemIndex() == 0)
+//            {
+//            TryExitL(EAknSoftkeyOk);
+//            return EKeyWasConsumed;
+//            }
+//        else if (ListBox()->CurrentItemIndex() > 0)
+//            {
+//            MoveDownToDirectoryL();
+//            return EKeyWasConsumed;
+//            }
+//        }
+//
+//    TKeyResponse result = CAknDialog::OfferKeyEventL(aKeyEvent, aType);
+//
+//    // update LSK label
+//    if (!IsDriveListViewActive())
+//        {
+//        if (ListBox()->CurrentItemIndex() == 0)
+//            {
+//            ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, iLSKActionText);
+//            ButtonGroupContainer().DrawNow();
+//            }
+//        else
+//            {
+//            ButtonGroupContainer().SetCommandL(0, EAknSoftkeyOk, _L("Open dir"));
+//            ButtonGroupContainer().DrawNow();
+//            }
+//        }
+//
+//    return result;
+    return TKeyResponse();
+    }    
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::PreLayoutDynInitL()
+    {
+//    CAknListQueryDialog::PreLayoutDynInitL();
+
+//    static_cast<CEikFormattedCellListBox*>(ListBox())->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::PostLayoutDynInitL()
+    {
+//    CAknListQueryDialog::PostLayoutDynInitL();
+    
+    //w SetIconArrayL(static_cast<CArrayPtr<CGulIcon>*>(iIconArray));
+    
+    RefreshViewL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CFileBrowserFolderSelector::OkToExitL(TInt /*aButtonId*/)
+    {
+//    if (aButtonId == GetLeftCBAShortKeyPress())
+//        {
+//        if (IsDriveListViewActive())
+//            {
+//            MoveDownToDirectoryL();
+//            return EFalse;
+//            }
+//        else if (ListBox()->CurrentItemIndex() == 0)
+//            {
+//            // close the dialog
+//            iReturnPath = iCurrentPath;
+//            return ETrue;
+//            }
+//        else if (ListBox()->CurrentItemIndex() > 0)
+//            {
+//            MoveDownToDirectoryL();
+//            return EFalse;
+//            }
+//        else
+//            return EFalse;
+//        }
+//    else if (aButtonId == GetRightCBAShortKeyPress())
+//        {
+//        return ETrue;
+//        }
+//    else
+//        {
+//        return EFalse;
+//        }
+    return ETrue;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::MoveUpOneLevelL()
+    {
+    if (iCurrentPath.Length() <= 3)
+        {
+        // move to drive list view is the current path is already short enough
+        iCurrentPath = KNullDesC;
+        }
+    else
+        {
+        // move one directory up
+        TInt marker(iCurrentPath.Length());
+        
+        // find second last dir marker
+        for (TInt i=iCurrentPath.Length()-2; i>=0; i--)
+            {
+            if (iCurrentPath[i] == '\\')
+                {
+                marker = i;
+                break;
+                }
+                
+            }
+        iCurrentPath = iCurrentPath.LeftTPtr(marker+1);
+        }    
+
+    // update view
+    RefreshViewL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::MoveDownToDirectoryL(TInt index)
+    {
+    if (index >= 0)
+        {
+        if (IsDriveListViewActive())
+            {
+            // currently in a drive list view, move to root of selected drive
+            if (iDriveEntryList->Count() > index)
+                {
+                TDriveEntry driveEntry = iDriveEntryList->At(index);
+                
+                iCurrentPath.Append(driveEntry.iLetter);    
+                iCurrentPath.Append(_L(":\\"));
+                }
+            }
+        else
+            {
+            // this needed because we have an extra item in the listbox
+            index--;
+
+            // append the new directory
+            if (iFileEntryList->Count() > index)
+                {
+                TFileEntry fileEntry = iFileEntryList->At(index);
+                
+                if (fileEntry.iEntry.IsDir())
+                    {
+                    iCurrentPath.Append(fileEntry.iEntry.iName);
+                    iCurrentPath.Append(_L("\\"));
+                    }
+                }
+            }
+                   
+        // update view
+        RefreshViewL();
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::RefreshViewL()
+    {
+    if (IsDriveListViewActive())
+        {
+        GetDriveListL();
+        }
+    else
+        {
+        GetFileListL();
+        }
+    iFolderSelectorUI->InformFolderSelectionChanged();
+
+    // TODO
+//    if (iCurrentPath == KNullDesC)
+//        iEikonEnv->InfoMsgWithDuration(_L("<- up dir  down dir ->"), TTimeIntervalMicroSeconds32(KMaxTInt));
+//    else
+//        iEikonEnv->InfoMsgWithDuration(iCurrentPath, TTimeIntervalMicroSeconds32(KMaxTInt));
+   
+//    SetItemTextArray(textArray);
+//    SetOwnershipType(ELbmOwnsItemArray);
+//    ListBox()->HandleItemAdditionL();
+//    Layout();
+//    ListBox()->SetCurrentItemIndex(0);
+//    DrawDeferred();
+    }
+
+// --------------------------------------------------------------------------------------------
+    
+//TBool CFileBrowserFolderSelector::RunCopyDlgLD()
+//    {
+//    iLSKActionText.Copy(_L("Copy"));
+//    return ExecuteLD(1/*R_COPY_TO_FOLDER_SELECTION_QUERY*/);
+//    }
+
+//// --------------------------------------------------------------------------------------------
+
+//TBool CFileBrowserFolderSelector::RunMoveDlgLD()
+//    {
+//    iLSKActionText.Copy(_L("Move"));
+//    return ExecuteLD(1/*R_MOVE_TO_FOLDER_SELECTION_QUERY*/);
+//    }
+
+//// --------------------------------------------------------------------------------------------
+
+//TInt CAknQueryDialog::GetLeftCBAShortKeyPress()
+//    {
+//    return TInt16(0xffff & TInt16(ButtonGroupContainer().ButtonGroup()->CommandId(0)));
+//    }
+
+//// --------------------------------------------------------------------------------------------
+  
+//TInt CAknQueryDialog::GetRightCBAShortKeyPress()
+//    {
+//    return TInt16(0xffff & TInt16(ButtonGroupContainer().ButtonGroup()->CommandId(2)));
+//    }
+       
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserFolderSelector::GetDriveListL()
+    {
+    TDriveList driveList;
+
+    // get drive listing depending of the support for network drives
+    if (true/*TODO iEngine->Settings().iSupportNetworkDrives*/)
+        {
+        #ifndef __SERIES60_30__
+            #ifndef __SERIES60_31__
+                User::LeaveIfError(iFs.DriveList(driveList, KDriveAttAll));
+            #endif
+        #else
+            User::LeaveIfError(iFs.DriveList(driveList));
+        #endif
+        }
+    else
+        {
+        User::LeaveIfError(iFs.DriveList(driveList));
+        }
+
+    iDriveEntryList->Reset();
+
+    //TDriveEntry driveEntry;
+    for (TInt i=0; i<KMaxDrives; i++)
+        {
+        if (driveList[i])
+            {
+            TDriveEntry driveEntry;
+
+            // set default icon
+            driveEntry.iIconId = EFixedIconPhoneMemory;
+
+            // get drive letter and number
+            driveEntry.iLetter = 'A' + i;
+            iFs.CharToDrive(driveEntry.iLetter, driveEntry.iNumber);
+
+            // get volume info and check errors
+            if (iFs.Volume(driveEntry.iVolumeInfo, driveEntry.iNumber) == KErrNone)
+                {
+                // set media type descriptor
+                TInt mediaType = driveEntry.iVolumeInfo.iDrive.iType;
+                TBool extMountable( EFalse );
+
+                if (mediaType == EMediaNotPresent)
+                    driveEntry.iMediaTypeDesc = _L("Not present");
+                else if (mediaType ==EMediaUnknown )
+                    driveEntry.iMediaTypeDesc = _L("Unknown");
+                else if (mediaType ==EMediaFloppy )
+                    driveEntry.iMediaTypeDesc = _L("Floppy");
+                else if (mediaType == EMediaHardDisk)
+                    driveEntry.iMediaTypeDesc = _L("Mass storage");
+                else if (mediaType == EMediaCdRom)
+                    driveEntry.iMediaTypeDesc = _L("CD-ROM");
+                else if (mediaType == EMediaRam)
+                    driveEntry.iMediaTypeDesc = _L("RAM");
+                else if (mediaType == EMediaFlash)
+                    driveEntry.iMediaTypeDesc = _L("Flash");
+                else if (mediaType == EMediaRom)
+                    driveEntry.iMediaTypeDesc = _L("ROM");
+                else if (mediaType == EMediaRemote)
+                    driveEntry.iMediaTypeDesc = _L("Remote");
+                else if (mediaType == EMediaNANDFlash)
+                    driveEntry.iMediaTypeDesc = _L("NAND flash");
+
+                // get real size of the ROM drive
+                if (mediaType == EMediaRom)
+                    {
+                    TMemoryInfoV1Buf ramMemory;
+                    UserHal::MemoryInfo(ramMemory);
+                    driveEntry.iVolumeInfo.iSize = ramMemory().iTotalRomInBytes;
+                    }
+
+                // set attribute descripitions
+                if (driveEntry.iVolumeInfo.iDrive.iBattery == EBatNotSupported)
+                    driveEntry.iAttributesDesc.Append(_L("Battery not supported"));
+                else if (driveEntry.iVolumeInfo.iDrive.iBattery == EBatGood)
+                    driveEntry.iAttributesDesc.Append(_L("Battery good"));
+                else if (driveEntry.iVolumeInfo.iDrive.iBattery == EBatLow)
+                    driveEntry.iAttributesDesc.Append(_L("Battery low"));
+                else
+                    driveEntry.iAttributesDesc.Append(_L("Battery state unknown"));
+
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttLocal)
+                    driveEntry.iAttributesDesc.Append(_L(" + Local"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttRom)
+                    driveEntry.iAttributesDesc.Append(_L(" + ROM"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttRedirected)
+                    driveEntry.iAttributesDesc.Append(_L("+ Redirected"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttSubsted)
+                    driveEntry.iAttributesDesc.Append(_L(" + Substed"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttInternal)
+                    driveEntry.iAttributesDesc.Append(_L(" + Internal"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttRemovable)
+                    {
+                    driveEntry.iAttributesDesc.Append(_L(" + Removable"));
+#if (!defined __SERIES60_30__ && !defined __SERIES60_31__)
+                    TUint drvStatus( 0 );
+                    if ( !DriveInfo::GetDriveStatus( iFs, driveEntry.iNumber, drvStatus ) &&
+                         drvStatus & DriveInfo::EDriveExternallyMountable &&
+                         drvStatus & DriveInfo::EDriveInternal )
+                        {
+                        extMountable = ETrue;
+                        // iMediaTypeDesc already set as "Mass storage"
+                        }
+                    else
+                        {
+                        driveEntry.iMediaTypeDesc = _L("Memory card");
+                        }
+#else
+                    driveEntry.iMediaTypeDesc = _L("Memory card");
+#endif
+                    }
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttRemote)
+                    driveEntry.iAttributesDesc.Append(_L(" + Remote"));
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttTransaction)
+                    driveEntry.iAttributesDesc.Append(_L(" + Transaction"));
+
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttVariableSize)
+                    driveEntry.iAttributesDesc.Append(_L(" + Variable size"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttDualDensity)
+                    driveEntry.iAttributesDesc.Append(_L(" + Dual density"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttFormattable)
+                    driveEntry.iAttributesDesc.Append(_L(" + Formattable"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttWriteProtected)
+                    driveEntry.iAttributesDesc.Append(_L(" + Write protected"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttLockable)
+                    driveEntry.iAttributesDesc.Append(_L(" + Lockable"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttLocked)
+                    driveEntry.iAttributesDesc.Append(_L(" + Locked"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttHasPassword)
+                    driveEntry.iAttributesDesc.Append(_L(" + Has password"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttReadWhileWrite)
+                    driveEntry.iAttributesDesc.Append(_L(" + Read while write"));
+                if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttDeleteNotify)
+                    driveEntry.iAttributesDesc.Append(_L(" + Supports DeleteNotify"));
+
+
+                // mark a removable media with memory card icon
+                if (driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAttRemovable && !extMountable)
+                    {
+                    if (driveEntry.iVolumeInfo.iDrive.iMediaAtt & KMediaAttLocked || driveEntry.iVolumeInfo.iDrive.iDriveAtt & KDriveAbsent)
+                        {
+                        driveEntry.iIconId = EFixedIconMemoryCardDisabled;
+                        }
+                    else
+                        {
+                        driveEntry.iIconId = EFixedIconMemoryCard;
+                        }
+                    }
+                }
+
+            // if this fails, likely it's a memory card which is not present
+            else
+                {
+                TVolumeInfo volumeInfo;
+                volumeInfo.iSize = 0;
+                volumeInfo.iFree = 0;
+                volumeInfo.iDrive.iDriveAtt = KDriveAttRemovable;
+                volumeInfo.iDrive.iMediaAtt = KMediaAttWriteProtected;
+                driveEntry.iVolumeInfo = volumeInfo;
+
+                driveEntry.iMediaTypeDesc = _L("Not ready");
+                driveEntry.iIconId = EFixedIconMemoryCardDisabled;
+                }
+// TODO What to do with iPrevFolderName and iPrevFolderIndex
+//            if ( iPrevFolderName != KNullDesC && iPrevFolderName[0] == driveEntry.iLetter )
+//                {
+//                iPrevFolderIndex = iDriveEntryList->Count();
+//                }
+
+            if (driveEntry.iVolumeInfo.iDrive.iMediaAtt != KMediaAttWriteProtected
+                && driveEntry.iVolumeInfo.iDrive.iMediaAtt != KMediaAttLocked
+                && driveEntry.iVolumeInfo.iDrive.iDriveAtt != KDriveAbsent)
+                {
+                iDriveEntryList->AppendL(driveEntry);
+                }
+            }
+        }
+    }
+
+void CFileBrowserFolderSelector::GetFileListL()
+    {
+    iFileEntryList->Reset();
+
+    CDir* dir = NULL;
+    if (iFs.GetDir(iCurrentPath, KEntryAttDir|KEntryAttMatchMask, ESortByName | EAscending | EDirsFirst, dir) == KErrNone)
+        {
+        CleanupStack::PushL(dir);
+
+        for (TInt i=0; i<dir->Count(); i++)
+            {
+            TFileEntry fileEntry;
+            fileEntry.iPath = iCurrentPath;
+            fileEntry.iEntry = (*dir)[i];
+            fileEntry.iDirEntries = KErrNotFound;
+            fileEntry.iIconId = EFixedIconEmpty;
+
+            // check for directory entries
+            if (fileEntry.iEntry.IsDir())
+                {
+                fileEntry.iIconId = EFixedIconFolder;
+
+                TFileName subPath = fileEntry.iPath;
+                subPath.Append(fileEntry.iEntry.iName);
+                subPath.Append(_L("\\"));
+
+                // check if any sub directories
+                CDir* subDir = NULL;
+                if (iFs.GetDir(subPath, KEntryAttDir|KEntryAttMatchMask, ESortNone | EDirsFirst, subDir) == KErrNone)
+                    {
+                    fileEntry.iDirEntries = subDir->Count();
+
+                    for (TInt j=0; j<subDir->Count(); j++)
+                        {
+                        TEntry entry = (*subDir)[j];
+
+                        if (entry.IsDir())
+                            {
+                            fileEntry.iIconId = EFixedIconFolderSub;
+                            break;
+                            }
+                        }
+
+                    delete subDir;
+                    }
+                    iFileEntryList->AppendL(fileEntry);
+                }
+            }
+
+        CleanupStack::PopAndDestroy(); //dir
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+      
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/engine/FBFolderSelector.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* 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:  
+*
+*/
+
+#ifndef FILEBROWSER_FILEDLGS_H
+#define FILEBROWSER_FILEDLGS_H
+
+#include "FBFileUtils.h"
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <apgcli.h>
+
+/**
+  * Interface to communicate UI with
+  */
+class MFolderSelectorUI
+{
+public:
+    /**
+     * Shows info message with text
+//     * @param A aText text to be shown in message body.
+//     * @param A aTitle text to be shown in message title.
+     * @return None.
+     */
+    virtual void InformFolderSelectionChanged() = 0;
+};
+
+/**
+  * Backend class for destination folder selection dialog
+  */
+class CFileBrowserFolderSelector
+    {
+public:
+    static CFileBrowserFolderSelector *NewL(TDes& aReturnPath, MFolderSelectorUI *);
+    virtual ~CFileBrowserFolderSelector();
+
+    inline TFileName CurrentPath() const { return iCurrentPath; }
+    inline TBool IsDriveListViewActive() const { return iCurrentPath==KNullDesC; }
+    inline const CDriveEntryList *DriveEntryList() { return iDriveEntryList; }
+    inline const CFileEntryList *FileEntryList() {return iFileEntryList; }
+
+    void MoveDownToDirectoryL(TInt index);
+    void MoveUpOneLevelL();
+
+private: // Constructors
+    CFileBrowserFolderSelector(TDes& aReturnPath, MFolderSelectorUI *);
+    void ConstructL();
+
+protected:  // From CEikDialog
+    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
+    void PreLayoutDynInitL();
+    void PostLayoutDynInitL();
+    TBool OkToExitL(TInt aButtonId);    
+
+protected:  // From CCoeControl
+    //void HandlePointerEventL(const TPointerEvent &aPointerEvent); 
+
+private: // New methods
+    void RefreshViewL();
+
+    void GetDriveListL();
+    void GetFileListL();
+
+private: // Data
+    TInt                            iSelectedIndex;
+    TBuf<16>                        iLSKActionText;
+    TDes                           &iReturnPath;
+    RFs                             iFs;
+    CDriveEntryList                *iDriveEntryList;
+    CFileEntryList                 *iFileEntryList;
+    TFileName                       iCurrentPath;
+    MFolderSelectorUI               *iFolderSelectorUI;
+    };
+
+#endif
+
+// End of File
+
--- a/filebrowser/engine/engine.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/engine/engine.h	Fri Sep 03 17:11:21 2010 +0300
@@ -165,6 +165,11 @@
      */
     virtual TBool ShowConfirmationQuery(const TDesC& aDescText) = 0;
 
+    /**
+      * Notify wrapping model data has changed
+      */
+    virtual void NotifyModelHasChanged() = 0;
+
 };
 
 class CEngine : public CBase
--- a/filebrowser/group/ReleaseNotes_FileBrowser.txt	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/group/ReleaseNotes_FileBrowser.txt	Fri Sep 03 17:11:21 2010 +0300
@@ -1,7 +1,7 @@
 ===============================================================================
 
-RELEASE NOTES - FILEBROWSER v5.1.0
-RELEASED 18th June 2010
+RELEASE NOTES - FILEBROWSER v5.2.0
+RELEASED 27th August 2010
 
 SUPPORTS S60 3.0+
 
@@ -37,11 +37,10 @@
 
 ===============================================================================
 
-What's New in v5.1.0
+What's New in v5.2.0
 ====================
 - Error fixes
-- File filtering
-- Usability improvements
+- Destination folder selection dialog
 
 ===============================================================================
 
@@ -111,6 +110,17 @@
 Version History:
 ================
 
+Version 5.1.1 - 26th June 2010
+====================
+- Error fixes
+- File attributes
+
+Version 5.1.0  - 18th June 2010
+====================
+- Error fixes
+- File filtering
+- Usability improvements
+
 Version 5.0.1 - 21th May 2010
 ====================
 - Error fixes
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/icons/qtg_indi_status_back.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="36px" height="36px" viewBox="0 0 36 36" enable-background="new 0 0 36 36" xml:space="preserve">
+<defs>
+</defs>
+<path fill="#FFFFFF" d="M2.631,9.923l9.245-7.078c0.286-0.164,0.637-0.164,0.923,0c0.285,0.166,0.461,0.471,0.461,0.801v4.633h7.069
+	c7.455,0.001,13.498,5.043,13.501,12.498c-0.003,7.459-6.046,12.498-13.501,12.502c0,0-0.604,0-1.207,0s-1-0.473-1-1.129
+	c0-0.654,0-2.432,0-2.871s0.493-1.002,1-1.002s2.207,0,2.207,0c4.137-0.008,7.492-3.361,7.499-7.5
+	c-0.007-4.139-3.362-7.493-7.499-7.5H13.26V17.8c0,0.33-0.176,0.635-0.461,0.799c-0.286,0.164-0.637,0.166-0.923,0l-9.245-7.078
+	c-0.285-0.164-0.461-0.469-0.461-0.799C2.17,10.394,2.346,10.089,2.631,9.923z"/>
+<rect fill-rule="evenodd" clip-rule="evenodd" fill="none" width="36" height="36"/>
+</svg>
--- a/filebrowser/ui/inc/driveentry.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef DRIVEENTRY_H
-#define DRIVEENTRY_H
-
-#include "FBFileUtils.h"
-#include <QString>
-#include <QDate>
-
-
-/**
- * class that is used for communicating between Symbian and Qt code.
- */
-class DriveEntry {
-
-public:
-    
-    /**
-     * Constructor
-     */
-    DriveEntry(TDriveEntry aDriveEntry);
-    
-    /**
-     * Destructor
-     */
-    ~DriveEntry();
-    
-    /* Functions that are called from UI */
-public: 
-    QChar driveLetter();
-    int number();
-    QString mediaTypeString();
-    QString attributesString();
-    int iconId();
-    qint64 volumeInfoFree();
-    qint64 volumeInfoSize();
-
-private:
-    TDriveEntry mDriveEntry;
-    };
-
-#endif //DRIVEENTRY_H
--- a/filebrowser/ui/inc/editorview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef EDITORVIEW_H
-#define EDITORVIEW_H
-
-#include <hbview.h>
-
-class HbTextEdit;
-class HbAction;
-
-class EditorView : public HbView
-{
-    Q_OBJECT
-
-public:
-    EditorView();
-    ~EditorView();
-    void open(const QString& fileName, bool flagReadOnly);
-
-signals:
-    void finished(bool ok);
-
-private slots:
-    void backButtonClicked();
-    void displayInText();
-    void displayInHex();
-    void updateMenu();
-
-    /*
-    void newFile();
-    bool save();
-    bool saveAs();
-    void about();
-    void documentWasModified();
-    */
- 
-
-private:
-    void loadFile(const QString &fileName);
-    void createMenu();
-
-    // editor
-    HbTextEdit *mTextEdit;
-    // if flag true, file is currently in hex format
-    bool mFileHex;
-    bool mFlagReadOnly;
-    QString mFileName;
-    QString mFileContent;
-
-    HbAction* mToTextAction;
-    HbAction* mToHexAction;
-    HbAction* mExitAction;
-};
-
-#endif // EDITORVIEW_H
--- a/filebrowser/ui/inc/enginewrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/enginewrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -18,8 +18,8 @@
 #ifndef ENGINEWRAPPER_H
 #define ENGINEWRAPPER_H
 
-#include "driveentry.h"
-#include "fileentry.h"
+#include "fbdriveentry.h"
+#include "fbfileentry.h"
 #include "filebrowsersettings.h"
 
 #include "engine.h"
@@ -91,6 +91,7 @@
     void ProcessEvents();
 
     TBool ShowConfirmationQuery(const TDesC& aDescText);
+    void NotifyModelHasChanged();
 
 public: 
     /* Functions that are called from UI */
@@ -122,6 +123,7 @@
     void rename(const QModelIndex& aIndex, const QString aNewName);
     void touch(bool aRecurse);
     void properties(const QModelIndex &aCurrentItemIndex, QStringList &aPropertyList, QString &aTitleText);
+    void setAttributes(quint32 &, quint32 &, bool &);
 
     bool openAppArc(QString fileName);
     bool openDocHandler(QString fileName, bool embeddedVal = false);
@@ -130,8 +132,8 @@
     bool isCurrentDriveReadOnly();
     bool isClipBoardListInUse();
     int itemCount() const;
-    DriveEntry getDriveEntry(const QModelIndex& aIndex) const;
-    FileEntry getFileEntry(const QModelIndex& aIndex) const;
+    FbDriveEntry getDriveEntry(const QModelIndex& aIndex) const;
+    FbFileEntry getFileEntry(const QModelIndex& aIndex) const;
 	
     const CArrayFix<TInt> *convertSelectionList(const QModelIndexList &aSelectionIndices);
     void setCurrentSelection(const QModelIndexList &aSelectionIndices);
@@ -174,6 +176,11 @@
 
     void showFileCheckSums(const QModelIndex &aIndex, TFileBrowserCmdFileChecksums checksumType);
 
+    TClipBoardMode getClipBoardMode() { return mEngine->FileUtils()->GetClipBoardMode(); }
+
+signals:
+    void fileSystemDataChanged();
+
 private slots:
         void progressDialogCancelled();
         void waitDialogCancelled();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbattributesview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBATTRIBUTESVIEW_H
+#define FBATTRIBUTESVIEW_H
+
+#include <HbView>
+
+class HbDataForm;
+class HbDataFormModelItem;
+
+class FbAttributesView : public HbView
+{
+    Q_OBJECT
+
+public:
+    FbAttributesView(quint32 &, quint32 &, bool &);
+    virtual ~FbAttributesView();
+
+    quint32 &setAttributesMask() { return mSetAttributesMask; }
+    quint32 &clearAttributesMask() { return mClearAttributesMask; }
+    bool &recurse() { return mRecurse; }
+
+signals:
+    void finished(bool ok);
+
+public slots:
+    void accept();
+    void reject();
+
+private:
+    void initDataForm();
+    void createToolbar();
+    void loadSettings();
+    void saveSettings();
+
+private:
+    quint32 mSetAttributesMask;
+    quint32 mClearAttributesMask;
+    bool mRecurse;
+
+    HbDataForm *mForm;
+    HbDataFormModelItem *mArchiveItem;
+    HbDataFormModelItem *mHiddenItem;
+    HbDataFormModelItem *mReadOnlyItem;
+    HbDataFormModelItem *mSystemItem;
+    HbDataFormModelItem *mRecurseItem;
+};
+
+#endif // FBATTRIBUTESVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbdriveentry.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBDRIVEENTRY_H
+#define FBDRIVEENTRY_H
+
+#include "FBFileUtils.h"
+#include <QString>
+#include <QDate>
+
+
+/**
+ * class that is used for communicating between Symbian and Qt code.
+ */
+class FbDriveEntry {
+
+public:
+    
+    /**
+     * Constructor
+     */
+    FbDriveEntry(TDriveEntry aDriveEntry);
+    
+    /**
+     * Destructor
+     */
+    ~FbDriveEntry();
+    
+    /* Functions that are called from UI */
+public: 
+    QChar driveLetter();
+    int number();
+    QString mediaTypeString();
+    QString attributesString();
+    int iconId();
+    qint64 volumeInfoFree();
+    qint64 volumeInfoSize();
+
+private:
+    TDriveEntry mDriveEntry;
+    };
+
+#endif //FBDRIVEENTRY_H
--- a/filebrowser/ui/inc/fbdrivemodel.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/fbdrivemodel.h	Fri Sep 03 17:11:21 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef FBDRIVEMODELH_H_
 #define FBDRIVEMODELH_H_
 
-#include "driveentry.h"
+#include "fbdriveentry.h"
 
 #include <QAbstractListModel>
 #include <QVariant>
@@ -41,7 +41,7 @@
     QVariant data(const QModelIndex &index, int role) const;
     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
 
-    DriveEntry driveEntry(const QModelIndex &index) const;
+    FbDriveEntry driveEntry(const QModelIndex &index) const;
     QString driveLetter( const QModelIndex &index ) const;
     QString mediaTypeString(const QModelIndex &index) const;
 
--- a/filebrowser/ui/inc/fbdriveview.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/fbdriveview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -114,18 +114,18 @@
     void doDiskAdminClearDrivePassword(HbAction *);
 
     void diskAdminEraseDrivePassword();
-    void doDiskAdminEraseDrivePassword(HbAction *);
+    void doDiskAdminEraseDrivePassword(int);
 
     void diskAdminFormatDrive();
-    void doDiskAdminFormatDrive(HbAction *);
+    void doDiskAdminFormatDrive(int);
 
     void diskAdminQuickFormatDrive();
-    void doDiskAdminQuickFormatDrive(HbAction *);
+    void doDiskAdminQuickFormatDrive(int);
 
     void diskAdminCheckDisk();
 
     void diskAdminScanDrive();
-    void doDiskAdminScanDrive(HbAction *);
+    void doDiskAdminScanDrive(int);
 
     void diskAdminSetDriveName();
     void doDiskAdminSetDriveName(HbAction *);
@@ -135,19 +135,19 @@
 
     void diskAdminEjectDrive();
     void diskAdminDismountDrive();
-    void doDiskAdminDismountDrive(HbAction *);
+    void doDiskAdminDismountDrive(int);
 
     void diskAdminEraseMBR();
-    void doDiskAdminEraseMBR(HbAction *);
-    void doDiskAdminReallyEraseMBR(HbAction *);
-    void doDiskAdminNotRemovableReallyEraseMBR(HbAction *);
+    void doDiskAdminEraseMBR(int);
+    void doDiskAdminReallyEraseMBR(int);
+    void doDiskAdminNotRemovableReallyEraseMBR(int);
     
     void diskAdminPartitionDrive();
-    void diskAdminPartitionDriveProceed(HbAction *);
-    void diskAdminPartitionDriveReallyProceed(HbAction *);
-    void diskAdminPartitionDriveIsNotRemovable(HbAction *);
-    void diskAdminPartitionDriveEraseMbr(HbAction *);
-    void diskAdminPartitionDriveGetCount(HbAction*);
+    void diskAdminPartitionDriveProceed(int);
+    void diskAdminPartitionDriveReallyProceed(int);
+    void diskAdminPartitionDriveIsNotRemovable(int);
+    void diskAdminPartitionDriveEraseMbr(int);
+    void diskAdminPartitionDriveGetCount(HbAction *);
 
     // tools menu
     void toolsAllAppsToTextFile();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbeditorview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBEDITORVIEW_H
+#define FBEDITORVIEW_H
+
+#include <hbview.h>
+
+class HbTextEdit;
+class HbAction;
+
+class FbEditorView : public HbView
+{
+    Q_OBJECT
+
+public:
+    FbEditorView();
+    ~FbEditorView();
+    void open(const QString& fileName, bool flagReadOnly);
+
+signals:
+    void finished(bool ok);
+
+private slots:
+    void backButtonClicked();
+    void displayInText();
+    void displayInHex();
+    void updateMenu();
+
+    /*
+    void newFile();
+    bool save();
+    bool saveAs();
+    void about();
+    void documentWasModified();
+    */
+ 
+
+private:
+    void loadFile(const QString &fileName);
+    void createMenu();
+
+    // editor
+    HbTextEdit *mTextEdit;
+    // if flag true, file is currently in hex format
+    bool mFileHex;
+    bool mFlagReadOnly;
+    QString mFileName;
+    QString mFileContent;
+
+    HbAction* mToTextAction;
+    HbAction* mToHexAction;
+    HbAction* mExitAction;
+};
+
+#endif // FBEDITORVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbfileentry.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FILEEENTRY_H
+#define FILEEENTRY_H
+
+#include "FBFileUtils.h"
+#include <QString>
+#include <QDate>
+#include <QStringList>
+
+/**
+ * class that is used for communicating between Symbian and Qt code.
+ */
+class FbFileEntry
+{
+public:
+    /**
+     * Constructor
+     */
+    FbFileEntry(TFileEntry aFileEntry);
+    
+    /**
+     * Destructor
+     */
+    ~FbFileEntry();
+    
+    /* Functions that are called from UI */
+public: 
+    QString fullName();
+    QString path();
+
+    int attributes();
+    QString attributesString();
+    bool isArchive() { return mFileEntry.iEntry.IsArchive(); }
+    bool isHidden() { return mFileEntry.iEntry.IsHidden(); }
+    bool isReadOnly() { return mFileEntry.iEntry.IsReadOnly(); }
+    bool isSystem() { return mFileEntry.iEntry.IsSystem(); }
+
+    int size();
+    QString sizeString();
+
+//    QDateTime modified();
+    QString modifiedString();
+//    int Uid(int id);
+    bool isDir();
+    QString name();
+
+    int dirEntries();
+    QString dirEntriesString();
+
+    int iconId();
+
+private:
+    TFileEntry mFileEntry;
+    };
+
+#endif //FBFILEEENTRY_H
--- a/filebrowser/ui/inc/fbfileview.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/fbfileview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -42,7 +42,7 @@
 class HbMenu;
 class HbSearchPanel;
 
-class EditorView;
+class FbEditorView;
 class SearchView;
 class SettingsView;
 class EngineWrapper;
@@ -67,8 +67,8 @@
 
     void openPropertyDialog(const QStringList &propertyList, const QString &title);
 
+    void storeSelectedItemsOrCurrentItem();
     QModelIndex currentItemIndex();
-    void storeSelectedItemsOrCurrentItem();
 
     // Menu related methods
     void createMenu();
@@ -102,14 +102,14 @@
     void doFileNewDirectory(HbAction *);
 
     void fileDelete();
-    void doFileDelete(HbAction *);
+    void doFileDelete(int);
 
     void fileRename();
     void doFileRename(HbAction *);
-    void doFileRenameFileExist(HbAction *);
+    void doFileRenameFileExist(int);
 
     void fileTouch();
-    void doFileTouch(HbAction *);
+    void doFileTouch(int);
     void fileProperties();
 
     void fileChecksumsMD5();
@@ -126,10 +126,10 @@
     void editPaste();
 
     void editCopyToFolder();
-    void doEditCopyToFolder(HbAction *);
+    void doEditCopyToFolder(int);
 
     void editMoveToFolder();
-    void doEditMoveToFolder(HbAction *);
+    void doEditMoveToFolder(int);
 
     void editSelect();
     void editUnselect();
@@ -187,6 +187,7 @@
     void aboutToShowSettingsView();
     void aboutToShowEditorView(const QString &, bool);
     void aboutToShowSearchView(const QString &);
+    void aboutToShowAttributesView(const QString &, quint32 &, quint32 &, bool &);
     void aboutToSimulateLeave(int);
 
 private slots:
@@ -203,6 +204,11 @@
     void fileOverwritePostfix(HbAction *);
 
 private:
+    // Internal methods
+    void proceedFileRename();
+    void proceedFileTouch(bool recurse);
+
+private:
     EngineWrapper *mEngineWrapper;
 
     HbListView *mListView;
@@ -222,6 +228,8 @@
     ContextMenuActions mContextMenuActions;
     HbMenu *mContextMenu;
     HbAction *mToolbarBackAction;
+    HbAction* mToolbarFilterAction;
+    HbAction *mToolbarPasteAction;
 
     // flags
     bool mItemHighlighted;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbfolderselectiondialog.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBFOLDERSELECTIONDIALOG_H_
+#define FBFOLDERSELECTIONDIALOG_H_
+
+#include <HbDialog>
+
+// forward declarations
+class FbFolderSelectorWrapper;
+class HbListWidget;
+class HbListWidgetItem;
+class HbLabel;
+class QFileIconProvider;
+
+class FbFolderSelectionDialog : public HbDialog
+{
+    Q_OBJECT
+
+public:
+    explicit FbFolderSelectionDialog(QGraphicsItem *parent = 0);
+    virtual ~FbFolderSelectionDialog();
+
+    QString selectedFolder();
+
+private:
+    void init();
+    void createHeading();
+    void createList();
+    void createToolBar();
+
+private slots:
+    void activated(HbListWidgetItem *);
+    void refreshView();
+    void moveUpPressed();
+
+protected:
+    HbLabel *mTitle;
+
+private:
+    HbListWidget *mFolderList;
+    FbFolderSelectorWrapper *mFolderSelectorWrapper;
+    QFileIconProvider *mFileIconProvider;
+};
+
+class FbCopyToFolderSelectionDialog : public FbFolderSelectionDialog
+{
+    Q_OBJECT
+
+public:
+    explicit FbCopyToFolderSelectionDialog(QGraphicsItem *parent = 0);
+};
+
+class FbMoveToFolderSelectionDialog : public FbFolderSelectionDialog
+{
+    Q_OBJECT
+
+public:
+    explicit FbMoveToFolderSelectionDialog(QGraphicsItem *parent = 0);
+};
+
+#endif // FBFOLDERSELECTIONDIALOG_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbfolderselectorwrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBFOLDERSELECTORWRAPPER_H_
+#define FBFOLDERSELECTORWRAPPER_H_
+
+#include "fbdriveentry.h"
+#include "fbfileentry.h"
+#include "FBFolderSelector.h"
+
+#include <QString>
+#include <QStringList>
+#include <QModelIndexList>
+
+class CEngine;
+class SearchAttributes;
+class SearchResults;
+class FileBrowserView;
+class HbProgressDialog;
+
+class QModelIndex;
+class CFileBrowserFolderSelector;
+class EngineWrapper;
+
+
+/**
+ * class that is used for communicating between Symbian and Qt code.
+ */
+class FbFolderSelectorWrapper : public QObject, public MFolderSelectorUI
+{
+    Q_OBJECT
+public:
+    FbFolderSelectorWrapper();
+    ~FbFolderSelectorWrapper();
+    
+    bool init();
+
+    QString currentPath() const;
+    bool isDriveListViewActive() const;
+    int itemCount() const;
+    FbDriveEntry getDriveEntry(const int aIndex) const;
+    FbFileEntry getFileEntry(const int aIndex) const;
+
+    void moveDownToDirectory(int);
+    void moveUpOneLevel();
+
+signals:
+    void FolderSelectionChanged();
+
+public:  // From MFolderSelectorUI
+    virtual void InformFolderSelectionChanged();
+
+private:
+    CFileBrowserFolderSelector *mDestinationFolderSelector;
+};
+
+#endif // FBFOLDERSELECTORWRAPPER_H_
--- a/filebrowser/ui/inc/fbmainwindow.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/fbmainwindow.h	Fri Sep 03 17:11:21 2010 +0300
@@ -26,9 +26,10 @@
 class EngineWrapper;
 class FbDriveView;
 class FbFileView;
-class SettingsView;
-class EditorView;
-class SearchView;
+class FbSettingsView;
+class FbEditorView;
+class FbSearchView;
+class FbAttributesView;
 
 class FbMainWindow : public HbMainWindow
 {
@@ -48,14 +49,18 @@
     void openSettingsView();
     void openEditorView(const QString &, bool);
     void openSearchView(const QString &);
+
+    void openAttributesView(const QString &, quint32 &, quint32 &, bool &);
+    void closeAttributesView(bool);
     
 private:
     EngineWrapper *mEngineWrapper;
     FbDriveView *mDriveView;
     FbFileView *mFileView;
-    SettingsView *mSettingsView;
-    EditorView *mEditorView;
-    SearchView *mSearchView;
+    FbSettingsView *mSettingsView;
+    FbEditorView *mEditorView;
+    FbSearchView *mSearchView;
+    FbAttributesView *mAttributesView;
     HbView *mPreviousView;
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbsearchview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBSEARCHVIEW_H
+#define FBSEARCHVIEW_H
+
+#include <HbView>
+
+#include <QDateTime>
+
+class QStringList;
+
+class EngineWrapper;
+class HbDataForm;
+class HbDataFormModelItem;
+class HbProgressDialog;
+
+/**
+  * Settings class that is used for 
+  */
+class SearchAttributes
+{
+public:
+    QString   mSearchDir;
+    QString   mWildCards;
+    QString   mTextInFile;
+    int       mMinSize;
+    int       mMaxSize;
+    QDate     mMinDate;
+    QDate     mMaxDate;
+    bool      mRecurse;
+    bool      mDefaultWildCard;
+};
+
+/**
+ * search results class.
+ */
+class SearchResults
+{
+public:
+    int mNumberOfFoundFiles;
+    QStringList *mFoundFilesList;
+};
+
+class FbSearchView : public HbView
+{
+    Q_OBJECT
+
+public:
+    explicit FbSearchView(EngineWrapper &engineWrapper);
+    ~FbSearchView();
+    void open(const QString &path);
+
+signals:
+    void finished(bool ok);
+
+private slots:
+    void accept();
+    void reject();
+
+private:
+    void initDataForm();
+    void createToolbar();
+    void loadAttributes();
+    void readFormItems();
+
+    void startFileSearch();
+    void fileSearchResults();
+
+private:
+    /* EngineWrapper */
+    EngineWrapper &mEngineWrapper;  
+
+    /* Search attributes */
+    SearchAttributes mAttributes;    
+    /* Search results */
+    SearchResults mResults;
+
+    HbDataForm *mForm;
+    HbDataFormModelItem *mSearchFileNameItem;
+    HbDataFormModelItem *mWildCardItem;
+    HbDataFormModelItem *mHasString;
+    HbDataFormModelItem *mRecurse;
+    HbDataFormModelItem *mMinSize;
+    HbDataFormModelItem *mMaxSize;
+    HbDataFormModelItem *mMinDate;
+    HbDataFormModelItem *mMaxDate;
+    QString mPath;
+    HbProgressDialog *mProgressDialog;
+};
+
+#endif // FBSEARCHVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/inc/fbsettingsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef FBSETTINGSVIEW_H
+#define FBSETTINGSVIEW_H
+
+#include <hbview.h>
+
+class HbDataForm;
+class HbDataFormModelItem;
+class EngineWrapper;
+class FileBrowserSettings;
+
+class FbSettingsView : public HbView
+{
+    Q_OBJECT
+
+public:
+    FbSettingsView(EngineWrapper &engineWrapper);
+    virtual ~FbSettingsView();
+
+    void initDataForm();
+signals:
+    void finished(bool ok);
+
+public slots:
+//    void displayModeChanged();
+//    void fileViewChanged();
+//    void subDirectoryInfoChanged();
+//    void associatedIconsChanged();
+//    void rememberFolderOnExitChanged();
+//    void rememberLastFolderChanged();
+//    void showToolbarChanged();
+
+//    void toggleChange(QModelIndex, QModelIndex);
+    void accept();
+    void reject();
+
+private:
+    void createToolbar();
+    void constructMenu();
+    void loadSettings(const FileBrowserSettings &settings);
+    void saveSettings(FileBrowserSettings &settings);
+
+private:
+    EngineWrapper &mEngineWrapper;
+
+    HbDataForm *mForm;
+    HbDataFormModelItem *mDisplayModeItem;
+    HbDataFormModelItem *mFileViewItem;
+    HbDataFormModelItem *mShowDirectoryInfoItem;
+    HbDataFormModelItem *mShowAssociatedIconsItem;
+    HbDataFormModelItem *mRememberFolderOnExitItem;
+    HbDataFormModelItem *mRememberLastFolderItem;
+    HbDataFormModelItem *mShowToolbarItem;
+
+    HbDataFormModelItem *mSupportNetDrivesItem; //"Support net drives"
+    HbDataFormModelItem *mBypassPlatformSecurityItem; //"Bypass plat.security"
+    HbDataFormModelItem *mUnlockFilesViaSBItem; //"Unlock files via SB"
+    HbDataFormModelItem *mIgnoreProtectionAttributesItem; //"Ign. protection atts"
+    HbDataFormModelItem *mNoROAttributeCopyFromZItem; //"No RO-att copy from Z:"
+
+};
+
+#endif // FBSETTINGSVIEW_H
--- a/filebrowser/ui/inc/fileentry.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef FILEEENTRY_H
-#define FILEEENTRY_H
-
-#include "FBFileUtils.h"
-#include <QString>
-#include <QDate>
-#include <QStringList>
-
-/**
- * class that is used for communicating between Symbian and Qt code.
- */
-class FileEntry {
-
-public:
-    
-    /**
-     * Constructor
-     */
-    FileEntry(TFileEntry aFileEntry);
-    
-    /**
-     * Destructor
-     */
-    ~FileEntry();
-    
-    /* Functions that are called from UI */
-public: 
-    QString fullName();
-    QString path();
-
-    int attributes();
-    QString attributesString();
-
-    int size();
-    QString sizeString();
-
-//    QDateTime modified();
-    QString modifiedString();
-//    int Uid(int id);
-    bool isDir();
-    QString name();
-
-    int dirEntries();
-    QString dirEntriesString();
-
-    int iconId();
-
-private:
-    TFileEntry mFileEntry;
-    };
-
-#endif //FILEEENTRY_H
--- a/filebrowser/ui/inc/menuaction.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/inc/menuaction.h	Fri Sep 03 17:11:21 2010 +0300
@@ -221,6 +221,9 @@
 {
 public:
     ContextMenuActions() :
+            mOpenDirectory(0),
+            mSearch(0),
+            //File -
             mFileMenu(0),
             mFileBackMoveUp(0),
             mFileOpenDrive(0),
@@ -246,10 +249,6 @@
             mEditPaste(0),
             mEditCopyToFolder(0),
             mEditMoveToFolder(0),
-//            mEditSelect(0),
-//            mEditUnselect(0),
-//            mEditSelectAll(0),
-//            mEditUnselectAll(0),
             // View -
 //            mViewMenu(0),
 //            mViewFilterEntries(0),
@@ -270,43 +269,14 @@
             mDiskAdminDismountDrive(0),
             mDiskAdminEraseMBR(0),
             mDiskAdminPartitionDrive(0)
-            // Tools -
-//            mToolsMenu(0),
-//            mToolsAllAppsToTextFile(0),
-//            mToolsAllFilesToTextFile(0),
-//            mToolsAvkonIconCacheMenu(0),
-//            mToolsAvkonIconCacheEnable(0),
-//            mToolsAvkonIconCacheDisable(0),
-//            mToolsDisableExtendedErrors(0),
-//            mToolsDumpMsgStoreWalk(0),
-//            mToolsEditDataTypes(0),
-//            mToolsEnableExtendedErrors(0),
-//            mToolsErrorSimulateMenu(0),
-//            mToolsErrorSimulateLeave(0),
-//            mToolsErrorSimulatePanic(0),
-//            mToolsErrorSimulateException(0),
-//            mToolsMessageAttachmentsMenu(0),
-//            mToolsMessageInbox(0),
-//            mToolsMessageDrafts(0),
-//            mToolsMessageSentItems(0),
-//            mToolsMessageOutbox(0),
-//            //    mLocalConnectivityMenu(0),
-//            //    mToolsLocalConnectivityActivateInfrared(0),
-//            //    mToolsLocalConnectivityLaunchBTUI(0),
-//            //    mToolsLocalConnectivityLaunchUSBUI(0),
-//            mToolsMemoryInfo(0),
-//            mToolsSecureBackupMenu(0),
-//            mToolsSecureBackStart(0),
-//            mToolsSecureBackRestore(0),
-//            mToolsSecureBackStop(0),
-//            mToolsSetDebugMask(0),
-//            mToolsShowOpenFilesHere(0)
     {
 
     }
 
     ~ContextMenuActions() { }
 public:
+    HbAction *mOpenDirectory;
+    HbAction *mSearch;
     //File menu operations
     HbMenu *mFileMenu;
     HbAction *mFileBackMoveUp;
@@ -334,11 +304,7 @@
     HbAction *mEditPaste;
     HbAction *mEditCopyToFolder;
     HbAction *mEditMoveToFolder;
-//    HbAction *mEditSelect;
-//    HbAction *mEditUnselect;
-//    HbAction *mEditSelectAll;
-//    HbAction *mEditUnselectAll;
-//
+
 //    // View -
 //    HbMenu *mViewMenu;
 //    HbAction *mViewFilterEntries;
@@ -360,48 +326,6 @@
     HbAction *mDiskAdminDismountDrive;
     HbAction *mDiskAdminEraseMBR;
     HbAction *mDiskAdminPartitionDrive;
-//
-//    // Tools -
-//    HbMenu *mToolsMenu;
-//    HbAction *mToolsAllAppsToTextFile;
-//    HbAction *mToolsAllFilesToTextFile;
-//
-//    HbMenu *mToolsAvkonIconCacheMenu;
-//    HbAction *mToolsAvkonIconCacheEnable;
-//    HbAction *mToolsAvkonIconCacheDisable;
-//
-//    HbAction *mToolsDisableExtendedErrors;
-//    HbAction *mToolsDumpMsgStoreWalk;
-//    HbAction *mToolsEditDataTypes;
-//
-//    HbAction *mToolsEnableExtendedErrors;
-//
-//    HbMenu *mToolsErrorSimulateMenu;
-//    HbAction *mToolsErrorSimulateLeave;
-//    HbAction *mToolsErrorSimulatePanic;
-//    HbAction *mToolsErrorSimulateException;
-//
-//    HbMenu *mToolsMessageAttachmentsMenu;
-//    HbAction *mToolsMessageInbox;
-//    HbAction *mToolsMessageDrafts;
-//    HbAction *mToolsMessageSentItems;
-//    HbAction *mToolsMessageOutbox;
-//
-//    HbMenu *mToolsLocalConnectivityMenu;
-//    HbAction *mToolsLocalConnectivityActivateInfrared;
-//    HbAction *mToolsLocalConnectivityLaunchBTUI;
-//    HbAction *mToolsLocalConnectivityLaunchUSBUI;
-//
-//    HbAction *mToolsMemoryInfo;
-//
-//    HbMenu *mToolsSecureBackupMenu;
-//    HbAction *mToolsSecureBackStart;
-//    HbAction *mToolsSecureBackRestore;
-//    HbAction *mToolsSecureBackStop;
-//
-//    HbAction *mToolsSetDebugMask;
-//    HbAction *mToolsShowOpenFilesHere;
 };
 
-
 #endif // MENUACTION_H
--- a/filebrowser/ui/inc/searchview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef SEARCHVIEW_H
-#define SEARCHVIEW_H
-
-#include <HbView>
-
-#include <QDateTime>
-
-class QStringList;
-
-class EngineWrapper;
-class HbDataForm;
-class HbDataFormModelItem;
-class HbProgressDialog;
-
-/**
-  * Settings class that is used for 
-  */
-class SearchAttributes
-{
-public:
-    QString   mSearchDir;
-    QString   mWildCards;
-    QString   mTextInFile;
-    int       mMinSize;
-    int       mMaxSize;
-    QDate     mMinDate;
-    QDate     mMaxDate;
-    bool      mRecurse;
-};
-
-/**
- * search results class.
- */
-class SearchResults
-{
-public:
-    int mNumberOfFoundFiles;
-    QStringList *mFoundFilesList;
-};
-
-class SearchView : public HbView
-{
-    Q_OBJECT
-
-public:
-    explicit SearchView(EngineWrapper &engineWrapper);
-    ~SearchView();
-    void open(const QString &path);
-
-signals:
-    void finished(bool ok);
-
-private slots:
-    void accept();
-    void reject();
-
-private:
-    void initDataForm();
-    void createToolbar();
-    void loadAttributes();
-    void readFormItems();
-
-    void startFileSearch();
-    void fileSearchResults();
-
-private:
-    /* EngineWrapper */
-    EngineWrapper &mEngineWrapper;  
-
-    /* Search attributes */
-    SearchAttributes mAttributes;    
-    /* Search results */
-    SearchResults mResults;
-
-    HbDataForm *mForm;
-    HbDataFormModelItem *mSearchFileNameItem;
-    HbDataFormModelItem *mWildCardItem;
-    HbDataFormModelItem *mHasString;
-    HbDataFormModelItem *mRecurse;
-    HbDataFormModelItem *mMinSize;
-    HbDataFormModelItem *mMaxSize;
-    HbDataFormModelItem *mMinDate;
-    HbDataFormModelItem *mMaxDate;
-
-    QString mPath;
-
-    HbProgressDialog *mProgressDialog;
-};
-
-#endif // SEARCHVIEW_H
--- a/filebrowser/ui/inc/settingsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef SETTINGSVIEW_H
-#define SETTINGSVIEW_H
-
-#include <hbview.h>
-
-class HbDataForm;
-class HbDataFormModelItem;
-class EngineWrapper;
-class FileBrowserSettings;
-
-class SettingsView : public HbView
-{
-    Q_OBJECT
-
-public:
-    SettingsView(EngineWrapper &engineWrapper);
-    virtual ~SettingsView();
-
-    void initDataForm();
-signals:
-    void finished(bool ok);
-
-public slots:
-//    void displayModeChanged();
-//    void fileViewChanged();
-//    void subDirectoryInfoChanged();
-//    void associatedIconsChanged();
-//    void rememberFolderOnExitChanged();
-//    void rememberLastFolderChanged();
-//    void showToolbarChanged();
-
-//    void toggleChange(QModelIndex, QModelIndex);
-    void accept();
-    void reject();
-
-private:
-    void createToolbar();
-    void constructMenu();
-    void loadSettings(const FileBrowserSettings &settings);
-    void saveSettings(FileBrowserSettings &settings);
-
-private:
-    EngineWrapper &mEngineWrapper;
-
-    HbDataForm *mForm;
-    HbDataFormModelItem *mDisplayModeItem;
-    HbDataFormModelItem *mFileViewItem;
-    HbDataFormModelItem *mShowDirectoryInfoItem;
-    HbDataFormModelItem *mShowAssociatedIconsItem;
-    HbDataFormModelItem *mRememberFolderOnExitItem;
-    HbDataFormModelItem *mRememberLastFolderItem;
-    HbDataFormModelItem *mShowToolbarItem;
-
-    HbDataFormModelItem *mSupportNetDrivesItem; //"Support net drives"
-    HbDataFormModelItem *mBypassPlatformSecurityItem; //"Bypass plat.security"
-    HbDataFormModelItem *mUnlockFilesViaSBItem; //"Unlock files via SB"
-    HbDataFormModelItem *mIgnoreProtectionAttributesItem; //"Ign. protection atts"
-    HbDataFormModelItem *mNoROAttributeCopyFromZItem; //"No RO-att copy from Z:"
-
-};
-
-#endif // SETTINGSVIEW_H
--- a/filebrowser/ui/src/driveentry.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2010 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 "driveentry.h"
-
-// ---------------------------------------------------------------------------
-
-DriveEntry::DriveEntry(TDriveEntry aDriveEntry)
-: mDriveEntry(aDriveEntry)
-{
-}
-
-// ---------------------------------------------------------------------------
-
-DriveEntry::~DriveEntry()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-QChar DriveEntry::driveLetter()
-{
-    return QChar(TUint(mDriveEntry.iLetter));
-}
-
-// ---------------------------------------------------------------------------
-
-int DriveEntry::number()
-{
-    return mDriveEntry.iNumber;
-}
-
-// ---------------------------------------------------------------------------
-
-QString DriveEntry::mediaTypeString()
-{
-    return QString::fromUtf16(mDriveEntry.iMediaTypeDesc.Ptr(), mDriveEntry.iMediaTypeDesc.Length());
-}
-
-// ---------------------------------------------------------------------------
-
-QString DriveEntry::attributesString()
-{
-    return QString::fromUtf16(mDriveEntry.iAttributesDesc.Ptr(), mDriveEntry.iAttributesDesc.Length());
-}
-
-// ---------------------------------------------------------------------------
-
-int DriveEntry::iconId()
-{
-    return mDriveEntry.iIconId;
-}
-
-// ---------------------------------------------------------------------------
-
-qint64 DriveEntry::volumeInfoFree()
-{
-    return mDriveEntry.iVolumeInfo.iFree;
-}
-
-// ---------------------------------------------------------------------------
-
-qint64 DriveEntry::volumeInfoSize()
-{
-    return mDriveEntry.iVolumeInfo.iSize;
-}
-
-// ---------------------------------------------------------------------------
--- a/filebrowser/ui/src/editorview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
-* Copyright (c) 2010 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 <HbView>
-#include <HbApplication>
-#include <HbAction>
-#include <HbMenu>
-#include <HbTextEdit>
-#include <hbpushbutton.h>
-
-#include <QGraphicsLinearLayout>
-#include <QFile>
-#include <QFileInfo>
-#include <QTextStream>
-#include <QByteArray>
-#include <QByteRef>
-
-#include "editorview.h"
-
-EditorView::EditorView() :
-    mTextEdit(0),
-    mFileHex(false),
-    mFlagReadOnly(),
-    mFileName(),
-    mFileContent(),
-    mToTextAction(0),
-    mToHexAction(0),
-    mExitAction(0)
-{
-    // Override back navigation action
-    HbAction *backNaviAction = new HbAction(Hb::BackNaviAction, this);
-    connect(backNaviAction, SIGNAL(triggered()), this, SLOT(backButtonClicked()));
-    setNavigationAction(backNaviAction);
-
-    createMenu();
-
-    // text editor
-//    mTextEdit = new QTextEdit();
-//    QGraphicsLinearLayout *editorLayout = new QGraphicsLinearLayout(Qt::Vertical);
-//    QGraphicsProxyWidget *editorWidget = new QGraphicsProxyWidget();
-//    editorWidget->setWidget(mTextEdit);
-//    editorLayout->addItem(editorWidget);
-//    setLayout(editorLayout);
-
-    mTextEdit = new HbTextEdit();
-    mTextEdit->setAlignment(Qt::AlignTop);
-    QGraphicsLinearLayout *editorLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
-    editorLayout->addItem(mTextEdit);
-    setLayout(editorLayout);
-}
-
-EditorView::~EditorView() 
-{
-//    delete mTextEdit;
-//    delete mToTextAction;
-//    delete mToHexAction;
-//    delete mExitAction;
-}
-
-void EditorView::open(const QString& fileName, bool flagReadOnly)
-{
-    mFlagReadOnly = flagReadOnly;
-
-    if (!fileName.isEmpty()) {
-        mTextEdit->setReadOnly(mFlagReadOnly);
-        loadFile(fileName);
-    }
-    else {
-        // not valid file name
-    }
-}
-
-void EditorView::loadFile(const QString &fileName)
-{
-    mFileName = fileName;
-    QFile file(fileName);
-    QFileInfo baseName(fileName);
-    setTitle(baseName.fileName());
-
-    if (!file.open(QFile::ReadOnly | QFile::Text)) {
-        // note: cannot be opened. readonly or not text
-        return;
-    }
-    QTextStream in(&file);
-    in.setAutoDetectUnicode(false);
-
-    mFileContent = in.readAll();
-    file.close();
-    displayInText();
-}
-
-void EditorView::displayInText()
-{
-    mFileHex = false;
-    QByteArray asciiContent = mFileContent.toAscii();
-    mTextEdit->setPlainText(QString(asciiContent));
-}
-
-void EditorView::displayInHex()
-{
-    QByteArray asciiContent = mFileContent.toAscii().toHex();
-    QString textInHex = QString(asciiContent);
-    mTextEdit->setPlainText(textInHex);
-    mFileHex = true;
-}
-
-void EditorView::createMenu()
-{
-    mToTextAction = menu()->addAction("View as text");
-    connect(mToTextAction, SIGNAL(triggered()), this, SLOT(displayInText()));
-    mToHexAction = menu()->addAction("View as hex");
-    connect(mToHexAction, SIGNAL(triggered()), this, SLOT(displayInHex()));
-//    mExitAction = menu()->addAction("Exit");
-//    connect(mExitAction, SIGNAL(triggered()), this, SLOT(backButtonClicked()));
-
-    // update the menus before showing it:
-    connect(menu(), SIGNAL(aboutToShow()), this, SLOT(updateMenu()));
-}
-
-void EditorView::updateMenu()
-{
-    mToTextAction->setVisible(mFileHex);
-    mToHexAction->setVisible(!mFileHex);
-}	
-
-void EditorView::backButtonClicked()
-{
-    emit finished(false);
-}
-
--- a/filebrowser/ui/src/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -20,9 +20,9 @@
 #include "FBFileUtils.h"
 #include "notifications.h"
 #include "fbfileview.h"
-#include "searchview.h"
+#include "fbsearchview.h"
 #include "filebrowsersettings.h"
-#include "settingsview.h"
+//#include "fbsettingsview.h"
 
 #include <HbProgressDialog>
 
@@ -97,6 +97,7 @@
     attributes.mMinSize    = tAttributes.iMinSize;
     attributes.mMaxSize    = tAttributes.iMaxSize;
     attributes.mRecurse    = tAttributes.iRecurse;
+    attributes.mDefaultWildCard = tAttributes.iDefaultWildCard;
     
     // TTime to QDate
     TBuf<20> timeString;
@@ -130,6 +131,7 @@
     tAttributes.iMinSize    = attributes.mMinSize;
     tAttributes.iMaxSize    = attributes.mMaxSize;    
     tAttributes.iRecurse    = attributes.mRecurse;
+    tAttributes.iDefaultWildCard = attributes.mDefaultWildCard;
     
     // QDate to TTime for both min- and max Date
     QString temp = attributes.mMinDate.toString("yyyy-MM-dd");
@@ -403,6 +405,18 @@
         delete entryLines;
     }
 }
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::setAttributes(quint32 &setAttributesMask, quint32 &clearAttributesMask, bool &recurse)
+{
+    if (mEngine->FileUtils()) {
+        TBool tRecurse = recurse ? ETrue : EFalse;
+        TRAPD(err, mEngine->FileUtils()->SetAttributesL(setAttributesMask, clearAttributesMask, tRecurse));
+        Q_UNUSED(err); //TODO
+    }
+}
+
 // ---------------------------------------------------------------------------
 
 bool EngineWrapper::openAppArc(QString fileName)
@@ -449,24 +463,24 @@
 
 // ---------------------------------------------------------------------------
 
-DriveEntry EngineWrapper::getDriveEntry(const QModelIndex& aIndex) const
+FbDriveEntry EngineWrapper::getDriveEntry(const QModelIndex& aIndex) const
 {
     TDriveEntry driveEntry;
     if (mEngine->FileUtils()->DriveEntries()->Count() > aIndex.row() && aIndex.row() >= 0) {
         driveEntry = mEngine->FileUtils()->DriveEntries()->At(aIndex.row());
     }
-    return DriveEntry(driveEntry);
+    return FbDriveEntry(driveEntry);
 }
 
 // ---------------------------------------------------------------------------
 
-FileEntry EngineWrapper::getFileEntry(const QModelIndex& aIndex) const
+FbFileEntry EngineWrapper::getFileEntry(const QModelIndex& aIndex) const
 {
     TFileEntry fileEntry;
     if (mEngine->FileUtils()->FileEntries()->Count() > aIndex.row() && aIndex.row() >= 0) {
         fileEntry = mEngine->FileUtils()->FileEntries()->At(aIndex.row());
     }
-    return FileEntry(fileEntry);
+    return FbFileEntry(fileEntry);
 }
 
 // ---------------------------------------------------------------------------
@@ -501,7 +515,8 @@
 bool EngineWrapper::isDestinationEntriesExists(const QModelIndexList &aSelectionIndices, QString aTargetDir)
 {
     TFileName targetDir = TFileName(aTargetDir.utf16());
-    setCurrentSelection(aSelectionIndices);
+    //setCurrentSelection(aSelectionIndices);
+    Q_UNUSED(aSelectionIndices);
 
     TBool someEntryExists = mEngine->FileUtils()->IsDestinationEntriesExists(targetDir);
     return someEntryExists;
@@ -805,4 +820,9 @@
     return Notifications::showConfirmationQuery(qText);
 }
 
+void EngineWrapper::NotifyModelHasChanged()
+{
+    emit fileSystemDataChanged();
+}
+
 // ---------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbattributesview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2010 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 "fbattributesview.h"
+
+#include <HbView>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbAction>
+#include <HbToolBar>
+
+#include <QGraphicsLinearLayout>
+
+#include <f32file.h>
+
+const QStringList AttributesChoices = QStringList() << "Skip" << "On" << "Off";
+const QStringList RecurseChoices = QStringList() << "Recursive" << "Non-recursive";
+const QString acceptActionText = "OK";
+const QString rejectActionText = "Cancel";
+const int AttributeOn = 1;
+const int AttributeOff = 2;
+const int AttributeEnableRecursion = 0;
+const int AttributeDisableRecursion = 1;
+
+FbAttributesView::FbAttributesView(quint32 &aSetAttMask, quint32 &aClearAttMask, bool &aRecurse) :
+    mSetAttributesMask(aSetAttMask),
+    mClearAttributesMask(aClearAttMask),
+    mRecurse(aRecurse),
+    mForm(0),
+    mArchiveItem(0),
+    mHiddenItem(0),
+    mReadOnlyItem(0),
+    mSystemItem(0),
+    mRecurseItem(0)
+{
+    setTitle("Set attributes");
+
+    // Override back navigation action
+    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
+    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
+    setNavigationAction(leaveViewAction);
+
+    initDataForm();
+    createToolbar();
+}
+
+FbAttributesView::~FbAttributesView()
+{
+}
+
+void FbAttributesView::initDataForm()
+{
+    mForm = new HbDataForm(this);
+    HbDataFormModel *model = new HbDataFormModel();
+
+    // Create Group for sequential image components
+    //mGroupSeguantialCapture = model->appendDataFormGroup(QString("Archive"), parent);
+
+    mArchiveItem = new HbDataFormModelItem(HbDataFormModelItem::RadioButtonListItem);
+    mArchiveItem->setLabel("Archive");
+    mArchiveItem->setContentWidgetData(QString("items"), AttributesChoices);
+    mArchiveItem->setContentWidgetData(QString("displayMode"), QString("embedded"));
+
+    mHiddenItem = new HbDataFormModelItem(HbDataFormModelItem::RadioButtonListItem);
+    mHiddenItem->setLabel("Hidden");
+    mHiddenItem->setContentWidgetData(QString("items"), AttributesChoices);
+    mHiddenItem->setContentWidgetData(QString("displayMode"), QString("embedded"));
+
+    mReadOnlyItem = new HbDataFormModelItem(HbDataFormModelItem::RadioButtonListItem);
+    mReadOnlyItem->setLabel("Read only");
+    mReadOnlyItem->setContentWidgetData(QString("items"), AttributesChoices);
+    mReadOnlyItem->setContentWidgetData(QString("displayMode"), QString("embedded"));
+
+    mSystemItem = new HbDataFormModelItem(HbDataFormModelItem::RadioButtonListItem);
+    mSystemItem->setLabel("System");
+    mSystemItem->setContentWidgetData(QString("items"), AttributesChoices);
+    mSystemItem->setContentWidgetData(QString("displayMode"), QString("embedded"));
+
+    mRecurseItem = new HbDataFormModelItem(HbDataFormModelItem::RadioButtonListItem);
+    mRecurseItem->setLabel("Recurse");
+    mRecurseItem->setContentWidgetData(QString("items"), RecurseChoices);
+    mRecurseItem->setContentWidgetData(QString("displayMode"), QString("embedded"));
+
+    // load file search attribute values from FB engine:
+    loadSettings();
+
+    model->appendDataFormItem(mArchiveItem);
+    model->appendDataFormItem(mHiddenItem);
+    model->appendDataFormItem(mReadOnlyItem);
+    model->appendDataFormItem(mSystemItem);
+    model->appendDataFormItem(mRecurseItem);
+
+    mForm->setModel(model);
+
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
+    layout->addItem(mForm);
+    setLayout(layout);
+}
+
+void FbAttributesView::createToolbar()
+{
+    HbToolBar *toolBar = new HbToolBar(this);
+    HbAction *acceptAction = new HbAction(acceptActionText);
+    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
+    toolBar->addAction(acceptAction);
+
+    HbAction *rejectAction = new HbAction(rejectActionText);
+    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
+    toolBar->addAction(rejectAction);
+
+    setToolBar(toolBar);
+}
+
+/**
+  Set form item values from settings \a settings.
+ */
+void FbAttributesView::loadSettings()
+{
+    if (mSetAttributesMask & KEntryAttArchive)
+        mArchiveItem->setContentWidgetData(QString("selected"), AttributeOn);
+    else if (mClearAttributesMask & KEntryAttArchive)
+        mArchiveItem->setContentWidgetData(QString("selected"), AttributeOff);
+
+    if (mSetAttributesMask & KEntryAttHidden)
+        mHiddenItem->setContentWidgetData(QString("selected"), AttributeOn);
+    else if (mClearAttributesMask & KEntryAttHidden)
+        mHiddenItem->setContentWidgetData(QString("selected"), AttributeOff);
+
+    if (mSetAttributesMask & KEntryAttReadOnly)
+        mReadOnlyItem->setContentWidgetData(QString("selected"), AttributeOn);
+    else if (mClearAttributesMask & KEntryAttReadOnly)
+        mReadOnlyItem->setContentWidgetData(QString("selected"), AttributeOff);
+
+    if (mSetAttributesMask & KEntryAttSystem)
+        mSystemItem->setContentWidgetData(QString("selected"), AttributeOn);
+    else if (mClearAttributesMask & KEntryAttSystem)
+        mSystemItem->setContentWidgetData(QString("selected"), AttributeOff);
+
+    if (mRecurse)
+        mRecurseItem->setContentWidgetData(QString("selected"), AttributeEnableRecursion);
+    else
+        mRecurseItem->setContentWidgetData(QString("selected"), AttributeDisableRecursion);
+}
+
+/**
+  Store form item data into \a settings
+ */
+void FbAttributesView::saveSettings()
+{
+    mSetAttributesMask = 0;
+    mClearAttributesMask = 0;
+
+    int archive = mArchiveItem->contentWidgetData(QString("selected")).toInt();
+    if (archive == AttributeOn)
+        mSetAttributesMask |= KEntryAttArchive;
+    else if (archive == AttributeOff)
+        mClearAttributesMask |= KEntryAttArchive;
+
+    int hidden = mHiddenItem->contentWidgetData(QString("selected")).toInt();
+    if (hidden == AttributeOn)
+        mSetAttributesMask |= KEntryAttHidden;
+    else if (hidden == AttributeOff)
+        mClearAttributesMask |= KEntryAttHidden;
+
+    int readOnly = mReadOnlyItem->contentWidgetData(QString("selected")).toInt();
+    if (readOnly == AttributeOn)
+        mSetAttributesMask |= KEntryAttReadOnly;
+    else if (readOnly == AttributeOff)
+        mClearAttributesMask |= KEntryAttReadOnly;
+
+    int system = mSystemItem->contentWidgetData(QString("selected")).toInt();
+    if (system == AttributeOn)
+        mSetAttributesMask |= KEntryAttSystem;
+    else if (system == AttributeOff)
+        mClearAttributesMask |= KEntryAttSystem;
+
+    int recurse = mRecurseItem->contentWidgetData(QString("selected")).toInt();
+    if (recurse == AttributeEnableRecursion)
+        mRecurse = ETrue;
+    else if (recurse == AttributeDisableRecursion)
+        mRecurse = EFalse;
+}
+
+void FbAttributesView::accept()
+{
+    saveSettings();
+    emit finished(true);
+}
+
+void FbAttributesView::reject()
+{
+    emit finished(false);
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbdriveentry.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2010 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 "fbdriveentry.h"
+
+// ---------------------------------------------------------------------------
+
+FbDriveEntry::FbDriveEntry(TDriveEntry aDriveEntry)
+: mDriveEntry(aDriveEntry)
+{
+}
+
+// ---------------------------------------------------------------------------
+
+FbDriveEntry::~FbDriveEntry()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+QChar FbDriveEntry::driveLetter()
+{
+    return QChar(TUint(mDriveEntry.iLetter));
+}
+
+// ---------------------------------------------------------------------------
+
+int FbDriveEntry::number()
+{
+    return mDriveEntry.iNumber;
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbDriveEntry::mediaTypeString()
+{
+    return QString::fromUtf16(mDriveEntry.iMediaTypeDesc.Ptr(), mDriveEntry.iMediaTypeDesc.Length());
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbDriveEntry::attributesString()
+{
+    return QString::fromUtf16(mDriveEntry.iAttributesDesc.Ptr(), mDriveEntry.iAttributesDesc.Length());
+}
+
+// ---------------------------------------------------------------------------
+
+int FbDriveEntry::iconId()
+{
+    return mDriveEntry.iIconId;
+}
+
+// ---------------------------------------------------------------------------
+
+qint64 FbDriveEntry::volumeInfoFree()
+{
+    return mDriveEntry.iVolumeInfo.iFree;
+}
+
+// ---------------------------------------------------------------------------
+
+qint64 FbDriveEntry::volumeInfoSize()
+{
+    return mDriveEntry.iVolumeInfo.iSize;
+}
+
+// ---------------------------------------------------------------------------
--- a/filebrowser/ui/src/fbdrivelistviewitem.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbdrivelistviewitem.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 #include "fbdrivelistviewitem.h"
-#include "driveentry.h"
+#include "fbdriveentry.h"
 #include "fbdrivemodel.h"
 
 #include <hblabel.h>
@@ -88,7 +88,7 @@
 
     // Get the Drive Entry
     const FbDriveModel* driveModel= qobject_cast<const FbDriveModel *>(modelIndex().model());
-    DriveEntry driveEntry = driveModel->driveEntry(modelIndex());
+    FbDriveEntry driveEntry = driveModel->driveEntry(modelIndex());
 
     const QString SimpleDriveEntry("%1: <%2>");
 
--- a/filebrowser/ui/src/fbdrivemodel.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbdrivemodel.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -17,8 +17,7 @@
 
 #include "fbdrivemodel.h"
 #include "enginewrapper.h"
-#include "driveentry.h"
-#include "settingsview.h"
+#include "fbdriveentry.h"
 #include "filebrowsersettings.h"
 #include "FB.hrh"
 
@@ -67,7 +66,7 @@
     case Qt::EditRole:
     case Qt::DisplayRole: {
             QStringList listItem;
-            DriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
+            FbDriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
             if (mEngineWrapper->settings().fileViewMode() == EFileViewModeSimple)
             {
                 const QString SimpleDriveEntry("%1: <%2>");
@@ -112,7 +111,7 @@
 }
 
 
-DriveEntry FbDriveModel::driveEntry(const QModelIndex &index) const
+FbDriveEntry FbDriveModel::driveEntry(const QModelIndex &index) const
 {
     return mEngineWrapper->getDriveEntry(index);
 }
@@ -121,7 +120,7 @@
 {
     QString diskLetter;
     if (index.row() >= 0 && index.row() < mEngineWrapper->itemCount()) {
-        DriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
+        FbDriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
         diskLetter = driveEntry.driveLetter();
     }
     return diskLetter;
@@ -131,7 +130,7 @@
 {
     QString mediaTypeString;
     if (index.row() >= 0 && index.row() < mEngineWrapper->itemCount()) {
-        DriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
+        FbDriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
         mediaTypeString = driveEntry.mediaTypeString();
     }
     return mediaTypeString;
--- a/filebrowser/ui/src/fbdriveview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbdriveview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -16,9 +16,9 @@
 */
 
 #include "fbdriveview.h"
-#include "settingsview.h"
-#include "editorview.h"
-#include "searchview.h"
+#include "fbsettingsview.h"
+#include "fbeditorview.h"
+#include "fbsearchview.h"
 #include "enginewrapper.h"
 #include "notifications.h"
 
@@ -160,7 +160,6 @@
 {
     mOptionMenuActions.mFileMenu = menu()->addMenu("File");
 
-//    mOptionMenuActions.mFileOpenDrive = mOptionMenuActions.mFileMenu->addAction("Open drive", this, SLOT(fileOpenDrive()));
     mOptionMenuActions.mFileSearch = mOptionMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
     //mOptionMenuActions.mFileSearch->setVisible(false);
 
@@ -311,7 +310,6 @@
     mOptionMenuActions.mEditMenu->menuAction()->setVisible(showEditMenu);
 
     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpen, isFileItemListEmpty || isDriveListViewActive || isCurrentItemDirectory);
-//    mOptionMenuActions.mFileOpenDrive->setVisible( !(isFileItemListEmpty || !isDriveListViewActive));
 
     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileView, isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive);
     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileEdit, isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive);
@@ -575,7 +573,7 @@
     if (contextrMenuAction
         && contextrMenuAction->text().compare(QString("Search..."), Qt::CaseInsensitive) == 0
         && contextrMenuAction == mContextMenuActions.mFileSearch) {
-        DriveEntry driveEntry(mEngineWrapper->getDriveEntry(currentItemIndex()));
+        FbDriveEntry driveEntry(mEngineWrapper->getDriveEntry(currentItemIndex()));
         searchPath = driveEntry.driveLetter() + QString(":\\");
     } else {
         searchPath = mEngineWrapper->currentPath();
@@ -631,10 +629,10 @@
     // check if the drive has a password
     if (mEngineWrapper->hasDrivePassword(currentIndex)) {
         QString heading = QString("Existing password");
-        HbInputDialog::getText(heading, this, SLOT(diskAdminSetDrivePasswordNew(HbAction*)), QString(), scene());
+        HbInputDialog::queryText(heading, this, SLOT(diskAdminSetDrivePasswordNew(HbAction*)), QString(), scene());
     } else {
         QString heading = QString("New password");
-        HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
+        HbInputDialog::queryText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
     }
 }
 
@@ -647,7 +645,7 @@
     if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
         mOldPassword = dlg->value().toString();
         QString heading = QString("New password");
-        HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
+        HbInputDialog::queryText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
     }
 }
 
@@ -676,7 +674,7 @@
     // check if the drive is locked
     if (mEngineWrapper->isDriveLocked(currentIndex)) {
         QString heading = QString("Existing password");
-        HbInputDialog::getText(heading, this, SLOT(doDiskAdminUnlockDrive(HbAction*)), QString(), scene());
+        HbInputDialog::queryText(heading, this, SLOT(doDiskAdminUnlockDrive(HbAction*)), QString(), scene());
     } else {
         Notifications::showInformationNote(QString("This drive is not locked"));
     }
@@ -705,7 +703,7 @@
     // check if the drive has a password
     if (mEngineWrapper->hasDrivePassword(currentIndex)) {
         QString heading = QString("Existing password");
-        HbInputDialog::getText(heading, this, SLOT(doDiskAdminClearDrivePassword(HbAction*)), QString(), scene());
+        HbInputDialog::queryText(heading, this, SLOT(doDiskAdminClearDrivePassword(HbAction*)), QString(), scene());
     } else {
         Notifications::showInformationNote(QString("This drive has no password"));
     }
@@ -734,7 +732,10 @@
     // check if the drive has a password
     QModelIndex currentIndex = currentItemIndex();
     if (mEngineWrapper->hasDrivePassword(currentIndex)) {
-        HbMessageBox::question(QString("Are you sure? All data can be lost!"), this, SLOT(doDiskAdminEraseDrivePassword(HbAction*)));
+        HbMessageBox::question(QString("Are you sure? All data can be lost!"),
+                               this,
+                               SLOT(doDiskAdminEraseDrivePassword(int)),
+                               HbMessageBox::Yes | HbMessageBox::No);
     } else {
         Notifications::showInformationNote(QString("This drive has no password"));
     }
@@ -743,9 +744,9 @@
 /**
   Erase password of the selected drive
   */
-void FbDriveView::doDiskAdminEraseDrivePassword(HbAction* action)
+void FbDriveView::doDiskAdminEraseDrivePassword(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminEraseDrivePassword(currentIndex);
         refreshList();
@@ -757,15 +758,18 @@
   */
 void FbDriveView::diskAdminFormatDrive()
 {
-    HbMessageBox::question(QString("Are you sure? All data will be lost!"), this, SLOT(doDiskAdminFormatDrive(HbAction*)));
+    HbMessageBox::question(QString("Are you sure? All data will be lost!"),
+                           this,
+                           SLOT(doDiskAdminFormatDrive(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
 /**
   Performs format on the selected drive
   */
-void FbDriveView::doDiskAdminFormatDrive(HbAction* action)
+void FbDriveView::doDiskAdminFormatDrive(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminFormatDrive(currentIndex, false);
     }
@@ -776,15 +780,18 @@
   */
 void FbDriveView::diskAdminQuickFormatDrive()
 {
-    HbMessageBox::question(QString("Are you sure? All data will be lost!"), this, SLOT(doDiskAdminQuickFormatDrive(HbAction*)));
+    HbMessageBox::question(QString("Are you sure? All data will be lost!"),
+                           this,
+                           SLOT(doDiskAdminQuickFormatDrive(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
 /**
   Performs quick format on the selected drive
   */
-void FbDriveView::doDiskAdminQuickFormatDrive(HbAction* action)
+void FbDriveView::doDiskAdminQuickFormatDrive(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminFormatDrive(currentIndex, true);
     }
@@ -804,15 +811,18 @@
   */
 void FbDriveView::diskAdminScanDrive()
 {
-    HbMessageBox::question(QString("This finds errors on disk and corrects them. Proceed?"), this, SLOT(doDiskAdminScanDrive(HbAction*)));
+    HbMessageBox::question(QString("This finds errors on disk and corrects them. Proceed?"),
+                           this,
+                           SLOT(doDiskAdminScanDrive(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
 /**
   Checks the selected drive for errors and corrects them
   */
-void FbDriveView::doDiskAdminScanDrive(HbAction* action)
+void FbDriveView::doDiskAdminScanDrive(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminScanDrive(currentIndex);
         refreshList();
@@ -831,7 +841,7 @@
     mEngineWrapper->GetDriveName(currentIndex, driveName);
 
     QString heading = QString("New name");
-    HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDriveName(HbAction*)), driveName, scene());
+    HbInputDialog::queryText(heading, this, SLOT(doDiskAdminSetDriveName(HbAction*)), driveName, scene());
 }
 
 /**
@@ -862,7 +872,7 @@
     mEngineWrapper->GetDriveVolumeLabel(currentIndex, volumeLabel);
 
     QString heading = QString("New volume label");
-    HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDriveVolumeLabel(HbAction*)), volumeLabel, scene());
+    HbInputDialog::queryText(heading, this, SLOT(doDiskAdminSetDriveVolumeLabel(HbAction*)), volumeLabel, scene());
 }
 
 /**
@@ -896,12 +906,15 @@
   */
 void FbDriveView::diskAdminDismountDrive()
 {
-    HbMessageBox::question(QString("Are you sure you know what are you doing?"), this, SLOT(doDiskAdminDismountDrive(HbAction*)));
+    HbMessageBox::question(QString("Are you sure you know what are you doing?"),
+                           this,
+                           SLOT(doDiskAdminDismountDrive(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
-void FbDriveView::doDiskAdminDismountDrive(HbAction* action)
+void FbDriveView::doDiskAdminDismountDrive(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminDismountDrive(currentIndex);
         refreshList();
@@ -914,34 +927,43 @@
 void FbDriveView::diskAdminEraseMBR()
 {
     // TODO What to do with FB LITE macros?
-    HbMessageBox::question(QString("Are you sure? Your media driver must support this!"), this, SLOT(doDiskAdminEraseMBR(HbAction*)));
+    HbMessageBox::question(QString("Are you sure? Your media driver must support this!"),
+                           this,
+                           SLOT(doDiskAdminEraseMBR(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
-void FbDriveView::doDiskAdminEraseMBR(HbAction* action)
+void FbDriveView::doDiskAdminEraseMBR(int action)
 {
     // TODO What to do with FB LITE macros?
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
-        HbMessageBox::question(QString("Are you really sure you know what are you doing ?!?"), this, SLOT(doDiskAdminReallyEraseMBR(HbAction*)));
+    if (action == HbMessageBox::Yes) {
+        HbMessageBox::question(QString("Are you really sure you know what are you doing ?!?"),
+                               this,
+                               SLOT(doDiskAdminReallyEraseMBR(int)),
+                               HbMessageBox::Yes | HbMessageBox::No);
     }
 }
 
-void FbDriveView::doDiskAdminReallyEraseMBR(HbAction* action)
+void FbDriveView::doDiskAdminReallyEraseMBR(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         // warn if the selected drive is not detected as removable
         if (mEngineWrapper->isDriveRemovable(currentIndex)) {
             mEngineWrapper->DiskAdminEraseMBR(currentIndex);
             refreshList();
         } else {
-            HbMessageBox::question(QString("Selected drive is not removable, really continue?"), this, SLOT(doDiskAdminNotRemovableReallyEraseMBR(HbAction*)));
+            HbMessageBox::question(QString("Selected drive is not removable, really continue?"),
+                                   this,
+                                   SLOT(doDiskAdminNotRemovableReallyEraseMBR(int)),
+                                   HbMessageBox::Yes | HbMessageBox::No);
         }
     }
 }
 
-void FbDriveView::doDiskAdminNotRemovableReallyEraseMBR(HbAction* action)
+void FbDriveView::doDiskAdminNotRemovableReallyEraseMBR(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEngineWrapper->DiskAdminEraseMBR(currentIndex);
         refreshList();
@@ -954,27 +976,31 @@
   */
 void FbDriveView::diskAdminPartitionDrive()
 {
-    const QString message("Are you sure? Your media driver must support this!");
-    HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveProceed(HbAction *)));
+    HbMessageBox::question(QString("Are you sure? Your media driver must support this!"),
+                           this,
+                           SLOT(diskAdminPartitionDriveProceed(int)),
+                           HbMessageBox::Yes | HbMessageBox::No);
 }
 
 /**
   Partition the selected drive if user is sure
   */
-void FbDriveView::diskAdminPartitionDriveProceed(HbAction *action)
+void FbDriveView::diskAdminPartitionDriveProceed(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
-        const QString message("Are you really sure you know what are you doing ?!?");
-        HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveReallyProceed(HbAction *)));
+    if (action == HbMessageBox::Yes) {
+        HbMessageBox::question(QString("Are you really sure you know what are you doing ?!?"),
+                               this,
+                               SLOT(diskAdminPartitionDriveReallyProceed(int)),
+                               HbMessageBox::Yes | HbMessageBox::No);
     }
 }
 
 /**
   Partition the selected drive if user is really sure
   */
-void FbDriveView::diskAdminPartitionDriveReallyProceed(HbAction *action)
+void FbDriveView::diskAdminPartitionDriveReallyProceed(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         QModelIndex currentIndex = currentItemIndex();
         mEraseMBR = false;
         // warn if the selected drive is not detected as removable
@@ -982,16 +1008,20 @@
         if (mEngineWrapper->isDriveRemovable(currentIndex)) {
             mProceed = true;
         } else {
-            const QString message("Selected drive is not removable, really continue?");
-            HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveIsNotRemovable(HbAction *)));
+            HbMessageBox::question(QString("Selected drive is not removable, really continue?"),
+                                   this,
+                                   SLOT(diskAdminPartitionDriveIsNotRemovable(int)),
+                                   HbMessageBox::Yes | HbMessageBox::No);
         }
 
         if (mProceed) {
             // query if erase mbr
             mEraseMBR = false;
 
-            QString message("Erase MBR first (normally needed)?");
-            HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveEraseMbr(HbAction *)));
+            HbMessageBox::question(QString("Erase MBR first (normally needed)?"),
+                                   this,
+                                   SLOT(diskAdminPartitionDriveEraseMbr(int)),
+                                   HbMessageBox::Yes | HbMessageBox::No);
 
             // TODO use HbListDialog
             QStringList list;
@@ -1004,9 +1034,9 @@
 /**
   Store result of user query about proceeding when drive is not removable.
   */
-void FbDriveView::diskAdminPartitionDriveIsNotRemovable(HbAction *action)
+void FbDriveView::diskAdminPartitionDriveIsNotRemovable(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         mProceed = true;
     } else {
         mProceed = false;
@@ -1016,9 +1046,9 @@
 /**
   Store result of user query about erase MBR
   */
-void FbDriveView::diskAdminPartitionDriveEraseMbr(HbAction *action)
+void FbDriveView::diskAdminPartitionDriveEraseMbr(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         mEraseMBR = true;
     }
 }
@@ -1095,8 +1125,7 @@
 {
     int leaveCode = -6;
     QString heading = QString("Leave code");
-    //HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), leaveCode, scene());
-    HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), QString::number(leaveCode), scene());
+    HbInputDialog::queryText(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), QString::number(leaveCode), scene());
 }
 
 
@@ -1122,7 +1151,7 @@
 {
     mPanicCategory = QString ("Test Category");
     QString heading = QString("Panic category");
-    HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulatePanicCode(HbAction*)), mPanicCategory, scene());
+    HbInputDialog::queryText(heading, this, SLOT(doToolsErrorSimulatePanicCode(HbAction*)), mPanicCategory, scene());
 }
 
 /**
@@ -1135,7 +1164,7 @@
         mPanicCategory = dlg->value().toString();
         int panicCode(555);
         QString heading = QString("Panic code");
-        HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulatePanic(HbAction*)), panicCode, scene());
+        HbInputDialog::queryInt(heading, this, SLOT(doToolsErrorSimulatePanic(HbAction*)), panicCode, scene());
     }
 }
 
@@ -1161,7 +1190,7 @@
 {
     int exceptionCode = 0;
     QString heading = QString("Exception code");
-    HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateException(HbAction*)), exceptionCode, scene());
+    HbInputDialog::queryInt(heading, this, SLOT(doToolsErrorSimulateException(HbAction*)), exceptionCode, scene());
 }
 
 /**
@@ -1232,7 +1261,7 @@
     quint32 dbgMask = mEngineWrapper->getDebugMask();
     QString dbgMaskText = QString("0x").append(QString::number(dbgMask, 16));
     QString heading = QString("Kernel debug mask in hex format");
-    HbInputDialog::getText(heading, this, SLOT(toolsSetDebugMask(HbAction*)), dbgMaskText, scene());
+    HbInputDialog::queryText(heading, this, SLOT(toolsSetDebugMask(HbAction*)), dbgMaskText, scene());
 }
 
 /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbeditorview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2010 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 "fbeditorview.h"
+
+#include <HbView>
+#include <HbApplication>
+#include <HbAction>
+#include <HbMenu>
+#include <HbTextEdit>
+#include <hbpushbutton.h>
+
+#include <QGraphicsLinearLayout>
+#include <QFile>
+#include <QFileInfo>
+#include <QTextStream>
+#include <QByteArray>
+#include <QByteRef>
+
+FbEditorView::FbEditorView() :
+    mTextEdit(0),
+    mFileHex(false),
+    mFlagReadOnly(),
+    mFileName(),
+    mFileContent(),
+    mToTextAction(0),
+    mToHexAction(0),
+    mExitAction(0)
+{
+    // Override back navigation action
+    HbAction *backNaviAction = new HbAction(Hb::BackNaviAction, this);
+    connect(backNaviAction, SIGNAL(triggered()), this, SLOT(backButtonClicked()));
+    setNavigationAction(backNaviAction);
+
+    createMenu();
+
+    // text editor
+//    mTextEdit = new QTextEdit();
+//    QGraphicsLinearLayout *editorLayout = new QGraphicsLinearLayout(Qt::Vertical);
+//    QGraphicsProxyWidget *editorWidget = new QGraphicsProxyWidget();
+//    editorWidget->setWidget(mTextEdit);
+//    editorLayout->addItem(editorWidget);
+//    setLayout(editorLayout);
+
+    mTextEdit = new HbTextEdit();
+    mTextEdit->setAlignment(Qt::AlignTop);
+    QGraphicsLinearLayout *editorLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
+    editorLayout->addItem(mTextEdit);
+    setLayout(editorLayout);
+}
+
+FbEditorView::~FbEditorView()
+{
+//    delete mTextEdit;
+//    delete mToTextAction;
+//    delete mToHexAction;
+//    delete mExitAction;
+}
+
+void FbEditorView::open(const QString& fileName, bool flagReadOnly)
+{
+    mFlagReadOnly = flagReadOnly;
+
+    if (!fileName.isEmpty()) {
+        mTextEdit->setReadOnly(mFlagReadOnly);
+        loadFile(fileName);
+    }
+    else {
+        // not valid file name
+    }
+}
+
+void FbEditorView::loadFile(const QString &fileName)
+{
+    mFileName = fileName;
+    QFile file(fileName);
+    QFileInfo baseName(fileName);
+    setTitle(baseName.fileName());
+
+    if (!file.open(QFile::ReadOnly | QFile::Text)) {
+        // note: cannot be opened. readonly or not text
+        return;
+    }
+    QTextStream in(&file);
+    in.setAutoDetectUnicode(false);
+
+    mFileContent = in.readAll();
+    file.close();
+    displayInText();
+}
+
+void FbEditorView::displayInText()
+{
+    mFileHex = false;
+    QByteArray asciiContent = mFileContent.toAscii();
+    mTextEdit->setPlainText(QString(asciiContent));
+}
+
+void FbEditorView::displayInHex()
+{
+    QByteArray asciiContent = mFileContent.toAscii().toHex();
+    QString textInHex = QString(asciiContent);
+    mTextEdit->setPlainText(textInHex);
+    mFileHex = true;
+}
+
+void FbEditorView::createMenu()
+{
+    mToTextAction = menu()->addAction("View as text");
+    connect(mToTextAction, SIGNAL(triggered()), this, SLOT(displayInText()));
+    mToHexAction = menu()->addAction("View as hex");
+    connect(mToHexAction, SIGNAL(triggered()), this, SLOT(displayInHex()));
+//    mExitAction = menu()->addAction("Exit");
+//    connect(mExitAction, SIGNAL(triggered()), this, SLOT(backButtonClicked()));
+
+    // update the menus before showing it:
+    connect(menu(), SIGNAL(aboutToShow()), this, SLOT(updateMenu()));
+}
+
+void FbEditorView::updateMenu()
+{
+    mToTextAction->setVisible(mFileHex);
+    mToHexAction->setVisible(!mFileHex);
+}	
+
+void FbEditorView::backButtonClicked()
+{
+    emit finished(false);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbfileentry.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2010 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 "fbfileentry.h"
+
+#include <HbExtendedLocale>
+
+// ---------------------------------------------------------------------------
+
+FbFileEntry::FbFileEntry(TFileEntry aFileEntry)
+: mFileEntry(aFileEntry)
+{
+}
+
+// ---------------------------------------------------------------------------
+
+FbFileEntry::~FbFileEntry()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbFileEntry::fullName()
+{
+    return QString::fromUtf16(mFileEntry.iFullName.Ptr(), mFileEntry.iFullName.Length());
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbFileEntry::path()
+{
+    return QString::fromUtf16(mFileEntry.iPath.Ptr(), mFileEntry.iPath.Length());
+}
+
+// ---------------------------------------------------------------------------
+
+int FbFileEntry::attributes()
+{
+    return mFileEntry.iEntry.iAtt;
+}
+
+QString FbFileEntry::attributesString()
+{
+    QString attributesString;
+    if (mFileEntry.iEntry.IsArchive()) {
+        attributesString.append("A");
+    } else {
+        attributesString.append("-");
+    }
+    if (mFileEntry.iEntry.IsHidden()) {
+        attributesString.append("H");
+    } else {
+        attributesString.append("-");
+    }
+    if (mFileEntry.iEntry.IsReadOnly()) {
+        attributesString.append("R");
+    } else {
+        attributesString.append("-");
+    }
+    if (mFileEntry.iEntry.IsSystem()) {
+        attributesString.append("S");
+    } else {
+        attributesString.append("-");
+    }
+
+    return attributesString;
+}
+
+// ---------------------------------------------------------------------------
+
+int FbFileEntry::size()
+{
+    return mFileEntry.iEntry.iSize;
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbFileEntry::sizeString()
+{
+    QString sizeString;
+    if (size() < 1024) {
+        sizeString.append(QString::number(size()));
+        sizeString.append(" B");
+    } else if (size() < 1024*1024) {
+        qreal sizeKB = static_cast<qreal>(size() / 1024);
+        sizeString.append( QString::number(sizeKB, 'f',1));
+        sizeString.append(" kB");
+    } else {
+        qreal sizeMB = static_cast<qreal>(size() / (1024*1024));
+        sizeString.append( QString::number(sizeMB, 'f',1));
+        sizeString.append(" MB");
+    }
+    return sizeString;
+}
+
+// ---------------------------------------------------------------------------
+
+//QDateTime FbFileEntry::modified()
+//{
+//    QDateTime modified;
+//    TTime time1Jan1970UTC = TTime(_L("19700101:000000.000000"));
+//    TTimeIntervalSeconds intervalSeconds;
+//
+//    TTime entryModified = mFileEntry.iEntry.iModified;
+//
+//    TInt err = /*mFileEntry.iEntry.iModified*/ entryModified.SecondsFrom(time1Jan1970UTC, intervalSeconds);
+//    if (err == KErrNone) {
+//        quint32 secsSince1Jan1970UTC = intervalSeconds.Int();
+//        modified = QDateTime::fromTime_t(secsSince1Jan1970UTC);
+//        qDebug() << "QDateTime:: " << modified.toString();
+//        modified.setTimeSpec(Qt::LocalTime);
+//        qDebug() << "QDateTime:: " << modified.toString() << modified.toLocalTime().toString();
+//    }
+//    return modified;
+//}
+
+// ---------------------------------------------------------------------------
+
+QString FbFileEntry::modifiedString()
+{
+    // TODO use HbExtendedLocale to convert date and time
+//    QDateTime modifiedInLocalTime = modified();//.toLocalTime();
+//    HbExtendedLocale locale = HbExtendedLocale::system();
+//    QString date = locale.format(modifiedInLocalTime.date(), r_qtn_date_usual);
+//    QString time = locale.format(modifiedInLocalTime.time(), r_qtn_time_usual);
+//
+//    return date + " " + time;
+    QString modifiedString;
+    TTime entryModified = mFileEntry.iEntry.iModified;
+    RTz Tz;
+    TInt err = Tz.Connect();
+    if ( err == KErrNone && Tz.ConvertToLocalTime( entryModified ) == KErrNone )
+    {
+        entryModified = mFileEntry.iEntry.iModified;
+        TBuf<128> extraData;
+        _LIT(KCurrentDate,"%D%M%*Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
+        entryModified.FormatL(extraData, KCurrentDate);
+        modifiedString = QString::fromUtf16(extraData.Ptr(), extraData.Length());
+    }
+    Tz.Close();
+
+    return modifiedString;
+}
+
+// ---------------------------------------------------------------------------
+
+//int FbFileEntry::Uid(int id)
+//{
+//    return id;//mFileEntry.iEntry.iType[id];
+//}
+
+// ---------------------------------------------------------------------------
+
+bool FbFileEntry::isDir()
+{
+    return mFileEntry.iEntry.IsDir();
+}
+
+// ---------------------------------------------------------------------------
+
+
+QString FbFileEntry::name()
+{
+    return QString::fromUtf16(mFileEntry.iEntry.iName.Ptr(), mFileEntry.iEntry.iName.Length());
+}
+
+// ---------------------------------------------------------------------------
+
+int FbFileEntry::dirEntries()
+{
+    return mFileEntry.iDirEntries;
+}
+
+// ---------------------------------------------------------------------------
+
+QString FbFileEntry::dirEntriesString()
+{
+    QString dirEntriesString;
+    dirEntriesString.append(QString::number(dirEntries()));
+    if (dirEntries() == 1) {
+        dirEntriesString.append(" entry");
+    } else {
+        dirEntriesString.append(" entries");
+    }
+    return dirEntriesString;
+}
+
+// ---------------------------------------------------------------------------
+
+int FbFileEntry::iconId()
+{
+    return mFileEntry.iIconId;
+}
+
+// ---------------------------------------------------------------------------
--- a/filebrowser/ui/src/fbfilemodel.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbfilemodel.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -17,9 +17,7 @@
 
 #include "fbfilemodel.h"
 #include "enginewrapper.h"
-#include "fileentry.h"
-#include "driveentry.h"
-#include "settingsview.h"
+#include "fbfileentry.h"
 #include "filebrowsersettings.h"
 #include "FB.hrh"
 
@@ -68,53 +66,30 @@
     case Qt::EditRole:
     case Qt::DisplayRole: {
             QStringList listItem;
-//            if (mEngineWrapper->isDriveListViewActive()) {
-//                DriveEntry driveEntry(mEngineWrapper->getDriveEntry(index));
-//                if (mEngineWrapper->settings().fileViewMode() == EFileViewModeSimple)
-//                {
-//                    const QString SimpleDriveEntry("%1: <%2>");
-//                    listItem /*<< driveEntry.IconId() */
-//                            << SimpleDriveEntry.arg(driveEntry.driveLetter())
-//                                               .arg(driveEntry.mediaTypeString());
-//                } else if (mEngineWrapper->settings().fileViewMode() == EFileViewModeExtended) {
-//                    const QString SimpleDriveEntry("%1: <%2>");
-//                    const QString ExtendedDriveEntry("%1/%2 kB");
-//                    listItem /*<< driveEntry.IconId()*/
-//                            << SimpleDriveEntry.arg(driveEntry.driveLetter())
-//                                               .arg(driveEntry.mediaTypeString())
-//                            << ExtendedDriveEntry.arg(QString::number(driveEntry.volumeInfoFree()/1024))
-//                                                 .arg(QString::number(driveEntry.volumeInfoSize()/1024));
-//
-//                }
-//            } else {
-                FileEntry fileEntry(mEngineWrapper->getFileEntry(index));
-                if (mEngineWrapper->settings().fileViewMode() == EFileViewModeSimple)
-                {
-                    listItem /*<< fileEntry.IconId()*/
-                            << fileEntry.name();
-                } else if (mEngineWrapper->settings().fileViewMode() == EFileViewModeExtended) {
-                    QString extraData;
-                    extraData.append(fileEntry.modifiedString());
-                    if (fileEntry.isDir() && fileEntry.dirEntries() >= 0) {
-                        extraData.append(" - ");
-                        extraData.append(fileEntry.dirEntriesString());
-                    } else if (!fileEntry.isDir()) {
-                        extraData.append(" - ");
-                        extraData.append(fileEntry.sizeString());
-                    }
-                    listItem /*<< fileEntry.IconId()*/
-                            << fileEntry.name() << extraData << fileEntry.attributesString();
+            FbFileEntry fileEntry(mEngineWrapper->getFileEntry(index));
+            if (mEngineWrapper->settings().fileViewMode() == EFileViewModeSimple)
+            {
+                listItem /*<< fileEntry.IconId()*/
+                        << fileEntry.name();
+            } else if (mEngineWrapper->settings().fileViewMode() == EFileViewModeExtended) {
+                QString extraData;
+                extraData.append(fileEntry.modifiedString());
+                if (fileEntry.isDir() && fileEntry.dirEntries() >= 0) {
+                    extraData.append(" - ");
+                    extraData.append(fileEntry.dirEntriesString());
+                } else if (!fileEntry.isDir()) {
+                    extraData.append(" - ");
+                    extraData.append(fileEntry.sizeString());
                 }
-//            }
+                listItem /*<< fileEntry.IconId()*/
+                        << fileEntry.name() << extraData << fileEntry.attributesString();
+            }
             return listItem;
         }
     case Qt::DecorationRole: {
             if (mEngineWrapper) {
                 QIcon icon;
-//                if (mEngineWrapper->isDriveListViewActive()) {
-//                    icon = mFileIconProvider->icon(QFileIconProvider::Drive);
-//                } else {
-                    FileEntry fileEntry(mEngineWrapper->getFileEntry(index));
+                    FbFileEntry fileEntry(mEngineWrapper->getFileEntry(index));
                     if (fileEntry.isDir()) {
                         icon = mFileIconProvider->icon(QFileIconProvider::Folder);
                     } else {
--- a/filebrowser/ui/src/fbfileview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbfileview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -16,12 +16,12 @@
 */
 
 #include "fbfileview.h"
-#include "settingsview.h"
-#include "editorview.h"
-#include "searchview.h"
+#include "fbsettingsview.h"
+#include "fbeditorview.h"
+#include "fbsearchview.h"
 #include "enginewrapper.h"
 #include "notifications.h"
-
+#include "fbfolderselectiondialog.h"
 #include "fbfilemodel.h"
 #include "filebrowsersortfilterproxymodel.h"
 //#include "fbfilelistviewitem.h"
@@ -66,6 +66,8 @@
     mContextMenuActions(),
     mContextMenu(0),
     mToolbarBackAction(0),
+    mToolbarFilterAction(0),
+    mToolbarPasteAction(0),
     mItemHighlighted(false),
     mLocationChanged(false),
     mRemoveFileAfterCopied(false),
@@ -121,6 +123,7 @@
     connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
     connect(mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
             this, SLOT(onLongPressed(HbAbstractViewItem*, QPointF)));
+    connect(mEngineWrapper, SIGNAL(fileSystemDataChanged()), this, SLOT(refreshList()));
 
     mNaviPane = new HbLabel(this);
     mNaviPane->setPlainText(QString(" ")); // TODO get from settings or default
@@ -182,7 +185,6 @@
 
     mOptionMenuActions.mFileBackMoveUp = mOptionMenuActions.mFileMenu->addAction("Back/Move up", this, SLOT(fileBackMoveUp()));
     mOptionMenuActions.mFileSearch = mOptionMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
-    //mOptionMenuActions.mFileSearch->setVisible(false);
 
     mOptionMenuActions.mFileNewMenu = mOptionMenuActions.mFileMenu->addMenu("New");
     mOptionMenuActions.mFileNewFile = mOptionMenuActions.mFileNewMenu->addAction("File", this, SLOT(fileNewFile()));
@@ -192,13 +194,7 @@
     mOptionMenuActions.mFileRename = mOptionMenuActions.mFileMenu->addAction("Rename", this, SLOT(fileRename()));
     mOptionMenuActions.mFileTouch = mOptionMenuActions.mFileMenu->addAction("Touch", this, SLOT(fileTouch()));
 
-//    mOptionMenuActions.mFileChecksumsMenu = mOptionMenuActions.mFileMenu->addMenu("Checksums");
-//    mOptionMenuActions.mFileChecksumsMD5 = mOptionMenuActions.mFileChecksumsMenu->addAction("MD5", this, SLOT(fileChecksumsMD5()));
-//    mOptionMenuActions.mFileChecksumsMD2 = mOptionMenuActions.mFileChecksumsMenu->addAction("MD2", this, SLOT(fileChecksumsMD2()));
-//    mOptionMenuActions.mFileChecksumsSHA1 = mOptionMenuActions.mFileChecksumsMenu->addAction("SHA-1", this, SLOT(fileChecksumsSHA1()));
-
     mOptionMenuActions.mFileSetAttributes = mOptionMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
-    mOptionMenuActions.mFileSetAttributes->setVisible(false);
 }
 
 /**
@@ -347,7 +343,7 @@
     bool isFileItemListEmpty = mFbFileModel->rowCount() == 0;
     bool isNormalModeActive = true;       //iModel->FileUtils()->IsNormalModeActive();
     bool isCurrentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly();   //iModel->FileUtils()->IsCurrentDriveReadOnly();
-    bool isCurrentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();
+    // bool isCurrentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();
     // bool currentSelected = true;    //iContainer->ListBox()->View()->ItemIsSelected(iContainer->ListBox()->View()->CurrentItemIndex());
     bool isAllSelected = mListView->selectionModel()->selection().count() == mFbFileModel->rowCount();
     //bool isNoneSelected = mListView->selectionModel()->selection().count() != 0;
@@ -372,24 +368,25 @@
 
     mOptionMenuActions.mFileNewMenu->menuAction()->setVisible(!isCurrentDriveReadOnly);
     mOptionMenuActions.mFileDelete->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && hasSelectedItems/*isSelectionMode*/);
-    mOptionMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && hasSelectedItems/*&& isSelectionMode*/);
+    mOptionMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && hasSelectedItems /*&& !isSelectionMode*/);
     mOptionMenuActions.mFileTouch->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && hasSelectedItems);
 
-    // TODO mOptionMenuActions.mFileChecksumsMenu->setVisible(!(isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory));
-    // TODO mOptionMenuActions.mFileSetAttributes->setVisible(!(isFileItemListEmpty || isCurrentDriveReadOnly));
+    mOptionMenuActions.mFileSetAttributes->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && hasSelectedItems);
     // TODO mOptionMenuActions.mFileCompress->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory));
     // TODO mOptionMenuActions.mFileDecompress->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory));
 
-    mOptionMenuActions.mEditCut->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && isSelectionMode);
-    mOptionMenuActions.mEditCopy->setVisible(!isFileItemListEmpty && isSelectionMode);
-    mOptionMenuActions.mEditPaste->setVisible(!(isClipBoardEmpty || isCurrentDriveReadOnly));
-    mOptionMenuActions.mEditCopyToFolder->setVisible(!isFileItemListEmpty);
-    mOptionMenuActions.mEditMoveToFolder->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty));
+    mOptionMenuActions.mEditMenu->menuAction()->setVisible( (!isSelectionMode && !isClipBoardEmpty && !isCurrentDriveReadOnly)
+                                                            || (isSelectionMode));
+    mOptionMenuActions.mEditCut->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && isSelectionMode && hasSelectedItems);
+    mOptionMenuActions.mEditCopy->setVisible(!isFileItemListEmpty && isSelectionMode && hasSelectedItems);
+    mOptionMenuActions.mEditPaste->setVisible(!isClipBoardEmpty && !isCurrentDriveReadOnly);
+    mOptionMenuActions.mEditCopyToFolder->setVisible(!isFileItemListEmpty && isSelectionMode && hasSelectedItems);
+    mOptionMenuActions.mEditMoveToFolder->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && isSelectionMode && hasSelectedItems);
 
     mOptionMenuActions.mEditSelect->setVisible(false/*!currentSelected && !isFileItemListEmpty*/);
     mOptionMenuActions.mEditUnselect->setVisible(false/*currentSelected && !isFileItemListEmpty*/);
-    mOptionMenuActions.mEditSelectAll->setVisible(isSelectionMode && !isAllSelected && !isFileItemListEmpty);
-    mOptionMenuActions.mEditUnselectAll->setVisible(hasSelectedItems && !isFileItemListEmpty);
+    mOptionMenuActions.mEditSelectAll->setVisible(!isFileItemListEmpty && isSelectionMode && !isAllSelected);
+    mOptionMenuActions.mEditUnselectAll->setVisible(!isFileItemListEmpty && hasSelectedItems);
 
     // TODO mOptionMenuActions.mViewSort->setVisible(!(!isNormalModeActive || isFileItemListEmpty));
     // TODO mOptionMenuActions.mViewOrder->setVisible(!(!isNormalModeActive  || isFileItemListEmpty));
@@ -435,9 +432,10 @@
     mContextMenuActions.mFileMenu = mContextMenu->addMenu("File");
 
     //mContextMenuActions.mFileBackMoveUp = mContextMenuActions.mFileMenu->addAction("Back/Move up (<-)", this, SLOT(fileBackMoveUp()));
-    mContextMenuActions.mFileOpenDirectory = mContextMenuActions.mFileMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
-//    mContextMenuActions.mFileSearch = mContextMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
-    //mContextMenuActions.mFileSearch->setVisible(false);
+//    mContextMenuActions.mFileOpenDirectory = mContextMenuActions.mFileMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
+    mContextMenuActions.mFileOpenDirectory = mContextMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
+    mContextMenuActions.mSearch = mContextMenu->addAction("Search...", this, SLOT(fileSearch()));
+    mContextMenuActions.mFileSearch = mContextMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
 
     mContextMenuActions.mFileDelete = mContextMenuActions.mFileMenu->addAction("Delete", this, SLOT(fileDelete()));
     mContextMenuActions.mFileRename = mContextMenuActions.mFileMenu->addAction("Rename", this, SLOT(fileRename()));
@@ -449,8 +447,7 @@
     mContextMenuActions.mFileChecksumsMD2 = mContextMenuActions.mFileChecksumsMenu->addAction("MD2", this, SLOT(fileChecksumsMD2()));
     mContextMenuActions.mFileChecksumsSHA1 = mContextMenuActions.mFileChecksumsMenu->addAction("SHA-1", this, SLOT(fileChecksumsSHA1()));
 
-//    mContextMenuActions.mFileSetAttributes = mContextMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
-//    mContextMenuActions.mFileSetAttributes->setVisible(false);
+    mContextMenuActions.mFileSetAttributes = mContextMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
 }
 
 void FbFileView::createEditContextMenu()
@@ -475,7 +472,6 @@
 void FbFileView::updateContextMenu()
 {
     bool isFileItemListEmpty = mFbFileModel->rowCount() == 0;
-    bool isDriveListViewActive = mEngineWrapper->isDriveListViewActive();
 //    bool isNormalModeActive = true;       //iModel->FileUtils()->IsNormalModeActive();
     bool isCurrentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly();
     bool isCurrentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();
@@ -483,23 +479,27 @@
     bool isSelectionMode = mOptionMenuActions.mSelection && mOptionMenuActions.mSelection->isChecked();
     bool isClipBoardEmpty = !mEngineWrapper->isClipBoardListInUse();
 
+    mContextMenuActions.mFileOpenDirectory->setVisible(!isFileItemListEmpty && isCurrentItemDirectory && isSelectionMode);
+    mContextMenuActions.mSearch->setVisible(!isFileItemListEmpty && isSelectionMode && isCurrentItemDirectory);
+    mContextMenuActions.mFileSearch->setVisible(!isFileItemListEmpty && !isSelectionMode && isCurrentItemDirectory);
     // File submenu
-    //mContextMenuActions.mFileBackMoveUp->setVisible( !isDriveListViewActive);
-    mContextMenuActions.mFileOpenDirectory->setVisible( !isFileItemListEmpty && !isDriveListViewActive && isCurrentItemDirectory);
+    //mContextMenuActions.mFileBackMoveUp->setVisible();
+    mContextMenuActions.mFileMenu->menuAction()->setVisible(!isSelectionMode);
 
-    mContextMenuActions.mFileDelete->setVisible(!isFileItemListEmpty && !isDriveListViewActive && !isCurrentDriveReadOnly);
-    mContextMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isDriveListViewActive && !isCurrentDriveReadOnly);
-    mContextMenuActions.mFileTouch->setVisible(!isFileItemListEmpty && !isDriveListViewActive && !isCurrentDriveReadOnly);
+    mContextMenuActions.mFileDelete->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly);
+    mContextMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly && !isSelectionMode);
+    mContextMenuActions.mFileTouch->setVisible(!isFileItemListEmpty && !isCurrentDriveReadOnly);
     mContextMenuActions.mFileProperties->setVisible(!isFileItemListEmpty && !isSelectionMode);
 
-    mContextMenuActions.mFileChecksumsMenu->menuAction()->setVisible(!(isFileItemListEmpty || isSelectionMode /*|| !hasSelectedItems*/ || isCurrentItemDirectory || isDriveListViewActive));
+    mContextMenuActions.mFileChecksumsMenu->menuAction()->setVisible(!isFileItemListEmpty && !isSelectionMode && !isCurrentItemDirectory);
+
     // Edit submenu
-    mContextMenuActions.mEditMenu->menuAction()->setVisible(!isDriveListViewActive);
-    mContextMenuActions.mEditCut->setVisible(!(isDriveListViewActive || isCurrentDriveReadOnly || isFileItemListEmpty));
-    mContextMenuActions.mEditCopy->setVisible(!(isDriveListViewActive || isFileItemListEmpty));
-    mContextMenuActions.mEditPaste->setVisible(!isDriveListViewActive && !isClipBoardEmpty && !isCurrentDriveReadOnly);
-    mContextMenuActions.mEditCopyToFolder->setVisible(!(isDriveListViewActive || isFileItemListEmpty));
-    mContextMenuActions.mEditMoveToFolder->setVisible(!(isDriveListViewActive || isCurrentDriveReadOnly || isFileItemListEmpty));
+    mContextMenuActions.mEditMenu->menuAction()->setVisible(!isSelectionMode);
+    mContextMenuActions.mEditCut->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty));
+    mContextMenuActions.mEditCopy->setVisible(!(isFileItemListEmpty));
+    mContextMenuActions.mEditPaste->setVisible(!isClipBoardEmpty && !isCurrentDriveReadOnly);
+    mContextMenuActions.mEditCopyToFolder->setVisible(!isFileItemListEmpty);
+    mContextMenuActions.mEditMoveToFolder->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty));
 }
 
 // ---------------------------------------------------------------------------
@@ -537,22 +537,25 @@
     connect(mSearchPanel, SIGNAL(exitClicked()), this, SLOT(clearFilterCriteria()));
     filterExtension->setContentWidget(mSearchPanel);
 
-    HbAction* mToolbarFilterAction = mToolBar->addExtension(filterExtension);
-//    mToolbarFilterAction->setText("Filter");
+    mToolbarFilterAction = mToolBar->addExtension(filterExtension);
     mToolbarFilterAction->setToolTip("Filter");
     mToolbarFilterAction->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_find.svg")));
     //connect(mToolbarFilterAction, SIGNAL(triggered()), this, SLOT(viewFilterEntries()));
 
     if (mOptionMenuActions.mSelection) {
+        // TODO Selection mode icon to be added
         //mOptionMenuActions.mSelection->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_selection_active.svg")));
         mToolBar->addAction(mOptionMenuActions.mSelection);
     }
 
-//    // TODO Paste to be added
-//    if (mOptionMenuActions.mEditPaste) {
-//        //mOptionMenuActions.mEditPaste->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_selection_active.svg")));
-//        mToolBar->addAction(mOptionMenuActions.mEditPaste);
-//    }
+    mToolbarPasteAction = new HbAction(mToolBar);
+    mToolbarPasteAction->setText("Paste");
+    mToolbarPasteAction->setToolTip("Paste");
+    // TODO Paste icon to be added
+    //mToolbarPasteAction->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_folder_parent.svg")));
+    connect(mToolbarPasteAction, SIGNAL(triggered()), this, SLOT(editPaste()));
+    mToolBar->addAction(mToolbarPasteAction);
+    mToolbarPasteAction->setEnabled(false);
 }
 
 /**
@@ -563,7 +566,6 @@
     editUnselectAll();
     mEngineWrapper->refreshView();
     mSearchPanel->setCriteria(QString(""));
-    mListView->model()->revert();
     mListView->reset();
 
     if (mListView->model() && mListView->model()->rowCount() > 0) {
@@ -571,6 +573,8 @@
         mListView->scrollTo(firstIndex);
     }
 
+    mToolbarPasteAction->setEnabled(mEngineWrapper->isClipBoardListInUse());
+
     TListingMode listingMode = mEngineWrapper->listingMode();
     if (listingMode == ENormalEntries)
         mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
@@ -635,7 +639,7 @@
         mOverwriteOptions.queryIndex = dlg->selectedItems().at(0).toInt();
         if (mOverwriteOptions.queryIndex == EFileActionQueryPostFix) {
             QString heading = QString("Postfix");
-            HbInputDialog::getText(heading, this, SLOT(fileOverwritePostfix(HbAction *)), QString(), scene());
+            HbInputDialog::queryText(heading, this, SLOT(fileOverwritePostfix(HbAction *)), QString(), scene());
         } else if (mOverwriteOptions.queryIndex == EFileActionSkipAllExisting) {
             mOverwriteOptions.overWriteFlags = 0;
         }
@@ -721,10 +725,15 @@
 
     // by default use selected items
     if (selectionIndexes) {
-        if (selectionIndexes->hasSelection()) {
-            QItemSelection proxyItemSelection = mListView->selectionModel()->selection();
-            QItemSelection itemSelection = mSortFilterProxyModel->mapSelectionToSource(proxyItemSelection);
-            mSelectionIndexes = itemSelection.indexes();
+        bool isSelectionMode = mOptionMenuActions.mSelection && mOptionMenuActions.mSelection->isChecked();
+        if (isSelectionMode) {
+            if (selectionIndexes->hasSelection()) {
+                QItemSelection proxyItemSelection = mListView->selectionModel()->selection();
+                QItemSelection itemSelection = mSortFilterProxyModel->mapSelectionToSource(proxyItemSelection);
+                mSelectionIndexes = itemSelection.indexes();
+            } else { // or if none selected, clear selection
+                mSelectionIndexes.clear();
+            }
         } else { // or if none selected, use the current item index
             mSelectionIndexes.clear();
             QModelIndex currentIndex = currentItemIndex();  //alreade mapped to source model
@@ -776,13 +785,18 @@
 void FbFileView::fileSearch()
 {
     QString searchPath;
-//    if (mEngineWrapper->currentPath() != mInitDirPath.path()) {
-//        searchPath = mDirectory;
-//        searchPath.replace("/", "\\");
-//        searchPath+="\\";
-//    }
-    searchPath = mEngineWrapper->currentPath();
-//    mSearch->open(searchPath);
+    HbAction *contextrMenuAction = static_cast<HbAction *>(sender());
+    if (contextrMenuAction
+        && (contextrMenuAction == mContextMenuActions.mSearch
+            || contextrMenuAction == mContextMenuActions.mFileSearch)
+        && mEngineWrapper->getFileEntry(currentItemIndex()).isDir()) {
+        searchPath = mEngineWrapper->currentPath()
+                     + mEngineWrapper->getFileEntry(currentItemIndex()).name()
+                     + QString("\\");
+    } else {
+        searchPath = mEngineWrapper->currentPath();
+    }
+
     emit aboutToShowSearchView(searchPath);
 }
 
@@ -792,7 +806,7 @@
 void FbFileView::fileNewFile()
 {
     QString heading = QString("Enter filename");
-    HbInputDialog::getText(heading, this, SLOT(doFileNewFile(HbAction*)), QString(), scene());
+    HbInputDialog::queryText(heading, this, SLOT(doFileNewFile(HbAction*)), QString(), scene());
 }
 
 /**
@@ -814,7 +828,7 @@
 void FbFileView::fileNewDirectory()
 {
     QString heading = QString("Enter directory name");
-    HbInputDialog::getText(heading, this, SLOT(doFileNewDirectory(HbAction*)), QString(), scene());
+    HbInputDialog::queryText(heading, this, SLOT(doFileNewDirectory(HbAction*)), QString(), scene());
 }
 
 /**
@@ -838,18 +852,17 @@
     storeSelectedItemsOrCurrentItem();
     const QString messageFormat = "Delete %1 entries?";
     QString message = messageFormat.arg(mSelectionIndexes.count());
-    HbMessageBox::question(message, this, SLOT(doFileDelete(HbAction*)));
+    HbMessageBox::question(message, this, SLOT(doFileDelete(int)), HbMessageBox::Yes | HbMessageBox::No);
 }
 
 /**
   Delete actually selected files
   */
-void FbFileView::doFileDelete(HbAction* action)
+void FbFileView::doFileDelete(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
-        //storeSelectedItemsOrCurrentItem();
+    if (action == HbMessageBox::Yes) {
         mEngineWrapper->deleteItems(mSelectionIndexes);
-        refreshList();
+        mEngineWrapper->startExecutingCommands(QString("Deleting"));
     }
 }
 
@@ -864,10 +877,10 @@
     for (int i(0), ie(mSelectionIndexes.count()); i < ie; ++i ) {
         mProceed = (i == ie-1); // if the last item
         mModelIndex = mSelectionIndexes.at(i);
-        FileEntry entry = mEngineWrapper->getFileEntry(mModelIndex);
+        FbFileEntry entry = mEngineWrapper->getFileEntry(mModelIndex);
 
         QString heading = QString("Enter new name");
-        HbInputDialog::getText(heading, this, SLOT(doFileRename(HbAction*)), entry.name(), scene());
+        HbInputDialog::queryText(heading, this, SLOT(doFileRename(HbAction*)), entry.name(), scene());
     }
 }
 
@@ -883,13 +896,9 @@
         if (mEngineWrapper->targetExists(mModelIndex, mNewFileName)) {
             const QString messageTemplate = QString("%1 already exists, overwrite?");
             QString message = messageTemplate.arg(mNewFileName);
-            HbMessageBox::question(message, this, SLOT(doFileRenameFileExist(HbAction *)));
+            HbMessageBox::question(message, this, SLOT(doFileRenameFileExist(int)), HbMessageBox::Yes | HbMessageBox::No);
         } else {
-            mEngineWrapper->rename(mModelIndex, mNewFileName);
-            if (mProceed) {
-                mEngineWrapper->startExecutingCommands(QString("Renaming"));
-                refreshList();
-            }
+            proceedFileRename();
         }
     }
 }
@@ -897,14 +906,20 @@
 /**
   Rename actually selected files
   */
-void FbFileView::doFileRenameFileExist(HbAction *action)
+void FbFileView::doFileRenameFileExist(int action)
 {
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
-        mEngineWrapper->rename(mModelIndex, mNewFileName);
-        if (mProceed) {
-            mEngineWrapper->startExecutingCommands(QString("Renaming"));
-            refreshList();
-        }
+    if (action == HbMessageBox::Yes) {
+        proceedFileRename();
+    }
+}
+
+
+void FbFileView::proceedFileRename()
+{
+    mEngineWrapper->rename(mModelIndex, mNewFileName);
+    if (mProceed) {
+        mEngineWrapper->startExecutingCommands(QString("Renaming"));
+        refreshList();
     }
 }
 
@@ -918,24 +933,28 @@
 
     if (mEngineWrapper->selectionHasDirs()) {
         const QString message = "Recurse touch for all selected dirs?";
-        HbMessageBox::question(message, this, SLOT(doFileTouch(HbAction*)));
-    }
-    else{
-        mEngineWrapper->touch(false);
-        refreshList();
+        HbMessageBox::question(message, this, SLOT(doFileTouch(int)), HbMessageBox::Yes | HbMessageBox::No);
+    } else {
+        proceedFileTouch(false);
     }
 }
 
 /**
   Touch actually selected files
   */
-void FbFileView::doFileTouch(HbAction* action)
+void FbFileView::doFileTouch(int action)
 {
     bool recurse = false;
-    if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+    if (action == HbMessageBox::Yes) {
         recurse = true;
         }
+    proceedFileTouch(recurse);
+}
+
+void FbFileView::proceedFileTouch(bool recurse)
+{
     mEngineWrapper->touch(recurse);
+    mEngineWrapper->startExecutingCommands(QString("Touching"));
     refreshList();
 }
 
@@ -973,7 +992,45 @@
 
 void FbFileView::fileSetAttributes()
 {
+    storeSelectedItemsOrCurrentItem();
+    mEngineWrapper->setCurrentSelection(mSelectionIndexes);
 
+    QString attributesViewTitle("Multiple entries");
+
+    quint32 setAttributesMask(0);
+    quint32 clearAttributesMask(0);
+    bool recurse(false);
+
+    // set default masks if only one file selected
+    if (mSelectionIndexes.count() == 1)
+        {
+        mModelIndex = mSelectionIndexes.at(0);
+        FbFileEntry fileEntry = mEngineWrapper->getFileEntry(mModelIndex);
+
+        attributesViewTitle = fileEntry.name();
+
+        if (fileEntry.isArchive())
+            setAttributesMask |= KEntryAttArchive;
+        else
+            clearAttributesMask |= KEntryAttArchive;
+
+        if (fileEntry.isHidden())
+            setAttributesMask |= KEntryAttHidden;
+        else
+            clearAttributesMask |= KEntryAttHidden;
+
+        if (fileEntry.isReadOnly())
+            setAttributesMask |= KEntryAttReadOnly;
+        else
+            clearAttributesMask |= KEntryAttReadOnly;
+
+        if (fileEntry.isSystem())
+            setAttributesMask |= KEntryAttSystem;
+        else
+            clearAttributesMask |= KEntryAttSystem;
+        }
+
+    emit aboutToShowAttributesView(attributesViewTitle, setAttributesMask, clearAttributesMask, recurse);
 }
 
 // edit menu
@@ -997,11 +1054,13 @@
     }
 
     mEngineWrapper->clipboardCut(mClipboardIndexes);
+    mEngineWrapper->setCurrentSelection(mClipboardIndexes);
 
     int operations = mClipboardIndexes.count();
     const QString message = QString ("%1 entries cut to clipboard");
     QString noteMsg = message.arg(operations);
 
+    mToolbarPasteAction->setEnabled(true);
     Notifications::showInformationNote(noteMsg);
 }
 
@@ -1020,12 +1079,14 @@
     }
 
     mEngineWrapper->clipboardCopy(mClipboardIndexes);
+    mEngineWrapper->setCurrentSelection(mClipboardIndexes);
 
     int operations = mClipboardIndexes.count();
 
     const QString message = QString ("%1 entries copied to clipboard");
     QString noteMsg = message.arg(operations);
 
+    mToolbarPasteAction->setEnabled(true);
     Notifications::showInformationNote(noteMsg);
 }
 
@@ -1037,14 +1098,14 @@
 {
     bool someEntryExists(false);
 
-    // TODO Set entry items here
-
     someEntryExists = mEngineWrapper->isDestinationEntriesExists(mClipboardIndexes, mEngineWrapper->currentPath());
     if (someEntryExists) {
         fileOverwriteDialog();
     }
     
     mEngineWrapper->clipboardPaste(mOverwriteOptions);
+    mEngineWrapper->startExecutingCommands(mEngineWrapper->getClipBoardMode() == EClipBoardModeCut ?
+                                           QString("Moving") : QString("Copying") );
 }
 
 /**
@@ -1053,17 +1114,19 @@
 void FbFileView::editCopyToFolder()
 {
     QString heading = QString("Enter new name");
-    HbInputDialog::getText(heading, this, SLOT(doEditCopyToFolder(HbAction*)), mEngineWrapper->currentPath(), scene());
+    FbCopyToFolderSelectionDialog *folderSelectionDialog = new FbCopyToFolderSelectionDialog();
+    folderSelectionDialog->open(this, SLOT(doEditCopyToFolder(int)));
 }
 
 /**
   Copies current file selection to a queried directory.
   */
-void FbFileView::doEditCopyToFolder(HbAction *action)
+void FbFileView::doEditCopyToFolder(int action)
 {
-    HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
-    if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
-        QString targetDir = dlg->value().toString();
+    FbCopyToFolderSelectionDialog *dlg = qobject_cast<FbCopyToFolderSelectionDialog*>(sender());
+    if (dlg && action == HbDialog::Accepted) {
+        QString targetDir = dlg->selectedFolder();
+
         bool someEntryExists(false);
 
         // TODO Set entry items here
@@ -1075,7 +1138,7 @@
             fileOverwriteDialog();
         }
         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, false);
-        refreshList();
+        mEngineWrapper->startExecutingCommands(QString("Copying"));
     }
 }
 
@@ -1085,17 +1148,19 @@
 void FbFileView::editMoveToFolder()
 {
     QString heading = QString("Enter new name");
-    HbInputDialog::getText(heading, this, SLOT(doEditMoveToFolder(HbAction*)), mEngineWrapper->currentPath(), scene());
+    FbMoveToFolderSelectionDialog *folderSelectionDialog = new FbMoveToFolderSelectionDialog();
+    folderSelectionDialog->open(this, SLOT(doEditMoveToFolder(int)));
 }
 
 /**
   Moves current file selection to a queried directory.
   */
-void FbFileView::doEditMoveToFolder(HbAction *action)
+void FbFileView::doEditMoveToFolder(int action)
 {
-    HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
-    if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
-        QString targetDir = dlg->value().toString();
+    FbMoveToFolderSelectionDialog *dlg = qobject_cast<FbMoveToFolderSelectionDialog*>(sender());
+    if (dlg && action == HbDialog::Accepted) {
+        QString targetDir = dlg->selectedFolder();
+
         bool someEntryExists(false);
 
         // TODO Set entry items here
@@ -1107,7 +1172,7 @@
             fileOverwriteDialog();
         }
         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, true);
-        refreshList();
+        mEngineWrapper->startExecutingCommands(QString("Moving"));
     }
 }
 
@@ -1120,7 +1185,6 @@
     if (selectionModel) {
         selectionModel->select(selectionModel->currentIndex(), QItemSelectionModel::SelectCurrent);
         selectionModel->select(selectionModel->currentIndex(), QItemSelectionModel::Select);
-//        itemHighlighted(selectionModel->currentIndex());
         refreshList();
     }
 }
@@ -1173,9 +1237,8 @@
 void FbFileView::viewFilterEntries()
 {
     if (mToolBar && mToolBar->actions().count() > 1 && mToolBar->actions().at(1)) {
-        HbAction* tbeFilterAction = qobject_cast<HbAction*>(mToolBar->actions().at(1));
-        if (tbeFilterAction && tbeFilterAction->toolBarExtension()) {
-            HbToolBarExtension *tbeFilter = tbeFilterAction->toolBarExtension();
+        if (mToolbarFilterAction && mToolbarFilterAction->toolBarExtension()) {
+            HbToolBarExtension *tbeFilter = mToolbarFilterAction->toolBarExtension();
             tbeFilter->open();
         }
     }
@@ -1262,8 +1325,8 @@
 {
     int leaveCode = -6;
     QString heading = QString("Leave code");
-    //HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), leaveCode, scene());
-    HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), QString::number(leaveCode), scene());
+    //HbInputDialog::queryInt(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), leaveCode, scene());
+    HbInputDialog::queryText(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), QString::number(leaveCode), scene());
 }
 
 
@@ -1289,7 +1352,7 @@
 {
     mPanicCategory = QString ("Test Category");
     QString heading = QString("Panic category");
-    HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulatePanicCode(HbAction*)), mPanicCategory, scene());
+    HbInputDialog::queryText(heading, this, SLOT(doToolsErrorSimulatePanicCode(HbAction*)), mPanicCategory, scene());
 }
 
 /**
@@ -1302,7 +1365,7 @@
         mPanicCategory = dlg->value().toString();
         int panicCode(555);
         QString heading = QString("Panic code");
-        HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulatePanic(HbAction*)), panicCode, scene());
+        HbInputDialog::queryInt(heading, this, SLOT(doToolsErrorSimulatePanic(HbAction*)), panicCode, scene());
     }
 }
 
@@ -1328,7 +1391,7 @@
 {
     int exceptionCode = 0;
     QString heading = QString("Exception code");
-    HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateException(HbAction*)), exceptionCode, scene());
+    HbInputDialog::queryInt(heading, this, SLOT(doToolsErrorSimulateException(HbAction*)), exceptionCode, scene());
 }
 
 /**
@@ -1399,7 +1462,7 @@
     quint32 dbgMask = mEngineWrapper->getDebugMask();
     QString dbgMaskText = QString("0x").append(QString::number(dbgMask, 16));
     QString heading = QString("Kernel debug mask in hex format");
-    HbInputDialog::getText(heading, this, SLOT(toolsSetDebugMask(HbAction*)), dbgMaskText, scene());
+    HbInputDialog::queryText(heading, this, SLOT(toolsSetDebugMask(HbAction*)), dbgMaskText, scene());
 }
 
 /**
@@ -1483,7 +1546,7 @@
             refreshList();
         } else {  // file item
             // mSelectedFilePath = filePath;
-            FileEntry fileEntry = mEngineWrapper->getFileEntry(activatedIndex);
+            FbFileEntry fileEntry = mEngineWrapper->getFileEntry(activatedIndex);
             mAbsoluteFilePath = fileEntry.path() + fileEntry.name();
 
             // open user-dialog to select: view as text/hex,  open w/AppArc or open w/DocH. embed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbfolderselectiondialog.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2010 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 "fbfolderselectiondialog.h"
+#include "fbfolderselectorwrapper.h"
+
+#include <HbListWidget>
+#include <HbAction>
+#include <HbListWidgetItem>
+#include <HbLabel>
+#include <HbPushButton>
+
+#include <QGraphicsLinearLayout>
+#include <QFileInfo>
+#include <QFileIconProvider>
+
+FbFolderSelectionDialog::FbFolderSelectionDialog(QGraphicsItem *parent) :
+        HbDialog(parent),
+        mTitle(0),
+        mFolderList(0),
+        mFolderSelectorWrapper(0),
+        mFileIconProvider(0)
+{
+    init();
+}
+
+FbFolderSelectionDialog::~FbFolderSelectionDialog()
+{
+    if (mFileIconProvider)
+        delete mFileIconProvider;
+}
+
+QString FbFolderSelectionDialog::selectedFolder()
+{
+    return mFolderSelectorWrapper->currentPath();
+}
+
+void FbFolderSelectionDialog::init()
+{
+    setAttribute(Qt::WA_DeleteOnClose);
+
+    mFileIconProvider = new QFileIconProvider();
+
+    createHeading();
+    createList();
+    createToolBar();
+}
+
+void FbFolderSelectionDialog::createHeading()
+{
+    HbWidget *headingWidget = new HbWidget(this);
+    QGraphicsLinearLayout *headingLayout = new QGraphicsLinearLayout(Qt::Horizontal, headingWidget);
+    headingWidget->setLayout(headingLayout);
+
+    mTitle = new HbLabel(this);
+    mTitle->setElideMode(Qt::ElideRight);
+
+    HbPushButton *upButton = new HbPushButton(this);
+    upButton->setIcon(HbIcon(QString(":/qtg_indi_status_back.svg")));
+    connect(upButton, SIGNAL(pressed()),
+            this, SLOT(moveUpPressed()));
+
+    headingLayout->addItem(mTitle);
+    headingLayout->addItem(upButton);
+    headingLayout->setAlignment(upButton, Qt::AlignRight);
+
+    setHeadingWidget(headingWidget);
+}
+
+void FbFolderSelectionDialog::createList()
+{
+    mFolderList = new HbListWidget(this);
+    mFolderSelectorWrapper = new FbFolderSelectorWrapper();
+    mFolderSelectorWrapper->init();
+
+    refreshView();
+
+    setContentWidget(mFolderList);
+    connect(mFolderList, SIGNAL(activated(HbListWidgetItem *)),
+            this, SLOT(activated(HbListWidgetItem *)));
+
+    connect(mFolderSelectorWrapper, SIGNAL(FolderSelectionChanged()),
+            this, SLOT(refreshView()));
+}
+
+void FbFolderSelectionDialog::createToolBar()
+{
+    HbAction *rejectAction = new HbAction(QString("Cancel"), this);
+    addAction(rejectAction);
+}
+
+void FbFolderSelectionDialog::refreshView()
+{
+    mFolderList->clear();
+    QIcon icon;
+    if (mFolderSelectorWrapper->isDriveListViewActive())
+    {
+        const QString KSimpleDriveEntry("%d\t%c: <%S>\t\t");
+        //TODO icon = mFileIconProvider->icon(QFileIconProvider::Drive);
+        icon = mFileIconProvider->icon(QFileIconProvider::File);
+
+        for (TInt i=0; i<mFolderSelectorWrapper->itemCount(); i++) {
+            FbDriveEntry driveEntry = mFolderSelectorWrapper->getDriveEntry(i);
+
+            const QString SimpleDriveEntry("%1: <%2>");
+            QString diskName = SimpleDriveEntry.arg(driveEntry.driveLetter()).arg(driveEntry.mediaTypeString());
+
+            mFolderList->addItem(icon, diskName);
+        }
+    } else {
+        const QString SimpleFileEntry("%1");
+        icon = mFileIconProvider->icon(QFileIconProvider::Folder);
+
+        // append current folder item
+        QString currentAbsolutePath = mFolderSelectorWrapper->currentPath().left(mFolderSelectorWrapper->currentPath().length()-1);
+        QFileInfo fileInfo(currentAbsolutePath);
+        QString currentFolderName = fileInfo.fileName();
+        if (currentFolderName.isEmpty()) {
+            currentFolderName = QString("[root level]");
+        }
+
+        QString currentDirTextEntry = SimpleFileEntry.arg(currentFolderName); ///*<< fileEntry.IconId()*/
+        mFolderList->addItem(icon, currentDirTextEntry);
+
+        for (TInt i=0; i<mFolderSelectorWrapper->itemCount(); i++) {
+            FbFileEntry fileEntry = mFolderSelectorWrapper->getFileEntry(i);
+
+            QString fileName = SimpleFileEntry.arg(fileEntry.name()); ///*<< fileEntry.IconId()*/
+
+            mFolderList->addItem(icon, fileName);
+        }
+    }
+}
+
+void FbFolderSelectionDialog::activated(HbListWidgetItem * item)
+{
+    int row = mFolderList->row(item);
+    if (mFolderSelectorWrapper->isDriveListViewActive()) {
+        mFolderSelectorWrapper->moveDownToDirectory(row);
+    } else if (row == 0) {
+        if (this->actions().count() > 0) {
+            accept();
+        }
+    } else if (row > 0) {
+        mFolderSelectorWrapper->moveDownToDirectory(row);
+    }
+}
+
+void FbFolderSelectionDialog::moveUpPressed()
+{
+    mFolderSelectorWrapper->moveUpOneLevel();
+}
+
+// ---------------------------------------------------------------------------
+
+FbCopyToFolderSelectionDialog::FbCopyToFolderSelectionDialog(QGraphicsItem *parent) :
+        FbFolderSelectionDialog(parent)
+{
+    if (headingWidget()) {
+        mTitle->setPlainText(QString("Copy To"));
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+FbMoveToFolderSelectionDialog::FbMoveToFolderSelectionDialog(QGraphicsItem *parent) :
+        FbFolderSelectionDialog(parent)
+{
+    if (headingWidget()) {
+        mTitle->setPlainText(QString("Move To"));
+    }
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbfolderselectorwrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2010 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 "fbfolderselectorwrapper.h"
+#include "FBFolderSelector.h"
+
+#include <QString>
+
+// ---------------------------------------------------------------------------
+
+/**
+ * Constructor
+ */
+FbFolderSelectorWrapper::FbFolderSelectorWrapper()
+    : mDestinationFolderSelector(0)
+{
+}
+
+/**
+ * Destructor
+ */
+FbFolderSelectorWrapper::~FbFolderSelectorWrapper()
+{
+    if (mDestinationFolderSelector)
+        delete mDestinationFolderSelector;
+}
+
+/**
+ * Initializes Engine Wrapper
+ * @return true if engine was started successfully
+ */
+bool FbFolderSelectorWrapper::init()
+{
+    TFileName destinationFolder;
+
+    TRAPD(err, mDestinationFolderSelector = CFileBrowserFolderSelector::NewL(destinationFolder, this));
+    if (err != KErrNone) {
+        return false;
+    } else {
+        //TRAP_IGNORE(mEngine->ActivateEngineL());
+        //mSettings = FileBrowserSettings(&mEngine->Settings());
+        return true;
+    }
+}
+
+/**
+  * Return current path
+  */
+QString FbFolderSelectorWrapper::currentPath() const
+{
+    return QString::fromUtf16(mDestinationFolderSelector->CurrentPath().Ptr(),
+                              mDestinationFolderSelector->CurrentPath().Length());
+}
+
+/**
+  * Return whether drive list view is active
+  */
+bool FbFolderSelectorWrapper::isDriveListViewActive() const
+{
+    return mDestinationFolderSelector->IsDriveListViewActive();
+}
+
+/**
+  * Returns number of either drives or files depending on current view
+  */
+int FbFolderSelectorWrapper::itemCount() const
+{
+    if (isDriveListViewActive()) {
+        return mDestinationFolderSelector->DriveEntryList()->Count();
+    } else {
+        return mDestinationFolderSelector->FileEntryList()->Count();
+    }
+}
+
+/**
+  * Returns drive entry for given \a index
+  */
+FbDriveEntry FbFolderSelectorWrapper::getDriveEntry(const int index) const
+{
+    TDriveEntry driveEntry;
+    if (mDestinationFolderSelector->DriveEntryList()->Count() > index && index >= 0) {
+        driveEntry = mDestinationFolderSelector->DriveEntryList()->At(index);
+    }
+    return FbDriveEntry(driveEntry);
+}
+
+/**
+  * Returns file entry for given \a index
+  */
+FbFileEntry FbFolderSelectorWrapper::getFileEntry(const int index) const
+{
+    TFileEntry fileEntry;
+    if (mDestinationFolderSelector->FileEntryList()->Count() > index && index >= 0) {
+        fileEntry = mDestinationFolderSelector->FileEntryList()->At(index);
+    }
+    return FbFileEntry(fileEntry);
+}
+
+/**
+  * Move down to selected item by \a index
+  */
+void FbFolderSelectorWrapper::moveDownToDirectory(int index)
+{
+    mDestinationFolderSelector->MoveDownToDirectoryL(index);
+}
+
+/**
+  * Move up from folder
+  */
+void FbFolderSelectorWrapper::moveUpOneLevel()
+{
+    mDestinationFolderSelector->MoveUpOneLevelL();
+}
+
+void FbFolderSelectorWrapper::InformFolderSelectionChanged()
+{
+    emit FolderSelectionChanged();
+}
+
+// ---------------------------------------------------------------------------
--- a/filebrowser/ui/src/fbmainwindow.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/fbmainwindow.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -21,9 +21,10 @@
 #include "enginewrapper.h"
 #include "fbfileview.h"
 #include "fbdriveview.h"
-#include "settingsview.h"
-#include "editorview.h"
-#include "searchview.h"
+#include "fbsettingsview.h"
+#include "fbeditorview.h"
+#include "fbsearchview.h"
+#include "fbattributesview.h"
 
 FbMainWindow::FbMainWindow(QWidget *parent)
     : HbMainWindow(parent),
@@ -33,6 +34,7 @@
     mSettingsView(0),
     mEditorView(0),
     mSearchView(0),
+    mAttributesView(0),
     mPreviousView(0)
 {
 }
@@ -66,23 +68,26 @@
     addView(mFileView);
 
     // Create settings view
-    mSettingsView = new SettingsView(*mEngineWrapper);
+    mSettingsView = new FbSettingsView(*mEngineWrapper);
     connect(mSettingsView, SIGNAL(finished(bool)), this, SLOT(openPreviousBrowserView()));
     addView(mSettingsView);
 
     // Create editor view
-    mEditorView = new EditorView();
+    mEditorView = new FbEditorView();
     connect(mFileView, SIGNAL(aboutToShowEditorView(const QString &, bool)), this, SLOT(openEditorView(const QString &, bool)));
     connect(mEditorView, SIGNAL(finished(bool)), this, SLOT(openFileView()));
     addView(mEditorView);
 
     // Create Search view
-    mSearchView = new SearchView(*mEngineWrapper);
+    mSearchView = new FbSearchView(*mEngineWrapper);
     connect(mDriveView, SIGNAL(aboutToShowSearchView(QString)), this, SLOT(openSearchView(QString)));
     connect(mFileView, SIGNAL(aboutToShowSearchView(QString)), this, SLOT(openSearchView(QString)));
     connect(mSearchView, SIGNAL(finished(bool)), this, SLOT(openFileBrowserView(bool)));
     addView(mSearchView);
 
+    connect(mFileView, SIGNAL(aboutToShowAttributesView(const QString &, quint32 &, quint32 &, bool &)),
+            this, SLOT(openAttributesView(const QString &, quint32 &, quint32 &, bool &)));
+
     // Show ApplicationView at startup
     setCurrentView(mDriveView);
     mPreviousView = mDriveView;
@@ -143,3 +148,31 @@
     mSearchView->open(path);
     setCurrentView(mSearchView);
 }
+
+void FbMainWindow::openAttributesView(const QString &attributesViewTitle,
+                                      quint32 &setAttributesMask,
+                                      quint32 &clearAttributesMask,
+                                      bool &recurse)
+{
+    if (!mAttributesView) {
+        // Create attributes view
+        mAttributesView = new FbAttributesView(setAttributesMask, clearAttributesMask, recurse);
+        connect(mAttributesView, SIGNAL(finished(bool)), this, SLOT(closeAttributesView(bool)));
+        mAttributesView->setTitle(attributesViewTitle);
+        addView(mAttributesView);
+        setCurrentView(mAttributesView);
+    }
+}
+
+void FbMainWindow::closeAttributesView(bool accepted)
+{
+    if (accepted) {
+        mEngineWrapper->setAttributes(mAttributesView->setAttributesMask(), mAttributesView->clearAttributesMask(), mAttributesView->recurse());
+    }
+    openFileView();
+    removeView(mAttributesView);
+    mAttributesView->deleteLater();
+    mAttributesView = 0;
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbsearchview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2010 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 "fbsearchview.h"
+#include "enginewrapper.h"
+#include "notifications.h"
+
+#include <HbView>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbAction>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbDialog>
+#include <HbToolBar>
+#include <HbProgressDialog>
+
+#include <QtGui>
+#include <QDir>
+#include <QFileInfo>
+
+const QStringList RECURSEMODES = (QStringList() << "Non-recursive" << "Recursive");
+const QString acceptActionText = "Search";
+const QString rejectActionText = "Cancel";
+
+
+FbSearchView::FbSearchView(EngineWrapper &engineWrapper)
+    : mEngineWrapper(engineWrapper),
+    mAttributes(),
+    mResults(),
+    mForm(0),
+    mSearchFileNameItem(0),
+    mWildCardItem(0),
+    mHasString(0),
+    mRecurse(0),
+    mMinSize(0),
+    mMaxSize(0),
+    mMinDate(0),
+    mMaxDate(0),
+    mPath(),
+    mProgressDialog(0)
+{
+    // Set title and add this view to main window
+    setTitle("Search");
+
+    // Override back navigation action
+    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
+    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
+    setNavigationAction(leaveViewAction);
+
+    initDataForm();
+    createToolbar();
+}
+
+FbSearchView::~FbSearchView()
+{
+}
+
+void FbSearchView::initDataForm() {
+    mForm = new HbDataForm(/*HbFormView::ModeEdit,*/ this);
+    HbDataFormModel *model = new HbDataFormModel();
+
+    mSearchFileNameItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mSearchFileNameItem->setLabel("Search dir: ");
+
+    mWildCardItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mWildCardItem->setLabel("Wildcards: ");
+
+    mHasString = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mHasString->setLabel("Has string: ");
+
+    mRecurse = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
+    mRecurse->setLabel("Recurse: ");
+    mRecurse->setContentWidgetData("items", RECURSEMODES);
+
+    mMinSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mMinSize->setLabel("Min size: ");
+
+    mMaxSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mMaxSize->setLabel("Max size: ");
+
+    mMinDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mMinDate->setLabel("Min date: ");
+    mMinDate->setContentWidgetData("text", "01/01/1980");
+
+    mMaxDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
+    mMaxDate->setLabel("Max date: ");
+    mMaxDate->setContentWidgetData("text", "31/12/2060");
+
+    model->appendDataFormItem(mSearchFileNameItem);
+    model->appendDataFormItem(mWildCardItem);
+    model->appendDataFormItem(mHasString);
+    model->appendDataFormItem(mRecurse);
+    model->appendDataFormItem(mMinSize);
+    model->appendDataFormItem(mMaxSize);
+    model->appendDataFormItem(mMinDate);
+    model->appendDataFormItem(mMaxDate);
+    mForm->setModel(model);
+
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
+    layout->addItem(mForm);
+    setLayout(layout);
+}
+
+void FbSearchView::createToolbar()
+{
+    HbToolBar *toolBar = new HbToolBar(this);
+    HbAction *acceptAction = new HbAction(acceptActionText);
+    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
+    toolBar->addAction(acceptAction);
+
+    HbAction *rejectAction = new HbAction(rejectActionText);
+    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
+    toolBar->addAction(rejectAction);
+
+    setToolBar(toolBar);
+}
+
+void FbSearchView::loadAttributes()
+{
+    // get settings from engine;
+    mAttributes = mEngineWrapper.getFileSearchAttributes();
+
+    // set data:
+    mSearchFileNameItem->setContentWidgetData("text", mPath);
+//    mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir);
+    if (!mAttributes.mDefaultWildCard) {
+        mWildCardItem->setContentWidgetData("text", mAttributes.mWildCards);
+    }
+    mHasString->setContentWidgetData("text", mAttributes.mTextInFile);
+
+    mRecurse->setContentWidgetData("selected", mAttributes.mRecurse);
+
+    mMinSize->setContentWidgetData("text", mAttributes.mMinSize);
+    mMaxSize->setContentWidgetData("text", mAttributes.mMaxSize);
+
+    mMinDate->setContentWidgetData("text", mAttributes.mMinDate);
+    mMaxDate->setContentWidgetData("text", mAttributes.mMaxDate);
+}
+
+/**
+ * Reads form items and saves values of them into member variable mAttributes
+ */
+void FbSearchView::readFormItems()
+{
+    mAttributes.mSearchDir  = mSearchFileNameItem->contentWidgetData("text").toString();
+
+    mAttributes.mDefaultWildCard = false;
+    QString wildCard = mWildCardItem->contentWidgetData("text").toString();
+    if (wildCard.trimmed().isEmpty()) {
+        wildCard = QString("*");
+        mAttributes.mDefaultWildCard = true;
+    }
+    mAttributes.mWildCards  = wildCard;
+    mAttributes.mTextInFile = mHasString->contentWidgetData("text").toString();
+    mAttributes.mMinSize    = mMinSize->contentWidgetData("text").toInt();
+    mAttributes.mMaxSize    = mMaxSize->contentWidgetData("text").toInt();
+    mAttributes.mMinDate    = mMinDate->contentWidgetData("text").toDate();
+    mAttributes.mMaxDate    = mMaxDate->contentWidgetData("text").toDate();
+    mAttributes.mRecurse    = mRecurse->contentWidgetData("selected").toBool();
+}
+
+void FbSearchView::open(const QString &path)
+{   
+    mPath = path;
+    // load file search attribute values from FB engine:
+    loadAttributes();
+}
+
+void FbSearchView::startFileSearch()
+{
+    // save form data values and set them as search attributes into FB engine. 
+    readFormItems();
+    mEngineWrapper.setFileSearchAttributes(mAttributes);
+    
+    bool err = mEngineWrapper.searchFiles();
+
+    // show results of file search:
+    mResults = mEngineWrapper.getSearchResults();
+    fileSearchResults();
+}
+
+void FbSearchView::fileSearchResults()
+{
+    QString noteMsg("%1 entries found");
+    Notifications::showInformationNote(noteMsg.arg(mEngineWrapper.itemCount()), QString(""));
+}
+
+void FbSearchView::accept()
+{
+    startFileSearch();
+    emit finished(true);
+}
+
+void FbSearchView::reject()
+{
+    emit finished(false);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbsettingsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,243 @@
+/*
+* Copyright (c) 2010 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 "fbsettingsview.h"
+#include "enginewrapper.h"
+#include "filebrowsersettings.h"
+
+#include <HbView>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbAction>
+#include <HbToolBar>
+
+#include <QGraphicsLinearLayout>
+
+const QStringList DisplayModeModes = (QStringList() << "Full screen" << "Normal");
+const QStringList FileViewModes = (QStringList() << "Simple" << "Extended");
+const QStringList Modes = (QStringList() << "Yes" << "No");
+const QString YesText = QString("Yes");
+const QString NoText = QString("No");
+const QString acceptActionText = "OK";
+const QString rejectActionText = "Cancel";
+
+FbSettingsView::FbSettingsView(EngineWrapper &engineWrapper) :
+    mEngineWrapper(engineWrapper),
+    mForm(0),
+    mDisplayModeItem(0),
+    mFileViewItem(0),
+    mShowDirectoryInfoItem(0),
+    mShowAssociatedIconsItem(0),
+    mRememberFolderOnExitItem(0),
+    mRememberLastFolderItem(0),
+    mShowToolbarItem(0),
+    mSupportNetDrivesItem(0),
+    mBypassPlatformSecurityItem(0),
+    mUnlockFilesViaSBItem(0),
+    mIgnoreProtectionAttributesItem(0),
+    mNoROAttributeCopyFromZItem(0)
+{
+    setTitle("Settings");
+
+    // Override back navigation action
+    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
+    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
+    setNavigationAction(leaveViewAction);
+
+    initDataForm();
+    createToolbar();
+}
+
+FbSettingsView::~FbSettingsView()
+{
+}
+
+void FbSettingsView::initDataForm()
+{
+    mForm = new HbDataForm(this);
+    HbDataFormModel *model = new HbDataFormModel();
+
+//    connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)),
+//            this, SLOT(toggleChange(QModelIndex, QModelIndex)));
+
+
+    // TODO to be done
+//    mDisplayModeItem = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
+//    mDisplayModeItem->setLabel("Display mode: ");
+//    mDisplayModeItem->setContentWidgetData("items", DisplayModeModes);
+//
+//    mFileViewItem = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
+//    mFileViewItem->setLabel("File view: ");
+//    mFileViewItem->setContentWidgetData("items", FileViewModes);
+//
+//    mShowDirectoryInfoItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+//    mShowDirectoryInfoItem->setLabel("Show directory info: ");
+//    mShowDirectoryInfoItem->setContentWidgetData(QString("text"), YesText);
+//    mShowDirectoryInfoItem->setContentWidgetData(QString("additionalText"), NoText);
+//
+//    mShowAssociatedIconsItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+//    mShowAssociatedIconsItem->setLabel("Show associated icons: ");
+//    mShowAssociatedIconsItem->setContentWidgetData(QString("text"), YesText);
+//    mShowAssociatedIconsItem->setContentWidgetData(QString("additionalText"), NoText);
+//
+//    mRememberFolderOnExitItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+//    mRememberFolderOnExitItem->setLabel("Remember folder on exit: ");
+//    mRememberFolderOnExitItem->setContentWidgetData(QString("text"), YesText);
+//    mRememberFolderOnExitItem->setContentWidgetData(QString("additionalText"), NoText);
+//
+//    mRememberLastFolderItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+//    mRememberLastFolderItem->setLabel("Remember last folder: ");
+//    mRememberLastFolderItem->setContentWidgetData(QString("text"), YesText);
+//    mRememberLastFolderItem->setContentWidgetData(QString("additionalText"), NoText);
+//
+//    mShowToolbarItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+//    mShowToolbarItem->setLabel("Show toolbar: ");
+//    mShowToolbarItem->setContentWidgetData(QString("text"), YesText);
+//    mShowToolbarItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    mSupportNetDrivesItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+    mSupportNetDrivesItem->setLabel("Support net drives: ");
+    mSupportNetDrivesItem->setContentWidgetData(QString("text"), YesText);
+    mSupportNetDrivesItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    mBypassPlatformSecurityItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+    mBypassPlatformSecurityItem->setLabel("Bypass plat.security: ");
+    mBypassPlatformSecurityItem->setContentWidgetData(QString("text"), YesText);
+    mBypassPlatformSecurityItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    mUnlockFilesViaSBItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+    mUnlockFilesViaSBItem->setLabel("Unlock files via SB: ");
+    mUnlockFilesViaSBItem->setContentWidgetData(QString("text"), YesText);
+    mUnlockFilesViaSBItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    mIgnoreProtectionAttributesItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+    mIgnoreProtectionAttributesItem->setLabel("Ign. protection atts: ");
+    mIgnoreProtectionAttributesItem->setContentWidgetData(QString("text"), YesText);
+    mIgnoreProtectionAttributesItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    mNoROAttributeCopyFromZItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
+    mNoROAttributeCopyFromZItem->setLabel("No RO-att copy from Z: ");
+    mNoROAttributeCopyFromZItem->setContentWidgetData(QString("text"), YesText);
+    mNoROAttributeCopyFromZItem->setContentWidgetData(QString("additionalText"), NoText);
+
+    // load file search attribute values from FB engine:
+    loadSettings(mEngineWrapper.settings());
+
+//    model->appendDataFormItem(mDisplayModeItem);
+//    model->appendDataFormItem(mFileViewItem);
+//    model->appendDataFormItem(mShowDirectoryInfoItem);
+//    model->appendDataFormItem(mShowAssociatedIconsItem);
+//    model->appendDataFormItem(mRememberFolderOnExitItem);
+//    model->appendDataFormItem(mRememberLastFolderItem);
+//    model->appendDataFormItem(mShowToolbarItem);
+
+    model->appendDataFormItem(mSupportNetDrivesItem);
+    model->appendDataFormItem(mBypassPlatformSecurityItem);
+    model->appendDataFormItem(mUnlockFilesViaSBItem);
+    model->appendDataFormItem(mIgnoreProtectionAttributesItem);
+    model->appendDataFormItem(mNoROAttributeCopyFromZItem);
+
+    mForm->setModel(model);
+
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
+    layout->addItem(mForm);
+    setLayout(layout);
+}
+
+void FbSettingsView::createToolbar()
+{
+    HbToolBar *toolBar = new HbToolBar(this);
+    HbAction *acceptAction = new HbAction(acceptActionText);
+    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
+    toolBar->addAction(acceptAction);
+
+    HbAction *rejectAction = new HbAction(rejectActionText);
+    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
+    toolBar->addAction(rejectAction);
+
+    setToolBar(toolBar);
+}
+
+/**
+  Set form item values from settings \a settings.
+ */
+void FbSettingsView::loadSettings(const FileBrowserSettings &settings)
+{
+//    mDisplayModeItem->setContentWidgetData("text", settings.displayMode());
+//    mFileViewItem->setContentWidgetData("text", settings.fileViewMode());
+//    mShowDirectoryInfoItem->setContentWidgetData("text", settings.showSubDirectoryInfo());
+//    mShowAssociatedIconsItem->setContentWidgetData("text", settings.showAssociatedIcons());
+//    mRememberFolderOnExitItem->setContentWidgetData("text", settings.rememberFolderSelection());
+//    mRememberLastFolderItem->setContentWidgetData("text", settings.rememberLastPath());
+//    mShowToolbarItem->setContentWidgetData("text", settings.enableToolbar());
+
+    mSupportNetDrivesItem->setContentWidgetData("text", settings.supportNetworkDrives() ? YesText : NoText);
+    mSupportNetDrivesItem->setContentWidgetData("additionalText", !settings.supportNetworkDrives() ? YesText : NoText);
+
+    mBypassPlatformSecurityItem->setContentWidgetData("text", settings.bypassPlatformSecurity() ? YesText : NoText);
+    mBypassPlatformSecurityItem->setContentWidgetData("additionalText", !settings.bypassPlatformSecurity() ? YesText : NoText);
+
+    mUnlockFilesViaSBItem->setContentWidgetData("text", settings.removeFileLocks() ? YesText : NoText);
+    mUnlockFilesViaSBItem->setContentWidgetData("additionalText", !settings.removeFileLocks() ? YesText : NoText);
+
+    mIgnoreProtectionAttributesItem->setContentWidgetData("text", settings.ignoreProtectionsAttributes() ? YesText : NoText);
+    mIgnoreProtectionAttributesItem->setContentWidgetData("additionalText", !settings.ignoreProtectionsAttributes() ? YesText : NoText);
+
+    mNoROAttributeCopyFromZItem->setContentWidgetData("text", settings.removeROMWriteProrection() ? YesText : NoText);
+    mNoROAttributeCopyFromZItem->setContentWidgetData("additionalText", !settings.removeROMWriteProrection() ? YesText : NoText);
+}
+
+/**
+  Store form item data into \a settings
+ */
+void FbSettingsView::saveSettings(FileBrowserSettings &settings)
+{
+//    settings.setDisplayMode(mDisplayModeItem->contentWidgetData("text").toInt());
+//    settings.setFileViewMode(mFileViewItem->contentWidgetData("text").toInt());
+//    settings.setShowSubDirectoryInfo(mShowDirectoryInfoItem->contentWidgetData("text").toBool());
+//    settings.setShowAssociatedIcons(mShowAssociatedIconsItem->contentWidgetData("text").toBool());
+//    settings.setRememberLastPath(mRememberFolderOnExitItem->contentWidgetData("text").toBool());
+//    //settings.setLastPath(mRememberLastFolderItem->contentWidgetData("text").toString());
+//    settings.setRememberFolderSelection(mRememberLastFolderItem->contentWidgetData("text").toBool());
+//    settings.setEnableToolbar(mShowToolbarItem->contentWidgetData("text").toBool());
+
+    settings.setSupportNetworkDrives(mSupportNetDrivesItem->contentWidgetData("text").toString() == YesText);
+    settings.setBypassPlatformSecurity(mBypassPlatformSecurityItem->contentWidgetData("text").toString() == YesText);
+    settings.setRemoveFileLocks(mUnlockFilesViaSBItem->contentWidgetData("text").toString() == YesText);
+    settings.setIgnoreProtectionsAttributes(mIgnoreProtectionAttributesItem->contentWidgetData("text").toString() == YesText);
+    settings.setRemoveROMWriteProrection(mNoROAttributeCopyFromZItem->contentWidgetData("text").toString() == YesText);
+}
+
+void FbSettingsView::constructMenu()
+{
+    
+}
+
+void FbSettingsView::accept()
+{
+    saveSettings(mEngineWrapper.settings());
+    mEngineWrapper.saveSettings();
+    emit finished(true);
+}
+
+void FbSettingsView::reject()
+{
+    emit finished(false);
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/filebrowser.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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 <HbApplication>
+#include <HbMainWindow>
+
+#include "fbmainwindow.h"
+
+
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    FbMainWindow window;
+    window.init();
+    int result = app.exec();
+
+    return result;
+}
--- a/filebrowser/ui/src/fileentry.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
-* Copyright (c) 2010 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 "fileentry.h"
-
-#include <hbextendedlocale.h>
-
-// ---------------------------------------------------------------------------
-
-FileEntry::FileEntry(TFileEntry aFileEntry)
-: mFileEntry(aFileEntry)
-{
-}
-
-// ---------------------------------------------------------------------------
-
-FileEntry::~FileEntry()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-QString FileEntry::fullName()
-{
-    return QString::fromUtf16(mFileEntry.iFullName.Ptr(), mFileEntry.iFullName.Length());
-}
-
-// ---------------------------------------------------------------------------
-
-QString FileEntry::path()
-{
-    return QString::fromUtf16(mFileEntry.iPath.Ptr(), mFileEntry.iPath.Length());
-}
-
-// ---------------------------------------------------------------------------
-
-int FileEntry::attributes()
-{
-    return mFileEntry.iEntry.iAtt;
-}
-
-QString FileEntry::attributesString()
-{
-    QString attributesString;
-    if (mFileEntry.iEntry.IsArchive()) {
-        attributesString.append("A");
-    } else {
-        attributesString.append("-");
-    }
-    if (mFileEntry.iEntry.IsHidden()) {
-        attributesString.append("H");
-    } else {
-        attributesString.append("-");
-    }
-    if (mFileEntry.iEntry.IsReadOnly()) {
-        attributesString.append("R");
-    } else {
-        attributesString.append("-");
-    }
-    if (mFileEntry.iEntry.IsSystem()) {
-        attributesString.append("S");
-    } else {
-        attributesString.append("-");
-    }
-
-    return attributesString;
-}
-
-// ---------------------------------------------------------------------------
-
-int FileEntry::size()
-{
-    return mFileEntry.iEntry.iSize;
-}
-
-// ---------------------------------------------------------------------------
-
-QString FileEntry::sizeString()
-{
-    QString sizeString;
-    if (size() < 1024) {
-        sizeString.append(QString::number(size()));
-        sizeString.append(" B");
-    } else if (size() < 1024*1024) {
-        qreal sizeKB = static_cast<qreal>(size() / 1024);
-        sizeString.append( QString::number(sizeKB, 'f',1));
-        sizeString.append(" kB");
-    } else {
-        qreal sizeMB = static_cast<qreal>(size() / (1024*1024));
-        sizeString.append( QString::number(sizeMB, 'f',1));
-        sizeString.append(" MB");
-    }
-    return sizeString;
-}
-
-// ---------------------------------------------------------------------------
-
-//QDateTime FileEntry::modified()
-//{
-//    QDateTime modified;
-//    TTime time1Jan1970UTC = TTime(_L("19700101:000000.000000"));
-//    TTimeIntervalSeconds intervalSeconds;
-//
-//    TTime entryModified = mFileEntry.iEntry.iModified;
-//
-//    TInt err = /*mFileEntry.iEntry.iModified*/ entryModified.SecondsFrom(time1Jan1970UTC, intervalSeconds);
-//    if (err == KErrNone) {
-//        quint32 secsSince1Jan1970UTC = intervalSeconds.Int();
-//        modified = QDateTime::fromTime_t(secsSince1Jan1970UTC);
-//        qDebug() << "QDateTime:: " << modified.toString();
-//        modified.setTimeSpec(Qt::LocalTime);
-//        qDebug() << "QDateTime:: " << modified.toString() << modified.toLocalTime().toString();
-//    }
-//    return modified;
-//}
-
-// ---------------------------------------------------------------------------
-
-QString FileEntry::modifiedString()
-{
-    // TODO use HbExtendedLocale to convert date and time
-//    QDateTime modifiedInLocalTime = modified();//.toLocalTime();
-//    HbExtendedLocale locale = HbExtendedLocale::system();
-//    QString date = locale.format(modifiedInLocalTime.date(), r_qtn_date_usual);
-//    QString time = locale.format(modifiedInLocalTime.time(), r_qtn_time_usual);
-//
-//    return date + " " + time;
-    QString modifiedString;
-    TTime entryModified = mFileEntry.iEntry.iModified;
-    RTz Tz;
-    TInt err = Tz.Connect();
-    if ( err == KErrNone && Tz.ConvertToLocalTime( entryModified ) == KErrNone )
-    {
-        entryModified = mFileEntry.iEntry.iModified;
-        TBuf<128> extraData;
-        _LIT(KCurrentDate,"%D%M%*Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
-        entryModified.FormatL(extraData, KCurrentDate);
-        modifiedString = QString::fromUtf16(extraData.Ptr(), extraData.Length());
-    }
-    Tz.Close();
-
-    return modifiedString;
-}
-
-// ---------------------------------------------------------------------------
-
-//int FileEntry::Uid(int id)
-//{
-//    return id;//mFileEntry.iEntry.iType[id];
-//}
-
-// ---------------------------------------------------------------------------
-
-bool FileEntry::isDir()
-{
-    return mFileEntry.iEntry.IsDir();
-}
-
-// ---------------------------------------------------------------------------
-
-
-QString FileEntry::name()
-{
-    return QString::fromUtf16(mFileEntry.iEntry.iName.Ptr(), mFileEntry.iEntry.iName.Length());
-}
-
-// ---------------------------------------------------------------------------
-
-int FileEntry::dirEntries()
-{
-    return mFileEntry.iDirEntries;
-}
-
-// ---------------------------------------------------------------------------
-
-QString FileEntry::dirEntriesString()
-{
-    QString dirEntriesString;
-    dirEntriesString.append(QString::number(dirEntries()));
-    if (dirEntries() == 1) {
-        dirEntriesString.append(" entry");
-    } else {
-        dirEntriesString.append(" entries");
-    }
-    return dirEntriesString;
-}
-
-// ---------------------------------------------------------------------------
-
-int FileEntry::iconId()
-{
-    return mFileEntry.iIconId;
-}
-
-// ---------------------------------------------------------------------------
--- a/filebrowser/ui/src/main.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2010 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 <HbApplication>
-#include <HbMainWindow>
-
-#include "fbmainwindow.h"
-
-
-int main(int argc, char *argv[])
-{
-    HbApplication app(argc, argv);
-    FbMainWindow window;
-    window.init();
-    int result = app.exec();
-
-    return result;
-}
--- a/filebrowser/ui/src/notifications.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/src/notifications.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -38,7 +38,7 @@
 void Notifications::showAboutNote()
 {
     showMessageBox(HbMessageBox::MessageTypeInformation,
-                   "Version 5.1.0 - 18th June 2010. Copyright © 2010 Nokia Corporation"
+                   "Version 5.1.1 - 26th July 2010. Copyright © 2010 Nokia Corporation"
                         "and/or its subsidiary(-ies). All rights reserved."
                         "Licensed under Eclipse Public License v1.0.",
                    "About File Browser"
--- a/filebrowser/ui/src/searchview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/*
-* Copyright (c) 2010 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 "searchview.h"
-#include "enginewrapper.h"
-#include "notifications.h"
-
-#include <HbView>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormModelItem>
-#include <HbAction>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbDialog>
-#include <HbToolBar>
-#include <HbProgressDialog>
-
-#include <QtGui>
-#include <QDir>
-#include <QFileInfo>
-
-const QStringList RECURSEMODES = (QStringList() << "Non-recursive" << "Recursive");
-const QString acceptActionText = "Search";
-const QString rejectActionText = "Cancel";
-
-
-SearchView::SearchView(EngineWrapper &engineWrapper)
-    : mEngineWrapper(engineWrapper),
-    mAttributes(),
-    mResults(),
-    mForm(0),
-    mSearchFileNameItem(0),
-    mWildCardItem(0),
-    mHasString(0),
-    mRecurse(0),
-    mMinSize(0),
-    mMaxSize(0),
-    mMinDate(0),
-    mMaxDate(0),
-    mPath(),
-    mProgressDialog(0)
-{
-    // Set title and add this view to main window
-    setTitle("Search");
-
-    // Override back navigation action
-    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
-    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
-    setNavigationAction(leaveViewAction);
-
-    initDataForm();
-    createToolbar();
-}
-
-SearchView::~SearchView() 
-{
-}
-
-void SearchView::initDataForm() {
-    mForm = new HbDataForm(/*HbFormView::ModeEdit,*/ this);
-    HbDataFormModel *model = new HbDataFormModel();
-
-    mSearchFileNameItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mSearchFileNameItem->setLabel("Search dir: ");
-
-    mWildCardItem = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mWildCardItem->setLabel("Wildcards: ");
-
-    mHasString = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mHasString->setLabel("Has string: ");
-
-    mRecurse = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
-    mRecurse->setLabel("Recurse: ");
-    mRecurse->setContentWidgetData("items", RECURSEMODES);
-
-    mMinSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mMinSize->setLabel("Min size: ");
-
-    mMaxSize = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mMaxSize->setLabel("Max size: ");
-
-    mMinDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mMinDate->setLabel("Min date: ");
-    mMinDate->setContentWidgetData("text", "01/01/1980");
-
-    mMaxDate = new HbDataFormModelItem(HbDataFormModelItem::TextItem);
-    mMaxDate->setLabel("Max date: ");
-    mMaxDate->setContentWidgetData("text", "31/12/2060");
-
-    model->appendDataFormItem(mSearchFileNameItem);
-    model->appendDataFormItem(mWildCardItem);
-    model->appendDataFormItem(mHasString);
-    model->appendDataFormItem(mRecurse);
-    model->appendDataFormItem(mMinSize);
-    model->appendDataFormItem(mMaxSize);
-    model->appendDataFormItem(mMinDate);
-    model->appendDataFormItem(mMaxDate);
-    mForm->setModel(model);
-
-    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
-    layout->addItem(mForm);
-    setLayout(layout);
-}
-
-void SearchView::createToolbar()
-{
-    HbToolBar *toolBar = new HbToolBar(this);
-    HbAction *acceptAction = new HbAction(acceptActionText);
-    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
-    toolBar->addAction(acceptAction);
-
-    HbAction *rejectAction = new HbAction(rejectActionText);
-    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
-    toolBar->addAction(rejectAction);
-
-    setToolBar(toolBar);
-}
-
-void SearchView::loadAttributes()
-{
-    // get settings from engine;
-    mAttributes = mEngineWrapper.getFileSearchAttributes();
-
-    // set data:
-    mSearchFileNameItem->setContentWidgetData("text", mPath);
-//    mSearchFileNameItem->setContentWidgetData("text", mAttributes.mSearchDir);
-    mWildCardItem->setContentWidgetData("text",mAttributes.mWildCards);
-    mHasString->setContentWidgetData("text", mAttributes.mTextInFile);
-
-    mRecurse->setContentWidgetData("selected",mAttributes.mRecurse);
-
-    mMinSize->setContentWidgetData("text",mAttributes.mMinSize);
-    mMaxSize->setContentWidgetData("text", mAttributes.mMaxSize);
-
-    mMinDate->setContentWidgetData("text", mAttributes.mMinDate);
-    mMaxDate->setContentWidgetData("text", mAttributes.mMaxDate);
-}
-
-/**
- * Reads form items and saves values of them into member variable mAttributes
- */
-void SearchView::readFormItems()
-{
-    mAttributes.mSearchDir  = mSearchFileNameItem->contentWidgetData("text").toString();
-    mAttributes.mWildCards  = mWildCardItem->contentWidgetData("text").toString();
-    mAttributes.mTextInFile = mHasString->contentWidgetData("text").toString();
-    mAttributes.mMinSize    = mMinSize->contentWidgetData("text").toInt();
-    mAttributes.mMaxSize    = mMaxSize->contentWidgetData("text").toInt();
-    mAttributes.mMinDate    = mMinDate->contentWidgetData("text").toDate();
-    mAttributes.mMaxDate    = mMaxDate->contentWidgetData("text").toDate();
-    mAttributes.mRecurse    = mRecurse->contentWidgetData("selected").toBool();
-}
-
-void SearchView::open(const QString &path)
-{   
-    mPath = path;
-    // load file search attribute values from FB engine:
-    loadAttributes();
-}
-
-void SearchView::startFileSearch()
-{
-    // save form data values and set them as search attributes into FB engine. 
-    readFormItems();
-    mEngineWrapper.setFileSearchAttributes(mAttributes);
-    
-    bool err = mEngineWrapper.searchFiles();
-
-    // show results of file search:
-    mResults = mEngineWrapper.getSearchResults();
-    fileSearchResults();
-}
-
-void SearchView::fileSearchResults()
-{
-    QString noteMsg("%1 entries found");
-    Notifications::showInformationNote(noteMsg.arg(mEngineWrapper.itemCount()), QString(""));
-}
-
-void SearchView::accept()
-{
-    startFileSearch();
-    emit finished(true);
-}
-
-void SearchView::reject()
-{
-    emit finished(false);
-}
--- a/filebrowser/ui/src/settingsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/*
-* Copyright (c) 2010 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 "settingsview.h"
-#include "enginewrapper.h"
-#include "filebrowsersettings.h"
-
-#include <HbView>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormModelItem>
-#include <HbAction>
-#include <HbToolBar>
-
-#include <QGraphicsLinearLayout>
-
-const QStringList DisplayModeModes = (QStringList() << "Full screen" << "Normal");
-const QStringList FileViewModes = (QStringList() << "Simple" << "Extended");
-const QStringList Modes = (QStringList() << "Yes" << "No");
-const QString YesText = QString("Yes");
-const QString NoText = QString("No");
-const QString acceptActionText = "OK";
-const QString rejectActionText = "Cancel";
-
-SettingsView::SettingsView(EngineWrapper &engineWrapper) :
-    mEngineWrapper(engineWrapper),
-    mForm(0),
-    mDisplayModeItem(0),
-    mFileViewItem(0),
-    mShowDirectoryInfoItem(0),
-    mShowAssociatedIconsItem(0),
-    mRememberFolderOnExitItem(0),
-    mRememberLastFolderItem(0),
-    mShowToolbarItem(0),
-    mSupportNetDrivesItem(0),
-    mBypassPlatformSecurityItem(0),
-    mUnlockFilesViaSBItem(0),
-    mIgnoreProtectionAttributesItem(0),
-    mNoROAttributeCopyFromZItem(0)
-{
-    setTitle("Settings");
-
-    // Override back navigation action
-    HbAction *leaveViewAction = new HbAction(Hb::BackNaviAction, this);
-    connect(leaveViewAction, SIGNAL(triggered()), this, SLOT(reject()));
-    setNavigationAction(leaveViewAction);
-
-    initDataForm();
-    createToolbar();
-}
-
-SettingsView::~SettingsView()
-{
-}
-
-void SettingsView::initDataForm()
-{
-    mForm = new HbDataForm(this);
-    HbDataFormModel *model = new HbDataFormModel();
-
-//    connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)),
-//            this, SLOT(toggleChange(QModelIndex, QModelIndex)));
-
-
-    // TODO to be done
-//    mDisplayModeItem = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
-//    mDisplayModeItem->setLabel("Display mode: ");
-//    mDisplayModeItem->setContentWidgetData("items", DisplayModeModes);
-//
-//    mFileViewItem = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem);
-//    mFileViewItem->setLabel("File view: ");
-//    mFileViewItem->setContentWidgetData("items", FileViewModes);
-//
-//    mShowDirectoryInfoItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-//    mShowDirectoryInfoItem->setLabel("Show directory info: ");
-//    mShowDirectoryInfoItem->setContentWidgetData(QString("text"), YesText);
-//    mShowDirectoryInfoItem->setContentWidgetData(QString("additionalText"), NoText);
-//
-//    mShowAssociatedIconsItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-//    mShowAssociatedIconsItem->setLabel("Show associated icons: ");
-//    mShowAssociatedIconsItem->setContentWidgetData(QString("text"), YesText);
-//    mShowAssociatedIconsItem->setContentWidgetData(QString("additionalText"), NoText);
-//
-//    mRememberFolderOnExitItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-//    mRememberFolderOnExitItem->setLabel("Remember folder on exit: ");
-//    mRememberFolderOnExitItem->setContentWidgetData(QString("text"), YesText);
-//    mRememberFolderOnExitItem->setContentWidgetData(QString("additionalText"), NoText);
-//
-//    mRememberLastFolderItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-//    mRememberLastFolderItem->setLabel("Remember last folder: ");
-//    mRememberLastFolderItem->setContentWidgetData(QString("text"), YesText);
-//    mRememberLastFolderItem->setContentWidgetData(QString("additionalText"), NoText);
-//
-//    mShowToolbarItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-//    mShowToolbarItem->setLabel("Show toolbar: ");
-//    mShowToolbarItem->setContentWidgetData(QString("text"), YesText);
-//    mShowToolbarItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    mSupportNetDrivesItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-    mSupportNetDrivesItem->setLabel("Support net drives: ");
-    mSupportNetDrivesItem->setContentWidgetData(QString("text"), YesText);
-    mSupportNetDrivesItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    mBypassPlatformSecurityItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-    mBypassPlatformSecurityItem->setLabel("Bypass plat.security: ");
-    mBypassPlatformSecurityItem->setContentWidgetData(QString("text"), YesText);
-    mBypassPlatformSecurityItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    mUnlockFilesViaSBItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-    mUnlockFilesViaSBItem->setLabel("Unlock files via SB: ");
-    mUnlockFilesViaSBItem->setContentWidgetData(QString("text"), YesText);
-    mUnlockFilesViaSBItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    mIgnoreProtectionAttributesItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-    mIgnoreProtectionAttributesItem->setLabel("Ign. protection atts: ");
-    mIgnoreProtectionAttributesItem->setContentWidgetData(QString("text"), YesText);
-    mIgnoreProtectionAttributesItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    mNoROAttributeCopyFromZItem = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem);
-    mNoROAttributeCopyFromZItem->setLabel("No RO-att copy from Z: ");
-    mNoROAttributeCopyFromZItem->setContentWidgetData(QString("text"), YesText);
-    mNoROAttributeCopyFromZItem->setContentWidgetData(QString("additionalText"), NoText);
-
-    // load file search attribute values from FB engine:
-    loadSettings(mEngineWrapper.settings());
-
-//    model->appendDataFormItem(mDisplayModeItem);
-//    model->appendDataFormItem(mFileViewItem);
-//    model->appendDataFormItem(mShowDirectoryInfoItem);
-//    model->appendDataFormItem(mShowAssociatedIconsItem);
-//    model->appendDataFormItem(mRememberFolderOnExitItem);
-//    model->appendDataFormItem(mRememberLastFolderItem);
-//    model->appendDataFormItem(mShowToolbarItem);
-
-    model->appendDataFormItem(mSupportNetDrivesItem);
-    model->appendDataFormItem(mBypassPlatformSecurityItem);
-    model->appendDataFormItem(mUnlockFilesViaSBItem);
-    model->appendDataFormItem(mIgnoreProtectionAttributesItem);
-    model->appendDataFormItem(mNoROAttributeCopyFromZItem);
-
-    mForm->setModel(model);
-
-    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical,this);
-    layout->addItem(mForm);
-    setLayout(layout);
-}
-
-void SettingsView::createToolbar()
-{
-    HbToolBar *toolBar = new HbToolBar(this);
-    HbAction *acceptAction = new HbAction(acceptActionText);
-    connect(acceptAction, SIGNAL(triggered()), this, SLOT(accept()));
-    toolBar->addAction(acceptAction);
-
-    HbAction *rejectAction = new HbAction(rejectActionText);
-    connect(rejectAction, SIGNAL(triggered()), this, SLOT(reject()));
-    toolBar->addAction(rejectAction);
-
-    setToolBar(toolBar);
-}
-
-/**
-  Set form item values from settings \a settings.
- */
-void SettingsView::loadSettings(const FileBrowserSettings &settings)
-{
-//    mDisplayModeItem->setContentWidgetData("text", settings.displayMode());
-//    mFileViewItem->setContentWidgetData("text", settings.fileViewMode());
-//    mShowDirectoryInfoItem->setContentWidgetData("text", settings.showSubDirectoryInfo());
-//    mShowAssociatedIconsItem->setContentWidgetData("text", settings.showAssociatedIcons());
-//    mRememberFolderOnExitItem->setContentWidgetData("text", settings.rememberFolderSelection());
-//    mRememberLastFolderItem->setContentWidgetData("text", settings.rememberLastPath());
-//    mShowToolbarItem->setContentWidgetData("text", settings.enableToolbar());
-
-    mSupportNetDrivesItem->setContentWidgetData("text", settings.supportNetworkDrives() ? YesText : NoText);
-    mSupportNetDrivesItem->setContentWidgetData("additionalText", !settings.supportNetworkDrives() ? YesText : NoText);
-
-    mBypassPlatformSecurityItem->setContentWidgetData("text", settings.bypassPlatformSecurity() ? YesText : NoText);
-    mBypassPlatformSecurityItem->setContentWidgetData("additionalText", !settings.bypassPlatformSecurity() ? YesText : NoText);
-
-    mUnlockFilesViaSBItem->setContentWidgetData("text", settings.removeFileLocks() ? YesText : NoText);
-    mUnlockFilesViaSBItem->setContentWidgetData("additionalText", !settings.removeFileLocks() ? YesText : NoText);
-
-    mIgnoreProtectionAttributesItem->setContentWidgetData("text", settings.ignoreProtectionsAttributes() ? YesText : NoText);
-    mIgnoreProtectionAttributesItem->setContentWidgetData("additionalText", !settings.ignoreProtectionsAttributes() ? YesText : NoText);
-
-    mNoROAttributeCopyFromZItem->setContentWidgetData("text", settings.removeROMWriteProrection() ? YesText : NoText);
-    mNoROAttributeCopyFromZItem->setContentWidgetData("additionalText", !settings.removeROMWriteProrection() ? YesText : NoText);
-}
-
-/**
-  Store form item data into \a settings
- */
-void SettingsView::saveSettings(FileBrowserSettings &settings)
-{
-//    settings.setDisplayMode(mDisplayModeItem->contentWidgetData("text").toInt());
-//    settings.setFileViewMode(mFileViewItem->contentWidgetData("text").toInt());
-//    settings.setShowSubDirectoryInfo(mShowDirectoryInfoItem->contentWidgetData("text").toBool());
-//    settings.setShowAssociatedIcons(mShowAssociatedIconsItem->contentWidgetData("text").toBool());
-//    settings.setRememberLastPath(mRememberFolderOnExitItem->contentWidgetData("text").toBool());
-//    //settings.setLastPath(mRememberLastFolderItem->contentWidgetData("text").toString());
-//    settings.setRememberFolderSelection(mRememberLastFolderItem->contentWidgetData("text").toBool());
-//    settings.setEnableToolbar(mShowToolbarItem->contentWidgetData("text").toBool());
-
-    settings.setSupportNetworkDrives(mSupportNetDrivesItem->contentWidgetData("text").toString() == YesText);
-    settings.setBypassPlatformSecurity(mBypassPlatformSecurityItem->contentWidgetData("text").toString() == YesText);
-    settings.setRemoveFileLocks(mUnlockFilesViaSBItem->contentWidgetData("text").toString() == YesText);
-    settings.setIgnoreProtectionsAttributes(mIgnoreProtectionAttributesItem->contentWidgetData("text").toString() == YesText);
-    settings.setRemoveROMWriteProrection(mNoROAttributeCopyFromZItem->contentWidgetData("text").toString() == YesText);
-}
-
-void SettingsView::constructMenu()
-{
-    
-}
-
-void SettingsView::accept()
-{
-    saveSettings(mEngineWrapper.settings());
-    mEngineWrapper.saveSettings();
-    emit finished(true);
-}
-
-void SettingsView::reject()
-{
-    emit finished(false);
-}
-
-// End of file
--- a/filebrowser/ui/ui.pro	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/ui.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -21,39 +21,45 @@
 load(hb.prf)
 symbian:CONFIG -= symbian_i18n
 
-HEADERS += ./inc/fbmainwindow.h \
+HEADERS += ./inc/menuaction.h \
+           ./inc/enginewrapper.h \
+           ./inc/fbmainwindow.h \
            ./inc/fbdrivelistviewitem.h \
            ./inc/fbdrivemodel.h \
+           ./inc/fbdriveentry.h \
            ./inc/fbdriveview.h \
            ./inc/fbfilelistviewitem.h \
            ./inc/fbfilemodel.h \
+           ./inc/fbfileentry.h \
            ./inc/fbfileview.h \
            ./inc/filebrowsersortfilterproxymodel.h \
-           ./inc/menuaction.h \
            ./inc/filebrowsersettings.h \
-           ./inc/settingsview.h \
-           ./inc/editorview.h \
-           ./inc/searchview.h \
-           ./inc/enginewrapper.h \
-           ./inc/notifications.h \
-           ./inc/fileentry.h \
-           ./inc/driveentry.h
-SOURCES += ./src/main.cpp \
+           ./inc/fbsettingsview.h \
+           ./inc/fbeditorview.h \
+           ./inc/fbsearchview.h \
+           ./inc/fbattributesview.h \
+           ./inc/fbfolderselectiondialog.h \
+           ./inc/fbfolderselectorwrapper.h \
+           ./inc/notifications.h
+SOURCES += ./src/filebrowser.cpp \
+           ./src/enginewrapper.cpp \
            ./src/fbmainwindow.cpp \
            ./src/fbdrivelistviewitem.cpp \
            ./src/fbdrivemodel.cpp \
+           ./src/fbdriveentry.cpp \
            ./src/fbdriveview.cpp \
            ./src/fbfilelistviewitem.cpp \
            ./src/fbfilemodel.cpp \
+           ./src/fbfileentry.cpp \
            ./src/fbfileview.cpp \
            ./src/filebrowsersortfilterproxymodel.cpp \
-           ./src/settingsview.cpp \
-           ./src/editorview.cpp \
-           ./src/searchview.cpp \
-           ./src/enginewrapper.cpp \
-           ./src/notifications.cpp \
-           ./src/fileentry.cpp \
-           ./src/driveentry.cpp
+           ./src/fbsettingsview.cpp \
+           ./src/fbeditorview.cpp \
+           ./src/fbsearchview.cpp \
+           ./src/fbattributesview.cpp \
+           ./src/fbfolderselectiondialog.cpp \
+           ./src/fbfolderselectorwrapper.cpp \
+           ./src/notifications.cpp
 RESOURCES += ./ui.qrc
 
 symbian {
@@ -70,7 +76,6 @@
             -lfbscli \
             -lImageConversion \
             -lPlatformEnv \
-            -leikcoctl \
             -lapgrfx \
             -lefsrv \
             -lbafl \
@@ -78,9 +83,6 @@
             -lmediaclientaudio \
             -lestor \
             -lgdi \
-            -leikctl \
-            -leikcdlg \
-            -leikdlg \
             -legul \
             -lsendui \
             -lmsgs \
@@ -104,12 +106,14 @@
                ../engine/FB.hrh \
                ../engine/FBStd.h \
                ../engine/FBTraces.h \
+               ../engine/FBFolderSelector.h \
             #ifndef FILEBROWSER_LITE
-               ../fileopclient\inc\FBFileOpClient.h
+               ../fileopclient/inc/FBFileOpClient.h
             #endif
     SOURCES += ../engine/engine.cpp \
                ../engine/FBFileUtils.cpp \
-               ../engine/FBFileOps.cpp
+               ../engine/FBFileOps.cpp \
+               ../engine/FBFolderSelector.cpp
     RSS_RULES += "group_name = \"RnD Tools\";"
     TARGET.CAPABILITY = NetworkServices LocalServices CAP_APPLICATION AllFiles DiskAdmin
     TARGET.UID3 = 0xE85157B0
--- a/filebrowser/ui/ui.qrc	Mon Aug 23 15:50:54 2010 +0300
+++ b/filebrowser/ui/ui.qrc	Fri Sep 03 17:11:21 2010 +0300
@@ -3,5 +3,6 @@
         <file alias="qgn_indi_tb_filebrowser_folder_parent.svg" >../icons/qgn_indi_tb_filebrowser_folder_parent.svg</file>
         <file alias="qgn_indi_tb_filebrowser_find.svg" >../icons/qgn_indi_tb_filebrowser_find.svg</file>
         <file alias="qgn_indi_tb_filebrowser_selection_active.svg" >../icons/qgn_indi_tb_filebrowser_selection_active.svg</file>
+        <file alias="qtg_indi_status_back.svg" >../icons/qtg_indi_status_back.svg</file>
     </qresource>
 </RCC>
--- a/layers.sysdef.xml	Mon Aug 23 15:50:54 2010 +0300
+++ b/layers.sysdef.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -10,7 +10,7 @@
 				<unit unitID="tools.screengrabberqt" mrp="" bldFile="&layer_real_source_path;/screengrabber" name="screengrabber" proFile="screengrabber.pro" />
 			</module>
 			<module name="perfmon">
-				<unit unitID="tools.perfmonqt" mrp="" bldFile="&layer_real_source_path;/perfmon" name="perfmon" proFile="perfmon.pro" />
+				<unit unitID="tools.perfmonqt" mrp="" bldFile="&layer_real_source_path;/perfapps/perfmon" name="perfmon" proFile="perfmon.pro" />
 			</module>
 			<module name="creator">
 				<unit unitID="tools.creatorqt" mrp="" bldFile="&layer_real_source_path;/creator" name="creator" proFile="creator.pro" />
@@ -25,10 +25,10 @@
 				<unit unitID="tools.loadgenqt" mrp="" bldFile="&layer_real_source_path;/loadgen" name="loadgen" proFile="loadgen.pro" />
 			</module>
 			<module name="memspyui">
-				<unit unitID="tools.memspyuiqt" mrp="" bldFile="&layer_real_source_path;/memspyui" name="memspyui" proFile="memspyui.pro" />
+				<unit unitID="tools.memspyuiqt" mrp="" bldFile="&layer_real_source_path;/perfapps/memspyui" name="memspyui" proFile="memspyui.pro" />
 			</module>
 			<module name="piprofilerui">
-				<unit unitID="tools.piprofilerui" mrp="" bldFile="&layer_real_source_path;/piprofilerui" name="piprofilerui" proFile="piprofilerui.pro" />
+				<unit unitID="tools.piprofilerui" mrp="" bldFile="&layer_real_source_path;/perfapps/piprofilerui" name="piprofilerui" proFile="piprofilerui.pro" />
 			</module>
     </layer>
   </systemModel>
--- a/loadgen/engine/inc/loadgen_applications.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_applications.h	Fri Sep 03 17:11:21 2010 +0300
@@ -53,7 +53,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TApplicationsAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TApplicationsAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TApplicationsAttributes& aAttributes) { iAttributes = aAttributes; }
 	
 
 public:  // New static methods
--- a/loadgen/engine/inc/loadgen_bluetooth.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_bluetooth.h	Fri Sep 03 17:11:21 2010 +0300
@@ -50,7 +50,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TBluetoothAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TBluetoothAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TBluetoothAttributes& aAttributes) { iAttributes = aAttributes; }
     
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- a/loadgen/engine/inc/loadgen_cpuload.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_cpuload.h	Fri Sep 03 17:11:21 2010 +0300
@@ -51,7 +51,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TCPULoadAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TCPULoadAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TCPULoadAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadgen/engine/inc/loadgen_httpreceiver.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,183 @@
+
+
+#ifndef CHTTPReceiver_H
+#define CHTTPReceiver_H
+
+#include <http.h>
+#include <mhttpdatasupplier.h>
+#include <mhttptransactioncallback.h>
+#include <Es_sock.h>
+#include <chttpformencoder.h> 
+
+// CONSTANTS
+// None.
+
+// MACROS
+#ifdef _DEBUG
+#define TRACE( text )         RDebug::Printf( text );
+#define TRACE2( text, arg )   RDebug::Printf( text, arg );
+#else
+#define TRACE( text )
+#define TRACE2( text, arg )
+#endif
+
+// DATA TYPES
+// None.
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+// None.
+
+class MHTTPRecvObserver
+    {
+    public:
+       
+        /**
+        * Callback for HTTP response received.
+        * @param aStatus Status code.
+        * @return None.
+        */
+        virtual void HTTPFileReceived( TInt aStatus ) = 0;        
+    };
+
+// CLASS DECLARATION
+
+class CHTTPReceiver
+        : public CBase,
+          public MHTTPTransactionCallback
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CHTTPReceiver* NewL( MHTTPRecvObserver& aObserver );
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CHTTPReceiver* NewLC( MHTTPRecvObserver& aObserver );        
+        
+        /**
+        * Destructor.
+        */        
+        virtual ~CHTTPReceiver();
+      
+        /**
+        * Cancels the current HTTP transaction.
+        */   
+        void CancelTransaction();
+
+        /**
+        * Opens a connection to destination aUri and sends data using HTTP GET. 
+        * Callbacks via MHTTPRecvObserver::HTTPFileReceived
+        * Leaves with KErrNotReady If network is not available
+        * @param aUri Destination URL, if http scheme not specified, prepends scheme.       
+        */                                 
+        void SendHTTPGetL( const TDesC8& aUri );
+        
+    protected: // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */
+        CHTTPReceiver( MHTTPRecvObserver& aObserver );
+
+        /**
+        * Symbian 2nd phase constructor.
+        */
+        void ConstructL();
+      
+        /**
+        * Sets HTTP header fields.
+        * @param aHeaders HTTP headers.
+        * @param aHdrField Header field to set.
+        * @param aHdrValue Header field value.
+        */   
+        void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField,
+						const TDesC8& aHdrValue);
+
+		//From MHTTPTransactionCallback
+        /**
+        * Called by HTTP framework when HTTP events occur.
+        * @param aTransaction The transaction that the event has occurred on.
+        * @param aEvent The event that has occurred.
+        */           
+		void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
+		
+        /**
+        * Called when RunL leaves from a transaction event.
+        * @param aError The leave code that RunL left with.
+        * @param aTransaction The transaction that was being processed.
+        * @param aEvent The event that was being processed.
+        * @return KErrNone.
+        */   
+		TInt MHFRunError(	TInt aError,
+						RHTTPTransaction aTransaction,
+						const THTTPEvent& aEvent);
+						
+		/**
+        * Starts HTTP connection.
+        */   
+       	void SetupConnectionL();
+        
+        /**
+        * Utility:Checks for http uri scheme and prepends if not exists to the url
+        * @param aUri UriParser.
+        * @param aURL URL to check for.
+        * @return None 
+        */
+        void CheckForHTTPSchemeL(TUriParser8& aUri, const TDesC8& aURL);
+
+        /**
+        * Utility: finish receiving, call calback HTTPFileReceived()
+        * @param aError to be signaled
+        * @return None 
+        */
+        void Finalize();
+        
+    private:
+      	
+        // Request uri, might need to prepend http scheme.
+        HBufC8*					iUrl;
+        
+        // RSocketServ object.
+	    RSocketServ 			iSocketServ;
+        
+        // RConnection object.
+	    RConnection 			iConnection;
+	    
+	    // HTTP session.
+		RHTTPSession			iSession;
+		
+		// HTTP transaction used for request.
+		RHTTPTransaction		iTransaction;
+	
+		// Observer to notify.
+		MHTTPRecvObserver&	    iObserver;	
+
+		// ETrue if transaction in progress.
+		TBool					iRunning;	
+		
+		// ETrue if connection set up done.
+		TBool 					iConnectionSetupDone;                        
+		
+		// Response Status 
+		TInt                    iResponseStatus;
+		
+#ifdef _DEBUG
+		// Http response body written to file
+		RFile 					iResponseFile;
+		
+		// RFs to be used for writing to iResponseFile
+		RFs                     iFs;
+#endif
+		
+};
+    
+#endif
+
+// CHTTPReceiver_H
+// End of File	
--- a/loadgen/engine/inc/loadgen_keypress.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_keypress.h	Fri Sep 03 17:11:21 2010 +0300
@@ -51,7 +51,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TKeyPressAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TKeyPressAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TKeyPressAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- a/loadgen/engine/inc/loadgen_memoryeat.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_memoryeat.h	Fri Sep 03 17:11:21 2010 +0300
@@ -52,7 +52,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TMemoryEatAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TMemoryEatAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TMemoryEatAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- a/loadgen/engine/inc/loadgen_messages.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_messages.h	Fri Sep 03 17:11:21 2010 +0300
@@ -52,7 +52,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TMessageAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TMessageAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TMessageAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction( TAny* aThreadArg );
--- a/loadgen/engine/inc/loadgen_netconn.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_netconn.h	Fri Sep 03 17:11:21 2010 +0300
@@ -22,8 +22,7 @@
 // INCLUDES
 #include <e32std.h>
 #include <e32base.h>
-//#include <DownloadMgrClient.h> 
-//#include <downloadcontroller.h>
+#include "loadgen_httpreceiver.h"
 
 #include "loadgen_loadbase.h"
 #include "loadgen_loadattributes.h"
@@ -52,7 +51,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TNetConnAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TNetConnAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TNetConnAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
@@ -66,7 +65,7 @@
     };
 
 
-class CNetConnManager : public CActive, public MHttpDownloadMgrObserver
+class CNetConnManager : public CActive, public MHTTPRecvObserver
     {
 public:
     static CNetConnManager* NewL(TNetConnAttributes& aAttributes);
@@ -84,15 +83,15 @@
     static TInt PeriodicTimerCallBack(TAny* aAny);
     void StartDownloadL();
 
-private: // MHttpDownloadMgrObserver
-    void HandleDMgrEventL(RHttpDownload& aDownload, THttpDownloadEvent aEvent); 
+private: // MHTTPRecvObserver
+    void HTTPFileReceived( TInt aStatus );
 public:
     inline CPeriodic* PeriodicTimer() { return iPeriodicTimer; }
 
 private:
     TNetConnAttributes&     iAttributes;    
     CPeriodic*              iPeriodicTimer;
-    RHttpDownloadMgr        iDownloadMgr;
+    CHTTPReceiver*          iHTTPReceiver;
     }; 
 
 #endif
--- a/loadgen/engine/inc/loadgen_phonecall.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_phonecall.h	Fri Sep 03 17:11:21 2010 +0300
@@ -53,7 +53,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TPhoneCallAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TPhoneCallAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TPhoneCallAttributes& aAttributes) { iAttributes = aAttributes; }
 	
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- a/loadgen/engine/inc/loadgen_photocapture.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_photocapture.h	Fri Sep 03 17:11:21 2010 +0300
@@ -51,7 +51,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TPhotoCaptureAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TPhotoCaptureAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TPhotoCaptureAttributes& aAttributes) { iAttributes = aAttributes; }
 
 
 public:  // New static methods
--- a/loadgen/engine/inc/loadgen_pointerevent.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_pointerevent.h	Fri Sep 03 17:11:21 2010 +0300
@@ -51,7 +51,7 @@
     virtual void Close();
     virtual TPtrC Description();
     inline TPointerEventAttributes& Attributes() { return iAttributes; }
-	inline void SetAttributes(TPointerEventAttributes aAttributes) { iAttributes = aAttributes; }
+	inline void SetAttributes(const TPointerEventAttributes& aAttributes) { iAttributes = aAttributes; }
 
 public:  // New static methods
     static TInt ThreadFunction(TAny* aThreadArg);
--- a/loadgen/engine/src/loadgen_applications.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/src/loadgen_applications.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -459,9 +459,6 @@
         {
         TApaAppInfo appInfo;
         User::LeaveIfError( iLs.GetAppInfo( appInfo, iCurrentAppUid ) );
-        TApaAppCapabilityBuf capBuf;
-        User::LeaveIfError( iLs.GetAppCapability( capBuf, iCurrentAppUid ) );
-        TApaAppCapability& caps = capBuf();
 
         CApaCommandLine* cmdLine=CApaCommandLine::NewLC();
         cmdLine->SetExecutableNameL( appInfo.iFullName );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadgen/engine/src/loadgen_httpreceiver.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,353 @@
+
+#include <commdb.h>
+#include <commdbconnpref.h>
+#include "loadgen_httpreceiver.h"
+
+// CONSTANTS
+_LIT8( KHttpScheme, "http" );
+_LIT8( KSchemeAddon, "://" );
+// This client accepts all content types.
+_LIT8(KAccept, "*/*");
+
+CHTTPReceiver* CHTTPReceiver::NewL( MHTTPRecvObserver& aObserver )
+	{
+	CHTTPReceiver* self = CHTTPReceiver::NewLC( aObserver );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+CHTTPReceiver* CHTTPReceiver::NewLC( MHTTPRecvObserver& aObserver )
+	{
+	CHTTPReceiver* self = new (ELeave)CHTTPReceiver( aObserver );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+	}
+
+CHTTPReceiver::CHTTPReceiver( MHTTPRecvObserver& aObserver ) :
+	iObserver(aObserver), iRunning(EFalse), iConnectionSetupDone(EFalse)
+	{
+	}
+
+void CHTTPReceiver::ConstructL()
+	{
+#ifdef _DEBUG
+    User::LeaveIfError( iFs.Connect() );
+#endif
+	}
+
+CHTTPReceiver::~CHTTPReceiver()
+	{
+	TRACE( "Entry: CHTTPReceiver::~CHTTPReceiver" );
+
+	CancelTransaction();
+
+	TRAP_IGNORE( iSession.DisconnectL() );
+	iSession.Close();
+	iConnection.Stop();
+	iConnection.Close();
+	iSocketServ.Close();
+    
+	TRACE( "Entry: CHTTPReceiver::~CHTTPReceiver - delete iUrl" );
+	delete iUrl;
+
+#ifdef _DEBUG
+	iFs.Close();
+#endif
+	TRACE( "Exit: CHTTPReceiver::~CHTTPReceiver" );
+	}
+
+void CHTTPReceiver::CancelTransaction()
+	{
+	if ( !iRunning)
+		return;
+
+	TRACE( "Entry: CHTTPReceiver::CancelTransaction" );
+
+	if ( iRunning)
+		{
+		iTransaction.Close();
+		iRunning = EFalse;
+		}
+
+	TRACE( "Exit: CHTTPReceiver::CancelTransaction" );
+	}
+
+// ----------------------------------------------------------------------------
+// CHTTPReceiver::SendHTTPGetL()
+//
+// Start a new HTTP GET transaction.
+// ----------------------------------------------------------------------------
+void CHTTPReceiver::SendHTTPGetL( const TDesC8& aURL )
+	{
+	TRACE( "Entry: CHTTPReceiver::SendHTTPGetL" );
+	
+	iResponseStatus = KErrGeneral;
+	
+#ifdef _DEBUG
+    iResponseFile.Replace( iFs, _L("C:\\Data\\loadgen.htm"), EFileWrite );
+#endif
+    
+	SetupConnectionL();	
+	
+	// Parse string to URI (as defined in RFC2396)
+	TUriParser8 uri;
+	
+	CheckForHTTPSchemeL(uri, aURL);
+
+	RStringF method = iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable());
+	CleanupClosePushL( method );
+
+	iTransaction = iSession.OpenTransactionL(uri, *this, method);
+
+	// Set headers for request: accepted content type
+	RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
+	SetHeaderL(hdr, HTTP::EAccept, KAccept);
+
+	iTransaction.SubmitL();
+
+	iRunning = ETrue;
+	CleanupStack::PopAndDestroy();
+	TRACE( "Exit: CHTTPReceiver::SendHTTPGetL" );
+	return;
+	}
+
+void CHTTPReceiver::CheckForHTTPSchemeL(TUriParser8& aUri, const TDesC8& aURL)
+	{
+	if( iUrl )
+	    {
+	    delete iUrl;
+	    iUrl = NULL;
+	    }
+	
+	iUrl = aURL.AllocL();
+	aUri.Parse( *iUrl );
+
+	TPtrC8 scheme( aUri.Extract (EUriScheme) );
+
+	// unsupported or no scheme in url.
+	// Insert 'http://' to the beginning of it.
+	if ( scheme != KHttpScheme )
+		{
+		HBufC8* tempBuf = HBufC8::NewL( KHttpScheme().Length() + KSchemeAddon().Length() + aURL.Length() );
+		CleanupStack::PushL( tempBuf );
+		tempBuf->Des().Append( KHttpScheme );
+		tempBuf->Des().Append( KSchemeAddon );
+		tempBuf->Des().Append( aURL );
+
+		if( iUrl )
+		    {
+            delete iUrl;
+            iUrl = NULL;
+		    }
+		iUrl = tempBuf;
+		aUri.Parse( *iUrl );
+		CleanupStack::PopAndDestroy( tempBuf );
+		}
+	}
+
+// Used to set header value to HTTP request
+void CHTTPReceiver::SetHeaderL (RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
+	{
+	RStringF valStr = iSession.StringPool().OpenFStringL (aHdrValue);
+	CleanupClosePushL (valStr);
+	THTTPHdrVal val(valStr);
+	aHeaders.SetFieldL (iSession.StringPool().StringF (aHdrField, RHTTPSession::GetTable ()), val);
+	CleanupStack::PopAndDestroy (); // valStr
+	}
+
+// Inherited from MHTTPTransactionCallback
+// Called by framework to pass transaction events.
+// ----------------------------------------------------------------------------
+void CHTTPReceiver::MHFRunL( RHTTPTransaction aTransaction,	const THTTPEvent& aEvent )
+	{
+	TRACE( "Entry: CHTTPReceiver::MHFRunL" );
+	TRACE2( "Entry: CHTTPReceiver::MHFRunL <%d>", aEvent.iStatus );
+
+	// state check
+	if ( !iRunning )
+		{
+		TRACE( "Exit1: CHTTPReceiver::MHFRunL: recv in wrong state" );
+		return;
+		}
+
+	switch ( aEvent.iStatus )
+		{
+	case THTTPEvent::EGotResponseHeaders:
+		{
+		TRACE( "Entry: CHTTPReceiver::MHFRunL EGotResponseHeaders" );
+		// Get HTTP status code from header (e.g. 200)
+		RHTTPResponse resp = aTransaction.Response();
+		iResponseStatus = resp.StatusCode();
+		}
+		break;
+
+	case THTTPEvent::EGotResponseBodyData:
+		{
+		// Get the body data supplier
+		TRACE( "Entry: CHTTPReceiver::MHFRunL EGotResponseBodyData" );
+		MHTTPDataSupplier* body = aTransaction.Response().Body ();
+		TPtrC8 dataChunk;
+		body->GetNextDataPart ( dataChunk );
+#ifdef _DEBUG
+		if ( dataChunk.Length() )
+		    {
+			iResponseFile.Write( dataChunk );
+		    }
+#endif
+		body->ReleaseData ();
+		}
+		break;
+
+	case THTTPEvent::EResponseComplete:
+		{
+		// Indicates that header & body of response is completely received.
+		// Notify Observer
+		TRACE( "Entry: CHTTPReceiver::MHFRunL EResponseComplete" );
+		}
+		break;
+
+	case THTTPEvent::ESucceeded:
+		{
+		// Transaction can be closed now. It's not needed anymore.
+		TRACE( "Entry: CHTTPReceiver::MHFRunL ESucceeded" );
+		Finalize();
+		}
+		break;
+
+	case THTTPEvent::EFailed:
+		{
+		TRACE( "Entry: CHTTPReceiver::MHFRunL EFailed" );
+		iResponseStatus = KErrGeneral;
+		Finalize();
+		}
+		break;
+
+	default:
+		TRACE( "Entry: CHTTPReceiver::MHFRunL EDefault" );
+		break;
+		}
+	}
+
+// Called by framework when *leave* occurs in handling of transaction event.
+// These errors must be handled, or otherwise HTTP-CORE 6 panic is thrown.
+// ----------------------------------------------------------------------------
+TInt CHTTPReceiver::MHFRunError ( TInt aError, RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/ )
+	{
+	TRACE( "Entry: CHTTPReceiver::MHFRunError" );
+	iResponseStatus = aError;
+	Finalize();
+
+	TRACE( "Exit: CHTTPReceiver::MHFRunError" );
+	return KErrNone;
+	}
+
+void CHTTPReceiver::SetupConnectionL ()
+	{
+	TRACE( "Entry: CHTTPReceiver::StartConnectionL" );
+
+	// check if conncetion is already open
+	if ( iRunning )
+		{
+		return;
+		}
+
+	if ( iConnectionSetupDone )
+	    {
+		return;
+	    }
+
+	iConnectionSetupDone = ETrue;
+	
+	// open HTTP session
+	iSession.OpenL();
+
+	// open socket server
+	TInt result = iSocketServ.Connect();
+	if ( result == KErrNone)
+		{
+		// open connection
+		result = iConnection.Open(iSocketServ);
+		if ( result == KErrNone)
+			{
+			// set overrides
+			TCommDbConnPref pref;
+			pref.SetDialogPreference (ECommDbDialogPrefPrompt);
+			//pref.SetDirection (ECommDbConnectionDirectionOutgoing);
+			//pref.SetIapId (accessPoint);
+
+			// start with overrides
+			result = iConnection.Start(pref);
+
+			if ( result == KErrNone)
+				{
+				// get connection info from iSession
+				RHTTPConnectionInfo connInfo = iSession.ConnectionInfo ();
+				RStringPool pool = iSession.StringPool ();
+
+				// set socket server
+				connInfo.SetPropertyL (pool.StringF (HTTP::EHttpSocketServ,
+						RHTTPSession::GetTable () ),
+						THTTPHdrVal( iSocketServ.Handle () ) );
+
+				// attach to connection
+				TInt connectionPtr= REINTERPRET_CAST( TInt,
+						&iConnection );
+
+				connInfo.SetPropertyL (pool.StringF (
+						HTTP::EHttpSocketConnection,
+						RHTTPSession::GetTable () ),
+						THTTPHdrVal (connectionPtr) );
+
+#if defined(__WINSCW__) || defined(__WINS__) // if Emulator
+				_LIT8(KProxyAddr, "192.168.0.252:4040");
+				TBufC8<30> proxyAddr(KProxyAddr);
+
+				RStringF prxAddr = iSession.StringPool().OpenFStringL (proxyAddr);
+				CleanupClosePushL (prxAddr);
+				THTTPHdrVal prxUsage(iSession.StringPool().StringF (HTTP::EUseProxy,
+						RHTTPSession::GetTable ()));
+				iSession.ConnectionInfo().SetPropertyL (iSession.StringPool().StringF (HTTP::EProxyUsage,
+						RHTTPSession::GetTable ()), prxUsage);
+				iSession.ConnectionInfo().SetPropertyL (iSession.StringPool().StringF (HTTP::EProxyAddress,
+						RHTTPSession::GetTable ()), prxAddr);
+				CleanupStack::PopAndDestroy (); // prxAddr	
+#endif 
+
+				}
+			else
+				{
+				TRACE2( "CHTTPReceiver:: connection start: <%d>", result );
+				}
+			}
+		else
+			{
+			TRACE2( "CHTTPReceiver:: connection open: <%d>", result );
+			}
+		}
+	else
+		{
+		TRACE2( "CHTTPReceiver:: connection to socket server: <%d>", result );		
+		}
+
+	User::LeaveIfError( result );
+	
+	TRACE( "Exit: CHTTPReceiver::StartConnectionL" );
+	}
+
+// ----------------------------------------------------------------------------
+// CHTTPReceiver::Finalize
+// 
+// ----------------------------------------------------------------------------
+//
+void CHTTPReceiver::Finalize()
+    {
+    TRACE( "Exit: CHTTPReceiver::Finalize" );
+#ifdef _DEBUG
+    iResponseFile.Close();
+#endif
+    iTransaction.Close();
+    iRunning = EFalse;
+    iObserver.HTTPFileReceived( iResponseStatus );
+    TRACE( "Exit: CHTTPReceiver::Finalize" );
+    }
--- a/loadgen/engine/src/loadgen_memoryeat.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/src/loadgen_memoryeat.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -476,7 +476,7 @@
         {
         aNewSize = 0;
         }
-    LOGSTRING2("Loadgen::DoEatMemoryL aNewSize = %d", aNewSize );
+    LOGSTRING2("Loadgen::DoEatMemoryL aNewSize = %ld", aNewSize );
     // set new size
     if (iAttributes.iSource == EMemoryEatSourceTypeRAM)
         {
--- a/loadgen/engine/src/loadgen_netconn.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/engine/src/loadgen_netconn.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -184,8 +184,8 @@
 CNetConnManager::~CNetConnManager()
     {
     Cancel();
-    
-    iDownloadMgr.Close();
+
+    delete iHTTPReceiver;
     }
 
 // --------------------------------------------------------------------------------------------
@@ -201,10 +201,7 @@
     // set the death status pointer point to the request status of this ao
     iAttributes.iDeathStatus = &iStatus;
     
-    // init
-    TUid dlUid;
-    dlUid.iUid = 0x00011100 + iAttributes.iId; // generate unique identifier instead of using the LoadGen uid for all instances
-    iDownloadMgr.ConnectL(dlUid, *this, ETrue);
+    iHTTPReceiver = CHTTPReceiver::NewL( *this );
     
     // start timer    
     iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
@@ -241,42 +238,23 @@
  
 void CNetConnManager::StartDownloadL()
     {
-    iDownloadMgr.SetIntAttribute(EDlMgrExitAction, EExitPause);
-    iDownloadMgr.DeleteAll();
 
     // create new download    
     TBuf8<256> url;
     url.Copy(iAttributes.iDestination);
-
-    RHttpDownload& download = iDownloadMgr.CreateDownloadL( url );
     
-    download.SetIntAttribute(EDlAttrAction, EDoNothing);            // do nothing when download has finished
-    download.SetBoolAttribute(EDlAttrHidden, ETrue);                // download is hidden
-    download.SetIntAttribute(EDlAttrRestartAction, ERestartForced); // force to download always ignoring cache
-
-    // start the download
-    download.Start();         
+    iHTTPReceiver->SendHTTPGetL( url );
     }
 
 // --------------------------------------------------------------------------------------------
 
-void CNetConnManager::HandleDMgrEventL(RHttpDownload& aDownload, THttpDownloadEvent aEvent)
+void CNetConnManager::HTTPFileReceived( TInt aStatus )
     {
-    if (aEvent.iProgressState == EHttpContentTypeReceived)
+    switch ( aStatus )
         {
-        // need to start the download if already not started
-        aDownload.Start();
-        }
-    
-    switch ( aEvent.iDownloadState )
-        {
-        case EHttpDlPaused:
-        case EHttpDlCompleted:
-        case EHttpDlFailed:
+        case 200:
             {
             // assume that the download has finished in this stage
-            // delete download and restart
-            aDownload.Delete();
             iPeriodicTimer->Start(CLoadGenUtils::MilliSecondsToMicroSeconds(iAttributes.iIdle, iAttributes.iRandomVariance), KDefaultPeriod, TCallBack(PeriodicTimerCallBack, this));
             break;
             }
--- a/loadgen/ui/hb/hb.pro	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/hb.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -30,6 +30,7 @@
     MMP_RULES *= UNPAGED
     BLD_INF_RULES.prj_exports += "./rom/loadgen.iby CORE_IBY_EXPORT_PATH(tools,loadgen.iby)"
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += /epoc32/include/mw/http
     HEADERS += inc/engine.h \
         inc/enginewrapper.h
     SOURCES += src/engine.cpp \
@@ -44,7 +45,9 @@
         ../../engine/src/loadgen_applications.cpp \
         ../../engine/src/loadgen_photocapture.cpp \
         ../../engine/src/loadgen_bluetooth.cpp \
-        ../../engine/src/loadgen_pointerevent.cpp
+        ../../engine/src/loadgen_pointerevent.cpp \
+        ../../engine/src/loadgen_netconn.cpp \
+        ../../engine/src/loadgen_httpreceiver.cpp
     RSS_RULES += "group_name = \"RnD Tools\"";
     LIBS += -leuser \
         -lcommonengine \
@@ -74,7 +77,9 @@
         -lcentralrepository \
         -lesock \
         -lbluetooth \
-        -lhal
+        -lhal \
+        -lhttp \
+        -linetprotutil
     TARGET.CAPABILITY = swevent \
         ReadUserData \
         WriteUserData \
--- a/loadgen/ui/hb/inc/engine.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/inc/engine.h	Fri Sep 03 17:11:21 2010 +0300
@@ -104,16 +104,16 @@
 	TPhotoCaptureAttributes GetPhotoCaptureAttributes();
 	TBluetoothAttributes    GetBluetoothAttributes();
 	TPointerEventAttributes GetPointerEventAttributes();
-	void ChangeCPULoadAttributes(TCPULoadAttributes aAttributes); 
-	void ChangeMemoryEatAttributes(TMemoryEatAttributes aAttributes);
-	void ChangePhoneCallAttributes(TPhoneCallAttributes aAttributes);
-	void ChangeNetConnAttributes(TNetConnAttributes aAttributes);
-	void ChangeKeyPressAttributes(TKeyPressAttributes aAttributes);
-	void ChangeMessageAttributes(TMessageAttributes aAttributes);
-	void ChangeApplicationsAttributes(TApplicationsAttributes aAttributes);
-	void ChangePhotoCaptureAttributes(TPhotoCaptureAttributes aAttributes);
-	void ChangeBluetoothAttributes(TBluetoothAttributes aAttributes);
-	void ChangePointerEventAttributes(TPointerEventAttributes aAttributes);
+	void ChangeCPULoadAttributes(const TCPULoadAttributes& aAttributes); 
+	void ChangeMemoryEatAttributes(const TMemoryEatAttributes& aAttributes);
+	void ChangePhoneCallAttributes(const TPhoneCallAttributes& aAttributes);
+	void ChangeNetConnAttributes(const TNetConnAttributes& aAttributes);
+	void ChangeKeyPressAttributes(const TKeyPressAttributes& aAttributes);
+	void ChangeMessageAttributes(const TMessageAttributes& aAttributes);
+	void ChangeApplicationsAttributes(const TApplicationsAttributes& aAttributes);
+	void ChangePhotoCaptureAttributes(const TPhotoCaptureAttributes& aAttributes);
+	void ChangeBluetoothAttributes(const TBluetoothAttributes& aAttributes);
+	void ChangePointerEventAttributes(const TPointerEventAttributes& aAttributes);
 	
     inline TLoadGenSettings& Settings() { return iSettings; }
     inline CEikonEnv* EikonEnv() 		{ return iEnv; }
--- a/loadgen/ui/hb/inc/enginewrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/inc/enginewrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -143,52 +143,52 @@
 	/**
 	* Set attributes for CPU load
 	*/
-	void setCpuLoadAttributes(CPULoadAttributes attributes);
+	void setCpuLoadAttributes(const CPULoadAttributes& attributes);
 	
 	/**
 	* Set attributes for memory eat
 	*/
-	void setMemoryEatAttributes(MemoryEatAttributes attributes);
+	void setMemoryEatAttributes(const MemoryEatAttributes& attributes);
 
 	/**
 	* Set attributes for phone call
 	*/	
-	void setPhoneCallAttributes(PhoneCallAttributes attributes);
+	void setPhoneCallAttributes(const PhoneCallAttributes& attributes);
 
 	/**
 	* Set attributes for network connection
 	*/		
-	void setNetConnAttributes(NetConnAttributes attributes);
+	void setNetConnAttributes(const NetConnAttributes& attributes);
 	
 	/**
 	* Set attributes for key presses
 	*/
-	void setKeyPressAttributes(KeyPressAttributes attributes);
+	void setKeyPressAttributes(const KeyPressAttributes& attributes);
 	
 	/**
 	* Set pointer event for messages
 	*/
-	void setPointerEventAttributes(PointerEventAttributes attributes);
+	void setPointerEventAttributes(const PointerEventAttributes& attributes);
 
 	/**
 	* Set message attributes
 	*/
-	void setMessageAttributes(MessageAttributes attributes);
+	void setMessageAttributes(const MessageAttributes& attributes);
 	
 	/**
 	* Set applications attributes
 	*/
-	void setApplicationsAttributes(ApplicationsAttributes attributes);
+	void setApplicationsAttributes(const ApplicationsAttributes& attributes);
 	
 	/**
 	* Set photo capture attributes
 	*/
-	void setPhotoCaptureAttributes(PhotoCaptureAttributes attributes);
+	void setPhotoCaptureAttributes(const PhotoCaptureAttributes& attributes);
 	
 	/**
 	* Set BT attributes
 	*/	
-	void setBluetoothAttributes(BluetoothAttributes attributes);
+	void setBluetoothAttributes(const BluetoothAttributes& attributes);
 	
 	/**
 	* Stop load
--- a/loadgen/ui/hb/src/engine.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/src/engine.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -24,7 +24,7 @@
 #include "loadgen_cpuload.h"
 #include "loadgen_memoryeat.h"
 #include "loadgen_phonecall.h"
-//#include "loadgen_netconn.h"
+#include "loadgen_netconn.h"
 #include "loadgen_keypress.h"
 #include "loadgen_pointerevent.h"
 #include "loadgen_messages.h"
@@ -530,12 +530,12 @@
             item = CPhoneCall::NewL(iPhoneCallAttributes, iReferenceNumber);
             break;
             }
-/*        case ELoadGenCmdNewLoadNetConn:
+        case ELoadGenCmdNewLoadNetConn:
             {
             item = CNetConn::NewL(iNetConnAttributes, iReferenceNumber);
             break;
             }
-*/            
+            
         case ELoadGenCmdNewLoadKeyPress:
             {
             item = CKeyPress::NewL(iKeyPressAttributes, iReferenceNumber);
@@ -946,7 +946,7 @@
 
 // --------------------------------------------------------------------------------------------
 
-void CEngine::ChangeCPULoadAttributes(TCPULoadAttributes aAttributes) 
+void CEngine::ChangeCPULoadAttributes(const TCPULoadAttributes& aAttributes) 
 	{ 
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -976,7 +976,7 @@
 
 // --------------------------------------------------------------------------------------------
 
-void CEngine::ChangeMemoryEatAttributes(TMemoryEatAttributes aAttributes) 
+void CEngine::ChangeMemoryEatAttributes(const TMemoryEatAttributes& aAttributes) 
 	{ 
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1006,7 +1006,7 @@
 
 // --------------------------------------------------------------------------------------------	
 
-void CEngine::ChangePhoneCallAttributes(TPhoneCallAttributes aAttributes)
+void CEngine::ChangePhoneCallAttributes(const TPhoneCallAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1023,7 +1023,7 @@
 
 TNetConnAttributes CEngine::GetNetConnAttributes()
 	{ 
-/*  
+  
 	if (iEditExistingLoad == EFalse)
 		{	
 		return iNetConnAttributes; 
@@ -1033,14 +1033,14 @@
 		CLoadBase* aItem = iLoadItemList->At(iCurrentItemIndex);
 		return (static_cast<CNetConn*>(aItem)->Attributes());
 		}
-*/		
+	
 	}
 
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangeNetConnAttributes(TNetConnAttributes aAttributes)
+void CEngine::ChangeNetConnAttributes(const TNetConnAttributes& aAttributes)
 	{
-/*    
+    
 	if (iEditExistingLoad == EFalse) 
 		{
 		iNetConnAttributes = aAttributes; 
@@ -1050,7 +1050,7 @@
 		CLoadBase* aItem = iLoadItemList->At(iCurrentItemIndex);
 		static_cast<CNetConn*>(aItem)->SetAttributes(aAttributes);
 		}
-*/			
+			
 	}
 	
 // --------------------------------------------------------------------------------------------	
@@ -1071,7 +1071,7 @@
 	
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangeKeyPressAttributes(TKeyPressAttributes aAttributes)
+void CEngine::ChangeKeyPressAttributes(const TKeyPressAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1101,7 +1101,7 @@
 	
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangeMessageAttributes(TMessageAttributes aAttributes)
+void CEngine::ChangeMessageAttributes(const TMessageAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1131,7 +1131,7 @@
 
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangeApplicationsAttributes(TApplicationsAttributes aAttributes)
+void CEngine::ChangeApplicationsAttributes(const TApplicationsAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1161,7 +1161,7 @@
 
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangePhotoCaptureAttributes(TPhotoCaptureAttributes aAttributes)
+void CEngine::ChangePhotoCaptureAttributes(const TPhotoCaptureAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1192,7 +1192,7 @@
 	
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangeBluetoothAttributes(TBluetoothAttributes aAttributes)
+void CEngine::ChangeBluetoothAttributes(const TBluetoothAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
@@ -1222,7 +1222,7 @@
 
 // --------------------------------------------------------------------------------------------		
 	
-void CEngine::ChangePointerEventAttributes(TPointerEventAttributes aAttributes)
+void CEngine::ChangePointerEventAttributes(const TPointerEventAttributes& aAttributes)
 	{
 	if (iEditExistingLoad == EFalse) 
 		{
--- a/loadgen/ui/hb/src/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/src/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -172,14 +172,14 @@
         if (listIndices.count() > 0)
             {
             QString message = QString("Stop %1 selections?").arg( listIndices.count() );
-            HbMessageBox::question(message, this, SLOT(StopLoadYesNoDialogClosed(HbAction *)));
+            HbMessageBox::question(message, this, SLOT(StopLoadYesNoDialogClosed(HbAction *)), HbMessageBox::Yes|HbMessageBox::No);
             }
         else{
              TInt currentItemIndex = mMainView.currentItemIndex();
              if (mEngine->LoadItemCount() > currentItemIndex && currentItemIndex >= 0)
                  {
                  QString message("Stop highlighted selections?");
-                 HbMessageBox::question(message, this, SLOT(StopLoadYesNoDialogClosed(HbAction *)));
+                 HbMessageBox::question(message, this, SLOT(StopLoadYesNoDialogClosed(HbAction *)), HbMessageBox::Yes|HbMessageBox::No);
                  }
             }
         return true;
@@ -352,7 +352,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setCpuLoadAttributes(CPULoadAttributes attributes)
+void EngineWrapper::setCpuLoadAttributes(const CPULoadAttributes& attributes)
 {
     TCPULoadAttributes tCpuLoadAttributes;
 
@@ -406,7 +406,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setMemoryEatAttributes(MemoryEatAttributes attributes)
+void EngineWrapper::setMemoryEatAttributes(const MemoryEatAttributes& attributes)
 {
 	TMemoryEatAttributes tMemoryEatAttributes = mEngine->GetMemoryEatAttributes();//TMemoryEatAttributes tMemoryEatAttributes;
 
@@ -456,7 +456,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setPhoneCallAttributes(PhoneCallAttributes attributes)
+void EngineWrapper::setPhoneCallAttributes(const PhoneCallAttributes& attributes)
 {
 	TPhoneCallAttributes tPhoneCallAttributes = mEngine->GetPhoneCallAttributes(); //TPhoneCallAttributes tPhoneCallAttributes;
 
@@ -483,9 +483,7 @@
 	attributes.mId = tNetConnAttributes.iId;
 	attributes.mPriority = tNetConnAttributes.iPriority;
 
-    TBuf<128> dest;
-    dest.Copy(tNetConnAttributes.iDestination);
-    attributes.mDestination = QString((QChar*)dest.Ptr(), dest.Length()); 	
+    attributes.mDestination = QString::fromUtf16(tNetConnAttributes.iDestination.Ptr(), tNetConnAttributes.iDestination.Length()); 	
 
 	attributes.mIdle = tNetConnAttributes.iIdle;
 	attributes.mRandomVariance = tNetConnAttributes.iRandomVariance;
@@ -494,7 +492,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setNetConnAttributes(NetConnAttributes attributes)
+void EngineWrapper::setNetConnAttributes(const NetConnAttributes& attributes)
 {
 	TNetConnAttributes tNetConnAttributes = mEngine->GetNetConnAttributes(); //TNetConnAttributes tNetConnAttributes;
 
@@ -526,7 +524,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setKeyPressAttributes(KeyPressAttributes attributes)
+void EngineWrapper::setKeyPressAttributes(const KeyPressAttributes& attributes)
 {
 	TKeyPressAttributes tKeyPressAttributes = mEngine->GetKeyPressAttributes(); //TKeyPressAttributes tKeyPressAttributes;
 
@@ -554,7 +552,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setPointerEventAttributes(PointerEventAttributes attributes)
+void EngineWrapper::setPointerEventAttributes(const PointerEventAttributes& attributes)
 {
 	TPointerEventAttributes tPointerEventAttributes = mEngine->GetPointerEventAttributes();//TPointerEventAttributes tPointerEventAttributes;
 
@@ -590,7 +588,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setMessageAttributes(MessageAttributes attributes)
+void EngineWrapper::setMessageAttributes(const MessageAttributes& attributes)
 {
 	TMessageAttributes tMessageAttributes = mEngine->GetMessageAttributes();//TMessageAttributes tMessageAttributes;
 
@@ -629,7 +627,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setApplicationsAttributes(ApplicationsAttributes attributes)
+void EngineWrapper::setApplicationsAttributes(const ApplicationsAttributes& attributes)
 {
 	TApplicationsAttributes tApplicationsAttributes = mEngine->GetApplicationsAttributes(); //TApplicationsAttributes tApplicationsAttributes;
 
@@ -664,7 +662,7 @@
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setPhotoCaptureAttributes(PhotoCaptureAttributes attributes)
+void EngineWrapper::setPhotoCaptureAttributes(const PhotoCaptureAttributes& attributes)
 {
 	TPhotoCaptureAttributes tPhotoCaptureAttributes;
 
@@ -689,12 +687,13 @@
 	attributes.mPriority = tBluetoothAttributes.iPriority;
 	attributes.mIdle = tBluetoothAttributes.iIdle;
 	attributes.mRandomVariance = tBluetoothAttributes.iRandomVariance;
+	attributes.mBluetoothSupported = tBluetoothAttributes.iBluetoothSupported ? true : false;
 	return attributes;
 }
 
 // ---------------------------------------------------------------------------	
 
-void EngineWrapper::setBluetoothAttributes(BluetoothAttributes attributes)
+void EngineWrapper::setBluetoothAttributes(const BluetoothAttributes& attributes)
 {
     TBluetoothAttributes tBluetoothAttributes;
 
--- a/loadgen/ui/hb/src/main.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/src/main.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -17,7 +17,7 @@
 
 #include <hbmainwindow.h>
 #include <hbapplication.h>
-
+#include <eikenv.h>
 #include "mainview.h"
 
 
@@ -26,6 +26,9 @@
 	HbApplication app(argc, argv);
     HbMainWindow mainWindow;
     
+    // set as system application to prevent getting shut down events 
+    CEikonEnv::Static()->SetSystem( ETrue );
+    
     //Create main view
     MainView* view = new MainView(mainWindow);
 
--- a/loadgen/ui/hb/src/mainview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/src/mainview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -107,11 +107,11 @@
 		connect(mMessagesLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
 		mSm->setMapping(mMessagesLoadAction, ELoadGenCmdNewLoadMessages);
 //TODO to be fixed using replacement for downloadmanager
-/*
+
 		mNetConnLoadAction = mLoadSubMenu1->addAction("Network conn.");
 		connect(mNetConnLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
 		mSm->setMapping(mNetConnLoadAction, ELoadGenCmdNewLoadNetConn);
-*/	
+	
 		mKeyPressLoadAction = mLoadSubMenu2->addAction("Key presses");
 		connect(mKeyPressLoadAction, SIGNAL( triggered() ), mSm, SLOT(map()));
 		mSm->setMapping(mKeyPressLoadAction, ELoadGenCmdNewLoadKeyPress);
--- a/loadgen/ui/hb/src/notifications.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ b/loadgen/ui/hb/src/notifications.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -27,7 +27,7 @@
 void Notifications::about()
 {
     HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-    messageBox->setText("Version 1.5.0 - March 10th 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
+    messageBox->setText("Version 1.5.1 - August 27th 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
     HbLabel *header = new HbLabel("About LoadGen", messageBox);
     messageBox->setHeadingWidget(header);
     messageBox->setAttribute(Qt::WA_DeleteOnClose);
--- a/memspyui/data/Example_MemSpyProcessMemoryTrackingAutoStartConfig.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<memspy_process_memory_tracking>
-
-    <process sid="0x100058EC"/>
-	<process sid="0x1000484B"/>
-
-</memspy_process_memory_tracking>
\ No newline at end of file
--- a/memspyui/data/MemSpyEComInterfaceIds.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<memspy_ecom_sections>
-
-    <category name="Messaging">
-		<interface uid="0xABCD1234" name="Watchers" />
-    </category>
-
-    <category name="App-Protocols">
-		<interface uid="0x101F446D" name="HTTP Filters" />
-		<interface uid="0x1000A449" name="HTTP Protocol" />
-    </category>
-
-    <category name="S60 AIW">
-		<interface uid="0x101F8650" name="AIW Class Base" />
-		<interface uid="0x101F8652" name="AIW Class Menu" />
-    </category>
-
-</memspy_ecom_sections>
\ No newline at end of file
--- a/memspyui/data/MemSpyProcessMemoryTrackingAutoStartConfig.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<memspy_process_memory_tracking>
-
-</memspy_process_memory_tracking>
\ No newline at end of file
--- a/memspyui/data/backup_registration.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<backup_registration>
-
-    <passive_backup>
-        <include_directory name="\"/>
-        <exclude name="MemSpy_Passive_Excluded.txt"/>
-    </passive_backup>
-
-    <system_backup/>
-
-    <public_backup>
-        <include_directory name="C:\Data\Others\MemSpy\"/>
-    </public_backup>
-
-    <restore requires_reboot = "no"/>
-
-</backup_registration>
\ No newline at end of file
--- a/memspyui/data/memspyui.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1133 +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:
-*
-*/
-
-
-// Resource Identifier
-NAME MEMS
-
-// System includes
-#include <data_caging_paths_strings.hrh>
-#include <appinfo.rh>
-#include <eikon.rh>
-#include <EIKCORE.rsg>
-#include <eikon.rsg>
-#include <avkon.rh>
-#include <eikon.rsg>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <avkon.loc>
-#include <AvkonIcons.hrh>
-#include <bldvariant.hrh>
-
-
-// User includes
-#include "../ui/avkon/inc/MemSpy.hrh"
-
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf="MemSpy"; }
-
-RESOURCE EIK_APP_INFO
-    {
-    hotkeys = r_memspy_hotkeys;
-    menubar = r_memspy_menubar;
-    cba     = R_AVKON_SOFTKEYS_OPTIONS_EXIT;     
-    }
-
-
-
-
-
-
-RESOURCE HOTKEYS r_memspy_hotkeys
-    {
-    control=
-        {
-        HOTKEY { command=EAknCmdExit; key='e'; }
-        };
-    }
-
-
-RESOURCE MENU_BAR r_memspy_menubar
-    {
-    titles=
-        {
-        MENU_TITLE { menu_pane=r_memspy_menupane;                   txt = "Main Menu"; }
-        };
-    }
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_stack
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdStackInfoThread;            txt = "Info"; }
-#ifndef __WINS__
-		,
-		MENU_ITEM { command = EMemSpyCmdStackData;                  cascade = r_memspy_menupane_stack_data; txt = "Data"; }
-#endif
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_stack_data
-    {
-    items=
-        {
-		MENU_ITEM { command=EMemSpyCmdStackDataUser;                txt = "User stack data"; },
-		MENU_ITEM { command=EMemSpyCmdStackDataKernel;              txt = "Kernel stack data"; }
-        };
-    }
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_heap
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdHeapInfoThread;             txt = "Info"; },
-		MENU_ITEM { command = EMemSpyCmdHeapData;                   cascade = r_memspy_menupane_heap_data; txt = "Data"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_heap_data
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdHeapCellListing;            txt = "Cell list"; }
-#ifndef __WINS__
-		,
-		MENU_ITEM { command = EMemSpyCmdHeapDataDump;               txt = "Heap data"; }
-#endif
-        };
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_auto_capture
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdAutoCaptureToggle;          txt = "Enable/Disable"; },
-		MENU_ITEM { command = EMemSpyCmdAutoCaptureRetryTime;       txt = "Timer period"; },
-		MENU_ITEM { command = EMemSpyCmdAutoCaptureOperationType;   txt = "Operation type"; }
-        };
-    }
-
-
-RESOURCE TBUF r_memspy_auto_capture_enable
-    {
-    buf = "Enable";
-    }
-
-
-RESOURCE TBUF r_memspy_auto_capture_disable
-    {
-    buf = "Disable";
-    }
-
-
-RESOURCE LISTBOX r_memspy_auto_capture_operation_listbox
-    {
-    flags = 0; //EEikListBoxMultipleSelection;
-    }
-
-
-RESOURCE AVKON_SETTING_PAGE r_memspy_auto_capture_operation_types_settings_page
-    { 
-    number              = EAknSettingPageNoOrdinalDisplayed;
-    label               = "Operation type";
-    softkey_resource    = R_AVKON_SOFTKEYS_OK_CANCEL;
-    type                = EAknSetListBox;
-    editor_resource_id  = r_memspy_auto_capture_operation_listbox;
-    }
-
-
-RESOURCE ARRAY r_memspy_auto_capture_operation_types
-    {
-    items =
-        {
-		LBUF { txt = "General Info (Text)"; },
-		LBUF { txt = "General Info (Detailed)"; },
-		//
-		LBUF { txt = "User Heap Info (Text)"; },
-		LBUF { txt = "User Heap Info (CSV)"; },
-		//
-		LBUF { txt = "User Heap Cell List (Text)"; },
-		//
-		LBUF { txt = "User Heap Data (Binary)"; },
-		LBUF { txt = "Kernel Heap Data (Binary)"; },
-		//
-		LBUF { txt = "User Stack Info (Text)"; },
-		LBUF { txt = "User Stack Info (CSV)"; },
-		//
-		LBUF { txt = "User Stack Data (Binary)"; },
-		LBUF { txt = "Kernel Stack Data (Binary)"; }
-        };
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_phone_info_general
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralSummary;			txt = "Summary"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralDetailed;			txt = "Detailed Info"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralHandles;			txt = "Handle Info"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralKernelContainers;	txt = "Kernel Containers"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_phone_info_heap
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapInfoSummary;       txt = "Detailed Summary"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapInfoCompact;		txt = "Compact Summary"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapCellListing;       txt = "Cell Listing"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapDump;			    txt = "Data (Binary)"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_phone_info_stack
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackInfo;             txt = "Detailed Summary"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackInfoCompact;      txt = "Compact Summary"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackDumpUser;         txt = "User Stacks (Binary)"; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackDumpKernel;       txt = "Kernel Stacks (Binary)"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_phone_info
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneral;           txt = "General";        cascade = r_memspy_menupane_phone_info_general; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeap;              txt = "Heap";           cascade = r_memspy_menupane_phone_info_heap; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfoStack;             txt = "Stack";          cascade = r_memspy_menupane_phone_info_stack; }
-        };
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_process_sort
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdProcessSortById;            txt = "By Id"; },
-		MENU_ITEM { command = EMemSpyCmdProcessSortByName;          txt = "By Name"; },
-		MENU_ITEM { command = EMemSpyCmdProcessSortByThreadCount;   txt = "By Number of Threads"; },
-		MENU_ITEM { command = EMemSpyCmdProcessSortByCodeSegs;      txt = "By Code Segments"; },
-		MENU_ITEM { command = EMemSpyCmdProcessSortByHeapUsage;     txt = "By Heap Usage"; },
-		MENU_ITEM { command = EMemSpyCmdProcessSortByStackUsage;    txt = "By Stack Usage"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_process_info
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdProcessInfoSummary;         txt = "Summary"; },
-		MENU_ITEM { command = EMemSpyCmdProcessInfoHandles;			txt = "Handles"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_process_end
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdProcessEndKill;				txt = "Kill"; },
-		MENU_ITEM { command = EMemSpyCmdProcessEndPanic;			txt = "Panic"; },
-		MENU_ITEM { command = EMemSpyCmdProcessEndTerminate;        txt = "Terminate"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_process
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdProcessInfo;                txt = "Info";       cascade = r_memspy_menupane_process_info; },
-		MENU_ITEM { command = EMemSpyCmdProcessSort;                txt = "Sort";       cascade = r_memspy_menupane_process_sort; },
-		MENU_ITEM { command = EMemSpyCmdProcessEnd;                 txt = "End";       cascade = r_memspy_menupane_process_end; }
-        };
-    }
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_thread_priority
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteVeryLow;           txt = "Abs. Very Low"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteLowNormal;         txt = "Abs. Low Normal"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteLow;				txt = "Abs. Low"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal;	txt = "Abs. Background Normal"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteBackground;        txt = "Abs. Background "; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal;  txt = "Abs. Foreground Normal"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteForeground;        txt = "Abs. Foreground"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteHighNormal;        txt = "Abs. High Normal"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteHigh;				txt = "Abs. High"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime1;         txt = "Abs. Real Time 1"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime2;         txt = "Abs. Real Time 2"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime3;         txt = "Abs. Real Time 3"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime4;         txt = "Abs. Real Time 4"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime5;         txt = "Abs. Real Time 5"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime6;         txt = "Abs. Real Time 6"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime7;         txt = "Abs. Real Time 7"; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime8;         txt = "Abs. Real Time 8"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_thread_info
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdThreadInfoHandles;			txt = "Handles"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_thread_end
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdThreadEndKill;				txt = "Kill"; },
-		MENU_ITEM { command = EMemSpyCmdThreadEndPanic;				txt = "Panic"; },
-		MENU_ITEM { command = EMemSpyCmdThreadEndTerminate;			txt = "Terminate"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_thread
-    {
-    items=
-        {
- 		MENU_ITEM { command = EMemSpyCmdThreadInfo;					txt = "Info";				cascade = r_memspy_menupane_thread_info; },
-		MENU_ITEM { command = EMemSpyCmdThreadSetPriority;          txt = "Change Priority";	cascade = r_memspy_menupane_thread_priority; },
-		MENU_ITEM { command = EMemSpyCmdThreadEnd;					txt = "End";				cascade = r_memspy_menupane_thread_end; }
-        };
-    }
-
-
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_output
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdOutputToDebug;              txt = "Switch to Debug output"; },
-		MENU_ITEM { command = EMemSpyCmdOutputToFile;               txt = "Switch to File output"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_tools
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdToolsListOpenFiles;         txt = "List open files"; },
-		MENU_ITEM { command = EMemSpyCmdOutput;                     txt = "Change output mode";       cascade = r_memspy_menupane_output; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_view
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdViewRefresh;                txt = "Refresh"; },
-		MENU_ITEM { command = EMemSpyCmdViewOutputToSink;           txt = "Output Contents"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_images
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdImagesListing;              txt = "Output Listing"; },
-		MENU_ITEM { command = EMemSpyCmdImagesSlideshow;            txt = "Slideshow"; }
-#ifndef __WINS__
-		,
-		MENU_ITEM { command = EMemSpyCmdImagesSaveAllToMemoryCard;  txt = "Save All to Memory Card"; }
-#endif
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_server_list_output
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdServerListOutputListCSV;      txt = "Listing"; },
-		MENU_ITEM { command = EMemSpyCmdServerListOutputListDetailed; txt = "Detailed Listing"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_server_list_sort
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdServerListSortByName;           txt = "By Name"; },
-		MENU_ITEM { command = EMemSpyCmdServerListSortBySessionCount;   txt = "By Number of Sessions"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_server_list
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdServerListOutput;               txt = "Output";       cascade = r_memspy_menupane_server_list_output; },
-		MENU_ITEM { command = EMemSpyCmdServerListSort;                 txt = "Sort";         cascade = r_memspy_menupane_server_list_sort; }
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_chunk_list_sort
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdChunkSortByName;                txt = "By Name"; },
-		MENU_ITEM { command = EMemSpyCmdChunkSortBySize;                txt = "By Size"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_chunk_list
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdChunkListing;                   txt = "Output Listing"; },
-		MENU_ITEM { command = EMemSpyCmdChunkSort;                      txt = "Sort";         cascade = r_memspy_menupane_chunk_list_sort; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_filter_by_capability
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTCBProcess;              txt = "TCB (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTCBAll;                  txt = "TCB (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithCommDDProcess;           txt = "Comm DD (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithCommDDAll;               txt = "Comm DD (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess;        txt = "Power Mgmt (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll;            txt = "Power Mgmt (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess;     txt = "Multimedia DD (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll;         txt = "Multimedia DD (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess;   txt = "Read Device Data (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll;       txt = "Read Device Data (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess;  txt = "Write Device Data (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll;      txt = "Write Device Data (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDRMProcess;              txt = "DRM (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDRMAll;                  txt = "DRM (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess;        txt = "Trusted UI (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTrustedUIAll;            txt = "Trusted UI (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithProtServProcess;         txt = "Prot Serv (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithProtServAll;             txt = "Prot Serv (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess;        txt = "Disk Admin (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDiskAdminAll;            txt = "Disk Admin (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess;   txt = "Network Ctrl (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkControlAll;       txt = "Network Ctrl (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithAllFilesProcess;         txt = "All Files (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithAllFilesAll;             txt = "All Files (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSwEventProcess;          txt = "SW Event (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSwEventAll;              txt = "SW Event (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess;  txt = "Network Serv (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll;      txt = "Network Serv (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess;    txt = "Local Serv (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocalServicesAll;        txt = "Local Serv (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess;     txt = "Read User Data (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadUserDataAll;         txt = "Read User Data (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess;    txt = "Write User Data (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll;        txt = "Write User Data (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocationProcess;         txt = "Location (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocationAll;             txt = "Location (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess;   txt = "Surroundings DD (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll;       txt = "Surroundings DD (All)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithUserEnvProcess;          txt = "User Env (Exe)"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithUserEnvAll;              txt = "User Env (All)"; }
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_filter
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowItemsAll;                    txt = "None"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowItemsGlobalData;             txt = "By Global Data"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShowCaps;                        txt = "By Capability";         cascade = r_memspy_menupane_codeseg_list_filter_by_capability; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_sort
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdCodeSegSortByName;               txt = "By Name"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegSortByCodeSize;           txt = "By Code Size"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegSortByDataSize;           txt = "By Total Data Size"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegSortByUid;                txt = "By Uid"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_codeseg_list
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdCodeSegListing;                 txt = "Output Listing"; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegShow;                    txt = "Filter";       cascade = r_memspy_menupane_codeseg_list_filter; },
-		MENU_ITEM { command = EMemSpyCmdCodeSegSort;                    txt = "Sort";         cascade = r_memspy_menupane_codeseg_list_sort; }
-        };
-    }
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_active_objects
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdActiveObjectListing;            txt = "Output Listing"; }
-        };
-    }
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_ram
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdRAMAvkonIconCacheDisabled;      txt = "Disable Icon Cache"; },
-		MENU_ITEM { command = EMemSpyCmdRAMAvkonIconCacheEnabled;       txt = "Enable Icon Cache"; }
-        };
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_kernel_containers
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdKernelContainersOutput;                     txt = "Output list"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_kernel_objects
-    {
-    items=
-        {
-        MENU_ITEM { command = EMemSpyCmdKernelObjectTerminate;                     txt = "Terminate"; },
-        MENU_ITEM { command = EMemSpyCmdKernelObjectSwitchTo;                      txt = "Switch to"; },
-        MENU_ITEM { command = EMemSpyCmdKernelObjectEnd;                           txt = "End"; },
-        MENU_ITEM { command = EMemSpyCmdKernelObjectPanic;                         txt = "Panic"; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_memspy_menupane_kernel_heap
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdKernelHeapDump;                             txt = "Dump Heap"; }
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_memory_tracking
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingStart;						txt = "Start"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingStop;							txt = "Stop"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingTotalWithSharedMem;			txt = "Include shared memory in Total"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingTotalWithoutSharedMem;		txt = "Exclude shared memory from Total"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWMReset;						txt = "Reset HWM"; }
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_memory_tracking_hwm
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWMReset;						txt = "Reset"; }
-        };
-    }
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_memory_tracking_autostart
-    {
-    items=
-        {
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemAdd;				txt = "Add"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemEdit;			txt = "Edit"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemDelete;			txt = "Remove"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll;		txt = "Remove All"; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemImport;			txt = "Import"; }
-        };
-    }
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane_window_groups
-    {
-    items=
-        {
-        MENU_ITEM { command = EMemSpyCmdWindowGroupTerminate;                     txt = "Terminate"; },
-        MENU_ITEM { command = EMemSpyCmdWindowGroupSwitchTo;                      txt = "Switch to"; },
-        MENU_ITEM { command = EMemSpyCmdWindowGroupEnd;                           txt = "End"; },
-        MENU_ITEM { command = EMemSpyCmdWindowGroupPanic;                         txt = "Panic"; }
-        };
-    }
-
-
-
-
-
-
-
-RESOURCE MENU_PANE r_memspy_menupane
-    {
-    items=
-        {
-		// This item is visible if the view supports child views
-		MENU_ITEM { command = EMemSpyCmdOpen;						txt = "Open"; },
-		
-		// These are view-specific menu cascades that are not shown unless a specific view is open
-		MENU_ITEM { command = EMemSpyCmdServerList;						txt = "Server List";        cascade = r_memspy_menupane_server_list; },
-		MENU_ITEM { command = EMemSpyCmdChunk;							txt = "Chunk";              cascade = r_memspy_menupane_chunk_list; },
-		MENU_ITEM { command = EMemSpyCmdCodeSeg;						txt = "Code Segment";       cascade = r_memspy_menupane_codeseg_list; },
-		MENU_ITEM { command = EMemSpyCmdImages;							txt = "Images";             cascade = r_memspy_menupane_images; },
-		MENU_ITEM { command = EMemSpyCmdActiveObject;					txt = "Active Object";      cascade = r_memspy_menupane_active_objects; },
-		MENU_ITEM { command = EMemSpyCmdHeap;							txt = "Heap";               cascade = r_memspy_menupane_heap; },
-		MENU_ITEM { command = EMemSpyCmdStack;							txt = "Stack";              cascade = r_memspy_menupane_stack; },
-		MENU_ITEM { command = EMemSpyCmdRAM;							txt = "RAM";                cascade = r_memspy_menupane_ram; },
-		MENU_ITEM { command = EMemSpyCmdProcess;						txt = "Process";            cascade = r_memspy_menupane_process; },
-		MENU_ITEM { command = EMemSpyCmdThread;							txt = "Thread";             cascade = r_memspy_menupane_thread; },
-		MENU_ITEM { command = EMemSpyCmdKernelContainers;				txt = "Kernel Objects";     cascade = r_memspy_menupane_kernel_containers; },
-		MENU_ITEM { command = EMemSpyCmdKernelObjects;                  txt = "Kernel Object";      cascade = r_memspy_menupane_kernel_objects; },
-		MENU_ITEM { command = EMemSpyCmdKernelHeap;						txt = "Kernel Heap";        cascade = r_memspy_menupane_kernel_heap; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTracking;					txt = "Memory Tracking";    cascade = r_memspy_menupane_memory_tracking; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWM;				txt = "Memory HWM";			cascade = r_memspy_menupane_memory_tracking_hwm; },
-		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStart;		txt = "Auto-Start Items";   cascade = r_memspy_menupane_memory_tracking_autostart; },
-		MENU_ITEM { command = EMemSpyCmdWindowGroups;                   txt = "Window Group";       cascade = r_memspy_menupane_window_groups; },
-		
-		// These are standard menu items that are always visible
-		MENU_ITEM { command = EMemSpyCmdView;							txt = "View";               cascade = r_memspy_menupane_view; },
-		MENU_ITEM { command = EMemSpyCmdTools;							txt = "Tools";              cascade = r_memspy_menupane_tools; },
-		MENU_ITEM { command = EMemSpyCmdPhoneInfo;						txt = "Phone Information";  cascade = r_memspy_menupane_phone_info; },
-		MENU_ITEM { command = EMemSpyCmdAutoCapture;					txt = "Automatic Capture";  cascade = r_memspy_menupane_auto_capture; },
-
-		// About
-        MENU_ITEM { command = EMemSpyCmdToolsAbout;						txt = "About"; },
-		
-		// One or other is visible, depending on whether it is a top level menu item
-		MENU_ITEM { command = EAknSoftkeyBack;							txt = "Back"; },
-		MENU_ITEM { command = EAknCmdExit;								txt = "Exit"; }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_device_wide_operation_progress_dialog
-    {
-    title   = "Performing operation..";
-    flags   = EAknProgressNoteFlags | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_CANCEL;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtNote;
-            id      = EMemSpyCtrlIdProgressNote;
-            control = AVKON_NOTE 
-                { 
-                layout      = EProgressLayout;
-                imagefile   = AVKON_ICON_FILE;
-                imageid     = EMbmAvkonQgn_note_progress;
-                imagemask   = EMbmAvkonQgn_note_progress_mask;
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_export_to_memorycard_dialog
-    {
-    title   = "Save Bitmaps to Memory Card";
-    flags   = EAknProgressNoteFlags | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_CANCEL;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtNote;
-            id      = EMemSpyCtrlIdProgressNote;
-            control = AVKON_NOTE 
-                { 
-                layout      = EProgressLayout;
-                imagefile   = AVKON_ICON_FILE;
-                imageid     = EMbmAvkonQgn_note_progress;
-                imagemask   = EMbmAvkonQgn_note_progress_mask;
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_device_wide_settings
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_DATA_QUERY 
-                { 
-                layout  = ENumberLayout;
-                label   = "Frequency (seconds)";
-                control = AVKON_INTEGER_EDWIN
-                    {
-                    min         =    5;
-                    max         = 3600;
-                    maxlength   =    4;
-                    };
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_preparing_info_item_container_wait_note
-    {
-    flags   = EAknWaitNoteFlags | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtNote;
-            id      = EMemSpyCtrlIdWaitNote;
-            control = AVKON_NOTE 
-                { 
-                layout          = EWaitLayout;
-                singular_label  = "Preparing items...";
-                imagefile       = AVKON_ICON_FILE;
-                imageid         = EMbmAvkonQgn_note_progress;
-                imagemask       = EMbmAvkonQgn_note_progress_mask;
-                animation       = R_QGN_GRAF_WAIT_BAR_ANIM;
-                };
-            }
-        };
-    }
-
-
-
-
-
-RESOURCE DIALOG r_memspy_image_slideshow
-    {
-    title   = "Image Slideshow...";
-    flags   = EEikDialogFlagNoDrag | EEikDialogFlagCbaButtons | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_CANCEL;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EEikCtImage;
-            id      = EMemSpyCtrlIdSlideShowImage;
-            control = IMAGE
-                {
-                };
-            }
-        };
-    }
-
-
-
-
-
-
-RESOURCE DIALOG r_memspy_heap_tracker_timer_period
-    {
-    flags   = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_DATA_QUERY 
-                { 
-                layout  = ENumberLayout;
-                label   = "Frequency (seconds)";
-                control = AVKON_INTEGER_EDWIN
-                    {
-                    min         =   30;
-                    max         = 3600;
-                    maxlength   =    4;
-                    };
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_heap_tracker_name_filter
-    {
-    flags   = EAknDialogGenericQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items   =
-        {
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_DATA_QUERY 
-                { 
-                layout  = EDataLayout;
-                label   = "Thread Name Filter";
-                control = EDWIN
-                    {
-                    flags               = 0;
-                    width               = 8;
-                    lines               = 1;
-                    maxlength           = 16;
-                    avkon_flags         = EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
-                    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-                    default_input_mode  = EAknEditorTextInputMode;
-                    };
-                };
-            }
-        };
-    }
-
-RESOURCE DIALOG r_memspy_memory_tracking_process_uid_dialog
-    {
-    flags	= EAknDialogGenericQueryFlags;
-    buttons	= R_AVKON_SOFTKEYS_OK_CANCEL;
-    items	=
-        {
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_DATA_QUERY 
-                { 
-                layout	= EDataLayout;
-                label	= "Process Uid (Hex)";
-                control = EDWIN
-                    {
-                    flags				= 0;
-                    width				= 8;
-                    lines				= 1;
-                    maxlength			= 8;
-                    avkon_flags			= EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
-                    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-                    default_input_mode	= EAknEditorNumericInputMode;
-                    };
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_memory_tracking_import_from_installed_xml_dialog
-	{
-	flags	= EGeneralQueryFlags;
-	buttons	= R_AVKON_SOFTKEYS_YES_NO;
-	items	=
-		{
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY 
-                { 
-		        layout		= EConfirmationLayout;
-			    label		= "Import auto-start items\nfrom installed XML file?";
-				animation	= R_QGN_NOTE_QUERY_ANIM;
-				};
-			}
-		};
-	}
-
-
-RESOURCE DIALOG r_memspy_memory_tracking_import_from_userdefined_xml_dialog
-	{
-	flags	= EGeneralQueryFlags;
-	buttons	= R_AVKON_SOFTKEYS_YES_NO;
-	items	=
-		{
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY 
-                { 
-		        layout		= EConfirmationLayout;
-			    label		= "Import auto-start items\nfrom custom XML file?";
-				animation	= R_QGN_NOTE_QUERY_ANIM;
-				};
-			}
-		};
-	}
-
-    
-RESOURCE DIALOG r_memspyui_about_dialog
-	{
-    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-    items=
-		{
-        DLG_LINE
-			{
-            type = EAknCtPopupHeadingPane;
-            id = EAknMessageQueryHeaderId;
-            control = AVKON_HEADING
-				{
-                label = "About MemSpy";
-                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
-				};
-			},
-        DLG_LINE
-			{
-            type = EAknCtMessageQuery;
-            id = EAknMessageQueryContentId;
-            control = AVKON_MESSAGE_QUERY
-				{
-                message = "Version 1.2.0 - 27th October 2009. Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.";
-				};
-			}
-		};
-	}
-
-
-
-RESOURCE DIALOG r_memspy_ram_memory_delta_dialog
-    {
-	flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-		    id = EGeneralNote;
-            control = AVKON_NOTE 
-                { 
-                layout = EGeneralLayout;
-                singular_label = "Memory Delta";
-                animation = R_QGN_NOTE_INFO_ANIM;
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_memspy_panic_system_critical_thread_or_process
-	{
-	flags	= EGeneralQueryFlags;
-	buttons	= R_AVKON_SOFTKEYS_YES_NO;
-	items	=
-		{
-        DLG_LINE
-            {
-            type    = EAknCtQuery;
-            id      = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY 
-                { 
-		        layout		= EConfirmationLayout;
-			    label		= "Terminating/killing/panicking item will cause a reboot.\nContinue?";
-				animation	= R_QGN_NOTE_QUERY_ANIM;
-				};
-			}
-		};
-	}
-
-RESOURCE DIALOG r_memspy_kernel_object_details_dialog
-    {
-    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
-
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtPopupHeadingPane;
-            id = EAknMessageQueryHeaderId;
-            control = AVKON_HEADING
-                {
-                label = "Object details";
-                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
-                };
-            },
-        DLG_LINE
-            {
-            type = EAknCtMessageQuery;
-            id = EAknMessageQueryContentId;
-            control = AVKON_MESSAGE_QUERY
-                {
-                message = ".";
-                };
-            }
-        };
-    }
-
-RESOURCE AVKON_SETTING_PAGE r_memspyui_swmt_categories_setting_page
-    {
-    type = EAknSetListBox;
-    editor_resource_id = r_memspyui_swmt_categories_items_listbox;
-    label = "SWMT Categories";
-    }   
-
-RESOURCE LISTBOX r_memspyui_swmt_categories_items_listbox
-    {
-    flags = EAknListBoxMultipleSelection;
-    }
-
-// ---------------------------------------------------------
-//   
-//    RESOURCE LOCALISABLE_APP_INFO
-//
-// ---------------------------------------------------------
-//
-RESOURCE LOCALISABLE_APP_INFO r_memspyui_localisable_app_info
-    {
-    short_caption = "MemSpy";
-    caption_and_icon = 
-    CAPTION_AND_ICON_INFO
-        {
-        caption = "MemSpy";
-
-        number_of_icons = 1;
-
-        // Note for ROM-based apps it is recommended to add the drive letter
-        // icon_file = "z:"APP_BITMAP_DIR"\\myapp_aif.mif";
-        icon_file = APP_BITMAP_DIR"\\memspyui_aif.mif";
-        };
-    }
-
--- a/memspyui/data/memspyui_reg.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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:
-*
-*/
-
-
-// System includes
-#include <memspyui.rsg>
-#include <appinfo.rh>
-#include <data_caging_paths_strings.hrh>
-
-
-
-UID2 KUidAppRegistrationResourceFile
-
-UID3 0x2002129F
-
-
-RESOURCE APP_REGISTRATION_INFO
-    {
-    app_file                    = "MemSpyUI";
-    localisable_resource_file   = APP_RESOURCE_DIR"\\MemSpyUI";
-    localisable_resource_id     = R_MEMSPYUI_LOCALISABLE_APP_INFO;
-    group_name					= "RnD Tools";
-    }
--- a/memspyui/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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 <platform_paths.hrh>
-
-prj_platforms
-
-WINSCW GCCE ARMV5 ARMV6
-
-#include "bld_generic.inf"
-
-#include "../ui/avkon/group/bld.inf"
-
-prj_mmpfiles
-
-prj_extensions
\ No newline at end of file
--- a/memspyui/group/bld_generic.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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 <platform_paths.hrh>
-#include "../memspywindowserverhelper/group/bld.inf"
-
-PRJ_EXPORTS
-../data/MemSpyEComInterfaceIds.xml                      z:/private/2002129F/memspyecominterfaceids.xml
-../data/MemSpyProcessMemoryTrackingAutoStartConfig.xml	z:/private/2002129F/memspyprocessmemorytrackingautostartconfig.xml
-../data/backup_registration.xml							z:/private/2002129F/backup_registration.xml
-../rom/memspyui.iby                                     CORE_IBY_EXPORT_PATH(tools,memspyui.iby)
-
-#ifndef SBSV2
-  gnumakefile memspyui_icons_aif.mk
-
-  #ifdef MARM
-  gnumakefile memspyui_stub_sis.mk
-  #endif
-#endif
-
-#ifdef SBSV2
-  PRJ_EXTENSIONS
-  START EXTENSION s60/mifconv
-  OPTION TARGETFILE memspyui_aif.mif
-  OPTION SOURCEDIR ../icons
-  OPTION SOURCES -c8,8 qgn_menu_memspyui
-  END
-
-  #ifdef MARM
-  START EXTENSION app-services/buildstubsis
-  OPTION SRCDIR ../sis
-  OPTION SISNAME MemSpy_stub
-  END
-  #endif 
-#endif
--- a/memspyui/group/group.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include \"bld_generic.inf\""
--- a/memspyui/group/memspyui_icons_aif.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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:  
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
-else
-ZDIR=\epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\memspyui_aif.mif
-
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN :
-	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-RESOURCE : $(ICONTARGETFILENAME)
-
-$(ICONTARGETFILENAME) : ..\icons\qgn_menu_memspyui.svg
-	mifconv $(ICONTARGETFILENAME) \
-		/c8,8 ..\icons\qgn_menu_memspyui.svg
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/memspyui/group/memspyui_stub_sis.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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:  
-#
-
-
-TARGETDIR=$(EPOCROOT)EPOC32\Data\Z\System\Install
-
-SISNAME=MemSpy_stub
-PKGNAME=MemSpy_stub
-
-$(TARGETDIR) :
-	@perl -S emkdir.pl "$(TARGETDIR)"
-
-do_nothing :
-	rem do_nothing
-
-SISFILE=$(TARGETDIR)\$(SISNAME).sis
-
-$(SISFILE) : ..\sis\$(PKGNAME).pkg
-	makesis -s $? $@ 
-
-
-
-MAKMAKE : do_nothing
-
-RESOURCE : do_nothing
-
-SAVESPACE : do_nothing
-
-BLD : do_nothing
-
-FREEZE : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-FINAL : $(TARGETDIR) $(SISFILE)
-
-CLEAN : 
-	@if exist $(SISFILE) erase $(SISFILE)
-
-RELEASABLES : 
-	@echo $(SISFILE)
--- a/memspyui/icons/qgn_menu_memspyui.svg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,363 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="100%"
-   height="100%"
-   viewBox="0 0 87.999512 88.000488"
-   id="svg76799">
-  <defs
-     id="defs76881">
-    <radialGradient
-       cx="16.93359"
-       cy="17.94434"
-       r="10.21466"
-       fx="16.93359"
-       fy="17.94434"
-       id="XMLID_12_"
-       gradientUnits="userSpaceOnUse">
-      <stop
-         style="stop-color:#bdcede;stop-opacity:1"
-         offset="0"
-         id="stop2443" />
-      <stop
-         style="stop-color:#b3b6ed;stop-opacity:1"
-         offset="1"
-         id="stop2445" />
-      <a:midPointStop
-         style="stop-color:#BDCEDE"
-         offset="0" />
-      <a:midPointStop
-         style="stop-color:#BDCEDE"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#B3B6ED"
-         offset="1" />
-    </radialGradient>
-    <linearGradient
-       x1="7.6855502"
-       y1="33.568359"
-       x2="9.2402296"
-       y2="35.123051"
-       id="XMLID_11_"
-       gradientUnits="userSpaceOnUse">
-      <stop
-         style="stop-color:#647490;stop-opacity:1"
-         offset="0"
-         id="stop2374" />
-      <stop
-         style="stop-color:#3b5375;stop-opacity:1"
-         offset="1"
-         id="stop2376" />
-      <a:midPointStop
-         style="stop-color:#647490"
-         offset="0" />
-      <a:midPointStop
-         style="stop-color:#647490"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#3B5375"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       x1="-87.874023"
-       y1="86.413094"
-       x2="-68.792519"
-       y2="59.91861"
-       id="XMLID_10_"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-1,106.50049,93.23242)">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0"
-         id="stop2363" />
-      <stop
-         style="stop-color:#f5f5f5;stop-opacity:1"
-         offset="0.12323"
-         id="stop2365" />
-      <stop
-         style="stop-color:#dcdcdc;stop-opacity:1"
-         offset="0.62667"
-         id="stop2367" />
-      <stop
-         style="stop-color:#b2b2b2;stop-opacity:1"
-         offset="1"
-         id="stop2369" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#F5F5F5"
-         offset="0.12323" />
-      <a:midPointStop
-         style="stop-color:#F5F5F5"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#DCDCDC"
-         offset="0.62667" />
-      <a:midPointStop
-         style="stop-color:#DCDCDC"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#B2B2B2"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       x1="-354.65088"
-       y1="-320.31396"
-       x2="-346.3559"
-       y2="-290.57343"
-       id="XMLID_9_"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(381.50049,321.26758)">
-      <stop
-         style="stop-color:#5e5f5f;stop-opacity:1"
-         offset="0"
-         id="stop2332" />
-      <stop
-         style="stop-color:#7b7c7c;stop-opacity:1"
-         offset="0.0454"
-         id="stop2334" />
-      <stop
-         style="stop-color:#bfbfc0;stop-opacity:1"
-         offset="0.13559"
-         id="stop2336" />
-      <stop
-         style="stop-color:#c8c8c9;stop-opacity:1"
-         offset="0.16057999"
-         id="stop2338" />
-      <stop
-         style="stop-color:#e2e2e2;stop-opacity:1"
-         offset="0.20213"
-         id="stop2340" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.24011"
-         id="stop2342" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1"
-         offset="0.28248999"
-         id="stop2344" />
-      <stop
-         style="stop-color:#e9e9e9;stop-opacity:1"
-         offset="0.34463"
-         id="stop2346" />
-      <stop
-         style="stop-color:#919191;stop-opacity:1"
-         offset="0.639"
-         id="stop2348" />
-      <stop
-         style="stop-color:#4a4a4a;stop-opacity:1"
-         offset="0.81300002"
-         id="stop2350" />
-      <stop
-         style="stop-color:#1e1e1e;stop-opacity:1"
-         offset="0.93730003"
-         id="stop2352" />
-      <stop
-         style="stop-color:#0d0d0d;stop-opacity:1"
-         offset="1"
-         id="stop2354" />
-      <a:midPointStop
-         style="stop-color:#5E5F5F"
-         offset="0" />
-      <a:midPointStop
-         style="stop-color:#5E5F5F"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#7B7C7C"
-         offset="0.0454" />
-      <a:midPointStop
-         style="stop-color:#7B7C7C"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#BFBFC0"
-         offset="0.13559" />
-      <a:midPointStop
-         style="stop-color:#BFBFC0"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#C8C8C9"
-         offset="0.16058" />
-      <a:midPointStop
-         style="stop-color:#C8C8C9"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#E2E2E2"
-         offset="0.20213" />
-      <a:midPointStop
-         style="stop-color:#E2E2E2"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0.24011" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0.28249" />
-      <a:midPointStop
-         style="stop-color:#FFFFFF"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#E9E9E9"
-         offset="0.34463" />
-      <a:midPointStop
-         style="stop-color:#E9E9E9"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#919191"
-         offset="0.639" />
-      <a:midPointStop
-         style="stop-color:#919191"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#4A4A4A"
-         offset="0.813" />
-      <a:midPointStop
-         style="stop-color:#4A4A4A"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#1E1E1E"
-         offset="0.9373" />
-      <a:midPointStop
-         style="stop-color:#1E1E1E"
-         offset="0.5" />
-      <a:midPointStop
-         style="stop-color:#0D0D0D"
-         offset="1" />
-    </linearGradient>
-  </defs>
-  <g
-     transform="matrix(2.0830394,0,0,2.0830394,-2.7158205,-1.6551108)"
-     id="g2735">
-    <path
-       d="M 38.8125,4.88574 C 34.00684,3.94433 18.62012,2.92529 18.03369,2.92529 C 17.44531,2.92529 15.28808,3.38379 14.93457,3.72607 C 14.8291,3.8291 14.81787,3.8291 14.82666,3.80273 L 14.84229,3.81884 C 15.94922,3.68505 34.9375,5.16064 37.96583,6.06396 C 38.61817,6.61084 38.69044,8.49218 38.74708,9.29345 C 38.89845,11.35302 38.59474,28.32031 38.46388,29.6621 C 38.3379,30.95702 38.4131,31.27929 37.8213,32.16796 C 37.62013,32.46484 37.45607,32.63671 37.11232,32.74413 C 37.12013,32.74022 37.23146,32.73241 37.23634,32.73046 C 37.93751,32.58983 40.54493,30.97069 40.78029,30.22265 C 41.29982,28.34179 41.70607,10.79247 41.46584,8.16992 C 41.48438,5.16064 39.57227,5.03418 38.8125,4.88574 z "
-       style="fill:url(#XMLID_9_)"
-       id="path2356" />
-    <path
-       d="M 37.82031,32.16797 C 38.41211,31.28125 38.33789,30.95899 38.46386,29.66211 C 38.59472,28.32422 38.93652,11.7793 38.82909,9.86133 C 38.72069,7.94385 38.708,6.57862 38.00975,6.1001 C 36.80176,5.3623 16.21094,3.75537 14.84131,3.81885 C 13.47217,3.8833 13.29639,26.92383 14.1211,27.20508 C 14.67237,28.03125 35.43848,32.70508 36.86719,32.74414 C 37.32813,32.7832 37.60938,32.48438 37.82031,32.16797 z "
-       style="fill:#ffffff"
-       id="path2358" />
-    <path
-       d="M 37.67578,10.2373 C 37.62598,8.34619 37.70117,7.6372 37.0664,7.16308 C 36.52051,6.604 17.74316,4.69287 16.24512,4.88672 C 16.13379,4.89942 15.62403,5.13428 15.5625,5.16211 C 16.45996,4.77881 36.09863,6.8208 36.64648,7.37891 C 37.32519,7.87012 37.20507,8.56006 37.25586,10.45215 C 37.32813,13.60108 37.24414,27.40235 37.12793,28.65235 C 37.03613,30.91016 36.35645,31.37501 35.68652,31.45508 C 35.76367,31.44922 35.83886,31.44336 35.90136,31.43164 C 36.73534,31.24609 37.46093,30.61133 37.54687,28.43945 C 37.66504,27.1875 37.74805,13.38574 37.67578,10.2373 z "
-       style="fill:#464646"
-       id="path2360" />
-    <path
-       d="M 37.12695,28.68359 C 37.25,27.46875 37.34765,13.40722 37.27148,10.3413 C 37.21875,8.4995 37.34277,7.82665 36.63085,7.34862 C 36.05858,6.80516 16.6494,4.791 15.70995,5.16405 C 14.76855,5.5376 14.6792,7.93262 14.6665,15.2085 C 14.66015,18.84766 14.62109,21.4668 14.6499,23.27344 C 14.67822,25.07813 14.77295,26.06836 15.03515,26.45117 C 15.70214,27.38086 33.5039,31.45508 35.22167,31.42187 C 35.35546,31.42578 35.5664,31.42382 35.75097,31.4121 C 36.45313,31.33594 37.03027,30.88477 37.12695,28.68359 z "
-       style="fill:url(#XMLID_10_)"
-       id="path2371" />
-    <path
-       d="M 13.88525,26.61621 C 14.35742,26.95703 14.54834,27.49902 14.31298,27.82519 L 4.11621,41.89746 C 3.87988,42.22363 3.30566,42.20996 2.83301,41.86914 L 2.83301,41.86914 C 2.36231,41.52637 2.1709,40.98535 2.40723,40.6582 L 12.60303,26.58691 C 12.83936,26.26074 13.41357,26.27344 13.88525,26.61621 L 13.88525,26.61621 z "
-       style="fill:url(#XMLID_11_)"
-       id="path2378" />
-    <path
-       d="M 19.96289,20.87451 L 19.0415,20.7124 C 18.20654,20.56592 17.53418,21.12256 17.54052,21.95801 L 17.56249,25.24707 C 17.56835,26.08008 18.24755,26.88477 19.08007,27.04102 L 19.9995,27.2129 C 20.83348,27.3711 21.50389,26.81446 21.4995,25.97462 L 21.48095,22.6631 C 21.47559,21.82031 20.79688,21.021 19.96289,20.87451 z M 21.12646,25.59375 C 21.13037,26.27344 20.58593,26.72559 19.91015,26.60059 L 19.16259,26.46094 C 18.48779,26.33301 17.93505,25.68067 17.93114,25.00489 L 17.91356,22.33448 C 17.90917,21.65626 18.45458,21.20362 19.13036,21.32276 L 19.87938,21.45557 C 20.55663,21.57422 21.1079,22.22608 21.1118,22.90625 L 21.12646,25.59375 z "
-       id="path2380" />
-    <path
-       d="M 28.68457,23.13477 L 28.04687,23.02247 C 27.46875,22.9209 27,23.31738 27.00195,23.9082 L 27.00976,26.2334 C 27.01171,26.82422 27.48242,27.3916 28.05956,27.5 L 28.69628,27.61914 C 29.27441,27.72852 29.74023,27.33301 29.73925,26.73828 L 29.73339,24.39453 C 29.73242,23.80078 29.26367,23.23633 28.68457,23.13477 z M 29.48047,26.4707 C 29.48145,26.95312 29.10449,27.27343 28.63477,27.18652 L 28.11719,27.08886 C 27.65039,27.00292 27.26758,26.54198 27.26563,26.06249 L 27.25977,24.17089 C 27.25879,23.69335 27.63868,23.37109 28.10645,23.45409 L 28.625,23.54589 C 29.0957,23.6289 29.47461,24.08788 29.47559,24.56835 L 29.48047,26.4707 z "
-       id="path2382" />
-    <polygon
-       points="15.91357,26.36426 15.12744,26.21777 15.08936,21.15137 15.87598,21.29004 15.91357,26.36426 "
-       id="polygon2384" />
-    <polygon
-       points="15.21777,22.12402 13.8667,21.88379 15.21045,21.19824 15.21777,22.12402 "
-       id="polygon2386" />
-    <polygon
-       points="24.64063,27.96387 23.85449,27.81738 23.81641,22.75098 24.60352,22.88965 24.64063,27.96387 "
-       id="polygon2388" />
-    <polygon
-       points="23.94434,23.72363 22.59375,23.48242 23.9375,22.79785 23.94434,23.72363 "
-       id="polygon2390" />
-    <polygon
-       points="32.44043,28.25 31.7959,28.12988 31.79004,23.80859 32.43555,23.92285 32.44043,28.25 "
-       id="polygon2392" />
-    <polygon
-       points="31.88867,24.6377 30.78223,24.44043 31.8877,23.84766 31.88867,24.6377 "
-       id="polygon2394" />
-    <polygon
-       points="35.36426,28.73633 34.71973,28.61523 34.71875,24.26465 35.36426,24.37793 35.36426,28.73633 "
-       id="polygon2396" />
-    <polygon
-       points="34.81641,25.09863 33.70996,24.90137 34.81641,24.30371 34.81641,25.09863 "
-       id="polygon2398" />
-    <path
-       d="M 20.7041,8.17773 L 20.0625,8.08886 C 19.48047,8.00878 19.0127,8.4121 19.01611,8.99072 L 19.03174,11.26806 C 19.03565,11.84667 19.50928,12.38574 20.08936,12.47314 L 20.72999,12.56933 C 21.31104,12.65673 21.77833,12.25488 21.77491,11.67236 L 21.76221,9.37793 C 21.75879,8.79492 21.28564,8.25781 20.7041,8.17773 z M 21.51514,11.41895 C 21.51758,11.89063 21.13868,12.21778 20.66748,12.14747 L 20.14697,12.06983 C 19.67627,11.99903 19.2915,11.56104 19.28857,11.0918 L 19.27636,9.24121 C 19.27343,8.77197 19.65331,8.44433 20.1245,8.50976 L 20.646,8.58252 C 21.11768,8.64844 21.50196,9.08496 21.50489,9.55713 L 21.51514,11.41895 z "
-       id="path2400" />
-    <path
-       d="M 24.59961,8.75439 L 23.95703,8.66601 C 23.37695,8.58544 22.90723,8.99365 22.91015,9.5791 L 22.92187,11.87988 C 22.9248,12.46484 23.39843,13.00927 23.97851,13.09619 L 24.61914,13.19287 C 25.20117,13.28027 25.66797,12.87353 25.66602,12.28467 L 25.65723,9.96631 C 25.65527,9.37744 25.18262,8.83496 24.59961,8.75439 z M 25.40625,12.02881 C 25.4082,12.50537 25.0293,12.83692 24.55664,12.76611 L 24.03516,12.68798 C 23.56641,12.61816 23.18164,12.17577 23.17969,11.70165 L 23.16992,9.83202 C 23.16699,9.35741 23.54883,9.02587 24.01953,9.0913 L 24.54101,9.16454 C 25.01464,9.22997 25.3955,9.67089 25.39746,10.14745 L 25.40625,12.02881 z "
-       id="path2402" />
-    <path
-       d="M 28.64648,9.25537 L 28.00586,9.1665 C 27.42383,9.08642 26.95313,9.5 26.95508,10.09082 L 26.96289,12.41748 C 26.96484,13.0083 27.43848,13.55762 28.01855,13.64502 L 28.65918,13.74121 C 29.24121,13.82861 29.70898,13.4165 29.70801,12.82178 L 29.70313,10.47852 C 29.70117,9.8833 29.23047,9.33594 28.64648,9.25537 z M 29.44824,12.56348 C 29.44922,13.04493 29.07031,13.38037 28.59765,13.30957 L 28.07617,13.23242 C 27.60644,13.16211 27.22265,12.71582 27.2207,12.23681 L 27.21484,10.34618 C 27.21289,9.86669 27.5957,9.53124 28.06543,9.59667 L 28.58789,9.66942 C 29.06152,9.73534 29.44141,10.17967 29.44238,10.6621 L 29.44824,12.56348 z "
-       id="path2404" />
-    <polygon
-       points="17.6748,11.98242 17.02686,11.88525 16.99512,7.73242 17.64453,7.82227 17.6748,11.98242 "
-       id="polygon2406" />
-    <polygon
-       points="17.10156,8.52637 15.98779,8.36963 17.0957,7.76709 17.10156,8.52637 "
-       id="polygon2408" />
-    <polygon
-       points="32.4248,14.23389 31.77637,14.13623 31.76953,9.81738 32.41992,9.90723 32.4248,14.23389 "
-       id="polygon2410" />
-    <polygon
-       points="31.87012,10.64258 30.75684,10.48584 31.86914,9.85303 31.87012,10.64258 "
-       id="polygon2412" />
-    <polygon
-       points="35.36426,14.61377 34.71582,14.5166 34.71484,10.16455 35.36426,10.25439 35.36426,14.61377 "
-       id="polygon2414" />
-    <polygon
-       points="34.81348,10.99561 33.7002,10.83887 34.81348,10.19971 34.81348,10.99561 "
-       id="polygon2416" />
-    <path
-       d="M 24.27832,14.48389 L 23.49707,14.36133 C 22.78906,14.25049 22.21875,14.73779 22.22266,15.45069 L 22.23682,18.25782 C 22.24024,18.97071 22.81641,19.64552 23.52051,19.76563 L 24.30078,19.89698 C 25.00683,20.0171 25.57617,19.53126 25.57422,18.81348 L 25.56348,15.98535 C 25.55957,15.26709 24.98535,14.59521 24.27832,14.48389 z M 25.25781,18.49561 C 25.25976,19.07764 24.79883,19.47217 24.22461,19.37598 L 23.59082,19.26856 C 23.02051,19.17286 22.55273,18.62501 22.54883,18.0459 L 22.53809,15.76563 C 22.53613,15.1875 23,14.79102 23.57227,14.88184 L 24.20606,14.98243 C 24.78126,15.07374 25.24708,15.61915 25.24805,16.20118 L 25.25781,18.49561 z "
-       id="path2418" />
-    <path
-       d="M 28.66602,16.29541 L 28.02637,16.19482 C 27.44629,16.104 26.97657,16.50878 26.97852,17.09961 L 26.98731,19.42627 C 26.98926,20.0166 27.45997,20.5752 28.04004,20.67334 L 28.67774,20.78125 C 29.25782,20.87939 29.72462,20.47607 29.72364,19.88135 L 29.71876,17.5376 C 29.7168,16.94287 29.24707,16.38672 28.66602,16.29541 z M 29.46484,19.61768 C 29.46582,20.09961 29.08789,20.42774 28.61621,20.34864 L 28.09668,20.26124 C 27.62891,20.18263 27.24609,19.72901 27.24414,19.24952 L 27.23828,17.35938 C 27.23633,16.88038 27.61719,16.55127 28.08594,16.62549 L 28.60645,16.70752 C 29.07813,16.78272 29.45899,17.23438 29.45997,17.7168 L 29.46484,19.61768 z "
-       id="path2420" />
-    <polygon
-       points="15.85449,18.26416 15.06592,18.13037 15.02881,13.06592 15.81787,13.19043 15.85449,18.26416 "
-       id="polygon2422" />
-    <polygon
-       points="15.15674,14.03613 13.80176,13.82031 15.1499,13.10986 15.15674,14.03613 "
-       id="polygon2424" />
-    <polygon
-       points="20.29785,20.33643 19.2832,20.16504 19.23535,13.64795 20.25049,13.80811 20.29785,20.33643 "
-       id="polygon2426" />
-    <polygon
-       points="19.3999,14.89648 17.65625,14.61865 19.39111,13.70459 19.3999,14.89648 "
-       id="polygon2428" />
-    <polygon
-       points="32.43262,21.34326 31.78613,21.23438 31.78027,16.91504 32.42773,17.01709 32.43262,21.34326 "
-       id="polygon2430" />
-    <polygon
-       points="31.87988,17.7417 30.76953,17.56494 31.87891,16.95215 31.87988,17.7417 "
-       id="polygon2432" />
-    <polygon
-       points="35.36426,21.77783 34.71777,21.66895 34.7168,17.31641 35.36426,17.41846 35.36426,21.77783 "
-       id="polygon2434" />
-    <polygon
-       points="34.81543,18.14941 33.70508,17.97217 34.81543,17.35352 34.81543,18.14941 "
-       id="polygon2436" />
-    <path
-       d="M 19.2666,10.71484 C 14.11426,10.71484 9.9375,14.8916 9.9375,20.04394 C 9.9375,25.19531 14.11426,29.37207 19.2666,29.37207 C 24.41797,29.37207 28.59375,25.19531 28.59375,20.04394 C 28.59375,14.8916 24.41797,10.71484 19.2666,10.71484 z M 19.22803,28.43945 C 14.56983,28.43945 10.79297,24.66308 10.79297,20.00537 C 10.79297,15.34717 14.56983,11.57031 19.22803,11.57031 C 23.88574,11.57031 27.66114,15.34717 27.66114,20.00537 C 27.66113,24.66309 23.88574,28.43945 19.22803,28.43945 z "
-       style="fill:#3b5375"
-       id="path2438" />
-    <path
-       d="M 19.22803,11.57031 C 14.56983,11.57031 10.79297,15.34717 10.79297,20.00537 C 10.79297,24.66308 14.56983,28.43945 19.22803,28.43945 C 23.88574,28.43945 27.66114,24.66308 27.66114,20.00537 C 27.66113,15.34717 23.88574,11.57031 19.22803,11.57031 z M 19.30566,27.66211 C 15.12011,27.66211 11.72607,24.26856 11.72607,20.08301 C 11.72607,15.89746 15.12011,12.50342 19.30566,12.50342 C 23.49121,12.50342 26.88379,15.89746 26.88379,20.08301 C 26.88379,24.26856 23.49121,27.66211 19.30566,27.66211 z "
-       style="fill:#f8f1df"
-       id="path2440" />
-    <circle
-       cx="19.30566"
-       cy="20.08276"
-       r="7.57935"
-       style="opacity:0.35;fill:url(#XMLID_12_)"
-       id="circle2447" />
-  </g>
-</svg>
--- a/memspyui/memspyui.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
-
-SUBDIRS = group \
-          ui/hb
--- a/memspyui/memspywindowserverhelper/bwins/memspywindowserverhelperu.def	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-EXPORTS
-	?WindowGroupListL@CMemSpyEngineHelperWindowServerImpl@@UAEPAVMMemSpyEngineWindowGroupList@@XZ @ 1 NONAME ; class MMemSpyEngineWindowGroupList * CMemSpyEngineHelperWindowServerImpl::WindowGroupListL(void)
-	?ItemIndex@CMemSpyEngineWindowGroupListImpl@@UBEHABVTMemSpyEngineWindowGroupBasicInfo@@@Z @ 2 NONAME ; int CMemSpyEngineWindowGroupListImpl::ItemIndex(class TMemSpyEngineWindowGroupBasicInfo const &) const
-	?NewMemSpyEngineHelperWindowServerImplL@@YAPAVMMemSpyEngineHelperWindowServer@@XZ @ 3 NONAME ; class MMemSpyEngineHelperWindowServer * NewMemSpyEngineHelperWindowServerImplL(void)
-	?MdcaPoint@CMemSpyEngineWindowGroupListImpl@@UBE?AVTPtrC16@@H@Z @ 4 NONAME ; class TPtrC16 CMemSpyEngineWindowGroupListImpl::MdcaPoint(int) const
-	?At@CMemSpyEngineWindowGroupListImpl@@UBEABVTMemSpyEngineWindowGroupBasicInfo@@H@Z @ 5 NONAME ; class TMemSpyEngineWindowGroupBasicInfo const & CMemSpyEngineWindowGroupListImpl::At(int) const
-	?GetWindowGroupListL@CMemSpyEngineHelperWindowServerImpl@@UAEXAAV?$RArray@VTMemSpyEngineWindowGroupBasicInfo@@@@@Z @ 6 NONAME ; void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupListL(class RArray<class TMemSpyEngineWindowGroupBasicInfo> &)
-	?Count@CMemSpyEngineWindowGroupListImpl@@UBEHXZ @ 7 NONAME ; int CMemSpyEngineWindowGroupListImpl::Count(void) const
-	?SwitchToL@CMemSpyEngineHelperWindowServerImpl@@UAEXH@Z @ 8 NONAME ; void CMemSpyEngineHelperWindowServerImpl::SwitchToL(int)
-	?GetWindowGroupDetailsL@CMemSpyEngineHelperWindowServerImpl@@UAEXHAAVTMemSpyEngineWindowGroupDetails@@@Z @ 9 NONAME ; void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupDetailsL(int, class TMemSpyEngineWindowGroupDetails &)
-	?NewL@CMemSpyEngineHelperWindowServerImpl@@SAPAV1@XZ @ 10 NONAME ; class CMemSpyEngineHelperWindowServerImpl * CMemSpyEngineHelperWindowServerImpl::NewL(void)
-	?MdcaCount@CMemSpyEngineWindowGroupListImpl@@UBEHXZ @ 11 NONAME ; int CMemSpyEngineWindowGroupListImpl::MdcaCount(void) const
-
--- a/memspyui/memspywindowserverhelper/eabi/memspywindowserverhelperu.def	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-EXPORTS
-	_Z38NewMemSpyEngineHelperWindowServerImplLv @ 1 NONAME
-	_ZN35CMemSpyEngineHelperWindowServerImpl16WindowGroupListLEv @ 2 NONAME
-	_ZN35CMemSpyEngineHelperWindowServerImpl19GetWindowGroupListLER6RArrayI33TMemSpyEngineWindowGroupBasicInfoE @ 3 NONAME
-	_ZN35CMemSpyEngineHelperWindowServerImpl22GetWindowGroupDetailsLEiR31TMemSpyEngineWindowGroupDetails @ 4 NONAME
-	_ZN35CMemSpyEngineHelperWindowServerImpl4NewLEv @ 5 NONAME
-	_ZN35CMemSpyEngineHelperWindowServerImpl9SwitchToLEi @ 6 NONAME
-	_ZNK32CMemSpyEngineWindowGroupListImpl2AtEi @ 7 NONAME
-	_ZNK32CMemSpyEngineWindowGroupListImpl5CountEv @ 8 NONAME
-	_ZNK32CMemSpyEngineWindowGroupListImpl9ItemIndexERK33TMemSpyEngineWindowGroupBasicInfo @ 9 NONAME
-	_ZNK32CMemSpyEngineWindowGroupListImpl9MdcaCountEv @ 10 NONAME
-	_ZNK32CMemSpyEngineWindowGroupListImpl9MdcaPointEi @ 11 NONAME
-	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl16WindowGroupListLEv @ 12 NONAME
-	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl19GetWindowGroupListLER6RArrayI33TMemSpyEngineWindowGroupBasicInfoE @ 13 NONAME
-	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl22GetWindowGroupDetailsLEiR31TMemSpyEngineWindowGroupDetails @ 14 NONAME
-	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl9SwitchToLEi @ 15 NONAME
-	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl2AtEi @ 16 NONAME
-	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl5CountEv @ 17 NONAME
-	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9ItemIndexERK33TMemSpyEngineWindowGroupBasicInfo @ 18 NONAME
-	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9MdcaCountEv @ 19 NONAME
-	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9MdcaPointEi @ 20 NONAME
-
--- a/memspyui/memspywindowserverhelper/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +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:  Build information file for MemSpyWindowServerHelper
-*
-*/
-
-
-PRJ_PLATFORMS
-
-PRJ_EXPORTS
-
-PRJ_MMPFILES
-memspywindowserverhelper.mmp
-
-
-// End of File
--- a/memspyui/memspywindowserverhelper/group/memspywindowserverhelper.mmp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +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:  DLL implementing the MMemSpyEngineHelperWindowServer Interface
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-TARGET          memspywindowserverhelper.dll
-TARGETTYPE      dll
-UID             0x1000008D 0x20028783
-VENDORID        VID_DEFAULT
-SMPSAFE
-
-CAPABILITY      ALL -TCB
-
-SOURCEPATH      ../src
-SOURCE          MemSpyEngineHelperWindowServerImpl.cpp
-
-USERINCLUDE     ../inc
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY         euser.lib
-LIBRARY			ws32.lib apgrfx.lib
-
-
-// End of File
--- a/memspyui/memspywindowserverhelper/inc/MemSpyEngineHelperWindowServerImpl.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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:
-*
-*/
-
-#ifndef MEMSPYENGINEHELPERWINDOWSERVERIMPL_H
-#define MEMSPYENGINEHELPERWINDOWSERVERIMPL_H
-
-// System includes
-#include <e32base.h>
-#include <w32std.h>
-
-
-// User includes
-#include <memspy/engine/memspyenginehelperwindowserver.h>
-
-
-// Classes referenced
-
-
-NONSHARABLE_CLASS( CMemSpyEngineHelperWindowServerImpl ) : public CBase, public MMemSpyEngineHelperWindowServer
-    {
-public:
-    IMPORT_C static CMemSpyEngineHelperWindowServerImpl* NewL();
-    virtual ~CMemSpyEngineHelperWindowServerImpl();
-
-private:
-    CMemSpyEngineHelperWindowServerImpl();
-    void ConstructL();
-
-public: // API
-    IMPORT_C MMemSpyEngineWindowGroupList* WindowGroupListL();
-    IMPORT_C void GetWindowGroupListL( RArray<TMemSpyEngineWindowGroupBasicInfo>& aWindowGroups );
-    IMPORT_C void GetWindowGroupDetailsL( TInt aWindowGroupId, TMemSpyEngineWindowGroupDetails& aWindowGroupDetails );
-    IMPORT_C void SwitchToL( TInt aWindowGroupId );
-
-private:
-    RWsSession iWsSession;
-    };
-
-
-
-
-NONSHARABLE_CLASS( CMemSpyEngineWindowGroupListImpl ) : public CBase, public MMemSpyEngineWindowGroupList
-    {
-public:
-    static CMemSpyEngineWindowGroupListImpl* NewLC();
-    virtual ~CMemSpyEngineWindowGroupListImpl();
-    
-private:
-    CMemSpyEngineWindowGroupListImpl();
-    void ConstructL();
-
-public: // API
-    IMPORT_C TInt Count() const;
-    IMPORT_C const TMemSpyEngineWindowGroupBasicInfo& At( TInt aIndex ) const;
-    IMPORT_C TInt ItemIndex( const TMemSpyEngineWindowGroupBasicInfo& aEntry ) const;
-
-public: // But not exported
-    void AddItemL( TMemSpyEngineWindowGroupBasicInfo& aItem );
-
-public: // From MDesCArray
-    IMPORT_C TInt MdcaCount() const;
-    IMPORT_C TPtrC MdcaPoint( TInt aIndex ) const;
-
-private: // Data members
-    RArray<TMemSpyEngineWindowGroupBasicInfo> iItems;
-    };
-
-
-#endif
--- a/memspyui/memspywindowserverhelper/src/MemSpyEngineHelperWindowServerImpl.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +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 "MemSpyEngineHelperWindowServerImpl.h"
-
-// System includes
-#include <apgwgnam.h>
-#include <apgtask.h>
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-EXPORT_C MMemSpyEngineHelperWindowServer* NewMemSpyEngineHelperWindowServerImplL()
-    {
-    return CMemSpyEngineHelperWindowServerImpl::NewL();
-    }
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-CMemSpyEngineHelperWindowServerImpl::CMemSpyEngineHelperWindowServerImpl()
-    {
-    }
-
-    
-CMemSpyEngineHelperWindowServerImpl::~CMemSpyEngineHelperWindowServerImpl()
-    {
-    iWsSession.Close();
-    }
-
-
-void CMemSpyEngineHelperWindowServerImpl::ConstructL()
-    {
-    User::LeaveIfError( iWsSession.Connect() );
-    }
-
-
-EXPORT_C CMemSpyEngineHelperWindowServerImpl* CMemSpyEngineHelperWindowServerImpl::NewL()
-    {
-    CMemSpyEngineHelperWindowServerImpl* self = new(ELeave) CMemSpyEngineHelperWindowServerImpl();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-EXPORT_C MMemSpyEngineWindowGroupList* CMemSpyEngineHelperWindowServerImpl::WindowGroupListL()
-    {
-    CMemSpyEngineWindowGroupListImpl* list = CMemSpyEngineWindowGroupListImpl::NewLC();
-    //
-    RArray<TMemSpyEngineWindowGroupBasicInfo> groups;
-    CleanupClosePushL( groups );
-    //
-    GetWindowGroupListL( groups );
-    //
-    const TInt count = groups.Count();
-    for( TInt i = 0; i < count; i++ )
-        {
-        list->AddItemL( groups[ i ] );
-        }
-    //
-    CleanupStack::PopAndDestroy( &groups );
-
-    // Done
-    CleanupStack::Pop( list );
-    return list;
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupListL( RArray<TMemSpyEngineWindowGroupBasicInfo>& aWindowGroups )
-    {
-    TInt count;
-    User::LeaveIfError( count = iWsSession.NumWindowGroups() );
-    RArray<RWsSession::TWindowGroupChainInfo> array;
-    CleanupClosePushL( array );
-    User::LeaveIfError( iWsSession.WindowGroupList( &array ) );
-    for (TInt i =0; i < count; i++ )
-        {
-        TMemSpyEngineWindowGroupBasicInfo group;
-        group.iId = array[i].iId;
-        TThreadId threadId;
-        RThread thread;
-        iWsSession.GetWindowGroupClientThreadId( array[i].iId, threadId );
-        group.iThreadId = threadId;
-        group.iOrdinalPosition = i;
-        if ( !thread.Open( threadId ) )
-            {
-            _LIT( KLineFormatSpec, "%d\t%S" );
-            group.iFullName.Format( KLineFormatSpec, group.iId, &thread.Name() );
-            }
-        else
-            {
-            _LIT( KLineFormatSpec, "%d\t<Unresolved name>" );
-            group.iFullName.Format( KLineFormatSpec, group.iId );
-            }
-        thread.Close();        
-        aWindowGroups.AppendL( group );
-        }
-    CleanupStack::PopAndDestroy( &array );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupDetailsL( TInt aWindowGroupId, TMemSpyEngineWindowGroupDetails& aWindowGroupDetails )
-    {
-    TThreadId threadId;
-    RThread thread;
-    iWsSession.GetWindowGroupClientThreadId( aWindowGroupId, threadId );
-    aWindowGroupDetails.iThreadId = threadId;
-    aWindowGroupDetails.iId = aWindowGroupId;
-    if ( !thread.Open( threadId ) )
-        {
-        aWindowGroupDetails.iFullName.Copy( thread.Name() );
-        }
-    else
-        {
-        aWindowGroupDetails.iFullName.Copy( _L("<Unresolved name>") );
-        }
-    thread.Close();
-    aWindowGroupDetails.iPriority = iWsSession.GetWindowGroupOrdinalPriority( aWindowGroupId );
-    aWindowGroupDetails.iWindowGroupHandle = iWsSession.GetWindowGroupHandle( aWindowGroupId );
-    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( iWsSession, aWindowGroupId );
-    aWindowGroupDetails.iUID = wgName->AppUid();
-    aWindowGroupDetails.iIsBusy = wgName->IsBusy();
-    aWindowGroupDetails.iIsSystem = wgName->IsSystem();
-    aWindowGroupDetails.iIsHidden = wgName->Hidden();
-    aWindowGroupDetails.iCaption = wgName->Caption();
-    aWindowGroupDetails.iDocName = wgName->DocName();
-    CleanupStack::PopAndDestroy( wgName );
-    }
-        
-
-EXPORT_C void CMemSpyEngineHelperWindowServerImpl::SwitchToL( TInt aWindowGroupId )
-    {
-    TApaTask task( iWsSession );
-    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( iWsSession, aWindowGroupId );
-    task.SetWgId( aWindowGroupId );
-    if ( wgName->Hidden() )
-        {
-        User::Leave( KErrGeneral );
-        }
-    if ( !task.Exists() )
-        {
-        User::Leave( KErrNotFound );
-        }
-    task.BringToForeground();                     
-    CleanupStack::PopAndDestroy( wgName );
-    }
-
-
-
-
-
-
-
-
-        
-CMemSpyEngineWindowGroupListImpl::CMemSpyEngineWindowGroupListImpl()
-    {
-    }
-
-
-CMemSpyEngineWindowGroupListImpl::~CMemSpyEngineWindowGroupListImpl()
-    {
-    iItems.Close();
-    }
-
-
-void CMemSpyEngineWindowGroupListImpl::ConstructL()
-    {
-    }
-
-
-CMemSpyEngineWindowGroupListImpl* CMemSpyEngineWindowGroupListImpl::NewLC()
-    {
-    CMemSpyEngineWindowGroupListImpl* self = new(ELeave) CMemSpyEngineWindowGroupListImpl();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-
-EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::Count() const
-    {
-    return iItems.Count();
-    }
-
-
-EXPORT_C const TMemSpyEngineWindowGroupBasicInfo& CMemSpyEngineWindowGroupListImpl::At( TInt aIndex ) const
-    {
-    return iItems[ aIndex ];
-    }
-
-
-EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::ItemIndex( const TMemSpyEngineWindowGroupBasicInfo& /*aEntry*/ ) const
-    {
-    TInt ret = KErrNotFound;
-    return ret;
-    }
-
-
-void CMemSpyEngineWindowGroupListImpl::AddItemL( TMemSpyEngineWindowGroupBasicInfo& aItem )
-    {
-    iItems.AppendL( aItem );
-    }
-
-
-EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::MdcaCount() const
-    {
-    return Count();
-    }
-
-
-EXPORT_C TPtrC CMemSpyEngineWindowGroupListImpl::MdcaPoint( TInt aIndex ) const
-    {
-    return TPtrC( At( aIndex ).iFullName );
-    }
-
-
--- a/memspyui/rom/memspyui.iby	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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:
-*
-*/
-
-#ifndef MEMSPYUI_IBY
-#define MEMSPYUI_IBY
-
-
-S60_APP_EXE(MemSpyUI)
-S60_APP_AIF_ICONS(MemSpyUI)
-S60_APP_RESOURCE(MemSpyUI)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,MemSpyUI)
-data=ZPRIVATE\10003a3f\import\APPS\MemSpyUI_reg.RSC Private\10003a3f\import\Apps\MemSpyUI_reg.rsc
-
-
-data=ZPRIVATE\2002129F\MemSpyEComInterfaceIds.xml							\private\2002129F\MemSpyEComInterfaceIds.xml
-data=ZPRIVATE\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml		\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml
-
-// Stub SIS
-data=ZSYSTEM\Install\MemSpy_stub.sis                                        \system\install\MemSpy_stub.sis
-
-// MemSpyWindowServerHelper
-file=ABI_DIR\BUILD_DIR\memspywindowserverhelper.dll							SHARED_LIB_DIR\memspywindowserverhelper.dll
-
-#endif
--- a/memspyui/sis/MemSpy_S60-50.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +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:
-;
-
-
-; Language - standard language definitions
-&EN
-
-; Standard SIS file header
-#{"MemSpy"},(0x2002129F),1,2,0,TYPE=SA
-
-; Supports S60 v 5.0
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; Engine:
-"\epoc32\release\armv5\urel\MemSpyDriver.ldd"-"!:\sys\bin\MemSpyDriver.ldd"
-"\epoc32\release\armv5\urel\MemSpyDriverClient.dll"-"!:\sys\bin\MemSpyDriverClient.dll"
-"\epoc32\release\armv5\urel\MemSpyEngine.dll"-"!:\sys\bin\MemSpyEngine.dll"
-"\epoc32\release\armv5\urel\MemSpy.exe"-"!:\sys\bin\MemSpy.exe"
-"\epoc32\release\armv5\urel\MemSpyConsole.exe"-"!:\sys\bin\MemSpyConsole.exe"
-"\epoc32\data\z\private\2002129E\MemSpyEComInterfaceIds.xml"-"c:\private\2002129E\MemSpyEComInterfaceIds.xml"
-"\epoc32\data\z\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-
-; UI:
-"\epoc32\release\armv5\urel\MemSpyUI.exe"-"!:\sys\bin\MemSpyUI.exe"
-"\epoc32\data\z\Resource\apps\MemSpyUI_aif.mif"-"!:\Resource\Apps\MemSpyUI_aif.mif"
-"\epoc32\data\z\Resource\apps\MemSpyUI.rsc"-"!:\Resource\Apps\MemSpyUI.rsc"
-"\epoc32\data\z\private\10003A3F\apps\MemSpyUI_reg.rsc"-"!:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
-"\epoc32\data\z\private\2002129F\MemSpyEComInterfaceIds.xml"-"c:\private\2002129F\MemSpyEComInterfaceIds.xml"
-"\epoc32\data\z\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-"\epoc32\release\armv5\urel\memspywindowserverhelper.dll"-"!:\sys\bin\memspywindowserverhelper.dll"
Binary file memspyui/sis/MemSpy_S60-50.sis has changed
--- a/memspyui/sis/MemSpy_S60-52.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +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:
-;
-
-
-; Language - standard language definitions
-&EN
-
-; Standard SIS file header
-#{"MemSpy"},(0x2002129F),1,2,0,TYPE=SA
-
-; Supports S60 v 5.2
-[0x20022E6D], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; Engine:
-"\epoc32\release\armv5\urel\MemSpyDriver.ldd"-"!:\sys\bin\MemSpyDriver.ldd"
-"\epoc32\release\armv5\urel\MemSpyDriverClient.dll"-"!:\sys\bin\MemSpyDriverClient.dll"
-"\epoc32\release\armv5\urel\MemSpyEngine.dll"-"!:\sys\bin\MemSpyEngine.dll"
-"\epoc32\release\armv5\urel\MemSpy.exe"-"!:\sys\bin\MemSpy.exe"
-"\epoc32\release\armv5\urel\MemSpyConsole.exe"-"!:\sys\bin\MemSpyConsole.exe"
-"\epoc32\data\z\private\2002129E\MemSpyEComInterfaceIds.xml"-"c:\private\2002129E\MemSpyEComInterfaceIds.xml"
-"\epoc32\data\z\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-
-; UI:
-"\epoc32\release\armv5\urel\MemSpyUI.exe"-"!:\sys\bin\MemSpyUI.exe"
-"\epoc32\data\z\Resource\apps\MemSpyUI_aif.mif"-"!:\Resource\Apps\MemSpyUI_aif.mif"
-"\epoc32\data\z\Resource\apps\MemSpyUI.rsc"-"!:\Resource\Apps\MemSpyUI.rsc"
-"\epoc32\data\z\private\10003A3F\apps\MemSpyUI_reg.rsc"-"!:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
-"\epoc32\data\z\private\2002129F\MemSpyEComInterfaceIds.xml"-"c:\private\2002129F\MemSpyEComInterfaceIds.xml"
-"\epoc32\data\z\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-"\epoc32\release\armv5\urel\memspywindowserverhelper.dll"-"!:\sys\bin\memspywindowserverhelper.dll"
Binary file memspyui/sis/MemSpy_S60-52.sis has changed
--- a/memspyui/sis/MemSpy_stub.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +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:
-;
-
-
-; Language - standard language definitions
-&EN
-
-; Standard SIS file header
-#{"MemSpyUI"},(0x2002129F),1,0,0
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; Engine:
-""-"z:\sys\bin\MemSpyDriver.ldd"
-""-"z:\sys\bin\MemSpyDriverClient.dll"
-""-"z:\sys\bin\MemSpyEngine.dll"
-""-"z:\sys\bin\MemSpy.exe"
-""-"z:\sys\bin\MemSpyConsole.exe"
-""-"z:\private\2002129E\MemSpyEComInterfaceIds.xml"
-""-"z:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-
-; UI:
-""-"z:\sys\bin\MemSpyUI.exe"
-""-"z:\Resource\Apps\MemSpyUI_aif.mif"
-""-"z:\Resource\Apps\MemSpyUI.rsc"
-""-"z:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
-""-"z:\private\2002129F\MemSpyEComInterfaceIds.xml"
-""-"z:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
-""-"z:\sys\bin\memspywindowserverhelper.dll"
--- a/memspyui/ui/avkon/group/MemSpyCapabilities.mmh	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +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:
-*
-*/
-
-
-CAPABILITY      ReadUserData WriteUserData ReadDeviceData WriteDeviceData SwEvent PowerMgmt
--- a/memspyui/ui/avkon/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +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 <platform_paths.hrh>
-
-PRJ_MMPFILES
-memspyui.mmp
--- a/memspyui/ui/avkon/group/memspyui.mmp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +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 <bldvariant.hrh>
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET          memspyui.exe
-TARGETTYPE      exe
-UID             0x100039CE 0x2002129F
-VENDORID		VID_DEFAULT
-SMPSAFE
-
-EPOCSTACKSIZE	0x4000
-EPOCHEAPSIZE	0x100000 0x4000000
-
-#include		"MemSpyCapabilities.mmh"
-
-SOURCEPATH      ../src
-source          MemSpyApp.cpp 
-source          MemSpyAppUi.cpp
-source          MemSpyDocument.cpp
-source          MemSpyContainer.cpp
-source          MemSpyDeviceWideOperationDialog.cpp
-source          MemSpyExportBitmapsToMemoryCardDialog.cpp
-source          MemSpyUiUtils.cpp
-source          MemSpySettings.cpp
-//
-source          MemSpyViewBase.cpp
-source          MemSpyViewMainMenu.cpp
-source          MemSpyViewType.cpp
-source          MemSpyViewProcesses.cpp
-/*
-source          MemSpyViewServerList.cpp
-source          MemSpyViewOpenFiles.cpp
-source          MemSpyViewRAMInfo.cpp
-source          MemSpyViewROMInfo.cpp
-source          MemSpyViewFBServBitmaps.cpp
-source          MemSpyViewSystemConfig.cpp
-source          MemSpyViewCodeSegList.cpp
-source          MemSpyViewChunkList.cpp
-*/
-source          MemSpyViewKernel.cpp
-source          MemSpyViewKernelContainers.cpp
-source          MemSpyViewKernelHeap.cpp
-source          MemSpyViewKernelObjects.cpp
-/*
-source			MemSpyViewDriveInfo.cpp
-source			MemSpyViewECom.cpp
-*/
-source          MemSpyViewThreads.cpp
-source          MemSpyViewThreadInfoItemList.cpp
-source          MemSpyViewThreadInfoItemGeneric.cpp
-source          MemSpyViewThreadInfoItemHeap.cpp
-source          MemSpyViewThreadInfoItemStack.cpp
-source          MemSpyViewThreadInfoItemCodeSeg.cpp
-source          MemSpyViewThreadInfoItemChunk.cpp
-source          MemSpyViewThreadInfoItemServer.cpp
-source          MemSpyViewThreadInfoItemActiveObject.cpp
-source          MemSpyViewThreadInfoItemGeneralInfo.cpp
-/*
-source          MemSpyViewHeapTracking.cpp
-source          MemSpyViewHeapTrackingResults.cpp
-source          MemSpyViewHeapTrackingSettings.cpp
-source			MemSpyViewThreadInfoItemMemoryTracking.cpp
-source			MemSpyViewMemoryTrackingAutoStartConfig.cpp
-source			MemSpyViewWindowGroups.cpp
-source          MemSpyViewKernelObjects.cpp
-*/
-
-USERINCLUDE		../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-
-START RESOURCE    ../../../data/memspyui.rss
-HEADER
-TARGETPATH        APP_RESOURCE_DIR
-END
-
-START RESOURCE    ../../../data/memspyui_reg.rss
-DEPENDS           memspyui.rsg
-TARGETPATH        /private/10003a3f/apps
-END
-
-LIBRARY			fbscli.lib				imageconversion.lib		estor.lib		apgrfx.lib
-LIBRARY			euser.lib				apparc.lib				cone.lib		eikcore.lib 
-LIBRARY			eikcoctl.lib			avkon.lib				etext.lib		eikctl.lib		
-LIBRARY			efsrv.lib				bafl.lib				egul.lib		hal.lib
-LIBRARY			cdlengine.lib			xmlframework.lib		charconv.lib	viewcli.lib
-LIBRARY			eikdlg.lib				ws32.lib				bitgdi.lib
-
-LIBRARY         MemSpyClient.lib
-LIBRARY			memspydriverclient.lib
-LIBRARY			memspyengine.lib 
--- a/memspyui/ui/avkon/inc/MemSpy.hrh	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,246 +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:
-*
-*/
-
-#ifndef MEMSPY_HRH
-#define MEMSPY_HRH
-
-#define KMemSpyMenuCommandBase 50000
-#define KMemSpyMenuCommandViewSpecific (KMemSpyMenuCommandBase + 10000)
-
-enum TMemSpyCommandIds
-    {
-	////////////////////////////////
-	// GENERIC MENU COMMANDS
-	////////////////////////////////
-	EMemSpyCmdOpen = KMemSpyMenuCommandBase,
-    //
-    EMemSpyCmdView,
-	EMemSpyCmdViewRefresh,
-	EMemSpyCmdViewOutputToSink,
-    //
-    EMemSpyCmdTools,
-    EMemSpyCmdToolsListOpenFiles,
-	EMemSpyCmdToolsAbout,
-    //
-    EMemSpyCmdPhoneInfo,
-	EMemSpyCmdPhoneInfoGeneral,
-    EMemSpyCmdPhoneInfoGeneralSummary,
-	EMemSpyCmdPhoneInfoGeneralDetailed,
-	EMemSpyCmdPhoneInfoGeneralHandles,
-	EMemSpyCmdPhoneInfoGeneralKernelContainers,
-	EMemSpyCmdPhoneInfoHeap,
-	EMemSpyCmdPhoneInfoHeapInfoSummary,
-    EMemSpyCmdPhoneInfoHeapInfoCompact,
-	EMemSpyCmdPhoneInfoHeapCellListing,
-	EMemSpyCmdPhoneInfoHeapDump,
-    EMemSpyCmdPhoneInfoStack,
-	EMemSpyCmdPhoneInfoStackInfo,
-    EMemSpyCmdPhoneInfoStackInfoCompact,
-	EMemSpyCmdPhoneInfoStackDumpUser,
-	EMemSpyCmdPhoneInfoStackDumpKernel,
-    //
-    EMemSpyCmdAutoCapture,
-    EMemSpyCmdAutoCaptureToggle,
-    EMemSpyCmdAutoCaptureRetryTime,
-    EMemSpyCmdAutoCaptureOperationType,
-	
-	////////////////////////////////
-	// VIEW SPECIFIC MENU COMMANDS
-	////////////////////////////////
-    EMemSpyCmdProcess = KMemSpyMenuCommandViewSpecific,
-	EMemSpyCmdProcessInfo,
-	EMemSpyCmdProcessInfoSummary,
-	EMemSpyCmdProcessInfoHandles,
-    EMemSpyCmdProcessSort,
-    EMemSpyCmdProcessSortById,
-    EMemSpyCmdProcessSortByName,
-    EMemSpyCmdProcessSortByThreadCount,
-    EMemSpyCmdProcessSortByCodeSegs,
-    EMemSpyCmdProcessSortByHeapUsage,
-    EMemSpyCmdProcessSortByStackUsage,
-    EMemSpyCmdProcessEnd,
-    EMemSpyCmdProcessEndKill,
-    EMemSpyCmdProcessEndPanic,
-    EMemSpyCmdProcessEndTerminate,
-    //
-    EMemSpyCmdThread,
-    EMemSpyCmdThreadEnd,
-    EMemSpyCmdThreadEndKill,
-    EMemSpyCmdThreadEndPanic,
-    EMemSpyCmdThreadEndTerminate,
-    EMemSpyCmdThreadSetPriority,
-	EMemSpyCmdThreadSetPriorityAbsoluteVeryLow,
-	EMemSpyCmdThreadSetPriorityAbsoluteLowNormal,
-	EMemSpyCmdThreadSetPriorityAbsoluteLow,
-	EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal,
-	EMemSpyCmdThreadSetPriorityAbsoluteBackground,
-	EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal,
-	EMemSpyCmdThreadSetPriorityAbsoluteForeground,
-	EMemSpyCmdThreadSetPriorityAbsoluteHighNormal,
-	EMemSpyCmdThreadSetPriorityAbsoluteHigh,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime1,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime2,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime3,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime4,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime5,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime6,
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime7, 
-	EMemSpyCmdThreadSetPriorityAbsoluteRealTime8,
-	EMemSpyCmdThreadInfo,
-	EMemSpyCmdThreadInfoHandles,
-    //
-    EMemSpyCmdOutput,
-    EMemSpyCmdOutputToDebug,
-    EMemSpyCmdOutputToFile,
-    //
-    EMemSpyCmdHeap,
-    EMemSpyCmdHeapInfoThread,
-    EMemSpyCmdHeapData,
-    EMemSpyCmdHeapCellListing,
-    EMemSpyCmdHeapDataDump,
-    //
-    EMemSpyCmdStack,
-    EMemSpyCmdStackInfoThread,
-    EMemSpyCmdStackData,
-    EMemSpyCmdStackDataUser,
-    EMemSpyCmdStackDataKernel,
-    //
-    EMemSpyCmdChunk,
-    EMemSpyCmdChunkSort,
-    EMemSpyCmdChunkSortByName,
-    EMemSpyCmdChunkSortBySize,
-    EMemSpyCmdChunkListing,
-    //
-    EMemSpyCmdCodeSeg,
-    EMemSpyCmdCodeSegShow,
-    EMemSpyCmdCodeSegShowItemsAll,
-    EMemSpyCmdCodeSegShowItemsGlobalData,
-    EMemSpyCmdCodeSegShowCaps,
-    EMemSpyCmdCodeSegShowCapsWithTCBProcess,              
-    EMemSpyCmdCodeSegShowCapsWithTCBAll,                  
-    EMemSpyCmdCodeSegShowCapsWithCommDDProcess,           
-    EMemSpyCmdCodeSegShowCapsWithCommDDAll,               
-    EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess,        
-    EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll,            
-    EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess,     
-    EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll,         
-    EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess,   
-    EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll,       
-    EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess,  
-    EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll,      
-    EMemSpyCmdCodeSegShowCapsWithDRMProcess,              
-    EMemSpyCmdCodeSegShowCapsWithDRMAll,                  
-    EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess,        
-    EMemSpyCmdCodeSegShowCapsWithTrustedUIAll,            
-    EMemSpyCmdCodeSegShowCapsWithProtServProcess,         
-    EMemSpyCmdCodeSegShowCapsWithProtServAll,             
-    EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess,        
-    EMemSpyCmdCodeSegShowCapsWithDiskAdminAll,            
-    EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess,   
-    EMemSpyCmdCodeSegShowCapsWithNetworkControlAll,       
-    EMemSpyCmdCodeSegShowCapsWithAllFilesProcess,         
-    EMemSpyCmdCodeSegShowCapsWithAllFilesAll,             
-    EMemSpyCmdCodeSegShowCapsWithSwEventProcess,          
-    EMemSpyCmdCodeSegShowCapsWithSwEventAll,              
-    EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess,  
-    EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll,      
-    EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess,    
-    EMemSpyCmdCodeSegShowCapsWithLocalServicesAll,        
-    EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess,     
-    EMemSpyCmdCodeSegShowCapsWithReadUserDataAll,         
-    EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess,    
-    EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll,        
-    EMemSpyCmdCodeSegShowCapsWithLocationProcess,         
-    EMemSpyCmdCodeSegShowCapsWithLocationAll,             
-    EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess,   
-    EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll,       
-    EMemSpyCmdCodeSegShowCapsWithUserEnvProcess,          
-    EMemSpyCmdCodeSegShowCapsWithUserEnvAll,              
-    EMemSpyCmdCodeSegSort,
-    EMemSpyCmdCodeSegSortByName,
-    EMemSpyCmdCodeSegSortByCodeSize,
-    EMemSpyCmdCodeSegSortByDataSize,
-    EMemSpyCmdCodeSegSortByUid,
-    EMemSpyCmdCodeSegListing,
-    //
-    EMemSpyCmdImages,
-    EMemSpyCmdImagesSlideshow,
-    EMemSpyCmdImagesSaveAllToMemoryCard,
-    EMemSpyCmdImagesListing,
-    //
-    EMemSpyCmdActiveObject,
-    EMemSpyCmdActiveObjectListing,
-    //
-    EMemSpyCmdServerList,
-    EMemSpyCmdServerListOutput,
-    EMemSpyCmdServerListOutputListCSV,
-    EMemSpyCmdServerListOutputListDetailed,
-    EMemSpyCmdServerListSort,
-    EMemSpyCmdServerListSortByName,
-    EMemSpyCmdServerListSortBySessionCount,
-    //
-    EMemSpyCmdKernelContainers,
-    EMemSpyCmdKernelContainersOutput,
-    EMemSpyCmdKernelObjects,
-    EMemSpyCmdKernelObjectTerminate,
-    EMemSpyCmdKernelObjectSwitchTo,
-    EMemSpyCmdKernelObjectEnd,
-    EMemSpyCmdKernelObjectPanic,
-    
-    //
-    EMemSpyCmdKernelHeap,
-    EMemSpyCmdKernelHeapDump,
-    //
-    EMemSpyCmdRAM,
-    EMemSpyCmdRAMAvkonIconCacheDisabled,
-    EMemSpyCmdRAMAvkonIconCacheEnabled,
-    //
-    EMemSpyCmdBTrace,
-    EMemSpyCmdBTraceCaptureToggle,
-    //
-    EMemSpyCmdMemoryTracking,
-    EMemSpyCmdMemoryTrackingStart,
-    EMemSpyCmdMemoryTrackingStop,
-    EMemSpyCmdMemoryTrackingAutoStart,
-    EMemSpyCmdMemoryTrackingAutoStartItemAdd,
-    EMemSpyCmdMemoryTrackingAutoStartItemEdit,
-    EMemSpyCmdMemoryTrackingAutoStartItemDelete,
-    EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll,
-    EMemSpyCmdMemoryTrackingAutoStartItemImport,
-    EMemSpyCmdMemoryTrackingHWM,
-    EMemSpyCmdMemoryTrackingHWMReset,
-    EMemSpyCmdMemoryTrackingTotalWithSharedMem,
-    EMemSpyCmdMemoryTrackingTotalWithoutSharedMem,
-
-    //
-    EMemSpyCmdWindowGroups,
-    EMemSpyCmdWindowGroupTerminate,
-    EMemSpyCmdWindowGroupSwitchTo,
-    EMemSpyCmdWindowGroupEnd,
-    EMemSpyCmdWindowGroupPanic
-    };
-
-enum TMemSpyControlIds
-    {
-    EMemSpyCtrlIdProgressNote = 1000,
-    EMemSpyCtrlIdSlideShowImage,
-    EMemSpyCtrlIdWaitNote
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyApp.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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:
-*
-*/
-
-#ifndef MEMSPYAPP_H
-#define MEMSPYAPP_H
-
-// System includes
-#include <aknapp.h>
-
-// Constants
-const TUid KUidMemSpy = { 0x2002129F };
-
-
-class CMemSpyApp : public CAknApplication
-    {
-private: // From CApaApplication
-    CApaDocument* CreateDocumentL();
-    TUid AppDllUid() const;
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyAppUi.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +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:
-*
-*/
-
-#ifndef MEMSPYAPPUI_H
-#define MEMSPYAPPUI_H
-
-// System includes
-#include <eikapp.h>
-#include <eikdoc.h>
-#include <e32std.h>
-#include <coeccntx.h>
-#include <aknappui.h>
-#include <coecobs.h>
-
-// User includes
-#include "MemSpyDeviceWideOperationDialog.h"
-#include "MemSpyContainerObserver.h"
-#include <memspy/engine/memspyengineobserver.h>
-#include "MemSpySettings.h"
-
-// Classes referenced
-class CEikMenuBar;
-class CMemSpyEngine;
-class CMemSpyContainer;
-class CMemSpyDocument;
-
-//cigasto
-class RMemSpySession;
-
-
-class CMemSpyAppUi : public CAknAppUi, public MMemSpyContainerObserver, public MCoeControlObserver, public MMemSpyEngineObserver//, public MMemSpyDeviceWideOperationDialogObserver
-    {
-public:
-    //CMemSpyAppUi( CMemSpyEngine& aEngine );
-	CMemSpyAppUi( RMemSpySession& aMemSpySession );
-    ~CMemSpyAppUi();
-    void ConstructL();
-
-public: // API
-    CMemSpyDocument& MemSpyDocument();
-    const CMemSpyDocument& MemSpyDocument() const;
-    inline CMemSpyContainer& Container() { return *iAppContainer; }
-
-private: // From Avkon
-    void HandleStatusPaneSizeChange();
-
-private: // From MCoeControlObserver
-    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
-
-private: // From MEikMenuObserver
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // From CEikAppUi
-	void HandleForegroundEventL(TBool aForeground);
-    void HandleCommandL(TInt aCommand);
-    TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-private: // From MMemSpyContainerObserver
-    void HandleThreadSelectedL( const CMemSpyThread& aThread );
-
-private: // From MMemSpyEngineObserver
-    void HandleMemSpyEngineEventL( MMemSpyEngineObserver::TEvent aEvent, TAny* aContext );
-
-private: // From MMemSpyDeviceWideOperationDialogObserver
-    void DWOperationStarted();
-    void DWOperationCancelled();
-    void DWOperationCompleted();
-
-private: // Internal methods
-    void UpdateCBAL();
-    void InitiateMemSpyClientServerOperationL( TInt aOpCode );
-    void SetViewServerTimeOutStatus( TBool aEnabled );
-    
-private: // Command handlers
-    void OnCmdBackL();
-    void OnCmdExitL();
-    void OnCmdOpenL();
-    void OnCmdAboutL();
-
-    // Output
-    void OnCmdOutputToDebugL();
-    void OnCmdOutputToFileL();
- 
-    // Phone-information
-    //void OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::TOperation aOp );
-    void OnCmdPhoneInformationOperationL( TDeviceWideOperation aOperation );
-    void OnCmdPhoneInformationOperationKernelContainersL();
-    
-    // Automatic capture
-    void OnCmdAutoCaptureToggleL();
-    void OnCmdAutoCaptureRetryTimeL();
-    void OnCmdAutoCaptureOperationTypeL();
-
-    // Misc
-    void OnCmdToolsBitmapsSaveToMemoryCardL();
-    void OnCmdToolsSendToBackgroundL();
-    void OnCmdToolsBringToForegroundL();
-
-private: // Auto capture related
-    static TInt AutoCaptureCallBack( TAny* aSelf );
-    void AutoCaptureCallBackL();
-
-private: // Member data
-    //CMemSpyEngine& iEngine;
-    RMemSpySession& iMemSpySession;
-    CMemSpyContainer* iAppContainer;
-    CMemSpySettings* iSettings;
-    
-    // For phone information dialog
-    TBool iRunningDeviceWideOperation;
-    
-    // For auto-capture
-    TInt iAutoCaptureTimerPeriod;
-    CMemSpyDeviceWideOperations::TOperation iAutoCaptureOperationType;
-    CPeriodic* iAutoCaptureTimer;
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyContainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +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:
-*
-*/
-
-#ifndef MEMSPYCONTAINER_H
-#define MEMSPYCONTAINER_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-#include "MemSpyViewObserver.h"
-
-// Classes referenced
-class CMemSpyEngine;
-class CMemSpyProcess;
-class CMemSpyThread;
-class CMemSpyThreadInfoItemBase;
-class CMemSpyEngineObjectContainer;
-class MMemSpyContainerObserver;
-//cigasto
-class RMemSpySession;
-
-class CMemSpyContainer : public CCoeControl, public MMemSpyViewObserver
-    {
-public:
-    //CMemSpyContainer( CMemSpyEngine& aEngine, MMemSpyContainerObserver& aObserver );
-	CMemSpyContainer( RMemSpySession& aSession, MMemSpyContainerObserver& aObserver );
-    ~CMemSpyContainer();
-    void ConstructL( const TRect& aRect );
-
-public: // API
-    inline TMemSpyViewType ActiveViewType() const { return iActiveView->ViewType(); }
-    inline CMemSpyViewBase& ActiveView() const { return *iActiveView; }
-
-public: // API
-    void NavigateToParentViewL();
-    void NavigateToChildViewL();
-    void HandleCommandL( TInt aCommand );
-    void SetNewActiveViewL( CMemSpyViewBase* aNewView );
-
-public: // Command handlers
-    void OnCmdViewRefreshL();
-
-private: // From CCoeControl
-    void SizeChanged();
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl(TInt aIndex) const;
-    void Draw(const TRect& aRect) const;
-	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-private: // From MMemSpyViewObserver
-    void HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType aViewType, CMemSpyViewBase& aReportingView, TAny* aContext );
-
-private: // Internal methods
-    CMemSpyViewBase* PrepareTopLevelViewL();
-
-private: // Member data
-    //CMemSpyEngine& iEngine;
-    RMemSpySession& iMemSpySession;
-    MMemSpyContainerObserver& iObserver;
-    CMemSpyViewBase* iActiveView;
-    CMemSpyViewBase* iPreviousView;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyContainerObserver.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +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:
-*
-*/
-
-#ifndef MEMSPYCONTAINEROBSERVER_H
-#define MEMSPYCONTAINEROBSERVER_H
-
-// Classes referenced
-class CMemSpyThread;
-
-
-class MMemSpyContainerObserver
-    {
-public:
-    virtual void HandleThreadSelectedL( const CMemSpyThread& aThread ) = 0;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyDeviceWideOperationDialog.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +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:
-*
-*/
-
-#ifndef MEMSPYDEVICEWIDEOPERATIONDIALOG_H
-#define MEMSPYDEVICEWIDEOPERATIONDIALOG_H
-
-// System includes
-#include <AknProgressDialog.h>
-#include <AknWaitDialog.h>
-#include <e32cmn.h>
-
-// Engine includes
-#include <memspy/engine/memspydevicewideoperations.h>
-#include <memspyengineclientinterface.h>
-#include <memspysession.h>
-
-//#include "MemSpyAppUi.h"
-
-// Classes referenced
-//class RMemSpySession;
-
-enum TDeviceWideOperation
-{
-	OutputPhoneInfo = 0,
-	    
-	OutputDetailedPhoneInfo,
-	    
-	OutputHeapInfo,
-	    
-	OutputCompactHeapInfo,
-	    
-	OutputHeapCellListing,
-	    
-	OutputHeapData,
-	    
-	OutputStackInfo,
-	    
-	OutputCompactStackInfo,
-	    
-	OutputUserStackData,
-	    
-	OutputKernelStackData
-};
-
-
-class MMemSpyDeviceWideOperationDialogObserver
-    {
-public:
-    virtual void DWOperationStarted() = 0;
-    virtual void DWOperationCancelled() = 0;
-    virtual void DWOperationCompleted() = 0;
-    };
-
-
-class CMemSpyDwoProgressTracker : public CActive, public MProgressDialogCallback
-{
-public:
-	CMemSpyDwoProgressTracker(RMemSpySession &aSession);
-	
-	virtual ~CMemSpyDwoProgressTracker();
-	
-	void Start();
-	
-	void Cancel();
-	
-	TMemSpyDeviceWideOperationProgress Progress() { return iProgress; }
-	
-	CAknProgressDialog* ProgressDialog() { return iProgressDialog; }
-	
-	void UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText );
-
-protected: // from CActive
-	
-	void DialogDismissedL(TInt aButtonId);
-	
-	virtual void RunL();
-	 
-	virtual void DoCancel();
-	 
-	virtual TInt RunError(TInt aError);
-	
-private:
-	TMemSpyDeviceWideOperationProgress iProgress;
-	RMemSpySession iSession;	
-	
-	CEikProgressInfo* iProgressInfo;
-	CAknProgressDialog* iProgressDialog;		
-};
-
-
-
-
-
-
-class CMemSpyDwoTracker : public CActive
-{	
-public:	
-	CMemSpyDwoTracker(RMemSpySession &aSession, TDeviceWideOperation aOperation);
-	
-	virtual ~CMemSpyDwoTracker();
-	
-	void Start();
-	
-	void Cancel();		
-	
-protected: // from CActive
-	
-	virtual void RunL();
-	 
-	virtual void DoCancel();
-	 
-	virtual TInt RunError(TInt aError);		
-	
-private:
-	RMemSpySession iSession;
-	CMemSpyDwoProgressTracker *iProgressTracker;	
-	TDeviceWideOperation iOperation;
-};
-
-
-
-
-
-
-
-class CMemSpyDeviceWideOperationDialog : public CBase, public MProgressDialogCallback, public MMemSpyDeviceWideOperationsObserver
-    {
-public:
-    //static void ExecuteLD( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation );
-	//static void ExecuteLD( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation );
-	static void ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp );
-    ~CMemSpyDeviceWideOperationDialog();
-    
-    //added
-    static CMemSpyDwoTracker* CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp );
-
-private:
-    //CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver );
-    //CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver );
-    CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession );
-    //void ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation );
-    void ExecuteL( TDeviceWideOperation aOp );
-
-public: // API
-    void Cancel();
-
-private: // From MProgressDialogCallback
-    void DialogDismissedL( TInt aButtonId );
-
-private: // From MMemSpyDeviceWideOperationsObserver
-    void HandleDeviceWideOperationEvent( TEvent aEvent, TInt aParam1, const TDesC& aParam2 );
-
-private: // Internal methods
-    void SetDialogCaptionL( const TDesC& aText );
-
-private: // Member data
-    //CMemSpyEngine& iEngine;
-    RMemSpySession iSession;	
-    //MMemSpyDeviceWideOperationDialogObserver& iObserver;
-    TBool iForcedCancel;
-    CEikProgressInfo* iProgressInfo;
-    CAknProgressDialog* iProgressDialog;
-    CMemSpyDeviceWideOperations* iOperation;        
-    };
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyDocument.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +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:
-*
-*/
-
-#ifndef MEMSPYDOCUMENT_H
-#define MEMSPYDOCUMENT_H
-
-// System includes
-#include <AknDoc.h>
-   
-// Classes referenced
-class CMemSpyEngine;
-class CEikAppUi;
-class CMemSpySettings;
-//cigasto
-class RMemSpySession;
-
-
-class CMemSpyDocument : public CAknDocument
-    {
-public: // Constructors and destructor
-    static CMemSpyDocument* NewL(CEikApplication& aApp);
-    ~CMemSpyDocument();
-
-private:
-    CMemSpyDocument(CEikApplication& aApp);
-    void ConstructL();
-
-public:
-//    CMemSpyEngine& Engine();
-//    const CMemSpyEngine& Engine() const;
-    CMemSpySettings& Settings();
-    const CMemSpySettings& Settings() const;
-
-private: // Framework
-    CEikAppUi* CreateAppUiL();
-
-private: // Data members
-//    CMemSpyEngine* iEngine;
-    CMemSpySettings* iSettings;
-    //cigasto
-    RMemSpySession* iMemSpySession;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyExportBitmapsToMemoryCardDialog.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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:
-*
-*/
-
-#ifndef MEMSPYEXPORTBITMAPSTOMEMORYCARDDIALOG_H
-#define MEMSPYEXPORTBITMAPSTOMEMORYCARDDIALOG_H
-
-// System includes
-#include <AknProgressDialog.h>
-#include <AknWaitDialog.h>
-#include <imageconversion.h>
-
-// Classes referenced
-class CMemSpyEngineFbServBitmap;
-class CMemSpyEngineFbServBitmapArray;
-
-
-
-class CMemSpyExportBitmapsToMemoryCardDialog : public CActive, public MProgressDialogCallback
-    {
-public:
-    static CMemSpyExportBitmapsToMemoryCardDialog* NewL( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps );
-    ~CMemSpyExportBitmapsToMemoryCardDialog();
-
-private:
-    CMemSpyExportBitmapsToMemoryCardDialog( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps );
-    void ConstructL();
-
-public: // API
-    void Cancel();
-    static TBool CheckMemoryCardAvailableL( RFs& aFsSession );
-
-private: // From CActive
-    void RunL();
-    void DoCancel();
-    TInt RunError(TInt aError);
-
-private: // From MProgressDialogCallback
-    void DialogDismissedL( TInt aButtonId );
-
-private: // Internal methods
-    void CompleteSelf( TInt aError );
-    void ExportBitmapL( const CMemSpyEngineFbServBitmap& aBitmap );
-    void IdentifyBmpMimeTypeL();
-    void PruneExistingBitmapFilesL();
-    void PrepareFolderNameSpecL();
-    TBool TryToExportSingleBitmapL();
-
-private: // Member data
-    RFs& iFsSession;
-    const CMemSpyEngineFbServBitmapArray& iBitmaps;
-    TInt iBitmapIndex;
-    TBool iDialogDismissed;
-    CEikProgressInfo* iProgressInfo;
-    CAknProgressDialog* iProgressDialog;
-    CImageEncoder* iEncoder;
-    HBufC8* iBmpMimeType;
-    HBufC* iFolderName;
-    RFileExtensionMIMETypeArray iMimeTypeArray;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpySettings.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +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:
-*
-*/
-
-#ifndef MEMSPYSETTINGS_H
-#define MEMSPYSETTINGS_H
-
-// System includes
-#include <e32base.h>
-#include <badesca.h>
-#include <f32file.h>
-
-// Engine includes
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
-
-// Classes referenced
-class CMemSpyEngine;
-
-//cigasto
-class RMemSpySession;
-
-
-class CMemSpySettings : public CBase
-    {
-public:
-    //static CMemSpySettings* NewL( RFs& aFsSession, CMemSpyEngine& aEngine );
-	static CMemSpySettings* NewL( RFs& aFsSession, RMemSpySession& aSession );
-    ~CMemSpySettings();
-
-private:
-    //CMemSpySettings( RFs& aFsSession, CMemSpyEngine& aEngine );
-    CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession );
-    void ConstructL();
-
-public: // API
-    inline RFs& FsSession() { return iFsSession; }
-    void StoreSettingsL();
-    
-    void SetSinkType( TMemSpySinkType aType ) { iSinkType = aType; }
-
-private: // Settings methods
-    void RestoreSettingsL();
-    void GetSettingsFileNameL( TDes& aFileName );
-    void GetSettingsPathL( TDes& aPath );
-    RFile SettingsFileLC( TBool aReplace = EFalse );
-
-private: // Data members
-    RFs& iFsSession;    
-    RMemSpySession& iMemSpySession;
-    
-private: //Settings
-    TMemSpySinkType iSinkType;
-    TMemSpyEngineHelperSysMemTrackerConfig iSwmtConfig;
-    RArray<TUid> iUidList;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyUiUtils.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +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:
-*
-*/
-
-#ifndef MEMSPYUIUTILS_H
-#define MEMSPYUIUTILS_H
-
-// System includes
-#include <e32std.h>
-#include <e32const.h>
-
-// Engine includes
-#include <memspy/engine/memspyengineutils.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-
-typedef TBuf<20> TMemSpySizeText;
-
-_LIT( KTab, "\t" );
-
-//ThreadInfoItemList view types
-_LIT( KTypeUnknown, "Unknown Type" );
-_LIT( KGeneral, "General" );
-_LIT( KHeap, "Heap" );
-_LIT( KStack, "Stack" );
-_LIT( KChunks, "Chunks" );
-_LIT( KCodeSegs, "Code Segments" );
-_LIT( KOpenFiles, "Open Files" );
-_LIT( KActiveObjects, "Active Objects" );
-_LIT( KThreadHandlers, "Handlers to other Threads" );
-_LIT( KProcessHandlers, "Handlers to other Processes" );
-_LIT( KServers, "Servers running in Thread" );
-_LIT( KConnections, "Client <> Server Connections" );
-_LIT( KSemaphores, "Semaphores" );
-_LIT( KThreadReferences, "References in Thread" );
-_LIT( KProcessReferences, "References in Process" );
-_LIT( KMutexes, "Mutexes" );
-_LIT( KTimers, "Timers" );
-_LIT( KDD, "Logical DD Channels" );
-_LIT( KChangeNotif, "Change Notifiers" );
-_LIT( KUndertakers, "Undertakers" );
-_LIT( KLogicalDrivers, "Logical Device Drivers" );
-_LIT( KPhysicalDrivers, "Physical Device Drivers" );	
-
-//Kernel Object types
-_LIT( KTypeThread, "Thread" );
-_LIT( KTypeProcess, "Process" );
-_LIT( KTypeChunk, "Chunk" );
-_LIT( KTypeLibrary, "Library" );
-_LIT( KTypeSemaphore, "Semaphore" );
-_LIT( KTypeMutex, "Mutex" );
-_LIT( KTypeTimer, "Timer" );
-_LIT( KTypeServer, "Server" );
-_LIT( KTypeSession, "Session" );
-_LIT( KTypeLogicalDevice, "Logical Device" );
-_LIT( KTypePhysicalDevice, "Physical Device" );
-_LIT( KTypeLogicalChannel, "Logical Channel" );
-_LIT( KTypeChangeNotifier, "Change Notifier" );
-_LIT( KTypeUndertaker, "Undertaker" );
-_LIT( KTypeMsgQueue, "Msg. Queue" );
-_LIT( KTypePropertyRef, "Property Ref." );
-_LIT( KTypeCondVar, "Conditional Var." );
-
-
-class MemSpyUiUtils : public MemSpyEngineUtils
-    {
-public:
-    static void Format( TDes& aBuf, TInt aResourceId, ...);
-    static void GetErrorText( TDes& aBuf, TInt aError );
-    static HBufC* FormatItem( const TDesC& aCaption );
-    static TDesC& ThreadInfoItemNameByType( TMemSpyThreadInfoItemType aType );
-    static void AppendPriority( TDes& aDes, TProcessPriority aPriority );
-    static void AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  );
-    static void AppendExitType( TDes& aDes, TExitType aType );
-    
-    //for Kernel Objects
-    static TPtrC TypeAsString( TMemSpyDriverContainerType aType );
-    static TMemSpySizeText FormatSizeText( const TInt64& aValue, TInt aDecimalPlaces, TBool aExtraRounding = EFalse );
-    };
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewBase.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWBASE_H
-#define MEMSPYVIEWBASE_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <memspyui.rsg>
-
-// User includes
-#include "MemSpy.hrh"
-#include "MemSpyViewType.h"
-#include "MemSpyViewObserver.h"
-#include "MemSpySettings.h"
-
-// Classes referenced
-class CMemSpyEngine;
-class CMemSpyContainer;
-class MMemSpyViewObserver;
-//cigasto
-class RMemSpySession;
-
-class CMemSpyViewBase : public CCoeControl, public MCoeControlObserver, public MEikListBoxObserver
-    {
-public:
-    //CMemSpyViewBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-	CMemSpyViewBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewBase();
-    virtual void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // API
-    virtual TMemSpyViewType ViewType() const = 0;
-    virtual CMemSpyViewBase* PrepareParentViewL();
-    virtual CMemSpyViewBase* PrepareChildViewL();
-    virtual void RefreshL();
-    virtual TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-    virtual TUint MenuCascadeResourceId() const;
-    virtual TInt MenuCascadeCommandId() const;
-
-private: // Command handlers
-    virtual void OnCmdViewOutputToSinkL();
-
-protected: // Construction support
-    void SetTitleL( const TDesC& aText );
-    TPtrC TitleL() const;
-    virtual CEikListBox* ConstructListBoxL();
-    virtual void SetListBoxModelL() = 0;
-
-protected: // Internal framework
-    virtual void HandleListBoxItemActionedL( TInt aIndex );
-    virtual void HandleListBoxItemSelectedL( TInt aIndex );
- 
-protected: // Event reporting
-    void ReportEventL( MMemSpyViewObserver::TViewEventType aEvent, TAny* aContext = NULL );
-    void SetListBoxCurrentItemIndexL( TInt aIndex );
-
-protected: // Utility methods
-    CMemSpyContainer& Container();
-    CMemSpySettings& Settings();
-    const CMemSpySettings& Settings() const;
-
-public: // From CCoeControl
-	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-protected: // From CCoeControl
-    void Draw( const TRect& aRect ) const;
-    void SizeChanged();
-    void FocusChanged( TDrawNow aDrawNow );
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl( TInt aIndex ) const;
-
-protected: // From MCoeControlObserver
-    void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
-
-protected: // From MEikListBoxObserver
-    void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType);
-
-protected: // Member data
-    //CMemSpyEngine& iEngine;
-    RMemSpySession& iMemSpySession;
-    MMemSpyViewObserver& iObserver;
-    //
-    CEikListBox* iListBox;
-
-private:
-    CMemSpySettings* iSettings;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewChunkList.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWCHUNKLIST_H
-#define MEMSPYVIEWCHUNKLIST_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CMemSpyEngineChunkList;
-class CMemSpyEngineChunkEntry;
-
-
-
-
-class CMemSpyViewChunkBase : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewChunkBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList* aList );
-    ~CMemSpyViewChunkBase();
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_CHUNK_LIST; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdChunk; }
-
-protected: // Command handlers
-    void OnCmdListingL();
-
-protected: // Data members
-    CMemSpyEngineChunkList* iList;
-    };
-
-
-
-
-class CMemSpyViewChunkList : public CMemSpyViewChunkBase
-    {
-public:
-    CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineChunkEntry* iCurrentChunk;
-    };
-
-
-
-class CMemSpyViewChunkDetails : public CMemSpyViewChunkBase
-    {
-public:
-    CMemSpyViewChunkDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList, CMemSpyEngineChunkEntry& aSelectedChunk );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Data members
-    CMemSpyEngineChunkEntry& iChunk;
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewCodeSegList.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWCODESEGLIST_H
-#define MEMSPYVIEWCODESEGLIST_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CMemSpyEngineCodeSegList;
-class CMemSpyEngineCodeSegEntry;
-
-
-class CMemSpyViewCodeSegBase : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewCodeSegBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList* aList );
-    ~CMemSpyViewCodeSegBase();
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    void RefreshL();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_CODESEG_LIST; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdCodeSeg; }
-
-protected: // Command handlers
-    void OnCmdCodeSegmentListingL();
-    void OnCmdShowItemsAllL();
-    void OnCmdShowItemsGlobalDataL();
-    void OnCmdFilterByCapabilityL( TCapability aCapability, TBool aAllBinaries );
-
-protected: // Data members
-    CMemSpyEngineCodeSegList* iList;
-    };
-
-
-
-
-class CMemSpyViewCodeSegList : public CMemSpyViewCodeSegBase
-    {
-public:
-    CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineCodeSegEntry* iCurrentCodeSegment;
-    };
-
-
-
-class CMemSpyViewCodeSegDetails : public CMemSpyViewCodeSegBase
-    {
-public:
-    CMemSpyViewCodeSegDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList, CMemSpyEngineCodeSegEntry& aSelectedCodeSegment );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Data members
-    CMemSpyEngineCodeSegEntry& iCodeSegment;
-    };
-
-
-
-
-
-
-class TMemSpyViewCodeSegFilter
-    {
-public:
-    inline TMemSpyViewCodeSegFilter( TCapability aCapability, TBool aAllBinaries = ETrue )
-    :   iCapability( aCapability ), iAllBinaries( aAllBinaries )
-        {
-        }
-
-public:
-    static TBool FilterItem( const CMemSpyEngineCodeSegEntry*& aItem, TAny* aRune );
-
-private:
-    TCapability iCapability;
-    TBool iAllBinaries;
-    };
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewDriveInfo.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWDRIVEINFO_H
-#define MEMSPYVIEWDRIVEINFO_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyenginehelperfilesystem.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-
-
-class CMemSpyViewDriveInfoBase : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewDriveInfoBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewDriveInfoBase();
-    void BaseConstructL();
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-protected: // Data members
-    CMemSpyEngineDriveList* iList;
-    };
-
-
-
-
-class CMemSpyViewDriveList : public CMemSpyViewDriveInfoBase, public MMemSpyEngineDriveListObserver
-    {
-public:
-    CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void RefreshL();
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // From MMemSpyEngineDriveListObserver
-    void HandleDriveListChangedL( const CMemSpyEngineDriveList& aList );
-
-private: // Data members
-    TBool iUseDriveNumber;
-    TDriveNumber iDriveNumber;
-    CMemSpyEngineDriveEntry* iCurrentDrive;
-    };
-
-
-
-class CMemSpyViewDriveInfo : public CMemSpyViewDriveInfoBase, public MMemSpyEngineDriveEntryObserver
-    {
-public:
-    CMemSpyViewDriveInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineDriveEntryObserver
-    void HandleDriveEntryChangedL( const CMemSpyEngineDriveEntry& aEntry );
-
-private: // Data members
-    const TDriveNumber iDriveNumber;
-    CMemSpyEngineDriveEntry* iDriveInfo;
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewECom.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWECOM_H
-#define MEMSPYVIEWECOM_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <eikimage.h>
-#include <AknDialog.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Engine includes
-#include <memspy/engine/memspyenginehelperecom.h>
-
-
-class CMemSpyViewECom : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewECom( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineEComCategory* iCurrent;
-    };
-
-
-
-class CMemSpyViewEComCategory : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewEComCategory( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComCategory& aCategory );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineEComCategory& iCategory;
-    CMemSpyEngineEComInterface* iCurrent;
-    };
-
-
-
-
-class CMemSpyViewEComInterface : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewEComInterface( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComInterface& aInterface );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineEComInterface& iInterface;
-    CMemSpyEngineEComImplementation* iCurrent;
-    };
-
-
-
-
-
-
-class CMemSpyViewEComImplementation : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewEComImplementation( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComImplementation& aImplementation );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Data members
-    CMemSpyEngineEComImplementation& iImplementation;
-    };
-
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewFBServBitmaps.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWFBSERVBITMAPS_H
-#define MEMSPYVIEWFBSERVBITMAPS_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <eikimage.h>
-#include <AknDialog.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Engine includes
-#include <memspy/engine/memspyenginehelperfbserv.h>
-
-
-
-class CMemSpyViewFBServBase : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewFBServBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps );
-    ~CMemSpyViewFBServBase();
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_IMAGES; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdImages; }
-
-protected: // Command handlers
-    void OnCmdSlideShowL();
-    void OnCmdExportToMemoryCardL();
-    void OnCmdImageListingL();
-
-protected: // Data members
-    CMemSpyEngineFbServBitmapArray* iBitmaps;
-    };
-
-
-
-
-
-class CMemSpyViewFBServBitmaps : public CMemSpyViewFBServBase, public MMemSpyEngineFbSerbBitmapArrayObserver
-    {
-public:
-    CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps );
-    ~CMemSpyViewFBServBitmaps();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From MMemSpyEngineFbSerbBitmapArrayObserver
-    void HandleFbServBitmapArrayEventL( TEvent aEvent );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-
-private: // Idle timer update
-    static TInt IdleUpdateListBoxModel( TAny* aSelf );
-    void DoIdleUpdateListBoxModelL();
-
-private: // Data members
-    RArray<TInt> iBitmapHandles;
-    CMemSpyEngineFbServBitmap* iCurrentBitmap;
-    CPeriodic* iIdleResetListboxTimer;
-    };
-
-
-
-class CMemSpyViewFBServBitmapInfo : public CMemSpyViewFBServBase
-    {
-public:
-    CMemSpyViewFBServBitmapInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-
-private: // Data members
-    CMemSpyEngineFbServBitmap& iBitmapObject;
-    };
-
-
-
-
-class CMemSpyViewFBServBitmapViewer : public CMemSpyViewFBServBase
-    {
-public:
-    CMemSpyViewFBServBitmapViewer( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap );
-    ~CMemSpyViewFBServBitmapViewer();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    CEikListBox* ConstructListBoxL();
-
-private: // From CCoeControl
-    void Draw(const TRect& aRect) const;
-    void SizeChanged();
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl( TInt aIndex ) const;
-
-private: // Data members
-    CMemSpyEngineFbServBitmap& iBitmapObject;
-    CEikImage* iImage;
-    TRect iBorderRect;
-    };
-
-
-
-
-
-class CMemSpyViewFBServSlideshow : public CAknDialog
-    {
-public:
-    static void NewLD( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex );
-    ~CMemSpyViewFBServSlideshow();
-
-private:
-    CMemSpyViewFBServSlideshow( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex );
-    void ConstructL();
-
-private:
-    void PreLayoutDynInitL();
-	TBool OkToExitL(TInt aButtonId);
-
-private: // Idle timer update
-    static TInt IdleUpdate( TAny* aSelf );
-    void ShowNextImageL();
-
-private: // Data members
-    CMemSpyEngineFbServBitmapArray& iBitmaps;
-    TInt& iIndex;
-    CPeriodic* iTimer;
-    };
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewHeapTracking.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWHEAPTRACKING_H
-#define MEMSPYVIEWHEAPTRACKING_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackerobserver.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewHeapTracking : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
-    {
-public:
-    CMemSpyViewHeapTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewHeapTracking();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-public:
-    static TInt AsyncStopTimerCallback( TAny* aParam );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineHelperSysMemTrackerObserver
-    void HandleCyclesResetL();
-    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    
-private: // Internal methods
-    TInt IndexByViewType( TMemSpyViewType aType );
-    void SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode aMode, TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
-    TInt AsyncStopTimerCallback();
-
-private: // Enum
-    enum TMemSpyViewHeapTrackingState
-        {
-        EMemSpyViewHeapTrackingStateIdle = 0,
-        EMemSpyViewHeapTrackingStateTimerOn,
-        EMemSpyViewHeapTrackingStateSingleOn        
-        };
-
-private: // Data
-    TMemSpyEngineHelperSysMemTrackerConfig iOriginalConfig;
-    TMemSpyViewHeapTrackingState iState;
-    CAsyncCallBack* iStopTimerCallBack;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingResults.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWHEAPTRACKINGRESULTS_H
-#define MEMSPYVIEWHEAPTRACKINGRESULTS_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyenginehelpersysmemtrackerobserver.h>
-
-// Driver includes
-#include <memspy/driver/memspydriverobjectsshared.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CMemSpyEngineHelperSysMemTrackerCycle;
-class CMemSpyEngineHelperSysMemTrackerCycleChange;
-
-
-class CMemSpyViewHeapTrackingResults : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
-    {
-public:
-    CMemSpyViewHeapTrackingResults( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewHeapTrackingResults();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineHelperSysMemTrackerObserver
-    void HandleCyclesResetL();
-    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    };
-
-
-
-
-
-
-
-class CMemSpyViewHeapTrackingResultsCycleInfo : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
-    {
-public:
-    CMemSpyViewHeapTrackingResultsCycleInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    ~CMemSpyViewHeapTrackingResultsCycleInfo();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineHelperSysMemTrackerObserver
-    void HandleCyclesResetL();
-    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-
-private: // Data members
-    const CMemSpyEngineHelperSysMemTrackerCycle& iCycle;
-    };
-
-
-
-
-
-/*
-class CMemSpyViewHeapTrackingResultsChangeDescriptor : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
-    {
-public:
-    CMemSpyViewHeapTrackingResultsChangeDescriptor( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle, const CMemSpyEngineHelperSysMemTrackerCycleChange& aChangeDescriptor, TInt aIndex );
-    ~CMemSpyViewHeapTrackingResultsChangeDescriptor();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineHelperSysMemTrackerObserver
-    void HandleCyclesResetL();
-    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
-
-private: // Data members
-    const CMemSpyEngineHelperSysMemTrackerCycle& iCycle;
-    const CMemSpyEngineHelperSysMemTrackerCycleChange& iChangeDescriptor;
-    TInt iIndex; // For selection rune when moving to parent view
-    };
-*/
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingSettings.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWHEAPTRACKINGSETTINGS_H
-#define MEMSPYVIEWHEAPTRACKINGSETTINGS_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <aknsettingitemlist.h> 
-#include <akncheckboxsettingpage.h>
-#include <AknQueryDialog.h> 
-
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewHeapTrackingSettings : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewHeapTrackingSettings( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewHeapTrackingSettings();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Internal methods
-    static void PrepareItemBufL( TDes& aBuf, const TDesC& aCaption, TBool aStatus, TBool aHeapCategorySelected );
-    };
-
-
-
-
-class CSWMTCategorySelectionCheckBoxSettingItem : public CAknSettingItem
-    {
-public:
-    CSWMTCategorySelectionCheckBoxSettingItem( TInt aIdentifier, TInt& aCategories );
-    virtual ~CSWMTCategorySelectionCheckBoxSettingItem();
-
-public:
-    CSelectionItemList* ItemArray() const;
-    
-protected:
-    void CompleteConstructionL();
-    void StoreL();
-    void LoadL();
-    void HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType );
-
-private:
-    void AddNewItemToArrayL(const TDesC& aLabel); 
-    
-private:
-    CSelectionItemList*     iItemArray;
-    HBufC*                  iSettingText;
-    TInt&                   iExtCategories;
-    };
-
-
-
-
-
-
-class CMemSpySWMTCategorySelectionCheckBoxSettingPage : public CAknCheckBoxSettingPage
-    {
-    public:
-        CMemSpySWMTCategorySelectionCheckBoxSettingPage( TInt aResourceID, CSelectionItemList* aItemArray );
-    public:     // New functions
-        void UpdateCba();
-    };
-    
-
-
-
-
-
-class CMemSpyAllowEmptyDataDialog : public CAknTextQueryDialog
-    {
-    public:
-        CMemSpyAllowEmptyDataDialog( TDes& aText, const TTone& aTone = ENoTone );
-    protected: // from CAknTextQueryDialog
-        void UpdateLeftSoftKeyL();
-    };
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewKernel.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWKERNEL_H
-#define MEMSPYVIEWKERNEL_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class RMemSpySession;
-
-class CMemSpyViewKernel : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewKernel( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewKernel();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Internal methods
-    static TInt IndexByViewType( TMemSpyViewType aType );
-
-private: // Data members
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewKernelContainers.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWKERNELCONTAINERS_H
-#define MEMSPYVIEWKERNELCONTAINERS_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <BADESCA.H>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-#include <memspy/driver/memspydriverenumerationsshared.h>
-#include <memspy/api/memspyapikernelobject.h>
-
-// Classes referenced
-class CMemSpyEngineGenericKernelObjectContainer;
-
-class RMemSpySession;
-
-class CMemSpyViewKernelContainers : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewKernelContainers( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewKernelContainers();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();    
-    TPtrC TypeAsString( TMemSpyDriverContainerType aType );
-    
-    
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_CONTAINERS; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelContainers; }
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    TBool HandleCommandL( TInt aCommand );
-
-private: // Command handlers
-    void OnCmdOutputAllContainerContentsL();
-
-private: // Internal methods
-
-private: // Data members
-    //CMemSpyEngineGenericKernelObjectContainer* iModel;
-    RArray<CMemSpyApiKernelObject*> iKernelObjects; //array of raw items data
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewKernelHeap.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWKERNELHEAP_H
-#define MEMSPYVIEWKERNELHEAP_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-#include <memspy/api/memspyapiheap.h>
-
-// Classes referenced
-class CMemSpyEngineGenericKernelObjectContainer;
-
-class RMemSpySession;
-
-class CMemSpyViewKernelHeap : public CMemSpyViewBase
-    {
-public:    
-	CMemSpyViewKernelHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );	
-    ~CMemSpyViewKernelHeap();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_HEAP; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelHeap; }
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    TBool HandleCommandL( TInt aCommand );    
-
-private: // Command handlers
-    void OnCmdDumpKernelHeapL();
-
-private: // Internal methods
-    //CDesCArrayFlat* FormatModel( RArray<CMemSpyApiHeap*> &aHeap );
-    CDesCArrayFlat* FormatModel( CMemSpyApiHeap* aHeap );
-    HBufC* FormatItem( const TDesC& aCaption, const TDesC& aValue );
-    HBufC* FormatItem( const TDesC& aCaption, TInt aValue );
-    HBufC* FormatItem( const TDesC& aCaption, TUint aValue );
-    HBufC* FormatItem( const TDesC& aCaption, const TInt64& aValue );
-    HBufC* FormatItem( const TDesC& aCaption, TAny* aValue );
-    HBufC* FormatItem( const TDesC& aCaption, TUint* aValue );
-    HBufC* FormatItem( const TDesC& aCaption, TUint8* aValue );
-    HBufC* FormatPercentageItem( const TDesC& aCaption, TReal aOneHundredPercentValue, TReal aValue );
-
-private: // Data members
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewKernelObjects.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWKERNELOBJECTS_H
-#define MEMSPYVIEWKERNELOBJECTS_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <AknTabObserver.h> 
-
-// User includes
-#include "MemSpyViewBase.h"
-#include <memspy/driver/memspydriverenumerationsshared.h>
-#include <memspy/api/memspyapikernelobjectitem.h>
-
-// Classes referenced
-class CMemSpyEngineGenericKernelObjectContainer;
-class CMemSpyEngineGenericKernelObjectList;
-class CAknNavigationDecorator;
-class CAknNavigationControlContainer;
-class CAknTabGroup;
-
-class RMemSpySession;
-
-class CMemSpyViewKernelObjects : public CMemSpyViewBase, public MAknTabObserver
-    {
-public:
-    //CMemSpyViewKernelObjects( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType );
-	CMemSpyViewKernelObjects( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType );
-    ~CMemSpyViewKernelObjects();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    CEikListBox* ConstructListBoxL();
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_OBJECTS; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelObjects; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    TBool HandleCommandL( TInt aCommand );
-
-private: // From CCoeControl
-    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-private: // From MAknTabObserver
-    void TabChangedL( TInt aIndex );     
-    
-private: // Command handlers
-    void OnCmdTerminateL();
-    void OnCmdSwitchToL();
-    void OnCmdEndL();
-    void OnCmdPanicL();
-
-private: // Internal methods
-    void CreateTabsL();
-    void DetailsL();
-    void AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... );
-
-private: // Data members
-    //CMemSpyEngineGenericKernelObjectContainer* iModel;
-    CDesCArrayFlat* iItems;
-    TMemSpyDriverContainerType iObjectType;
-    CMemSpyEngineGenericKernelObjectList* iObjectList;
-    CAknNavigationDecorator* iNavDecorator;
-    CAknNavigationControlContainer* iNaviPane;
-    CAknNavigationControlContainer* iNavContainer;
-    CAknTabGroup* iTabs;
-    TInt iCurrItemIndex;
-    CDesCArrayFlat* iModel;
-    RArray<CMemSpyApiKernelObjectItem*> iKernelObjectItems;
-    };
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewMainMenu.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWMAINMENU_H
-#define MEMSPYVIEWMAINMENU_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CMemSpyProcess;
-
-//cigasto
-class RMemSpySession;
-
-class CMemSpyViewMainMenu : public CMemSpyViewBase
-    {
-public:
-    //CMemSpyViewMainMenu( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-	CMemSpyViewMainMenu( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Internal methods
-    static TInt IndexByViewType( TMemSpyViewType aType );
-
-private: // Data members
-    };
-
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewMemoryTrackingAutoStartConfig.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWMEMORYTRACKINGAUTOSTARTCONFIG_H
-#define MEMSPYVIEWMEMORYTRACKINGAUTOSTARTCONFIG_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <ecom/ecom.h>
-#include <xml/contenthandler.h> // MContentHandler mix in class
-#include <xml/parser.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Literal constants
-_LIT( KMemSpyProcessMemoryTrackingAutoStartConfigSearchPath, "E:\\MemSpy\\" );
-_LIT( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, "MemSpyProcessMemoryTrackingAutoStartConfig.xml" );
-
-// Classes referenced
-class CCnvCharacterSetConverter;
-
-// Namespaces referenced
-using namespace Xml;
-
-
-class CMemSpyViewMemoryTrackingAutoStartConfig : public CMemSpyViewBase, public MContentHandler
-    {
-public:
-    CMemSpyViewMemoryTrackingAutoStartConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewMemoryTrackingAutoStartConfig();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    TBool HandleCommandL( TInt aCommand );
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void SetListBoxModelL();
-    void RefreshL();
-
-public: // Menu framework
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-    TUint MenuCascadeResourceId() const;
-    TInt MenuCascadeCommandId() const;
-
-private: // Command handlers
-    void OnCmdItemAddL();
-    void OnCmdItemEditL();
-    void OnCmdItemDeleteL();
-    void OnCmdItemDeleteAllL();
-    void OnCmdItemImportL();
-
-private: // Internal methods
-    TUid ShowDialogL( TUid aUid );
-    void SaveChangesL();
-    static TUid ValidateProcessUid( const TDesC& aUid );
-
-private: // Internal XML methods
-    void FindXmlInstallTimeL();
-    void FindXmlUserSuppliedL();
-    HBufC* FindEComXmlFileNameLC();
-    void ConvertL( const TDesC8& aInput, TDes16& aOutput );
-    void ParseL( const TDesC& aFileName );
-
-private: // XML helper functions
-    void OnSectionProcessL( const RAttributeArray& aAttributes );
-
-private: // From MContentHandler
-	void OnStartDocumentL( const RDocumentParameters& aDocParam, TInt aErrorCode );
-	void OnEndDocumentL( TInt aErrorCode );
-	void OnStartElementL( const RTagInfo& aElement, const RAttributeArray& aAttributes, TInt aErrorCode );
-	void OnEndElementL( const RTagInfo& aElement, TInt aErrorCode );
-	void OnContentL( const TDesC8& aBytes, TInt aErrorCode );
-	void OnStartPrefixMappingL( const RString& aPrefix, const RString& aUri, TInt aErrorCode );
-	void OnEndPrefixMappingL( const RString& aPrefix, TInt aErrorCode );
-	void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, TInt aErrorCode );
-	void OnSkippedEntityL( const RString& aName, TInt aErrorCode );
-	void OnProcessingInstructionL( const TDesC8& aTarget, const TDesC8& aData, TInt aErrorCode );
-	void OnError( TInt aErrorCode );
-	TAny* GetExtendedInterface( const TInt32 aUid );
-
-private: // Data members
-    RArray< TUid > iProcessUids;
-    TInt iParserErrorCode;
-    TInt iCharconvConverterState;
-    TBool iSeenMasterSection;
-    CParser* iParser;
-    CCnvCharacterSetConverter* iConverter;
-    HBufC* iXMLFileNameInstallTime;
-    HBufC* iXMLFileNameUserSupplied;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewObserver.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWOBSERVER_H
-#define MEMSPYVIEWOBSERVER_H
-
-// User includes
-#include "MemSpyViewType.h"
-
-// Classes referenced
-class CMemSpyViewBase;
-
-class MMemSpyViewObserver
-    {
-public: // Enumerations
-    enum TViewEventType
-        {
-        EEventItemActioned = 0,
-        EEventItemSelected
-        };
-
-public: // From MMemSpyViewObserver
-    virtual void HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType aViewType, CMemSpyViewBase& aReportingView, TAny* aContext ) = 0;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewOpenFiles.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWOPENFILES_H
-#define MEMSPYVIEWOPENFILES_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewOpenFiles : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewOpenFiles( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewOpenFiles();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    CEikListBox* ConstructListBoxL();
-    void RefreshL();
-    TBool HandleCommandL( TInt aCommand );
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // Command handlers
-    void OnCmdListOpenFilesL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-
-private: // Internal
-    static TBool CompareTEntryObjects( const TEntry& aLeft, const TEntry& aRight );
-
-private: // Data members
-    RArray<TThreadId> iThreadIds;
-    const TThreadId* iActionedThreadId;
-    RArray<TEntry> iFileNames;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewProcesses.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWPROCESSES_H
-#define MEMSPYVIEWPROCESSES_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-#include <memspy/api/memspyapiprocess.h>
-
-// Classes referenced
-class CMemSpyProcess;
-class CAknSearchField;
-class RMemSpySession;
-
-class CMemSpyViewProcesses : public CMemSpyViewBase
-    {
-public:
-    //CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    //CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
-	CMemSpyViewProcesses( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
-//	CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
-	CMemSpyViewProcesses( RMemSpySession& aEngine, MMemSpyViewObserver& aObserver, TProcessId aId );
-    ~CMemSpyViewProcesses();
-    //void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );    
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TProcessId aSelectionRune = NULL );
-
-public: // API
-    CMemSpyProcess& CurrentProcess() const;
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_PROCESS; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdProcess; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // Command handlers
-
-    // Sorting
-    void OnCmdSortByIdL();
-    void OnCmdSortByNameL();
-    void OnCmdSortByThreadCountL();
-    void OnCmdSortByCodeSegsL();
-    void OnCmdSortByHeapUsageL();
-    void OnCmdSortByStackUsageL();
-
-    // Info
-    void OnCmdInfoSummaryL();
-    void OnCmdInfoHandlesL();
-
-    // Ending
-    void OnCmdEndTerminateL();
-    void OnCmdEndPanicL();
-    void OnCmdEndKillL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void HandleListBoxItemSelectedL( TInt aIndex );
-    
-private: // From CCoeControl
-    void SizeChanged();
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl( TInt aIndex ) const;
-	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-    void FocusChanged( TDrawNow /*aDrawNow*/ );
-
-private: // From MCoeControlObserver
-    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
-
-private: // Internal methods
-    void SelectListBoxItemByFindTextL();
-    
-    CDesCArrayFlat* FormatModel( RArray<CMemSpyApiProcess*> aProcesses );
-    void AppendPriority( TDes& aDes, TProcessPriority aPriority );
-    void AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  );
-    void AppendExitType( TDes& aDes, TExitType aType );
-
-private: // Data members
-    CMemSpyProcess* iCurrentProcess;
-    TProcessId iCurrentProcessId;
-    CAknSearchField* iSearchField;
-    HBufC* iMatcherBuffer;
-    RArray<CMemSpyApiProcess*> iProcesses;  //cigasto
-    CDesCArrayFlat* iModel;
-    CDesCArrayFlat* model;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewRAMInfo.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWRAMINFO_H
-#define MEMSPYVIEWRAMINFO_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewRAMInfo : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewRAMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_RAM; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdRAM; }
-
-private: // Command handlers
-    void OnCmdSetIconCacheStatusL( TBool aEnabled );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Data members
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewROMInfo.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWROMINFO_H
-#define MEMSPYVIEWROMINFO_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewROMInfo : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewROMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Data members
-    };
-
-
-#endif
-
--- a/memspyui/ui/avkon/inc/MemSpyViewServerList.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWSERVERLIST_H
-#define MEMSPYVIEWSERVERLIST_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CMemSpyEngineServerList;
-class CMemSpyEngineServerEntry;
-
-
-class CMemSpyViewServerList : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewServerList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewServerList();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_SERVER_LIST; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdServerList; }
-
-private: // Command handlers
-    void OnCmdServerListSortByNameL();
-    void OnCmdServerListSortBySessionCountL();
-    void OnCmdServerListOutputSummaryL();
-    void OnCmdServerListOutputDetailedL();
-    void OnCmdServerListOutputGenericL( TBool aDetailed );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-
-private: // Data members
-    CMemSpyEngineServerList* iList;
-    const CMemSpyEngineServerEntry* iActionedItem;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewSystemConfig.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWSYSTEMCONFIG_H
-#define MEMSPYVIEWSYSTEMCONFIG_H
-
-// System includes
-#include <hal.h>
-#include <f32file.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewSystemConfig : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewSystemConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewSystemConfig();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Internal enumerations 
-
-    enum TMemSpyDisplayMode
-	    {
-	    ENone,
-	    EGray2,
-	    EGray4,
-	    EGray16,
-	    EGray256,
-	    EColor16,
-	    EColor256,
-	    EColor64K,
-	    EColor16M,
-	    ERgb,
-	    EColor4K,
-	    EColor16MU,
-	    EColor16MA,
-	    EColor16MAP,
-	    EColorLast
-	    };
-
-private: // Internal methods
-    static void GetManufacturer( TDes& aBuf );
-    static void GetDeviceFamily( TDes& aBuf );
-    static void GetCPU( TDes& aBuf );
-    static void GetCPUABI( TDes& aBuf );
-    static void GetStartupReason( TDes& aBuf );
-    static void GetKeyboard( TDes& aBuf );
-    static void GetMachineUid( TDes& aBuf );
-    static void GetDisplayType( TDes& aBuf );
-    static void GetDisplayMode( TDes& aBuf, TMemSpyDisplayMode aMode );
-    //
-    static TInt GetHALValue( HALData::TAttribute aAttribute, TInt& aValue );
-    TInt GetHALValueAsStringL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
-    TInt GetHALValueAsNumericL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL, TInt aWidth = -1 );
-    TInt GetHALValueAsHexL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
-    TInt GetHALValueAsYesNoL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
-    TInt GetHALValueAsDriveLetterL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
-
-private:
-    void AddItemL( const TDesC& aCaption, const TDesC& aValue, const TDesC* aSuffix = NULL );
-    void AddItemL( TDriveNumber aDrive, const TDesC& aCaption, const TDesC* aSuffix = NULL );
-
-private: // Data members
-    CDesCArrayFlat* iModel;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemActiveObject.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMACTIVEOBJECT_H
-#define MEMSPYVIEWTHREADINFOITEMACTIVEOBJECT_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-// Classes referenced
-class CMemSpyEngineActiveObjectArray;
-class RMemSpySession;
-
-
-class CMemSpyViewThreadInfoItemActiveObjectBase : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemActiveObjectBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-    
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_ACTIVE_OBJECTS; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdActiveObject; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-protected:
-    CMemSpyEngineActiveObjectArray& ActiveObjectArray() const;
-
-private: // Command handlers
-    void OnCmdWriteAOListingL();
-    };
-
-
-
-class CMemSpyViewThreadInfoItemActiveObject : public CMemSpyViewThreadInfoItemActiveObjectBase
-    {
-public:
-    CMemSpyViewThreadInfoItemActiveObject( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareChildViewL();
-    };
-
-
-
-
-class CMemSpyViewThreadInfoItemActiveObjectDetails : public CMemSpyViewThreadInfoItemActiveObjectBase
-    {
-public:
-    CMemSpyViewThreadInfoItemActiveObjectDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, TAny* aObjectAddress );
-
-public: // From CMemSpyViewBase
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    
-private: // Data members
-    TAny* iObjectAddress;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemChunk.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMCHUNK_H
-#define MEMSPYVIEWTHREADINFOITEMCHUNK_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemChunk : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemChunk( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId,  TThreadId aId, TMemSpyThreadInfoItemType aType );
-
-private: // From CMemSpyViewBase
-    CMemSpyViewBase* PrepareChildViewL();
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemCodeSeg.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMCODESEG_H
-#define MEMSPYVIEWTHREADINFOITEMCODESEG_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemCodeSeg : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemCodeSeg( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-private: // From CMemSpyViewBase
-    CMemSpyViewBase* PrepareChildViewL();
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneralInfo.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMGENERALINFO_H
-#define MEMSPYVIEWTHREADINFOITEMGENERALINFO_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-class CMemSpyThreadInfoContainer;
-class CMemSpyThreadInfoItemBase;
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemGeneralInfo : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemGeneralInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-
-private: // Command handlers
-    void OnCmdToggleKernelEventHooksL();
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneric.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMGENERIC_H
-#define MEMSPYVIEWTHREADINFOITEMGENERIC_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/api/memspyapithreadinfoitem.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-class CAknWaitDialog;
-class CMemSpyProcess;
-class CMemSpyThread;
-class CMemSpyThreadInfoContainer;
-class CMemSpyThreadInfoItemBase;
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemGeneric : public CMemSpyViewBase
-    {
-public:
-    //CMemSpyViewThreadInfoItemGeneric( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aInfoContainer, TMemSpyThreadInfoItemType aType );
-	CMemSpyViewThreadInfoItemGeneric( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcessId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-    ~CMemSpyViewThreadInfoItemGeneric();
-
-public: // From CMemSpyViewBase
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // API
-    CMemSpyProcess& Process() const;
-    CMemSpyThread& Thread() const;
-    CMemSpyThreadInfoContainer& Container() const;
-    CMemSpyThreadInfoItemBase& InfoItem() const;
-    TThreadId ThreadId() { return iThreadId; }
-    
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-
-protected: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
-
-private: // Internal methods
-    void ShowWaitNoteL();
-    void DestroyWaitNote();
-    static TInt CheckForItemConstructionComplete( TAny* aSelf );
-
-protected: // Member data
-    //CMemSpyThreadInfoContainer& iContainer;
-    //CMemSpyThreadInfoItemBase* iInfoItem;
-    
-private: // Member data
-    CAknWaitDialog* iWaitNote;
-    CPeriodic* iWaitConstructionChecker;
-    
-    RArray<CMemSpyApiThreadInfoItem*> iThreadInfoItems;  //cigasto
-    CDesCArrayFlat* iModel;
-    TThreadId iThreadId;
-    TProcessId iParentProcessId;
-    TMemSpyThreadInfoItemType iType;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemHeap.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMHEAP_H
-#define MEMSPYVIEWTHREADINFOITEMHEAP_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemHeap : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType  );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_HEAP; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdHeap; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // Command handlers
-    void OnCmdHeapDataL();
-    void OnCmdHeapCellListingL();
-    void OnCmdHeapInfoL();
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemList.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMLIST_H
-#define MEMSPYVIEWTHREADINFOITEMLIST_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-
-// Classes referenced
-class CMemSpyProcess;
-class CMemSpyThread;
-class CMemSpyThreadInfoItemBase;
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemList : public CMemSpyViewBase, public MMemSpyThreadInfoContainerObserver
-    {
-public:
-    //CMemSpyViewThreadInfoItemList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThread& aThread );
-	CMemSpyViewThreadInfoItemList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcess, TThreadId aThread );
-    ~CMemSpyViewThreadInfoItemList();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TMemSpyThreadInfoItemType iType);
-
-public: // API
-    const CMemSpyThreadInfoItemBase& CurrentInfoItem() const;
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_THREAD; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdThread; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // Command handlers
-    void OnCmdInfoHandlesL();
-
-private: // From MMemSpyThreadInfoContainerObserver
-    void HandleMemSpyEngineInfoContainerEventL( TEvent aEvent, TMemSpyThreadInfoItemType aType );
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
-    static TInt IdleUpdateListBoxModel( TAny* aSelf );
-    void DoIdleUpdateListBoxModelL();   
-
-private: // Member data
-    //CMemSpyThread& iThread;
-    TThreadId iThreadId;
-    TProcessId iParentProcessId;
-    CMemSpyThreadInfoItemBase* iCurrentInfoItem;
-    TInt iCurrentInfoItemId;
-    CPeriodic* iIdleResetListboxTimer;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemMemoryTracking.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMMEMORYTRACKING_H
-#define MEMSPYVIEWTHREADINFOITEMMEMORYTRACKING_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyengineprocessmemorytracker.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-// Classes referenced
-class CMemSpyEngineProcessMemoryTracker;
-
-
-class CMemSpyViewThreadInfoItemMemoryTracking : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
-    {
-public:
-    CMemSpyViewThreadInfoItemMemoryTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-    TInt IndexByViewType( TMemSpyViewType aType );
-    void HandleListBoxItemActionedL( TInt aIndex );
-    void RefreshL();
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_MEMORY_TRACKING; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdMemoryTracking; }
-
-private: // From MMemSpyEngineProcessMemoryTrackerObserver
-    void HandleMemoryTrackingStartedL();
-    void HandleMemoryTrackingStoppedL();
-    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
-
-private: // Command handlers
-    void OnCmdTrackingStartL();
-    void OnCmdTrackingStopL();
-    void OnCmdHWMResetL();
-    void OnCmdTotalWithSharedMemL();
-    void OnCmdTotalWithoutSharedMemL();
-    };
-
-
-class CMemSpyViewThreadInfoItemMemoryTrackingCurrent : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
-    {
-public:
-    CMemSpyViewThreadInfoItemMemoryTrackingCurrent( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    void RefreshL();
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineProcessMemoryTrackerObserver
-    void HandleMemoryTrackingStartedL() { }
-    void HandleMemoryTrackingStoppedL() { }
-    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
-    };
-
-
-
-class CMemSpyViewThreadInfoItemMemoryTrackingHWM : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
-    {
-public:
-    CMemSpyViewThreadInfoItemMemoryTrackingHWM( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    TBool HandleCommandL( TInt aCommand );
-    void RefreshL();
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineProcessMemoryTrackerObserver
-    void HandleMemoryTrackingStartedL() { }
-    void HandleMemoryTrackingStoppedL() { }
-    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_MEMORY_TRACKING_HWM; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdMemoryTrackingHWM; }
-
-private: // Command handlers
-    void OnCmdHWMResetL();
-    };
-    
-
-
-
-class CMemSpyViewThreadInfoItemMemoryTrackingPeak : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
-    {
-public:
-    CMemSpyViewThreadInfoItemMemoryTrackingPeak( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    TBool HandleCommandL( TInt aCommand );
-    void RefreshL();
-    void SetListBoxModelL();
-
-private: // From MMemSpyEngineProcessMemoryTrackerObserver
-    void HandleMemoryTrackingStartedL() { }
-    void HandleMemoryTrackingStoppedL() { }
-    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
-    };
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemServer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMSERVER_H
-#define MEMSPYVIEWTHREADINFOITEMSERVER_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-#include <badesca.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-// Classes referenced
-class TMemSpyDriverHandleInfoGeneric;
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemServer : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemServer( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-
-public: // From CMemSpyViewBase
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
-
-public: // From CMemSpyViewBase
-    CMemSpyViewBase* PrepareChildViewL();
-
-private: // Data members
-    TMemSpyDriverHandleInfoGeneric iCurrentInfoItemDetails;
-    };
-
-
-
-class CMemSpyViewThreadInfoItemServerDetails : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemServerDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails );
-
-public: // From CMemSpyViewBase
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareChildViewL();
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
-
-private: // Internal methods
-
-private: // Member data
-    const TMemSpyDriverHandleInfoGeneric iInfoItemDetails;
-    };
-
-
-
-class CMemSpyViewThreadInfoItemServerSessions : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemServerSessions( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails );
-
-public: // From CMemSpyViewBase
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-
-private: // Member data
-    const TMemSpyDriverHandleInfoGeneric iInfoItemDetails;
-    };
-
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemStack.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADINFOITEMSTACK_H
-#define MEMSPYVIEWTHREADINFOITEMSTACK_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewThreadInfoItemGeneric.h"
-
-class RMemSpySession;
-
-class CMemSpyViewThreadInfoItemStack : public CMemSpyViewThreadInfoItemGeneric
-    {
-public:
-    CMemSpyViewThreadInfoItemStack( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
-
-public: // From CMemSpyViewBase
-    TBool HandleCommandL( TInt aCommand );
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_STACK; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdStack; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-private: // Command handlers
-    void OnCmdDeviceStackSummaryL();
-    void OnCmdStackInfoL();
-    void OnCmdStackDataUserL();
-    void OnCmdStackDataKernelL();
-    void OnCmdStackDataUserAllThreadsL();
-    void OnCmdStackDataKernelAllThreadsL();
-    void OnCmdStackWatchForHighWatermarkL();
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewThreads.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTHREADS_H
-#define MEMSPYVIEWTHREADS_H
-
-// System includes
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-#include <memspy/api/memspyapithread.h>
-
-// Classes referenced
-class CMemSpyProcess;
-class CMemSpyThread;
-class RMemSpySession;
-
-class CMemSpyViewThreads : public CMemSpyViewBase
-    {
-public:
-    //CMemSpyViewThreads( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
-	CMemSpyViewThreads( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aId, TThreadId aThreadId );
-    ~CMemSpyViewThreads();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // API
-    //const CMemSpyProcess& Process() const;
-    //CMemSpyThread& CurrentThread();
-    TProcessId Process() const;
-    TThreadId CurrentThread();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_THREAD; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdThread; }
-    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-public: // From CMemSpyViewBase
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-    TBool HandleCommandL( TInt aCommand );
-
-private: // Command handlers
-    void OnCmdEndKillL();
-    void OnCmdEndTerminateL();
-    void OnCmdEndPanicL();
-    void OnCmdSetPriorityL( TInt aCommand );
-    void OnCmdInfoHandlesL();
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    void HandleListBoxItemActionedL( TInt aCurrentIndex );
-    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
-
-private: // Member data
-    //CMemSpyProcess& iParentProcess;
-    //CMemSpyThread* iCurrentThread;
-    TThreadId iCurrentThreadId;
-    TProcessId iParentProcessId;
-    
-    RArray<CMemSpyApiThread*> iThreads;
-    CDesCArrayFlat* iModel;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewType.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWTYPE_H
-#define MEMSPYVIEWTYPE_H
-
-// System includes
-#include <e32std.h>
-
-// Enumerations
-enum TMemSpyViewType
-    {
-    EMemSpyViewTypeNone = -1,
-    EMemSpyViewTypeMainMenu = 0,
-    EMemSpyViewTypeProcesses,
-    EMemSpyViewTypeRAMInfo,
-    EMemSpyViewTypeROMInfo,
-    EMemSpyViewTypeServerList,
-    EMemSpyViewTypeOpenFiles,
-    EMemSpyViewTypeFBServBitmaps,
-    EMemSpyViewTypeFBServBitmapInfo,
-    EMemSpyViewTypeFBServBitmapViewer,
-    EMemSpyViewTypeCodeSegmentList,
-    EMemSpyViewTypeCodeSegmentDetails,
-    EMemSpyViewTypeChunkList,
-    EMemSpyViewTypeChunkDetails,
-    EMemSpyViewTypeSystemConfig,
-    EMemSpyViewTypeKernel,
-    EMemSpyViewTypeKernelContainers,
-    EMemSpyViewTypeKernelObjects,
-    EMemSpyViewTypeKernelHeap,
-    EMemSpyViewTypeDriveSummary,
-    EMemSpyViewTypeDriveInfo,
-    EMemSpyViewTypeECom,
-    EMemSpyViewTypeEComCategory,
-    EMemSpyViewTypeEComInterface,
-    EMemSpyViewTypeEComImplementation,
-    EMemSpyViewTypeThreads,
-    EMemSpyViewTypeThreadInfoItemList,
-    EMemSpyViewTypeThreadInfoItemHeap,
-    EMemSpyViewTypeThreadInfoItemStack,
-    EMemSpyViewTypeThreadInfoItemChunk,
-    EMemSpyViewTypeThreadInfoItemCodeSeg,
-    EMemSpyViewTypeThreadInfoItemServer,
-    EMemSpyViewTypeThreadInfoItemServerDetails,
-    EMemSpyViewTypeThreadInfoItemServerSessions,
-    EMemSpyViewTypeThreadInfoItemSession,
-    EMemSpyViewTypeThreadInfoItemSemaphore,
-    EMemSpyViewTypeThreadInfoItemMutex,
-    EMemSpyViewTypeThreadInfoItemTimer,
-    EMemSpyViewTypeThreadInfoItemLDD,
-    EMemSpyViewTypeThreadInfoItemPDD,
-    EMemSpyViewTypeThreadInfoItemLogicalChannel,
-    EMemSpyViewTypeThreadInfoItemChangeNotifier,
-    EMemSpyViewTypeThreadInfoItemUndertaker,
-    EMemSpyViewTypeThreadInfoItemMessageQueue,
-    EMemSpyViewTypeThreadInfoItemConditionalVariable,
-    EMemSpyViewTypeThreadInfoItemOpenFiles,
-    EMemSpyViewTypeThreadInfoItemActiveObject,
-    EMemSpyViewTypeThreadInfoItemActiveObjectDetails,
-    EMemSpyViewTypeThreadInfoItemGeneralInfo,
-    EMemSpyViewTypeThreadInfoItemOtherThreads,
-    EMemSpyViewTypeThreadInfoItemOtherProcesses,
-    EMemSpyViewTypeThreadInfoItemOwnedThreadHandles,
-    EMemSpyViewTypeThreadInfoItemOwnedProcessHandles,
-    EMemSpyViewTypeHeapTracking,
-    EMemSpyViewTypeHeapTrackingSettings,
-    EMemSpyViewTypeHeapTrackingResults,
-    EMemSpyViewTypeHeapTrackingResultsCycleInfo,
-    EMemSpyViewTypeHeapTrackingResultsCycleChangeDescriptor,
-    EMemSpyViewTypeThreadInfoItemMemoryTracking,
-    EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig,
-    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatistics,
-    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent,
-    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM,
-    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak,
-    EMemSpyViewTypeWindowGroups
-    };
-
-
-class MemSpyViewTypeUtils
-    {
-public:
-    static TBool IsOpenableItem( TMemSpyViewType aType );
-    static TBool IsThreadInfoItem( TMemSpyViewType aType );
-    static TBool IsExitableView( TMemSpyViewType aType );
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/MemSpyViewWindowGroups.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +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:
-*
-*/
-
-#ifndef MEMSPYVIEWWINDOWGROUPS_H
-#define MEMSPYVIEWWINDOWGROUPS_H
-
-// System includes
-#include <hal.h>
-#include <coecntrl.h>
-#include <aknlists.h>
-
-// Engine includes
-#include <memspy/engine/memspyenginehelperwindowserver.h>
-
-// User includes
-#include "MemSpyViewBase.h"
-
-// Classes referenced
-
-
-class CMemSpyViewWindowGroups : public CMemSpyViewBase
-    {
-public:
-    CMemSpyViewWindowGroups( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
-    ~CMemSpyViewWindowGroups();
-    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
-
-public: // From CMemSpyViewBase
-    CEikListBox* ConstructListBoxL();
-    void RefreshL();
-    TMemSpyViewType ViewType() const;
-    CMemSpyViewBase* PrepareParentViewL();
-    CMemSpyViewBase* PrepareChildViewL();
-
-public: // Menu framework
-    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_WINDOW_GROUPS; }
-    TInt MenuCascadeCommandId() const { return EMemSpyCmdWindowGroups; }
-
-private: // From CMemSpyViewBase
-    void SetListBoxModelL();
-    TBool HandleCommandL( TInt aCommand );
-
-private: // Command handlers
-    void OnCmdSwitchToL();
-    void OnCmdEndL( TInt aCommand );
-
-private: // Internal methods
-    void DetailsL();
-    void AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... );
-
-private: // Data members
-    MMemSpyEngineWindowGroupList* iWindowGroupList;
-    };
-
-
-#endif
--- a/memspyui/ui/avkon/inc/viewcli.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-// Copyright (c) 1999-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:
-//
-
-#ifndef __VIEWCLI_H__
-#define __VIEWCLI_H__
-
-#include <e32base.h>
-#include <gdi.h>
-#include <vwsdef.h>
-
-//
-// Forward declarations.
-//
-
-class RVwsSession;
-class CVwsSessionEventHandler;
-class MVwsAppStarter;
-
-class MVwsSessionWrapperObserver
-/**
-The MVwsSessionObserver specifies an interface through which server events to be handled by the owner of
-a client session are notified
-
-@publishedAll 
-@deprecated
-*/
-//@internalTechnology @released
-
-	{
-public:	
-
-	/**
-	 * Handles the view event aEvent for a view added through the client session being observed.
-	 * Handles events for all the views added by the client.
-	 */
-	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
-	};
-
-
-class CVwsSessionWrapper : public CBase
-/**
-The CVwsSessionWrapper class mediates access to the view server client session which it creates, and wraps in
-support for notification of server events. A session observer will be called back with server events if
-it maintains an outstanding request for asynchronous event notification.
-
-@publishedPartner 
-@released 
-*/
-//@internalTechnology @released
-
-	{
-public:	
-	IMPORT_C static CVwsSessionWrapper* NewL();
-	IMPORT_C static CVwsSessionWrapper* NewLC();
-	IMPORT_C static CVwsSessionWrapper* NewL(MVwsSessionWrapperObserver& aObserver);
-	IMPORT_C static CVwsSessionWrapper* NewLC(MVwsSessionWrapperObserver& aObserver);
-	IMPORT_C ~CVwsSessionWrapper();
-	IMPORT_C static TInt StartViewServer(MVwsAppStarter& aAppStarter);
-	IMPORT_C TInt ShutdownViewServer();
-	IMPORT_C TInt AddView(const TVwsViewId& aViewId);
-	IMPORT_C TInt RemoveView(const TVwsViewId& aViewId) const;
-	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId,TInt aMode);
-	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId);
-	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
-	IMPORT_C TInt ActivateViewViaViewEvent(const TVwsViewIdAndMessage& aViewIdAndMessage);
-	IMPORT_C TInt RequestCustomMessage(TDes8& aMessageBufPtr) const;
-	IMPORT_C void QueueAsyncRequest();
-	IMPORT_C TInt StartApp(TUid aAppToStart);
-	IMPORT_C TInt DeactivateActiveView();
-	IMPORT_C TInt DeactivateActiveViewIfOwnerMatch();
-	IMPORT_C TInt NotifyNextDeactivation(const TVwsViewId& aViewId);
-	IMPORT_C TInt NotifyNextDeactivation();
-	IMPORT_C TInt NotifyNextActivation(const TVwsViewId& aViewId);
-	IMPORT_C TInt NotifyNextActivation();
-	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId,TInt aMode) const;
-	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId) const;
-	IMPORT_C TInt GetSystemDefaultView(TVwsViewId& aViewId);
-	IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
-	IMPORT_C TInt SetClientRequestTimeOut(TTimeIntervalMicroSeconds32 aDuration);
-	IMPORT_C TInt SetServerEventTimeOut(TTimeIntervalMicroSeconds32 aDuration);
-	IMPORT_C TInt EnableServerEventTimeOut(TBool aEnable);
-	IMPORT_C TInt CheckSourceOfViewSwitch(TBool& aResult,const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic);
-	IMPORT_C TInt EnableServerBlankScreen(TBool aEnable);
-	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
-	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus);
-	IMPORT_C TInt SetCrossCheckUid(const TUid& aCrossCheckUid);
-	IMPORT_C TInt SetWindowBackgroundColor(const TRgb& aBgColor);
-public:	
-	/**
-	@internalComponent
-	@released
-	*/
-	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
-	/**
-	@internalComponent
-	@released
-	*/
-	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus, TInt aCustomControl);
-	/**
-	@internalComponent
-	@released
-	*/IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
-	/**
-	@internalComponent
-	@released
-	*/
-	IMPORT_C TInt GetCurrentActiveViewInSystem(TVwsViewId& aActiveViewId);
-private:
-	CVwsSessionWrapper();
-	CVwsSessionWrapper(MVwsSessionWrapperObserver& aObserver);
-	void ConstructL();
-	TInt CheckCreateViewServerSession();
-	TBool IsSchedulerRunning();
-private:
-	RVwsSession* iVwsSession;
-	CVwsSessionEventHandler* iViewEventHandler;
-	MVwsSessionWrapperObserver* iObserver;
-	};
-
-
-//
-// Panic.
-//
-/**
-@internalComponent
-*/
-enum TVwsPanic
-	{
-	EVwsCreateScheduler=1,
-	EVwsThreadRename
-	};
-
-/**
-@internalComponent
-*/
-GLREF_C void Panic(TVwsPanic aPanic);
-
-/**
-Server thread start.
-
-@internalComponent
-*/
-GLDEF_C TInt ViewServerThreadStart(TAny* aPtr);
-
-/**
-@internalComponent
-*/
-struct SVwsCommandLine
-	{
-	MVwsAppStarter* iAppStarter;
-	};
-
-
-#endif
--- a/memspyui/ui/avkon/src/MemSpyApp.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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 "MemSpyApp.h"
-
-// System includes
-#include <eikstart.h>
-
-// User includes
-#include "MemSpyDocument.h"
-
-
-
-TUid CMemSpyApp::AppDllUid() const
-    {
-    return KUidMemSpy;
-    }
-
-
-CApaDocument* CMemSpyApp::CreateDocumentL()
-    {
-    return CMemSpyDocument::NewL( *this );
-    }
-
-
-EXPORT_C CApaApplication* NewApplication()
-    {
-    return new CMemSpyApp;
-    }
-
-
-GLDEF_C TInt E32Main()
-    {
-    return EikStart::RunApplication(NewApplication);
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyAppUi.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,763 +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 "MemSpyAppUi.h"
-
-// System includes
-#include <AknQueryDialog.h>
-#include <aknmessagequerydialog.h> 
-#include <aknradiobuttonsettingpage.h>
-#include <eikaufty.h>
-#include <eikmenub.h>
-#include <avkon.hrh>
-#include <barsread.h>
-#include <f32file.h>
-#include <apgtask.h>
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-#include <memspy/engine/memspyenginehelperthread.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperkernelcontainers.h>
-#include <memspy/engine/memspyenginehelperfbserv.h>
-#include <memspyengineclientinterface.h>
-#include <memspy/driver/memspydriverenumerationsshared.h>
-#include <memspy/engine/memspyenginehelperkernelcontainers.h>
-//cigasto
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainer.h"
-#include "MemSpyDocument.h"
-#include "MemSpySettings.h"
-#include "MemSpyDeviceWideOperationDialog.h"
-#include "MemSpyViewRAMInfo.h" // for aknicon config check
-#include "MemSpyExportBitmapsToMemoryCardDialog.h"
-#include "MemSpy.hrh"
-#include "viewcli.h"
-
-// Constants
-const TInt KMemSpyDefaultAutoCaptureTimerPeriod = 60;
-const TUint32 KMemSpyEikSrvSID = 0x10003a4a;
-
-/*
-CMemSpyAppUi::CMemSpyAppUi( CMemSpyEngine& aEngine )
-:   iEngine( aEngine ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
-    {
-    iEngine.SetObserver( this );
-    }
-*/
-CMemSpyAppUi::CMemSpyAppUi( RMemSpySession &aSession )
-:   iMemSpySession( aSession ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
-    {
-    //iEngine.SetObserver( this );
-    }
-
-CMemSpyAppUi::~CMemSpyAppUi()
-    {
-    RDebug::Printf( "[MemSpy] MemSpy is now closing." );
-    //
-    delete iAutoCaptureTimer;
-    //
-    if (iAppContainer)
-        {
-        RemoveFromStack( iAppContainer );
-        delete iAppContainer;
-        }
-    //
-    //iEngine.SetObserver( NULL );
-    SetViewServerTimeOutStatus( ETrue );
-    }
-
-
-void CMemSpyAppUi::ConstructL()
-    {
-    BaseConstructL( EAknEnableSkin );
-    //
-    //iAppContainer = new (ELeave) CMemSpyContainer( iEngine, *this );
-    iAppContainer = new (ELeave) CMemSpyContainer( iMemSpySession, *this );
-    iAppContainer->SetMopParent(this);
-    iAppContainer->ConstructL( ClientRect() );
-    iAppContainer->SetObserver( this );
-    iAppContainer->SetFocus( ETrue );
-    AddToStackL( iAppContainer );
-    //
-    iAutoCaptureTimer = CPeriodic::NewL( CActive::EPriorityIdle );
-	//
-	iEikonEnv->SetSystem( ETrue );
-    //
-    SetViewServerTimeOutStatus( EFalse );
-    }
-
-
-CMemSpyDocument& CMemSpyAppUi::MemSpyDocument()
-    {
-	CMemSpyDocument* doc = static_cast< CMemSpyDocument* >( Document() );
-    return *doc;
-    }
-
-
-const CMemSpyDocument& CMemSpyAppUi::MemSpyDocument() const
-    {
-	const CMemSpyDocument* doc = static_cast< const CMemSpyDocument* >( Document() );
-    return *doc;
-    }
-
-
-void CMemSpyAppUi::HandleStatusPaneSizeChange()
-	{
-	iAppContainer->SetRect( ClientRect() );
-	} 
-
-
-void CMemSpyAppUi::HandleControlEventL( CCoeControl* aControl, TCoeEvent /*aEventType*/ )
-    {
-    if  ( aControl == iAppContainer )
-        {
-        UpdateCBAL();
-        }
-    }
-
-
-void CMemSpyAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    CMemSpyViewBase& view = iAppContainer->ActiveView();
-    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
-    //
-    const TBool openableView = MemSpyViewTypeUtils::IsOpenableItem( viewType );
-    const TBool exitable = MemSpyViewTypeUtils::IsExitableView( viewType );
-    //
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - START - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
-#endif
-    //
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-        const TInt count = aMenuPane->NumberOfItemsInPane();
-        for( TInt i=0; i<count; i++ )
-            {
-            TBool dimItem = EFalse;
-            CEikMenuPaneItem::SData& menuPaneMetaData = aMenuPane->ItemDataByIndexL( i );
-
-            // If the command is inside the view-specific range then we'll hide it
-            // unless the view and command id matches.
-            const TBool isViewSpecific = ( menuPaneMetaData.iCommandId >= KMemSpyMenuCommandViewSpecific );
-            if  ( isViewSpecific )
-                {
-                // Check whether this view requires this command item.
-                dimItem = ( view.MenuCascadeCommandId() != menuPaneMetaData.iCommandId );
-                }
-
-            aMenuPane->SetItemDimmed( menuPaneMetaData.iCommandId, dimItem );
-            }
-
-        aMenuPane->SetItemDimmed( EMemSpyCmdOpen, !openableView );
-        aMenuPane->SetItemDimmed( EAknSoftkeyBack, exitable );
-        aMenuPane->SetItemDimmed( EAknCmdExit, !exitable );
-        }
-    else if ( aResourceId == R_MEMSPY_MENUPANE_TOOLS )
-        {
-        const TBool inOpenFilesView = ( viewType == EMemSpyViewTypeOpenFiles );
-        aMenuPane->SetItemDimmed( EMemSpyCmdToolsListOpenFiles, !inOpenFilesView );
-        }
-    else if ( aResourceId == R_MEMSPY_MENUPANE_VIEW )
-        {
-        // Hide the refresh item when in the thread info container view
-        aMenuPane->SetItemDimmed( EMemSpyCmdViewRefresh, viewType == EMemSpyViewTypeThreadInfoItemList );
-        aMenuPane->SetItemDimmed( EMemSpyCmdViewOutputToSink, viewType == EMemSpyViewTypeThreadInfoItemList );
-        }
-    else if ( aResourceId == R_MEMSPY_MENUPANE_OUTPUT )
-        {
-		/* TODO
-        //const TMemSpySinkType currentSink = iEngine.SinkType();		
-		const TMemSpySinkType currentSink = iMemSpySession.GetSinkType();
-        aMenuPane->SetItemDimmed( EMemSpyCmdOutputToDebug, currentSink == ESinkTypeDebug );
-        aMenuPane->SetItemDimmed( EMemSpyCmdOutputToFile, currentSink == ESinkTypeFile );
-        */        
-        }
-    else if ( aResourceId == R_MEMSPY_MENUPANE_AUTO_CAPTURE )
-        {
-        // Change the auto-capture toggle caption appropriately...
-        TInt resId = R_MEMSPY_AUTO_CAPTURE_ENABLE;
-        if  ( iAutoCaptureTimer->IsActive() )
-            {
-            resId = R_MEMSPY_AUTO_CAPTURE_DISABLE;
-            }
-        aMenuPane->SetItemTextL( EMemSpyCmdAutoCaptureToggle, resId );
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - sending to view..." );
-#endif
-
-    view.DynInitMenuPaneL( aResourceId, aMenuPane );
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - END - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
-#endif
-    }
-
-
-TKeyResponse CMemSpyAppUi::HandleKeyEventL( const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/ )
-    {
-    return EKeyWasNotConsumed;
-    }
-
-
-void CMemSpyAppUi::HandleCommandL( TInt aCommand )
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - START - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-
-    switch ( aCommand )
-        {
-    case EAknSoftkeyBack:
-        OnCmdBackL();
-        break;
-
-    case EEikCmdExit:
-    case EAknCmdExit:
-    case EAknSoftkeyExit:
-        OnCmdExitL();
-        break;
-
-    case EMemSpyCmdOpen:
-        OnCmdOpenL();
-        break;
-
-    case EMemSpyCmdOutputToDebug:
-        OnCmdOutputToDebugL();
-		break;
-    case EMemSpyCmdOutputToFile:
-        OnCmdOutputToFileL();
-		break;
-
-    case EMemSpyCmdToolsAbout:
-        OnCmdAboutL();
-        break;
-    //         
-    case EMemSpyCmdPhoneInfoGeneralSummary:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralSummary );
-    	OnCmdPhoneInformationOperationL( OutputPhoneInfo );
-        break;        
-    case EMemSpyCmdPhoneInfoGeneralDetailed:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralDetailed );
-        OnCmdPhoneInformationOperationL( OutputDetailedPhoneInfo );
-        break;
-    /*
-    case EMemSpyCmdPhoneInfoGeneralHandles:
-        OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralHandles );
-        break;
-    case EMemSpyCmdPhoneInfoGeneralKernelContainers:
-        OnCmdPhoneInformationOperationKernelContainersL();
-        break;
-    //
-    */
-    case EMemSpyCmdPhoneInfoHeapInfoSummary:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapInfo );
-    	OnCmdPhoneInformationOperationL (OutputHeapInfo );
-        break;
-    case EMemSpyCmdPhoneInfoHeapInfoCompact:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceHeapInfoCompact );
-    	OnCmdPhoneInformationOperationL( OutputCompactHeapInfo );
-        break;
-    case EMemSpyCmdPhoneInfoHeapCellListing:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapCellListing );
-        OnCmdPhoneInformationOperationL( OutputHeapCellListing );
-        break;
-        
-    case EMemSpyCmdPhoneInfoHeapDump:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapData );
-    	OnCmdPhoneInformationOperationL( OutputHeapData );
-        break;
-    //		   		    		
-    case EMemSpyCmdPhoneInfoStackInfo:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackInfo );
-        OnCmdPhoneInformationOperationL( OutputStackInfo );
-        break;
-    case EMemSpyCmdPhoneInfoStackInfoCompact:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceStackInfoCompact );
-        OnCmdPhoneInformationOperationL( OutputCompactStackInfo );
-        break;
-    case EMemSpyCmdPhoneInfoStackDumpUser:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataUser );
-    	OnCmdPhoneInformationOperationL( OutputUserStackData );
-        break;
-    case EMemSpyCmdPhoneInfoStackDumpKernel:
-        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataKernel );
-        OnCmdPhoneInformationOperationL( OutputKernelStackData );
-        break;
-
-    case EMemSpyCmdAutoCaptureToggle:
-        OnCmdAutoCaptureToggleL();
-        break;
-    case EMemSpyCmdAutoCaptureRetryTime:
-        OnCmdAutoCaptureRetryTimeL();
-        break;
-    case EMemSpyCmdAutoCaptureOperationType:
-        OnCmdAutoCaptureOperationTypeL();
-        break;
-
-    default:
-        iAppContainer->HandleCommandL( aCommand );
-        break;
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - END - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-void CMemSpyAppUi::HandleForegroundEventL( TBool aForeground)
-    {
-    // Refresh the container when coming to the foreground
-    if  ( aForeground )
-        {
-        iAppContainer->OnCmdViewRefreshL();
-        }
-    }
-
-
-void CMemSpyAppUi::HandleThreadSelectedL( const CMemSpyThread& /*aThread*/ )
-    {
-	MEikAppUiFactory* appUiFactory = (iEikonEnv)->AppUiFactory();
-    appUiFactory->MenuBar()->TryDisplayMenuBarL();
-    }
-
-
-void CMemSpyAppUi::HandleMemSpyEngineEventL( MMemSpyEngineObserver::TEvent aEvent, TAny* aContext )
-    {
-    if  ( aEvent == MMemSpyEngineObserver::EHandleThreadsOrProcessesChanged )
-        {
-        // Get the original container
-        const CMemSpyEngineObjectContainer& oldContainer = *reinterpret_cast< CMemSpyEngineObjectContainer* >( aContext );
-        (void) oldContainer;
-
-        // Refresh the container
-        iAppContainer->OnCmdViewRefreshL();
-        }
-    else if ( aEvent == MMemSpyEngineObserver::EHandleClientServerOperationRequest )
-        {
-        const TInt function = reinterpret_cast<TInt>( aContext );
-        InitiateMemSpyClientServerOperationL( function );
-        }
-    }
-
-
-void CMemSpyAppUi::DWOperationStarted()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-
-    iRunningDeviceWideOperation = ETrue;
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-void CMemSpyAppUi::DWOperationCancelled()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-
-    iAutoCaptureTimer->Cancel();
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-void CMemSpyAppUi::DWOperationCompleted()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-
-    iRunningDeviceWideOperation = EFalse;
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - END - iAutoCaptureTimer is active: %d", iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-void CMemSpyAppUi::UpdateCBAL()
-    {
-    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
-    //
-    if  ( MemSpyViewTypeUtils::IsExitableView( viewType ) )
-        {
-        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_EXIT );
-        }
-    else
-        {
-        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
-        }
-
-    cba->MakeVisible( ETrue );
-    cba->DrawNow();
-    }
-
-
-void CMemSpyAppUi::InitiateMemSpyClientServerOperationL( TInt aOpCode )
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - START - aOpCode: %d", aOpCode );
-#endif
-
-    switch( aOpCode )
-        {
-    case EMemSpyClientServerOpSummaryInfo:
-        HandleCommandL( EMemSpyCmdPhoneInfoGeneralSummary );
-        break;
-    case EMemSpyClientServerOpSummaryInfoDetailed:
-        HandleCommandL( EMemSpyCmdPhoneInfoGeneralDetailed );
-        break;
-    //
-    case EMemSpyClientServerOpHeapInfo:
-        HandleCommandL( EMemSpyCmdPhoneInfoHeapInfoSummary );
-        break;
-    case EMemSpyClientServerOpHeapCellListing:
-        HandleCommandL( EMemSpyCmdPhoneInfoHeapCellListing );
-        break;
-    case EMemSpyClientServerOpHeapData:
-        HandleCommandL( EMemSpyCmdPhoneInfoHeapDump );
-        break;
-    //
-    case EMemSpyClientServerOpStackInfo:
-        HandleCommandL( EMemSpyCmdPhoneInfoStackInfo );
-        break;
-    case EMemSpyClientServerOpStackDataUser:
-        HandleCommandL( EMemSpyCmdPhoneInfoStackDumpUser );
-        break;
-    case EMemSpyClientServerOpStackDataKernel:
-        HandleCommandL( EMemSpyCmdPhoneInfoStackDumpKernel );
-        break;
-    //
-    case EMemSpyClientServerOpBitmapsSave:
-        OnCmdToolsBitmapsSaveToMemoryCardL();
-        break;
-    case EMemSpyClientServerOpSendToBackground:
-        OnCmdToolsSendToBackgroundL();
-        break;
-    case EMemSpyClientServerOpBringToForeground:
-        OnCmdToolsBringToForegroundL();
-        break;
-    case EMemSpyClientServerOpExit:
-        OnCmdExitL();
-        break;
-    //
-    default:
-        User::Leave( KErrNotSupported );
-        break;
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - END - aOpCode: %d", aOpCode );
-#endif
-    }
-
-
-void CMemSpyAppUi::SetViewServerTimeOutStatus( TBool aEnabled )
-    {
-	/* TODO
-	iMemSpySession.SetServerTimeOutStatus( KMemSpyEikSrvSID, aEnabled );
-	*/
-	/*
-    TRAP_IGNORE(
-        iEngine.HelperProcess().ImpersonateL( KMemSpyEikSrvSID );
-        //
-        CVwsSessionWrapper* ses = CVwsSessionWrapper::NewLC();
-        ses->EnableServerEventTimeOut( aEnabled );
-        CleanupStack::PopAndDestroy( ses );
-        //
-        iEngine.HelperProcess().ImpersonateL( 0 );
-        );
-    */	
-    }
-
-
-void CMemSpyAppUi::OnCmdBackL()
-    {
-    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
-    //
-    if  ( !MemSpyViewTypeUtils::IsExitableView( viewType ) )
-        {
-        // Should go back one view
-        iAppContainer->NavigateToParentViewL();
-        }
-    }
-
-
-void CMemSpyAppUi::OnCmdExitL()
-    {
-    Exit();
-    }
-
-
-void CMemSpyAppUi::OnCmdOpenL()
-    {
-    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
-    //
-    if  ( !MemSpyViewTypeUtils::IsOpenableItem( viewType ) )
-        {
-        // Should go back one view
-        iAppContainer->NavigateToChildViewL();
-        }
-    }
-
-
-void CMemSpyAppUi::OnCmdPhoneInformationOperationL( TDeviceWideOperation aOperation )
-    {	
-	//
-	//CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, aOperation );
-	CMemSpyDwoTracker* tracker = CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( iMemSpySession, aOperation );
-	tracker->Start();		
-	/*
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - START - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-
-    if  ( !iRunningDeviceWideOperation )
-        {        
-		CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, *this, aOp );
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - END - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
-#endif
-	*/
-    }
-
-
-void CMemSpyAppUi::OnCmdPhoneInformationOperationKernelContainersL()
-    {
-	/* TODO
-	iMemSpySession.OutputKernelObjects();
-	*/
-	/*
-    CMemSpyEngineGenericKernelObjectContainer* list = iEngine.HelperKernelContainers().ObjectsAllL();
-    CleanupStack::PushL( list );
-    iEngine.HelperKernelContainers().OutputL( *list );
-    CleanupStack::PopAndDestroy( list );
-    */	
-    }
-
-
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-
-
-void CMemSpyAppUi::OnCmdAutoCaptureToggleL()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-
-    if  ( iAutoCaptureTimer->IsActive() )
-        {
-        iAutoCaptureTimer->Cancel();
-        }
-    else
-        {
-        iAutoCaptureTimer->Cancel();
-        //
-        const TTimeIntervalMicroSeconds32 interval( iAutoCaptureTimerPeriod * 1000000 );
-        iAutoCaptureTimer->Start( 0, interval, TCallBack(AutoCaptureCallBack, this) );
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-void CMemSpyAppUi::OnCmdAutoCaptureRetryTimeL()
-    {
-    CAknNumberQueryDialog* dialog = new(ELeave) CAknNumberQueryDialog( iAutoCaptureTimerPeriod );
-    dialog->ExecuteLD( R_MEMSPY_DEVICE_WIDE_SETTINGS );
-    }
-
-
-void CMemSpyAppUi::OnCmdAutoCaptureOperationTypeL()
-    {
-    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES );
-    CleanupStack::PushL(items);
-    //
-    TInt currentItem = iAutoCaptureOperationType;
-    //
-    CAknRadioButtonSettingPage* dialog = new(ELeave) CAknRadioButtonSettingPage( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES_SETTINGS_PAGE, currentItem, items );
-    if  ( dialog->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
-        {
-        iAutoCaptureOperationType = static_cast< CMemSpyDeviceWideOperations::TOperation >( currentItem );
-        }
-    //
-    CleanupStack::PopAndDestroy( items ); 
-    }
-
-
-TInt CMemSpyAppUi::AutoCaptureCallBack( TAny* aSelf )
-    {
-    CMemSpyAppUi* self = reinterpret_cast< CMemSpyAppUi* >( aSelf );
-    TRAPD( err, self->AutoCaptureCallBackL() );
-    //
-    const TBool callMeBackAgain = ( err == KErrNone );
-    return callMeBackAgain;
-    }
-
-
-void CMemSpyAppUi::AutoCaptureCallBackL()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-
-   // OnCmdPhoneInformationOperationL( iAutoCaptureOperationType );
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - END - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
-#endif
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-void CMemSpyAppUi::OnCmdOutputToDebugL()
-    {
-	iMemSpySession.SwitchOutputSink( ESinkTypeDebug ); //set in engine
-	MemSpyDocument().Settings().SetSinkType( ESinkTypeDebug ); //set in settings
-    }
-
-
-void CMemSpyAppUi::OnCmdOutputToFileL()
-    {
-	iMemSpySession.SwitchOutputSink( ESinkTypeFile ); //set in engine
-	MemSpyDocument().Settings().SetSinkType( ESinkTypeFile ); //set in settings
-    }
-
-
-
-
-
-
-
-
-
-
-
-void CMemSpyAppUi::OnCmdAboutL()
-    {
-    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
-    dialog->ExecuteLD( R_MEMSPYUI_ABOUT_DIALOG );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-void CMemSpyAppUi::OnCmdToolsBitmapsSaveToMemoryCardL()
-    {
-	/* TODO
-    // Get bitmap handles
-    RArray<TInt> handles;
-    CleanupClosePushL( handles );
-    iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( handles );
-
-    // Build bitmap list
-    CMemSpyEngineFbServBitmapArray* array = CMemSpyEngineFbServBitmapArray::NewL( handles );
-    CleanupStack::PopAndDestroy( &handles );
-    CleanupStack::PushL( array );
-
-    // Export...
-    CMemSpyExportBitmapsToMemoryCardDialog* dialog = CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *array );
-    
-    // All done
-    CleanupStack::PopAndDestroy( array );
-    */
-    }
-
-
-void CMemSpyAppUi::OnCmdToolsSendToBackgroundL()
-    {
-    TApaTask task( iCoeEnv->WsSession() );
-    task.SendToBackground();
-    }
-
-
-void CMemSpyAppUi::OnCmdToolsBringToForegroundL()
-    {
-    iCoeEnv->BringOwnerToFront();
-    }
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyContainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +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 "MemSpyContainer.h"
-
-// System includes
-#include <eikrted.h>  // for example label control
-#include <txtrich.h>
-#include <apgtask.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-
-// User includes
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-
-
-/*
-CMemSpyContainer::CMemSpyContainer( CMemSpyEngine& aEngine, MMemSpyContainerObserver& aObserver  )
-:   iEngine( aEngine ), iObserver( aObserver )
-    {
-    }
-*/
-CMemSpyContainer::CMemSpyContainer( RMemSpySession& aSession, MMemSpyContainerObserver& aObserver  )
-:   iMemSpySession( aSession ), iObserver( aObserver )
-    {
-    }
-
-CMemSpyContainer::~CMemSpyContainer()
-    {
-    delete iPreviousView;
-    delete iActiveView;
-    }
-
-
-void CMemSpyContainer::ConstructL(const TRect& aRect)
-    {
-    CreateWindowL();
-    SetRect(aRect);
-    PrepareTopLevelViewL();
-    ActivateL();
-    }
-
-
-void CMemSpyContainer::NavigateToParentViewL()
-    {
-    CMemSpyViewBase* parentView = iActiveView->PrepareParentViewL();
-    //
-    if  ( parentView == NULL )
-        {
-        // Parent can be null, in which case, revert to top-level view
-        PrepareTopLevelViewL();
-        }
-    else
-        {
-        SetNewActiveViewL( parentView );
-        }
-    }
-
-
-void CMemSpyContainer::NavigateToChildViewL()
-    {
-    CMemSpyViewBase* childView = iActiveView->PrepareChildViewL();
-    //
-    if  ( childView != NULL )
-        {
-        SetNewActiveViewL( childView );
-        }
-    }
-
-
-void CMemSpyContainer::HandleCommandL( TInt aCommand )
-    {
-    switch( aCommand )
-        {
-	case EMemSpyCmdViewRefresh:
-        OnCmdViewRefreshL();
-        break;
-    default:
-        if  ( iActiveView )
-            {
-            iActiveView->HandleCommandL( aCommand );
-            }
-        break;
-        }
-    }
-
-
-void CMemSpyContainer::OnCmdViewRefreshL()
-    {
-    if  ( iActiveView )
-        {
-        TRAPD(err, iActiveView->RefreshL());
-        if  ( err != KErrNone )
-            {
-            // Error during view refreshing (perhaps the thread doesn't exist anymore).
-            // Try to replace the active view with its parent...
-            NavigateToParentViewL();
-            }
-        }
-    }
-
-
-void CMemSpyContainer::SizeChanged()
-    {
-    if  ( iActiveView )
-        {
-        iActiveView->SetRect( Rect() );
-        }
-    }
-
-
-TInt CMemSpyContainer::CountComponentControls() const
-    {
-    return 1;
-    }
-
-
-CCoeControl* CMemSpyContainer::ComponentControl(TInt /*aIndex*/) const
-    {
-    return iActiveView;
-    }
-
-
-void CMemSpyContainer::Draw(const TRect& aRect) const
-    {
-    CWindowGc& gc = SystemGc();
-    //
-    gc.SetPenStyle(CGraphicsContext::ENullPen);
-    gc.SetBrushColor(KRgbGray);
-    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-    gc.DrawRect(aRect);
-    }
-
-
-TKeyResponse CMemSpyContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-    //
-    if  ( iActiveView )
-        {
-        response = iActiveView->OfferKeyEventL( aKeyEvent, aType );
-        }
-    //
-    return response;
-    }
-
-
-void CMemSpyContainer::HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType /*aViewType*/, CMemSpyViewBase& aReportingView, TAny* /*aContext*/ )
-    {
-    if  ( aEvent == EEventItemActioned )
-        {
-        // Get the view to generate a child
-        CMemSpyViewBase* child = aReportingView.PrepareChildViewL();
-        if  ( child == NULL )
-            {
-            // View doesn't have a child - treat it as item activation and
-            // report event to observer.
-
-            }
-        else
-            {
-            // Child view becomes the active one
-            SetNewActiveViewL( child );
-            }
-        }
-    }
-
-
-CMemSpyViewBase* CMemSpyContainer::PrepareTopLevelViewL()
-    {
-    //CMemSpyViewMainMenu* view = new(ELeave) CMemSpyViewMainMenu( iEngine, *this );
-	CMemSpyViewMainMenu* view = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, *this );
-    CleanupStack::PushL( view );
-    view->ConstructL( Rect(), *this );
-    SetNewActiveViewL( view );
-    CleanupStack::Pop( view );
-    return view;
-    }
-
-
-void CMemSpyContainer::SetNewActiveViewL( CMemSpyViewBase* aNewView )
-    {
-    delete iPreviousView;
-    //
-    iPreviousView = iActiveView;
-    if  ( iPreviousView )
-        {
-        iPreviousView->MakeVisible( EFalse );
-        iPreviousView->SetFocus( EFalse );
-        }
-    //
-    iActiveView = aNewView;
-    iActiveView->RefreshL();
-    iActiveView->SetFocus( ETrue );
-    //
-    ReportEventL( MCoeControlObserver::EEventStateChanged );
-    }
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,387 +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 "MemSpyDeviceWideOperationDialog.h"
-
-// System includes
-#include <eikprogi.h>
-#include <AknWaitDialog.h>
-#include <AknQueryDialog.h>
-#include <coemain.h>
-#include <eikenv.h>
-#include <avkon.hrh>
-#include <memspyui.rsg>
-
-#include <memspysession.h>
-
-/*
-CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver )
-:   iEngine( aEngine ), iObserver( aObserver )
-    {
-    }
-
-CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver )
-:   iSession( aSession ), iObserver( aObserver )
-    {
-    }    
-*/
-
-CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession )
-:   iSession( aSession )
-    {
-    }    
-
-
-CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog()
-    {
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - START - iForcedCancel: %d", iForcedCancel );
-#endif
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - deleting operation...: 0x%08x", iOperation );
-#endif
-    delete iOperation;
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - deleting dialog...: 0x%08x", iProgressDialog );
-#endif
-    iProgressInfo = NULL;
-    delete iProgressDialog;
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - sending EDialogDismissed to observer..." );
-#endif
-
-    //iObserver.DWOperationCompleted(); //TODO
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - END" );
-#endif
-    }
-
-
-//void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
-void CMemSpyDeviceWideOperationDialog::ExecuteL( TDeviceWideOperation aOp )
-    {
-	/*
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - START" );
-#endif
-
-    iOperation = CMemSpyDeviceWideOperations::NewL( iEngine, *this, aOperation );
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - constructed operation..." );
-#endif
-
-    ASSERT( iProgressDialog == NULL );
-    iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
-    iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
-    iProgressDialog->SetCallback( this );
-    iProgressDialog->SetGloballyCapturing( ETrue );
-    //
-    iProgressInfo = iProgressDialog->GetProgressInfoL();
-    iProgressInfo->SetFinalValue( iOperation->TotalOperationSize() );
-    //
-    iProgressDialog->RunLD();
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - END" );
-#endif
-	*/
-    }
-
-void CMemSpyDeviceWideOperationDialog::ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp )
-    {
-    //CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession, aObserver );
-	CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession );
-    CleanupStack::PushL( self );
-    self->ExecuteL( aOp );
-    CleanupStack::PopAndDestroy( self );
-    }
-
-
-void CMemSpyDeviceWideOperationDialog::Cancel()
-    {
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - START - iOperation: 0x%08x, iForcedCancel: %d", iOperation, iForcedCancel );
-#endif
-
-    iForcedCancel = ETrue;
-    //
-    if  ( iOperation )
-        {
-        iOperation->Cancel();
-        }
-    //
-    //iObserver.DWOperationCancelled();
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - END" );
-#endif
-    }
-
-
-void CMemSpyDeviceWideOperationDialog::DialogDismissedL( TInt aButtonId )
-    {
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::DialogDismissedL() - START - aButtonId: %d, iForcedCancel: %d", aButtonId, iForcedCancel );
-#else
-    (void) aButtonId;
-#endif
-
-    Cancel();
-
-#ifdef _DEBUG
-    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::DialogDismissedL() - END - aButtonId: %d, iForcedCancel: %d", aButtonId, iForcedCancel );
-#endif
-    }
-
-
-void CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent( TEvent aEvent, TInt aParam1, const TDesC& aParam2 )
-    {
-#ifdef _DEBUG
-    RDebug::Print( _L("[MemSpy] CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent() - START - aEvent: %d, iProgressDialog: 0x%08x, aParam1: %d, aParam2: %S"), aEvent, iProgressDialog, aParam1, &aParam2 );
-#endif
-
-    switch( aEvent )
-        {
-    case MMemSpyDeviceWideOperationsObserver::EOperationSized:
-        break;
-    case MMemSpyDeviceWideOperationsObserver::EOperationStarting:
-        //iObserver.DWOperationStarted();
-        break;
-    case MMemSpyDeviceWideOperationsObserver::EOperationProgressStart:
-        ASSERT( iProgressDialog != NULL );
-        SetDialogCaptionL( aParam2 );
-        break;
-    case MMemSpyDeviceWideOperationsObserver::EOperationProgressEnd:
-        ASSERT( iProgressDialog != NULL );
-        iProgressInfo->IncrementAndDraw( aParam1 );
-        break;
-    case MMemSpyDeviceWideOperationsObserver::EOperationCancelled:
-        break;
-    case MMemSpyDeviceWideOperationsObserver::EOperationCompleting:
-        {
-        ASSERT( iProgressDialog != NULL );
-        const TInt finalValue = iProgressInfo->Info().iFinalValue;
-        iProgressInfo->SetAndDraw( finalValue );
-        break;
-        }
-    case MMemSpyDeviceWideOperationsObserver::EOperationCompleted:
-        if  ( iProgressDialog )
-            {
-            iProgressDialog->ProcessFinishedL();
-            }
-        break;
-    default:
-        break;
-        }
-
-#ifdef _DEBUG
-    RDebug::Print( _L("[MemSpy] CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent() - END - aEvent: %d, aParam1: %d, aParam2: %S"), aEvent, aParam1, &aParam2 );
-#endif
-    }
-
-
-void CMemSpyDeviceWideOperationDialog::SetDialogCaptionL( const TDesC& aText )
-    {
-    if  ( aText.Length() )
-        {
-        iProgressDialog->SetTextL( aText );
-        iProgressDialog->DrawNow();
-        }
-    }
-
-CMemSpyDwoTracker* CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp )
-{
-	return new CMemSpyDwoTracker( aSession, aOp );
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyDwoProgressTracker::CMemSpyDwoProgressTracker(RMemSpySession &aSession) 
-	: CActive( EPriorityStandard ), iSession( aSession )
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CMemSpyDwoProgressTracker::~CMemSpyDwoProgressTracker()
-	{
-	Cancel();	
-	}
-
-void CMemSpyDwoProgressTracker::Start()
-	{
-	ASSERT( iProgressDialog == NULL );
-	iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
-	iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
-	iProgressDialog->SetCallback( this );
-	iProgressDialog->SetGloballyCapturing( ETrue );
-	iProgressInfo = iProgressDialog->GetProgressInfoL();	
-	
-	iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );
-	
-	UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );
-	
-	SetActive();
-	
-	iProgressDialog->RunLD();
-	}
-
-void CMemSpyDwoProgressTracker::Cancel()
-	{	
-	}
-
-void CMemSpyDwoProgressTracker::RunL()
-    { 		
-    // If an error occurred handle it in RunError().
-    User::LeaveIfError(iStatus.Int());
- 
-    // Resubmit the request immediately    
-    iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );     
-    
-    SetActive();            
-    
-    UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );    
-    }
- 
-void CMemSpyDwoProgressTracker::DoCancel()
-	{ 	
-	}
- 
-TInt CMemSpyDwoProgressTracker::RunError(TInt aError)
-	{ 
-	// KErrNotReady and KErrCancel errors are OK, they just notify 
-	// us about the outstanding notification request that won't be 
-	// processed.		
-    return KErrNone;
-	}
-
-void CMemSpyDwoProgressTracker::UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText )
-	{
-	if(iProgressDialog)
-		{
-		iProgressDialog->SetTextL( aProgressText );
-	    }
-	 
-	if(iProgressInfo)
-		{
-	    iProgressInfo->SetAndDraw( aProgress );	
-		}
-	}
-
-void CMemSpyDwoProgressTracker::DialogDismissedL(TInt aButtonId)
-	{
-	iProgressDialog = NULL;
-	iProgressInfo = NULL;	
-	 
-	Cancel();
-	}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyDwoTracker::CMemSpyDwoTracker( RMemSpySession &aSession, TDeviceWideOperation aOperation )
-:	CActive( EPriorityStandard ), 
-	iSession( aSession ),
-	iProgressTracker(new CMemSpyDwoProgressTracker( aSession )),
-	iOperation( aOperation )
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CMemSpyDwoTracker::~CMemSpyDwoTracker()
-	{		
-	Cancel();
-	
-	delete iProgressTracker;
-	}
-
-void CMemSpyDwoTracker::Start()
-{	
-	void (RMemSpySession::*functions[])(TRequestStatus&) = { 
-		&RMemSpySession::OutputPhoneInfo,
-		&RMemSpySession::OutputDetailedPhoneInfo,
-		&RMemSpySession::OutputHeapInfo,
-		&RMemSpySession::OutputCompactHeapInfo,
-		&RMemSpySession::OutputHeapCellListing,
-		&RMemSpySession::OutputHeapData,
-		&RMemSpySession::OutputStackInfo,
-		&RMemSpySession::OutputCompactStackInfo,
-		&RMemSpySession::OutputUserStackData,
-		&RMemSpySession::OutputKernelStackData };
-		
-	(iSession.*functions[iOperation])(iStatus);			
-	
-	SetActive();
-	
-	iProgressTracker->Start();				
-}
-
-void CMemSpyDwoTracker::Cancel()
-{
-}
- 
-void CMemSpyDwoTracker::RunL()
-    { 
-    // If an error occurred handle it in RunError().
-    User::LeaveIfError(iStatus.Int());
- 
-    if( !IsActive() )
-    	{
-		iProgressTracker->ProgressDialog()->ProcessFinishedL();
-    	}
-    }
- 
-void CMemSpyDwoTracker::DoCancel()
-{ 
-	// Cancel progress tracker
-	iProgressTracker->Cancel();
-	
-	iSession.CancelDeviceWideOperationL();	
-}
- 
-TInt CMemSpyDwoTracker::RunError(TInt aError)
-{ 
-	// Emit the finished(false) signal to notify user 
-	// operation was canceled
-	//emit finished(false); //TODO:
-	
-    return KErrNone;
-}
--- a/memspyui/ui/avkon/src/MemSpyDocument.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +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 "MemSpyDocument.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-
-// User includes
-#include "MemSpyAppUi.h"
-#include "MemSpySettings.h"
-
-//cigasto
-#include <memspysession.h>
-
-
-CMemSpyDocument::CMemSpyDocument(CEikApplication& aApp)
-:   CAknDocument(aApp)    
-    {
-    }
-
-
-CMemSpyDocument::~CMemSpyDocument()
-    {
-    delete iSettings;
-    //delete iEngine;
-    if( iMemSpySession )
-    	{
-    	iMemSpySession->Close();
-    	}
-    
-    }
-
-
-void CMemSpyDocument::ConstructL()
-    {
-    RFs& fsSession = CCoeEnv::Static()->FsSession();
-    //cigasto
-    //iEngine = CMemSpyEngine::NewL( fsSession );
-    
-    iMemSpySession = new (ELeave) RMemSpySession();
-    //RMemSpySession iMemSpySession;
-	TInt error = iMemSpySession->Connect();	
-	if(error != KErrNotFound)
-		{
-		User::LeaveIfError( error );
-		}		
-    
-    //iSettings = CMemSpySettings::NewL( fsSession, *iEngine );
-	iSettings = CMemSpySettings::NewL( fsSession, *iMemSpySession );
-    }
-
-
-CMemSpyDocument* CMemSpyDocument::NewL(CEikApplication& aApp)
-    {
-    CMemSpyDocument* self = new (ELeave) CMemSpyDocument( aApp );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-/*
-CMemSpyEngine& CMemSpyDocument::Engine()
-    {
-    return *iEngine;
-    }
-
-
-const CMemSpyEngine& CMemSpyDocument::Engine() const
-    {
-    return *iEngine;
-    }
-*/
-
-CMemSpySettings& CMemSpyDocument::Settings()
-    {
-    return *iSettings;
-    }
-
-
-const CMemSpySettings& CMemSpyDocument::Settings() const
-    {
-    return *iSettings;
-    }
-
-
-CEikAppUi* CMemSpyDocument::CreateAppUiL()
-    {
-    //return new (ELeave) CMemSpyAppUi( *iEngine );
-	return new (ELeave) CMemSpyAppUi( *iMemSpySession );
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyExportBitmapsToMemoryCardDialog.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,328 +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 "MemSpyExportBitmapsToMemoryCardDialog.h"
-
-// System includes
-#include <eikprogi.h>
-#include <AknWaitDialog.h>
-#include <AknQueryDialog.h>
-#include <coemain.h>
-#include <eikenv.h>
-#include <avkon.hrh>
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-#include <memspy/engine/memspyenginehelpercodesegment.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyenginehelperstack.h>
-#include <memspy/engine/memspyenginehelperthread.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperfbserv.h>
-
-// Driver includes
-#include <memspy/driver/memspydriverenumerationsshared.h>
-
-// Literal constants
-_LIT( KMemSpyBitmapExportFolderAndFileName, "e:\\MemSpy\\Images\\%04d%02d%02d_%02d.%02d.%02d\\");
-
-
-CMemSpyExportBitmapsToMemoryCardDialog::CMemSpyExportBitmapsToMemoryCardDialog( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps )
-:   CActive(EPriorityIdle), iFsSession(aFsSession), iBitmaps(aBitmaps)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-
-CMemSpyExportBitmapsToMemoryCardDialog::~CMemSpyExportBitmapsToMemoryCardDialog()
-    {
-    Cancel();
-    //
-    delete iProgressDialog;
-    //
-    iMimeTypeArray.ResetAndDestroy();
-    iMimeTypeArray.Close();
-    //
-    if ( iEncoder )
-        {
-        iEncoder->Cancel();
-        }
-    delete iEncoder;
-    delete iFolderName;
-    delete iBmpMimeType;
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::ConstructL()
-    {
-    // Check card is ready
-    if  ( CheckMemoryCardAvailableL( iFsSession ) == EFalse )
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    // Get mime type for BMP file
-    IdentifyBmpMimeTypeL();
-
-    // Prepare unique empty folder
-    PrepareFolderNameSpecL();
-
-    // Prepare UI stuff
-    iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ) );
-    iProgressDialog->SetCallback( this );
-    iProgressDialog->SetGloballyCapturing( ETrue );
-    iProgressDialog->PrepareLC( R_MEMSPY_EXPORT_TO_MEMORYCARD_DIALOG );
-    //
-    iProgressInfo = iProgressDialog->GetProgressInfoL( );
-    iProgressInfo->SetFinalValue( iBitmaps.Count() );
-    //
-    iProgressDialog->MakeVisible( ETrue ); // Visible right away
-    //
-    iDialogDismissed = EFalse;
-    iProgressInfo->SetAndDraw( 0 );
-
-    // Start the process rolling...
-    CompleteSelf(KErrNone);
-
-    //
-    iProgressDialog->RunLD( );
-    }
-
-
-CMemSpyExportBitmapsToMemoryCardDialog* CMemSpyExportBitmapsToMemoryCardDialog::NewL( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps )
-    {
-    CMemSpyExportBitmapsToMemoryCardDialog* self = new(ELeave) CMemSpyExportBitmapsToMemoryCardDialog( aFsSession, aBitmaps );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::Cancel()
-    {
-    CActive::Cancel();
-    }
-
-
-TBool CMemSpyExportBitmapsToMemoryCardDialog::CheckMemoryCardAvailableL( RFs& aFsSession )
-    {
-    TBool available = EFalse;
-    //
-    TDriveInfo driveInfo;
-    if  ( aFsSession.Drive( driveInfo, EDriveE ) == KErrNone )
-        {
-        // Other checks needed?
-        available = ETrue;
-        }
-    //
-    return available;
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::RunL()
-    {
-    const TInt error = iStatus.Int();
-    User::LeaveIfError( error );
- 
-    if  ( !iDialogDismissed )
-        {
-        // Do we have more items to process?
-        if  ( TryToExportSingleBitmapL() )
-            {
-            _LIT(KTextFormat, "Saving image\n%d/%d");
-            TBuf<128> buf;
-            buf.Format( KTextFormat, iBitmapIndex, iBitmaps.Count() );
-            //
-            iProgressDialog->SetTextL( buf );
-            iProgressInfo->SetAndDraw( iBitmapIndex );
-            iProgressDialog->DrawDeferred();
-            }
-        else
-            {
-            // We're done - RunL will not be called again
-            if  (iProgressInfo)
-                {
-                const TInt finalValue = iProgressInfo->Info().iFinalValue;
-                iProgressInfo->SetAndDraw( finalValue );
-                //
-                delete iProgressDialog;
-                iProgressDialog = NULL;
-                //
-                delete this;
-                }
-            }
-
-        User::ResetInactivityTime();
-        }
-    else
-        {
-        delete iProgressDialog;
-        iProgressDialog = NULL;
-        //
-        delete this;
-        }
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::DoCancel()
-    {
-    if  ( iEncoder )
-        {
-        iEncoder->Cancel();
-        }
-
-    iDialogDismissed = ETrue;
-    }
-
-
-TInt CMemSpyExportBitmapsToMemoryCardDialog::RunError( TInt /*aError*/ )
-    {
-    TRAP_IGNORE(
-
-        // Try the next image
-        if  ( TryToExportSingleBitmapL() == EFalse )
-            {
-            iDialogDismissed = ETrue;
-            delete this;
-            }
-    );
-    //
-    return KErrNone;
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::DialogDismissedL( TInt /*aButtonId*/ )
-    {
-    iDialogDismissed = ETrue;
-    iProgressDialog = NULL;
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::CompleteSelf( TInt aError )
-    {
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, aError );
-    SetActive();
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::ExportBitmapL( const CMemSpyEngineFbServBitmap& aBitmap )
-    {
-    // Create a filename
-    TFileName fileName( *iFolderName );
-    aBitmap.GetExportableFileNameL( fileName );
-
-    // Create encoder object...
-    CImageEncoder* encoder = CImageEncoder::FileNewL( iFsSession, fileName, *iBmpMimeType );
-    delete iEncoder;
-    iEncoder = encoder;
-
-    // Start operation
-    iEncoder->Convert( &iStatus, aBitmap.Bitmap() );
-    SetActive();
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::IdentifyBmpMimeTypeL()
-    {
-    _LIT(KBmpExtension, ".bmp");
-    CImageEncoder::GetFileTypesL( iMimeTypeArray );
-    //
-    const TInt count = iMimeTypeArray.Count();
-    //
-    for( TInt i=0; i<count; i++ )
-        {
-        CFileExtensionMIMEType* extension = iMimeTypeArray[ i ];
-        if  ( extension->FileExtension().FindF( KBmpExtension ) >= 0 )
-            {
-            // Found it - save mime type info
-            iBmpMimeType = extension->MIMEType().AllocL();
-            iMimeTypeArray.ResetAndDestroy();
-            iMimeTypeArray.Close();
-            return;
-            }
-        }
-    //
-    User::Leave( KErrNotFound );    
-    }
-
-
-void CMemSpyExportBitmapsToMemoryCardDialog::PrepareFolderNameSpecL()
-    {
-    delete iFolderName;
-    iFolderName = NULL;
-    
-    // Make a unique filename format specifier.
-    TTime now;
-    now.HomeTime();
-    const TDateTime dt( now.DateTime() );
-
-    // Build it up...
-    iFolderName = HBufC::NewL( KMaxFileName );
-    TPtr pName( iFolderName->Des() );
-    pName.Format( KMemSpyBitmapExportFolderAndFileName, dt.Year(), dt.Month()+1, dt.Day()+1, dt.Hour(), dt.Minute(), dt.Second());
-    
-    // Create directory
-    const TInt error = iFsSession.MkDirAll( pName );
-    User::LeaveIfError( error );
-    }
-
-
-TBool CMemSpyExportBitmapsToMemoryCardDialog::TryToExportSingleBitmapL()
-    {
-    TBool startedExport = EFalse;
-    
-    const TInt count = iBitmaps.Count();
-    for( ; ( iBitmapIndex < count ) && ( startedExport == EFalse ); iBitmapIndex++ )
-        {
-        const CMemSpyEngineFbServBitmap& memSpyBitmap = iBitmaps.At( iBitmapIndex );
-        const CFbsBitmap& fbsBitmap = memSpyBitmap.Bitmap();
-        const TSize size( fbsBitmap.SizeInPixels() );
-
-        // We don't want to export bitmaps which have a zero-pixel dimension.
-        if  ( size.iHeight > 0 && size.iWidth > 0 )
-            {
-            // This completes the object's request status and will therefore
-            // result in a further call to RunL() when the export to BMP
-            // is completed.
-            ExportBitmapL( memSpyBitmap );
-
-            // And indicate we managed to start an operation...
-            startedExport = ETrue;
-            }
-        }
-    //
-    return startedExport;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpySettings.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +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 "MemSpySettings.h"
-
-// System includes
-#include <e32svr.h>
-#include <s32file.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyenginelogger.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelpersysmemtracker.h>
-
-#include <memspysession.h>
-
-// Constants
-_LIT( KMemSpySettingsFileName, "settings.dat" ); //file or avkon client settings
-
-// Version 03 dumped some of the system wide memory tracker settings
-const TInt KMemSpySettingsFileFormatVersion = 6;
-
-CMemSpySettings::CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession )
-:   iFsSession( aFsSession ), iMemSpySession( aSession )
-    {	
-    }
-
-
-CMemSpySettings::~CMemSpySettings()
-    {	
-    TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - START" ) );
-    TRAP_IGNORE( StoreSettingsL() );
-    TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - END" ) );    	
-    }
-
-
-void CMemSpySettings::ConstructL()
-    {	
-    TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - START") ) );
-
-    TRAP_IGNORE( RestoreSettingsL() );
-
-    TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - END") ) );    
-    }
-
-CMemSpySettings* CMemSpySettings::NewL( RFs& aFsSession, RMemSpySession& aSession )
-    {
-    CMemSpySettings* self = new(ELeave) CMemSpySettings( aFsSession, aSession );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-void CMemSpySettings::GetSettingsFileNameL( TDes& aFileName )
-    {
-    GetSettingsPathL( aFileName );
-    aFileName.Append( KMemSpySettingsFileName );
-    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsFileNameL() - aFileName: %S"), &aFileName ) );
-    }
-
-
-void CMemSpySettings::GetSettingsPathL( TDes& aPath )
-    {
-    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - START") ) );
-    aPath.Zero();
-
-    // Get private data cage path
-    TInt err = iFsSession.PrivatePath( aPath );
-    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - priv path err: %d"), err ) );
-    User::LeaveIfError( err );
-
-    // Combine with C: drive
-    const TDriveUnit cDrive( EDriveC );
-    const TDriveName cDriveName( cDrive.Name() );
-    aPath.Insert( 0, cDriveName );
-
-    iFsSession.MkDirAll( aPath );
-    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - END - %S"), &aPath ) );
-    }
-
-RFile CMemSpySettings::SettingsFileLC( TBool aReplace )
-    {
-    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - START - aReplace: %d"), aReplace ) );
-
-    TFileName* fileName = new(ELeave) TFileName();
-    CleanupStack::PushL( fileName );
-    GetSettingsFileNameL( *fileName );
-    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - fileName: %S"), fileName ) );
-
-    RFile file;
-    TInt error = KErrNone;
-    //
-    if  ( aReplace )
-        {
-        error = file.Replace( iFsSession, *fileName, EFileWrite );
-        TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - replace err: %d"), error ) );
-        }
-    else
-        {
-        error = file.Open( iFsSession, *fileName, EFileWrite );
-        TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - open err: %d"), error ) );
-        //
-        if  ( error == KErrNotFound )
-            {
-            error = file.Create( iFsSession, *fileName, EFileWrite );
-            }
-        }
-    //
-    User::LeaveIfError( error );
-    CleanupStack::PopAndDestroy( fileName );
-    CleanupClosePushL( file );
-    //
-    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - END") ) );
-    return file;
-    }
-
-
-void CMemSpySettings::StoreSettingsL()
-    {
-    TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - START" ) );
-
-    RFile file = SettingsFileLC( ETrue );
-    RFileWriteStream stream( file );
-    CleanupStack::Pop(); // file
-    CleanupClosePushL( stream );
-    
-    // Verion info
-    stream.WriteInt32L( KMemSpySettingsFileFormatVersion );
-    
-    stream.WriteUint8L( iSinkType );
-    
-    
-    // Get SWMT config
-    //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    //TMemSpyEngineHelperSysMemTrackerConfig swmtConfig;
-    //swmt.GetConfig( swmtConfig );
-
-    // Write SWMT settings
-    //stream.WriteInt32L( swmtConfig.TimerPeriod().Int() );
-    //stream.WriteUint8L( swmtConfig.DumpData() );
-    
-    stream.WriteInt32L( iSwmtConfig.TimerPeriod().Int() );
-    stream.WriteUint8L( iSwmtConfig.DumpData() );
-    
-    // Write memory tracking auto-start process list
-    /*
-    const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList();
-    stream.WriteInt32L( processUidList.Count() );
-    for( TInt i=0; i<processUidList.Count(); i++ )
-        {
-        const TUid uid = processUidList[ i ];
-        TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) );
-        stream << uid;
-        }
-    */    
-    stream.WriteInt32L( iUidList.Count() );
-    for( TInt i = 0; i < iUidList.Count(); i++ )
-    	{
-		const TUid uid = iUidList[ i ];
-		TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) );
-		stream << uid;
-    	}
-    
-    // Write memory tracking categories
-    //stream.WriteInt32L( swmtConfig.iEnabledCategories );
-    stream.WriteInt32L( iSwmtConfig.iEnabledCategories );
-    
-    // Write heap tracking thread name filter
-    //stream.WriteInt32L( swmtConfig.iThreadNameFilter.Length() );
-    stream.WriteInt32L( iSwmtConfig.iThreadNameFilter.Length() );
-    
-    /*
-    if ( swmtConfig.iThreadNameFilter.Length() > 0 )
-        {
-        stream.WriteL( swmtConfig.iThreadNameFilter, swmtConfig.iThreadNameFilter.Length() );
-        }
-    
-    // Write mode
-    stream.WriteInt32L( swmtConfig.iMode );
-    */
-    if ( iSwmtConfig.iThreadNameFilter.Length() > 0 )
-    	{
-		stream.WriteL( iSwmtConfig.iThreadNameFilter, iSwmtConfig.iThreadNameFilter.Length() );
-    	}
-        
-    // Write mode
-    stream.WriteInt32L( iSwmtConfig.iMode );
-    
-    stream.CommitL();
-    CleanupStack::PopAndDestroy( &stream ); // Closes file    
-    }
-
-void CMemSpySettings::RestoreSettingsL()
-    {  
-    RFile file = SettingsFileLC();
-    RFileReadStream stream( file );
-    CleanupStack::Pop(); // file
-    CleanupClosePushL( stream ); 
-    
-    // Version info
-    const TInt version = stream.ReadInt32L(); // discarded for now
-    TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) );
-
-    // Engine settings
-    TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() );
-    TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) );
-       
-    //iEngine.InstallSinkL( type );
-    //iMemSpySession.SwitchOutputSink( type ); //TODO: to argue to set stuf in engine from here
-    
-    // Set SWMT config
-    TMemSpyEngineHelperSysMemTrackerConfig swmtConfig;
-    swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); 
-    swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() );
-
-    if  ( version < 3 )
-        {
-        // Restore but ignore old delta tracker settings which aren't used anymore
-        //
-        static_cast< TBool >( stream.ReadUint8L() );
-        static_cast< TBool >( stream.ReadUint8L() );
-        static_cast< TBool >( stream.ReadUint8L() );
-        }
-    
-    // Restore memory tracking auto-start process uids if file format supports it...
-    if ( version >= 2 )
-        {
-        RArray<TUid> list;		
-        CleanupClosePushL( list );
-        //
-        const TInt count = stream.ReadInt32L();
-        
-        //CArrayFixFlat<TUid>* list = new(ELeave)CArrayFixFlat<TUid>(count);
-        //CleanupStack::PushL(list );               
-        
-        for( TInt i=0; i<count; i++ )
-            {
-            TUid processUid;
-            stream >> processUid;
-            //           
-            User::LeaveIfError( list.Append( processUid ) );            
-            //list->AppendL( processUid );
-            }
-        //
-        //CMemSpyEngineHelperProcess& processHelper = iEngine.HelperProcess();
-        //processHelper.SetMemoryTrackingAutoStartProcessListL( list );        
-        //iMemSpySession.SetSwmtAutoStartProcessList( list );
-        iUidList = list; 	//TODO: to get it into the engine
-        
-        CleanupStack::PopAndDestroy( &list );
-        }
-    
-    // Restore memory tracking categories 
-    if ( version > 3 )
-        {
-        swmtConfig.iEnabledCategories = stream.ReadInt32L();
-        }
-    
-    // Write heap tracking thread name filter 
-    if ( version > 4 )
-        {
-        TInt len = stream.ReadInt32L();
-        if ( len > 0 )
-            {
-            stream.ReadL( swmtConfig.iThreadNameFilter, len );
-            }
-        }
-
-    // Write mode
-    if ( version > 5 )
-        {
-        swmtConfig.iMode = (TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode)stream.ReadInt32L();
-        }
-    
-    //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    //swmt.SetConfigL( swmtConfig );
-    //iMemSpySession.SetSwmtConfig( swmtConfig );
-    
-    iSwmtConfig = swmtConfig; 	//TODO: to get it into the engine
-    
-    CleanupStack::PopAndDestroy( &stream ); // Closes file    
-    }
-
-
--- a/memspyui/ui/avkon/src/MemSpyUiUtils.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +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 "MemSpyUiUtils.h"
-
-// System includes
-#include <coemain.h>
-#include <memspyui.rsg>
-
-
-
-
-void MemSpyUiUtils::Format( TDes& aBuf, TInt aResourceId, ...)
-    {
-	VA_LIST list;
-    VA_START(list,aResourceId);
-	TBuf<128> format;
-	CCoeEnv::Static()->ReadResource( format, aResourceId );
-	aBuf.FormatList( format, list );
-    }
-
-
-void MemSpyUiUtils::GetErrorText( TDes& aBuf, TInt aError )
-    {
-    if  ( aError == KErrNotSupported )
-        {
-        _LIT( KMemSpyErrorText, "Not Supported" );
-        aBuf = KMemSpyErrorText;
-        }
-    else if ( aError == KErrNotReady )
-        {
-        _LIT( KMemSpyErrorText, "Not Ready" );
-        aBuf = KMemSpyErrorText;
-        }
-    else if ( aError == KErrNotFound )
-        {
-        _LIT( KMemSpyErrorText, "Missing" );
-        aBuf = KMemSpyErrorText;
-        }
-    else if ( aError == KErrGeneral )
-        {
-        _LIT( KMemSpyErrorText, "General Error" );
-        aBuf = KMemSpyErrorText;
-        }
-    else
-        {
-        _LIT( KMemSpyItemValueError, "Error: %d" );
-        aBuf.Format( KMemSpyItemValueError, aError );
-        }
-    }
-
-HBufC* MemSpyUiUtils::FormatItem( const TDesC& aCaption )
-	{
-	HBufC* retBuf = HBufC::NewL( 32 );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	return retBuf;
-	}
-
-TDesC& MemSpyUiUtils::ThreadInfoItemNameByType( TMemSpyThreadInfoItemType aType )
-	{	
-	TPtrC pType( KTypeUnknown );
-	
-	switch( aType )
-		{
-		case EMemSpyThreadInfoItemTypeFirst:			
-			pType.Set(KGeneral);
-			break;			
-		case EMemSpyThreadInfoItemTypeHeap:			
-			pType.Set(KHeap);
-			break;				
-		case EMemSpyThreadInfoItemTypeStack:			
-			pType.Set(KStack);
-			break;			
-		case EMemSpyThreadInfoItemTypeChunk:			
-			pType.Set(KChunks);
-			break;
-		case EMemSpyThreadInfoItemTypeCodeSeg:
-			pType.Set(KCodeSegs);
-			break;
-		case EMemSpyThreadInfoItemTypeOpenFiles:
-			pType.Set(KOpenFiles);
-			break;	
-		case EMemSpyThreadInfoItemTypeActiveObject:
-			pType.Set(KActiveObjects);
-			break;
-		case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
-			pType.Set(KThreadHandlers);
-			break;
-		case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
-			pType.Set(KProcessHandlers);
-			break;
-		case EMemSpyThreadInfoItemTypeServer:
-			pType.Set(KServers);
-			break;
-		case EMemSpyThreadInfoItemTypeSession:
-			pType.Set(KConnections);
-			break;
-		case EMemSpyThreadInfoItemTypeSemaphore:
-			pType.Set(KSemaphores);
-			break;
-		case EMemSpyThreadInfoItemTypeOtherThreads:
-			pType.Set(KThreadReferences);
-			break;
-		case EMemSpyThreadInfoItemTypeOtherProcesses:
-			pType.Set(KProcessReferences);
-			break;
-		case EMemSpyThreadInfoItemTypeMutex:
-			pType.Set(KMutexes);
-			break;
-		case EMemSpyThreadInfoItemTypeTimer:
-			pType.Set(KTimers);					
-			break;
-		case EMemSpyThreadInfoItemTypeLogicalChannel:
-			pType.Set(KDD);
-			break;
-		case EMemSpyThreadInfoItemTypeChangeNotifier:
-			pType.Set(KChangeNotif);
-			break;
-		case EMemSpyThreadInfoItemTypeUndertaker:
-			pType.Set(KUndertakers);
-			break;				
-		case EMemSpyThreadInfoItemTypeLDD:
-			pType.Set(KLogicalDrivers);
-			break;
-		case EMemSpyThreadInfoItemTypePDD:
-			pType.Set(KPhysicalDrivers);
-			break;
-			
-	    default:	       
-	    	break;  
-		}
-	return pType;
-	}
-
-
-void MemSpyUiUtils::AppendPriority( TDes& aDes, TProcessPriority aPriority )
-	{
-	switch( aPriority )
-		{
-	    case EPriorityLow:
-	        aDes += _L("[L]");
-	        break;
-	    case EPriorityBackground:
-	        aDes += _L("[B]");
-	        break;
-	    case EPriorityForeground:
-	        aDes += _L("[F]");
-	        break;
-	    case EPriorityHigh:
-	        aDes += _L("[H]");
-	        break;
-	    case EPriorityWindowServer:
-	        aDes += _L("[WS]");
-	        break;
-	    case EPriorityFileServer:
-	        aDes += _L("[FS]");
-	        break;
-	    case EPriorityRealTimeServer:
-	        aDes += _L("[RTS]");
-	        break;
-	    case EPrioritySupervisor:
-	        aDes += _L("[SUP]");
-	        break;
-	    default:
-	        aDes += _L("[?]");
-	        break;
-		}
-	}
-
-void MemSpyUiUtils::AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  )
-	{
-    aDes.Append( '[' );
-    const TInt length = aDes.Length();
-    AppendExitType( aDes, aType );
-    aDes.SetLength( length + 1 ); // Remove all but the first letter
-    aDes.Append( ']' );
-    
-    if  ( aType == EExitKill || aType == EExitPending )
-        {
-        // Kill implies "clean" exit. Pending implies not yet dead.
-        }
-    else
-        {
-        TMemSpyTruncateOverflow overflow;
-
-        // Terminate or Panic implies abnormal exit condition, so
-        // show full exit info.
-        _LIT( KAbnormalFormatSpec, " %S-%d" );
-        aDes.AppendFormat( KAbnormalFormatSpec, &overflow, &aExitCategory, aExitReason );
-        }
-	}
-
-
-void MemSpyUiUtils::AppendExitType( TDes& aDes, TExitType aType )
-    {
-    _LIT( KExitTypeKilled, "Killed" );
-    _LIT( KExitTypeTerminated, "Terminated" );
-    _LIT( KExitTypePanicked, "Panicked" );
-    _LIT( KExitTypePending, "Pending" );
-    
-    // Panic and Terminate are exceptional exit conditions.
-    // Kill, is ironically, not an exceptional condition.
-    switch( aType )
-        {
-    case EExitKill:
-        aDes += KExitTypeKilled;
-        break;
-    case EExitTerminate:
-        aDes += KExitTypeTerminated;
-        break;
-    case EExitPanic:
-        aDes += KExitTypePanicked;
-        break;
-    default:
-    case EExitPending:
-        aDes += KExitTypePending;
-        break;
-        }
-    }
-
-
-TPtrC MemSpyUiUtils::TypeAsString( TMemSpyDriverContainerType aType )
-    {     
-    TPtrC pType( KTypeUnknown );
-    //
-    switch( aType )
-        {
-    case EMemSpyDriverContainerTypeThread:
-        pType.Set( KTypeThread );
-        break;
-    case EMemSpyDriverContainerTypeProcess:
-        pType.Set( KTypeProcess );
-        break;
-    case EMemSpyDriverContainerTypeChunk:
-        pType.Set( KTypeChunk );
-        break;
-    case EMemSpyDriverContainerTypeLibrary:
-        pType.Set( KTypeLibrary );
-        break;
-    case EMemSpyDriverContainerTypeSemaphore:
-        pType.Set( KTypeSemaphore );
-        break;
-    case EMemSpyDriverContainerTypeMutex:
-        pType.Set( KTypeMutex );
-        break;
-    case EMemSpyDriverContainerTypeTimer:
-        pType.Set( KTypeTimer );
-        break;
-    case EMemSpyDriverContainerTypeServer:
-        pType.Set( KTypeServer );
-        break;
-    case EMemSpyDriverContainerTypeSession:
-        pType.Set( KTypeSession );
-        break;
-    case EMemSpyDriverContainerTypeLogicalDevice:
-        pType.Set( KTypeLogicalDevice );
-        break;
-    case EMemSpyDriverContainerTypePhysicalDevice:
-        pType.Set( KTypePhysicalDevice );
-        break;
-    case EMemSpyDriverContainerTypeLogicalChannel:
-        pType.Set( KTypeLogicalChannel );
-        break;
-    case EMemSpyDriverContainerTypeChangeNotifier:
-        pType.Set( KTypeChangeNotifier );
-        break;
-    case EMemSpyDriverContainerTypeUndertaker:
-        pType.Set( KTypeUndertaker );
-        break;
-    case EMemSpyDriverContainerTypeMsgQueue:
-        pType.Set( KTypeMsgQueue );
-        break;
-    case EMemSpyDriverContainerTypePropertyRef:
-        pType.Set( KTypePropertyRef );
-        break;
-    case EMemSpyDriverContainerTypeCondVar:
-        pType.Set( KTypeCondVar );
-        break;
-        
-    default:
-        break;
-        }
-    //
-    return pType;
-    }
-
-TMemSpySizeText MemSpyUiUtils::FormatSizeText( const TInt64& aValue, TInt aDecimalPlaces, TBool aExtraRounding )
-    {
-    _LIT(KFormatKilo, "%dK");
-    _LIT(KFormatMega, "%SM");
-    _LIT(KFormatGiga, "%SG");
-
-	TMemSpySizeText buf;
-	if  ( aValue < 1024000 )					// If < 1000K
-		{
-		TInt sizeInK = 0;
-
-        if  ( aValue != 0 )
-			{
-			sizeInK = I64INT( (aValue + 512) >> 10 );
-			if  (sizeInK < 1)
-                {
-				sizeInK = 1;
-                }
-			if  (sizeInK > 999)
-                {
-				sizeInK = 999;
-                }
-			}
-
-        buf.Format( KFormatKilo, sizeInK );
-		}
-	else
-		{
-		TReal sizeInM = I64INT( aValue );
-		sizeInM /= 1048576;
-		if  ( sizeInM < 1 )
-            {
-			sizeInM = 1;
-            }
-
-        TPtrC pFormat( KFormatMega );
-		if  ( sizeInM >= 1000 )
-			{
-			sizeInM /= 1024;				// Size in G
-			if  (sizeInM < 1)
-                {
-				sizeInM = 1;
-                }
-			
-            pFormat.Set( KFormatGiga );
-			}
-
-        if  ( sizeInM > 999.9)
-            {
-            sizeInM = 999.9;
-            }
-
-        if  ( aExtraRounding )
-            {
-			sizeInM += 0.499999;
-            }
-
-		TBuf<16> size;
-		size.Num( sizeInM, TRealFormat( 14, aDecimalPlaces ) );	// Allow for "17179869184.0"G which is 2^64
-        buf.Format( pFormat, &size );
-		}
-
-    return buf;
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewBase.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +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 "MemSpyViewBase.h"
-
-// System includes
-#include <eikrted.h>  // for example label control
-#include <txtrich.h>
-#include <apgtask.h>
-#include <akntitle.h>
-#include <akncontext.h>
-#include <aknnavi.h>
-#include <eiklbx.h>
-#include <eiklbm.h>
-#include <avkon.hrh>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineutils.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-
-// User includes
-#include "MemSpyAppUi.h"
-#include "MemSpyDocument.h"
-#include "MemSpyContainer.h"
-#include "MemSpyContainerObserver.h"
-
-
-
-/*
-CMemSpyViewBase::CMemSpyViewBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   iEngine( aEngine ), iObserver( aObserver )
-    {
-    }
-*/
-CMemSpyViewBase::CMemSpyViewBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
-:   iMemSpySession( aSession ), iObserver( aObserver )
-    {
-    }
-
-
-CMemSpyViewBase::~CMemSpyViewBase()
-    {
-    delete iListBox;
-    }
- 
-
-void CMemSpyViewBase::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* /*aSelectionRune*/ )
-    {
-    iSettings = &static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() )->MemSpyDocument().Settings();
-    //
-    User::LeaveIfError( SetParent( &aContainer ) );
-    SetContainerWindowL( aContainer );
-    
-    SetComponentsToInheritVisibility( ETrue );
-
-    iListBox = ConstructListBoxL();
-    if  ( iListBox )
-        {
-        iListBox->SetFocus( ETrue );
-        }
-
-    SetRect( aRect );
-    ActivateL();
-    }
-
-
-void CMemSpyViewBase::SetTitleL( const TDesC& aText )
-    {
-    CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
-    CAknTitlePane* title = static_cast<CAknTitlePane*> ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    title->SetTextL( aText );
-    }
-
-
-TPtrC CMemSpyViewBase::TitleL() const
-    {
-    TPtrC ret( KNullDesC );
-    //
-    CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
-    CAknTitlePane* title = static_cast<CAknTitlePane*> ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    if  ( title->Text() )
-        {
-        ret.Set( *title->Text() );
-        }
-    //
-    return ret;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewBase::PrepareParentViewL()
-    {
-    return NULL;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewBase::PrepareChildViewL()
-    {
-    return NULL;
-    }
-    
-    
-void CMemSpyViewBase::RefreshL()
-    {
-    if  ( iListBox )
-        {
-        iListBox->UpdateScrollBarsL();
-        }
-
-    DrawDeferred();
-    }
-
-
-TBool CMemSpyViewBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch( aCommand )
-        {
-	case EMemSpyCmdViewOutputToSink:
-        OnCmdViewOutputToSinkL();
-        break;
-    default:
-        handled = EFalse;
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewBase::DynInitMenuPaneL( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ )
-    {
-    }
-
-
-TUint CMemSpyViewBase::MenuCascadeResourceId() const
-    {
-    return 0;
-    }
-
-
-TInt CMemSpyViewBase::MenuCascadeCommandId() const
-    {
-    return 0;
-    }
-
-
-void CMemSpyViewBase::OnCmdViewOutputToSinkL()
-    {
-	//cigasto so solve - outputs content of the listbox into the sink
-	//to discuss format with Orbit
-	/*
-    if  ( iListBox )
-        {
-        // Prepare sink
-        CMemSpyEngineOutputSink& sink = iEngine.Sink();
-        HBufC* name = MemSpyEngineUtils::CleanupTextLC( TitleL() );
-        sink.OutputSectionHeadingL( *name, TChar('-') );
-        CleanupStack::PopAndDestroy( name );
-        sink.OutputPrefixSetLC( _L("  ") ); // Slight insertion
-        
-        // Get text from underlying listbox model...
-        MTextListBoxModel* model = static_cast< MTextListBoxModel* >( iListBox->Model() );
-        const TInt count = model->NumberOfItems();
-
-        // First pass to get max lengths
-        TInt maxLengthCaption = 0;
-        TInt maxLengthValue = 0;
-
-        for( TInt j=0; j<count; j++ )
-            {
-            const TPtrC pItem( model->ItemText( j ) );
-            const TInt length = pItem.Length();
-    
-            // Check if its split or not?
-            const TInt splitPos = pItem.FindF( _L("\t\t") );
-            if  ( splitPos > 0 )
-                {
-                maxLengthCaption = Max( maxLengthCaption, splitPos );
-                maxLengthValue = Max( maxLengthValue, length - splitPos + 1 );
-                }
-            else
-                {
-                maxLengthCaption = Max( maxLengthCaption, length );
-                }
-            }
-
-        // Second pass - real this time - to print the values
-        HBufC* line = HBufC::NewLC( ( maxLengthCaption + maxLengthValue ) + 20 );
-        TPtr pLine( line->Des() );
-        //
-        for( TInt i=0; i<count; i++ )
-            {
-            const TPtrC pItem( model->ItemText( i ) );
-            const TInt length = pItem.Length();
-            //
-            TPtrC pCaption( KNullDesC );
-            TPtrC pValue( KNullDesC );
-            //
-            const TInt splitPos = pItem.FindF( _L("\t\t") );
-            if  ( splitPos > 0 )
-                {
-                pCaption.Set( pItem.Left( splitPos ) );
-                pValue.Set( pItem.Mid( splitPos + 1 ) );
-                }
-            else
-                {
-                pCaption.Set( pItem );
-                }
-
-            // Remove initial tabs in caption
-            HBufC* caption = MemSpyEngineUtils::CleanupTextLC( pCaption );
-        
-            // Create value item & replace any further tabs
-            HBufC* value = MemSpyEngineUtils::CleanupTextLC( pValue );
-
-            // Now format the final line, with padding.
-            pLine.Justify( *caption, maxLengthCaption + 3, ELeft, TChar(' ') );
-            pLine.Append( *value );
-            CleanupStack::PopAndDestroy( 2, caption );
-
-            // Sink output
-            sink.OutputLineL( pLine );
-            }
-
-        // Remove prefix & tidy up
-        CleanupStack::PopAndDestroy( line );
-        sink.OutputBlankLineL();
-        CleanupStack::PopAndDestroy(); // clear prefix
-		}  
-	*/     
-    }
-
-
-CEikListBox* CMemSpyViewBase::ConstructListBoxL()
-    {
-    delete iListBox;
-    iListBox = NULL;
-    CAknSettingStyleListBox* listbox = new(ELeave) CAknSettingStyleListBox();
-    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->SetObserver( this );
-    listbox->SetComponentsToInheritVisibility( ETrue );
-    //
-    return listbox;
-    }
-
-
-void CMemSpyViewBase::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewBase::HandleListBoxItemSelectedL( TInt /*aIndex*/ )
-    {
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-void CMemSpyViewBase::ReportEventL( MMemSpyViewObserver::TViewEventType aEvent, TAny* aContext )
-    {
-    iObserver.HandleMemSpyViewEventL( aEvent, ViewType(), *this, aContext );
-    }
-
-
-void CMemSpyViewBase::SetListBoxCurrentItemIndexL( TInt aIndex )
-    {
-    if  ( iListBox )
-        {
-        iListBox->SetCurrentItemIndex( aIndex );
-        HandleListBoxItemSelectedL( aIndex );
-        }
-    }
-
-
-CMemSpyContainer& CMemSpyViewBase::Container()
-    {
-    CMemSpyAppUi* appUi = static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() );
-    return appUi->Container();
-    }
-
-
-CMemSpySettings& CMemSpyViewBase::Settings()
-    {
-    return *iSettings;
-    }
-
-
-const CMemSpySettings& CMemSpyViewBase::Settings() const
-    {
-    return *iSettings;
-    }
-
-    
-void CMemSpyViewBase::Draw( const TRect& aRect ) const
-    {
-    CWindowGc& gc = SystemGc();
-    //
-    gc.SetPenStyle( CGraphicsContext::ENullPen );
-    gc.SetBrushColor( KRgbWhite );
-    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-    gc.DrawRect( aRect );
-    }
-
-
-void CMemSpyViewBase::SizeChanged()
-    {
-    if  ( iListBox )
-        {
-        iListBox->SetRect( Rect() );
-        }
-    }
-
-
-void CMemSpyViewBase::FocusChanged(TDrawNow /*aDrawNow*/)
-    {
-    if  ( iListBox )
-        {
-        iListBox->SetFocus( IsFocused() );
-        }
-    }
-
-
-TInt CMemSpyViewBase::CountComponentControls() const
-    {
-    TInt count = 0;
-    if  ( iListBox )
-        {
-        ++count;
-        }
-    //
-    return count;
-    }
-
-
-CCoeControl* CMemSpyViewBase::ComponentControl(TInt aIndex) const
-    {
-    switch ( aIndex )
-        {
-    case 0:
-        return iListBox;
-    default:
-        return NULL;
-        }
-    }
-
-
-TKeyResponse CMemSpyViewBase::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-	{
-    TKeyResponse resp = EKeyWasNotConsumed;
-    if  ( iListBox )
-        {
-        resp = iListBox->OfferKeyEventL( aKeyEvent, aType );
-        }
-    //
-    if ( resp == EKeyWasNotConsumed && aType == EEventKeyDown && aKeyEvent.iCode == EKeyBackspace )
-        {
-        // When backspace is pushed, go to the parent view
-        CMemSpyAppUi* appUi = static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() );
-        appUi->Container().NavigateToParentViewL();
-        resp = EKeyWasConsumed;
-        }
-    //
-	return resp;
-	}
-
-
-void CMemSpyViewBase::HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType )
-    {
-    if  ( aControl == iListBox )
-        {
-        if  ( aEventType == MCoeControlObserver::EEventStateChanged )
-            {
-            const TInt index = iListBox->CurrentItemIndex();
-            HandleListBoxItemSelectedL( index );
-            }
-        }
-    }
-
-
-void CMemSpyViewBase::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
-    {
-    const TInt index = iListBox->CurrentItemIndex();
-    //
-    switch (aEventType)
-        {
-    case EEventItemActioned:
-    case EEventEnterKeyPressed:
-    case EEventItemDoubleClicked:
-        HandleListBoxItemActionedL( index );
-        break;
-
-    default:
-        break;
-        }
-    }
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewChunkList.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +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 "MemSpyViewChunkList.h"
-
-// System includes
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-
-
-
-CMemSpyViewChunkBase::CMemSpyViewChunkBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList* aList )
-:   CMemSpyViewBase( aEngine, aObserver ), iList( aList )
-    {
-    }
-
-
-CMemSpyViewChunkBase::~CMemSpyViewChunkBase()
-    {
-    delete iList;
-    }
-
-
-TBool CMemSpyViewChunkBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdChunkSortByName:
-        iList->SortByNameL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdChunkSortBySize:
-        iList->SortBySizeL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdChunkListing:
-        OnCmdListingL();
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewChunkBase::OnCmdListingL()
-    {
-    // Begin a new data stream
-    _LIT( KMemSpyContext, "Chunk List" );
-    _LIT( KMemSpyFolder, "Chunks" );
-    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
-
-    // Set prefix for overall listing
-    _LIT( KOverallPrefix, "Chunk List - " );
-    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
-
-    // Create header
-    CMemSpyEngineChunkList::OutputDataColumnsL( iEngine );
-    
-    // List items
-    const TInt count = iList->Count();
-    for(TInt i=0; i<count; i++)
-        {
-        const CMemSpyEngineChunkEntry& entry = iList->At( i );
-        //
-        entry.OutputDataL( iEngine.HelperChunk() );
-        }
-
-    // Tidy up
-    CleanupStack::PopAndDestroy(); // prefix
-
-    // End data stream
-    iEngine.Sink().DataStreamEndL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewChunkList::CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewChunkBase( aEngine, aObserver, NULL )
-    {
-    }
-
-
-CMemSpyViewChunkList::CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList )
-:   CMemSpyViewChunkBase( aEngine, aObserver, &aList )
-    {
-    }
-
-
-void CMemSpyViewChunkList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Chunks" );
-    SetTitleL( KTitle );
-
-    if  ( iList == NULL )
-        {
-        // Prepare code segment list
-        iList = iEngine.HelperChunk().ListL();
-        }
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    if  ( aSelectionRune != NULL )
-        {
-        iCurrentChunk = reinterpret_cast< CMemSpyEngineChunkEntry* >( aSelectionRune );
-        const TInt index = iList->ItemIndex( *iCurrentChunk );
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        }
-
-    iListBox->DrawDeferred();
-    }
-
-
-TMemSpyViewType CMemSpyViewChunkList::ViewType() const
-    {
-    return EMemSpyViewTypeChunkList;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewChunkList::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewChunkList::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = new(ELeave) CMemSpyViewChunkDetails( iEngine, iObserver, *iList, *iCurrentChunk );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iList = NULL;
-
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewChunkList::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iList );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewChunkList::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineChunkEntry& chunk = iList->At( aIndex );
-        iCurrentChunk = &chunk;
-        }
-    else
-        {
-        iCurrentChunk = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewChunkList::HandleListBoxItemSelectedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineChunkEntry& chunk = iList->At( aIndex );
-        iCurrentChunk = &chunk;
-        }
-    else
-        {
-        iCurrentChunk = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewChunkDetails::CMemSpyViewChunkDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList, CMemSpyEngineChunkEntry& aSelectedChunk )
-:   CMemSpyViewChunkBase( aEngine, aObserver, &aList ), iChunk( aSelectedChunk )
-    {
-    }
-
-
-void CMemSpyViewChunkDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Chunk Details" );
-    SetTitleL( KTitle );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewChunkDetails::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewChunkDetails::ViewType() const
-    {
-    return EMemSpyViewTypeChunkDetails;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewChunkDetails::PrepareParentViewL()
-    {
-    CMemSpyViewChunkList* parent = new(ELeave) CMemSpyViewChunkList( iEngine, iObserver, *iList );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iList = NULL;
-
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), &iChunk );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewChunkDetails::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &iChunk );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewCodeSegList.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,500 +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 "MemSpyViewCodeSegList.h"
-
-// System includes
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelpercodesegment.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyExportBitmapsToMemoryCardDialog.h"
-
-
-
-CMemSpyViewCodeSegBase::CMemSpyViewCodeSegBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList* aList )
-:   CMemSpyViewBase( aEngine, aObserver ), iList( aList )
-    {
-    }
-
-
-CMemSpyViewCodeSegBase::~CMemSpyViewCodeSegBase()
-    {
-    delete iList;
-    }
-
-
-TBool CMemSpyViewCodeSegBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdCodeSegSortByName:
-        iList->SortByFileNameL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdCodeSegSortByCodeSize:
-        iList->SortByCodeSizeL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdCodeSegSortByDataSize:
-        iList->SortByDataSizeL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdCodeSegSortByUid:
-        iList->SortByUidsL();
-        CMemSpyViewBase::RefreshL();
-        break;
-    case EMemSpyCmdCodeSegListing:
-        OnCmdCodeSegmentListingL();
-        break;
-    case EMemSpyCmdCodeSegShowItemsAll:
-        OnCmdShowItemsAllL();
-        break;
-    case EMemSpyCmdCodeSegShowItemsGlobalData:
-        OnCmdShowItemsGlobalDataL();
-        break;
-
-    case EMemSpyCmdCodeSegShowCapsWithTCBProcess:
-    case EMemSpyCmdCodeSegShowCapsWithTCBAll:              
-        OnCmdFilterByCapabilityL( ECapabilityTCB, aCommand == EMemSpyCmdCodeSegShowCapsWithTCBAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithCommDDProcess:
-    case EMemSpyCmdCodeSegShowCapsWithCommDDAll:
-        OnCmdFilterByCapabilityL( ECapabilityCommDD, aCommand == EMemSpyCmdCodeSegShowCapsWithCommDDAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess:
-    case EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll:
-        OnCmdFilterByCapabilityL( ECapabilityPowerMgmt, aCommand == EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess:
-    case EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll:
-        OnCmdFilterByCapabilityL( ECapabilityMultimediaDD, aCommand == EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess:
-    case EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll:
-        OnCmdFilterByCapabilityL( ECapabilityReadDeviceData, aCommand == EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess:
-    case EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll:
-        OnCmdFilterByCapabilityL( ECapabilityWriteDeviceData, aCommand == EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithDRMProcess:
-    case EMemSpyCmdCodeSegShowCapsWithDRMAll:
-        OnCmdFilterByCapabilityL( ECapabilityDRM, aCommand == EMemSpyCmdCodeSegShowCapsWithDRMAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess:
-    case EMemSpyCmdCodeSegShowCapsWithTrustedUIAll:
-        OnCmdFilterByCapabilityL( ECapabilityTrustedUI, aCommand == EMemSpyCmdCodeSegShowCapsWithTrustedUIAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithProtServProcess:
-    case EMemSpyCmdCodeSegShowCapsWithProtServAll:
-        OnCmdFilterByCapabilityL( ECapabilityProtServ, aCommand == EMemSpyCmdCodeSegShowCapsWithProtServAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess:
-    case EMemSpyCmdCodeSegShowCapsWithDiskAdminAll:
-        OnCmdFilterByCapabilityL( ECapabilityDiskAdmin, aCommand == EMemSpyCmdCodeSegShowCapsWithDiskAdminAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess:
-    case EMemSpyCmdCodeSegShowCapsWithNetworkControlAll:
-        OnCmdFilterByCapabilityL( ECapabilityNetworkControl, aCommand == EMemSpyCmdCodeSegShowCapsWithNetworkControlAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithAllFilesProcess:
-    case EMemSpyCmdCodeSegShowCapsWithAllFilesAll:
-        OnCmdFilterByCapabilityL( ECapabilityAllFiles, aCommand == EMemSpyCmdCodeSegShowCapsWithAllFilesAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithSwEventProcess:
-    case EMemSpyCmdCodeSegShowCapsWithSwEventAll:
-        OnCmdFilterByCapabilityL( ECapabilitySwEvent, aCommand == EMemSpyCmdCodeSegShowCapsWithSwEventAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess:
-    case EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll:
-        OnCmdFilterByCapabilityL( ECapabilityNetworkServices, aCommand == EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess:
-    case EMemSpyCmdCodeSegShowCapsWithLocalServicesAll:
-        OnCmdFilterByCapabilityL( ECapabilityLocalServices, aCommand == EMemSpyCmdCodeSegShowCapsWithLocalServicesAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess:
-    case EMemSpyCmdCodeSegShowCapsWithReadUserDataAll:
-        OnCmdFilterByCapabilityL( ECapabilityReadUserData, aCommand == EMemSpyCmdCodeSegShowCapsWithReadUserDataAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess:
-    case EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll:
-        OnCmdFilterByCapabilityL( ECapabilityWriteUserData, aCommand == EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithLocationProcess:
-    case EMemSpyCmdCodeSegShowCapsWithLocationAll:
-        OnCmdFilterByCapabilityL( ECapabilityLocation, aCommand == EMemSpyCmdCodeSegShowCapsWithLocationAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess:
-    case EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll:
-        OnCmdFilterByCapabilityL( ECapabilitySurroundingsDD, aCommand == EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll );
-        break;
-    case EMemSpyCmdCodeSegShowCapsWithUserEnvProcess:
-    case EMemSpyCmdCodeSegShowCapsWithUserEnvAll:
-        OnCmdFilterByCapabilityL( ECapabilityUserEnvironment, aCommand == EMemSpyCmdCodeSegShowCapsWithUserEnvAll );
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewCodeSegBase::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewCodeSegBase::OnCmdCodeSegmentListingL()
-    {
-    // Begin a new data stream
-    _LIT( KMemSpyContext, "CodeSeg List - " );
-    _LIT( KMemSpyFolder, "CodeSegs" );
-    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
-
-    // Set prefix for overall listing
-    _LIT(KOverallPrefix, "CodeSeg List - ");
-    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
-
-    // Create header
-    CMemSpyEngineCodeSegList::OutputDataColumnsL( iEngine );
-    
-    // List items
-    const TInt count = iList->Count();
-    for(TInt i=0; i<count; i++)
-        {
-        const CMemSpyEngineCodeSegEntry& entry = iList->At( i );
-        //
-        entry.OutputDataL( iEngine.HelperCodeSegment() );
-        }
-
-    // Tidy up
-    CleanupStack::PopAndDestroy(); // prefix
-
-    // End data stream
-    iEngine.Sink().DataStreamEndL();
-    }
-
-
-void CMemSpyViewCodeSegBase::OnCmdShowItemsAllL()
-    {
-    iList->ShowAllL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewCodeSegBase::OnCmdShowItemsGlobalDataL()
-    {
-    iList->ShowOnlyEntriesWithGlobalDataL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewCodeSegBase::OnCmdFilterByCapabilityL( TCapability aCapability, TBool aAllBinaries )
-    {
-    TMemSpyViewCodeSegFilter filterLogic( aCapability, aAllBinaries );
-    TMemSpyEngineVisibiltyFunction<CMemSpyEngineCodeSegEntry> filterFunction( TMemSpyViewCodeSegFilter::FilterItem, &filterLogic );
-    iList->ShowL( filterFunction );
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewCodeSegList::CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewCodeSegBase( aEngine, aObserver, NULL )
-    {
-    }
-
-
-CMemSpyViewCodeSegList::CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList )
-:   CMemSpyViewCodeSegBase( aEngine, aObserver, &aList )
-    {
-    }
-
-
-void CMemSpyViewCodeSegList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Code Segments" );
-    SetTitleL( KTitle );
-
-    if  ( iList == NULL )
-        {
-        // Prepare code segment list
-        iList = iEngine.HelperCodeSegment().CodeSegmentListL();
-        iList->SortByCodeSizeL();
-        }
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    if  ( aSelectionRune != NULL )
-        {
-        iCurrentCodeSegment = reinterpret_cast< CMemSpyEngineCodeSegEntry* >( aSelectionRune );
-        const TInt index = iList->ItemIndex( *iCurrentCodeSegment );
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        }
-
-    iListBox->DrawDeferred();
-    }
-
-
-TMemSpyViewType CMemSpyViewCodeSegList::ViewType() const
-    {
-    return EMemSpyViewTypeCodeSegmentList;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewCodeSegList::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewCodeSegList::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = new(ELeave) CMemSpyViewCodeSegDetails( iEngine, iObserver, *iList, *iCurrentCodeSegment );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iList = NULL;
-
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewCodeSegList::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iList );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewCodeSegList::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineCodeSegEntry& codeSeg = iList->At( aIndex );
-        iCurrentCodeSegment = &codeSeg;
-        }
-    else
-        {
-        iCurrentCodeSegment = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewCodeSegList::HandleListBoxItemSelectedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineCodeSegEntry& codeSeg = iList->At( aIndex );
-        iCurrentCodeSegment = &codeSeg;
-        }
-    else
-        {
-        iCurrentCodeSegment = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewCodeSegDetails::CMemSpyViewCodeSegDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList, CMemSpyEngineCodeSegEntry& aSelectedCodeSegment )
-:   CMemSpyViewCodeSegBase( aEngine, aObserver, &aList ), iCodeSegment( aSelectedCodeSegment )
-    {
-    }
-
-
-void CMemSpyViewCodeSegDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Code Segment Details" );
-    SetTitleL( KTitle );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewCodeSegDetails::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewCodeSegDetails::ViewType() const
-    {
-    return EMemSpyViewTypeCodeSegmentDetails;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewCodeSegDetails::PrepareParentViewL()
-    {
-    CMemSpyViewCodeSegList* parent = new(ELeave) CMemSpyViewCodeSegList( iEngine, iObserver, *iList );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iList = NULL;
-
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), &iCodeSegment );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewCodeSegDetails::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &iCodeSegment );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TBool TMemSpyViewCodeSegFilter::FilterItem( const CMemSpyEngineCodeSegEntry*& aItem, TAny* aRune )
-    {
-    TMemSpyViewCodeSegFilter* self = reinterpret_cast< TMemSpyViewCodeSegFilter* >( aRune );
-
-    TBool match = aItem->HasCapability( self->iCapability );
-    if  ( match && self->iAllBinaries == EFalse )
-        {
-        // We're only looking for EXE's...
-        TParsePtrC parser( aItem->FileName() );
-        const TPtrC pExtension( parser.Ext() );
-        _LIT(KProcessExtension, ".exe");
-        //
-        match = ( pExtension.CompareF( KProcessExtension ) == 0 );
-        }
-    //
-    return match;
-    }
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewDriveInfo.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,381 +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 "MemSpyViewDriveInfo.h"
-
-// System includes
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperfilesystem.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-
-
-
-CMemSpyViewDriveInfoBase::CMemSpyViewDriveInfoBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewDriveInfoBase::~CMemSpyViewDriveInfoBase()
-    {
-    if  ( iList )
-        {
-        iList->SetObserver( NULL );
-        }
-    //
-    delete iList;
-    }
-
-
-void CMemSpyViewDriveInfoBase::BaseConstructL()
-    {
-    iList = iEngine.HelperFileSystem().DriveListL();
-    }
-
-
-TBool CMemSpyViewDriveInfoBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( EFalse ), iDriveNumber( EDriveA )
-    {
-    }
-
-
-CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber )
-:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( ETrue ), iDriveNumber( aDriveNumber )
-    {
-    }
-
-
-void CMemSpyViewDriveList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    BaseConstructL();
-
-    _LIT( KTitle, "Drive Summary" );
-    SetTitleL( KTitle );
-
-    // Start watching list
-    iList->SetObserver( this );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    if  ( iUseDriveNumber )
-        {
-#ifdef _DEBUG
-        RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iDriveNumber: %c:", iDriveNumber + 'A' );
-#endif
-        iCurrentDrive = iList->EntryByDriveNumber( iDriveNumber );
-
-#ifdef _DEBUG
-        RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iCurrentDrive: 0x%08x", iCurrentDrive );
-#endif
-        if  ( iCurrentDrive )
-            {
-            const TInt index = iList->ItemIndex( *iCurrentDrive );
-#ifdef _DEBUG
-            RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - index: %d", index );
-#endif
-            iListBox->SetCurrentItemIndex( index );
-            HandleListBoxItemSelectedL( index );
-            }
-        }
-    
-    iListBox->DrawDeferred();
-    }
-
-
-TMemSpyViewType CMemSpyViewDriveList::ViewType() const
-    {
-    return EMemSpyViewTypeDriveSummary;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewDriveList::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    //
-    if  ( parent )
-        {
-        iList->SetObserver( NULL );
-        }
-    //
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewDriveList::PrepareChildViewL()
-    {
-    ASSERT( iCurrentDrive );
-    CMemSpyViewBase* child = new(ELeave) CMemSpyViewDriveInfo( iEngine, iObserver, iCurrentDrive->DriveNumber() );
-
-    // Stop watching list
-    if  ( child )
-        {
-        iList->SetObserver( NULL );
-        }
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iList = NULL;
-
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewDriveList::RefreshL()
-    {
-    if  ( iList )
-        {
-        iList->SetObserver( NULL );
-        }
-    //
-    CMemSpyEngineDriveList* list = iEngine.HelperFileSystem().DriveListL();
-    delete iList;
-    iList = list;
-    iList->SetObserver( this );
-    //
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewDriveList::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iList );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewDriveList::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineDriveEntry& entry = iList->At( aIndex );
-        iCurrentDrive = &entry;
-        }
-    else
-        {
-        iCurrentDrive = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewDriveList::HandleListBoxItemSelectedL( TInt aIndex )
-    {
-    const TInt count = iList->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineDriveEntry& entry = iList->At( aIndex );
-        iCurrentDrive = &entry;
-        }
-    else
-        {
-        iCurrentDrive = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-void CMemSpyViewDriveList::HandleDriveListChangedL( const CMemSpyEngineDriveList& /*aList*/ )
-    {
-    RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewDriveInfo::CMemSpyViewDriveInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber )
-:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iDriveNumber( aDriveNumber )
-    {
-    }
-
-
-void CMemSpyViewDriveInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    BaseConstructL();
-    //
-    iDriveInfo = iList->EntryByDriveNumber( iDriveNumber );
-    if  ( !iDriveInfo )
-        {
-        User::Leave( KErrNotFound );
-        }
-    iDriveInfo->SetObserver( this );
-
-    _LIT( KTitleFormat, "Drive %S Info" );
-    const TDriveName name( iDriveInfo->DriveUnit().Name() );
-    TName title;
-    title.Format( KTitleFormat, &name );
-    SetTitleL( title );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewDriveInfo::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewDriveInfo::ViewType() const
-    {
-    return EMemSpyViewTypeDriveInfo;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewDriveInfo::PrepareParentViewL()
-    {
-    ASSERT( iDriveInfo );
-    CMemSpyViewDriveList* parent = new(ELeave) CMemSpyViewDriveList( iEngine, iObserver, iDriveInfo->DriveNumber() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( parent );
-    //
-    if  ( parent )
-        {
-        iDriveInfo->SetObserver( NULL );
-        }
-    //
-    return parent;
-    }
-
-
-void CMemSpyViewDriveInfo::SetListBoxModelL()
-    {
-    if  ( iDriveInfo )
-        {
-        CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-        listbox->Model()->SetItemTextArray( iDriveInfo );
-        listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-        }
-    }
-
-
-void CMemSpyViewDriveInfo::HandleDriveEntryChangedL( const CMemSpyEngineDriveEntry& /*aEntry*/ )
-    {
-    RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewECom.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +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 "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 );
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,746 +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 "MemSpyViewFBServBitmaps.h"
-
-// System includes
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyExportBitmapsToMemoryCardDialog.h"
-
-// Constants
-const TInt KMemSpyIdleResetListboxTimerPeriod = 500000;
-const TInt KMemSpyImageSlideshowPeriod = 1000000;
-
-
-
-CMemSpyViewFBServBase::CMemSpyViewFBServBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps )
-:   CMemSpyViewBase( aEngine, aObserver ), iBitmaps( aBitmaps )
-    {
-    }
-
-
-CMemSpyViewFBServBase::~CMemSpyViewFBServBase()
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBase::~CMemSpyViewFBServBase() - deleting bitmaps: 0x%08x", iBitmaps );
-#endif
-    delete iBitmaps;
-    }
-
-
-TBool CMemSpyViewFBServBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-	case EMemSpyCmdImagesSlideshow:
-    	OnCmdSlideShowL();
-        break;
-#ifndef __WINS__
-	case EMemSpyCmdImagesSaveAllToMemoryCard:
-        OnCmdExportToMemoryCardL();
-        break;
-#endif
-	case EMemSpyCmdImagesListing:
-        OnCmdImageListingL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewFBServBase::OnCmdSlideShowL()
-    {
-    TInt index = 0;
-    CMemSpyViewFBServSlideshow::NewLD( *iBitmaps, index );
-    
-    // Select the item that was last displayed
-    const TInt count = iBitmaps->Count();
-    if  ( iListBox && index >= 0 && index < count )
-        {
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        DrawDeferred();
-        }
-    }
-
-
-void CMemSpyViewFBServBase::OnCmdExportToMemoryCardL()
-    {
-    // Deletes itself
-    CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *iBitmaps );
-    }
-
-
-void CMemSpyViewFBServBase::OnCmdImageListingL()
-    {
-    // Begin a new data stream
-    _LIT( KMemSpyContext, "Bitmap List - " );
-    _LIT( KMemSpyFolder, "Bitmaps" );
-    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
-
-    // Set prefix for overall listing
-    _LIT(KOverallPrefix, "Bitmap List - ");
-    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
-
-    // Create header
-    CMemSpyEngineFbServBitmap::OutputDataColumnsL( iEngine );
-    
-    // List items
-    const TInt count = iBitmaps->Count();
-    for(TInt i=0; i<count; i++)
-        {
-        const CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( i );
-        //
-        bitmap.OutputDataL( iEngine );
-        }
-
-    // Tidy up
-    CleanupStack::PopAndDestroy(); // prefix
-
-    // End data stream
-    iEngine.Sink().DataStreamEndL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewFBServBase( aEngine, aObserver, NULL )
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(1) - iBitmaps is: 0x%08x", iBitmaps );
-#endif
-    }
-
-
-CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps )
-:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps )
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(2) - iBitmaps is: 0x%08x", iBitmaps );
-#endif
-    }
-
-
-CMemSpyViewFBServBitmaps::~CMemSpyViewFBServBitmaps()
-    {
-    delete iIdleResetListboxTimer;
-    iBitmapHandles.Close();
-    }
-
-
-void CMemSpyViewFBServBitmaps::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Font & Bitmap Server" );
-    SetTitleL( KTitle );
-
-    if  ( iBitmaps == NULL )
-        {
-        // Prepare bitmap handles
-        iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( iBitmapHandles );
-
-        // Create bitmap array - construction occurs asynchronously
-        iBitmaps = CMemSpyEngineFbServBitmapArray::NewL( CActive::EPriorityIdle, iBitmapHandles, *this );
-        }
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    // Create idle listbox refresh timer
-    if  ( iBitmaps->Count() == 0 )
-        {
-        iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityLow );
-        }
-    else
-        {
-        if  ( aSelectionRune != NULL )
-            {
-            iCurrentBitmap = reinterpret_cast< CMemSpyEngineFbServBitmap* >( aSelectionRune );
-            const TInt index = iBitmaps->BitmapIndexByHandle( iCurrentBitmap->Handle() );
-            iListBox->SetCurrentItemIndex( index );
-            HandleListBoxItemSelectedL( index );
-            }
-
-        iListBox->DrawDeferred();
-        }
-    }
-
-
-void CMemSpyViewFBServBitmaps::RefreshL()
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBitmaps::RefreshL() - iBitmaps->Count(): %d", iBitmaps->Count());
-#endif
-
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewFBServBitmaps::ViewType() const
-    {
-    return EMemSpyViewTypeFBServBitmaps;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, *iCurrentBitmap );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iBitmaps = NULL;
-
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewFBServBitmaps::HandleFbServBitmapArrayEventL( TEvent aEvent )
-    {
-    if  ( aEvent == EBitmapItemsCreated )
-        {
-        }
-    else if ( aEvent == EBitmapArrayConstructionComplete )
-        {
-        }
-    //
-    iIdleResetListboxTimer->Cancel();
-    iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod/2, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) );
-    }
-
-
-void CMemSpyViewFBServBitmaps::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iBitmaps );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewFBServBitmaps::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    const TInt count = iBitmaps->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex );
-        iCurrentBitmap = &bitmap;
-        }
-    else
-        {
-        iCurrentBitmap = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewFBServBitmaps::HandleListBoxItemSelectedL( TInt aIndex )
-    {
-    const TInt count = iBitmaps->Count();
-    if  ( aIndex >= 0 && aIndex < count )
-        {
-        CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex );
-        iCurrentBitmap = &bitmap;
-        }
-    else
-        {
-        iCurrentBitmap = NULL;
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-TInt CMemSpyViewFBServBitmaps::IdleUpdateListBoxModel( TAny* aSelf )
-    {
-    CMemSpyViewFBServBitmaps* self = reinterpret_cast< CMemSpyViewFBServBitmaps* >( aSelf );
-    TRAP_IGNORE( self->DoIdleUpdateListBoxModelL() );
-    return EFalse;
-    }
-
-
-void CMemSpyViewFBServBitmaps::DoIdleUpdateListBoxModelL()
-    {
-    // Try to maintain current item selection if at all possible.
-    TInt handle = 0;
-    if  ( iCurrentBitmap )
-        {
-        handle = iCurrentBitmap->Handle();
-        iCurrentBitmap = NULL;
-        }
-   
-    // Update list box & model
-    iListBox->HandleItemAdditionL();
-    iListBox->DrawDeferred();
-    
-    // Try to select previous item if it is still available
-    const TInt index = iBitmaps->BitmapIndexByHandle( handle );
-    if  ( index >= 0 && index < iBitmaps->Count() )
-        {
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        }
-
-    iIdleResetListboxTimer->Cancel();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap )
-:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap )
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo() - iBitmaps is: 0x%08x", iBitmaps );
-#endif
-    }
-
-
-void CMemSpyViewFBServBitmapInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Bitmap Details" );
-    SetTitleL( KTitle );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    
-    if  ( iBitmaps->Count() )
-        {
-        iListBox->SetCurrentItemIndex( 0 );
-        HandleListBoxItemSelectedL( 0 );
-        }
-    }
-
-
-void CMemSpyViewFBServBitmapInfo::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewFBServBitmapInfo::ViewType() const
-    {
-    return EMemSpyViewTypeFBServBitmapInfo;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareParentViewL()
-    {
-    CMemSpyViewFBServBitmaps* parent = new(ELeave) CMemSpyViewFBServBitmaps( iEngine, iObserver, iBitmaps );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iBitmaps = NULL;
-
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), &iBitmapObject );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareChildViewL()
-    {
-    CMemSpyViewFBServBitmapViewer* child = new(ELeave) CMemSpyViewFBServBitmapViewer( iEngine, iObserver, iBitmaps, iBitmapObject );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iBitmaps = NULL;
-
-    CleanupStack::PushL( child );
-    CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() );
-    const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() );
-    child->ConstructL( rect, *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewFBServBitmapInfo::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &iBitmapObject );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewFBServBitmapInfo::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    // Only report the event if its the first item that was actioned
-    if  ( aIndex == 0 )
-        {
-        ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap )
-:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap )
-    {
-#ifdef _DEBUG
-    RDebug::Printf("CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer() - iBitmaps is: 0x%08x", iBitmaps );
-#endif
-    }
-
-
-CMemSpyViewFBServBitmapViewer::~CMemSpyViewFBServBitmapViewer()
-    {
-    delete iImage;
-    }
-
-
-void CMemSpyViewFBServBitmapViewer::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Bitmap Preview" );
-    SetTitleL( KTitle );
-
-    // Finish construction
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    // Prepare image
-    iImage = new(ELeave) CEikImage();
-    iImage->SetContainerWindowL( *this );
-    iImage->SetPicture( &iBitmapObject.Bitmap(), NULL );
-    iImage->SetPictureOwnedExternally( ETrue );
-    SizeChanged();
-    }
-
-
-void CMemSpyViewFBServBitmapViewer::RefreshL()
-    {
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewFBServBitmapViewer::ViewType() const
-    {
-    return EMemSpyViewTypeFBServBitmapViewer;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewFBServBitmapViewer::PrepareParentViewL()
-    {
-    CMemSpyViewFBServBitmapInfo* parent = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, iBitmapObject );
-
-    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-    // This object is about to die in any case.
-    iBitmaps = NULL;
-
-    CleanupStack::PushL( parent );
-    CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() );
-    const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() );
-    parent->ConstructL( rect, *Parent() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewFBServBitmapViewer::SetListBoxModelL()
-    {
-    }
-
-
-CEikListBox* CMemSpyViewFBServBitmapViewer::ConstructListBoxL()
-    {
-    return NULL;
-    }
-
-
-void CMemSpyViewFBServBitmapViewer::Draw( const TRect& /*aRect*/ ) const
-    {
-    CWindowGc& gc = SystemGc();
-    //
-    gc.SetPenStyle( CGraphicsContext::ENullPen );
-    gc.SetBrushColor( KRgbWhite );
-    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-    gc.DrawRect( Rect() );
-    //
-    gc.SetBrushColor( KRgbBlack );
-    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-    gc.DrawRect( iBorderRect );
-    }
-    
-
-void CMemSpyViewFBServBitmapViewer::SizeChanged()
-    {
-    TRect rect( Rect() );
-    TSize size( rect.Size() );
-    //
-    TSize bitmapSize( iBitmapObject.Bitmap().SizeInPixels() );
-
-    // Try to center image, if possible.
-    if  ( bitmapSize.iWidth < size.iWidth )
-        {
-        const TInt offset = ( size.iWidth - bitmapSize.iWidth) / 2;
-        rect.Move( offset, 0 );
-        size.iWidth = bitmapSize.iWidth;
-        }
-    if  ( bitmapSize.iHeight < size.iHeight )
-        {
-        const TInt offset = ( size.iHeight - bitmapSize.iHeight) / 2;
-        rect.Move( 0, offset );
-        size.iHeight = bitmapSize.iHeight;
-        }
-    //
-    rect.SetSize( size );
-    if  ( iImage )
-        {
-        iImage->SetRect( rect );
-        }
-    iBorderRect = rect;
-    iBorderRect.Grow( 2, 2 );
-    }
-
-
-TInt CMemSpyViewFBServBitmapViewer::CountComponentControls() const
-    {
-    TInt count = 0;
-    //
-    if  ( iImage )
-        {
-        ++count;
-        }
-    //
-    return count;
-    }
-
-
-CCoeControl* CMemSpyViewFBServBitmapViewer::ComponentControl( TInt /*aIndex*/ ) const
-    {
-    return iImage;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewFBServSlideshow::CMemSpyViewFBServSlideshow( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex )
-:   iBitmaps( aBitmaps ), iIndex( aIndex )
-    {
-    }
-
-
-CMemSpyViewFBServSlideshow::~CMemSpyViewFBServSlideshow()
-    {
-    delete iTimer;
-    }
-
-
-void CMemSpyViewFBServSlideshow::ConstructL()
-    {
-    iTimer = CPeriodic::NewL( CActive::EPriorityLow );
-    iTimer->Start( KMemSpyImageSlideshowPeriod, KMemSpyImageSlideshowPeriod, TCallBack( IdleUpdate, this ) );
-    }
-
-
-void CMemSpyViewFBServSlideshow::NewLD( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex )
-    {
-    CMemSpyViewFBServSlideshow* self = new(ELeave) CMemSpyViewFBServSlideshow( aBitmaps, aIndex );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    //
-    self->ExecuteLD( R_MEMSPY_IMAGE_SLIDESHOW );
-    }
-
-
-void CMemSpyViewFBServSlideshow::PreLayoutDynInitL()
-    {
-    ShowNextImageL();
-    }
-
-
-TBool CMemSpyViewFBServSlideshow::OkToExitL( TInt /*aButtonId*/ )
-    {
-    return ETrue;
-    }
-
-
-TInt CMemSpyViewFBServSlideshow::IdleUpdate( TAny* aSelf )
-    {
-    CMemSpyViewFBServSlideshow* self = reinterpret_cast< CMemSpyViewFBServSlideshow* >( aSelf );
-    TRAP_IGNORE( self->ShowNextImageL() );
-    return EFalse;
-    }
-
-
-void CMemSpyViewFBServSlideshow::ShowNextImageL()
-    {
-	CEikImage* imageControl = static_cast< CEikImage* >( Control(EMemSpyCtrlIdSlideShowImage) );
-
-    // Get the right image
-    const TInt imageCount = iBitmaps.Count();
-    if  ( iIndex < imageCount )
-        {
-        CMemSpyEngineFbServBitmap& bitmap = iBitmaps.At( iIndex );
-        imageControl->SetPicture( &bitmap.Bitmap(), NULL );
-        imageControl->SetPictureOwnedExternally( ETrue );
-        
-        // Prepare title
-        const TSize size( bitmap.Bitmap().SizeInPixels() );
-        _LIT(KTitleFormat, "%3d x %3d");
-        TBuf<128> title;
-        title.Format( KTitleFormat, size.iWidth, size.iHeight );
-        SetTitleL( title );
-        //
-        User::ResetInactivityTime();
-        //
-        Layout();
-        //
-        ++iIndex;
-        }
-    else
-        {
-        // Dismiss myself.
-        delete this;
-        }
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyViewHeapTracking.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,435 +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 "MemSpyViewHeapTracking.h"
-
-// System includes
-#include <hal.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelpersysmemtracker.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewHeapTrackingSettings.h"
-#include "MemSpyViewHeapTrackingResults.h"
-
-
-CMemSpyViewHeapTracking::CMemSpyViewHeapTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver ),
-    iState( EMemSpyViewHeapTrackingStateIdle )
-    {
-    if ( iEngine.HelperSysMemTracker().IsActive() )
-        {
-        iState = EMemSpyViewHeapTrackingStateTimerOn;
-        }
-    }
-
-
-CMemSpyViewHeapTracking::~CMemSpyViewHeapTracking()
-    {
-    delete iStopTimerCallBack;
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    }
-
-
-void CMemSpyViewHeapTracking::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "System-Wide Memory Tracking" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    
-    // Backup current config because it may be overwritten with Basic/Full mode settings.
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-    iOriginalConfig = config;
-    
-    if ( config.iMode != TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
-        {
-        // Set config. Needed for updating config for Basic or Full mode.
-        SetConfigByModeL( config.iMode, config );        
-        }
-        
-    // Make sure the correct item is selected
-    TInt index = 0;
-    if  ( aSelectionRune != NULL )
-        {
-        const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
-        index = IndexByViewType( viewType );
-        }
-    iListBox->SetCurrentItemIndex( index );
-    HandleListBoxItemSelectedL( index );
-    }
-
-
-void CMemSpyViewHeapTracking::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewHeapTracking::ViewType() const
-    {
-    return EMemSpyViewTypeHeapTracking;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTracking::PrepareParentViewL()
-    {
-    
-    // Save custom settings even if mode is Basic or Full
-    TRAP_IGNORE(
-        CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-        TMemSpyEngineHelperSysMemTrackerConfig config;
-        swmt.GetConfig( config );
-        config.iEnabledCategories = iOriginalConfig.iEnabledCategories;
-        config.iThreadNameFilter = iOriginalConfig.iThreadNameFilter;
-        config.iDumpData = iOriginalConfig.iDumpData;
-        swmt.SetConfigL( config );
-        Settings().StoreSettingsL();
-        );
-    
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTracking::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    const TInt index = iListBox->CurrentItemIndex();
-    
-    // Get current config
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-    
-    //
-    if  ( index == 0 )
-        {
-        // This is the start/stop toggle so we don't make a child view
-        child = NULL; 
-
-        // ... instead we either start or stop the tracker
-        if  ( !iEngine.HelperSysMemTracker().IsActive() )
-            {
-            iState = EMemSpyViewHeapTrackingStateSingleOn;
-            // Setting observer to be able to stop SWMT after first cycle is completed
-            iEngine.HelperSysMemTracker().SetObserver( this );
-            iEngine.HelperSysMemTracker().StartL();
-            }
-
-        // Redraw listbox 
-        RefreshL();
-        }
-    else if  ( index == 1 )
-        {
-        // This is the start/stop toggle so we don't make a child view
-        child = NULL; 
-
-        // ... instead we either start or stop the tracker
-        if  ( iEngine.HelperSysMemTracker().IsActive() && iState == EMemSpyViewHeapTrackingStateTimerOn )
-            {
-            iState = EMemSpyViewHeapTrackingStateIdle;
-            iEngine.HelperSysMemTracker().StopL();
-            }
-        else if ( iState == EMemSpyViewHeapTrackingStateIdle )
-            {
-            iState = EMemSpyViewHeapTrackingStateTimerOn;
-            iEngine.HelperSysMemTracker().StartL();
-            }
-
-        // Redraw listbox 
-        RefreshL();
-        }
-    else if ( index == 2 )
-        {
-        switch ( config.iMode )
-            {
-            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
-                {
-                // Set Full mode
-                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull, config );
-                break;
-                }
-            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
-                {
-                // Set Custom mode
-                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom, config );
-                break;
-                }
-            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
-                {
-                // Set Basic mode
-                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic, config );
-                break;
-                }
-            default: break;
-            }
-                
-        // Redraw listbox 
-        RefreshL();
-        }
-    else if ( index == 3 )
-        {        
-        if ( config.iMode == TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
-            {
-            child = new(ELeave) CMemSpyViewHeapTrackingSettings( iEngine, iObserver );
-            }
-        else
-            {
-            child = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
-            }
-        }
-    else if ( index == 4 )
-        {
-        child = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
-        }
-    if  ( child )
-        {
-        CleanupStack::PushL( child );
-        child->ConstructL( Rect(), *Parent() );
-        CleanupStack::Pop( child );
-        }
-    
-    //
-    return child;
-    }
-
-
-void CMemSpyViewHeapTracking::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-    
-    // Get current config
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-
-    // 1st item
-    _LIT( KItem1FormatEnable, "\tGet dump now" );
-    model->AppendL( KItem1FormatEnable );
-
-    
-    // 1st item
-    if  ( iEngine.HelperSysMemTracker().IsActive() && iState == EMemSpyViewHeapTrackingStateTimerOn )
-        {
-        _LIT( KItem1FormatEnable, "\tStop timer\t\t%d (sec)" );
-        TName item;
-        item.Format( KItem1FormatEnable, config.iTimerPeriod.Int() / 1000000 );
-        model->AppendL( item );
-        }
-    else
-        {
-        _LIT( KItem1FormatEnable, "\tStart timer\t\t%d (sec)" );
-        TName item;
-        item.Format( KItem1FormatEnable, config.iTimerPeriod.Int() / 1000000 );
-        model->AppendL( item );
-        }
-    
-    // 2nd item
-    switch ( config.iMode )
-        {
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
-            {
-            _LIT( KItem2Format, "\tTracking mode\t\tBasic" );
-            model->AppendL( KItem2Format );        
-            break;
-            }
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
-            {
-            _LIT( KItem2Format, "\tTracking mode\t\tFull" );
-            model->AppendL( KItem2Format );        
-            break;
-            }
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
-            {
-            _LIT( KItem2Format, "\tTracking mode\t\tCustom" );
-            model->AppendL( KItem2Format );
-            
-            // 3rd item
-            TFullName item;
-            if ( config.DumpData() && 
-                config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap )
-                {
-                _LIT( KItem3Format, "\tSettings\t\t%d categ., dump" );
-                item.Format( KItem3Format, config.EnabledCategoryCount() );
-                }
-            else
-                {
-                _LIT( KItem3Format, "\tSettings\t\t%d categories" );
-                item.Format( KItem3Format, config.EnabledCategoryCount() );
-                }
-            model->AppendL( item );            
-            break;
-            }
-        default: break;
-        }
-    
-    // 4th item    
-    const TInt cycleCount = iEngine.HelperSysMemTracker().MdcaCount();
-    if ( cycleCount )
-        {
-        _LIT( KItem2Format, "\tResults\t\t%d cycles" );
-        TFullName item;
-        item.Format( KItem2Format, cycleCount );
-        model->AppendL( item );
-        }
-    else
-        {
-        _LIT( KItem2Format, "\tResults\t\tNo results" );
-        model->AppendL( KItem2Format );
-        }
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-void CMemSpyViewHeapTracking::HandleCyclesResetL()
-    {
-    }
-
-
-void CMemSpyViewHeapTracking::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    }
-
-
-void CMemSpyViewHeapTracking::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    // Stopping SWMT does not work directly from this function.
-    // It has to be made asynchronously.
-    iStopTimerCallBack = new (ELeave) CAsyncCallBack( TCallBack( CMemSpyViewHeapTracking::AsyncStopTimerCallback, this ), CActive::EPriorityStandard );
-    iStopTimerCallBack->CallBack();
-    }
-
-
-TInt CMemSpyViewHeapTracking::IndexByViewType( TMemSpyViewType aType )
-    {
-    // Get current config
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-    
-    TInt index = 0;
-    //
-    switch( aType )
-        {
-    default:
-    case EMemSpyViewTypeHeapTrackingResults:
-        {
-        if ( config.iMode == TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
-            {
-            index = 4;
-            }
-        else
-            {
-            index = 3;
-            }
-        break;
-        }
-    case EMemSpyViewTypeHeapTrackingSettings:
-        index = 3;
-        break;
-        }
-    //
-    return index;
-    }
-
-
-void CMemSpyViewHeapTracking::SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode aMode, TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
-    {
-    switch ( aMode )
-        {
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
-            {
-            aConfig.iMode = aMode;
-            aConfig.iEnabledCategories = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap |
-                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks |
-                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData |
-                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory;
-            aConfig.iDumpData = EFalse;
-            break;
-            }
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
-            {
-            aConfig.iMode = aMode;
-            aConfig.iEnabledCategories = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryAll;
-            aConfig.iDumpData = ETrue;
-            aConfig.iThreadNameFilter = KNullDesC;
-            break;
-            }
-        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
-            {
-            aConfig.iMode = aMode;
-            aConfig.iEnabledCategories = iOriginalConfig.iEnabledCategories;
-            aConfig.iDumpData = iOriginalConfig.iDumpData;
-            aConfig.iThreadNameFilter = iOriginalConfig.iThreadNameFilter;
-            break;
-            }
-        default: User::Leave( KErrArgument );
-        }
-    // Push changes to SWMT
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    swmt.SetConfigL( aConfig );
-    Settings().StoreSettingsL();
-    }
-
-
-TInt CMemSpyViewHeapTracking::AsyncStopTimerCallback( TAny* aParam )
-    {
-    CMemSpyViewHeapTracking* view = static_cast<CMemSpyViewHeapTracking*>( aParam );
-    return view->AsyncStopTimerCallback();
-    }
-
-
-TInt CMemSpyViewHeapTracking::AsyncStopTimerCallback()
-    {
-    iState = EMemSpyViewHeapTrackingStateIdle;
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    TRAP_IGNORE(
-        iEngine.HelperSysMemTracker().StopL();
-        RefreshL();
-        );
-    delete iStopTimerCallBack;
-    iStopTimerCallBack = NULL;
-    return KErrNone;
-    }
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewHeapTrackingResults.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +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 "MemSpyViewHeapTrackingResults.h"
-
-// System includes
-#include <hal.h>
-#ifdef __EPOC32__
-#include <e32rom.h>
-#endif
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackercyclechange.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackerenums.h>
-#include <memspy/engine/memspyenginehelpersysmemtracker.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
-#include <memspyui.rsg>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyContainer.h"
-#include "MemSpyViewHeapTracking.h"
-#include "MemSpyContainerObserver.h"
-
-
-CMemSpyViewHeapTrackingResults::CMemSpyViewHeapTrackingResults( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    iEngine.HelperSysMemTracker().SetObserver( this );
-    }
-
-
-CMemSpyViewHeapTrackingResults::~CMemSpyViewHeapTrackingResults()
-    {
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    }
-
-
-void CMemSpyViewHeapTrackingResults::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Results Summary" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    // Make sure the correct item is selected
-    const TInt cycleNumber = ((TInt) aSelectionRune);
-    const TInt maxCycle = iEngine.HelperSysMemTracker().MdcaCount();
-    if  ( cycleNumber > 0 && cycleNumber <= maxCycle )
-        {
-        iListBox->SetCurrentItemIndex( cycleNumber - 1 );
-        HandleListBoxItemSelectedL( cycleNumber );
-        }
-    }
-
-
-void CMemSpyViewHeapTrackingResults::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewHeapTrackingResults::ViewType() const
-    {
-    return EMemSpyViewTypeHeapTrackingResults;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareParentViewL()
-    {
-    CMemSpyViewHeapTracking* parent = new(ELeave) CMemSpyViewHeapTracking( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    //
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    //
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareChildViewL()
-    {
-    const TInt index = iListBox->CurrentItemIndex();
-    //
-    CMemSpyViewBase* child = NULL;
-    if  ( index >= 0 )
-        {
-        const CMemSpyEngineHelperSysMemTrackerCycle* cycle = iEngine.HelperSysMemTracker().CompletedCycles()[ index ];
-        //
-        child = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iEngine, iObserver, *cycle );
-        CleanupStack::PushL( child );
-        child->ConstructL( Rect(), *Parent() );
-        CleanupStack::Pop( child );
-        //
-        iEngine.HelperSysMemTracker().RemoveObserver( this );
-        }
-    //
-    return child;
-    }
-
-
-void CMemSpyViewHeapTrackingResults::SetListBoxModelL()
-    {
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    MDesCArray* contents = &iEngine.HelperSysMemTracker();
-    listbox->Model()->SetItemTextArray( contents );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewHeapTrackingResults::HandleCyclesResetL()
-    {
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewHeapTrackingResults::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    }
-
-
-void CMemSpyViewHeapTrackingResults::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    SetListBoxCurrentItemIndexL( iEngine.HelperSysMemTracker().MdcaCount() - 1 );
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewHeapTrackingResultsCycleInfo::CMemSpyViewHeapTrackingResultsCycleInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-:   CMemSpyViewBase( aEngine, aObserver ), iCycle( aCycle )
-    {
-    iEngine.HelperSysMemTracker().SetObserver( this );
-    }
-
-
-CMemSpyViewHeapTrackingResultsCycleInfo::~CMemSpyViewHeapTrackingResultsCycleInfo()
-    {
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitleFormat, "Cycle Summary [%04d]" );
-    TBuf<30> buf;
-    buf.Format( KTitleFormat, iCycle.CycleNumber() );
-    SetTitleL( buf );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    // Make sure the correct item is selected
-    const TInt index = ((TInt) aSelectionRune);
-    iListBox->SetCurrentItemIndex( index );
-    HandleListBoxItemSelectedL( index );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewHeapTrackingResultsCycleInfo::ViewType() const
-    {
-    return EMemSpyViewTypeHeapTrackingResultsCycleInfo;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingResultsCycleInfo::PrepareParentViewL()
-    {
-    CMemSpyViewHeapTrackingResults* parent = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) iCycle.CycleNumber() );
-    CleanupStack::Pop( parent );
-    //
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    //
-    return parent;
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::SetListBoxModelL()
-    {
-    MDesCArray& model = const_cast< MDesCArray& >( static_cast< const MDesCArray&>( iCycle ) );
-    //
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &model );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCyclesResetL()
-    {
-    Container().NavigateToParentViewL();
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    }
-
-
-void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
-    {
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
-
-
-
-CMemSpyViewHeapTrackingResultsChangeDescriptor::CMemSpyViewHeapTrackingResultsChangeDescriptor( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle, const CMemSpyEngineHelperSysMemTrackerCycleChange& aChangeDescriptor, TInt aIndex )
-:   CMemSpyViewBase( aEngine, aObserver ), iCycle( aCycle ), iChangeDescriptor( aChangeDescriptor ), iIndex( aIndex )
-    {
-    iEngine.HelperSysMemTracker().SetObserver( this );
-    }
-
-
-CMemSpyViewHeapTrackingResultsChangeDescriptor::~CMemSpyViewHeapTrackingResultsChangeDescriptor()
-    {
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    TBuf<30> buf;
-    if  ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapUser )
-        {
-        _LIT( KTitleFormat, "User Heap Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapKernel )
-        {
-        _LIT( KTitleFormat, "Kernel Heap Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeChunk )
-        {
-        _LIT( KTitleFormat, "Chunk Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeRamDrive )
-        {
-        _LIT( KTitleFormat, "RAM Drive Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeStack )
-        {
-        _LIT( KTitleFormat, "Stack Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeGlobalData )
-        {
-        _LIT( KTitleFormat, "Global Data Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeCode )
-        {
-        _LIT( KTitleFormat, "RAM-Loaded Code Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHandle )
-        {
-        _LIT( KTitleFormat, "Handle Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeOpenFile )
-        {
-        _LIT( KTitleFormat, "Open File Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeDiskSpace )
-        {
-        _LIT( KTitleFormat, "Disk Space Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeBitmap )
-        {
-        _LIT( KTitleFormat, "Bitmap Change [%04d]" );
-        buf.Format( KTitleFormat, iCycle.CycleNumber() );
-        }
-    //
-    SetTitleL( buf );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewHeapTrackingResultsChangeDescriptor::ViewType() const
-    {
-    return EMemSpyViewTypeHeapTrackingResultsCycleChangeDescriptor;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingResultsChangeDescriptor::PrepareParentViewL()
-    {
-    CMemSpyViewHeapTrackingResultsCycleInfo* parent = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iEngine, iObserver, iCycle );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) iIndex );
-    CleanupStack::Pop( parent );
-    //
-    iEngine.HelperSysMemTracker().RemoveObserver( this );
-    //
-    return parent;
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::SetListBoxModelL()
-    {
-    MDesCArray& model = const_cast< MDesCArray& >( static_cast< const MDesCArray&>( iChangeDescriptor ) );
-    //
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &model );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCyclesResetL()
-    {
-    CMemSpyViewHeapTrackingResults* mainResultsMenu = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
-    CleanupStack::PushL( mainResultsMenu );
-    mainResultsMenu->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( mainResultsMenu );
-    //
-    Container().SetNewActiveViewL( mainResultsMenu );
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-    {
-    }
-
-
-void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-    {
-    }
-*/
-
--- a/memspyui/ui/avkon/src/MemSpyViewHeapTrackingSettings.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +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 "MemSpyViewHeapTrackingSettings.h"
-
-// System includes
-#include <hal.h>
-#ifdef __EPOC32__
-#include <e32rom.h>
-#endif
-#include <AknQueryDialog.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelpersysmemtracker.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
-#include <memspyui.rsg>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpySettings.h"
-#include "MemSpyViewHeapTracking.h"
-#include "MemSpyContainerObserver.h"
-
-
-CMemSpyViewHeapTrackingSettings::CMemSpyViewHeapTrackingSettings( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewHeapTrackingSettings::~CMemSpyViewHeapTrackingSettings()
-    {
-    }
-
-
-void CMemSpyViewHeapTrackingSettings::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Settings" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewHeapTrackingSettings::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewHeapTrackingSettings::ViewType() const
-    {
-    return EMemSpyViewTypeHeapTrackingSettings;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingSettings::PrepareParentViewL()
-    {
-    CMemSpyViewHeapTracking* parent = new(ELeave) CMemSpyViewHeapTracking( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewHeapTrackingSettings::PrepareChildViewL()
-    {
-    const TInt index = iListBox->CurrentItemIndex();
-
-    // Get current config
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-
-    // This view abuses the child view callback to toggle field values and/or
-    // display settings dialogs.
-    if  ( index == 0 )
-        {
-        TInt period = config.iTimerPeriod.Int() / 1000000;
-        CAknNumberQueryDialog* dialog = new(ELeave) CAknNumberQueryDialog( period );
-        if  ( dialog->ExecuteLD( R_MEMSPY_HEAP_TRACKER_TIMER_PERIOD ) )
-            {
-            config.iTimerPeriod = period * 1000000;
-            }
-        }
-    else if ( index == 1 )
-        {
-        TInt categories( config.iEnabledCategories );
-        CSWMTCategorySelectionCheckBoxSettingItem* settingItem = new (ELeave) CSWMTCategorySelectionCheckBoxSettingItem( 0, categories );
-        CleanupStack::PushL( settingItem );
-        settingItem->ConstructL( EFalse,
-                                 0,
-                                 _L("SWMT Categories"),
-                                 NULL,
-                                 R_MEMSPYUI_SWMT_CATEGORIES_SETTING_PAGE,
-                                 EAknCtPopupSettingList,
-                                 NULL,
-                                 NULL );
-        
-        CMemSpySWMTCategorySelectionCheckBoxSettingPage* dlg = new(ELeave) CMemSpySWMTCategorySelectionCheckBoxSettingPage( R_MEMSPYUI_SWMT_CATEGORIES_SETTING_PAGE, settingItem->ItemArray() );
-        dlg->SetSettingPageObserver( settingItem );
-        if  ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-            {
-            config.iEnabledCategories = categories;
-            }
-        CleanupStack::PopAndDestroy( settingItem );
-        }
-    else if ( index == 2 )
-        {
-        config.iDumpData = !config.iDumpData;
-        }
-    else if  ( index == 3 )
-        {
-        TName nameFilter;
-        nameFilter.Copy( config.iThreadNameFilter );
-        CMemSpyAllowEmptyDataDialog* dialog = new (ELeave) CMemSpyAllowEmptyDataDialog( nameFilter );
-        if  ( dialog->ExecuteLD( R_MEMSPY_HEAP_TRACKER_NAME_FILTER ) )
-            {
-            config.iThreadNameFilter = nameFilter;
-            }
-        }
-    
-    // Push changes to SWMT
-    swmt.SetConfigL( config );
-    Settings().StoreSettingsL();
-
-    RefreshL();
-    return NULL;
-    }
-
-
-void CMemSpyViewHeapTrackingSettings::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    // Get current config
-    CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    swmt.GetConfig( config );
-
-    // 1st item
-    _LIT( KItem1Format, "\tTracking timer period\t\t%d (sec)" );
-    item.Format( KItem1Format, config.iTimerPeriod.Int() / 1000000 );
-    model->AppendL( item );
-    
-    // 2nd item
-    _LIT( KItem3Format, "\tCategories\t\t%d selected" );
-    item.Format( KItem3Format, config.EnabledCategoryCount() );
-    model->AppendL( item );
-
-    // following items are related only to User Heap category, 
-    // so hide them if User Heap is not selected
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap )
-        {
-        // 3th item
-        _LIT( KItem2Format, "\tDump data" );
-        PrepareItemBufL( item, KItem2Format, config.iDumpData, config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap && config.iThreadNameFilter.Length() > 0 );
-        model->AppendL( item );
-        
-        // 4th item
-        if ( config.iDumpData )
-            {
-            _LIT( KItem4Format, "\tHeap data thread filter\t\t%S" );
-            if ( config.iThreadNameFilter.Length() > 0 )
-                {
-                item.Format( KItem4Format, &config.iThreadNameFilter );
-                }
-            else
-                {
-                item.Format( KItem4Format, &_L("No filtering") );
-                }
-            model->AppendL( item );        
-            }        
-        }
-    
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-void CMemSpyViewHeapTrackingSettings::PrepareItemBufL( TDes& aBuf, const TDesC& aCaption, TBool aStatus, TBool aHeapCategorySelected )
-    {
-    aBuf.Copy( aCaption ); 
-    //
-    if  ( aStatus )
-        {
-        if ( aHeapCategorySelected )
-            {
-            _LIT( KItemEnabled, "\t\tCustom" );
-            aBuf.Append( KItemEnabled );            
-            }
-        else
-            {
-            _LIT( KItemEnabled, "\t\tAll user heaps" );
-            aBuf.Append( KItemEnabled );   
-            }
-        }
-    else
-        {
-        _LIT( KItemDisabled, "\t\tDisabled" );
-        aBuf.Append( KItemDisabled );
-        }
-    }
-
-
-
-
-
-
-
-
-
-// --------------------------------------------------------------------------------------------
-
-CSWMTCategorySelectionCheckBoxSettingItem::CSWMTCategorySelectionCheckBoxSettingItem( TInt aIdentifier, TInt& aCategories ): 
-    CAknSettingItem(aIdentifier), iExtCategories( aCategories ) 
-    {
-    }   
-
-
-CSWMTCategorySelectionCheckBoxSettingItem::~CSWMTCategorySelectionCheckBoxSettingItem()
-    {
-    delete iSettingText;
-    if( iItemArray )
-        {
-        iItemArray->ResetAndDestroy();
-        delete iItemArray;
-        }
-    }
-
-
-CSelectionItemList* CSWMTCategorySelectionCheckBoxSettingItem::ItemArray() const
-    {
-    return iItemArray;
-    }
-
-
-void CSWMTCategorySelectionCheckBoxSettingItem::AddNewItemToArrayL(const TDesC& aLabel)
-    {
-    TBuf<64> buf;
-    buf.Copy( aLabel );    
-    CSelectableItem* item = new (ELeave) CSelectableItem( buf, EFalse );
-    CleanupStack::PushL( item );
-    item->ConstructL();
-    iItemArray->AppendL( item ); // Ownership is transferred
-    CleanupStack::Pop(); // item    
-    }
-    
-
-void CSWMTCategorySelectionCheckBoxSettingItem::CompleteConstructionL()
-    {
-    SetEmptyItemTextL(_L("Nothing selected"));
-    iItemArray = new(ELeave) CSelectionItemList(16);
-    AddNewItemToArrayL( _L("User Heap") );       // 0
-    AddNewItemToArrayL( _L("Kernel Heap") );     // 1
-    AddNewItemToArrayL( _L("User Stacks") );     // 2
-    AddNewItemToArrayL( _L("Global Data") );     // 3
-    AddNewItemToArrayL( _L("Disk Usage") );      // 4
-    AddNewItemToArrayL( _L("Open Files") );      // 5
-    AddNewItemToArrayL( _L("RAM-loaded Code") ); // 6
-    AddNewItemToArrayL( _L("System Memory") );   // 7
-    AddNewItemToArrayL( _L("Local Chunks") );    // 8
-    AddNewItemToArrayL( _L("Global Chunks") );   // 9
-    AddNewItemToArrayL( _L("RAM Drive") );       // 10
-    AddNewItemToArrayL( _L("FileServer Cache") );// 11
-    AddNewItemToArrayL( _L("Kernel Handles") );  // 12
-    AddNewItemToArrayL( _L("Bitmap Handles") );  // 13
-    AddNewItemToArrayL( _L("Window Groups") );   // 14
-    }
-
-
-void CSWMTCategorySelectionCheckBoxSettingItem::StoreL()
-    {
-    iExtCategories = 0;
-    if ( iItemArray->At( 11 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache; 
-    if ( iItemArray->At( 13 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles; 
-    if ( iItemArray->At( 0 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap; 
-    if ( iItemArray->At( 1 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap; 
-    if ( iItemArray->At( 8 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks; 
-    if ( iItemArray->At( 9 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks; 
-    if ( iItemArray->At( 10 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive; 
-    if ( iItemArray->At( 2 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks; 
-    if ( iItemArray->At( 3 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData; 
-    if ( iItemArray->At( 6 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode; 
-    if ( iItemArray->At( 12 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles; 
-    if ( iItemArray->At( 5 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles; 
-    if ( iItemArray->At( 4 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage; 
-    if ( iItemArray->At( 7 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory; 
-    if ( iItemArray->At( 14 )->SelectionStatus() )
-        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups; 
-    }
-
-
-void CSWMTCategorySelectionCheckBoxSettingItem::LoadL()
-    {
-    iItemArray->At( 11 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache );
-    iItemArray->At( 13 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles );
-    iItemArray->At( 0 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap );
-    iItemArray->At( 1 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap );
-    iItemArray->At( 8 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks );
-    iItemArray->At( 9 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks );
-    iItemArray->At( 10 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive );
-    iItemArray->At( 2 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks );
-    iItemArray->At( 3 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData );
-    iItemArray->At( 6 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode );
-    iItemArray->At( 12 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles );
-    iItemArray->At( 5 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles );
-    iItemArray->At( 4 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage );
-    iItemArray->At( 7 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory );
-    iItemArray->At( 14 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups );
-    }
-
-
-void CSWMTCategorySelectionCheckBoxSettingItem::HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType )
-    {
-    switch( aEventType )
-        {
-        case EEventSettingOked:
-            {
-            // If settings oked, save new values
-            StoreL();
-            break;
-            }
-        case EEventSettingCancelled:
-            {
-            // If setting is cancelled, load old values
-            LoadL();
-            break;
-            }
-        case EEventSettingChanged:
-            {
-            // If setting has changed, update CBA visibility
-            static_cast<CMemSpySWMTCategorySelectionCheckBoxSettingPage*>( aSettingPage )->UpdateCba();
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    CAknSettingItem::HandleSettingPageEventL( aSettingPage, aEventType );
-    }
-
-
-CMemSpySWMTCategorySelectionCheckBoxSettingPage::CMemSpySWMTCategorySelectionCheckBoxSettingPage(TInt aResourceID, CSelectionItemList* aItemArray )
-    : CAknCheckBoxSettingPage( aResourceID, aItemArray )
-    {
-    }
-
-
-void CMemSpySWMTCategorySelectionCheckBoxSettingPage::UpdateCba()
-    {
-    // Cache the pointer to button group container
-    CEikButtonGroupContainer* cba = Cba();
-    // Left softkey should be visible if there are items selected,
-    // i.e. the selection index array has items.
-    TBool visible( ListBoxControl()->View()->SelectionIndexes()->Count() > 0 );
-    // Resolve left softkey command id
-    TInt leftId( cba->ButtonGroup()->CommandId( 0 ) );
-    // Check if left softkey visibility has changed
-    if( visible != cba->IsCommandVisible( leftId ) )
-        {
-        // Left softkey visibility has changed, update it
-        cba->MakeCommandVisible( leftId, visible );
-        }
-    }
-
-
-
-
-CMemSpyAllowEmptyDataDialog::CMemSpyAllowEmptyDataDialog( TDes& aText, const TTone& aTone )
-    : CAknTextQueryDialog( aText, aTone )
-    {
-    }
- 
-
-void CMemSpyAllowEmptyDataDialog::UpdateLeftSoftKeyL()
-    {
-    MakeLeftSoftkeyVisible( ETrue );
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewKernel.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +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 "MemSpyViewKernel.h"
-
-// System includes
-#include <hal.h>
-#ifdef __EPOC32__
-#include <e32rom.h>
-#endif
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewKernelHeap.h"
-#include "MemSpyViewKernelContainers.h"
-
-/*
-CMemSpyViewKernel::CMemSpyViewKernel( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-*/
-
-CMemSpyViewKernel::CMemSpyViewKernel( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aSession, aObserver )
-    {
-    }
-
-
-CMemSpyViewKernel::~CMemSpyViewKernel()
-    {
-    }
-
-
-void CMemSpyViewKernel::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Kernel" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    
-    // Make sure the correct item is selected
-    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
-    const TInt index = IndexByViewType( viewType );
-    iListBox->SetCurrentItemIndex( index );
-    HandleListBoxItemSelectedL( index );
-    }
-
-
-void CMemSpyViewKernel::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewKernel::ViewType() const
-    {
-    return EMemSpyViewTypeKernel;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernel::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernel::PrepareChildViewL()
-    {
-	
-    CMemSpyViewBase* child = NULL;
-    const TInt index = iListBox->CurrentItemIndex();
-    //
-    if  ( index == 0 )
-        {        
-		child = new(ELeave) CMemSpyViewKernelContainers( iMemSpySession, iObserver );
-        }
-    else if ( index == 1 )
-        {        
-		child = new(ELeave) CMemSpyViewKernelHeap( iMemSpySession, iObserver );
-        }
-	
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;    
-    }
-
-
-void CMemSpyViewKernel::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    // 1st item = Processes
-    _LIT( KItem1Format, "\tObjects" );
-    item.Format( KItem1Format );
-    model->AppendL( item );
-    
-    // 2nd item = System Config
-    _LIT( KItem2Format, "\tHeap" );
-    model->AppendL( KItem2Format );
-	
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-TInt CMemSpyViewKernel::IndexByViewType( TMemSpyViewType aType )
-    {
-    TInt index = 0;
-    //
-    switch( aType )
-        {
-    default:
-    case EMemSpyViewTypeKernelContainers:
-        index = 0;
-        break;
-        
-    case EMemSpyViewTypeKernelHeap:
-        index = 1;
-        break;
-        }
-        
-    //
-    return index;
-    }
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewKernelContainers.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +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 "MemSpyViewKernelContainers.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperkernelcontainers.h>
-
-#include <memspysession.h>
-#include <memspy/api/memspyapiprocess.h>
-#include <memspy/engine/memspyengineutils.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewKernel.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewKernelObjects.h"
-
-// Literal constants
-
-
-
-CMemSpyViewKernelContainers::CMemSpyViewKernelContainers( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aSession, aObserver )
-    {
-    }
-
-
-CMemSpyViewKernelContainers::~CMemSpyViewKernelContainers()
-    {
-    //delete iModel;
-    }
-
-
-void CMemSpyViewKernelContainers::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Kernel Objects" );
-    SetTitleL( KTitle );
-    //    
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewKernelContainers::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewKernelContainers::ViewType() const
-    {
-    return EMemSpyViewTypeKernelContainers;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelContainers::PrepareParentViewL()
-    {
-    CMemSpyViewKernel* parent = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelContainers::PrepareChildViewL()
-    {	
-    CMemSpyViewBase* child = NULL;
-    const TInt index = iListBox->CurrentItemIndex();
-    //child = new(ELeave) CMemSpyViewKernelObjects( iEngine, iObserver, iModel->At( index ).Type() );
-    child = new(ELeave) CMemSpyViewKernelObjects( iMemSpySession, iObserver, iKernelObjects[index]->Type() );
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;   
-    }
-
-
-void CMemSpyViewKernelContainers::SetListBoxModelL()
-    {	
-	iMemSpySession.GetKernelObjects( iKernelObjects );
-		
-	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iKernelObjects.Count() ); //array for formated items
-	
-	for( TInt i=0 ; i<iKernelObjects.Count() ; i++ )
-		{
-		TInt count = iKernelObjects[i]->Count();
-		TInt size = iKernelObjects[i]->Size();
-		const TMemSpySizeText sizeText( MemSpyUiUtils::FormatSizeText( size, 0 ) );
-								
-		HBufC* tempName = HBufC::NewL( iKernelObjects[i]->Name().Length() + 32 );
-		
-		CleanupStack::PushL( tempName );
-		TPtr tempNamePtr( tempName->Des() );
-		tempNamePtr.Copy( iKernelObjects[i]->Name() );									
-		
-		_LIT(KNameFormat, "\t%S\t\t%d item");
-		TPtr pName( tempName->Des() );
-		//
-		const TPtrC pType( MemSpyUiUtils::TypeAsString( iKernelObjects[i]->Type() ) );
-		//
-		pName.Format( KNameFormat, &pType, count );
-		//
-		if  ( count == 0 || count > 1 )
-			{
-			pName.Append( _L("s") );
-			}
-
-		pName.AppendFormat( _L(", %S"), &sizeText );
-		
-		model->AppendL( pName );
-		
-		CleanupStack::PopAndDestroy( tempName); //---
-		}
-	
-	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );	
-	listbox->Model()->SetItemTextArray( model );
-	listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-TBool CMemSpyViewKernelContainers::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdKernelContainersOutput:
-        OnCmdOutputAllContainerContentsL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewKernelContainers::OnCmdOutputAllContainerContentsL()
-    {
-	iMemSpySession.OutputAllContainerContents();		
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewKernelHeap.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,424 +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 "MemSpyViewKernelHeap.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyengineoutputlist.h>
-
-#include <memspysession.h>
-#include <memspy/api/memspyapiheap.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewKernel.h"
-#include "MemSpyContainerObserver.h"
-
-// Constants
-const TInt KMemSpyBufferSize = 20;
-
-// Literal constants
-_LIT(KMemSpyHexFormat, "0x%08x");
-_LIT(KMemSpyUnsignedFormat, "%u");
-_LIT(KMemSpyDecFormat, "%d");
-_LIT(KMemSpyLongFormat, "%Ld");
-_LIT(KMemSpyCaptionYes, "Yes");
-_LIT(KMemSpyCaptionNo, "No");
-
-
-CMemSpyViewKernelHeap::CMemSpyViewKernelHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver ) //cigasto: remember to uncomment from MMP!
-:   CMemSpyViewBase( aSession, aObserver )
-    {
-    }
-
-CMemSpyViewKernelHeap::~CMemSpyViewKernelHeap()
-    {
-    }
-
-
-void CMemSpyViewKernelHeap::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Kernel Heap" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewKernelHeap::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewKernelHeap::ViewType() const
-    {
-    return EMemSpyViewTypeKernelHeap;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelHeap::PrepareParentViewL()
-    {
-    CMemSpyViewKernel* parent = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelHeap::PrepareChildViewL()
-    {	
-    CMemSpyViewBase* child = NULL;
-    return child;    
-    }
-
-
-void CMemSpyViewKernelHeap::SetListBoxModelL()
-    {	
-	CMemSpyApiHeap* iHeap;
-	iHeap = iMemSpySession.GetHeap( );
-		
-	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( 22 );
-		
-	model = FormatModel( iHeap );	
-				
-	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-	listbox->Model()->SetItemTextArray( model );
-	listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );			
-	}
-
-
-TBool CMemSpyViewKernelHeap::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdKernelHeapDump:
-        OnCmdDumpKernelHeapL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewKernelHeap::OnCmdDumpKernelHeapL()
-    {	
-    iMemSpySession.DumpKernelHeap();
-    }
-
-
-//CDesCArrayFlat* CMemSpyViewKernelHeap::FormatModel( RArray<CMemSpyApiHeap*> &aHeap )
-CDesCArrayFlat* CMemSpyViewKernelHeap::FormatModel( CMemSpyApiHeap* aHeap )
-	{
-	CDesCArrayFlat* ret = new (ELeave) CDesC16ArrayFlat( 2 );
-	
-	 _LIT( KItem0, "Heap type" );		   	  
-	 _LIT( KItem1, "Heap size" );	  
-	 _LIT( KItem8b, "Heap base address" );	        	       
-	 _LIT( KItem1b, "Shared" );	        
-	 _LIT( KItem2, "Chunk size" );
-	 _LIT( KItem3, "Alloc. count" );
-	 _LIT( KItem4, "Free. count" );
-	 _LIT( KItem5, "Biggest alloc." );
-	 _LIT( KItem6, "Biggest free" );
-	 _LIT( KItem6a, "Total alloc." );
-	 _LIT( KItem6b, "Total free" );
-	 _LIT( KItem7, "Slack free space" );
-	 _LIT( KItem8a, "Fragmentation" );
-	 _LIT( KItem13, "Header size (A)" );
-	 _LIT( KItem14, "Header size (F)" );
-	 _LIT( KItem9a, "Overhead (alloc)" );
-	 _LIT( KItem9b, "Overhead (free)" );
-	 _LIT( KItem9c, "Overhead (total)" );
-	 _LIT( KItem9d, "Overhead" );
-	 _LIT( KItem10, "Min. length" );
-	 _LIT( KItem11, "Max. length" );
-	 _LIT( KItem12, "Debug Allocator Library" );
-	 
-	HBufC* iItem = HBufC::NewL( KMaxName );	
-	
-	iItem = FormatItem( KItem0, aHeap->Type() );
-	TPtr pItem( iItem->Des() );
-	ret->AppendL( pItem );
-	pItem.Zero();	
-	
-	iItem = FormatItem( KItem1, aHeap->Size() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();	
-	
-	TUint address( aHeap->BaseAddress() );	
-	iItem = FormatItem( KItem8b, address );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	if(aHeap->Shared()) //Yes / No value formatting		
-		iItem = FormatItem( KItem1b, KMemSpyCaptionYes );		
-	else		
-		iItem = FormatItem( KItem1b, KMemSpyCaptionNo );	
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem2, aHeap->ChunkSize() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem3, aHeap->AllocationsCount() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem4, aHeap->FreeCount() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem5, aHeap->BiggestAllocation() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem6, aHeap->BiggestFree() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem6a, aHeap->TotalAllocations() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem6b, aHeap->TotalFree() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem7, aHeap->SlackFreeSpace() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	TReal iOneHundred( aHeap->Size() );
-	TReal iValue( aHeap->Fragmentation() );	
-	iItem = FormatPercentageItem( KItem8a, iOneHundred, iValue );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem13, aHeap->HeaderSizeA() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem14, aHeap->HeaderSizeF() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem9a, aHeap->AllocationOverhead() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem9b, aHeap->FreeOverhead() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem9c, aHeap->TotalOverhead() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	TReal iOverhead( aHeap->Overhead() );	
-	iItem = FormatPercentageItem( KItem9d, iOneHundred, iOverhead );	
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	iItem = FormatItem( KItem10, aHeap->MinLength() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-		
-	iItem = FormatItem( KItem11, aHeap->MaxLength() );
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	if( aHeap->DebugAllocatorLibrary() )		
-		iItem = FormatItem( KItem12, KMemSpyCaptionYes );		
-	else
-		iItem = FormatItem( KItem12, KMemSpyCaptionNo );	
-	pItem = iItem->Des();
-	ret->AppendL( pItem );
-	pItem.Zero();
-	
-	return ret;
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, const TDesC& aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( aValue );
-	return retBuf;
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TInt aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-    
-	TBuf<KMemSpyBufferSize> val;
-    val.Format( KMemSpyDecFormat, aValue );
-    
-    pRetBuf.Append( _L("\t") );
-    pRetBuf.Append( aCaption );
-    pRetBuf.Append( _L("\t\t") );
-    pRetBuf.Append( val );    
-	
-	return retBuf;
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-    
-	TBuf<KMemSpyBufferSize> val;
-    //val.Format( KMemSpyDecFormat, aValue );
-	val.Format( KMemSpyHexFormat, aValue );
-    
-    pRetBuf.Append( _L("\t") );
-    pRetBuf.Append( aCaption );
-    pRetBuf.Append( _L("\t\t") );
-    pRetBuf.Append( val );    
-	
-	return retBuf;	
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, const TInt64& aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-	    
-	TBuf<KMemSpyBufferSize> val;
-	val.Format( KMemSpyLongFormat, aValue );
-	    
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( val );    
-		
-	return retBuf;	
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TAny* aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-		    
-	TBuf<KMemSpyBufferSize> val;
-	val.Format( KMemSpyHexFormat, aValue );
-		    
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( val );    
-			
-	return retBuf;	
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint* aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-		    
-	TBuf<KMemSpyBufferSize> val;
-	val.Format( KMemSpyHexFormat, aValue );
-		    
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( val );    
-			
-	return retBuf;	
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint8* aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-		    
-	TBuf<KMemSpyBufferSize> val;
-	val.Format( KMemSpyHexFormat, aValue );
-		    
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( val );    
-			
-	return retBuf;	
-	}
-
-HBufC* CMemSpyViewKernelHeap::FormatPercentageItem( const TDesC& aCaption, TReal aOneHundredPercentValue, TReal aValue )
-	{
-	HBufC* retBuf = HBufC::NewL( KMaxName );	//buffer for formatted item
-	TPtr pRetBuf( retBuf->Des() );
-	pRetBuf.Zero();
-	
-    const TReal value = (TInt) (( aValue / aOneHundredPercentValue) * 100.0); // percentage value calculation    
-    _LIT(KPercentFormat, "%3.2f %%");
-    TMemSpyPercentText val;
-    val.Format( KPercentFormat, value );
-    
-	pRetBuf.Append( _L("\t") );
-	pRetBuf.Append( aCaption );
-	pRetBuf.Append( _L("\t\t") );
-	pRetBuf.Append( val );    
-			
-	return retBuf;
-	}
--- a/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,923 +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 "MemSpyViewKernelObjects.h"
-
-// System includes
-#include <eikspane.h>
-#include <aknnavide.h> 
-#include <akntabgrp.h>
-#include <eikclbd.h>
-#include <AknQueryDialog.h>
-#include <aknnotewrappers.h>
-#include <apgwgnam.h>
-#include <aknmessagequerydialog.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperkernelcontainers.h>
-#include <memspy/engine/memspyenginehelperserver.h>
-#include <memspy/engine/memspyenginehelpercondvar.h>
-
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewKernel.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewKernelContainers.h"
-
-const TInt KMaxInfoLength = 128;
-
-/*
-CMemSpyViewKernelObjects::CMemSpyViewKernelObjects( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType )
-:   CMemSpyViewBase( aEngine, aObserver ),
-    iObjectType( aObjectType ),
-    iCurrItemIndex( KErrNotFound )
-    {
-    }
-*/
-CMemSpyViewKernelObjects::CMemSpyViewKernelObjects( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType )
-:   CMemSpyViewBase( aSession, aObserver ),
-    iObjectType( aObjectType ),
-    iCurrItemIndex( KErrNotFound )
-    {
-    }
-
-
-CMemSpyViewKernelObjects::~CMemSpyViewKernelObjects()
-    {
-    if ( iNavContainer && iNavDecorator )
-        {
-        iNavContainer->Pop( iNavDecorator );
-        delete iNavDecorator;
-        }
-    delete iModel;
-    delete iItems;
-    delete iObjectList;
-    }
-
-
-void CMemSpyViewKernelObjects::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Kernel Objects" );
-    SetTitleL( KTitle );
-    iItems = new(ELeave) CDesCArrayFlat(5);
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    CreateTabsL();
-    }
-
-
-CEikListBox* CMemSpyViewKernelObjects::ConstructListBoxL()
-    {
-    delete iListBox;
-    iListBox = NULL;
-    CAknSingleStyleListBox* listbox = new (ELeave) CAknSingleStyleListBox();
-    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 CMemSpyViewKernelObjects::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewKernelObjects::ViewType() const
-    {
-    return EMemSpyViewTypeKernelObjects;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelObjects::PrepareParentViewL()
-    {	
-	if ( iNaviPane && iNavDecorator )
-	   {
-		iNaviPane->Pop( iNavDecorator );
-		delete iNavDecorator;
-		iNavDecorator = NULL;
-	   }	
-    //CMemSpyViewBase* parent = new(ELeave) CMemSpyViewKernelContainers( iEngine, iObserver );
-    CMemSpyViewBase* parent = new(ELeave) CMemSpyViewKernelContainers( iMemSpySession, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewKernelObjects::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    if ( iListBox && 
-         iListBox->Model()->NumberOfItems() && 
-         iListBox->CurrentItemIndex() > KErrNotFound )
-        {
-        DetailsL();
-        }
-    return child;
-    }
-
-
-void CMemSpyViewKernelObjects::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-       {
-       if ( iObjectType > EMemSpyDriverContainerTypeProcess )
-           {
-           // Display Terminate, Switch to, End and Panic
-           // commands only for Threads and processes
-           aMenuPane->SetItemDimmed( EMemSpyCmdKernelObjects, ETrue );
-           }
-        }
-    }
-
-
-void CMemSpyViewKernelObjects::SetListBoxModelL()
-    {
-    //_LIT( KLineFormatSpec, "\t%S" );
-    _LIT( KTab, "\t" );
-       
-    iMemSpySession.GetKernelObjectItems( iKernelObjectItems, iObjectType );
-
-    iModel = new (ELeave) CDesC16ArrayFlat( iKernelObjectItems.Count() ); //array for formated items
-        
-    for ( TInt i = 0; i < iKernelObjectItems.Count(); i++ )
-    	{
-		HBufC* tempName = HBufC::NewL( iKernelObjectItems[i]->Name().Length() + 16 );
-    	CleanupStack::PushL( tempName );
-    	TPtr tempNamePtr( tempName->Des() );
-    	tempNamePtr.Copy( KTab );
-    	
-    	TBuf<KMaxName> temp;
-    	temp.Copy(iKernelObjectItems[i]->Name());    	
-    	tempNamePtr.Append( temp	 );
-    	iModel->AppendL( tempNamePtr );
-    	
-    	CleanupStack::PopAndDestroy( tempName ); 
-    	}
-    
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );       
-    }
-
-
-TBool CMemSpyViewKernelObjects::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-        case EMemSpyCmdKernelObjectTerminate:
-            {
-            TRAPD( err, OnCmdTerminateL() );
-            if ( err )
-                {
-                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
-                note->ExecuteLD( _L("Cannot terminate task") );
-                }
-            break;
-            }
-        case EMemSpyCmdKernelObjectSwitchTo:
-            {
-            TRAPD( err, OnCmdSwitchToL() );
-            if ( err )
-                {
-                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
-                note->ExecuteLD( _L("Cannot bring to foreground") );
-                }
-            break;
-            }
-        case EMemSpyCmdKernelObjectEnd:
-            {
-            TRAPD( err, OnCmdEndL() );
-            if ( err )
-                {
-                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
-                note->ExecuteLD( _L("Cannot end task") );
-                }
-            break;
-            }
-        case EMemSpyCmdKernelObjectPanic:
-            {
-            TRAPD( err, OnCmdPanicL() );
-            if ( err )
-                {
-                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
-                note->ExecuteLD( _L("Cannot panic task") );
-                }
-            break;
-            }
-        default:
-            {
-            handled = CMemSpyViewBase::HandleCommandL( aCommand );
-            break;        
-            }
-        }
-    //
-    return handled;
-    }
-
-
-TKeyResponse CMemSpyViewKernelObjects::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {	
-    TKeyResponse resp = EKeyWasNotConsumed;
-    resp = CMemSpyViewBase::OfferKeyEventL( aKeyEvent, aType );    
-    //}
-    return resp;
-    }
-
-void CMemSpyViewKernelObjects::TabChangedL( TInt /*aIndex*/ )
-    {
-    }
-
-
-void CMemSpyViewKernelObjects::OnCmdTerminateL()
-    {
-    switch ( iObjectType )
-        {
-        case EMemSpyDriverContainerTypeThread:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            
-            //CMemSpyEngineObjectContainer& container = iEngine.Container();
-            //TThreadId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
-            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread
-                        
-            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
-            
-            // Try to find the thread in question...
-            //CMemSpyProcess* process = NULL;
-            //CMemSpyThread* thread = NULL; 
-            //User::LeaveIfError( container.ProcessAndThreadByThreadId( id, process, thread ) ); //
-                        
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-				
-				if ( doTerminate )
-					{
-					iMemSpySession.EndThread( id, ETerminate );
-					RefreshL();
-					}
-            	}            
-            
-            /*
-            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 )
-                    {
-                    thread->TerminateL();
-                    }                
-                }
-            */            
-            break;
-            }        
-        case EMemSpyDriverContainerTypeProcess:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
-            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
-            
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
-                doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                
-                if( doTerminate )
-                	{
-                    iMemSpySession.EndProcess( id, ETerminate );     
-                    RefreshL();
-                    }
-            	}
-            
-            // Obtain the process that corresponds to the selected item
-            /*
-            CMemSpyEngineObjectContainer& container = iEngine.Container();
-            TProcessId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );                                                
-            CMemSpyProcess& process = container.ProcessByIdL( id );
-            process.Open();			
-            						
-            if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
-                {
-                CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-                doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                }
-            //
-            if  ( doTerminate )
-                {
-                process.TerminateL();
-                RefreshL();
-                }*/
-            
-            break;
-            }
-        default:
-            {
-            // Programming error
-            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
-            }
-        }
-    }
-
-
-void CMemSpyViewKernelObjects::OnCmdSwitchToL()
-    {	
-	TBool brought = EFalse;
-	/*
-    TInt wgCount;
-    RWsSession wsSession;
-    User::LeaveIfError( wsSession.Connect() );
-    CleanupClosePushL( wsSession );
-    User::LeaveIfError( wgCount = wsSession.NumWindowGroups() );
-    RArray<RWsSession::TWindowGroupChainInfo> wgArray;
-    CleanupClosePushL( wgArray );
-    User::LeaveIfError( wsSession.WindowGroupList( &wgArray ) );
-    TApaTask task( wsSession );
-    TBool brought( EFalse );
-    TInt wgId( KErrNotFound );
-    TThreadId threadId;
-    */
-    switch ( iObjectType )
-        {    	    	    	
-        case EMemSpyDriverContainerTypeThread:
-            {
-            TThreadId currentThreadId( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
-            TInt error = iMemSpySession.SwitchToThread( currentThreadId, brought );
-            /*
-            TThreadId currentThreadId( iObjectList->At( iListBox->CurrentItemIndex() ).iId );            
-            
-            // loop trough all window groups and see if a thread id matches
-            while( !brought && wgCount-- )
-                {
-                wgId = wgArray[wgCount].iId;
-                User::LeaveIfError( wsSession.GetWindowGroupClientThreadId( wgId, threadId ) );
-                if ( threadId == currentThreadId )
-                    {
-                    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( wsSession, wgId );
-                    task.SetWgId( wgId );
-                    if ( !wgName->Hidden() && task.Exists() )
-                        {
-                        task.BringToForeground();
-                        brought = ETrue;                        
-                        }
-                    CleanupStack::PopAndDestroy( wgName );
-                    }
-                }
-                */                
-            break;
-            }
-        case EMemSpyDriverContainerTypeProcess:
-            {                        
-            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
-            TInt error = iMemSpySession.SwitchToProcess( id, brought  );
-            /*
-            //CMemSpyEngineObjectContainer& container = iEngine.Container();
-            //TProcessId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
-            //CMemSpyProcess& process = container.ProcessByIdL( id );
-            
-            TProcessId id( iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
-            
-            
-            // loop trough threads in a process
-            for ( TInt i = 0; i < process.MdcaCount(); i++ )
-                {
-                TInt wgCountLocal = wgCount;
-                
-                // loop trough all window groups and see if a thread id matches
-                while( !brought && wgCountLocal-- )
-                    {
-                    wgId = wgArray[wgCountLocal].iId;
-                    User::LeaveIfError( wsSession.GetWindowGroupClientThreadId( wgId, threadId ) );
-                    if ( threadId == process.At( i ).Id() )
-                        {
-                        CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( wsSession, wgId );
-                        task.SetWgId( wgId );
-                        if ( !wgName->Hidden() && task.Exists() )
-                            {
-                            task.BringToForeground();
-                            brought = ETrue;                        
-                            }
-                        CleanupStack::PopAndDestroy( wgName );
-                        }
-                    }
-                }
-			*/
-            break;
-            }
-        default:
-            {
-            // Programming error
-            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
-            }
-        }
-    if ( !brought )
-        {
-        // Error handling in HandleCommandL
-        User::Leave( KErrGeneral );
-        }
-    CleanupStack::PopAndDestroy( 2 ); //wgArray,wsSession    
-    }
-
-
-void CMemSpyViewKernelObjects::OnCmdEndL()
-    {
-    switch ( iObjectType )
-        {
-        case EMemSpyDriverContainerTypeThread:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            
-            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread                                   
-            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
-            
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                        				
-				if ( doTerminate )
-					{
-					iMemSpySession.EndThread( id, EKill );
-					RefreshL();
-					}
-            	}            
-
-            
-            /*
-            CMemSpyEngineObjectContainer& container = iEngine.Container();
-            TThreadId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
-            
-            // 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 )
-                    {
-                    thread->KillL();
-                    }                
-                }
-            
-            RefreshL();
-            */
-            break;
-            }
-        case EMemSpyDriverContainerTypeProcess:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
-            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
-            
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
-				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-				
-				if( doTerminate )
-					{
-					iMemSpySession.EndProcess( id, EKill);     
-					RefreshL();
-					}
-            	}
-            
-            /*
-            TBool doTerminate = ETrue;
-            // Obtain the process that corresponds to the selected item
-            CMemSpyEngineObjectContainer& container = iEngine.Container();
-            TProcessId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
-            CMemSpyProcess& process = container.ProcessByIdL( id );
-            process.Open();
-
-            if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
-                {
-                CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-                doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                }
-            if  ( doTerminate )
-                {
-                process.KillL();
-                RefreshL();
-                }
-			*/
-            break;
-            }
-        default:
-            {
-            // Programming error
-            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
-            }
-        }    
-    }
-
-
-void CMemSpyViewKernelObjects::OnCmdPanicL()
-    {
-    switch ( iObjectType )
-        {
-        case EMemSpyDriverContainerTypeThread:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            
-            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread                                   
-            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
-            
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                        				
-				if ( doTerminate )
-					{
-					iMemSpySession.EndThread( id, EPanic );
-					RefreshL();
-					}
-            	}
-            
-            break;
-            }
-        case EMemSpyDriverContainerTypeProcess:
-            {
-            TBool err = EFalse;
-            TBool doTerminate = ETrue;
-            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
-            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
-            
-            if( err )
-            	{
-				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
-				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-                           
-				if( doTerminate )
-					{
-					iMemSpySession.EndProcess( id, EPanic );     
-					RefreshL();
-					}
-            	}
-        
-            break;
-            }
-        default:
-            {
-            // Programming error
-            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
-            }
-        }
-    }
-
-
-void CMemSpyViewKernelObjects::CreateTabsL()
-    {
-	TMemSpyDriverContainerType type = iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Type();
-	const TPtrC pType( MemSpyUiUtils::TypeAsString( type ) );
-	
-	CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
-	TUid uid;
-	uid.iUid = EEikStatusPaneUidNavi;
-	iNaviPane = ( CAknNavigationControlContainer * ) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );	
-	iNavDecorator=iNaviPane->CreateMessageLabelL( pType );
-	iNaviPane->PushL(*iNavDecorator); 		
-    }
-
-
-void CMemSpyViewKernelObjects::DetailsL()
-    {
-    HBufC* messageBuf = HBufC::NewLC( 40960 );
-    TPtr messagePtr = messageBuf->Des();
-
-    //const TMemSpyDriverHandleInfoGeneric& selectedObject = iObjectList->At( iListBox->CurrentItemIndex() );
-    //iKernelObjectItems[iListBox->CurrentItemIndex];
-
-    // General attributes:
-    TFullName name;
-    name.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameDetail() );
-    AppendFormatString( messagePtr, _L("Name: %S\n"), &name );
-    name.Zero();
-    name.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
-    AppendFormatString( messagePtr, _L("FullName: %S\n"), &name );
-    name.Zero();
-    AppendFormatString( messagePtr, _L("AccessCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AccessCount() );
-    AppendFormatString( messagePtr, _L("UniqueID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UniqueID() );
-    AppendFormatString( messagePtr, _L("Protection: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Protection() );
-    AppendFormatString( messagePtr, _L("OwnrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfKernelOwner() );
-    AppendFormatString( messagePtr, _L("KernelAddr: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Handle() );
-    
-    // Object type specific attributes:
-    switch ( iKernelObjectItems[iListBox->CurrentItemIndex()]->Type() )
-        {
-        case EMemSpyDriverContainerTypeUnknown:
-            {
-            break;
-            }
-        case EMemSpyDriverContainerTypeThread:
-            {
-            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
-            AppendFormatString( messagePtr, _L("ThreadID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
-            AppendFormatString( messagePtr, _L("Priority: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Priority() );
-            TFullName procName;
-            procName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Proc: %S"), &procName );
-            procName.Zero();
-            break;
-            }
-        case EMemSpyDriverContainerTypeProcess:
-            {
-            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
-            AppendFormatString( messagePtr, _L("CreatorId: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->CreatorId() );
-            AppendFormatString( messagePtr, _L("Attributes: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Attributes() );
-            AppendFormatString( messagePtr, _L("StckChnk: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfDataBssStackChunk() );
-            AppendFormatString( messagePtr, _L("ProcessID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
-            AppendFormatString( messagePtr, _L("Priority: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Priority() );
-            AppendFormatString( messagePtr, _L("SecurityZone: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->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 EMemSpyDriverContainerTypeChunk:
-            {
-            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
-            AppendFormatString( messagePtr, _L("Size: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Size() );
-            AppendFormatString( messagePtr, _L("MaxSize: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MaxSize() );
-            AppendFormatString( messagePtr, _L("Bottom: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Bottom() );
-            AppendFormatString( messagePtr, _L("Top: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Top() );
-            AppendFormatString( messagePtr, _L("Attr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Attributes() );
-            AppendFormatString( messagePtr, _L("Start: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->StartPos() );
-            AppendFormatString( messagePtr, _L("CntrlID: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ControllingOwner() );
-            AppendFormatString( messagePtr, _L("Restrictions: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Restrictions() );
-            AppendFormatString( messagePtr, _L("MapAttr: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MapAttr() );
-            AppendFormatString( messagePtr, _L("Type: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ChunkType() );
-            TFullName procName;
-            procName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Proc: %S"), &procName );
-            procName.Zero();
-            // OwnerAddr iAddressOfKernelOwner already listed
-            // ProcAddr iAddressOfOwningProcess already listed
-            break;
-            }
-        case EMemSpyDriverContainerTypeLibrary:
-            {
-            AppendFormatString( messagePtr, _L("\nMapCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MapCount() );
-            AppendFormatString( messagePtr, _L("State: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->State() );
-            AppendFormatString( messagePtr, _L("CodeSeg: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfCodeSeg() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeSemaphore:
-            {
-            AppendFormatString( messagePtr, _L("\nCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Count() );
-            AppendFormatString( messagePtr, _L("Resetting: %u"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeMutex:
-            {
-            AppendFormatString( messagePtr, _L("\nHoldCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Count() );
-            AppendFormatString( messagePtr, _L("WaitCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->WaitCount() );
-            AppendFormatString( messagePtr, _L("Resetting: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
-            AppendFormatString( messagePtr, _L("Order: %u"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Order() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeTimer:
-            {
-            AppendFormatString( messagePtr, _L("\nState: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TimerState() );
-            AppendFormatString( messagePtr, _L("Type: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TimerType() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeServer:
-            {
-            // Owner == ThrdAddr
-            AppendFormatString( messagePtr, _L("\nThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
-            TFullName thrName;
-            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Thr: %S\n"), &thrName );
-            thrName.Zero();
-            AppendFormatString( messagePtr, _L("Type: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SessionType() );
-            TBuf8<55>buf;
-            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 EMemSpyDriverContainerTypeSession:
-            {
-            // Server == SvrAddr
-            AppendFormatString( messagePtr, _L("\nServer: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfServer() );
-            TFullName srvName;
-            srvName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
-            AppendFormatString( messagePtr, _L("Srv: %S\n"), &srvName );
-            srvName.Zero();
-            // Session: not supported
-            AppendFormatString( messagePtr, _L("AccCount: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TotalAccessCount() );
-            AppendFormatString( messagePtr, _L("SesType: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SessionType() );
-            AppendFormatString( messagePtr, _L("SvrType: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SvrSessionType() );
-            AppendFormatString( messagePtr, _L("MsgCount: %d\n"),  iKernelObjectItems[iListBox->CurrentItemIndex()]->MsgCount() );
-            AppendFormatString( messagePtr, _L("MsgLimit: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MsgLimit() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeLogicalDevice:
-            {
-            AppendFormatString( messagePtr, 
-                                _L("\nVersion: %d.%d.%d\n"), 
-                                /*
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iMajor, TODO: To solve this
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iMinor,
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iBuild );
-                                */
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version() );
-            AppendFormatString( messagePtr, _L("ParseMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ParseMask() );
-            AppendFormatString( messagePtr, _L("UnitsMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UnitsMask() );
-            AppendFormatString( messagePtr, _L("Open channels: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->OpenChannels() );
-            break;
-            }
-        case EMemSpyDriverContainerTypePhysicalDevice:
-            {
-            AppendFormatString( messagePtr, 
-                                _L("\nVersion: %d.%d.%d\n"), 
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
-                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version() );
-            AppendFormatString( messagePtr, _L("UnitsMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UnitsMask() );
-            AppendFormatString( messagePtr, _L("CodeSeg: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfCodeSeg() );
-            break;
-            }
-        case EMemSpyDriverContainerTypeLogicalChannel:
-            {
-            // No other details
-            break;
-            }
-        case EMemSpyDriverContainerTypeChangeNotifier:
-            {
-            AppendFormatString( messagePtr, _L("\nChanges: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Changes() );
-            // Thread == ThrdAddr
-            AppendFormatString( messagePtr, _L("ThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
-            TFullName thrName;
-            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Thr: %S"), &thrName );
-            thrName.Zero();
-            break;
-            }
-        case EMemSpyDriverContainerTypeUndertaker:
-            {
-            // Thread == ThrdAddr
-            AppendFormatString( messagePtr, _L("\nThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
-            TFullName thrName;
-            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Thr: %S"), &thrName );
-            thrName.Zero();
-            break;
-            }
-        case EMemSpyDriverContainerTypeMsgQueue:
-            {
-            // No other details
-            break;
-            }
-        case EMemSpyDriverContainerTypePropertyRef:
-            {
-            /*
-            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 EMemSpyDriverContainerTypeCondVar:
-            {
-            AppendFormatString( messagePtr, _L("\nResetting: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
-            // Using iAddressOfOwningThread for mutex
-            AppendFormatString( messagePtr, _L("Mutex: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
-            // Using iNameOfOwner for mutex
-            TFullName mtxName;
-            mtxName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
-            AppendFormatString( messagePtr, _L("Mtx: %S\n"), &mtxName );
-            mtxName.Zero();
-            AppendFormatString( messagePtr, _L("WaitCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->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 ) );
-            }
-        }
-    
-    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog( CAknQueryDialog::ENoTone );
-    dialog->PrepareLC( R_MEMSPY_KERNEL_OBJECT_DETAILS_DIALOG );
-    TFileName headerText;
-    headerText.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
-    dialog->SetHeaderTextL( headerText );
-    dialog->SetMessageTextL(messagePtr);
-    dialog->RunLD();
-    CleanupStack::PopAndDestroy( messageBuf );
-    }
-
-
-void CMemSpyViewKernelObjects::AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... )
-    {
-    TBuf<KMaxInfoLength> infoString;
-    VA_LIST list;
-    VA_START ( list, aFmt );
-    infoString.FormatList( aFmt, list );
-    aPtr.Append( infoString );
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyViewMainMenu.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +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 "MemSpyViewMainMenu.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewProcesses.h"
-#include "MemSpyViewRAMInfo.h"
-#include "MemSpyViewROMInfo.h"
-#include "MemSpyViewServerList.h"
-#include "MemSpyViewOpenFiles.h"
-#include "MemSpyViewFBServBitmaps.h"
-#include "MemSpyViewSystemConfig.h"
-#include "MemSpyViewCodeSegList.h"
-#include "MemSpyViewChunkList.h"
-#include "MemSpyViewKernel.h"
-#include "MemSpyViewHeapTracking.h"
-#include "MemSpyViewDriveInfo.h"
-#include "MemSpyViewECom.h"
-#include "MemSpyViewMemoryTrackingAutoStartConfig.h"
-#include "MemSpyViewWindowGroups.h"
-
-// System includes
-#include <aknnotewrappers.h>
-
-/*
-CMemSpyViewMainMenu::CMemSpyViewMainMenu( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-*/
-CMemSpyViewMainMenu::CMemSpyViewMainMenu( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aSession, aObserver )
-    {
-    }
-
-void CMemSpyViewMainMenu::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "MemSpy" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    
-    // Make sure the correct item is selected
-    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
-    const TInt index = IndexByViewType( viewType );
-    iListBox->SetCurrentItemIndex( index );
-    HandleListBoxItemSelectedL( index );
-    }
-
-
-void CMemSpyViewMainMenu::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewMainMenu::ViewType() const
-    {
-    return EMemSpyViewTypeMainMenu;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewMainMenu::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    const TInt index = iListBox->CurrentItemIndex();
-    
-#ifdef __WINS__
-    // threads & process view is not supported in the emulator environment    
-    if  ( index == 0 )
-        {
-        CAknInformationNote* note = new (ELeave) CAknInformationNote;
-        note->ExecuteLD(_L("Not supported in the emulator, try Kernel -> Objects view"));
-        return NULL;
-        }
-#endif
-
-    if  ( index == 0 )
-        {
-        child = new(ELeave) CMemSpyViewProcesses( iMemSpySession, iObserver );		
-        }
-    else if ( index == 1 )
-        {
-        //child = new(ELeave) CMemSpyViewRAMInfo( iEngine, iObserver );
-		child = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
-        }
-    /*
-    else if ( index == 2 )
-        {
-        child = new(ELeave) CMemSpyViewROMInfo( iEngine, iObserver );
-        }
-    else if ( index == 3 )
-        {
-        child = new(ELeave) CMemSpyViewFBServBitmaps( iEngine, iObserver );
-        }
-    else if ( index == 4 )
-        {
-        child = new(ELeave) CMemSpyViewServerList( iEngine, iObserver );
-        }
-    else if ( index == 5 )
-        {
-        child = new(ELeave) CMemSpyViewChunkList( iEngine, iObserver );
-        }
-    else if ( index == 6 )
-        {
-        child = new(ELeave) CMemSpyViewCodeSegList( iEngine, iObserver );
-        }
-    else if ( index == 7 )
-        {
-        child = new(ELeave) CMemSpyViewOpenFiles( iEngine, iObserver );
-        }
-    else if ( index == 8 )
-        {
-        child = new(ELeave) CMemSpyViewSystemConfig( iEngine, iObserver );
-        }    
-    else if ( index == 9 )
-        {
-        child = new(ELeave) CMemSpyViewKernel( iEngine, iObserver );		       
-        }    
-    else if ( index == 10 )
-        {
-        child = new(ELeave) CMemSpyViewHeapTracking( iEngine, iObserver );
-        }
-    */
-    /*else if ( index == 11 )
-        {
-        child = new(ELeave) CMemSpyViewMemoryTrackingAutoStartConfig( iEngine, iObserver );
-        }
-    else if ( index == 12 )
-        {
-        child = new(ELeave) CMemSpyViewDriveList( iEngine, iObserver );
-        }
-    else if ( index == 13 )
-        {
-        child = new(ELeave) CMemSpyViewECom( iEngine, iObserver );
-        }
-    else if ( index == 14 )
-        {
-        child = new(ELeave) CMemSpyViewWindowGroups( iEngine, iObserver );
-        }
-        */
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-void CMemSpyViewMainMenu::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    
-    // 1st item = Processes
-    _LIT(KItem1Format, "\tProcesses & Threads");
-    item.Format( KItem1Format );
-    model->AppendL( item );
-
-    //some main view items temporary removed
-    /*
-    // 2nd item = RAM info
-    _LIT(KItem2Format, "\tRAM Info");
-    model->AppendL( KItem2Format );
-
-    // 3rd item = ROM info
-    _LIT(KItem3Format, "\tROM Info");
-    model->AppendL( KItem3Format );
-
-    // 4th item = FBServ Bitmaps
-    _LIT(KItem4Format, "\tFont & Bitmap\nServer");
-    model->AppendL( KItem4Format );
-
-    // 5th item = Servers
-    _LIT(KItem5Format, "\tServers");
-    item.Format( KItem5Format);
-    model->AppendL( item );
-
-    // 6th item = Chunks
-    _LIT(KItem6Format, "\tChunks");
-    model->AppendL( KItem6Format );
-
-    // 7th item = Code Segments
-    _LIT(KItem7Format, "\tCode Segments");
-    model->AppendL( KItem7Format );
-
-    // 8th item = Open Files
-    _LIT(KItem8Format, "\tOpen Files");
-    model->AppendL( KItem8Format );
-
-    // 9th item = System Config
-    _LIT(KItem9Format, "\tSystem\nConfiguration");
-    model->AppendL( KItem9Format );
-	*/
-    
-    // 10th item = Kernel
-    _LIT(KItem2Format, "\tKernel");
-    model->AppendL( KItem2Format );
-    /*
-    // 11th item = Heap Tracking
-    _LIT(KItem11Format, "\tSystem-Wide Memory Tracking");
-    model->AppendL( KItem11Format );
-    */
-    /*
-    // 12th item = Process-specific Tracking
-    _LIT(KItem12Format, "\tProcess-Specific Memory Tracking");
-    model->AppendL( KItem12Format );
-
-    // 13th item = Drive Info
-    _LIT(KItem13Format, "\tDrive Summary");
-    model->AppendL( KItem13Format );
-
-    // 14th item = ECOM
-    _LIT(KItem14Format, "\tECom");
-    model->AppendL( KItem14Format );
-
-    // 15th item = Window Groups
-    _LIT(KItem15Format, "\tWindow Groups");
-    model->AppendL( KItem15Format );
-    */
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-TInt CMemSpyViewMainMenu::IndexByViewType( TMemSpyViewType aType )
-    {
-    TInt index = 0;
-    //
-    switch( aType )
-        {
-    default:
-    	
-    case EMemSpyViewTypeProcesses:
-        index = 0;
-        break;
-/*  case EMemSpyViewTypeRAMInfo:
-        index = 1;
-        break;
-    case EMemSpyViewTypeROMInfo:
-        index = 2;
-        break;
-    case EMemSpyViewTypeFBServBitmaps:
-        index = 3;
-        break;
-    case EMemSpyViewTypeServerList:
-        index = 4;
-        break;
-    case EMemSpyViewTypeChunkList:
-        index = 5;
-        break;
-    case EMemSpyViewTypeCodeSegmentList:
-        index = 6;
-        break;
-    case EMemSpyViewTypeOpenFiles:
-        index = 7;
-        break;
-    case EMemSpyViewTypeSystemConfig:
-        index = 8;
-        break;*/  
-        
-    case EMemSpyViewTypeKernel:
-        index = 1 ;
-        break;
-    /*
-    case EMemSpyViewTypeHeapTracking:
-        index = 10;
-        break;
-        */
-    /*case EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig:
-        index = 11;
-        break;
-    case EMemSpyViewTypeDriveSummary:
-        index = 12;
-        break;
-    case EMemSpyViewTypeECom:
-        index = 13;
-        break;
-    case EMemSpyViewTypeWindowGroups:
-        index = 14;
-        break;*/        
-        }
-    //
-    return index;
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyViewMemoryTrackingAutoStartConfig.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,570 +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 "MemSpyViewMemoryTrackingAutoStartConfig.h"
-
-// System includes
-#include <AknQueryDialog.h>
-#include <charconv.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyengineprocessmemorytracker.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-// Literal constants
-_LIT8( KMemSpyProcessMemoryTrackerXmlFileMimeType, "text/xml" );
-_LIT8( KMemSpyXmlSpec_MasterSection, "memspy_process_memory_tracking" );
-_LIT8( KMemSpyXmlSpec_EntryProcess, "process" );
-_LIT8( KMemSpyXmlSpec_EntryProcess_SID, "sid" );
-_LIT8( KMemSpyXmlSpec_HexPrefix, "0x" );
-
-
-
-CMemSpyViewMemoryTrackingAutoStartConfig::CMemSpyViewMemoryTrackingAutoStartConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewMemoryTrackingAutoStartConfig::~CMemSpyViewMemoryTrackingAutoStartConfig()
-    {
-    iProcessUids.Close();
-    //
-    delete iParser;
-    delete iConverter;
-    //
-    delete iXMLFileNameInstallTime;
-    delete iXMLFileNameUserSupplied;
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    // We only convert from UTF-8 to UTF-16
-	iParser = CParser::NewL( KMemSpyProcessMemoryTrackerXmlFileMimeType, *this );
-    iConverter = CCnvCharacterSetConverter::NewL();
-    if  ( iConverter->PrepareToConvertToOrFromL( KCharacterSetIdentifierUtf8, iEngine.FsSession() ) == CCnvCharacterSetConverter::ENotAvailable )
-	    {
-		User::Leave(KErrNotFound);
-		}
-
-    // Search for standard files
-    FindXmlInstallTimeL();
-    FindXmlUserSuppliedL();
-
-    // Copy items to our own temporary list...
-    const RArray<TUid>& list = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList();
-    for( TInt i=0; i<list.Count(); i++ )
-        {
-        User::LeaveIfError( iProcessUids.Append( list[ i ] ) );
-        }
-
-    // Reset the title
-    _LIT( KCustomTitle, "Process-Specific Memory Tracking" );
-    SetTitleL( KCustomTitle );
-    }
-
-
-TMemSpyViewType CMemSpyViewMemoryTrackingAutoStartConfig::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewMemoryTrackingAutoStartConfig::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-
-    return parent;
-    }
-
-
-TBool CMemSpyViewMemoryTrackingAutoStartConfig::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdMemoryTrackingAutoStartItemAdd:
-        OnCmdItemAddL();
-        break;
-    case EMemSpyCmdMemoryTrackingAutoStartItemEdit:
-        OnCmdItemEditL();
-        break;
-    case EMemSpyCmdMemoryTrackingAutoStartItemDelete:
-        OnCmdItemDeleteL();
-        break;
-    case EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll:
-        OnCmdItemDeleteAllL();
-        break;
-    case EMemSpyCmdMemoryTrackingAutoStartItemImport:
-        OnCmdItemImportL();
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    OnCmdItemEditL();
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<128> buf;
-    _LIT( KProcUidFormatSpec, "\t0x%08x" );
-
-    const TInt count = iProcessUids.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const TUid procUid = iProcessUids[ i ];
-        //
-        buf.Format( KProcUidFormatSpec, procUid.iUid );
-        model->AppendL( buf );
-        }
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    iListBox->HandleItemAdditionL();
-    iListBox->DrawDeferred();
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == MenuCascadeResourceId() )
-        {
-        const TInt count = iProcessUids.Count();
-        const TInt index = iListBox->CurrentItemIndex();
-
-        // We cannot edit an item if none exists
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemEdit, ( count == 0 || index < 0 || index > count - 1 ) );
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemDelete, ( count == 0 || index < 0 || index > count - 1 ) );
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll, ( count <= 1 || index > count - 1 ) );
-
-        // We can only import items if an XML file is available
-        const TBool xmlAvailable = ( iXMLFileNameInstallTime->Length() || iXMLFileNameUserSupplied->Length() );
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemImport, !xmlAvailable );
-        }
-    }
-
-
-TUint CMemSpyViewMemoryTrackingAutoStartConfig::MenuCascadeResourceId() const
-    {
-    return R_MEMSPY_MENUPANE_MEMORY_TRACKING_AUTOSTART;
-    }
-
-
-TInt CMemSpyViewMemoryTrackingAutoStartConfig::MenuCascadeCommandId() const
-    {
-    return EMemSpyCmdMemoryTrackingAutoStart;
-    }
-   
-    
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemAddL()
-    {
-    const TUid uid = ShowDialogL( KNullUid );
-    if ( uid != KNullUid )
-        {
-        User::LeaveIfError( iProcessUids.Append( uid ) );
-        SaveChangesL();
-        RefreshL();
-        iListBox->HandleItemAdditionL();
-        iListBox->DrawDeferred();
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemEditL()
-    {
-    const TInt index = iListBox->CurrentItemIndex();
-    if ( index >= 0 && index < iProcessUids.Count() )
-        {
-        TUid processUid = iProcessUids[ index ];
-        processUid = ShowDialogL( processUid );
-        //
-        if ( processUid != KNullUid )
-            {
-            iProcessUids[ index ] = processUid;
-            SaveChangesL();
-            RefreshL();
-            iListBox->HandleItemAdditionL();
-            iListBox->DrawDeferred();
-            }
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemDeleteL()
-    {
-    const TInt index = iListBox->CurrentItemIndex();
-    if ( index >= 0 && index < iProcessUids.Count() )
-        {
-        iProcessUids.Remove( index );
-        SaveChangesL();
-        RefreshL();
-        iListBox->HandleItemRemovalL();
-        iListBox->DrawDeferred();
-        
-        const TInt newIndex = index - 1;
-        const TInt count = iProcessUids.Count();
-        if ( newIndex >=0 && newIndex < count )
-            {
-            iListBox->SetCurrentItemIndex( index );
-            }
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemDeleteAllL()
-    {
-    iProcessUids.Reset();
-    SaveChangesL();
-    RefreshL();
-    iListBox->HandleItemRemovalL();
-    iListBox->DrawDeferred();
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemImportL()
-    {
-    if  ( iXMLFileNameInstallTime->Length() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        if  ( importDialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_IMPORT_FROM_INSTALLED_XML_DIALOG ) )
-            {
-            TRAP_IGNORE( ParseL( *iXMLFileNameInstallTime ) );
-            }
-        }
-    if  ( iXMLFileNameUserSupplied->Length() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        if  ( importDialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_IMPORT_FROM_USERDEFINED_XML_DIALOG ) )
-            {
-            TRAP_IGNORE( ParseL( *iXMLFileNameUserSupplied ) );
-            }
-        }
-
-    SaveChangesL();
-    RefreshL();
-    iListBox->HandleItemRemovalL();
-    iListBox->DrawDeferred();
-    }
-
-
-TUid CMemSpyViewMemoryTrackingAutoStartConfig::ShowDialogL( TUid aUid )
-    {
-    TUid uid = KNullUid;
-    //
-    _LIT( KProcessUidFormat, "%x" );
-    TBuf<128> buf;
-    buf.Format( KProcessUidFormat, aUid );
-    //
-    CAknTextQueryDialog* dialog = new(ELeave) CAknTextQueryDialog( buf );
-    const TBool dialogActioned = ( dialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_PROCESS_UID_DIALOG ) );
-    //
-    if ( dialogActioned )
-        {
-        // Validate the text
-        uid = ValidateProcessUid( buf );
-        }
-    //
-    return uid;
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::SaveChangesL()
-    {
-    iEngine.HelperProcess().SetMemoryTrackingAutoStartProcessListL( iProcessUids );
-    Settings().StoreSettingsL();
-    }
-
-
-TUid CMemSpyViewMemoryTrackingAutoStartConfig::ValidateProcessUid( const TDesC& aUid )
-    {
-    TUid ret = KNullUid;
-    TBool isValid = ETrue;
-    //
-    const TInt length = aUid.Length();
-    for( TInt i=0; i<length && isValid; i++ )
-        {
-        const TChar charValue = aUid[ i ];
-        //
-        switch( charValue )
-            {
-        case '0':
-        case '1':
-        case '2':
-        case '3':
-        case '4':
-        case '5':
-        case '6':
-        case '7':
-        case '8':
-        case '9':
-        case 'a':
-        case 'A':
-        case 'b':
-        case 'B':
-        case 'c':
-        case 'C':
-        case 'd':
-        case 'D':
-        case 'e':
-        case 'E':
-        case 'f':
-        case 'F':
-            break;
-        default:
-            isValid = EFalse;
-            break;
-            }
-        }
-    //
-    if ( isValid )
-        {
-        TUint32 val = 0;
-        TLex lexer( aUid );
-        if ( lexer.Val( val, EHex ) == KErrNone )
-            {
-            ret.iUid = val;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlInstallTimeL()
-    {
-    RFs& fsSession = iEngine.FsSession();
-    //
-    TFileName* fileName = new(ELeave) TFileName();
-    CleanupStack::PushL( fileName );
-    //
-    fsSession.PrivatePath( *fileName );
-    //
-    TFindFile findFile( fsSession );
-    if  ( findFile.FindByPath( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, fileName ) == KErrNone )
-        {
-        iXMLFileNameInstallTime = findFile.File().AllocL();
-        }
-    else
-        {
-        iXMLFileNameInstallTime = KNullDesC().AllocL();
-        RDebug::Print( _L("CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlInstallTimeL() - NO FILE FOUND") );
-        }
-    //
-    CleanupStack::PopAndDestroy( fileName );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlUserSuppliedL()
-    {
-    TFindFile findFile( iEngine.FsSession() );
-    if  ( findFile.FindByPath( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, &KMemSpyProcessMemoryTrackingAutoStartConfigSearchPath ) == KErrNone )
-        {
-        iXMLFileNameUserSupplied = findFile.File().AllocL();
-        }
-    else
-        {
-        iXMLFileNameUserSupplied = KNullDesC().AllocL();
-        RDebug::Print( _L("CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlUserSuppliedL() - NO FILE FOUND") );
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::ParseL( const TDesC& aFileName )
-    {
-	Xml::ParseL( *iParser, iEngine.FsSession(), aFileName );
-    //
-    const TInt error = iParserErrorCode;
-    iParserErrorCode = KErrNone;
-    //
-	User::LeaveIfError( error );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnSectionProcessL( const RAttributeArray& aAttributes )
-    {
-    TUid uid = KNullUid;
-    TBool gotSID = EFalse;
-    //
-    const TInt count = aAttributes.Count();
-	for( TInt i=0; i<count; i++ )
-		{
-		const TPtrC8 attrib( aAttributes[ i ].Attribute().LocalName().DesC() );
-		const TPtrC8 value( aAttributes[ i ].Value().DesC() );
-        //
-		if  ( attrib.CompareF( KMemSpyXmlSpec_EntryProcess_SID ) == 0 )
-			{
-            if  ( gotSID )
-                {
-                User::LeaveIfError( KErrCorrupt );
-                }
-            else
-                {
-                if  ( value.Length() >= 8 )
-                    {
-                    TRadix radix = EDecimal;
-                    TPtrC8 pValue( value );
-                    //
-                    if  ( value.Length() == 10 && value.Left( 2 ) == KMemSpyXmlSpec_HexPrefix )
-                        {
-                        pValue.Set( value.Mid( 2 ) );
-                        radix = EHex;
-                        }
-                    //
-                    TUint32 uidVal = 0;
-                    TLex8 lexer( pValue );
-                    const TInt err = lexer.Val( uidVal, radix );
-                    User::LeaveIfError( err );
-                    uid.iUid = uidVal;
-                    gotSID = ETrue;
-                    }
-                }
-			}
-        }
-    //
-    if  ( gotSID )
-        {
-        User::LeaveIfError( iProcessUids.Append( uid ) );
-        }
-    else
-        {
-        User::Leave( KErrCorrupt );
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartDocumentL( const RDocumentParameters& /*aDocParam*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndDocumentL( TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartElementL( const RTagInfo& aElement, const RAttributeArray& aAttributes, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    //
-	const TPtrC8 name( aElement.LocalName().DesC() );
-    //
-    if  ( name.CompareF( KMemSpyXmlSpec_MasterSection ) == 0 )
-		{
-		iSeenMasterSection = ETrue;
-		}
-    else if ( iSeenMasterSection && name.CompareF( KMemSpyXmlSpec_EntryProcess ) == 0 )
-        {
-        OnSectionProcessL( aAttributes );
-        }
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndElementL( const RTagInfo& /*aElement*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnContentL( const TDesC8& /*aBytes*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartPrefixMappingL( const RString& /*aPrefix*/, const RString& /*aUri*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndPrefixMappingL( const RString& /*aPrefix*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnIgnorableWhiteSpaceL( const TDesC8& /*aBytes*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnSkippedEntityL( const RString& /*aName*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnProcessingInstructionL( const TDesC8& /*aTarget*/, const TDesC8& /*aData*/, TInt aErrorCode )
-    {
-    User::LeaveIfError( aErrorCode );
-    }
-
-
-void CMemSpyViewMemoryTrackingAutoStartConfig::OnError( TInt aErrorCode )
-    {
-    iParserErrorCode = aErrorCode;
-    }
-
-
-TAny* CMemSpyViewMemoryTrackingAutoStartConfig::GetExtendedInterface( const TInt32 /*aUid*/ )
-    {
-    return NULL;
-    }
-
--- a/memspyui/ui/avkon/src/MemSpyViewOpenFiles.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +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 "MemSpyViewOpenFiles.h"
-
-// System includes
-#include <AknIconArray.h>
-#include <eikdef.h>
-#include <eikclbd.h>
-#include <aknconsts.h>
-#include <gulicon.h>
-#include <avkon.mbg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-
-
-
-CMemSpyViewOpenFiles::CMemSpyViewOpenFiles( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewOpenFiles::~CMemSpyViewOpenFiles()
-    {
-    iThreadIds.Close();
-    iFileNames.Close();
-    }
-
-
-void CMemSpyViewOpenFiles::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Open Files" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-CEikListBox* CMemSpyViewOpenFiles::ConstructListBoxL()
-    {
-    delete iListBox;
-    iListBox = NULL;
-    CAknDoubleGraphicStyleListBox* listbox = new (ELeave) CAknDoubleGraphicStyleListBox();
-    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->SetObserver( this );
-
-    // Create icon array
-    CAknIconArray* iconArray = new (ELeave) CAknIconArray(1);
-    CleanupStack::PushL( iconArray );
-
-    // Create bitmap
-    CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
-    CleanupStack::PushL( bitmap );
-    const TInt error1 = bitmap->Create( TSize(10,10), EColor16M );
-    User::LeaveIfError( error1 );
-
-    // Create mask
-    CFbsBitmap* mask = new(ELeave) CFbsBitmap();
-    CleanupStack::PushL( mask );
-    const TInt error2 = mask->Create( TSize(10,10), EColor16M );
-    User::LeaveIfError( error2 );
-
-    // Create icon & transfer bitmap
-    CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
-    CleanupStack::Pop( 2, bitmap );
-    CleanupStack::PushL( icon );
-
-    // Transfer icon to array
-    iconArray->AppendL( icon );
-    CleanupStack::Pop( icon );
-    
-    // Give icon array to listbox
-    static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->FormattedCellData()->SetIconArrayL(iconArray);
-    CleanupStack::Pop( iconArray );
-    //
-    return listbox;
-    }
-
-
-void CMemSpyViewOpenFiles::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewOpenFiles::ViewType() const
-    {
-    return EMemSpyViewTypeOpenFiles;
-    }
-
-
-TBool CMemSpyViewOpenFiles::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-	case EMemSpyCmdToolsListOpenFiles:
-        OnCmdListOpenFilesL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewOpenFiles::OnCmdListOpenFilesL()
-    {
-    iEngine.ListOpenFilesL();
-    }
-
-
-CMemSpyViewBase* CMemSpyViewOpenFiles::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewOpenFiles::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-
-    // First, try to find the selected thread
-    if  ( iActionedThreadId )
-        {
-        // Try to create a view of the thread in question
-        CMemSpyProcess* process = NULL;
-        CMemSpyThread* thread = NULL;
-        const TInt error = iEngine.Container().ProcessAndThreadByThreadId( *iActionedThreadId, process, thread );
-        if  ( error == KErrNone && thread != NULL )
-            {
-            child = new(ELeave) CMemSpyViewThreads( iEngine, iObserver, thread->Process() );
-            CleanupStack::PushL( child );
-            child->ConstructL( Rect(), *Parent(), thread );
-            CleanupStack::Pop( child );
-            }
-        }
-    //
-    return child;
-    }
-
-
-void CMemSpyViewOpenFiles::SetListBoxModelL()
-    {
-    _LIT(KLineFormatSpec, "%d\t%S\t%S %S");
-
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 50> item;
-    TMemSpySizeText valueBuf;
-    TBuf<64> timeBuf;
-
-    iFileNames.Reset();
-    iThreadIds.Reset();
-    iActionedThreadId = NULL;
-
-    RFs& fsSession = iCoeEnv->FsSession();
-    TOpenFileScan scanner( fsSession );
-
-    CFileList* list = NULL;
-    scanner.NextL( list );
-
-    TIdentityRelation<TEntry> comparer( CompareTEntryObjects );
-
-    while( list != NULL )
-        {
-        CleanupStack::PushL( list );
-    
-        const TInt entryCount = list->Count();
-        for(TInt i=0; i<entryCount; i++)
-            {
-            const TEntry& entry = (*list)[ i ];
-
-            // Check for duplicates
-            const TInt foundIndex = iFileNames.Find( entry, comparer );
-            if  ( foundIndex == KErrNotFound )
-                {
-                // Get time and size format strings
-                valueBuf = MemSpyUiUtils::FormatSizeText( entry.iSize );
-                MemSpyUiUtils::FormatTimeL( timeBuf, entry.iModified );
-
-                // Get just file name
-                TParsePtrC parser( entry.iName );
-                const TPtrC pJustName( parser.NameAndExt() );
-
-                // Create item 
-                item.Format( KLineFormatSpec, 0, &pJustName, &valueBuf, &timeBuf );
-                model->AppendL( item );
-                iThreadIds.AppendL( scanner.ThreadId() );
-                iFileNames.AppendL( entry );
-                }
-            }
-
-        CleanupStack::PopAndDestroy( list );
-        list = NULL;
-        scanner.NextL( list );
-        }
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-void CMemSpyViewOpenFiles::HandleListBoxItemActionedL( TInt aCurrentIndex )
-    {
-    if  ( aCurrentIndex >= 0 && aCurrentIndex < iThreadIds.Count() )
-        {
-        iActionedThreadId = &iThreadIds[ aCurrentIndex ];
-        }
-    else
-        {
-        iActionedThreadId = NULL;
-        }
-
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-TBool CMemSpyViewOpenFiles::CompareTEntryObjects( const TEntry& aLeft, const TEntry& aRight )
-    {
-    return ( aLeft.iName.CompareF( aRight.iName ) == 0 );
-    }
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,687 +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 "MemSpyViewProcesses.h"
-
-// System includes
-#include <aknsfld.h>
-#include <AknQueryDialog.h>
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspysession.h>
-#include <memspy/engine/memspyengineutils.h>
-
-// User includes
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-#include "MemSpyUiUtils.h"
-
-// Constants
-const TInt KMemSpyMaxSearchTextLength = 30;
-const TInt KMemSpyMaxSearchTextLengthWithWildcards = KMemSpyMaxSearchTextLength + 4;
-
-
-CMemSpyViewProcesses::CMemSpyViewProcesses( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aSession, aObserver )
-    {
-    }
-
-CMemSpyViewProcesses::CMemSpyViewProcesses( RMemSpySession& aEngine, MMemSpyViewObserver& aObserver, TProcessId aId )
-:   CMemSpyViewBase( aEngine, aObserver ), iCurrentProcessId( aId )
-    {
-    }
-
-CMemSpyViewProcesses::~CMemSpyViewProcesses()
-    {	
-	iProcesses.Close();
-    delete iSearchField;
-    delete iMatcherBuffer;
-    }
-
-
-//void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TProcessId aSelectionRune )
-    {
-	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
-	
-    _LIT( KTitle, "Processes\n& Threads" );
-    SetTitleL( KTitle );
-    //
-    //CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    CMemSpyViewBase::ConstructL( aRect, aContainer );
-    //
-    iMatcherBuffer = HBufC::NewL( KMemSpyMaxSearchTextLengthWithWildcards );
-    //
-    iSearchField = CAknSearchField::NewL( *this, CAknSearchField::ESearch, NULL, KMemSpyMaxSearchTextLength );
-
-    iSearchField->SetObserver( this );
-    iSearchField->SetFocus( ETrue );
-    iSearchField->SetComponentsToInheritVisibility( ETrue );
-    //    
-    if  ( iCurrentProcessId > 0 )
-        {
-		TInt index = 0;
-	//	TProcessId selectedItem = aSelectionRune; //static_cast< TProcessId >( *aSelectionRune );
-		for( TInt i=0; i<iProcesses.Count();i++)
-			{
-			if( iProcesses[i]->Id() == iCurrentProcessId )
-				{
-				index = i;
-				}
-			}					        
-        
-        if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
-            {
-            iListBox->SetCurrentItemIndex( index );
-            HandleListBoxItemSelectedL( index );
-            }            
-        }
-    else if ( iProcesses.Count() > 0 )
-        {
-        iListBox->SetCurrentItemIndex( 0 );
-        HandleListBoxItemSelectedL( 0 );
-        }
-    //
-    SizeChanged();
-    ActivateL();
-    }
-
-
-CMemSpyProcess& CMemSpyViewProcesses::CurrentProcess() const
-    {
-	/*
-    __ASSERT_ALWAYS( iCurrentProcess != NULL, User::Invariant() );
-    return *iCurrentProcess;
-    */	
-    }
-
-
-void CMemSpyViewProcesses::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewProcesses::ViewType() const
-    {
-    return EMemSpyViewTypeProcesses;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewProcesses::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewProcesses::PrepareChildViewL()
-    {	
-    CMemSpyViewThreads* child = new(ELeave) CMemSpyViewThreads( iMemSpySession, iObserver, iProcesses[iListBox->CurrentItemIndex()]->Id(), 0 );
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    
-	return 0;
-    }
-
-
-void CMemSpyViewProcesses::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == MenuCascadeResourceId() )
-        {
-        CMemSpyProcess& process = CurrentProcess();
-        //const TBool hide = ( iEngine.Container().Count() == 0 ) || process.IsDead(); //TODO
-        //
-        const TBool hide = EFalse; //to replace
-        
-        aMenuPane->SetItemDimmed( EMemSpyCmdProcessInfo, hide );
-        aMenuPane->SetItemDimmed( EMemSpyCmdProcessEnd, hide );
-        }
-    }
-
-
-TBool CMemSpyViewProcesses::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    // Sorting
-    case EMemSpyCmdProcessSortById:
-        OnCmdSortByIdL();
-		break;
-    case EMemSpyCmdProcessSortByName:
-        OnCmdSortByNameL();
-		break;
-    case EMemSpyCmdProcessSortByThreadCount:
-        OnCmdSortByThreadCountL();
-		break;
-    case EMemSpyCmdProcessSortByCodeSegs:
-        OnCmdSortByCodeSegsL();
-		break;
-    case EMemSpyCmdProcessSortByHeapUsage:
-        OnCmdSortByHeapUsageL();
-		break;
-    case EMemSpyCmdProcessSortByStackUsage:
-        OnCmdSortByStackUsageL();
-		break;
-    // End
-    case EMemSpyCmdProcessEndTerminate:
-        OnCmdEndTerminateL();
-		break;
-    case EMemSpyCmdProcessEndKill:
-        OnCmdEndKillL();
-		break;
-    case EMemSpyCmdProcessEndPanic:
-        OnCmdEndPanicL();
-		break;
-    // Info
-    case EMemSpyCmdProcessInfoSummary:
-        OnCmdInfoSummaryL();
-		break;
-    case EMemSpyCmdProcessInfoHandles:
-        OnCmdInfoHandlesL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByIdL()
-    {	
-    //iEngine.Container().SortById();
-    RefreshL();    
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByNameL()
-    {	
-    //iEngine.Container().SortByName();
-    RefreshL();    
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByThreadCountL()
-    {	
-    //iEngine.Container().SortByThreadCount();
-    RefreshL();    
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByCodeSegsL()
-    {	
-    //iEngine.Container().SortByCodeSegs();
-    RefreshL();
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByHeapUsageL()
-    {	
-    //iEngine.Container().SortByHeapUsage();
-    RefreshL();    
-    }
-
-
-void CMemSpyViewProcesses::OnCmdSortByStackUsageL()
-    {
-   // iEngine.Container().SortByStackUsage();
-    RefreshL();
-    }
-
-
-void CMemSpyViewProcesses::OnCmdInfoSummaryL()
-    {
-    //CMemSpyProcess& process = CurrentProcess();
-    //iEngine.HelperProcess().OutputProcessInfoL( process );
-    }
-
-
-void CMemSpyViewProcesses::OnCmdInfoHandlesL()
-    {
-	/*
-    CMemSpyProcess& process = CurrentProcess();
-    //
-    const TInt threadCount = process.Count();
-    for( TInt i=0; i<threadCount; i++ )
-        {
-        CMemSpyThread& thread = process.At( i );
-        thread.InfoContainerForceSyncronousConstructionL().PrintL();
-        }
-        */
-    }
-
-
-void CMemSpyViewProcesses::OnCmdEndTerminateL()
-    {
-	/*
-    TBool doTerminate = ETrue;
-    CMemSpyProcess& process = CurrentProcess();
-    //
-    if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        process.TerminateL();
-        RefreshL();
-        }
-        */
-    }
-
-
-void CMemSpyViewProcesses::OnCmdEndPanicL()
-    {/*
-    TBool doTerminate = ETrue;
-    CMemSpyProcess& process = CurrentProcess();
-    //
-    if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        process.PanicL();
-        RefreshL();
-        }
-        */
-    }
-
-
-void CMemSpyViewProcesses::OnCmdEndKillL()
-    {/*
-    TBool doTerminate = ETrue;
-    CMemSpyProcess& process = CurrentProcess();
-    //
-    if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        process.KillL();
-        RefreshL();
-        }
-        */
-    }
-
-
-
-
-void CMemSpyViewProcesses::SetListBoxModelL()
-    {	
-	if( iProcesses.Count() > 0 )
-		{
-		iProcesses.Close();
-		}
-	
-	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
-	iModel = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 1); //array for formated items
-	
-	_LIT( KTab, "\t" );
-	iModel = FormatModel( iProcesses ); //TODO Format model method with advanced formatting
-	
-	/*
-	for( TInt i=0; i < iProcesses.Count(); i++ )
-		{
-		HBufC* tempName = HBufC::NewL( iProcesses[i]->Name().Length() + 16 );
-    	CleanupStack::PushL( tempName );
-    	TPtr tempNamePtr( tempName->Des() );
-    	tempNamePtr.Copy( KTab );
-    	tempNamePtr.Append( iProcesses[i]->Name() );
-    	iModel->AppendL( tempNamePtr );
-    	
-    	CleanupStack::PopAndDestroy( tempName ); 
-		}			
-	*/
-	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    //listbox->Model()->SetItemTextArray( &iEngine.Container() );
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewProcesses::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewProcesses::HandleListBoxItemSelectedL( TInt aIndex )
-    {/*
-    if  ( iCurrentProcess )
-        {
-        iCurrentProcess->Close();
-        }
-
-    // Obtain the process that corresponds to the selected item
-    CMemSpyEngineObjectContainer& container = iEngine.Container();
-    CMemSpyProcess& process = container.At( aIndex );
-    iCurrentProcess = &process;
-    iCurrentProcess->Open();
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );*/
-    }
-
-
-void CMemSpyViewProcesses::SizeChanged()
-    {
-    const TRect rect( Rect() );
-    
-    if  ( iListBox && iSearchField )
-        {
-        const TInt lafIndex_H = 1;
-        AknLayoutUtils::LayoutControl( iListBox, rect, AknLayout::list_gen_pane( lafIndex_H ) );
-        AknLayoutUtils::LayoutControl( iSearchField, rect, AknLayout::find_pane() );
-        }
-    else
-        {
-        CMemSpyViewBase::SizeChanged();
-        }
-
-/*
-    // Search field
-    TSize searchFieldSize( iSearchField->MinimumSize() ); // BALLS: search field doesn't implement minimum size correctly?!?!?
-    searchFieldSize.SetWidth( rect.Width() );
-    const TRect searchFieldRect( TPoint( rect.iTl.iX, rect.iBr.iY ), searchFieldSize );
-    iSearchField->SetRect( searchFieldRect );
-
-    // Listbox
-    TSize listBoxSize( rect.Size() - TSize( 0, searchFieldSize.iHeight ) );
-    iListBox->SetRect( rect.iTl, listBoxSize );
-*/
-    }
-
-
-TInt CMemSpyViewProcesses::CountComponentControls() const
-    {
-    TInt count = 0;
-    //
-    if  ( iListBox != NULL )
-        {
-        ++count;
-        }
-    if  ( iSearchField != NULL )
-        {
-        ++count;
-        }
-    //
-    return count;
-    }
-
-
-CCoeControl* CMemSpyViewProcesses::ComponentControl( TInt aIndex ) const
-    {
-    CCoeControl* ret = iListBox;
-    //
-    if  ( aIndex == 1 )
-        {
-        ret = iSearchField;
-        }
-    //
-    return ret;
-    }
-
-
-TKeyResponse CMemSpyViewProcesses::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    TKeyResponse resp = EKeyWasNotConsumed;
-    //
-    if  ( aType == EEventKey )
-        {
-        switch( aKeyEvent.iCode )
-            {
-        case EKeyUpArrow:
-        case EKeyDownArrow:
-        case EKeyEnter:
-        case EKeyOK:
-            if  ( iListBox )
-                {
-                resp = iListBox->OfferKeyEventL( aKeyEvent, aType );
-                }
-            break;
-        default:
-            break;
-            }
-        //
-        if  ( resp == EKeyWasNotConsumed )
-            {
-            // Do we need to show the find field?
-            resp = iSearchField->OfferKeyEventL( aKeyEvent, aType );
-            }
-        }
-    //
-    return resp;
-    }
-
-
-void CMemSpyViewProcesses::HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType )
-    {
-    CMemSpyViewBase::HandleControlEventL( aControl, aEventType );
-    //
-    if  ( aEventType == MCoeControlObserver::EEventStateChanged )
-        {
-        if  ( aControl == iSearchField )
-            {
-            SelectListBoxItemByFindTextL();
-            }
-        }
-    }
-
-
-void CMemSpyViewProcesses::FocusChanged( TDrawNow /*aDrawNow*/ )
-    {
-    if  ( iListBox )
-        {
-        iListBox->SetFocus( IsFocused() );
-        }
-    if  ( iSearchField )
-        {
-        iSearchField->SetFocus( IsFocused() );
-        }
-    }
-
-
-void CMemSpyViewProcesses::SelectListBoxItemByFindTextL()
-    {
-	/*
-    _LIT( KMemSpyWildcardCharacter, "*" );
-    
-    TPtr pBuffer( iMatcherBuffer->Des() );
-    iSearchField->GetSearchText( pBuffer );
-    //pBuffer.Insert( 0, KMemSpyWildcardCharacter );
-    pBuffer.Append( KMemSpyWildcardCharacter );
-    
-    CMemSpyEngineObjectContainer& container = iEngine.Container();
-    const TInt count = container.Count();
-    //
-    TInt index = 0;
-    while( index < count )
-        {
-        CMemSpyProcess& process = container.At( index );
-        const TPtrC processName( process.Name() );
-        //
-        if  ( processName.MatchF( pBuffer ) >= 0 )
-            {
-            HandleListBoxItemSelectedL( index );
-            iListBox->ScrollToMakeItemVisible( index );
-            iListBox->SetCurrentItemIndexAndDraw( index );
-            return;
-            }
-            
-        ++index;
-        }
-        */
-    }
-
-//Model formating methods
-//TODO: to be debbuged
-
-CDesCArrayFlat* CMemSpyViewProcesses::FormatModel( RArray<CMemSpyApiProcess*> aProcesses )
-	{		
-	model = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 16 ); //array for formated items
-	_LIT( KMemSpyProcessNameFormatSpecBasicName, " \t%S\t\t%8x, " );
-	
-	for( TInt i=0; i < aProcesses.Count(); i++ )
-		{
-		HBufC* tempName = HBufC::NewL( KMaxFullName ); //aProcesses[i]->Name().Length() + 16
-	    CleanupStack::PushL( tempName );
-	    TPtr tempNamePtr( tempName->Des() );	    
-	    tempNamePtr.Copy( aProcesses[i]->Name() );
-		
-		TBuf<10> priority;
-		TProcessPriority tempPriority = aProcesses[i]->Priority();
-		MemSpyUiUtils::AppendPriority( priority, tempPriority );
-		
-	    // Convert the full name to the format we want in the UI
-	    TBuf<KMaxFullName + 60> name;
-	    TMemSpyTruncateOverflow overflow; //included from EngineUtils TODO: to consider if this is needed to be removed or left there
-	    TUint32 tempSID =  aProcesses[i]->SID();
-	    name.AppendFormat( KMemSpyProcessNameFormatSpecBasicName, &overflow, tempName, tempSID );	//tempNamePtr
-	    
-	    if( aProcesses[i]->ExitType() != EExitPending ) // instead of IsDead() method
-	    	{
-			MemSpyUiUtils::AppendExitInfo( name, aProcesses[i]->ExitType(), aProcesses[i]->ExitReason(), aProcesses[i]->ExitCategory() );
-	    	}
-	    else
-	        {
-			_LIT( KMemSpyProcessNameFormatSpecAlive, "%2d thr, %S" );
-			name.AppendFormat( KMemSpyProcessNameFormatSpecAlive, &overflow, aProcesses[i]->ThreadCount(), &priority );
-	        }
-							
-    	model->AppendL( name );
-    	
-    	CleanupStack::PopAndDestroy( tempName ); 
-		}	
-	
-	return model;
-	}
-/*
-void CMemSpyViewProcesses::AppendPriority( TDes& aDes, TProcessPriority aPriority )
-	{
-	switch( aPriority )
-		{
-	    case EPriorityLow:
-	        aDes += _L("[L]");
-	        break;
-	    case EPriorityBackground:
-	        aDes += _L("[B]");
-	        break;
-	    case EPriorityForeground:
-	        aDes += _L("[F]");
-	        break;
-	    case EPriorityHigh:
-	        aDes += _L("[H]");
-	        break;
-	    case EPriorityWindowServer:
-	        aDes += _L("[WS]");
-	        break;
-	    case EPriorityFileServer:
-	        aDes += _L("[FS]");
-	        break;
-	    case EPriorityRealTimeServer:
-	        aDes += _L("[RTS]");
-	        break;
-	    case EPrioritySupervisor:
-	        aDes += _L("[SUP]");
-	        break;
-	    default:
-	        aDes += _L("[?]");
-	        break;
-		}
-	}
-
-void CMemSpyViewProcesses::AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  )
-	{
-    aDes.Append( '[' );
-    const TInt length = aDes.Length();
-    AppendExitType( aDes, aType );
-    aDes.SetLength( length + 1 ); // Remove all but the first letter
-    aDes.Append( ']' );
-    
-    if  ( aType == EExitKill || aType == EExitPending )
-        {
-        // Kill implies "clean" exit. Pending implies not yet dead.
-        }
-    else
-        {
-        TMemSpyTruncateOverflow overflow;
-
-        // Terminate or Panic implies abnormal exit condition, so
-        // show full exit info.
-        _LIT( KAbnormalFormatSpec, " %S-%d" );
-        aDes.AppendFormat( KAbnormalFormatSpec, &overflow, &aExitCategory, aExitReason );
-        }
-	}
-*/
-/*
-void CMemSpyViewProcesses::AppendExitType( TDes& aDes, TExitType aType )
-    {
-    _LIT( KExitTypeKilled, "Killed" );
-    _LIT( KExitTypeTerminated, "Terminated" );
-    _LIT( KExitTypePanicked, "Panicked" );
-    _LIT( KExitTypePending, "Pending" );
-    
-    // Panic and Terminate are exceptional exit conditions.
-    // Kill, is ironically, not an exceptional condition.
-    switch( aType )
-        {
-    case EExitKill:
-        aDes += KExitTypeKilled;
-        break;
-    case EExitTerminate:
-        aDes += KExitTypeTerminated;
-        break;
-    case EExitPanic:
-        aDes += KExitTypePanicked;
-        break;
-    default:
-    case EExitPending:
-        aDes += KExitTypePending;
-        break;
-        }
-    }
-*/
-
--- a/memspyui/ui/avkon/src/MemSpyViewRAMInfo.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +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 "MemSpyViewRAMInfo.h"
-
-// System includes
-#include <hal.h>
-#include <aknnotedialog.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperram.h>
-#include <memspy/engine/memspyengineutils.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-
-
-
-
-
-CMemSpyViewRAMInfo::CMemSpyViewRAMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-void CMemSpyViewRAMInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "RAM Info" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewRAMInfo::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewRAMInfo::ViewType() const
-    {
-    return EMemSpyViewTypeRAMInfo;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewRAMInfo::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewRAMInfo::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    return child;
-    }
-
-
-void CMemSpyViewRAMInfo::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    TInt value;
-    TMemSpySizeText size;
-    TMemoryInfoV1Buf memInfoBuf;
-    UserHal::MemoryInfo( memInfoBuf );
-    const TMemoryInfoV1 memInfo( memInfoBuf() );
-
-    // 1st item = Total RAM
-    _LIT(KItem1Format, "\tTotal RAM\t\t%S");
-    size = MemSpyUiUtils::FormatSizeText( memInfo.iTotalRamInBytes );
-    item.Format( KItem1Format, &size );
-    model->AppendL( item );
-
-    // 2nd item = Max free RAM
-    _LIT(KItem2Format, "\tMax Free RAM\t\t%S");
-    size = MemSpyUiUtils::FormatSizeText( memInfo.iMaxFreeRamInBytes );
-    item.Format( KItem2Format, &size );
-    model->AppendL( item );
-
-    // 3rd item = Free RAM
-    _LIT(KItem3Format, "\tFree RAM\t\t%S (%S)");
-    const TMemSpyPercentText freeRamPercentage( MemSpyEngineUtils::FormatPercentage( TReal( memInfo.iTotalRamInBytes ), TReal( memInfo.iFreeRamInBytes ) ) );
-    size = MemSpyUiUtils::FormatSizeText( memInfo.iFreeRamInBytes );
-    item.Format( KItem3Format, &size, &freeRamPercentage );
-    model->AppendL( item );
-
-    // 4th item = RAM disk info
-    _LIT(KItem4Format, "\tRAM Disk Size\t\t%S");
-    size = MemSpyUiUtils::FormatSizeText( memInfo.iInternalDiskRamInBytes );
-    item.Format( KItem4Format, &size );
-    model->AppendL( item );
-
-    // 5th item = Max RAM disk size
-    _LIT(KItem5Format, "\tMax RAM Disk Size\t\t%S");
-    HAL::Get( HALData::EMaxRAMDriveSize, value );
-    size = MemSpyUiUtils::FormatSizeText( value );
-    item.Format( KItem5Format, &size );
-    model->AppendL( item );
-
-    // 6th item = RAM page size
-    _LIT(KItem6Format, "\tMemory Page Size\t\t%S");
-    HAL::Get( HALData::EMemoryPageSize, value );
-    size = MemSpyUiUtils::FormatSizeText( value );
-    item.Format( KItem6Format, &size );
-    model->AppendL( item );
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
-TBool CMemSpyViewRAMInfo::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    if  ( iEngine.HelperRAM().IsAknIconCacheConfigurable() )
-        {
-        switch ( aCommand )
-            {
-        case EMemSpyCmdRAMAvkonIconCacheDisabled:
-            OnCmdSetIconCacheStatusL( EFalse );
-		    break;
-        case EMemSpyCmdRAMAvkonIconCacheEnabled:
-            OnCmdSetIconCacheStatusL( ETrue );
-		    break;
-
-        default:
-            handled = CMemSpyViewBase::HandleCommandL( aCommand );
-            break;
-            }
-        }
-    else
-        {
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewRAMInfo::OnCmdSetIconCacheStatusL( TBool aEnabled )
-    {
-    ASSERT( iEngine.HelperRAM().IsAknIconCacheConfigurable() );
-    //
-    const TInt64 savedAmount = iEngine.HelperRAM().SetAknIconCacheStatusL( aEnabled );
-    if ( !aEnabled )
-        {
-        TBuf<128> buf;
-        //
-        if  ( savedAmount != 0 ) 
-            {
-            _LIT(KSavedAmountFormatBuffer, "Saved %S of RAM");
-            const TMemSpySizeText savedAmountString( MemSpyEngineUtils::FormatSizeText( savedAmount, 0, EFalse ) );
-            buf.Format( KSavedAmountFormatBuffer, &savedAmountString );
-            }
-        else
-            {
-            _LIT(KDidNotSaveAnyRAM, "Operation did not save any RAM");
-            buf.Copy( KDidNotSaveAnyRAM );
-            }
-
-        // Show dialog
-	    CAknNoteDialog* note = new( ELeave ) CAknNoteDialog( CAknNoteDialog::ENoTone );
-	    CleanupStack::PushL( note );
-	    note->SetTextWrapping( ETrue );
-	    note->PrepareLC( R_MEMSPY_RAM_MEMORY_DELTA_DIALOG );
-	    note->SetTextL( buf );
-	    CleanupStack::Pop( note );
-	    note->RunLD();
-        }
-    //
-    RefreshL();
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewROMInfo.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +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 "MemSpyViewROMInfo.h"
-
-// System includes
-#include <hal.h>
-#ifdef __EPOC32__
-#include <e32rom.h>
-#endif
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-// Remap of E32 DP constants, needed so MemSpy can still build on v9.1
-enum TMemSpyDemandPagingKernelConfigFlags
-    {
-    EMemSpyKernelConfigPagingPolicyMask = 3<<5,
-    EMemSpyKernelConfigPagingPolicyNoPaging = 0<<5,
-    EMemSpyKernelConfigPagingPolicyAlwaysPage = 1<<5,
-    EMemSpyKernelConfigPagingPolicyDefaultUnpaged = 2<<5,
-    EMemSpyKernelConfigPagingPolicyDefaultPaged = 3<<5,
-    };
-
-
-
-CMemSpyViewROMInfo::CMemSpyViewROMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-void CMemSpyViewROMInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "ROM Info" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewROMInfo::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewROMInfo::ViewType() const
-    {
-    return EMemSpyViewTypeROMInfo;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewROMInfo::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewROMInfo::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    return child;
-    }
-
-
-void CMemSpyViewROMInfo::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    TInt value = 0;
-    TMemSpySizeText valueBuf;
-    TMemSpySizeText valueBuf2;
-    
-    // 1st item = Total RAM
-    _LIT(KItem1Format, "\tROM Size (HAL)\t\t%S");
-    HAL::Get( HALData::EMemoryROM, value );
-    valueBuf = MemSpyUiUtils::FormatSizeText( value );
-    item.Format( KItem1Format, &valueBuf );
-    model->AppendL( item );
-
-#ifdef __EPOC32__
-    TBuf<128> buf2;
-    _LIT( KTimeFormatSpecLocal, "%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B" );
-	const TUint main_start = UserSvr::RomHeaderAddress();
-    TRomHeader* romHeader = (TRomHeader*) main_start;
-
-    _LIT(KItem2Format, "\tROM Size (Header)\t\t%S");
-    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iRomSize ) );
-    item.Format( KItem2Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem2aFormat, "\tROM Page Size\t\t%S");
-    HAL::Get( HALData::EMemoryPageSize, value );
-    valueBuf = MemSpyUiUtils::FormatSizeText( value );
-    item.Format( KItem2aFormat, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem10Format, "\tVersion\t\tv%2d.%02d.%06d");
-    item.Format( KItem10Format, romHeader->iVersion.iMajor, romHeader->iVersion.iMinor, romHeader->iVersion.iBuild );
-    model->AppendL( item );
-
-    _LIT(KItem3Format, "\tTimestamp\t\t%S");
-    TTime time( romHeader->iTime );
-    time.FormatL( buf2, KTimeFormatSpecLocal );
-    item.Format( KItem3Format, &buf2 );
-    model->AppendL( item );
-
-    _LIT(KItem4Format, "\tAddress Range\t\t%S - %S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iRomBase );
-    MemSpyUiUtils::FormatHex( valueBuf2, (romHeader->iRomBase + romHeader->iRomSize ));
-    item.Format( KItem4Format, &valueBuf, &valueBuf2 );
-    model->AppendL( item );
-
-    _LIT(KItem5Format, "\tPrimary File Address\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iPrimaryFile );
-    item.Format( KItem5Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem6Format, "\tSecondary File Address\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iSecondaryFile );
-    item.Format( KItem6Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem7Format, "\tChecksum\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iCheckSum );
-    item.Format( KItem7Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem8Format, "\tKernel Config Flags\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iKernelConfigFlags );
-    item.Format( KItem8Format, &valueBuf );
-    model->AppendL( item );
-
-    if  ( romHeader->iKernelConfigFlags & EKernelConfigIpcV1Available )
-        {
-        _LIT(KItem8aFormat, "\tIPC v1 Available\t\tYes");
-        item.Copy( KItem8aFormat );
-        model->AppendL( item );
-        }
-    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecEnforcement )
-        {
-        _LIT(KItem8bFormat, "\tPlatSec Enforcement\t\tYes");
-        item.Copy( KItem8bFormat );
-        model->AppendL( item );
-        }
-    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecDiagnostics )
-        {
-        _LIT(KItem8cFormat, "\tPlatSec Diagnostics\t\tYes");
-        item.Copy( KItem8cFormat );
-        model->AppendL( item );
-        }
-    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecProcessIsolation )
-        {
-        _LIT(KItem8dFormat, "\tPlatSec Process Isolation\t\tYes");
-        item.Copy( KItem8dFormat );
-        model->AppendL( item );
-        }
-    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecEnforceSysBin )
-        {
-        _LIT(KItem8eFormat, "\tEnforce \\Sys\\Bin\\\t\tYes");
-        item.Copy( KItem8eFormat );
-        model->AppendL( item );
-        }
-
-    const TUint32 pagingPolicy = ( romHeader->iKernelConfigFlags & EMemSpyKernelConfigPagingPolicyMask );
-#ifdef _DEBUG
-    RDebug::Printf( "pagingPolicy: %u (0x%08x)", pagingPolicy, pagingPolicy );
-#endif
-    _LIT(KItem8eFormat, "\tDemand Paging\t\t%S");
-    //
-    if  ( pagingPolicy & EMemSpyKernelConfigPagingPolicyNoPaging )
-        {
-        _LIT( KDemandPagingPolicyNoPaging, "No Paging" );
-        item.Format( KItem8eFormat, &KDemandPagingPolicyNoPaging );
-        }
-    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyAlwaysPage )
-        {
-        _LIT( KDemandPagingPolicyAlwaysPage, "Always Paging" );
-        item.Format( KItem8eFormat, &KDemandPagingPolicyAlwaysPage);
-        }
-    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyDefaultUnpaged )
-        {
-        _LIT( KDemandPagingPolicyDefaultUnpaged, "Default Unpaged" );
-        item.Format( KItem8eFormat, &KDemandPagingPolicyDefaultUnpaged);
-        }
-    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyDefaultPaged )
-        {
-        _LIT( KDemandPagingPolicyDefaultPaged, "Default Paged" );
-        item.Format( KItem8eFormat, &KDemandPagingPolicyDefaultPaged );
-        }
-    //
-    model->AppendL( item );
-
-    _LIT(KItem9Format, "\tSection Header Address\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iRomSectionHeader );
-    item.Format( KItem9Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem11Format, "\tCompressed Size\t\t%S");
-    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iCompressedSize ) );
-    item.Format( KItem11Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem12Format, "\tUncompressed Size\t\t%S");
-    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iUncompressedSize ) );
-    item.Format( KItem12Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem13Format, "\tDisabled Caps. #1\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iDisabledCapabilities[0] );
-    item.Format( KItem13Format, &valueBuf );
-    model->AppendL( item );
-
-    _LIT(KItem14Format, "\tDisabled Caps. #2\t\t%S");
-    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iDisabledCapabilities[1] );
-    item.Format( KItem14Format, &valueBuf );
-    model->AppendL( item );
-
-    for(TInt i=0; i<TRomHeader::KNumTraceMask; i++)
-        {
-        _LIT(KItem15Format, "\tTrace Mask #%d\t\t%S");
-        MemSpyUiUtils::FormatHex( valueBuf, romHeader->iTraceMask[i] );
-        item.Format( KItem15Format, i+1, &valueBuf );
-        model->AppendL( item );
-        }
-
-#endif
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewServerList.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +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 "MemSpyViewServerList.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyenginehelperserver.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyContainerObserver.h"
-
-
-
-
-CMemSpyViewServerList::CMemSpyViewServerList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewServerList::~CMemSpyViewServerList()
-    {
-    delete iList;
-    }
-
-
-void CMemSpyViewServerList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "Running Servers" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-TBool CMemSpyViewServerList::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdServerListSortByName:
-        OnCmdServerListSortByNameL();
-        break;
-    case EMemSpyCmdServerListSortBySessionCount:
-        OnCmdServerListSortBySessionCountL();
-        break;
-    case EMemSpyCmdServerListOutputListCSV:
-        OnCmdServerListOutputSummaryL();
-        break;
-    case EMemSpyCmdServerListOutputListDetailed:
-        OnCmdServerListOutputDetailedL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewServerList::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewServerList::ViewType() const
-    {
-    return EMemSpyViewTypeServerList;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewServerList::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewServerList::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-
-    // First, try to find the selected thread
-    if  ( iActionedItem )
-        {
-        // Try to create a view of the thread in question
-        CMemSpyProcess* process = NULL;
-        CMemSpyThread* thread = NULL;
-        //
-        const TInt error = iEngine.Container().ProcessAndThreadByThreadId( iActionedItem->Id(), process, thread );
-        //
-        if  ( error == KErrNone && thread != NULL )
-            {
-            child = new(ELeave) CMemSpyViewThreads( iEngine, iObserver, thread->Process() );
-            CleanupStack::PushL( child );
-            child->ConstructL( Rect(), *Parent(), thread );
-            CleanupStack::Pop( child );
-            }
-        }
-    //
-    return child;
-    }
-
-
-void CMemSpyViewServerList::SetListBoxModelL()
-    {
-    delete iList;
-    iList = NULL;
-    iList = iEngine.HelperServer().ServerListL();
-    //
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iList );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewServerList::HandleListBoxItemActionedL( TInt aCurrentIndex )
-    {
-    if  ( aCurrentIndex >= 0 && aCurrentIndex < iList->Count() )
-        {
-        const CMemSpyEngineServerEntry& serverInfo = iList->At( aCurrentIndex );
-        iActionedItem = &serverInfo;
-        }
-    else
-        {
-        iActionedItem = NULL;
-        }
-
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewServerList::OnCmdServerListSortByNameL()
-    {
-    iList->SortByNameL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewServerList::OnCmdServerListSortBySessionCountL()
-    {
-    iList->SortBySessionCountL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewServerList::OnCmdServerListOutputSummaryL()
-    {
-    OnCmdServerListOutputGenericL( EFalse );
-    }
-
-
-void CMemSpyViewServerList::OnCmdServerListOutputDetailedL()
-    {
-    OnCmdServerListOutputGenericL( ETrue );
-    }
-
-
-void CMemSpyViewServerList::OnCmdServerListOutputGenericL( TBool aDetailed )
-    {
-    // Begin a new data stream
-    _LIT( KMemSpyContext, "Server List - " );
-    _LIT( KMemSpyFolder, "Servers" );
-    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
-
-    // Set prefix for overall listing
-    iEngine.Sink().OutputPrefixSetLC( KMemSpyContext );
-
-    // Create header
-    CMemSpyEngineServerList::OutputDataColumnsL( iEngine, aDetailed );
-    
-    // List items
-    const TInt count = iList->Count();
-    for(TInt i=0; i<count; i++)
-        {
-        const CMemSpyEngineServerEntry& server = iList->At( i );
-        //
-        server.OutputDataL( iEngine.HelperServer(), aDetailed );
-        }
-
-    // Tidy up
-    CleanupStack::PopAndDestroy(); // prefix
- 
-    // End data stream
-    iEngine.Sink().DataStreamEndL();
-    }
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewSystemConfig.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,883 +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 "MemSpyViewSystemConfig.h"
-
-// System includes
-#include <hal.h>
-#include <bautils.h>
-#include <eikenv.h>
-#ifdef __EPOC32__
-#include <e32rom.h>
-#endif
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperfilesystem.h>
-
-// User includes
-#include "MemSpyUiUtils.h"
-#include "MemSpyViewMainMenu.h"
-#include "MemSpyContainerObserver.h"
-
-// Literal constants
-_LIT( KMemSpyItemValueNotKnown, "Unknown" );
-
-
-
-CMemSpyViewSystemConfig::CMemSpyViewSystemConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
-:   CMemSpyViewBase( aEngine, aObserver )
-    {
-    }
-
-
-CMemSpyViewSystemConfig::~CMemSpyViewSystemConfig()
-    {
-    delete iModel;
-    }
-
-
-void CMemSpyViewSystemConfig::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    _LIT( KTitle, "System Configuration" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-void CMemSpyViewSystemConfig::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewSystemConfig::ViewType() const
-    {
-    return EMemSpyViewTypeSystemConfig;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareParentViewL()
-    {
-    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    return child;
-    }
-
-
-void CMemSpyViewSystemConfig::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
-    delete iModel;
-    iModel = model;
-
-    TBuf<128> valueBuf;
-    TInt value = 0;
-    TInt value2 = 0;
-    TMemSpySizeText sizeBuf;
-
-    //
-    _LIT(KItem1Format, "Manufacturer");
-    GetManufacturer( valueBuf );
-    AddItemL( KItem1Format, valueBuf );
-
-    //
-    _LIT(KItem2Format, "Machine Uid");
-    GetMachineUid( valueBuf );
-    AddItemL( KItem2Format, valueBuf );
-
-    //
-    _LIT(KItem1aFormat, "Model Uid");
-    GetHALValueAsHexL( HALData::EModel, KItem1aFormat );
-
-    //
-    _LIT(KItem2aFormat, "Device Family");
-    GetDeviceFamily( valueBuf );
-    AddItemL( KItem2aFormat, valueBuf );
-
-    //
-    _LIT(KItem2bFormat, "Device Family Rev.");
-    GetHALValueAsNumericL( HALData::EDeviceFamilyRev, KItem2bFormat );
-
-    //
-    _LIT(KItem3Format, "Hardware Rev.");
-    GetHALValueAsNumericL( HALData::EManufacturerHardwareRev, KItem3Format );
-
-    //
-    _LIT(KItem4Format, "Software Rev.");
-    GetHALValueAsNumericL( HALData::EManufacturerSoftwareRev, KItem4Format );
-
-    //
-    _LIT(KItem5Format, "Software Build");
-    GetHALValueAsNumericL( HALData::EManufacturerSoftwareBuild, KItem5Format );
-
-    //
-    _LIT(KItem6Format, "CPU");
-    GetCPU( valueBuf );
-    AddItemL( KItem6Format, valueBuf );
-
-    //
-    _LIT(KItem7Format, "CPU ABI");
-    GetCPUABI( valueBuf );
-    AddItemL( KItem7Format, valueBuf );
-
-    //
-    _LIT(KItem8Format, "CPU Speed");
-    _LIT(KItem8Suffix, "KHz");
-    GetHALValueAsNumericL( HALData::ECPUSpeed, KItem8Format, &KItem8Suffix );
-
-    //
-    _LIT(KItem8aFormat, "Floating Point Support");
-    GetHALValueAsYesNoL( HALData::EHardwareFloatingPoint, KItem8aFormat );
-
-    //
-    _LIT(KItem8bFormat, "System Tick Period");
-    _LIT(KItem8bSuffix, "ms");
-    GetHALValueAsNumericL( HALData::ESystemTickPeriod, KItem8bFormat, &KItem8bSuffix );
-
-    //
-    _LIT(KItem8cFormat, "Nano Tick Period");
-    _LIT(KItem8cSuffix, "us");
-    GetHALValueAsNumericL( HALData::ENanoTickPeriod, KItem8cFormat, &KItem8cSuffix );
-
-    //
-    _LIT(KItem9Format, "Startup Reason");
-    GetStartupReason( valueBuf );
-    AddItemL( KItem9Format, valueBuf );
-
-    //
-    _LIT(KItem10Format, "Language");
-    GetHALValueAsNumericL( HALData::ELanguageIndex, KItem10Format, NULL, 4 );
-
-    //
-    _LIT(KItem10aFormat, "Locale");
-    GetHALValueAsNumericL( HALData::ELocaleLoaded, KItem10aFormat, NULL, 4 );
-
-    //
-    _LIT(KItem11aFormat, "Clipboard Drive");
-    GetHALValueAsDriveLetterL( HALData::EClipboardDrive, KItem11aFormat );
-
-    //
-    _LIT(KItem11bFormat, "System Drive (Hal)");
-    GetHALValueAsDriveLetterL( HALData::ESystemDrive, KItem11bFormat );
-
-    //
-    _LIT(KItem11cFormat, "System Drive (F32)");
-    TDriveNumber systemDrive = CMemSpyEngineHelperFileSystem::GetSystemDrive();
-    AddItemL( systemDrive, KItem11cFormat );
-
-    //
-    _LIT(KItem11dFormat, "System Drive (Bafl)");
-    value = BaflUtils::GetSystemDrive( systemDrive );
-    if ( value == KErrNone )
-        {
-        AddItemL( systemDrive, KItem11dFormat );
-        }
-    else
-        {
-        MemSpyUiUtils::GetErrorText( valueBuf, value );
-        AddItemL( KItem11dFormat, valueBuf );
-        }
-
-    //
-    _LIT(KItem12Format, "Display Type");
-    GetDisplayType( valueBuf );
-    AddItemL( KItem12Format, valueBuf );
-    //
-    _LIT(KItem12aCaption, "Display Size");
-    _LIT(KItem12aFormat, "%d x %d");
-    value = value2 = 0;
-    GetHALValue( HALData::EDisplayXPixels, value );
-    GetHALValue( HALData::EDisplayYPixels, value2 );
-    valueBuf.Format( KItem12aFormat, value, value2 );
-    AddItemL( KItem12aCaption, valueBuf );
-
-    //
-    _LIT(KItem13Format, "Display Depth");
-    _LIT(KItem13Suffix, "bpp");
-    GetHALValueAsNumericL( HALData::EDisplayBitsPerPixel, KItem13Format, &KItem13Suffix );
-
-    //
-    _LIT(KItem14Format, "Display Mode Count");
-    GetHALValueAsNumericL( HALData::EDisplayNumModes, KItem14Format );
-
-    //
-    _LIT(KItem14aFormat, "Current Mode");
-    GetHALValueAsNumericL( HALData::EDisplayMode, KItem14aFormat );
-
-    //
-    _LIT(KItem15Format, "Display Address");
-    GetHALValueAsHexL( HALData::EDisplayMemoryAddress, KItem15Format );
-
-    //
-    _LIT(KItem16Format, "Screen Count");
-    GetHALValueAsNumericL( HALData::EDisplayNumberOfScreens, KItem16Format );
-
-    //
-    _LIT(KItem17Format, "Eikon Def. Disp. Mode");
-    GetDisplayMode( valueBuf, static_cast<TMemSpyDisplayMode>( CEikonEnv::Static()->DefaultDisplayMode() ) );
-    AddItemL( KItem17Format, valueBuf );
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    iModel = NULL;
-    }
-
-
-void CMemSpyViewSystemConfig::GetManufacturer( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::EManufacturer, value );
-    //
-    switch( value )
-        {
-    case HALData::EManufacturer_Ericsson:
-        {
-        _LIT( KName, "Ericsson" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Motorola:
-        {
-        _LIT( KName, "Motorola" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Nokia:
-        {
-        _LIT( KName, "Nokia" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Panasonic:
-        {
-        _LIT( KName, "Panasonic" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Psion:
-        {
-        _LIT( KName, "Psion" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Intel:
-        {
-        _LIT( KName, "Intel" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Cogent:
-        {
-        _LIT( KName, "Cogent" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Cirrus:
-        {
-        _LIT( KName, "Cirrus" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_Linkup:
-        {
-        _LIT( KName, "Linkup" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EManufacturer_TexasInstruments:
-        {
-        _LIT( KName, "Texas Instruments" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetDisplayMode( TDes& aBuf, TMemSpyDisplayMode aMode )
-    {
-    switch( aMode )
-        {
-    case ENone:
-        {
-        _LIT( KName, "ENone" );
-        aBuf.Copy( KName );
-        }
-    case EGray2:
-        {
-        _LIT( KName, "EGray2" );
-        aBuf.Copy( KName );
-        }
-    case EGray4:
-        {
-        _LIT( KName, "EGray4" );
-        aBuf.Copy( KName );
-        }
-    case EGray16:
-        {
-        _LIT( KName, "EGray16" );
-        aBuf.Copy( KName );
-        }
-    case EGray256:
-        {
-        _LIT( KName, "EGray256" );
-        aBuf.Copy( KName );
-        }
-    case EColor16:
-        {
-        _LIT( KName, "EColor16" );
-        aBuf.Copy( KName );
-        }
-    case EColor256:
-        {
-        _LIT( KName, "EColor256" );
-        aBuf.Copy( KName );
-        }
-    case EColor64K:
-        {
-        _LIT( KName, "EColor64K" );
-        aBuf.Copy( KName );
-        }
-    case EColor16M:
-        {
-        _LIT( KName, "EColor16M" );
-        aBuf.Copy( KName );
-        }
-    case ERgb:
-        {
-        _LIT( KName, "ERgb" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case EColor4K:
-        {
-        _LIT( KName, "EColor4K" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case EColor16MU:
-        {
-        _LIT( KName, "EColor16MU" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case EColor16MA:
-        {
-        _LIT( KName, "EColor16MA" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case EColor16MAP:
-        {
-        _LIT( KName, "EColor16MAP" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetDeviceFamily( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::EDeviceFamily, value );
-    //
-    switch( value )
-        {
-    case HALData::EDeviceFamily_Crystal:
-        {
-        _LIT( KName, "Crystal" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EDeviceFamily_Pearl:
-        {
-        _LIT( KName, "Pearl" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EDeviceFamily_Quartz:
-        {
-        _LIT( KName, "Quartz" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetCPU( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::ECPU, value );
-    //
-    switch( value )
-        {
-    case HALData::ECPU_ARM:
-        {
-        _LIT( KName, "ARM" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPU_MCORE:
-        {
-        _LIT( KName, "mCORE" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPU_X86:
-        {
-        _LIT( KName, "X86" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetCPUABI( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::ECPUABI, value );
-    //
-    switch( value )
-        {
-    case HALData::ECPUABI_ARM4:
-        {
-        _LIT( KName, "ARM4" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_ARMI:
-        {
-        _LIT( KName, "ARMI" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_THUMB:
-        {
-        _LIT( KName, "ARM4" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_MCORE:
-        {
-        _LIT( KName, "mCORE" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_MSVC:
-        {
-        _LIT( KName, "MSVC" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_ARM5T:
-        {
-        _LIT( KName, "ARM5T" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ECPUABI_X86:
-        {
-        _LIT( KName, "X86" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetStartupReason( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::ESystemStartupReason, value );
-    //
-    switch( value )
-        {
-    case HALData::ESystemStartupReason_Cold:
-        {
-        _LIT( KName, "Cold" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ESystemStartupReason_Warm:
-        {
-        _LIT( KName, "Warm" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::ESystemStartupReason_Fault:
-        {
-        _LIT( KName, "Fault" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetKeyboard( TDes& aBuf )
-    {
-    _LIT(KComma, ", ");
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::EKeyboard, value );
-    //
-    aBuf.Zero();
-    if  ( value & EKeyboard_Keypad )
-        {
-        _LIT( KName, "Keypad" );
-        aBuf.Copy( KName );
-        }
-
-
-    if  ( value & EKeyboard_Full )
-        {
-        if  ( aBuf.Length() )
-            {
-            aBuf.Append( KComma );
-            }
-
-        _LIT( KName, "Full Keyboard" );
-        aBuf.Copy( KName );
-        }
-
-    if  ( !aBuf.Length() )
-        {
-        aBuf.Copy( KMemSpyItemValueNotKnown );
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetMachineUid( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::EMachineUid, value );
-    //
-    switch( value )
-        {
-    case HALData::EMachineUid_Series5mx:
-        {
-        _LIT( KName, "Series 5mx" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Brutus:
-        {
-        _LIT( KName, "Brutus" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Cogent:
-        {
-        _LIT( KName, "Cogent" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Win32Emulator:
-        {
-        _LIT( KName, "Win32 Emulator" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_WinC:
-        {
-        _LIT( KName, "WINC" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_CL7211_Eval:
-        {
-        _LIT( KName, "CL7211" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_LinkUp:
-        {
-        _LIT( KName, "LinkUp" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Assabet:
-        {
-        _LIT( KName, "Assabet" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_IQ80310:
-        {
-        _LIT( KName, "IQ80310" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Lubbock:
-        {
-        _LIT( KName, "Lubbock" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Integrator:
-        {
-        _LIT( KName, "Integrator" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_Helen:
-        {
-        _LIT( KName, "Helen" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_X86PC:
-        {
-        _LIT( KName, "X86PC" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_OmapH2:
-        {
-        _LIT( KName, "OmapH2" );
-        aBuf.Copy( KName );
-        }
-        break;
-    case HALData::EMachineUid_OmapH4:
-        {
-        _LIT( KName, "OmapH4" );
-        aBuf.Copy( KName );
-        }
-        break;
-    default:
-        {
-        _LIT( KName, "0x%08x" );
-        aBuf.Format( KName, value );
-        }
-        break;
-        }
-    }
-
-
-void CMemSpyViewSystemConfig::GetDisplayType( TDes& aBuf )
-    {
-    TInt value = KErrGeneral;
-    GetHALValue( HALData::EDisplayIsMono, value );
-    //
-    if  ( value == 0 )
-        {
-        _LIT( KName, "Colour" );
-        aBuf.Copy( KName );
-        }
-    else if ( value == 1 )
-        {
-        _LIT( KName, "Mono" );
-        aBuf.Copy( KName );
-        }
-    else
-        {
-        MemSpyUiUtils::GetErrorText( aBuf, value );
-        }
-    }
-
-
-TInt CMemSpyViewSystemConfig::GetHALValue( HALData::TAttribute aAttribute, TInt& aValue )
-    {
-    aValue = KErrGeneral;
-    const TInt error = HAL::Get( aAttribute, aValue );
-
-#ifdef _DEBUG
-    if  ( error != KErrNone )
-        {
-        RDebug::Printf("CMemSpyViewSystemConfig::GetHALValue() - aAttribute: %3d, error: %d, value: %d", aAttribute, error, aValue);
-        }
-#endif
-
-    return error;
-    }
-
-
-TInt CMemSpyViewSystemConfig::GetHALValueAsNumericL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix, TInt aWidth )
-    {
-    TBuf<20> valueBuf; 
-    TInt value = 0;
-    //
-    const TInt error = GetHALValue( aAttribute, value );
-    if  ( error == KErrNone )
-        {
-        if  ( aWidth > 0 && aWidth < 12 )
-            {
-            valueBuf.NumFixedWidthUC( (TUint) value, EDecimal, aWidth );
-            }
-        else
-            {
-            valueBuf.Num( value );
-            }
-
-        AddItemL( aCaption, valueBuf, aSuffix );
-        }
-    else
-        {
-        MemSpyUiUtils::GetErrorText( valueBuf, error );
-        AddItemL( aCaption, valueBuf );
-        }
-    //
-    return error;
-    }
-
-
-TInt CMemSpyViewSystemConfig::GetHALValueAsHexL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
-    {
-    TBuf<20> valueBuf; 
-    TInt value = 0;
-    //
-    const TInt error = GetHALValue( aAttribute, value );
-    if  ( error == KErrNone )
-        {
-        MemSpyEngineUtils::FormatHex( valueBuf, value );
-        AddItemL( aCaption, valueBuf, aSuffix );
-        }
-    else
-        {
-        MemSpyUiUtils::GetErrorText( valueBuf, error );
-        AddItemL( aCaption, valueBuf );
-        }
-    //
-    return error;
-    }
-
-
-TInt CMemSpyViewSystemConfig::GetHALValueAsYesNoL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
-    {
-    TBuf<20> valueBuf; 
-    TInt value = 0;
-    //
-    const TInt error = GetHALValue( aAttribute, value );
-    if  ( error == KErrNone || error == KErrNotSupported )
-        {
-        _LIT(KYes, "Yes");
-        _LIT(KNo, "No");
-        _LIT(KError, "Error: %d");
-
-        if ( error < KErrNone )
-            {
-            valueBuf.Format( KError, error );
-            }
-        else if ( value == EFalse )
-            {
-            valueBuf.Copy( KNo );
-            }
-        else if ( error == KErrNone )
-            {
-            valueBuf.Copy( KYes );
-            }
-
-        AddItemL( aCaption, valueBuf, aSuffix );
-        }
-    else
-        {
-        MemSpyUiUtils::GetErrorText( valueBuf, error );
-        AddItemL( aCaption, valueBuf );
-        }
-    //
-    return error;
-    }
-
-
-TInt CMemSpyViewSystemConfig::GetHALValueAsDriveLetterL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
-    {
-    TInt value = 0;
-    const TInt error = GetHALValue( aAttribute, value );
-    //
-    if  ( error == KErrNone && ( value >= EDriveA && value <= EDriveZ ) )
-        {
-        AddItemL( (TDriveNumber) value, aCaption, aSuffix );
-        }
-    else
-        {
-        _LIT( KItemNotSet, "Not Defined");
-        AddItemL( aCaption, KItemNotSet );
-        }
-    //
-    return error;
-    }
-
-
-void CMemSpyViewSystemConfig::AddItemL( const TDesC& aCaption, const TDesC& aValue, const TDesC* aSuffix )
-    {
-    _LIT(KItemFormat, "\t%S\t\t%S");
-    //
-    TBuf<KMaxFullName> item;
-    item.Format( KItemFormat, &aCaption, &aValue );
-    if  ( aSuffix ) 
-        {
-        _LIT(KSpace, " ");
-        item.Append( KSpace );
-        item.Append( *aSuffix );
-        }
-    //
-    iModel->AppendL( item );
-    }
-
-
-void CMemSpyViewSystemConfig::AddItemL( TDriveNumber aDrive, const TDesC& aCaption, const TDesC* aSuffix )
-    {
-    TBuf<20> valueBuf; 
-    //
-    const TDriveUnit drive( aDrive );
-    valueBuf.Copy( drive.Name() );
-    //
-    AddItemL( aCaption, valueBuf, aSuffix );
-    }
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemActiveObject.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +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 "MemSpyViewThreadInfoItemActiveObject.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperactiveobject.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-
-
-CMemSpyViewThreadInfoItemActiveObjectBase::CMemSpyViewThreadInfoItemActiveObjectBase(RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeActiveObject )
-    {
-    }
-
-
-TBool CMemSpyViewThreadInfoItemActiveObjectBase::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    /*
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdActiveObjectListing:
-        OnCmdWriteAOListingL();
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-     * */
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemActiveObjectBase::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-     //   aMenuPane->SetItemDimmed( EMemSpyCmdActiveObject, Thread().IsDead() );
-        }
-    }
-
-
-CMemSpyEngineActiveObjectArray& CMemSpyViewThreadInfoItemActiveObjectBase::ActiveObjectArray() const
-    {
- //   CMemSpyThreadInfoActiveObjects* activeObjectArray = static_cast< CMemSpyThreadInfoActiveObjects* >( iInfoItem );
- //   return activeObjectArray->Array();
-    }
-    
-    
-void CMemSpyViewThreadInfoItemActiveObjectBase::OnCmdWriteAOListingL()
-    {
-	iMemSpySession.OutputAOListL( ThreadId(), EMemSpyThreadInfoItemTypeActiveObject );
-	
-	/*
-    CMemSpyEngineActiveObjectArray& objects = ActiveObjectArray();
-
-    // Begin a new data stream
-    _LIT( KMemSpyContext, "Active Object List - " );
-    _LIT( KMemSpyFolder, "Active Objects" );
-    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
-
-    // Set prefix for overall listing
-    iEngine.Sink().OutputPrefixSetLC( KMemSpyContext );
-
-    // Create header
-    CMemSpyEngineActiveObjectArray::OutputDataColumnsL( iEngine );
-    
-    // List items
-    const TInt count = objects.Count();
-    for(TInt i=0; i<count; i++)
-        {
-        const CMemSpyEngineActiveObject& object = objects.At( i );
-        //
-        object.OutputDataL( iEngine );
-        }
-
-    // Tidy up
-    CleanupStack::PopAndDestroy(); // prefix
-
-    // End data stream
-    iEngine.Sink().DataStreamEndL();
-    */
-    }
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewThreadInfoItemActiveObject::CMemSpyViewThreadInfoItemActiveObject( RMemSpySession& aSession, MMemSpyViewObserver& aObserver,  TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemActiveObjectBase( aSession, aObserver, aProcId, aId, aType )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemActiveObject::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    // Causes list of server's to be prepared
-    CMemSpyViewThreadInfoItemActiveObjectBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    _LIT( KTitle, "Active Objects" );
-    SetTitleL( KTitle );
-
-    // Try to select the correct server
-    /* TODO: to consider this
-    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
-    TInt selectedIndex = 0;
-    if  ( aSelectionRune )
-        {
-        CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
-        const TInt index = activeObjectArray.ObjectIndexByAddress( aSelectionRune );
-        if  ( index >= 0 && index < activeObjectArray.Count() )
-            {
-            selectedIndex = index + 1;
-            }
-        }
-
-    // Select item
-    if  ( infoItem->DetailsCount() > 0 )
-        {
-        */
-        iListBox->SetCurrentItemIndex( 0 ); //selectedIndex
-        HandleListBoxItemSelectedL( 0 ); //selectedIndex
-        /*
-        }
-        */
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemActiveObject::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemActiveObject;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemActiveObject::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    /*
-    // Get current entry address
-    TInt index = iListBox->CurrentItemIndex();
-    if  ( index > 0 )
-        {
-        --index;
-        CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
-        //
-        if  ( index >= 0 && index < activeObjectArray.MdcaCount() )
-            {
-            CMemSpyEngineActiveObject& object = activeObjectArray.At( index );
-            TAny* aoAddress = object.Address();
-            //
-            child = new(ELeave) CMemSpyViewThreadInfoItemActiveObjectDetails( iEngine, iObserver, iInfoItem->Container(), aoAddress );
-            CleanupStack::PushL( child );
-            child->ConstructL( Rect(), *Parent(), NULL );
-            CleanupStack::Pop( child );
-            }
-        }
-    //
-     * 
-     */
-    return child;
-    }
-
-
-
-
-
-
-
-
-
-
-/*
-CMemSpyViewThreadInfoItemActiveObjectDetails::CMemSpyViewThreadInfoItemActiveObjectDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, TAny* aObjectAddress )
-:   CMemSpyViewThreadInfoItemActiveObjectBase( aEngine, aObserver, aContainer ), iObjectAddress( aObjectAddress )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemActiveObjectDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemActiveObjectBase::ConstructL( aRect, aContainer, aSelectionRune );
-
-    _LIT( KTitle, "Active Object Details" );
-    SetTitleL( KTitle );
-    }
-    
-
-TMemSpyViewType CMemSpyViewThreadInfoItemActiveObjectDetails::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemActiveObjectDetails;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemActiveObjectDetails::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemActiveObject* parent = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iEngine, iObserver, iInfoItem->Container() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), iObjectAddress );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewThreadInfoItemActiveObjectDetails::SetListBoxModelL()
-    {
-    // Try to find the right entry
-    CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
-    const TInt index = activeObjectArray.ObjectIndexByAddress( iObjectAddress );
-    User::LeaveIfError( index );
-    CMemSpyEngineActiveObject& object = activeObjectArray.At( index );
-    //
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( &object );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-*/
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemChunk.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +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 "MemSpyViewThreadInfoItemChunk.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewChunkList.h"
-
-
-
-CMemSpyViewThreadInfoItemChunk::CMemSpyViewThreadInfoItemChunk( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeChunk )
-    {
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemChunk::PrepareChildViewL()
-    {	
-    CMemSpyViewBase* child = NULL;
-    /* TODO
-    // Get the code segment list
-    CMemSpyThreadInfoChunk* chunkInfoItem = static_cast< CMemSpyThreadInfoChunk* >( iInfoItem );
-    CMemSpyEngineChunkList* list = &chunkInfoItem->List();
-    
-    // Get the current code segment that corresponds to our currently focused list item.
-    const TInt index = iListBox->CurrentItemIndex();
-    if  ( index >= 0 && index < list->Count() )
-        {
-        CMemSpyEngineChunkEntry& entry = list->At( index );
-        child = new(ELeave) CMemSpyViewChunkDetails( iEngine, iObserver, *list, entry );
-        
-        // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-        // This object is about to die in any case.
-        chunkInfoItem->NullifyList();
-
-        CleanupStack::PushL( child );
-        child->ConstructL( Rect(), *Parent() );
-        CleanupStack::Pop( child );
-        }
-    */
-    return child;    
-    }
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemCodeSeg.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +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 "MemSpyViewThreadInfoItemCodeSeg.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelpercodesegment.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewCodeSegList.h"
-
-
-
-CMemSpyViewThreadInfoItemCodeSeg::CMemSpyViewThreadInfoItemCodeSeg( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeCodeSeg )
-    {
-    }
-
-
-TBool CMemSpyViewThreadInfoItemCodeSeg::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
-    return handled;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemCodeSeg::PrepareChildViewL()
-    {	
-    CMemSpyViewBase* child = NULL;
-    /* TODO
-    // Get the code segment list
-    CMemSpyThreadInfoCodeSeg* codeSegInfoItem = static_cast< CMemSpyThreadInfoCodeSeg* >( iInfoItem );
-    CMemSpyEngineCodeSegList* list = &codeSegInfoItem->List();
-    
-    // Get the current code segment that corresponds to our currently focused list item.
-    const TInt index = iListBox->CurrentItemIndex();
-    if  ( index >= 0 && index < list->Count() )
-        {
-        CMemSpyEngineCodeSegEntry& entry = list->At( index );
-        child = new(ELeave) CMemSpyViewCodeSegDetails( iEngine, iObserver, *list, entry );
-        
-        // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
-        // This object is about to die in any case.
-        codeSegInfoItem->NullifyList();
-
-        CleanupStack::PushL( child );
-        child->ConstructL( Rect(), *Parent() );
-        CleanupStack::Pop( child );
-        }
-    */
-    return child;    
-    }
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneralInfo.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +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 "MemSpyViewThreadInfoItemGeneralInfo.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewThreadInfoItemHeap.h"
-
-
-/*
-CMemSpyViewThreadInfoItemGeneralInfo::CMemSpyViewThreadInfoItemGeneralInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeGeneralInfo )
-    {
-    }
-*/
-CMemSpyViewThreadInfoItemGeneralInfo::CMemSpyViewThreadInfoItemGeneralInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeGeneralInfo )
-    {
-    }
-
-
-TBool CMemSpyViewThreadInfoItemGeneralInfo::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-
-
-void CMemSpyViewThreadInfoItemGeneralInfo::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneric.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,330 +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 "MemSpyViewThreadInfoItemGeneric.h"
-
-// System includes
-#include <AknWaitDialog.h>
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewThreadInfoItemList.h"
-#include "MemSpyUiUtils.h"
-
-// Constants
-const TInt KMemSpyConstructionCheckerTimerPeriod = 500000; // 1/2 second
-
-CMemSpyViewThreadInfoItemGeneric::CMemSpyViewThreadInfoItemGeneric( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcessId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewBase( aSession, aObserver )//, iThreadId( aId ), iType( aType )		//iContainer( aInfoContainer )
-    {
-	iParentProcessId = aProcessId;
-	iThreadId = aId;
-	iType = aType;
-    }
-
-
-CMemSpyViewThreadInfoItemGeneric::~CMemSpyViewThreadInfoItemGeneric()
-    {/* TODO:
-    if  ( iInfoItem )
-        {
-        iInfoItem->Close();
-        }    
-    DestroyWaitNote();    
-    */
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-	const TPtrC pTitle( MemSpyUiUtils::ThreadInfoItemNameByType( iType ) );
-	SetTitleL( pTitle );
-
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    }
-
-
-CMemSpyProcess& CMemSpyViewThreadInfoItemGeneric::Process() const
-    {
-  //  return iContainer.Thread().Process();
-    }
-
-
-CMemSpyThread& CMemSpyViewThreadInfoItemGeneric::Thread() const
-    {
-  //  return iContainer.Thread();
-    }
-
-
-CMemSpyThreadInfoContainer& CMemSpyViewThreadInfoItemGeneric::Container() const
-    {
- //   return iContainer;
-    }
-
-
-CMemSpyThreadInfoItemBase& CMemSpyViewThreadInfoItemGeneric::InfoItem() const
-    {
- //   __ASSERT_ALWAYS( iInfoItem != NULL, User::Invariant() );
- //   return *iInfoItem;
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::RefreshL()
-    {
- //   iInfoItem->RebuildL();     //TODO
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemGeneric::ViewType() const
-    {
-    TMemSpyViewType type = EMemSpyViewTypeNone;
-    //
-    //switch( iInfoItem->Type() )
-    switch( iType )
-        {
-    case EMemSpyThreadInfoItemTypeHeap:
-        type = EMemSpyViewTypeThreadInfoItemHeap;
-        break;
-    case EMemSpyThreadInfoItemTypeStack:
-        type = EMemSpyViewTypeThreadInfoItemStack;
-        break;
-    case EMemSpyThreadInfoItemTypeChunk:
-        type = EMemSpyViewTypeThreadInfoItemChunk;
-        break;
-    case EMemSpyThreadInfoItemTypeCodeSeg:
-        type = EMemSpyViewTypeThreadInfoItemCodeSeg;
-        break;
-    case EMemSpyThreadInfoItemTypeServer:
-        type = EMemSpyViewTypeThreadInfoItemServer;
-        break;
-    case EMemSpyThreadInfoItemTypeSession:
-        type = EMemSpyViewTypeThreadInfoItemSession;
-        break;
-    case EMemSpyThreadInfoItemTypeSemaphore:
-        type = EMemSpyViewTypeThreadInfoItemSemaphore;
-        break;
-    case EMemSpyThreadInfoItemTypeMutex:
-        type = EMemSpyViewTypeThreadInfoItemMutex;
-        break;
-    case EMemSpyThreadInfoItemTypeTimer:
-        type = EMemSpyViewTypeThreadInfoItemTimer;
-        break;
-    case EMemSpyThreadInfoItemTypeLDD:
-        type = EMemSpyViewTypeThreadInfoItemLDD;
-        break;
-    case EMemSpyThreadInfoItemTypePDD:
-        type = EMemSpyViewTypeThreadInfoItemPDD;
-        break;
-    case EMemSpyThreadInfoItemTypeLogicalChannel:
-        type = EMemSpyViewTypeThreadInfoItemLogicalChannel;
-        break;
-    case EMemSpyThreadInfoItemTypeChangeNotifier:
-        type = EMemSpyViewTypeThreadInfoItemChangeNotifier;
-        break;
-    case EMemSpyThreadInfoItemTypeUndertaker:
-        type = EMemSpyViewTypeThreadInfoItemUndertaker;
-        break;
-    case EMemSpyThreadInfoItemTypeMessageQueue:
-        type = EMemSpyViewTypeThreadInfoItemMessageQueue;
-        break;
-    case EMemSpyThreadInfoItemTypeConditionalVariable:
-        type = EMemSpyViewTypeThreadInfoItemConditionalVariable;
-        break;
-    case EMemSpyThreadInfoItemTypeOpenFiles:
-        type = EMemSpyViewTypeThreadInfoItemOpenFiles;
-        break;
-    case EMemSpyThreadInfoItemTypeActiveObject:
-        type = EMemSpyViewTypeThreadInfoItemActiveObject;
-        break;
-    case EMemSpyThreadInfoItemTypeGeneralInfo:
-        type = EMemSpyViewTypeThreadInfoItemGeneralInfo;
-        break;
-    case EMemSpyThreadInfoItemTypeOtherThreads:
-        type = EMemSpyViewTypeThreadInfoItemOtherThreads;
-        break;
-    case EMemSpyThreadInfoItemTypeOtherProcesses:
-        type = EMemSpyViewTypeThreadInfoItemOtherProcesses;
-        break;
-    case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
-        type = EMemSpyViewTypeThreadInfoItemOwnedThreadHandles;
-        break;
-    case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
-        type = EMemSpyViewTypeThreadInfoItemOwnedProcessHandles;
-        break;
-
-    default:
-        //__ASSERT_DEBUG( EFalse, User::Invariant() );
-        break;
-        }
-    //
-    return type;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemGeneric::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemList* parent = new(ELeave) CMemSpyViewThreadInfoItemList( iMemSpySession, iObserver, iParentProcessId, iThreadId );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), iType );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemGeneric::PrepareChildViewL()
-    {
-    //__ASSERT_ALWAYS( iInfoItem != NULL, User::Invariant() );
-    CMemSpyViewBase* child = NULL;
-    //
-    return child;
-    }
-
-
-TBool CMemSpyViewThreadInfoItemGeneric::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::SetListBoxModelL()
-    {
-	iMemSpySession.GetThreadInfoItems( iThreadInfoItems, iThreadId, iType );
-	
-	iModel = new (ELeave) CDesC16ArrayFlat( iThreadInfoItems.Count() + 10 );
-	
-	for( TInt i=0; i<iThreadInfoItems.Count(); i++)
-		{						
-		HBufC* combined = HBufC::NewLC( iThreadInfoItems[i]->Caption().Length() + iThreadInfoItems[i]->Value().Length() + 30 );		
-			/*
-		else if ( combined->Des().MaxLength() < requiredLength )
-			{
-			combined = combined->ReAllocL( requiredLength );
-			}*/				
-        
-		TPtr pCombined( combined->Des() );
-		pCombined.Zero();
-		pCombined.Copy( _L("\t") );
-		if( iThreadInfoItems[i]->Caption() != KNullDesC )
-			pCombined.Append( iThreadInfoItems[i]->Caption() );
-		if( iType != EMemSpyThreadInfoItemTypeChunk )
-			{
-			pCombined.Append( _L("\t\t") );
-			pCombined.Append( iThreadInfoItems[i]->Value() );
-			}					
-		
-		iModel->AppendL( pCombined );								
-		}	
-	
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    //listbox->Model()->SetItemTextArray( iInfoItem );
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::HandleListBoxItemSelectedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-
-void CMemSpyViewThreadInfoItemGeneric::ShowWaitNoteL()
-    {
-    // Ugly, but I'm not adding an observer mechanism just for this wait dialog.
-   // __ASSERT_ALWAYS( iWaitConstructionChecker == NULL, User::Invariant() );
-    iWaitConstructionChecker = CPeriodic::NewL( CActive::EPriorityLow );
-    iWaitConstructionChecker->Start( KMemSpyConstructionCheckerTimerPeriod, 
-                                     KMemSpyConstructionCheckerTimerPeriod, 
-                                     TCallBack( CheckForItemConstructionComplete, this ) );
-
-    if  ( !iWaitNote )
-        {
-        iWaitNote = new ( ELeave ) CAknWaitDialog( reinterpret_cast<CEikDialog**> ( &iWaitNote ), ETrue );
-        iWaitNote->ExecuteDlgLD( CAknNoteDialog::ENoTone, R_MEMSPY_PREPARING_INFO_ITEM_CONTAINER_WAIT_NOTE );
-        }
-    }
-
-
-void CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote()
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote() - START" );
-#endif
-	//
-    delete iWaitConstructionChecker;
-    iWaitConstructionChecker = NULL;
-    //
-    if  ( iWaitNote )
-        {
-        TRAP_IGNORE( iWaitNote->ProcessFinishedL() ); // deletes the dialog
-        iWaitNote = NULL;
-        }
-	//
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote() - END" );
-#endif
-    }
-
-
-TInt CMemSpyViewThreadInfoItemGeneric::CheckForItemConstructionComplete( TAny* aSelf )
-    {
-	/*
-    CMemSpyViewThreadInfoItemGeneric& self = *reinterpret_cast< CMemSpyViewThreadInfoItemGeneric* >( aSelf );
-    */
-    //
-#ifdef _DEBUG
-/*   RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::CheckForItemConstructionComplete() - ready status: %d, iType: %d", self.iInfoItem->IsReady(), self.iInfoItem->Type() );*/
-#endif
-	//
-    /*
-    TBool callAgain = ETrue;
-    if  ( self.iInfoItem->IsReady() )
-        {
-        self.DestroyWaitNote();
-        callAgain = EFalse;
-        }
-    //
-    return callAgain;
-    */
-    }
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemHeap.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +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 "MemSpyViewThreadInfoItemHeap.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewThreadInfoItemHeap.h"
-#include "MemSpyAppUi.h" 
-
-
-/*
-CMemSpyViewThreadInfoItemHeap::CMemSpyViewThreadInfoItemHeap( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeHeap )
-    {
-    }
-*/
-CMemSpyViewThreadInfoItemHeap::CMemSpyViewThreadInfoItemHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId , EMemSpyThreadInfoItemTypeHeap )
-    {
-    } 
-
-
-TBool CMemSpyViewThreadInfoItemHeap::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-#ifndef __WINS__
-	case EMemSpyCmdHeapDataDump:
-        OnCmdHeapDataL();
-        break;
-#endif
-	case EMemSpyCmdHeapCellListing:
-        OnCmdHeapCellListingL();
-        break;
-    case EMemSpyCmdHeapInfoThread:
-        OnCmdHeapInfoL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemHeap::OnCmdHeapDataL()
-    {
-	iMemSpySession.OutputThreadHeapDataL( ThreadId() );    
-    }
-
-
-void CMemSpyViewThreadInfoItemHeap::OnCmdHeapCellListingL()
-    {
-    iMemSpySession.OutputThreadCellListL( ThreadId() );
-    }
-
-
-void CMemSpyViewThreadInfoItemHeap::OnCmdHeapInfoL()
-    {
-	iMemSpySession.OutputHeapInfoUserL( ThreadId() );    
-    }
-
-
-void CMemSpyViewThreadInfoItemHeap::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-        //aMenuPane->SetItemDimmed( EMemSpyCmdHeap, Thread().IsDead() ); //TODO
-        }
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,435 +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 "MemSpyViewThreadInfoItemList.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#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"
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewThreadInfoItemHeap.h"
-#include "MemSpyViewThreadInfoItemStack.h"
-#include "MemSpyViewThreadInfoItemChunk.h"
-#include "MemSpyViewThreadInfoItemCodeSeg.h"
-#include "MemSpyViewThreadInfoItemServer.h"
-#include "MemSpyViewThreadInfoItemActiveObject.h"
-#include "MemSpyViewThreadInfoItemGeneralInfo.h"
-#include "MemSpyViewThreadInfoItemMemoryTracking.h"
-
-// Constants
-const TInt KMemSpyIdleResetListboxTimerPeriod = 250000;
-
-
-CMemSpyViewThreadInfoItemList::CMemSpyViewThreadInfoItemList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcess, TThreadId aThread )
-:   CMemSpyViewBase( aSession, aObserver ), iParentProcessId( aProcess ), iThreadId( aThread )
-    {
-    }
-
-
-CMemSpyViewThreadInfoItemList::~CMemSpyViewThreadInfoItemList()
-    {
-	/* TODO:
-    TRAP_IGNORE( 
-        CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
-        container.ObserverRemove( *this );
-    );
-	*/
-    }
-
-
-
-void CMemSpyViewThreadInfoItemList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TMemSpyThreadInfoItemType aType )
-    {
-    _LIT( KTitle, "Thread Objects" );
-    SetTitleL( KTitle );
-    //
-    //iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityIdle );    
-    /* TODO: to solve observer
-    CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
-    container.ObserverAddL( *this );
-    */    
-    CMemSpyViewBase::ConstructL( aRect, aContainer );
-    //
-    if( aType > EMemSpyThreadInfoItemTypeFirst || aType < EMemSpyThreadInfoItemTypeLast )
-    	{
-		TInt index(aType);
-		if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
-			{
-			iListBox->SetCurrentItemIndex( index );
-			HandleListBoxItemSelectedL( index );
-			}
-    	}
-    else
-    	{
-		iListBox->SetCurrentItemIndex( 0 );
-        HandleListBoxItemSelectedL( 0 );
-    	}
-    /*if  ( aSelectionRune )
-        {		
-        CMemSpyThreadInfoItemBase* selectedItem = reinterpret_cast< CMemSpyThreadInfoItemBase* >( aSelectionRune );
-        const TInt index = container.InfoItemIndexByType( selectedItem->Type() );
-        if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
-            {
-            iListBox->SetCurrentItemIndex( index );
-            HandleListBoxItemSelectedL( index );
-            }
-        }
-    else if ( container.MdcaCount() > 0 )
-        {*/
-        //iListBox->SetCurrentItemIndex( 0 );
-        //HandleListBoxItemSelectedL( 0 );
-        //}
-    }
-
-const CMemSpyThreadInfoItemBase& CMemSpyViewThreadInfoItemList::CurrentInfoItem() const
-    {
-    //__ASSERT_ALWAYS( iCurrentInfoItem != NULL, User::Invariant() );
-    return *iCurrentInfoItem;
-    }
-
-void CMemSpyViewThreadInfoItemList::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemList::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemList;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareParentViewL()
-    {
-    CMemSpyViewBase* parent = new(ELeave) CMemSpyViewThreads( iMemSpySession, iObserver, iParentProcessId, iThreadId );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-
-    TMemSpyThreadInfoItemType type;
-    iMemSpySession.GetInfoItemType( iCurrentInfoItemId, iThreadId, type );
-    
-    switch( type )
-        {    	
-    case EMemSpyThreadInfoItemTypeHeap:
-        child = new(ELeave) CMemSpyViewThreadInfoItemHeap( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
-        break;        
-    case EMemSpyThreadInfoItemTypeStack:
-        child = new(ELeave) CMemSpyViewThreadInfoItemStack( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
-        break;        
-    case EMemSpyThreadInfoItemTypeChunk:
-        child = new(ELeave) CMemSpyViewThreadInfoItemChunk( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
-        break;
-    case EMemSpyThreadInfoItemTypeCodeSeg:
-        child = new(ELeave) CMemSpyViewThreadInfoItemCodeSeg( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
-        break;        
-    case EMemSpyThreadInfoItemTypeServer:
-        child = new(ELeave) CMemSpyViewThreadInfoItemServer( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
-        break;        
-    case EMemSpyThreadInfoItemTypeActiveObject:
-        child = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
-        break;             
-    case EMemSpyThreadInfoItemTypeGeneralInfo:
-        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:
-    case EMemSpyThreadInfoItemTypeTimer:
-    case EMemSpyThreadInfoItemTypeLDD:
-    case EMemSpyThreadInfoItemTypePDD:
-    case EMemSpyThreadInfoItemTypeLogicalChannel:
-    case EMemSpyThreadInfoItemTypeChangeNotifier:
-    case EMemSpyThreadInfoItemTypeUndertaker:
-    case EMemSpyThreadInfoItemTypeMessageQueue:
-    case EMemSpyThreadInfoItemTypeConditionalVariable:
-    case EMemSpyThreadInfoItemTypeOpenFiles:
-    case EMemSpyThreadInfoItemTypeOtherThreads:
-    case EMemSpyThreadInfoItemTypeOtherProcesses:
-    case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
-    case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
-        child = new(ELeave) CMemSpyViewThreadInfoItemGeneric( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
-        break;
-    
-    default:
-       // __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0) );
-        break;        
-        }
-       
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    }
-
-
-TBool CMemSpyViewThreadInfoItemList::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-	case EMemSpyCmdThreadInfoHandles:
-        OnCmdInfoHandlesL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-    
-void CMemSpyViewThreadInfoItemList::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-     //   aMenuPane->SetItemDimmed( EMemSpyCmdThread, iThread.IsDead() ); //TODO
-        }
-    else if ( aResourceId == MenuCascadeResourceId() )
-        {
-        // Always remove these items - they are only shown in the master thread view
-        aMenuPane->SetItemDimmed( EMemSpyCmdThreadSetPriority, ETrue );
-        aMenuPane->SetItemDimmed( EMemSpyCmdThreadEnd, ETrue );
-        }
-    }
-
-
-void CMemSpyViewThreadInfoItemList::OnCmdInfoHandlesL()
-    {
-    iMemSpySession.OutputThreadInfoHandlesL( iThreadId );
-    }
-
-
-void CMemSpyViewThreadInfoItemList::HandleMemSpyEngineInfoContainerEventL( TEvent aEvent, TMemSpyThreadInfoItemType aType )
-    {/*
-    if  ( aEvent == EInfoItemChanged )
-        {
-        }
-    else if ( aEvent == EInfoItemDestroyed )
-        {
-        if  ( iCurrentInfoItem && iCurrentInfoItem->Type() == aType )
-            {
-            iCurrentInfoItem->Close();
-            iCurrentInfoItem = NULL;
-            }
-        }
-
-    iIdleResetListboxTimer->Cancel();
-    iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) );
-    */
-    }
-
-
-void CMemSpyViewThreadInfoItemList::SetListBoxModelL()
-    {	
-	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 );
-    }
-
-
-void CMemSpyViewThreadInfoItemList::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewThreadInfoItemList::HandleListBoxItemSelectedL( TInt aIndex )
-    {
-	iCurrentInfoItemId = aIndex;
-	
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-TInt CMemSpyViewThreadInfoItemList::IdleUpdateListBoxModel( TAny* aSelf )
-    {
-    CMemSpyViewThreadInfoItemList* self = reinterpret_cast< CMemSpyViewThreadInfoItemList* >( aSelf );
-    TRAP_IGNORE( self->DoIdleUpdateListBoxModelL() );
-    return EFalse;
-    }
-
-
-void CMemSpyViewThreadInfoItemList::DoIdleUpdateListBoxModelL()
-    {
-	/*
-    CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
-
-    // Try to maintain current item selection if at all possible.
-    TMemSpyThreadInfoItemType type = EMemSpyThreadInfoItemTypeHeap;
-    if  ( iCurrentInfoItem )
-        {
-        type = iCurrentInfoItem->Type();
-        }
-   
-    // Update list box & model
-    SetListBoxModelL();
-    iListBox->HandleItemAdditionL();
-    RefreshL();
-    
-    // Try to select previous item if it is still available
-    const TInt index = container.InfoItemIndexByType( type );
-    if  ( index >= 0 && index < container.MdcaCount() )
-        {
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        }
-
-    iIdleResetListboxTimer->Cancel();
-    */
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemMemoryTracking.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,664 +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 "MemSpyViewThreadInfoItemMemoryTracking.h"
-
-// System includes
-#include <AknQueryDialog.h>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyengineprocessmemorytracker.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-
-
-CMemSpyViewThreadInfoItemMemoryTracking::CMemSpyViewThreadInfoItemMemoryTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverAddL( *this );
-
-    // Reset the title
-    _LIT( KCustomTitle, "Memory Statistics" );
-    SetTitleL( KCustomTitle );
-    
-    // Select the appropriate view
-    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune );
-    const TInt index = IndexByViewType( viewType );
-    //
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::ConstructL() - aSelectionRune: 0x%08x, viewType: %d, index: %d", aSelectionRune, viewType, index );
-#endif
-    //
-    if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
-        {
-        iListBox->SetCurrentItemIndex( index );
-        HandleListBoxItemSelectedL( index );
-        }
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTracking::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatistics;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTracking::PrepareParentViewL()
-    {
-    CMemSpyViewBase* parent = CMemSpyViewThreadInfoItemGeneric::PrepareParentViewL();
-    
-    // Stop observing changes
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverRemove( *this );
-
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTracking::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    //
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    const TInt index = iListBox->CurrentItemIndex();
-    if  ( index == 1 )
-        {
-        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingCurrent( iEngine, iObserver, Container() );
-        }
-    else if ( index == 2 )
-        {
-        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingHWM( iEngine, iObserver, Container() );
-        }
-    else if ( index == 3 )
-        {
-        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingPeak( iEngine, iObserver, Container() );
-        }
-    //        
-    if  ( child )
-        {
-        CleanupStack::PushL( child );
-        child->ConstructL( Rect(), *Parent() );
-        CleanupStack::Pop( child );
-           
-        // Stop observing changes
-        item->TrackingObserverRemove( *this );
-        }
-    //
-    return child;
-    }
-
-
-TBool CMemSpyViewThreadInfoItemMemoryTracking::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdMemoryTrackingStart:
-        OnCmdTrackingStartL();
-        break;
-    case EMemSpyCmdMemoryTrackingStop:
-        OnCmdTrackingStopL();
-        break;
-    case EMemSpyCmdMemoryTrackingHWMReset:
-        OnCmdHWMResetL();
-        break;
-    case EMemSpyCmdMemoryTrackingTotalWithSharedMem:
-        OnCmdTotalWithSharedMemL();
-        break;
-    case EMemSpyCmdMemoryTrackingTotalWithoutSharedMem:
-        OnCmdTotalWithoutSharedMemL();
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-TInt CMemSpyViewThreadInfoItemMemoryTracking::IndexByViewType( TMemSpyViewType aType )
-    {
-    TInt index = 0;
-    //
-    switch( aType )
-        {
-    default:
-    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent:
-        index = 1;
-        break;
-    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM:
-        index = 2;
-        break;
-    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak:
-        index = 3;
-        break;
-        }
-    //
-    return index;
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::HandleListBoxItemActionedL( TInt aIndex )
-    {
-    if  ( aIndex == 0 )
-        {
-        CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-        if  ( item->TrackingActive() )
-            {
-            OnCmdTrackingStopL();
-            }
-        else
-            {
-            OnCmdTrackingStartL();
-            }
-        }
-
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-
-    // Ensure we refresh the listbox content
-    iListBox->DrawDeferred();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    iListBox->DrawDeferred();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == MenuCascadeResourceId() )
-        {
-        CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-        //
-        if  ( !item->TrackerExists() || item->TrackingActive() )
-            {
-            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingStart, ETrue );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingStop, ETrue );
-            }
-        //
-        if ( item->TotalIncludesSharedMemory() )
-            {
-            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingTotalWithSharedMem, ETrue );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingTotalWithoutSharedMem, ETrue );
-            }
-
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingHWMReset, Thread().IsDead() );
-        }
-    else if ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTracking, Thread().IsDead() );
-        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStart, Thread().IsDead() );
-        }
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryTrackingStartedL()
-    {
-    RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryTrackingStoppedL()
-    {
-    RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
-    {
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL() - START - this: 0x%08x", this );
-#endif 
-
-    CMemSpyViewBase::RefreshL();
-    iListBox->DrawDeferred();
-
-#ifdef _DEBUG
-    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL() - END - this: 0x%08x", this );
-#endif 
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTrackingStartL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingStartL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTrackingStopL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingStopL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdHWMResetL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingResetHWML();
-    RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTotalWithSharedMemL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingSetTotalIncludesSharedMemoryL( ETrue );
-    RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTotalWithoutSharedMemL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingSetTotalIncludesSharedMemoryL( EFalse );
-    RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewThreadInfoItemMemoryTrackingCurrent::CMemSpyViewThreadInfoItemMemoryTrackingCurrent( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverAddL( *this );
-
-    // Reset the title
-    _LIT( KCustomTitle, "Current Statistics" );
-    SetTitleL( KCustomTitle );
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingCurrent::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingCurrent::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    
-    // Stop observing changes
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverRemove( *this );
-
-    return parent;
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::SetListBoxModelL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    MDesCArray* model = &item->InfoCurrent();
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-    
-
-void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
-    {
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewThreadInfoItemMemoryTrackingHWM::CMemSpyViewThreadInfoItemMemoryTrackingHWM( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingHWM::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverAddL( *this );
-
-    // Reset the title
-    _LIT( KCustomTitle, "HWM Statistics" );
-    SetTitleL( KCustomTitle );
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingHWM::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingHWM::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    
-    // Stop observing changes
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverRemove( *this );
-
-    return parent;
-    }
-
-
-TBool CMemSpyViewThreadInfoItemMemoryTrackingHWM::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdMemoryTrackingHWMReset:
-        OnCmdHWMResetL();
-        break;
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingHWM::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingHWM::SetListBoxModelL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    MDesCArray* model = &item->InfoHWM();
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-    
-
-void CMemSpyViewThreadInfoItemMemoryTrackingHWM::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
-    {
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingHWM::OnCmdHWMResetL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingResetHWML();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyViewThreadInfoItemMemoryTrackingPeak::CMemSpyViewThreadInfoItemMemoryTrackingPeak( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingPeak::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverAddL( *this );
-
-    // Reset the title
-    _LIT( KCustomTitle, "Peak Statistics" );
-    SetTitleL( KCustomTitle );
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingPeak::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingPeak::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
-    CleanupStack::Pop( parent );
-    
-    // Stop observing changes
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    item->TrackingObserverRemove( *this );
-
-    return parent;
-    }
-
-
-TBool CMemSpyViewThreadInfoItemMemoryTrackingPeak::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingPeak::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-void CMemSpyViewThreadInfoItemMemoryTrackingPeak::SetListBoxModelL()
-    {
-    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
-    MDesCArray* model = &item->InfoPeak();
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-    
-
-void CMemSpyViewThreadInfoItemMemoryTrackingPeak::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
-    {
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemServer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +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 "MemSpyViewThreadInfoItemServer.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyenginehelperserver.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-
-// Constants
-const TInt KMemSpyServerSessionsIndex = 2;
-
-
-
-CMemSpyViewThreadInfoItemServer::CMemSpyViewThreadInfoItemServer( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeServer )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemServer::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    // Causes list of server's to be prepared
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-
-    _LIT( KTitle, "Server List" );
-    SetTitleL( KTitle );
-
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreadInfoItemServer::ConstructL() - aSelectionRune: 0x%08x", aSelectionRune );
-#endif
-    /* TODO
-    // Try to select the correct server
-    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
-    */
-    TInt selectedIndex = 0;
-    /*if  ( aSelectionRune )
-        {
-        // Treat the rune as a handle, and try to look it up
-        selectedIndex = infoItem->DetailsIndexByHandle( aSelectionRune );
-        }
-
-    // Select item
-    if  ( infoItem->DetailsCount() > 0 )
-        {*/
-        iListBox->SetCurrentItemIndex( selectedIndex );
-        HandleListBoxItemSelectedL( selectedIndex );
-        /*}*/
-    }
-
-
-TBool CMemSpyViewThreadInfoItemServer::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
-    return handled;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemServer::PrepareChildViewL()
-    {
-	/*
-    CMemSpyViewThreadInfoItemServerDetails* child = new(ELeave) CMemSpyViewThreadInfoItemServerDetails( iEngine, iObserver, iContainer, iCurrentInfoItemDetails );
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( child );
-    return child;
-    */
-    }
-
-
-void CMemSpyViewThreadInfoItemServer::HandleListBoxItemSelectedL( TInt aIndex )
-    {/* TODO
-    // Identify the type of item to display...
-    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
-    iCurrentInfoItemDetails = infoItem->DetailsAt( aIndex );
-
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreadInfoItemServer::HandleListBoxItemSelectedL() - iCurrentInfoItemDetails.iHandle: 0x%08x", iCurrentInfoItemDetails.iHandle );
-#endif
-*/
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
-CMemSpyViewThreadInfoItemServerDetails::CMemSpyViewThreadInfoItemServerDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeServer ), iInfoItemDetails( aInfoItemDetails )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemServerDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    // Causes list of server's to be prepared
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-
-    _LIT( KTitle, "Server Details" );
-    SetTitleL( KTitle );
-
-    // Try to select the correct server
-    TInt selectedIndex = 0;
-    if  ( aSelectionRune )
-        {
-        // Presence of non-null item means that we came from the "Server sessions" list
-        selectedIndex = KMemSpyServerSessionsIndex;
-        }
-
-    // Select item
-    iListBox->SetCurrentItemIndex( selectedIndex );
-    HandleListBoxItemSelectedL( selectedIndex );
-    }
-
-
-TBool CMemSpyViewThreadInfoItemServerDetails::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
-    return handled;
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemServerDetails::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemServerDetails;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemServerDetails::PrepareChildViewL()
-    {
-    CMemSpyViewBase* child = NULL;
-    const TInt currentIndex = iListBox->CurrentItemIndex();
-    //
-    if  ( currentIndex == KMemSpyServerSessionsIndex )
-        {
-        CMemSpyViewThreadInfoItemServerSessions* serverSessions = new(ELeave) CMemSpyViewThreadInfoItemServerSessions( iEngine, iObserver, iInfoItem->Container(), iInfoItemDetails );
-        CleanupStack::PushL( serverSessions );
-        serverSessions->ConstructL( Rect(), *Parent(), NULL );
-        CleanupStack::Pop( serverSessions );
-        child = serverSessions;
-        }
-    //
-    return child;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemServerDetails::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemServer* parent = new(ELeave) CMemSpyViewThreadInfoItemServer( iEngine, iObserver, iInfoItem->Container() );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), iInfoItemDetails.iHandle );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewThreadInfoItemServerDetails::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(4);
-    CleanupStack::PushL( model );
-
-    TBuf<KMaxFullName + 1> item;
-
-    // 1st item = session type
-    const TPtrC pServerSessionType = CMemSpyThreadInfoServer::SessionType( iInfoItemDetails.iSessionType );
-    _LIT(KItem1Format, "\tServer Type\t\t%S");
-    item.Format( KItem1Format, &pServerSessionType );
-    model->AppendL( item );
-
-    // 2nd item = session count
-    _LIT(KItem2Format, "\tConnected Sessions\t\t%d");
-    item.Format( KItem2Format, iInfoItemDetails.iCount );
-    model->AppendL( item );
-
-    // 3rd item = view sessions
-    if  ( iInfoItem->Container().MdcaCount() > 0 )
-        {
-        _LIT(KItem3Format, "\tView Sessions");
-        model->AppendL( KItem3Format );
-        }
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-*/
-/*
-void CMemSpyViewThreadInfoItemServerDetails::HandleListBoxItemActionedL( TInt /*aIndex*/ /*)
-*/
-/*    
-   	{
-    // Notify observer about an item being 'fired'    
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewThreadInfoItemServerDetails::HandleListBoxItemSelectedL( TInt /*aIndex*/ /*)
-*/
-/*
-    {
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
-
-
-CMemSpyViewThreadInfoItemServerSessions::CMemSpyViewThreadInfoItemServerSessions( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails )
-:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeServer ), iInfoItemDetails( aInfoItemDetails )
-    {
-    }
-
-
-void CMemSpyViewThreadInfoItemServerSessions::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
-    //
-    _LIT( KTitle, "Connected Session List" );
-    SetTitleL( KTitle );
-    }
-
-
-TBool CMemSpyViewThreadInfoItemServerSessions::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
-    return handled;
-    }
-
-
-TMemSpyViewType CMemSpyViewThreadInfoItemServerSessions::ViewType() const
-    {
-    return EMemSpyViewTypeThreadInfoItemServerSessions;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreadInfoItemServerSessions::PrepareParentViewL()
-    {
-    CMemSpyViewThreadInfoItemServerDetails* parent = new(ELeave) CMemSpyViewThreadInfoItemServerDetails( iEngine, iObserver, iInfoItem->Container(), iInfoItemDetails );
-    CleanupStack::PushL( parent );
-    parent->ConstructL( Rect(), *Parent(), this );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-void CMemSpyViewThreadInfoItemServerSessions::SetListBoxModelL()
-    {
-    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(4);
-    CleanupStack::PushL( model );
-
-    // Get handles
-    RArray<TMemSpyDriverServerSessionInfo> sessions;
-    CleanupClosePushL( sessions );
-    iEngine.HelperServer().GetServerSessionsL( iInfoItemDetails, sessions );
-
-    // Prepare items
-    TBuf<KMaxFullName + 1> item;
-    const TInt count = sessions.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        _LIT(KInsertTab, "\t");
-
-        const TMemSpyDriverServerSessionInfo& session = sessions[ i ];
-        item.Zero();
-
-        if  ( session.iOwnerType == TMemSpyDriverServerSessionInfo::EOwnerThread )
-            {
-            // Find the thread object
-            CMemSpyThread* thread = NULL;
-            CMemSpyProcess* process = NULL;
-            //
-            const TInt error = iEngine.Container().ProcessAndThreadByThreadId( session.iOwnerId, process, thread );
-            //
-            if  ( error == KErrNone )
-                {
-                item.Append( process->Name() );
-                item.Append( KInsertTab );
-                item.Append( KInsertTab );
-                item.Append( thread->Name() );
-                }
-            }
-        else if ( session.iOwnerType == TMemSpyDriverServerSessionInfo::EOwnerProcess )
-            {
-            // Find the process object
-            CMemSpyProcess* process = NULL;
-            TRAPD( error, process = &iEngine.Container().ProcessByIdL( session.iOwnerId ) );
-            if  ( error == KErrNone )
-                {
-                item.Append( process->Name() );
-                }
-            }
-
-        if  ( !item.Length() )
-            {
-            // Fall-back case
-            item.Copy( session.iName );
-            }
-
-        // Add item
-        item.Insert( 0, KInsertTab );
-        model->AppendL( item );
-        }
-    CleanupStack::PopAndDestroy( &sessions );
-
-    // Set up list box
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( model );
-    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( model );
-    }
-
-*/
-
-
-
-
-
-
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemStack.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +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 "MemSpyViewThreadInfoItemStack.h"
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspy/engine/memspyenginehelperstack.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewThreads.h"
-#include "MemSpyViewThreadInfoItemHeap.h"
-#include "MemSpyAppUi.h"
-
-
-
-CMemSpyViewThreadInfoItemStack::CMemSpyViewThreadInfoItemStack( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
-:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeStack )
-    {
-    }
-
-
-TBool CMemSpyViewThreadInfoItemStack::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-#ifndef __WINS__
-	case EMemSpyCmdStackDataUser:
-        OnCmdStackDataUserL();
-		break;
-	case EMemSpyCmdStackDataKernel:
-        OnCmdStackDataKernelL();
-		break;
-#endif
-	case EMemSpyCmdStackInfoThread:
-        OnCmdStackInfoL();
-		break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewThreadInfoItemStack::OnCmdStackInfoL()
-    {
-	iMemSpySession.OutputStackInfoL( ThreadId() );   
-    }
-
-
-void CMemSpyViewThreadInfoItemStack::OnCmdStackDataUserL()
-    {
-    iMemSpySession.OutputStackDataL( ThreadId(), EMemSpyDriverDomainUser );
-    }
-
-
-void CMemSpyViewThreadInfoItemStack::OnCmdStackDataKernelL()
-    {
-	iMemSpySession.OutputStackDataL( ThreadId(), EMemSpyDriverDomainKernel );
-    }    
-
-
-void CMemSpyViewThreadInfoItemStack::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-        //TODO aMenuPane->SetItemDimmed( EMemSpyCmdStack, Thread().IsDead() );
-        }
-    }
--- a/memspyui/ui/avkon/src/MemSpyViewThreads.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +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 "MemSpyViewThreads.h"
-
-// System includes
-#include <AknQueryDialog.h>
-#include <memspyui.rsg>
-
-// Engine includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
-#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
-#include <memspy/engine/memspyenginehelperprocess.h>
-#include <memspysession.h>
-
-// User includes
-#include "MemSpyContainerObserver.h"
-#include "MemSpyViewProcesses.h"
-#include "MemSpyViewThreadInfoItemList.h"
-
-
-
-CMemSpyViewThreads::CMemSpyViewThreads( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aId, TThreadId aThreadId )
-:   CMemSpyViewBase( aSession, aObserver ), iParentProcessId( aId ), iCurrentThreadId( aThreadId )
-    {    
-    }
-
-
-CMemSpyViewThreads::~CMemSpyViewThreads()
-    {
-    }
-
- 
-void CMemSpyViewThreads::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
-    {
-	iMemSpySession.GetThreadsL( iParentProcessId, iThreads );
-	
-    _LIT( KTitle, "Threads" );
-    SetTitleL( KTitle );
-    //
-    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
-    //    
-    if( iCurrentThreadId > 0 )
-        {		
-		for( TInt i = 0; i < iThreads.Count() ; i++ )
-			{
-			if( iThreads[i]->Id() == iCurrentThreadId )
-				{
-				const TInt index = i;
-				if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
-					{
-					iListBox->SetCurrentItemIndex( index );
-					HandleListBoxItemSelectedL( index );
-					}
-				}			
-			}
-        }
-    else if( iThreads.Count() > 0 )
-    	{
-		iListBox->SetCurrentItemIndex( 0 );
-		HandleListBoxItemSelectedL( 0 );
-    	}		
-    }
-
-
-TProcessId CMemSpyViewThreads::Process() const
-    {
-	return iParentProcessId;
-    }
-
-
-TThreadId CMemSpyViewThreads::CurrentThread()
-    { 
-	return iCurrentThreadId;
-    }
-
-
-void CMemSpyViewThreads::RefreshL()
-    {
-    SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
-    }
-
-
-TMemSpyViewType CMemSpyViewThreads::ViewType() const
-    {
-    return EMemSpyViewTypeThreads;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreads::PrepareParentViewL()
-    {
-    CMemSpyViewProcesses* parent = new(ELeave) CMemSpyViewProcesses( iMemSpySession, iObserver, iParentProcessId );
-    CleanupStack::PushL( parent );
-    //parent->ConstructL( Rect(), *Parent(), &iParentProcessId );
-    parent->ConstructL( Rect(), *Parent() );
-    CleanupStack::Pop( parent );
-    return parent;
-    }
-
-
-CMemSpyViewBase* CMemSpyViewThreads::PrepareChildViewL()
-    {	
-    CMemSpyViewThreadInfoItemList* child = new(ELeave) CMemSpyViewThreadInfoItemList( iMemSpySession, iObserver, iParentProcessId, iCurrentThreadId );
-    CleanupStack::PushL( child );
-    child->ConstructL( Rect(), *Parent(), EMemSpyThreadInfoItemTypeFirst );
-    CleanupStack::Pop( child );
-    return child;    
-    }
-
-
-void CMemSpyViewThreads::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if  ( aResourceId == R_MEMSPY_MENUPANE )
-        {
-		/*
-        CMemSpyThread& thread = CurrentThread();
-        aMenuPane->SetItemDimmed( EMemSpyCmdThread, thread.IsDead() );
-        */
-		aMenuPane->SetItemDimmed( EMemSpyCmdThread, (iThreads[iListBox->CurrentItemIndex()]->ExitType() !=  EExitPending ));
-        }
-    }
-
-
-TBool CMemSpyViewThreads::HandleCommandL( TInt aCommand )
-    {
-    TBool handled = ETrue;
-    //
-    switch ( aCommand )
-        {
-    case EMemSpyCmdThreadEndKill:
-        OnCmdEndKillL();
-		break;
-    case EMemSpyCmdThreadEndTerminate:
-        OnCmdEndTerminateL();
-		break;
-    case EMemSpyCmdThreadEndPanic:
-        OnCmdEndPanicL();
-		break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteVeryLow:
-	case EMemSpyCmdThreadSetPriorityAbsoluteLowNormal:
-	case EMemSpyCmdThreadSetPriorityAbsoluteLow:
-	case EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal:
-	case EMemSpyCmdThreadSetPriorityAbsoluteBackground:
-	case EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal:
-	case EMemSpyCmdThreadSetPriorityAbsoluteForeground:
-	case EMemSpyCmdThreadSetPriorityAbsoluteHighNormal:
-	case EMemSpyCmdThreadSetPriorityAbsoluteHigh:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime1:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime2:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime3:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime4:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime5:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime6:
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime7: 
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime8:
-        OnCmdSetPriorityL( aCommand );
-        break;
-
-    case EMemSpyCmdThreadInfoHandles:
-        OnCmdInfoHandlesL();
-        break;
-
-    default:
-        handled = CMemSpyViewBase::HandleCommandL( aCommand );
-        break;
-        }
-    //
-    return handled;
-    }
-
-
-void CMemSpyViewThreads::OnCmdEndKillL()
-    {
-	/*
-    TBool doTerminate = ETrue;
-    CMemSpyThread& thread = CurrentThread();
-    //
-    if  ( thread.IsSystemPermanent() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        thread.KillL();
-        RefreshL();
-        }
-    */
-    }
-
-
-void CMemSpyViewThreads::OnCmdEndTerminateL()
-    {
-	/*
-    TBool doTerminate = ETrue;
-    CMemSpyThread& thread = CurrentThread();
-    //
-    if  ( thread.IsSystemPermanent() || thread.IsSystemCritical() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        thread.TerminateL();
-        RefreshL();
-        }
-    */
-    }
-
-
-void CMemSpyViewThreads::OnCmdEndPanicL()
-    {
-	/*
-    TBool doTerminate = ETrue;
-    CMemSpyThread& thread = CurrentThread();
-    //
-    if  ( thread.IsSystemPermanent() || thread.IsSystemCritical() )
-        {
-        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
-        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
-        }
-    //
-    if  ( doTerminate )
-        {
-        thread.PanicL();
-        RefreshL();
-        }
-        */
-    }
-
-
-void CMemSpyViewThreads::OnCmdSetPriorityL( TInt aCommand )
-    {
-	/*
-    TThreadPriority pri = EPriorityAbsoluteBackground;
-    switch( aCommand )
-        {
-	case EMemSpyCmdThreadSetPriorityAbsoluteVeryLow:
-        pri = EPriorityAbsoluteVeryLow;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteLowNormal:
-        pri = EPriorityAbsoluteLowNormal;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteLow:
-        pri = EPriorityAbsoluteLow;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal:
-        pri = EPriorityAbsoluteBackgroundNormal;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteBackground:
-        pri = EPriorityAbsoluteBackground;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal:
-        pri = EPriorityAbsoluteForegroundNormal;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteForeground:
-        pri = EPriorityAbsoluteForeground;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteHighNormal:
-        pri = EPriorityAbsoluteHighNormal;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteHigh:
-        pri = EPriorityAbsoluteHigh;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime1:
-        pri = EPriorityAbsoluteRealTime1;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime2:
-        pri = EPriorityAbsoluteRealTime2;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime3:
-        pri = EPriorityAbsoluteRealTime3;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime4:
-        pri = EPriorityAbsoluteRealTime4;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime5:
-        pri = EPriorityAbsoluteRealTime5;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime6:
-        pri = EPriorityAbsoluteRealTime6;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime7: 
-        pri = EPriorityAbsoluteRealTime7;
-        break;
-	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime8:
-        pri = EPriorityAbsoluteRealTime8;
-        break;
-        }
-
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreads::OnCmdSetPriorityL() - pri: %d", pri );
-#endif
-
-    CMemSpyThread& thread = CurrentThread();
-    thread.SetPriorityL( pri );
-    RefreshL();
-
-#ifdef _DEBUG
-    RDebug::Printf( "CMemSpyViewThreads::OnCmdSetPriorityL() - END" );
-#endif
-	*/
-    }
-
-
-void CMemSpyViewThreads::OnCmdInfoHandlesL()
-    {
-	iMemSpySession.OutputThreadInfoHandlesL( iCurrentThreadId );	
-    }
-
-
-void CMemSpyViewThreads::SetListBoxModelL()
-    {
-	//iMemSpySession.GetThreadsL( iParentProcessId, iThreads );
-	
-	iModel = new (ELeave) CDesC16ArrayFlat( iThreads.Count() ); //array for formated items
-		
-	_LIT( KTab, "\t" );	
-		
-		
-		for( TInt i=0; i < iThreads.Count(); i++ )
-			{
-			HBufC* tempName = HBufC::NewL( iThreads[i]->Name().Length() + 16 );
-	    	CleanupStack::PushL( tempName );
-	    	TPtr tempNamePtr( tempName->Des() );
-	    	tempNamePtr.Copy( KTab );
-	    	tempNamePtr.Append( iThreads[i]->Name() );
-	    	iModel->AppendL( tempNamePtr );
-	    	
-	    	CleanupStack::PopAndDestroy( tempName ); 
-			}			
-	
-    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );    
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    }
-
-
-void CMemSpyViewThreads::HandleListBoxItemActionedL( TInt /*aIndex*/ )
-    {
-    // Notify observer about an item being 'fired'
-    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
-    }
-
-
-void CMemSpyViewThreads::HandleListBoxItemSelectedL( TInt aIndex )
-	{	
-	iCurrentThreadId = iThreads[ aIndex ]->Id();
-	
-    // Notify observer about item selection
-    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
-    }
-
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewType.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +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 "MemSpyViewType.h"
-
-
-
-
-TBool MemSpyViewTypeUtils::IsOpenableItem( TMemSpyViewType aType )
-    {
-    TBool openable = EFalse;
-    //
-    switch( aType )
-        {
-    case EMemSpyViewTypeMainMenu:
-    case EMemSpyViewTypeProcesses:
-    case EMemSpyViewTypeServerList:
-    case EMemSpyViewTypeThreads:
-    case EMemSpyViewTypeThreadInfoItemList:
-    case EMemSpyViewTypeThreadInfoItemServer:
-    case EMemSpyViewTypeThreadInfoItemSession:
-        openable = ETrue;
-        break;
-    default:
-        break;
-        }
-    //
-    return openable;
-    }
-
-
-TBool MemSpyViewTypeUtils::IsThreadInfoItem( TMemSpyViewType aType )
-    {
-    TBool infoItem = ETrue;
-    //
-    switch( aType )
-        {
-    case EMemSpyViewTypeMainMenu:
-    case EMemSpyViewTypeRAMInfo:
-    case EMemSpyViewTypeROMInfo:
-    case EMemSpyViewTypeServerList:
-    case EMemSpyViewTypeOpenFiles:
-    case EMemSpyViewTypeProcesses:
-    case EMemSpyViewTypeThreads:
-    case EMemSpyViewTypeThreadInfoItemList:
-        infoItem = EFalse;
-        break;
-    default:
-        break;
-        }
-    //
-    return infoItem;
-    }
-
-
-TBool MemSpyViewTypeUtils::IsExitableView( TMemSpyViewType aType )
-    {
-    TBool ret = EFalse;
-    //
-    switch( aType )
-        {
-    case EMemSpyViewTypeMainMenu:
-        ret = ETrue;
-        break;
-    default:
-        break;
-        }
-    //
-    return ret;
-    }
-
-
--- a/memspyui/ui/avkon/src/MemSpyViewWindowGroups.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +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 );
-    }
-
-
--- a/memspyui/ui/hb/hb.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = app
-TARGET = MemSpyUI
-DEPENDPATH += . 
-INCLUDEPATH += /epoc32/include/platform/memspy/api
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
-
-load(hb.prf)
-symbian:CONFIG -= symbian_i18n
-
-HEADERS += inc/enginewrapper.h \
-	inc/viewmanager.h \
-	inc/memspyview.h \
-	inc/memspylistview.h \
-	inc/memspymainview.h \
-	inc/memspyprocessview.h \
-	inc/memspythreadview.h \
-	inc/memspythreaddetailindexview.h \
-	inc/memspythreaddetailview.h \
-	inc/memspykernelobjecttypeview.h \
-	inc/memspykernelobjectview.h \
-	inc/memspykernelobjectdetailview.h \
-	inc/memspytrackingview.h \
-	inc/memspyswmtview.h \
-	inc/memspyheapdumpsview.h \
-	inc/memspysettingsview.h
-
-SOURCES += src/main.cpp \
-	src/enginewrapper.cpp \
-	src/viewmanager.cpp \
-	src/memspyview.cpp \
-	src/memspylistview.cpp \
-	src/memspymainview.cpp \
-	src/memspyprocessview.cpp \
-	src/memspythreadview.cpp \
-	src/memspythreaddetailindexview.cpp \
-	src/memspythreaddetailview.cpp \
-	src/memspykernelobjecttypeview.cpp \
-	src/memspykernelobjectview.cpp \
-	src/memspykernelobjectdetailview.cpp \
-	src/memspytrackingview.cpp \
-	src/memspyswmtview.cpp \
-	src/memspyheapdumpsview.cpp \
-	src/memspysettingsview.cpp
-
-RESOURCES +=
-
-symbian: {
-    LIBS += -lestor \
-        -lbafl \
-        -lMemSpyClient
-
-    TARGET.CAPABILITY = ReadUserData WriteUserData ReadDeviceData WriteDeviceData SwEvent PowerMgmt
-
-    TARGET.UID2 = 0x100039CE
-    TARGET.UID3 = 0x2002129F
-    TARGET.SID = 0x2002129F
-    TARGET.VID = 0x101FB657 // Nokia
-
-    TARGET.EPOCHEAPSIZE = 0x10000 0x2000000  // Min 64Kb, Max 32Mb
-
-    ICON = ../../icons/qgn_menu_memspyui.svg
-
-    RSS_RULES += "group_name = \"RnD Tools\"";
-} else {
-    error("Only Symbian supported")
-}
--- a/memspyui/ui/hb/inc/enginewrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,529 +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:
-* 
-*/
-
-#ifndef ENGINEWRAPPER_H_
-#define ENGINEWRAPPER_H_
-
-#include <QObject>
-#include <QVariantList>
-#include <QSettings>
-
-#include <memspysession.h>
-
-typedef quint64 ProcessId;
-typedef quint64 ThreadId;
-
-enum ThreadPriority
-{
-	ThreadPriorityNull=(-30),
-	ThreadPriorityMuchLess=(-20),
-	ThreadPriorityLess=(-10),
-	ThreadPriorityNormal=0,
-	ThreadPriorityMore=10,
-	ThreadPriorityMuchMore=20,
-	ThreadPriorityRealTime=30,
-	ThreadPriorityAbsoluteVeryLow=100,
-	ThreadPriorityAbsoluteLowNormal=150,
-	ThreadPriorityAbsoluteLow=200,
-	ThreadPriorityAbsoluteBackgroundNormal=250,
-	ThreadPriorityAbsoluteBackground=300,
-	ThreadPriorityAbsoluteForegroundNormal=350,
-	ThreadPriorityAbsoluteForeground=400,
-	ThreadPriorityAbsoluteHighNormal=450,
-	ThreadPriorityAbsoluteHigh=500,
-	ThreadPriorityAbsoluteRealTime1=810,
-	ThreadPriorityAbsoluteRealTime2=820,
-	ThreadPriorityAbsoluteRealTime3=830,
-	ThreadPriorityAbsoluteRealTime4=840,
-	ThreadPriorityAbsoluteRealTime5=850,
-	ThreadPriorityAbsoluteRealTime6=860,
-	ThreadPriorityAbsoluteRealTime7=870, 
-	ThreadPriorityAbsoluteRealTime8=880
-};
-
-enum KernelObjectType
-{
-	KernelObjectTypeUnknown = -1,
-	KernelObjectTypeThread = 0,
-	KernelObjectTypeProcess,
-	KernelObjectTypeChunk,
-	KernelObjectTypeLibrary,
-	KernelObjectTypeSemaphore,
-	KernelObjectTypeMutex,
-	KernelObjectTypeTimer,
-	KernelObjectTypeServer,
-	KernelObjectTypeSession,
-	KernelObjectTypeLogicalDevice,
-	KernelObjectTypePhysicalDevice,
-	KernelObjectTypeLogicalChannel,
-	KernelObjectTypeChangeNotifier,
-	KernelObjectTypeUndertaker,
-	KernelObjectTypeMsgQueue,
-	KernelObjectTypePropertyRef,
-	KernelObjectTypeCondVar
-};
-
-enum ThreadInfoType
-{
-	ThreadInfoTypeGeneral = EMemSpyThreadInfoItemTypeGeneralInfo,
-	ThreadInfoTypeHeap = EMemSpyThreadInfoItemTypeHeap,
-	ThreadInfoTypeStack = EMemSpyThreadInfoItemTypeStack,
-	ThreadInfoTypeChunk = EMemSpyThreadInfoItemTypeChunk,
-	ThreadInfoTypeCodeSeg = EMemSpyThreadInfoItemTypeCodeSeg,
-	ThreadInfoTypeOpenFiles = EMemSpyThreadInfoItemTypeOpenFiles,
-	ThreadInfoTypeActiveObjects = EMemSpyThreadInfoItemTypeActiveObject,
-	ThreadInfoTypeOwnedThreadHandles = EMemSpyThreadInfoItemTypeOwnedThreadHandles,
-	ThreadInfoTypeOwnedProcessHandles = EMemSpyThreadInfoItemTypeOwnedProcessHandles,
-	ThreadInfoTypeServer = EMemSpyThreadInfoItemTypeServer,
-	ThreadInfoTypeSession = EMemSpyThreadInfoItemTypeSession,
-	ThreadInfoTypeSemaphore = EMemSpyThreadInfoItemTypeSemaphore,
-	ThreadInfoTypeOtherThreads = EMemSpyThreadInfoItemTypeOtherThreads,
-	ThreadInfoTypeOtherProcesses = EMemSpyThreadInfoItemTypeOtherProcesses,
-	ThreadInfoTypeMutex = EMemSpyThreadInfoItemTypeMutex,
-	ThreadInfoTypeTimer = EMemSpyThreadInfoItemTypeTimer,
-	ThreadInfoTypeChannel = EMemSpyThreadInfoItemTypeLogicalChannel,
-	ThreadInfoTypeChangeNotifier = EMemSpyThreadInfoItemTypeChangeNotifier,
-	ThreadInfoTypeUndertaker = EMemSpyThreadInfoItemTypeUndertaker,
-	ThreadInfoTypeMessageQueue = EMemSpyThreadInfoItemTypeMessageQueue,
-	ThreadInfoTypeConditionalVariable = EMemSpyThreadInfoItemTypeConditionalVariable,
-	ThreadInfoTypeLDD = EMemSpyThreadInfoItemTypeLDD,
-	ThreadInfoTypePDD = EMemSpyThreadInfoItemTypePDD,
-};
-
-enum DeviceWideOperation
-{
-	OutputPhoneInfo = 0,
-	    
-	OutputDetailedPhoneInfo,
-	    
-	OutputHeapInfo,
-	    
-	OutputCompactHeapInfo,
-	    
-	OutputHeapCellListing,
-	    
-	OutputHeapData,
-	    
-	OutputStackInfo,
-	    
-	OutputCompactStackInfo,
-	    
-	OutputUserStackData,
-	    
-	OutputKernelStackData
-};
-
-enum SwmtMode
-{
-	SwmtModeBasic = 0,
-	SwmtModeFull,
-	SwmtModeCustom
-};
-
-enum HeapDumpsMode
-{
-	HeapDumpsModeKernel = 0,
-	HeapDumpsModeUser,
-	HeapDumpsModeBoth
-};
-
-enum OutputMode
-{
-	OutputModeTrace = 0,
-	OutputModeFile
-};
-
-class MemSpyProcess
-{
-public:
-	MemSpyProcess(CMemSpyApiProcess* process)
-		: mProcess(process)
-	{}
-	
-	virtual  ~MemSpyProcess() { delete mProcess; }
-	
-	ProcessId id() const { return mProcess->Id(); }
-	
-	QString name() const { return QString((QChar*) mProcess->Name().Ptr(), mProcess->Name().Length()); }
-	
-	QString exitInfo() const;
-	
-	int priority() const { return mProcess->Priority(); }
-	
-	int threadCount() const { return mProcess->ThreadCount(); }
-	
-	int sid() const { return mProcess->SID(); }
-	
-	int vid() const { return mProcess->VID(); }
-	
-	bool isDead() const { return mProcess->IsDead(); }
-	
-private:
-	CMemSpyApiProcess *mProcess;
-};
-
-class MemSpyThread
-{
-public:
-	MemSpyThread(CMemSpyApiThread* thread)
-		: mThread(thread)
-	{}
-	
-	virtual ~MemSpyThread() { delete mThread;	}
-	
-	ThreadId id() const { return mThread->Id(); }
-	
-	QString name() const { return QString((QChar*) mThread->Name().Ptr(), mThread->Name().Length()); }
-	
-	int priority() const { return mThread->ThreadPriority(); }
-	
-	
-private:
-	CMemSpyApiThread *mThread;
-};
-
-class MemSpyKernelObjectType
-{
-public:
-	MemSpyKernelObjectType(CMemSpyApiKernelObject* type)
-		: mType(type)
-	{}
-	
-	virtual ~MemSpyKernelObjectType() { delete mType; }
-	
-	int id() const { return mType->Type(); }
-	
-	QString name() const { return QString((QChar*) mType->Name().Ptr(), mType->Name().Length()); }
-	
-	int count() const { return mType->Count(); }
-	
-	qint64 size() const { return mType->Size(); }
-	
-private:
-	CMemSpyApiKernelObject *mType;
-};
-
-class MemSpyKernelObject
-{
-public:
-	MemSpyKernelObject(CMemSpyApiKernelObjectItem* object)
-		: mObject(object)
-	{}
-	
-	virtual ~MemSpyKernelObject() { delete mObject; }
-	
-	int type() const { return mObject->Type(); }
-	
-	QString name() const { return QString::fromLatin1((char*)mObject->Name().Ptr(), mObject->Name().Length()); }
-	
-	QString nameDetail() const { return QString::fromLatin1((char*)mObject->NameDetail().Ptr(), mObject->NameDetail().Length()); }
-	
-	int accessCount() const { return mObject->AccessCount(); }
-	
-	int uniqueId() const { return mObject->UniqueID(); }
-	
-	unsigned int protection() const { return mObject->Protection(); }
-	
-	unsigned int addressOfKernelOwner() const { return reinterpret_cast<unsigned int>(mObject->AddressOfKernelOwner()); }
-	
-	unsigned int kernelAddress() const { return reinterpret_cast<unsigned int>(mObject->Handle()); }
-	
-	unsigned int addressOfOwningProcess() const { return reinterpret_cast<unsigned int>(mObject->AddressOfOwningProcess()); }
-	
-	int id() const { return mObject->Id(); }
-	
-	int priority() const { return mObject->Priority(); }
-	
-	QString nameOfOwner() const { return QString::fromLatin1((char*)mObject->NameOfOwner().Ptr(), mObject->NameOfOwner().Length()); }
-	
-	unsigned int creatorId() const { return mObject->CreatorId(); }
-	
-	int attributes() const { return mObject->Attributes(); }
-	
-	unsigned int addressOfDataBssStackChunk() const { return reinterpret_cast<unsigned int>(mObject->AddressOfDataBssStackChunk()); }
-	
-	unsigned int securityZone() const { return mObject->SecurityZone(); }
-	
-	unsigned int size() const { return mObject->Size(); }
-	
-	unsigned int maxSize() const { return mObject->MaxSize(); }
-	
-	unsigned int bottom() const { return mObject->Bottom(); }
-	
-	unsigned int top() const { return mObject->Top(); }
-	
-	unsigned int startPos() const { return mObject->StartPos(); }
-	
-	unsigned int controllingOwner() const { return mObject->ControllingOwner(); }
-	
-	unsigned int restrictions() const { return mObject->Restrictions(); }
-	
-	unsigned int mapAttr() const { return mObject->Restrictions(); }
-	
-	unsigned int chunkType() const { return mObject->ChunkType(); }
-	
-	int mapCount() const { return mObject->MapCount(); }
-	
-	unsigned int state() const { return mObject->State(); }
-	
-	unsigned int addressOfCodeSeg() const { return reinterpret_cast<unsigned int>(mObject->AddressOfCodeSeg()); }
-	
-	unsigned int resetting() const { return mObject->Resetting(); }
-	
-	unsigned int order() const { return mObject->Order(); }
-	
-	QString version() const { return QString((QChar*) mObject->Version().Name().Ptr(), mObject->Version().Name().Length()); }
-	
-	unsigned int parseMask() const { return mObject->ParseMask(); }
-	
-	unsigned int unitsMask() const { return mObject->UnitsMask(); }
-	
-	unsigned int changes() const { return mObject->Changes(); }
-	
-	int count() const { return mObject->Count(); }
-	
-	int waitCount() const { return mObject->WaitCount(); }
-
-	int sessionType() const { return mObject->SessionType(); }
-
-	int timerType() const { return mObject->TimerType(); }
-	
-	int timerState() const { return mObject->TimerState(); }
-	
-	unsigned int addressOfOwningThread() const { return reinterpret_cast<unsigned int>(mObject->AddressOfOwningThread()); }
-	
-	unsigned int addressOfServer() const { return reinterpret_cast<unsigned int>(mObject->AddressOfServer()); }
-	
-	unsigned int svrSessionType() const { return mObject->SvrSessionType(); }
-	
-	int msgCount() const { return mObject->MsgCount(); }
-	
-	int msgLimit() const { return mObject->MsgLimit(); }
-	
-	unsigned int totalAccessCount() const { return mObject->TotalAccessCount(); }
-	
-	int openChannels() const { return mObject->OpenChannels(); }
-	
-private:
-	CMemSpyApiKernelObjectItem *mObject;
-};
-
-class MemSpyThreadInfoItem 
-{
-public:
-	MemSpyThreadInfoItem(CMemSpyApiThreadInfoItem *item)
-		: mItem(item)
-	{}
-	
-	virtual  ~MemSpyThreadInfoItem() { delete mItem;	}
-	
-	QString caption() const { return QString((QChar*) mItem->Caption().Ptr(), mItem->Caption().Length()); }
-	
-	QString value() const { return QString((QChar*) mItem->Value().Ptr(), mItem->Value().Length()); }
-	
-private:
-	CMemSpyApiThreadInfoItem* mItem;
-};
-
-class MemSpyDwoProgressTracker : public QObject, public CActive
-{
-	Q_OBJECT
-
-public:
-	MemSpyDwoProgressTracker(RMemSpySession &session);
-	virtual ~MemSpyDwoProgressTracker();
-	
-public slots:
-
-	void start();
-
-	void cancel();
-	
-protected: // from CActive
-	
-	virtual void RunL();
-	 
-	virtual void DoCancel();
-	 
-	virtual TInt RunError(TInt aError);
-	
-signals:
-	void progress(int progress, const QString& processName);
-	
-private:
-	TMemSpyDeviceWideOperationProgress mProgress;
-	RMemSpySession mSession;
-};
-
-class MemSpyDwoTracker : public QObject, public CActive
-{
-	Q_OBJECT
-
-public:
-	MemSpyDwoTracker(RMemSpySession &session, DeviceWideOperation operation);
-	virtual ~MemSpyDwoTracker();
-	
-public slots:
-
-	void start();
-	
-	void cancel();
-	
-protected: // from CActive
-	
-	virtual void RunL();
-	 
-	virtual void DoCancel();
-	 
-	virtual TInt RunError(TInt aError);
-	
-signals:
-	void finished(int errorCode);
-	void progress(int progress, const QString& processName);
-	
-private:
-	RMemSpySession mSession;
-	MemSpyDwoProgressTracker *mProgressTracker;
-	DeviceWideOperation mOperation;
-};
-
-class MemSpyAsyncTracker : public QObject, public CActive
-{
-	Q_OBJECT
-	
-public:
-	
-	MemSpyAsyncTracker(RMemSpySession& session, void (RMemSpySession::*function)(TRequestStatus&));
-	
-	void start();
-	
-	virtual void RunL();
-	
-	virtual void DoCancel();
-	
-	virtual TInt RunError(TInt aError);
-	
-signals:
-	
-	void finished(int errorCode);
-	
-private:
-	void (RMemSpySession::*mFunction)(TRequestStatus&);
-	RMemSpySession& mSession;
-};
-
-class MemSpySwmtDumpTracker : public MemSpyAsyncTracker
-{
-public:
-	MemSpySwmtDumpTracker(RMemSpySession& session) : 
-		MemSpyAsyncTracker(session, &RMemSpySession::ForceSwmtUpdate)
-	{}
-};
-
-class MemSpyKernelHeapDumpTracker : public MemSpyAsyncTracker
-{
-public:
-	MemSpyKernelHeapDumpTracker(RMemSpySession& session) : 
-		MemSpyAsyncTracker(session, &RMemSpySession::OutputKernelHeapData)
-	{}
-};
-
-class MemSpySettings : private QSettings
-{
-public:
-	
-	MemSpySettings();
-	
-	OutputMode outputMode() const;
-	void setOutputMode(OutputMode mode);
-	
-	QString outputPath() const;
-	void setOutputPath(const QString& path);
-		
-	int swmtTimerPeriod() const;
-	void setSwmtTimerPeriod(int period);
-	
-	SwmtMode swmtMode() const;
-	void setSwmtMode(SwmtMode mode);
-	
-	QVariantList swmtCategories() const;
-	void setSwmtCategories(const QVariantList& categories);
-	
-	HeapDumpsMode heapDumpsMode() const;
-	void setHeapDumpsMode(HeapDumpsMode mode);
-};
-
-class EngineWrapper : public QObject
-{
-	Q_OBJECT
-	
-public:
-	EngineWrapper();
-	
-	virtual ~EngineWrapper();
-	
-	bool initialize();
-	
-	MemSpySettings& settings();
-	
-	const MemSpySettings& settings() const;
-	
-	
-	
-	QList<MemSpyProcess*> getProcesses();
-	
-	QList<MemSpyThread*> getThreads(ProcessId processId);
-	
-	QList<MemSpyThreadInfoItem*> getThreadInfo(ThreadId threadId, ThreadInfoType type);
-	
-	void setThreadPriority(ThreadId threadId, ThreadPriority priority);
-	
-	QList<MemSpyKernelObjectType*> getKernelObjectTypes();
-	
-	QList<MemSpyKernelObject*> getKernelObjects(int type);
-	
-	MemSpyDwoTracker* createDeviceWideOperation(DeviceWideOperation operation);
-	
-	MemSpyKernelHeapDumpTracker* createKernelHeapDumpTracker();
-	
-	MemSpySwmtDumpTracker* createSwmtDumpTracker();
-	
-	void setSwmtSettings(SwmtMode mode, const QVariantList& categories);
-	
-	bool isSwmtRunning();
-	
-	void startSwmt(int period);
-	
-	void stopSwmt();
-	
-	void forceSwmtDump();
-	
-	void outputKernelHeapData();
-	
-	int outputThreadHeapData(const QString& filter);
-	
-	void updateOutputSettings();
-	
-private:
-	RMemSpySession mSession;
-	
-	bool mSwmtRunning;
-	
-	MemSpySettings mSettings;
-};
-
-#endif /* ENGINEWRAPPER_H_ */
--- a/memspyui/ui/hb/inc/memspyheapdumpsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +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:
- *  
- */
-
-#ifndef MEMSPYHEAPDUMPSVIEW_H_
-#define MEMSPYHEAPDUMPSVIEW_H_
-
-#include "memspyview.h"
-
-class HbDataFormModel;
-class HbDataFormModelItem;
-
-class MemSpyHeapDumpsView : public MemSpyView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyHeapDumpsView(EngineWrapper &engine, ViewManager &viewManager);
-	virtual ~MemSpyHeapDumpsView();
-	
-	void initialize(const QVariantMap& params);
-		
-protected:
-	HbToolBar* createToolBar();
-	
-	HbWidget* createCentralWidget();
-	
-private slots:
-	void modeChanged(int mode);
-	void dump();
-
-	void updateDwoProgress(int progress, const QString& processName);
-	void asyncOperationFinished(int errorCode);
-
-	
-private:
-	void removeFilterItem();
-	void createFilterItem();
-	
-private:
-	HbDataFormModel* mModel;
-	HbDataFormModelItem* mModeItem;
-	HbDataFormModelItem* mFilterItem;
-	
-	HbProgressDialog* mDwoProgressDialog;
-};
-
-#endif /* MEMSPYHEAPDUMPSVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspykernelobjectdetailview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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:
- *  
- */
-
-#ifndef MEMSPYKERNELOBJECTDETAILVIEW_H_
-#define MEMSPYKERNELOBJECTDETAILVIEW_H_
-
-#include "memspylistview.h"
-
-class MemSpyKernelObjectDetailModel : public QAbstractListModel
-{
-public:
-    MemSpyKernelObjectDetailModel(const QStringList& details, QObject *parent = 0);
-    
-    int rowCount(const QModelIndex &parent = QModelIndex()) const;
-    
-    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-  
-private:
-    QStringList mDetails;
-};
-
-class MemSpyKernelObjectDetailView : public MemSpyListView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyKernelObjectDetailView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-	
-protected:
-	virtual void initialize(const QVariantMap& params);
-	
-	virtual bool isBreadCrumbVisible() const;
-	        
-	virtual QString getBreadCrumbText() const;
-	
-private:
-	QString mTypeName;
-	QString mObjectName;
-};
-
-#endif /* MEMSPYKERNELOBJECTDETAILVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspykernelobjecttypeview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +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:
- *  
- */
-
-#ifndef MEMSPYKERNELOBJECTTYPESVIEW_H_
-#define MEMSPYKERNELOBJECTTYPESVIEW_H_
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-class MemSpyKernelObjectTypeModel : public QAbstractListModel
-{
-public:
-	MemSpyKernelObjectTypeModel(EngineWrapper &engine, QObject *parent = 0);
-	
-	virtual ~MemSpyKernelObjectTypeModel();
-	
-	int rowCount(const QModelIndex &parent = QModelIndex()) const;
-	
-	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-	
-private:
-	QString formatSize(qint64 size) const;
-	
-private:
-	QList<MemSpyKernelObjectType*> mObjectTypes;
-	
-	QStringList mKernelObjectNames;
-};
-
-class MemSpyKernelObjectTypeView : public MemSpyListView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyKernelObjectTypeView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-
-protected:
-	virtual void initialize(const QVariantMap& params);
-
-private slots:
-	void itemClicked(const QModelIndex& index);
-};
-
-#endif /* MEMSPYKERNELOBJECTTYPESVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspykernelobjectview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +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:
- *  
- */
-
-#ifndef MEMSPYKERNELOBJECTVIEW_H_
-#define MEMSPYKERNELOBJECTVIEW_H_
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-class MemSpyKernelObjectModel : public QAbstractListModel
-{
-public:
-	MemSpyKernelObjectModel(EngineWrapper &engine, int objectType, QObject *parent = 0);
-	
-	~MemSpyKernelObjectModel();
-	
-	int rowCount(const QModelIndex &parent = QModelIndex()) const;
-	
-	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-	
-private:
-	QList<MemSpyKernelObject*> mObjects;
-};
-
-
-class MemSpyKernelObjectView : public MemSpyListView
-{
-	Q_OBJECT
-
-public:
-	MemSpyKernelObjectView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-
-protected:
-	virtual void initialize(const QVariantMap& params);
-	
-	virtual bool isBreadCrumbVisible() const;
-	            
-	virtual QString getBreadCrumbText() const;
-
-private slots:
-	void itemClicked(const QModelIndex& index);
-	
-private:
-	QStringList getDetails(MemSpyKernelObject *object);
-};
-
-#endif /* MEMSPYKERNELOBJECTVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspylistview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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:
- *  
- */
-
-#ifndef MEMSPYLISTVIEW_H_
-#define MEMSPYLISTVIEW_H_
-
-#include <HbListView>
-
-#include "memspyview.h"
-
-class MemSpyListView : public MemSpyView
-	{
-public:
-	MemSpyListView(EngineWrapper &engine, ViewManager &viewManager) : 
-		MemSpyView(engine, viewManager) {}
-	
-protected:
-	virtual HbWidget* createCentralWidget();
-	
-protected:
-	HbListView mListView;
-	};
-
-#endif /* MEMSPYLISTVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspymainview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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:
- *  
- */
-
-#ifndef MEMSPYMAINVIEW_H_
-#define MEMSPYMAINVIEW_H_
-
-#include "memspylistview.h"
-
-class MemSpyMainView : public MemSpyListView
-{
-    Q_OBJECT
-    
-public:
-	MemSpyMainView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-protected:
-	virtual void initialize(const QVariantMap& params);
-	virtual bool isBreadCrumbVisible() const;
-	
-public slots:
-	void itemClicked(const QModelIndex& index);
-};
-
-#endif /* MEMSPYMAINVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspyprocessview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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:
-* 
-*/
-
-#ifndef MEMSPYPROCESSVIEW_H_
-#define MEMSPYPROCESSVIEW_H_
-
-#include <QAbstractListModel>
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-
-class MemSpyProcessModel : public QAbstractListModel
-{
-public:
-	MemSpyProcessModel(EngineWrapper &engine, QObject *parent = 0);
-	
-	~MemSpyProcessModel();
-	
-	int rowCount(const QModelIndex &parent = QModelIndex()) const;
-	
-	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-	
-	void refresh();
-	
-private:
-	EngineWrapper& mEngine;
-	
-	QList<MemSpyProcess*> mProcesses;
-	
-	QMap<int, QString> mPriorityMap;
-};
-
-class MemSpyProcessView : public MemSpyListView
-{
-    Q_OBJECT
-    
-public:
-	MemSpyProcessView(EngineWrapper &engine, ViewManager &viewManager) : 
-        MemSpyListView(engine, viewManager),
-		mModel(0)
-	{}
-	
-public slots:
-    virtual void refresh();
-	
-protected:
-	void initialize(const QVariantMap& params);
-	
-protected:
-	virtual bool isRefreshable() const { return true; }
-	
-private slots:
-	void itemClicked(const QModelIndex& index);
-	
-private:
-	MemSpyProcessModel* mModel;
-};
-
-#endif /* MEMSPYPROCESSVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspysettingsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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:
- *  
- */
-
-#ifndef MEMSPYSETTINGSVIEW_H_
-#define MEMSPYSETTINGSVIEW_H_
-
-#include <HbView>
-
-class HbDataForm;
-class HbDataFormModel;
-class HbDataFormModelItem;
-class EngineWrapper;
-
-class MemSpySettingsView : public HbView
-{
-	Q_OBJECT
-	
-public:
-	MemSpySettingsView(EngineWrapper &engine);
-	virtual ~MemSpySettingsView();
-	
-	void initialize(const QVariantMap& params);
-	
-private slots:
-	void updateModel();
-	void accept();
-	void reject();
-	
-signals:
-	void finished(bool ok);
-
-private:
-	HbDataForm* mForm;
-	HbDataFormModel* mModel;
-	HbDataFormModelItem* mModeItem;
-	HbDataFormModelItem* mPathItem;
-	HbDataFormModelItem* mCustomPathItem;
-	
-	EngineWrapper& mEngine;
-};
-
-#endif /* MEMSPYSETTINGSVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspyswmtview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +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:
- *  
- */
-
-#ifndef MEMSPYSWMTVIEW_H_
-#define MEMSPYSWMTVIEW_H_
-
-#include "memspyview.h"
-
-class HbDataFormModel;
-class HbDataFormModelItem;
-class HbProgressDialog;
-
-class MemSpySwmtView : public MemSpyView
-{
-	Q_OBJECT
-	
-public:
-	MemSpySwmtView(EngineWrapper &engine, ViewManager &viewManager);
-	virtual ~MemSpySwmtView();
-	
-	void initialize(const QVariantMap& params);
-		
-protected:
-	HbToolBar* createToolBar();
-	
-	HbWidget* createCentralWidget();
-	
-private slots:
-	void toggleTimer();
-	void forceDump();
-	void modeChanged(int mode);
-	void asyncOperationFinished(int errorCode);
-	
-private:
-	void updateTimerAction(bool isRunning);
-	void removeCategoriesItem();
-	void createCategoriesItem();
-	void updateSettings();
-	
-private:
-	HbAction* mToggleTimerAction;
-	
-	HbDataFormModel* mModel;
-	HbDataFormModelItem* mTimerItem;
-	HbDataFormModelItem* mModeItem;
-	HbDataFormModelItem* mCategoriesItem;
-	
-	HbProgressDialog* mProgressDialog;
-};
-
-#endif /* MEMSPYSWMTVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspythreaddetailindexview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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:
- *  
- */
-
-#ifndef MEMSPYTHREADDETAILINDEXVIEW_H_
-#define MEMSPYTHREADDETAILINDEXVIEW_H_
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-class HbMenu;
-
-class MemSpyThreadDetailIndexView : public MemSpyListView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyThreadDetailIndexView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-protected:
-	virtual void initialize(const QVariantMap& params);
-	
-	virtual HbMenu* createToolMenu();
-	
-	virtual bool isBreadCrumbVisible() const;
-	    
-	virtual QString getBreadCrumbText() const;
-
-private slots:
-	void changePriority();
-	void itemClicked(const QModelIndex& index);
-	
-private:
-	ThreadId mThreadId;
-	HbMenu *mPriorityMenu;
-	QString mProcessName;
-	QString mThreadName;
-};
-
-#endif /* MEMSPYTHREADDETAILINDEXVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspythreaddetailview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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:
- *  
- */
-
-#ifndef MEMSPYTHREADDETAILVIEW_H_
-#define MEMSPYTHREADDETAILVIEW_H_
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-class HbMenu;
-
-class MemSpyThreadDetailModel : public QAbstractListModel
-{
-public:
-	MemSpyThreadDetailModel(EngineWrapper &engine, ThreadId threadId, ThreadInfoType type, QObject *parent = 0);
-	
-	~MemSpyThreadDetailModel();
-	
-	int rowCount(const QModelIndex &parent = QModelIndex()) const;
-	
-	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-	
-private:
-	QList<MemSpyThreadInfoItem*> mThreadInfo;
-};
-
-
-class MemSpyThreadDetailView : public MemSpyListView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyThreadDetailView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-protected:
-	virtual void initialize(const QVariantMap& params);
-	
-	virtual bool isBreadCrumbVisible() const;
-	
-	virtual QString getBreadCrumbText() const;
-	
-private:
-	ThreadId mThreadId;
-	HbMenu *mPriorityMenu;
-	QString mProcessName;
-	QString mThreadName;
-};
-
-#endif /* MEMSPYTHREADDETAILVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspythreadview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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:
- *  
- */
-
-#ifndef MEMSPYTHREADVIEW_H_
-#define MEMSPYTHREADVIEW_H_
-
-#include "memspylistview.h"
-#include "enginewrapper.h"
-
-class MemSpyThreadModel : public QAbstractListModel
-{
-public:
-	MemSpyThreadModel(EngineWrapper &engine, ProcessId threadId, QObject *parent = 0);
-	
-	~MemSpyThreadModel();
-	
-	int rowCount(const QModelIndex &parent = QModelIndex()) const;
-	
-	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-	
-	void refresh();
-	
-private:
-	ProcessId mProcessId;
-	
-	EngineWrapper& mEngine;
-	
-	QList<MemSpyThread*> mThreads;
-	
-	QMap<int, QString> mPriorityMap;
-};
-
-
-class MemSpyThreadView : public MemSpyListView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager);
-	~MemSpyThreadView();
-	
-public slots:
-    virtual void refresh();
-
-protected:
-	void initialize(const QVariantMap& params);
-	
-protected:
-	virtual bool isRefreshable() const { return true; }
-	
-	virtual bool isBreadCrumbVisible() const;
-	
-	QString getBreadCrumbText() const;
-	
-private slots:
-	void itemClicked(const QModelIndex& index);
-	void catchLongPress(HbAbstractViewItem *item, const QPointF &coords);
-	void changePriority();
-	
-private:
-	HbMenu* mContextMenu;
-	HbMenu* mPriorityMenu;
-	ThreadId mThreadId;
-	QString mProcessName;
-	
-	MemSpyThreadModel* mModel;
-};
-
-#endif /* MEMSPYTHREADVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspytrackingview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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:
- *  
- */
-
-#ifndef MEMSPYTRACKINGVIEW_H_
-#define MEMSPYTRACKINGVIEW_H_
-
-#include "memspylistview.h"
-
-class MemSpyTrackingView : public MemSpyListView
-{
-    Q_OBJECT
-    
-public:
-    MemSpyTrackingView(EngineWrapper &engine, ViewManager &viewManager) 
-		: MemSpyListView(engine, viewManager) {}
-protected:
-	virtual void initialize(const QVariantMap& params);
-	virtual bool isBreadCrumbVisible() const;
-	
-public slots:
-	void itemClicked(const QModelIndex& index);
-};
-
-#endif /* MEMSPYTRACKINGVIEW_H_ */
--- a/memspyui/ui/hb/inc/memspyview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +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:
-* 
-*/
-
-#ifndef MEMSPYVIEW_H_
-#define MEMSPYVIEW_H_
-
-#include <HbView>
-#include <HbListView>
-#include <QVariantMap>
-
-class HbLabel;
-class HbProgressDialog;
-class EngineWrapper;
-class ViewManager;
-
-
-class MemSpyView : public HbView
-{
-	Q_OBJECT
-	
-public:
-	MemSpyView(EngineWrapper &engine, ViewManager &viewManager);
-	
-	virtual ~MemSpyView();
-	
-protected:
-	
-	virtual QList<QAction*> createOutputActions();
-	
-	virtual HbMenu* createToolMenu();
-	
-	virtual HbToolBar* createToolBar();
-	
-	virtual bool isRefreshable() const;
-	
-	virtual bool isBreadCrumbVisible() const;
-	
-	virtual QString getBreadCrumbText() const;
-	
-	virtual HbWidget* createCentralWidget() = 0;
-	
-public slots:
-
-	virtual void initialize(const QVariantMap& params);
-
-	virtual void refresh();
-	
-	void showSettings();
-	
-	void showAbout();
-	
-private slots:
-	
-	void closeSettings();
-		
-protected:
-	
-	EngineWrapper &mEngine;
-	
-	ViewManager &mViewManager;
-	
-	
-private:
-	HbMenu* mOutputMenu;
-	HbMenu* mOutputGenInfoMenu;
-	HbMenu* mOutputHeapInfoMenu;
-	HbMenu* mOutputStackInfoMenu;
-	HbToolBar* mToolBar;
-	
-	HbLabel* mBreadCrumb;
-};
-
-#endif /* MEMSPYVIEW_H_ */
--- a/memspyui/ui/hb/inc/viewmanager.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +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:
- *  
- */
-
-#ifndef VIEWMANAGER_H_
-#define VIEWMANAGER_H_
-
-
-#include <QObject>
-#include <QVariantMap>
-
-enum ViewIndex {
-	MainView,
-	ProcessView,
-	ThreadView,
-	ThreadDetailIndexView,
-	ThreadDetailView,
-	KernelObjectTypeView,
-	KernelObjectView,
-	KernelObjectDetailView,
-	TrackingView,
-	SwmtView,
-	HeapDumpsView
-};
-
-class HbMainWindow;
-class HbView;
-class EngineWrapper;
-
-
-class ViewManager : public QObject
-{
-	Q_OBJECT
-	
-public:
-	ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent = 0);
-	
-public slots:
-	void showView(ViewIndex index, const QVariantMap &params);
-	
-	void showView(ViewIndex index);
-	
-	void goBack();
-	
-private slots:
-	void viewChanged(HbView *view);
-	
-private:
-	HbMainWindow &mWindow;
-	EngineWrapper &mEngine;
-};
-
-#endif /* VIEWMANAGER_H_ */
--- a/memspyui/ui/hb/src/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +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 <QMessageBox>
-
-#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
-
-#include "enginewrapper.h"
-
-// CONSTANTS
-
-const QString OUTPUT_MODE = "output/mode";
-const QString OUTPUT_PATH = "output/path";
-const QString SWMT_PERIOD = "swmt/period";
-const QString SWMT_MODE = "swmt/mode";
-const QString SWMT_CATEGORIES = "swmt/categories";
-const QString HEAP_DUMPS_MODE = "heapdumps/mode";
-
-QString MemSpyProcess::exitInfo() const
-{
-    QChar exitType[] = {'K', 'T', 'P', 'R'};
-    QString result = QString("[%1]").arg(exitType[mProcess->ExitType()]);
-    
-    if (mProcess->ExitType() != EExitKill && mProcess->ExitType() != EExitPending) {
-        
-        QString exitCategory = QString((QChar*) mProcess->ExitCategory().Ptr(), mProcess->ExitCategory().Length());
-        result.append(QString(" %1-%2").arg(exitCategory).arg(mProcess->ExitReason()));
-    }
-    
-    return result;
-}
-
-
-MemSpyDwoProgressTracker::MemSpyDwoProgressTracker(RMemSpySession &session) :
-	CActive(EPriorityStandard), mSession(session)
-{
-	CActiveScheduler::Add(this);
-}
-
-MemSpyDwoProgressTracker::~MemSpyDwoProgressTracker()
-{
-	Cancel();
-}
-
-void MemSpyDwoProgressTracker::start()
-{
-	mSession.NotifyDeviceWideOperationProgress(mProgress, iStatus);
-	
-	SetActive();
-}
-
-void MemSpyDwoProgressTracker::cancel()
-{
-	Cancel();
-}
-
-// Event handler method.
- 
-void MemSpyDwoProgressTracker::RunL()
-    {
- 
-    // If an error occurred handle it in RunError().
-    User::LeaveIfError(iStatus.Int());
- 
-    // Resubmit the request immediately
-    
-    mSession.NotifyDeviceWideOperationProgress(mProgress, iStatus);
- 
-    SetActive();
- 
-    emit progress(mProgress.Progress(), QString((QChar*) mProgress.Description().Ptr(), mProgress.Description().Length()));
-    }
- 
-void MemSpyDwoProgressTracker::DoCancel()
-{ 
-	// this is not yet implemented, as it is not required in current use cases
-}
- 
-TInt MemSpyDwoProgressTracker::RunError(TInt aError)
-{ 
-	// KErrNotReady and KErrCancel errors are OK, they just notify 
-	// us about the outstanding notification request that won't be 
-	// processed.
-	Q_UNUSED(aError);
-	
-    return KErrNone;
-}
-
-MemSpyDwoTracker::MemSpyDwoTracker(RMemSpySession &session, DeviceWideOperation operation) :
-	CActive(EPriorityStandard), 
-	mSession(session),
-	mProgressTracker(new MemSpyDwoProgressTracker(session)),
-	mOperation(operation)
-{
-	CActiveScheduler::Add(this);
-	connect(mProgressTracker, SIGNAL(progress(int,QString)), this, SIGNAL(progress(int,QString)));
-}
-
-MemSpyDwoTracker::~MemSpyDwoTracker()
-{
-	Cancel();
-	
-	delete mProgressTracker;
-}
-
-void MemSpyDwoTracker::start()
-{
-	void (RMemSpySession::*functions[])(TRequestStatus&) = { 
-			&RMemSpySession::OutputPhoneInfo,
-			&RMemSpySession::OutputDetailedPhoneInfo,
-			&RMemSpySession::OutputHeapInfo,
-			&RMemSpySession::OutputCompactHeapInfo,
-			&RMemSpySession::OutputHeapCellListing,
-			&RMemSpySession::OutputHeapData,
-			&RMemSpySession::OutputStackInfo,
-			&RMemSpySession::OutputCompactStackInfo,
-			&RMemSpySession::OutputUserStackData,
-			&RMemSpySession::OutputKernelStackData };
-	
-	(mSession.*functions[mOperation])(iStatus);
-	
-	mProgressTracker->start();
-	
-	SetActive();
-}
-
-void MemSpyDwoTracker::cancel()
-{
-	Cancel();
-}
-
-// Event handler method.
- 
-void MemSpyDwoTracker::RunL()
-    {
- 
-    // If an error occurred handle it in RunError().
-    User::LeaveIfError(iStatus.Int());
- 
-    // Operation has finished successfully 
-    emit finished(0);
-    }
- 
-void MemSpyDwoTracker::DoCancel()
-{
-	// Cancel progress tracker
-	mProgressTracker->cancel();
-	
-	mSession.CancelDeviceWideOperationL();
-}
- 
-TInt MemSpyDwoTracker::RunError(TInt aError)
-{ 
-	// Emit the finished signal to notify user 
-	// operation was canceled
-	emit finished(aError);
-	
-    return KErrNone;
-}
-
-MemSpyAsyncTracker::MemSpyAsyncTracker(RMemSpySession& session, void (RMemSpySession::*function)(TRequestStatus&)) :
-	CActive(EPriorityStandard), 
-	mFunction(function),
-	mSession(session)
-{
-	CActiveScheduler::Add(this);
-}
-
-void MemSpyAsyncTracker::RunL()
-{ 
-    // If an error occurred handle it in RunError().
-    User::LeaveIfError(iStatus.Int());
- 
-    // Operation has finished successfully 
-    emit finished(0);
-}
-
-void MemSpyAsyncTracker::DoCancel()
-{
-	// nothing to do here
-}
-
-TInt MemSpyAsyncTracker::RunError(TInt aError)
-{ 
-	// Emit the finished signal to notify user 
-	// that operation was canceled
-	emit finished(aError);
-	
-    return KErrNone;
-}
-
-void MemSpyAsyncTracker::start()
-{
-	(mSession.*mFunction)(iStatus);
-	
-	SetActive();
-}
-
-MemSpySettings::MemSpySettings() : 
-	QSettings("Nokia", "MemSpy") 
-{
-}
-
-OutputMode MemSpySettings::outputMode() const
-{
-	return static_cast<OutputMode>(value(OUTPUT_MODE, 0).toInt());
-}
-
-void MemSpySettings::setOutputMode(OutputMode mode)
-{
-	setValue(OUTPUT_MODE, mode);
-}
-	
-QString MemSpySettings::outputPath() const
-{
-	return value(OUTPUT_PATH).toString();
-}
-
-void MemSpySettings::setOutputPath(const QString& path)
-{
-	setValue(OUTPUT_PATH, path);
-}
-
-int MemSpySettings::swmtTimerPeriod() const
-{
-	return value(SWMT_PERIOD, 30).toInt();
-}
-
-void MemSpySettings::setSwmtMode(SwmtMode mode)
-{
-	setValue(SWMT_MODE, mode);
-}
-
-SwmtMode MemSpySettings::swmtMode() const
-{
-	return static_cast<SwmtMode>(value(SWMT_MODE, 0).toInt());
-}
-
-void MemSpySettings::setSwmtTimerPeriod(int period)
-{
-	setValue(SWMT_PERIOD, period);
-}
-
-
-QVariantList MemSpySettings::swmtCategories() const
-{
-	return value(SWMT_CATEGORIES).toList();
-}
-
-void MemSpySettings::setSwmtCategories(const QVariantList& categories)
-{
-	setValue(SWMT_CATEGORIES, categories);
-}
-
-HeapDumpsMode MemSpySettings::heapDumpsMode() const
-{
-	return static_cast<HeapDumpsMode>(value(HEAP_DUMPS_MODE).toInt());
-}
-
-void MemSpySettings::setHeapDumpsMode(HeapDumpsMode mode)
-{
-	setValue(HEAP_DUMPS_MODE, mode);
-}
-
-
-EngineWrapper::EngineWrapper() :
-	mSwmtRunning(false)
-{
-}
-
-EngineWrapper::~EngineWrapper()
-{
-	mSession.Close();
-}
-
-bool EngineWrapper::initialize()
-{
-	return mSession.Connect() == KErrNone;
-}
-
-MemSpySettings& EngineWrapper::settings()
-{
-	return mSettings;
-}
-
-const MemSpySettings& EngineWrapper::settings() const
-{
-	return mSettings;
-}
-
-
-
-QList<MemSpyProcess*> EngineWrapper::getProcesses()
-{
-	QList<MemSpyProcess*> result;
-	
-	RArray<CMemSpyApiProcess*> proc;
-	
-	QT_TRAP_THROWING(mSession.GetProcessesL(proc));
-	
-	for (TInt i=0; i<proc.Count(); i++)
-        result.append(new MemSpyProcess(proc[i]));
-	
-	return result;
-}
-
-QList<MemSpyThread*> EngineWrapper::getThreads(ProcessId processId)
-{
-	QList<MemSpyThread*> result;
-	
-	RArray<CMemSpyApiThread*> proc;
-	
-	QT_TRAP_THROWING(mSession.GetThreadsL(processId, proc));
-	
-    for (TInt i=0; i<proc.Count(); i++)
-        result.append(new MemSpyThread(proc[i]));
-	
-	return result;
-}
-
-QList<MemSpyThreadInfoItem*> EngineWrapper::getThreadInfo(ThreadId threadId, ThreadInfoType type)
-{
-	QList<MemSpyThreadInfoItem*> result;
-	RArray<CMemSpyApiThreadInfoItem*> threadInfo;
-	qt_symbian_throwIfError(mSession.GetThreadInfoItems(threadInfo, threadId, 
-			static_cast<TMemSpyThreadInfoItemType>(type)));
-	
-	for (TInt i=0; i<threadInfo.Count(); i++)
-		result.append(new MemSpyThreadInfoItem(threadInfo[i]));
-	
-	return result;
-}
-
-void EngineWrapper::setThreadPriority(ThreadId threadId, ThreadPriority priority)
-{
-	TRAP_IGNORE(mSession.SetThreadPriorityL(threadId, priority));
-}
-
-QList<MemSpyKernelObjectType*> EngineWrapper::getKernelObjectTypes()
-{
-	QList<MemSpyKernelObjectType*> result;
-		
-	RArray<CMemSpyApiKernelObject*> types;
-	qt_symbian_throwIfError(mSession.GetKernelObjects(types));
-	
-	for(TInt i=0; i<types.Count(); i++)
-		result.append(new MemSpyKernelObjectType(types[i]));
-	
-	return result;
-}
-
-QList<MemSpyKernelObject*> EngineWrapper::getKernelObjects(int type)
-{
-	QList<MemSpyKernelObject*> result;
-		
-	RArray<CMemSpyApiKernelObjectItem*> objects;
-	qt_symbian_throwIfError(mSession.GetKernelObjectItems(objects, 
-			static_cast<TMemSpyDriverContainerType>(type)));
-	
-	for(TInt i=0; i<objects.Count(); i++)
-		result.append(new MemSpyKernelObject(objects[i]));
-	
-	return result;
-}
-
-MemSpyDwoTracker* EngineWrapper::createDeviceWideOperation(DeviceWideOperation operation)
-{
-	return new MemSpyDwoTracker(mSession, operation);
-}
-
-MemSpyKernelHeapDumpTracker* EngineWrapper::createKernelHeapDumpTracker()
-{
-	return new MemSpyKernelHeapDumpTracker(mSession);
-}
-
-MemSpySwmtDumpTracker* EngineWrapper::createSwmtDumpTracker()
-{
-	return new MemSpySwmtDumpTracker(mSession);
-}
-
-void EngineWrapper::setSwmtSettings(SwmtMode mode, const QVariantList& categories)
-{
-	int bits = 0;
-	bool heapDumps = false;
-	switch (mode)
-	{
-	case SwmtModeBasic:
-		bits = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap | 
-			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks |
-			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData |
-			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory;
-		
-		break;
-		
-	case SwmtModeFull:
-		bits = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryAll;
-		heapDumps = true;
-		
-		break;
-		
-	case SwmtModeCustom:
-		bits = 0;
-		// this needs to be in sync. with swmt view categories
-		TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerCategories cats[] = {
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache,
-            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap,
-            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive,
-            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks,
-            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory,
-            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups
-		};
-
-		foreach (const QVariant& bit, categories)
-			bits |= cats[bit.toInt()];
-		
-		break;
-	}
-	
-	TRAP_IGNORE(mSession.SetSwmtCategoriesL(bits));
-	TRAP_IGNORE(mSession.SetSwmtHeapDumpsEnabledL(heapDumps));
-}
-
-bool EngineWrapper::isSwmtRunning()
-{
-	return mSwmtRunning;
-}
-	
-void EngineWrapper::startSwmt(int period)
-{
-	mSwmtRunning = true;
-	updateOutputSettings();
-	TRAP_IGNORE(mSession.StartSwmtTimerL(period));
-}
-
-void EngineWrapper::stopSwmt()
-{
-	mSwmtRunning = false;
-	TRAP_IGNORE(mSession.StopSwmtTimerL());
-}
-
-void EngineWrapper::forceSwmtDump()
-{
-	updateOutputSettings();	
-	TRAP_IGNORE(mSession.ForceSwmtUpdateL());
-}
-
-void EngineWrapper::outputKernelHeapData()
-{
-	updateOutputSettings();
-	TRAP_IGNORE(mSession.OutputKernelHeapDataL());
-}
-
-int EngineWrapper::outputThreadHeapData(const QString& filter)
-{
-	TPtrC customFilterDesc(static_cast<const TUint16*>(filter.utf16()), filter.length());
-	
-	TRAPD(err, mSession.OutputThreadHeapDataL(customFilterDesc));
-	
-	return err;
-}
-
-void EngineWrapper::updateOutputSettings()
-{
-	switch (mSettings.outputMode()) {
-		case OutputModeTrace:
-			TRAP_IGNORE(mSession.SwitchOutputToTraceL());
-			break;
-		
-		case OutputModeFile:
-		
-			if (mSettings.outputPath().isEmpty()) {
-				TRAP_IGNORE(mSession.SwitchOutputToFileL(KNullDesC));
-			
-			} else {
-				
-				QString root = mSettings.outputPath();
-				TPtrC rootDesc (static_cast<const TUint16*>(root.utf16()), root.length());
-			
-				TRAP_IGNORE(mSession.SwitchOutputToFileL(rootDesc));
-			}
-	
-	}
-}
--- a/memspyui/ui/hb/src/main.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +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 <HbApplication>
-#include <QMessageBox>
-#include <HbMainWindow>
-
-#include "enginewrapper.h"
-#include "memspyview.h"
-#include "memspyprocessview.h"
-#include "viewmanager.h"
-
-int main(int argc, char *argv[])
-{
-    HbApplication app(argc, argv);
-	
-    EngineWrapper engine;
-    if (!engine.initialize()) {
-		QMessageBox::critical(0, "Error", "Engine failed to initialize. Closing.");
-		return 1;
-    }
-        
-    HbMainWindow window;
-    ViewManager viewManager(window, engine);
-    viewManager.showView(MainView);
-	
-    window.show();
-	return app.exec();
-}
--- a/memspyui/ui/hb/src/memspyheapdumpsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +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 <HbToolBar>
-#include <HbAction>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbProgressDialog>
-#include <HbMessageBox>
-#include <HbLabel>
-
-#include "memspyheapdumpsview.h"
-#include "enginewrapper.h"
-
-const QStringList MODE_ITEMS = QStringList() << 
-	MemSpyHeapDumpsView::tr("Kernel") << 
-	MemSpyHeapDumpsView::tr("User") << 
-	MemSpyHeapDumpsView::tr("Both");
-	
-MemSpyHeapDumpsView::MemSpyHeapDumpsView(EngineWrapper &engine, ViewManager &viewManager) : 
-	MemSpyView(engine, viewManager),
-	mModel(0),
-	mModeItem(0),
-	mFilterItem(0),
-	mDwoProgressDialog(0)
-{
-}
-
-MemSpyHeapDumpsView::~MemSpyHeapDumpsView()
-{
-	delete mDwoProgressDialog;
-}
-
-void MemSpyHeapDumpsView::initialize(const QVariantMap& params)
-{
-	setTitle(tr("Heap Dumps"));
-	
-	MemSpyView::initialize(params);
-}
-
-HbToolBar* MemSpyHeapDumpsView::createToolBar()
-{
-	HbToolBar* toolBar = new HbToolBar();
-	toolBar->addAction(tr("Dump Now"), this, SLOT(dump()));
-	return toolBar;
-}
-
-HbWidget* MemSpyHeapDumpsView::createCentralWidget()
-{
-	mModel = new HbDataFormModel(this);
-	
-	//TODO: uncomment after kernel heap dumps are implemented 
-//	mModeItem = mModel->appendDataFormItem(
-//		HbDataFormModelItem::ComboBoxItem, tr("Heap Dump"));
-//	mModeItem->setContentWidgetData("items", MODE_ITEMS);
-//	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().heapDumpsMode());
-//	modeChanged(mEngine.settings().heapDumpsMode());
-	
-	//TODO: remove after kernel heap dumps are implemented
-	createFilterItem();
-	
-	HbDataForm* form = new HbDataForm(this);
-	form->setModel(mModel);
-	
-	//TODO: uncomment after kernel heap dumps are implemented
-//	form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int)));
-	
-	return form;
-}
-
-void MemSpyHeapDumpsView::modeChanged(int mode)
-{
-	if (mode == HeapDumpsModeKernel && mFilterItem)
-		removeFilterItem();
-	else if (mode != HeapDumpsModeKernel && !mFilterItem)
-		createFilterItem();
-}
-
-void MemSpyHeapDumpsView::createFilterItem()
-{
-	mFilterItem = mModel->appendDataFormItem(
-			HbDataFormModelItem::TextItem, tr("Filter"));
-}
-
-void MemSpyHeapDumpsView::removeFilterItem()
-{
-	mModel->removeItem(mFilterItem);
-	mFilterItem = 0;
-}
-
-void MemSpyHeapDumpsView::dump()
-{
-    mEngine.updateOutputSettings();
-    
-	HeapDumpsMode mode = HeapDumpsModeUser;
-	//TODO: uncomment after kernel heap dumps are implemented 
-	//static_cast<HeapDumpsMode>(mModeItem->contentWidgetData("currentIndex").toInt());
-	
-	// save settings
-	//TODO: uncomment after kernel heap dumps are implemented
-	//mEngine.settings().setHeapDumpsMode(mode);
-
-	if (mode == HeapDumpsModeKernel || mode == HeapDumpsModeBoth) {
-		// dump kernel heap
-		mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
-		mDwoProgressDialog->setText(tr("Please wait..."));
-		mDwoProgressDialog->show();
-		
-		MemSpyKernelHeapDumpTracker* tracker = mEngine.createKernelHeapDumpTracker();
-		connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
-		tracker->start();
-	}
-	
-	if (mode == HeapDumpsModeUser || mode == HeapDumpsModeBoth) {
-		// dump user heap
-		
-		QString filter = mFilterItem->contentWidgetData("text").toString();
-		if (!filter.isEmpty()) {
-		    
-			int errorCode = mEngine.outputThreadHeapData(filter);
-            if (errorCode == KErrNotFound) {
-                HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-                messageBox->setText(tr("No thread matches your filter"));
-                HbLabel *header = new HbLabel(tr("No such thread"), messageBox);
-                messageBox->setHeadingWidget(header);
-                messageBox->setAttribute(Qt::WA_DeleteOnClose);
-                messageBox->setTimeout(HbPopup::StandardTimeout);
-                messageBox->open();
-            }
-			    
-			
-		} else {
-			mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::ProgressDialog);
-			mDwoProgressDialog->setMinimum(0);
-			mDwoProgressDialog->setMaximum(100);
-			mDwoProgressDialog->show();
-			
-			MemSpyDwoTracker* tracker = mEngine.createDeviceWideOperation(OutputHeapData);
-			connect(tracker, SIGNAL(progress(int,QString)), this, SLOT(updateDwoProgress(int,QString)));
-			connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
-			connect(mDwoProgressDialog, SIGNAL(cancelled()), tracker, SLOT(cancel()));
-			tracker->start();
-		}
-	}
-}
-
-void MemSpyHeapDumpsView::updateDwoProgress(int progress, const QString& processName)
-{
-	mDwoProgressDialog->setText(processName);
-	mDwoProgressDialog->setProgressValue(progress);
-}
-
-void MemSpyHeapDumpsView::asyncOperationFinished(int errorCode)
-{
-	mDwoProgressDialog->hide();
-	delete mDwoProgressDialog;
-	mDwoProgressDialog = 0;
-	
-	delete sender();    
-	
-	if (errorCode != KErrNone && errorCode != KErrCancel) {
-	    HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
-        messageBox->setText(tr("An error occured during the operation. Error code: %1").arg(errorCode));
-        HbLabel *header = new HbLabel(tr("Error"), messageBox);
-        messageBox->setHeadingWidget(header);
-        messageBox->setAttribute(Qt::WA_DeleteOnClose);
-        messageBox->setTimeout(HbPopup::StandardTimeout);
-        messageBox->open();
-	}
-}
--- a/memspyui/ui/hb/src/memspykernelobjectdetailview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +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 "memspykernelobjectdetailview.h"
-
-MemSpyKernelObjectDetailModel::MemSpyKernelObjectDetailModel(const QStringList& details, QObject *parent) :
-    QAbstractListModel(parent),
-    mDetails(details)
-{
-
-}
-    
-int MemSpyKernelObjectDetailModel::rowCount(const QModelIndex &parent) const
-{
-    Q_UNUSED(parent);
-    return mDetails.count();
-}
-    
-QVariant MemSpyKernelObjectDetailModel::data(const QModelIndex &index, int role) const
-{
-    if (role == Qt::DisplayRole) {
-        
-        // convert from semicolon delimited line to two lines
-        return mDetails.at(index.row()).split(": ");
-    }
-    
-    return QVariant();
-}
-
-
-void MemSpyKernelObjectDetailView::initialize(const QVariantMap& params)
-{
-	setTitle("Details");
-	
-	mTypeName = params["typeName"].toString();
-	mObjectName = params["objectName"].toString();
-	MemSpyView::initialize(params);
-		
-	QStringList items = params.value("details").toStringList();
-	mListView.setModel(new MemSpyKernelObjectDetailModel(items, this));
-}
-
-bool MemSpyKernelObjectDetailView::isBreadCrumbVisible() const
-{
-    return true;
-}
-            
-QString MemSpyKernelObjectDetailView::getBreadCrumbText() const
-{
-    return tr("Kernel Objects > %1 > %2").arg(mTypeName).arg(mObjectName);
-}
--- a/memspyui/ui/hb/src/memspykernelobjecttypeview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +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 "memspykernelobjecttypeview.h"
-#include "viewmanager.h"
-
-MemSpyKernelObjectTypeModel::MemSpyKernelObjectTypeModel(EngineWrapper &engine, QObject *parent) :
-	QAbstractListModel(parent),
-	mObjectTypes(engine.getKernelObjectTypes())
-{
-    mKernelObjectNames << "Threads" << "Processes" << "Chunks" << "Libraries" <<
-        "Semaphores" << "Mutexes" << "Timers" << "Servers" << "Sessions" << "Logical Devices" <<
-        "Physical Devices" << "Logical Channels" << "Change Notifiers" << "Undertakers" <<
-        "Message Queues" << "Property Refs." << "Conditional Vars.";
-}
-
-MemSpyKernelObjectTypeModel::~MemSpyKernelObjectTypeModel()
-{
-	qDeleteAll(mObjectTypes);
-}
-	
-int MemSpyKernelObjectTypeModel::rowCount(const QModelIndex &parent) const
-{
-	Q_UNUSED(parent);
-	return mObjectTypes.count();
-}
-	
-QVariant MemSpyKernelObjectTypeModel::data(const QModelIndex &index, int role) const
-{
-	if (role == Qt::DisplayRole) {
-		QStringList lines;
-		lines << mKernelObjectNames.at(index.row());
-		lines << QString("%1, %2").
-			arg(tr("%n item(s)", "", mObjectTypes.at(index.row())->count())).
-			arg(formatSize(mObjectTypes.at(index.row())->size()));
-		
-		return lines;
-	}
-	
-	if (role == Qt::UserRole)
-		return mObjectTypes.at(index.row())->id();
-	
-	return QVariant();
-}
-
-QString MemSpyKernelObjectTypeModel::formatSize(qint64 size) const
-{
-	// If < 1000K
-	if  (size < 1024000)
-		return QString("%1K").arg(size ? qBound<int>(1, (size + 512) >> 10, 999) : 0);
-	
-	// larger than 1M
-	double sizeInM = size / 1048576.;
-	return sizeInM >= 1000 ?
-		QString("%1G").arg(qMax<double>(1, sizeInM / 1024), 0, 'f', 1) :
-		QString("%1M").arg(qBound<double>(1, sizeInM, 999.9), 0, 'f', 1);
-}
-
-void MemSpyKernelObjectTypeView::initialize(const QVariantMap& params)
-{
-	setTitle(tr("Kernel Objects"));
-		
-	MemSpyView::initialize(params);
-			
-	mListView.setModel(new MemSpyKernelObjectTypeModel(mEngine, this));
-	
-	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-void MemSpyKernelObjectTypeView::itemClicked(const QModelIndex& index)
-{
-	QVariantMap map;
-	map.insert("type", index.row());
-    mViewManager.showView(KernelObjectView, map);
-}
-
--- a/memspyui/ui/hb/src/memspykernelobjectview.cpp	Mon Aug 23 15:50:54 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;
-}
--- a/memspyui/ui/hb/src/memspylistview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +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 "memspylistview.h"
-
-HbWidget* MemSpyListView::createCentralWidget()
-{
-	return &mListView;
-}
--- a/memspyui/ui/hb/src/memspymainview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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 "memspymainview.h"
-#include "viewmanager.h"
-
-#include <QStringListModel>
-#include <QDebug>
-
-void MemSpyMainView::initialize(const QVariantMap& params)
-{
-	setTitle("MemSpy");
-	
-	MemSpyView::initialize(params);
-	
-	QStringList items = QStringList() 
-			<< tr("Processes & Threads") 
-			<< tr("Kernel Objects")
-			<< tr("Tracking");
-	mListView.setModel(new QStringListModel(items, this));
-    
-	QObject::connect(&mListView, SIGNAL(released(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-void MemSpyMainView::itemClicked(const QModelIndex& index)
-{
-	Q_UNUSED(index);
-	ViewIndex indexes[] = { ProcessView, KernelObjectTypeView, TrackingView };
-    mViewManager.showView(indexes[index.row()]);
-}
-
-bool MemSpyMainView::isBreadCrumbVisible() const
-{
-	return false;
-}
-
--- a/memspyui/ui/hb/src/memspyprocessview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +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 "memspyprocessview.h"
-
-#include <QVariantMap>
-
-#include "viewmanager.h"
-
-MemSpyProcessModel::MemSpyProcessModel(EngineWrapper &engine, QObject *parent) :
-	QAbstractListModel(parent),
-	mEngine(engine),
-	mProcesses(engine.getProcesses())
-{
-    mPriorityMap.insert(EPriorityLow, tr("[L]"));
-    mPriorityMap.insert(EPriorityBackground, tr("[B]"));
-    mPriorityMap.insert(EPriorityForeground, tr("[F]"));
-    mPriorityMap.insert(EPriorityHigh, tr("[H]"));
-    mPriorityMap.insert(EPriorityWindowServer, tr("[WS]"));
-    mPriorityMap.insert(EPriorityFileServer, tr("[FS]"));
-    mPriorityMap.insert(EPriorityRealTimeServer, tr("[RTS]"));
-    mPriorityMap.insert(EPrioritySupervisor, tr("[SUP]"));
-}
-
-MemSpyProcessModel::~MemSpyProcessModel()
-{
-	qDeleteAll(mProcesses);
-}
-	
-int MemSpyProcessModel::rowCount(const QModelIndex &parent) const
-{
-	Q_UNUSED(parent);
-	return mProcesses.count();
-}
-	
-QVariant MemSpyProcessModel::data(const QModelIndex &index, int role) const
-{
-	if (role == Qt::DisplayRole) {
-	    const MemSpyProcess* process = mProcesses.at(index.row());
-	    
-		QStringList lines;
-		lines << process->name();
-		
-		lines << (process->isDead() ? 
-		    process->exitInfo() :
-		    QString("%1, %2 thr, %3").
-                arg(process->sid(), 0, 16).
-                arg(process->threadCount()).
-                arg(mPriorityMap.value(process->priority(), tr("[?]"))));
-		
-		return lines;
-	}
-	
-	if (role == Qt::UserRole)
-		return mProcesses.at(index.row())->id();
-	
-	return QVariant();
-}
-
-void MemSpyProcessModel::refresh()
-{
-    beginResetModel();
-    QList<MemSpyProcess*> data = mEngine.getProcesses();
-    qDeleteAll(mProcesses);
-    mProcesses = data;
-    endResetModel();
-}
-	
-
-void MemSpyProcessView::initialize(const QVariantMap& params)
-{
-	setTitle(tr("Processes"));
-	MemSpyView::initialize(params);
-	
-	mModel = new MemSpyProcessModel(mEngine, this);
-	mListView.setModel(mModel);
-	
-	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-void MemSpyProcessView::itemClicked(const QModelIndex& index)
-{
-	QVariantMap map;
-	map.insert("pid", index.data(Qt::UserRole));
-	map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
-    mViewManager.showView(ThreadView, map);
-}
-
-void MemSpyProcessView::refresh()
-{ 
-    mModel->refresh(); 
-}
-
--- a/memspyui/ui/hb/src/memspysettingsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +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 <HbToolBar>
-#include <HbAction>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbProgressDialog>
-
-#include "memspysettingsview.h"
-#include "enginewrapper.h"
-
-const QStringList MODE_ITEMS = QStringList() << 
-	MemSpySettingsView::tr("RDebug") << 
-	MemSpySettingsView::tr("File");
-	
-MemSpySettingsView::MemSpySettingsView(EngineWrapper &engine) :
-	mForm(new HbDataForm(this)),
-	mModel(0),
-	mModeItem(0),
-	mPathItem(0),
-	mCustomPathItem(0),
-	mEngine(engine)
-{
-	setTitle(tr("Settings"));
-	
-	toolBar()->addAction(tr("OK"), this, SLOT(accept()));
-	toolBar()->addAction(tr("Cancel"), this, SLOT(reject()));
-	
-	mModel = new HbDataFormModel(this);
-		
-	mModeItem = mModel->appendDataFormItem(
-		HbDataFormModelItem::ComboBoxItem, tr("Output"));
-	mModeItem->setContentWidgetData("items", MODE_ITEMS);
-	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().outputMode());
-	
-	updateModel();
-		
-	
-	mForm->setModel(mModel);
-	mForm->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(updateModel()));
-	setWidget(mForm);
-	
-	// change navigation action
-	HbAction* action = new HbAction(Hb::BackNaviAction, this);
-	connect(action, SIGNAL(triggered()), this, SLOT(reject()));
-	setNavigationAction(action);
-}
-
-MemSpySettingsView::~MemSpySettingsView()
-{
-}
-
-void MemSpySettingsView::updateModel()
-{
-	OutputMode mode = static_cast<OutputMode>(mModeItem->contentWidgetData("currentIndex").toInt());
-	if (mode == OutputModeTrace) {
-		// remove both path item and custom path item
-		if (mPathItem)
-			mModel->removeItem(mPathItem);
-		if (mCustomPathItem)
-			mModel->removeItem(mCustomPathItem);
-		
-		mPathItem = mCustomPathItem = 0;
-	} else if (mode == OutputModeFile) {
-		if (!mPathItem) {
-			// create path item
-			mPathItem = mModel->appendDataFormItem(
-					HbDataFormModelItem::CheckBoxItem, tr("Path"));
-			mPathItem->setContentWidgetData("text", tr("Use Default Path (\\MemSpy)"));
-			mPathItem->setContentWidgetData("checkState", 
-					mEngine.settings().outputPath().isEmpty() ? Qt::Checked : Qt::Unchecked);
-			
-			mForm->addConnection(mPathItem, SIGNAL(stateChanged(int)), 
-					this, SLOT(updateModel()));
-		}
-		
-		if (mPathItem->contentWidgetData("checkState").toInt() == Qt::Unchecked && !mCustomPathItem) {
-			// create custom path item
-			mCustomPathItem = mModel->appendDataFormItem(
-					HbDataFormModelItem::TextItem, tr("Custom Path"));
-			mCustomPathItem->setContentWidgetData("text", 
-					mEngine.settings().outputPath().isEmpty() ? "\\MemSpy" : mEngine.settings().outputPath());
-		}
-		
-		if (mPathItem->contentWidgetData("checkState").toInt() == Qt::Checked && mCustomPathItem) {
-			// remove cusom path item
-			mModel->removeItem(mCustomPathItem);
-			mCustomPathItem = 0;
-		}
-	}
-}
-
-void MemSpySettingsView::accept()
-{
-	OutputMode mode = static_cast<OutputMode>(mModeItem->contentWidgetData("currentIndex").toInt());
-	
-	mEngine.settings().setOutputMode(mode);
-	
-	if (mode == OutputModeFile) {
-		QString path = mPathItem->contentWidgetData("checkState").toInt() == Qt::Checked ? 
-				"" :
-				mCustomPathItem->contentWidgetData("text").toString();
-		mEngine.settings().setOutputPath(path);
-	}
-	emit finished(true);
-}
-
-void MemSpySettingsView::reject()
-{
-	emit finished(false);
-}
-
--- a/memspyui/ui/hb/src/memspyswmtview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +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 <HbToolBar>
-#include <HbAction>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbProgressDialog>
-
-#include "memspyswmtview.h"
-#include "enginewrapper.h"
-
-const QStringList MODE_ITEMS = QStringList() << 
-	MemSpySwmtView::tr("Basic") << 
-	MemSpySwmtView::tr("Full") << 
-	MemSpySwmtView::tr("Custom");
- 
-const QStringList CATEGORIES_ITEMS = QStringList() <<
-	MemSpySwmtView::tr("FileServer Cache") <<
-	//MemSpySwmtView::tr("Bitmap Handles") <<
-	MemSpySwmtView::tr("User Heap") <<
-	//MemSpySwmtView::tr("Kernel Heap") <<
-	MemSpySwmtView::tr("Local Chunks") <<
-	MemSpySwmtView::tr("Global Chunks") <<
-	MemSpySwmtView::tr("RAM Drive") <<
-	//MemSpySwmtView::tr("User Stacks") <<
-	//MemSpySwmtView::tr("Global Data") <<
-	MemSpySwmtView::tr("RAM-loaded Code") <<
-	MemSpySwmtView::tr("Kernel Handles") <<
-	MemSpySwmtView::tr("Open Files") <<
-	MemSpySwmtView::tr("Disk Usage") <<
-	MemSpySwmtView::tr("System Memory") <<
-	MemSpySwmtView::tr("Windows Groups");
-	
-MemSpySwmtView::MemSpySwmtView(EngineWrapper &engine, ViewManager &viewManager) : 
-	MemSpyView(engine, viewManager), 
-	mToggleTimerAction(0),
-	mCategoriesItem(0),
-	mProgressDialog(0)
-{
-}
-
-MemSpySwmtView::~MemSpySwmtView()
-{
-}
-
-void MemSpySwmtView::initialize(const QVariantMap& params)
-{
-	setTitle(tr("SWMT"));
-	
-	MemSpyView::initialize(params);
-}
-
-HbToolBar* MemSpySwmtView::createToolBar()
-{
-	HbToolBar* toolBar = new HbToolBar();
-	mToggleTimerAction = toolBar->addAction("", this, SLOT(toggleTimer()));
-	toolBar->addAction(tr("Dump Now"), this, SLOT(forceDump()));
-	
-	updateTimerAction(mEngine.isSwmtRunning());
-	
-	return toolBar;
-}
-
-HbWidget* MemSpySwmtView::createCentralWidget()
-{
-	mModel = new HbDataFormModel(this);
-	
-	mTimerItem = mModel->appendDataFormItem(
-			HbDataFormModelItem::TextItem, tr("Timer (sec.)"));
-	mTimerItem->setContentWidgetData("maxLength", 2);
-	mTimerItem->setContentWidgetData("text", mEngine.settings().swmtTimerPeriod());
-	
-	mModeItem = mModel->appendDataFormItem(
-			HbDataFormModelItem::ComboBoxItem, tr("Tracking mode"));
-	mModeItem->setContentWidgetData("items", MODE_ITEMS);
-	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().swmtMode());
-	
-	modeChanged(mEngine.settings().swmtMode());
-	
-	HbDataForm* form = new HbDataForm(this);
-	form->setModel(mModel);
-	
-	form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int)));
-	
-	return form;
-}
-
-void MemSpySwmtView::updateTimerAction(bool isRunning)
-{
-	mToggleTimerAction->setText(isRunning ? tr("Stop Timer") : tr("Start Timer"));
-}
-
-void MemSpySwmtView::toggleTimer()
-{
-	bool wasRunning = mEngine.isSwmtRunning();
-	if (wasRunning)
-		mEngine.stopSwmt();
-	else
-	{
-		updateSettings();
-		mEngine.startSwmt(qBound(5, mTimerItem->contentWidgetData("text").toInt(), 60));
-	}
-	
-	updateTimerAction(!wasRunning);
-}
-
-void MemSpySwmtView::forceDump()
-{
-	updateSettings();
-	mEngine.updateOutputSettings();
-		
-	MemSpySwmtDumpTracker* tracker = mEngine.createSwmtDumpTracker();
-	connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
-	
-	mProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
-	mProgressDialog->setText(tr("Please wait..."));
-	mProgressDialog->show();
-	
-	tracker->start();
-}
-
-void MemSpySwmtView::updateSettings()
-{
-	mEngine.settings().setSwmtTimerPeriod(mTimerItem->contentWidgetData("text").toInt());
-	mEngine.settings().setSwmtMode(static_cast<SwmtMode>(
-			mModeItem->contentWidgetData("currentIndex").toInt()));
-	if (mCategoriesItem)
-		mEngine.settings().setSwmtCategories(mCategoriesItem->contentWidgetData("selectedItems").toList());
-	
-	mEngine.setSwmtSettings(static_cast<SwmtMode>(mEngine.settings().swmtMode()), 
-		mEngine.settings().swmtCategories());
-}
-
-void MemSpySwmtView::modeChanged(int mode)
-{
-	if (mode != SwmtModeCustom && mCategoriesItem)
-		removeCategoriesItem();
-	else if (mode == SwmtModeCustom && !mCategoriesItem)
-		createCategoriesItem();
-}
-
-void MemSpySwmtView::asyncOperationFinished(int errorCode)
-{
-	Q_UNUSED(errorCode);
-		
-	mProgressDialog->hide();
-	delete mProgressDialog;
-	mProgressDialog = 0;
-	
-	delete sender();
-}
-
-void MemSpySwmtView::createCategoriesItem()
-{
-	mCategoriesItem = mModel->appendDataFormItem(
-			HbDataFormModelItem::MultiselectionItem, tr("Categories"));
-	mCategoriesItem->setContentWidgetData("items", CATEGORIES_ITEMS);
-	mCategoriesItem->setContentWidgetData("selectedItems", mEngine.settings().swmtCategories());
-}
-
-void MemSpySwmtView::removeCategoriesItem()
-{
-	mModel->removeItem(mCategoriesItem);
-	mCategoriesItem = 0;
-}
--- a/memspyui/ui/hb/src/memspythreaddetailindexview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +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 <QAction>
-#include <QStringListModel>
-#include <HbMenu>
-
-#include "memspythreaddetailindexview.h"
-#include "viewmanager.cpp"
-
-void MemSpyThreadDetailIndexView::initialize(const QVariantMap& params)
-{
-	setTitle(tr("Details"));
-	
-	mProcessName = params["pname"].toString();
-	mThreadName = params["tname"].toString();
-	
-	MemSpyView::initialize(params);
-	
-	mThreadId = qVariantValue<ThreadId>(params["tid"]);
-	
-	QStringList lines = QStringList() << tr("General") << tr("Heap") << tr("Stack") 
-			<< tr("Chunks") << tr("Code Segments") << tr("Open Files") << tr("Active Objects")
-			<< tr("Handles to other Threads") << tr("Handles to other Processes") 
-			<< tr("Servers Running in Thread") << tr("Client <-> Server connections")
-			<< tr("Semaphores") << tr("References this Thread") << tr("References this Process")
-			<< tr("Mutexes") << tr("Timers") << tr("Logical DD Channels") 
-			<< tr("Change Notifiers") << tr("Undertakers") << tr("Logical Device Drivers")
-			<< tr("Physical Device Drivers");
-	
-	mListView.setModel(new QStringListModel(lines, this));
-	
-	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-HbMenu* MemSpyThreadDetailIndexView::createToolMenu()
-{
-	HbMenu* menu = new HbMenu(tr("Thread"));
-	mPriorityMenu = menu->addMenu("Change Priority");
-	
-	mPriorityMenu->addAction(tr("Abs. Very Low"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Low Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Low"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Background Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Background"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Foreground Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Foreground"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. High Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. High"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 1"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 2"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 3"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 4"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 5"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
-	
-	return menu;
-}
-
-bool MemSpyThreadDetailIndexView::isBreadCrumbVisible() const
-{
-    return true;
-}
-
-QString MemSpyThreadDetailIndexView::getBreadCrumbText() const
-{
-    return tr("Processes > %1 > Threads > %2").arg(mProcessName).arg(mThreadName);
-}
-
-void MemSpyThreadDetailIndexView::changePriority()
-{
-	QAction *s = qobject_cast<QAction*>(sender());
-	int index = mPriorityMenu->actions().indexOf(s);
-	
-	ThreadPriority priorities[] = {
-		ThreadPriorityAbsoluteVeryLow,
-		ThreadPriorityAbsoluteLowNormal,
-		ThreadPriorityAbsoluteLow,
-		ThreadPriorityAbsoluteBackgroundNormal,
-		ThreadPriorityAbsoluteBackground,
-		ThreadPriorityAbsoluteForegroundNormal,
-		ThreadPriorityAbsoluteForeground,
-		ThreadPriorityAbsoluteHighNormal,
-		ThreadPriorityAbsoluteHigh,
-		ThreadPriorityAbsoluteRealTime1,
-		ThreadPriorityAbsoluteRealTime2,
-		ThreadPriorityAbsoluteRealTime3,
-		ThreadPriorityAbsoluteRealTime4,
-		ThreadPriorityAbsoluteRealTime5,
-		ThreadPriorityAbsoluteRealTime6,
-		ThreadPriorityAbsoluteRealTime7, 
-		ThreadPriorityAbsoluteRealTime8 };
-	
-	mEngine.setThreadPriority(mThreadId, priorities[index]);
-}
-
-void MemSpyThreadDetailIndexView::itemClicked(const QModelIndex& index)
-{
-	ThreadInfoType types[] = { ThreadInfoTypeGeneral, ThreadInfoTypeHeap, 
-			ThreadInfoTypeStack, ThreadInfoTypeChunk, ThreadInfoTypeCodeSeg, 
-			ThreadInfoTypeOpenFiles, ThreadInfoTypeActiveObjects, ThreadInfoTypeOwnedThreadHandles,
-			ThreadInfoTypeOwnedProcessHandles, ThreadInfoTypeServer, ThreadInfoTypeSession, 
-			ThreadInfoTypeSemaphore, ThreadInfoTypeOtherThreads, ThreadInfoTypeOtherProcesses,
-			ThreadInfoTypeMutex, ThreadInfoTypeTimer, ThreadInfoTypeChannel,
-			ThreadInfoTypeChangeNotifier, ThreadInfoTypeUndertaker,
-			ThreadInfoTypeLDD, ThreadInfoTypePDD };
-	
-	QVariantMap map;
-	map.insert("tid", mThreadId);
-	map.insert("type", types[index.row()]);
-	map.insert("pname", mProcessName);
-	map.insert("tname", mThreadName);
-	mViewManager.showView(ThreadDetailView, map);
-}
-
--- a/memspyui/ui/hb/src/memspythreaddetailview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +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 <QAction>
-#include <QStringListModel>
-#include <HbMenu>
-
-#include "memspythreaddetailview.h"
-
-MemSpyThreadDetailModel::MemSpyThreadDetailModel(EngineWrapper &engine, ThreadId threadId, ThreadInfoType type, QObject *parent) :
-	QAbstractListModel(parent),
-	mThreadInfo(engine.getThreadInfo(threadId, type))
-{
-}
-
-MemSpyThreadDetailModel::~MemSpyThreadDetailModel()
-{
-	qDeleteAll(mThreadInfo);
-}
-	
-int MemSpyThreadDetailModel::rowCount(const QModelIndex &parent) const
-{
-	Q_UNUSED(parent);
-	return qMax(mThreadInfo.count(), 1);
-}
-	
-QVariant MemSpyThreadDetailModel::data(const QModelIndex &index, int role) const
-{
-	if (role == Qt::DisplayRole) {
-	    
-	    if (mThreadInfo.count()) {
-            QStringList lines;
-            lines << mThreadInfo.at(index.row())->caption();
-            lines << mThreadInfo.at(index.row())->value();
-            return lines;
-	    }
-	    
-	    return tr("(no items found)");
-	}
-	
-	if (role == Qt::TextAlignmentRole && mThreadInfo.count() == 0) {
-	    
-	    return Qt::AlignHCenter;
-	}
-	
-	return QVariant();
-}
-
-void MemSpyThreadDetailView::initialize(const QVariantMap& params)
-{
-    mProcessName = params["pname"].toString();
-    mThreadName = params["tname"].toString();
-    
-    // TODO: Remove duplicates with memspythreaddetailindexview
-    QMap<int, QString> titleMap;
-    titleMap[ThreadInfoTypeGeneral] = tr("General");
-    titleMap[ThreadInfoTypeHeap] = tr("Heap");
-    titleMap[ThreadInfoTypeStack] = tr("Stack");
-    titleMap[ThreadInfoTypeChunk] = tr("Chunks");
-    titleMap[ThreadInfoTypeCodeSeg] = tr("Code Segments"); 
-    titleMap[ThreadInfoTypeOpenFiles] = tr("Open Files");
-    titleMap[ThreadInfoTypeActiveObjects] = tr("Active Objects");
-    titleMap[ThreadInfoTypeOwnedThreadHandles] = tr("Handles to other Threads");
-    titleMap[ThreadInfoTypeOwnedProcessHandles] = tr("Handles to other Processes");
-    titleMap[ThreadInfoTypeServer] = tr("Servers Running in Thread");
-    titleMap[ThreadInfoTypeSession] = tr("Client <-> Server connections");
-    titleMap[ThreadInfoTypeSemaphore] = tr("Semaphores");
-    titleMap[ThreadInfoTypeOtherThreads] = tr("References this Thread");
-    titleMap[ThreadInfoTypeOtherProcesses] = tr("References this Process");
-    titleMap[ThreadInfoTypeMutex] = tr("Mutexes");
-    titleMap[ThreadInfoTypeTimer] = tr("Timers");
-    titleMap[ThreadInfoTypeChannel] = tr("Logical DD Channels");
-    titleMap[ThreadInfoTypeChangeNotifier] = tr("Change Notifiers"); 
-    titleMap[ThreadInfoTypeUndertaker] = tr("Undertakers");
-    titleMap[ThreadInfoTypeLDD] = tr("Logical Device Drivers");
-    titleMap[ThreadInfoTypePDD] = tr("Physical Device Drivers");
-    
-    setTitle(titleMap.value(params["type"].toInt()));
-    
-	MemSpyView::initialize(params);
-	
-	ThreadId threadId = qVariantValue<ThreadId>(params["tid"]);
-	ThreadInfoType type = static_cast<ThreadInfoType>(qVariantValue<int>(params["type"]));
-	
-	mListView.setModel(new MemSpyThreadDetailModel(mEngine, threadId, type, this));
-}
-
-bool MemSpyThreadDetailView::isBreadCrumbVisible() const
-{
-    return true;
-}
-
-QString MemSpyThreadDetailView::getBreadCrumbText() const
-{
-    return tr("Processes > %1 > Threads > %2").arg(mProcessName).arg(mThreadName);
-}
--- a/memspyui/ui/hb/src/memspythreadview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +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 <HbAbstractViewItem>
-#include <HbMenu>
-#include <QAction>
-
-#include "memspythreadview.h"
-#include "viewmanager.h"
-
-MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId processId, QObject *parent) :
-	QAbstractListModel(parent),
-	mProcessId(processId),
-	mEngine(engine),
-	mThreads(engine.getThreads(processId))
-{
-	mPriorityMap.insert(ThreadPriorityNull, tr("[Null]"));
-	mPriorityMap.insert(ThreadPriorityMuchLess, tr("[Much Less]"));
-	mPriorityMap.insert(ThreadPriorityLess, tr("[Less]"));
-	mPriorityMap.insert(ThreadPriorityNormal, tr("[Normal]"));
-	mPriorityMap.insert(ThreadPriorityMore, tr("[More]"));
-	mPriorityMap.insert(ThreadPriorityMuchMore, tr("[Much More]"));
-	mPriorityMap.insert(ThreadPriorityRealTime, tr("[Real Time]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteVeryLow, tr("[Abs. Very Low]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteLowNormal, tr("[Abs. Low Normal]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteLow, tr("[Abs. Low]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteBackgroundNormal, tr("[Abs. Background Normal]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteBackground, tr("[Abs. Background]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteForegroundNormal, tr("[Abs. Foreground Normal]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteForeground, tr("[Abs. Foreground]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteHighNormal, tr("[Abs. Hight Normal]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteHigh, tr("[Abs. High]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime1, tr("[Abs. RT 1]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime2, tr("[Abs. RT 2]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime3, tr("[Abs. RT 3]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime4, tr("[Abs. RT 4]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime5, tr("[Abs. RT 5]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime6, tr("[Abs. RT 6]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime7, tr("[Abs. RT 7]"));
-	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime8, tr("[Abs. RT 8]"));
-}
-
-MemSpyThreadModel::~MemSpyThreadModel()
-{
-	qDeleteAll(mThreads);
-}
-	
-int MemSpyThreadModel::rowCount(const QModelIndex &parent) const
-{
-	Q_UNUSED(parent);
-	return mThreads.count();
-}
-	
-QVariant MemSpyThreadModel::data(const QModelIndex &index, int role) const
-{
-	if (role == Qt::DisplayRole) {
-		QStringList lines;
-		lines << mThreads.at(index.row())->name();
-		lines << mPriorityMap.value(mThreads.at(index.row())->priority(), tr("[Unknown]"));
-		return lines;
-	}
-	
-	if (role == Qt::UserRole)
-		return mThreads.at(index.row())->id();
-	
-	return QVariant();
-}
-
-void MemSpyThreadModel::refresh()
-{
-    beginResetModel();
-    QList<MemSpyThread*> data = mEngine.getThreads(mProcessId);
-    qDeleteAll(mThreads);
-    mThreads = data;
-    endResetModel();
-}
-
-MemSpyThreadView::MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager) : 
-	MemSpyListView(engine, viewManager), 
-	mContextMenu(0), 
-	mPriorityMenu(0),
-	mThreadId(0),
-	mModel(0)
-{
-}
-
-MemSpyThreadView::~MemSpyThreadView()
-{
-	delete mContextMenu;
-	delete mPriorityMenu;
-}
-
-void MemSpyThreadView::initialize(const QVariantMap& params)
-{
-	ProcessId pid = qVariantValue<ProcessId>(params["pid"]);
-	setTitle(tr("Threads"));
-	
-	mProcessName = params["pname"].toString();
-	
-	MemSpyView::initialize(params);
-	
-	mModel = new MemSpyThreadModel(mEngine, pid, this);
-	mListView.setModel(mModel);
-	
-	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
-	        this, SLOT(catchLongPress(HbAbstractViewItem*,QPointF)));
-	
-	mContextMenu = new HbMenu;
-	mPriorityMenu = mContextMenu->addMenu("Change Priority");
-	
-	mPriorityMenu->addAction(tr("Abs. Very Low"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Low Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Low"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Background Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Background"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Foreground Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Foreground"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. High Normal"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. High"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 1"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 2"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 3"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 4"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 5"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
-	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
-}
-
-
-bool MemSpyThreadView::isBreadCrumbVisible() const
-{
-    return true;
-}
-
-QString MemSpyThreadView::getBreadCrumbText() const
-{
-    return tr("Processes > %1").arg(mProcessName);
-}
-
-void MemSpyThreadView::itemClicked(const QModelIndex& index)
-{
-	QVariantMap map;
-	map["tid"] = index.data(Qt::UserRole);
-	map.insert("pname", mProcessName);
-	map.insert("tname", index.data(Qt::DisplayRole).toStringList().at(0));
-	
-	mViewManager.showView(ThreadDetailIndexView, map);
-}
-
-void MemSpyThreadView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
-{
-	mThreadId = qVariantValue<ThreadId>(item->modelIndex().data(Qt::UserRole));
-	mContextMenu->setPreferredPos(coords);
-	mContextMenu->open();
-}
-
-void MemSpyThreadView::changePriority()
-{
-	QAction *s = qobject_cast<QAction*>(sender());
-	int index = mPriorityMenu->actions().indexOf(s);
-	
-	ThreadPriority priorities[] = {
-		ThreadPriorityAbsoluteVeryLow,
-		ThreadPriorityAbsoluteLowNormal,
-		ThreadPriorityAbsoluteLow,
-		ThreadPriorityAbsoluteBackgroundNormal,
-		ThreadPriorityAbsoluteBackground,
-		ThreadPriorityAbsoluteForegroundNormal,
-		ThreadPriorityAbsoluteForeground,
-		ThreadPriorityAbsoluteHighNormal,
-		ThreadPriorityAbsoluteHigh,
-		ThreadPriorityAbsoluteRealTime1,
-		ThreadPriorityAbsoluteRealTime2,
-		ThreadPriorityAbsoluteRealTime3,
-		ThreadPriorityAbsoluteRealTime4,
-		ThreadPriorityAbsoluteRealTime5,
-		ThreadPriorityAbsoluteRealTime6,
-		ThreadPriorityAbsoluteRealTime7, 
-		ThreadPriorityAbsoluteRealTime8 };
-	
-	mEngine.setThreadPriority(mThreadId, priorities[index]);
-	refresh();
-}
-
-void MemSpyThreadView::refresh()
-{ 
-    mModel->refresh(); 
-}
--- a/memspyui/ui/hb/src/memspytrackingview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +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 "memspytrackingview.h"
-#include "viewmanager.h"
-
-#include <QStringListModel>
-#include <QDebug>
-
-void MemSpyTrackingView::initialize(const QVariantMap& params)
-{
-	setTitle("MemSpy");
-	
-	MemSpyView::initialize(params);
-	
-	QStringList items = QStringList() 
-			<< tr("System Wide Memory Tracking")
-			<< tr("Heap Dumps");
-	mListView.setModel(new QStringListModel(items, this));
-    
-	QObject::connect(&mListView, SIGNAL(released(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
-}
-
-void MemSpyTrackingView::itemClicked(const QModelIndex& index)
-{
-	Q_UNUSED(index);
-	ViewIndex indexes[] = { SwmtView, HeapDumpsView };
-    mViewManager.showView(indexes[index.row()]);
-}
-
-bool MemSpyTrackingView::isBreadCrumbVisible() const
-{
-	return false;
-}
-
--- a/memspyui/ui/hb/src/memspyview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +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 <QSignalMapper>
-#include <QGraphicsLinearLayout>
-#include <QDebug>
-#include <HbMenu>
-#include <HbAction>
-#include <HbToolBar>
-#include <HbApplication>
-#include <HbMessageBox>
-#include <HbMainWindow>
-#include <HbLabel>
-
-#include "memspyview.h"
-#include "enginewrapper.h"
-
-#include "memspysettingsview.h"
-
-MemSpyView::MemSpyView(EngineWrapper &engine, ViewManager &viewManager) : 
-	HbView(),
-	mEngine(engine),
-	mViewManager(viewManager),
-	mOutputMenu(0), 
-	mOutputGenInfoMenu(0), 
-	mOutputHeapInfoMenu(0),
-	mOutputStackInfoMenu(0),
-	mToolBar(0),
-	mBreadCrumb(0)
-{
-}
-
-MemSpyView::~MemSpyView()
-{
-	delete mBreadCrumb;
-	delete mToolBar;
-	delete mOutputStackInfoMenu;
-	delete mOutputHeapInfoMenu;
-	delete mOutputGenInfoMenu; 
-	delete mOutputMenu;
-}
-
-void MemSpyView::initialize(const QVariantMap& params)
-{
-	Q_UNUSED(params);
-	QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, this);
-	
-	if (isBreadCrumbVisible()) {
-		mBreadCrumb = new HbLabel(this);
-		mBreadCrumb->setTextWrapping(Hb::TextWordWrap);
-		mBreadCrumb->setElideMode(Qt::ElideLeft);
-		mBreadCrumb->setPlainText(getBreadCrumbText());
-		HbFontSpec spec(HbFontSpec::PrimarySmall);
-		mBreadCrumb->setFontSpec(spec);
-		layout->addItem(mBreadCrumb);
-	}
-	layout->addItem(createCentralWidget());
-	setLayout(layout); 
-	
-	if (isRefreshable())
-		menu()->addAction(tr("Refresh"), this, SLOT(refresh()));
-	
-	HbMenu* toolMenu = createToolMenu();
-	if (toolMenu)
-		menu()->addMenu(toolMenu);
-	
-	menu()->addAction(tr("Settings ..."), this, SLOT(showSettings()));
-	menu()->addAction(tr("About ..."), this, SLOT(showAbout()));
-	menu()->addAction(tr("Exit"), qApp, SLOT(quit()));
-	
-	mToolBar = createToolBar();
-	if (mToolBar)
-		setToolBar(mToolBar);
-}
-
-QList<QAction*> MemSpyView::createOutputActions()
-{
-	return QList<QAction*>();
-}
-
-HbMenu* MemSpyView::createToolMenu()
-{
-	return 0;
-}
-
-HbToolBar* MemSpyView::createToolBar()
-{
-	return 0;
-}
-
-bool MemSpyView::isRefreshable() const
-{
-	return false;
-}
-
-bool MemSpyView::isBreadCrumbVisible() const
-{
-    return false;
-}
-
-QString MemSpyView::getBreadCrumbText() const
-{
-	QStringList views;
-	for (int i=1; i<mainWindow()->views().count() - 1; i++)	{
-		const HbView *view = mainWindow()->views().at(i);
-		if (view == this)
-			break;
-		views.append(view->title());
-	}
-	views.append(title());
-	
-	return views.join(" > ");
-}
-
-void MemSpyView::refresh()
-{
-	// Empty default implementation
-}
-
-void MemSpyView::showSettings()
-{
-	MemSpySettingsView* settings = new MemSpySettingsView(mEngine);
-	connect(settings, SIGNAL(finished(bool)), this, SLOT(closeSettings()));
-	mainWindow()->addView(settings);
-	mainWindow()->setCurrentView(settings);
-}
-
-void MemSpyView::showAbout()
-{
-	HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-	messageBox->setText("Version 2.1.0 - 15th June 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
-	HbLabel *header = new HbLabel("About MemSpy", messageBox);
-	messageBox->setHeadingWidget(header);
-	messageBox->setAttribute(Qt::WA_DeleteOnClose);
-	messageBox->setTimeout(HbPopup::NoTimeout);
-	messageBox->open();
-}
-
-void MemSpyView::closeSettings()
-{
-	sender()->deleteLater();
-	mainWindow()->setCurrentView(this);
-}
--- a/memspyui/ui/hb/src/viewmanager.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +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 <HbMainWindow>
-#include <HbAction>
-#include <HbMessageBox>
-#include <HbLabel>
-
-#include "viewmanager.h"
-
-#include "enginewrapper.h"
-#include "memspyview.h"
-#include "memspymainview.h"
-#include "memspyprocessview.h"
-#include "memspythreadview.h"
-#include "memspythreaddetailindexview.h"
-#include "memspythreaddetailview.h"
-#include "memspykernelobjecttypeview.h"
-#include "memspykernelobjectview.h"
-#include "memspykernelobjectdetailview.h"
-#include "memspytrackingview.h"
-#include "memspyswmtview.h"
-#include "memspyheapdumpsview.h"
-
-template <typename T>
-static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
-{
-	return new T(engine, viewManager);
-}
-// This array needs to be in sync with view enum
-MemSpyView* (*sFactories[])(EngineWrapper&, ViewManager&) = { 
-	&factory<MemSpyMainView>,
-	&factory<MemSpyProcessView>,
-	&factory<MemSpyThreadView>,
-	&factory<MemSpyThreadDetailIndexView>,
-	&factory<MemSpyThreadDetailView>,
-	&factory<MemSpyKernelObjectTypeView>,
-	&factory<MemSpyKernelObjectView>,
-	&factory<MemSpyKernelObjectDetailView>,
-	&factory<MemSpyTrackingView>,
-	&factory<MemSpySwmtView>,
-	&factory<MemSpyHeapDumpsView>
-};
-
-
-ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
-	QObject(parent),
-	mWindow(window),
-	mEngine(engine)
-{
-	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
-}
-
-void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
-{
-    MemSpyView* view;
-    try {
-        view = sFactories[viewIndex](mEngine, *this);
-        view->initialize(params);
-    }
-    catch (std::exception& ex)
-    {
-        // show message box with exception
-        // TODO: qt_symbian_exception2Error shouldn't probably be here
-        QString error = tr("An error occured during the operation. Error code: %1").arg(
-                qt_symbian_exception2Error(ex));
-        
-        HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
-        messageBox->setText(error);
-        HbLabel *header = new HbLabel(tr("Error"), messageBox);
-        messageBox->setHeadingWidget(header);
-        messageBox->setAttribute(Qt::WA_DeleteOnClose);
-        messageBox->setTimeout(HbPopup::StandardTimeout);
-        messageBox->open();
-        
-        delete view;
-        return;
-    }
-    
-	if (viewIndex != MainView) {
-		HbAction* action = new HbAction(Hb::BackNaviAction, this);
-		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
-		view->setNavigationAction(action);
-	}
-		
-	mWindow.addView(view);
-	mWindow.setCurrentView(view);
-}
-
-void ViewManager::showView(ViewIndex viewIndex)
-{
-	showView(viewIndex, QVariantMap());
-}
-
-void ViewManager::goBack()
-{
-	const QList<HbView*> views = mWindow.views();
-	int index = views.indexOf(mWindow.currentView());
-	mWindow.setCurrentView(views.at(index-1), true, Hb::ViewSwitchUseBackAnim);
-}
-
-void ViewManager::viewChanged(HbView *view)
-{
-	const QList<HbView*> views = mWindow.views();
-	int index = views.indexOf(view);
-	for (int i=views.count()-1; i>index; i--)
-		mWindow.removeView(views.at(i));
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,45 @@
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+  <package id="rndtools" name="R&amp;D tools" levels="support generic test util">
+    <collection id="perfapps" name="Performance Applications" level="generic">
+			<component id="memspyui" filter="s60" name="Memspy UI" purpose="development" target="device" class="tool">
+				<unit bldFile="perfapps/memspyui" qt:proFile="memspyui.pro" />
+			</component>
+			<component id="perfmon" filter="s60" name="Performance Monitor" purpose="development" target="device" class="tool">
+				<unit bldFile="perfapps/perfmon" qt:proFile="perfmon.pro"/>
+			</component>
+			<component id="piprofilerui" filter="s60" name="Performance Investigator Profiler UI" purpose="development" target="device" introduced="^4">
+				<unit bldFile="perfapps/piprofilerui" qt:proFile="piprofilerui.pro" />
+			</component>
+		</collection>
+    <collection id="creator" name="Creator" level="support">
+	   	<!-- collection is really a component. Should move down a directory -->
+      <component id="creator_build" filter="s60" name="Creator Tool" purpose="development" target="device" class="tool">
+        <unit bldFile="creator" qt:proFile="creator.pro"/>
+      </component>
+    </collection>
+    <collection id="filebrowser" name="File Browser" level="util">
+	   	<!-- collection is really a component. Should move down a directory -->
+      <component id="filebrowser_build" filter="s60" name="File Browser Build" purpose="development" target="device" class="tool">
+        <unit bldFile="filebrowser" qt:proFile="filebrowser.pro" />
+      </component>
+    </collection>
+    <collection id="launcher" name="Launcher" level="util">
+	   	<!-- collection is really a component. Should move down a directory -->
+      <component id="launcher_build" filter="s60" name="Launcher Utility" purpose="development" target="device" class="tool">
+        <unit bldFile="launcher" qt:proFile="launcher.pro" />
+      </component>
+    </collection>
+    <collection id="loadgen" name="Load Generator" level="test">
+	   	<!-- collection is really a component. Should move down a directory -->
+      <component id="loadgen_build" filter="s60" name="Load Generator Application" purpose="development" target="device" class="tool">
+        <unit bldFile="loadgen" qt:proFile="loadgen.pro" />
+      </component>
+    </collection>
+    <collection id="screengrabber" name="Screen Grabber" level="util">
+	   	<!-- collection is really a component. Should move down a directory -->
+      <component id="screengrabber_build" filter="s60"  name="ScreenGrabber" purpose="development" target="device" class="tool">
+		    <unit bldFile="screengrabber" qt:proFile="screengrabber.pro"/>
+      </component>
+    </collection>
+  </package>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="app"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/Example_MemSpyProcessMemoryTrackingAutoStartConfig.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="yes"?>
+<memspy_process_memory_tracking>
+
+    <process sid="0x100058EC"/>
+	<process sid="0x1000484B"/>
+
+</memspy_process_memory_tracking>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/MemSpyEComInterfaceIds.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="yes"?>
+<memspy_ecom_sections>
+
+    <category name="Messaging">
+		<interface uid="0xABCD1234" name="Watchers" />
+    </category>
+
+    <category name="App-Protocols">
+		<interface uid="0x101F446D" name="HTTP Filters" />
+		<interface uid="0x1000A449" name="HTTP Protocol" />
+    </category>
+
+    <category name="S60 AIW">
+		<interface uid="0x101F8650" name="AIW Class Base" />
+		<interface uid="0x101F8652" name="AIW Class Menu" />
+    </category>
+
+</memspy_ecom_sections>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/MemSpyProcessMemoryTrackingAutoStartConfig.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<memspy_process_memory_tracking>
+
+</memspy_process_memory_tracking>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/backup_registration.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+
+    <passive_backup>
+        <include_directory name="\"/>
+        <exclude name="MemSpy_Passive_Excluded.txt"/>
+    </passive_backup>
+
+    <system_backup/>
+
+    <public_backup>
+        <include_directory name="C:\Data\Others\MemSpy\"/>
+    </public_backup>
+
+    <restore requires_reboot = "no"/>
+
+</backup_registration>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/memspyui.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,1133 @@
+/*
+* 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:
+*
+*/
+
+
+// Resource Identifier
+NAME MEMS
+
+// System includes
+#include <data_caging_paths_strings.hrh>
+#include <appinfo.rh>
+#include <eikon.rh>
+#include <EIKCORE.rsg>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <eikon.rsg>
+#include <avkon.rsg>
+#include <avkon.mbg>
+#include <avkon.loc>
+#include <AvkonIcons.hrh>
+#include <bldvariant.hrh>
+
+
+// User includes
+#include "../ui/avkon/inc/MemSpy.hrh"
+
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf="MemSpy"; }
+
+RESOURCE EIK_APP_INFO
+    {
+    hotkeys = r_memspy_hotkeys;
+    menubar = r_memspy_menubar;
+    cba     = R_AVKON_SOFTKEYS_OPTIONS_EXIT;     
+    }
+
+
+
+
+
+
+RESOURCE HOTKEYS r_memspy_hotkeys
+    {
+    control=
+        {
+        HOTKEY { command=EAknCmdExit; key='e'; }
+        };
+    }
+
+
+RESOURCE MENU_BAR r_memspy_menubar
+    {
+    titles=
+        {
+        MENU_TITLE { menu_pane=r_memspy_menupane;                   txt = "Main Menu"; }
+        };
+    }
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_stack
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdStackInfoThread;            txt = "Info"; }
+#ifndef __WINS__
+		,
+		MENU_ITEM { command = EMemSpyCmdStackData;                  cascade = r_memspy_menupane_stack_data; txt = "Data"; }
+#endif
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_stack_data
+    {
+    items=
+        {
+		MENU_ITEM { command=EMemSpyCmdStackDataUser;                txt = "User stack data"; },
+		MENU_ITEM { command=EMemSpyCmdStackDataKernel;              txt = "Kernel stack data"; }
+        };
+    }
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_heap
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdHeapInfoThread;             txt = "Info"; },
+		MENU_ITEM { command = EMemSpyCmdHeapData;                   cascade = r_memspy_menupane_heap_data; txt = "Data"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_heap_data
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdHeapCellListing;            txt = "Cell list"; }
+#ifndef __WINS__
+		,
+		MENU_ITEM { command = EMemSpyCmdHeapDataDump;               txt = "Heap data"; }
+#endif
+        };
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_auto_capture
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdAutoCaptureToggle;          txt = "Enable/Disable"; },
+		MENU_ITEM { command = EMemSpyCmdAutoCaptureRetryTime;       txt = "Timer period"; },
+		MENU_ITEM { command = EMemSpyCmdAutoCaptureOperationType;   txt = "Operation type"; }
+        };
+    }
+
+
+RESOURCE TBUF r_memspy_auto_capture_enable
+    {
+    buf = "Enable";
+    }
+
+
+RESOURCE TBUF r_memspy_auto_capture_disable
+    {
+    buf = "Disable";
+    }
+
+
+RESOURCE LISTBOX r_memspy_auto_capture_operation_listbox
+    {
+    flags = 0; //EEikListBoxMultipleSelection;
+    }
+
+
+RESOURCE AVKON_SETTING_PAGE r_memspy_auto_capture_operation_types_settings_page
+    { 
+    number              = EAknSettingPageNoOrdinalDisplayed;
+    label               = "Operation type";
+    softkey_resource    = R_AVKON_SOFTKEYS_OK_CANCEL;
+    type                = EAknSetListBox;
+    editor_resource_id  = r_memspy_auto_capture_operation_listbox;
+    }
+
+
+RESOURCE ARRAY r_memspy_auto_capture_operation_types
+    {
+    items =
+        {
+		LBUF { txt = "General Info (Text)"; },
+		LBUF { txt = "General Info (Detailed)"; },
+		//
+		LBUF { txt = "User Heap Info (Text)"; },
+		LBUF { txt = "User Heap Info (CSV)"; },
+		//
+		LBUF { txt = "User Heap Cell List (Text)"; },
+		//
+		LBUF { txt = "User Heap Data (Binary)"; },
+		LBUF { txt = "Kernel Heap Data (Binary)"; },
+		//
+		LBUF { txt = "User Stack Info (Text)"; },
+		LBUF { txt = "User Stack Info (CSV)"; },
+		//
+		LBUF { txt = "User Stack Data (Binary)"; },
+		LBUF { txt = "Kernel Stack Data (Binary)"; }
+        };
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_phone_info_general
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralSummary;			txt = "Summary"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralDetailed;			txt = "Detailed Info"; }//,
+		//MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralHandles;			txt = "Handle Info"; },
+		//MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneralKernelContainers;	txt = "Kernel Containers"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_phone_info_heap
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapInfoSummary;       txt = "Detailed Summary"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapInfoCompact;		txt = "Compact Summary"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapCellListing;       txt = "Cell Listing"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeapDump;			    txt = "Data (Binary)"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_phone_info_stack
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackInfo;             txt = "Detailed Summary"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackInfoCompact;      txt = "Compact Summary"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackDumpUser;         txt = "User Stacks (Binary)"; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoStackDumpKernel;       txt = "Kernel Stacks (Binary)"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_phone_info
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoGeneral;           txt = "General";        cascade = r_memspy_menupane_phone_info_general; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoHeap;              txt = "Heap";           cascade = r_memspy_menupane_phone_info_heap; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfoStack;             txt = "Stack";          cascade = r_memspy_menupane_phone_info_stack; }
+        };
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+RESOURCE MENU_PANE r_memspy_menupane_process_sort
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdProcessSortById;            txt = "By Id"; },
+		MENU_ITEM { command = EMemSpyCmdProcessSortByName;          txt = "By Name"; },
+		MENU_ITEM { command = EMemSpyCmdProcessSortByThreadCount;   txt = "By Number of Threads"; },
+		MENU_ITEM { command = EMemSpyCmdProcessSortByCodeSegs;      txt = "By Code Segments"; },
+		MENU_ITEM { command = EMemSpyCmdProcessSortByHeapUsage;     txt = "By Heap Usage"; },
+		MENU_ITEM { command = EMemSpyCmdProcessSortByStackUsage;    txt = "By Stack Usage"; }
+        };
+    }
+
+RESOURCE MENU_PANE r_memspy_menupane_process_info
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdProcessInfoSummary;         txt = "Summary"; },
+		MENU_ITEM { command = EMemSpyCmdProcessInfoHandles;			txt = "Handles"; }
+        };
+    }
+*/
+
+
+RESOURCE MENU_PANE r_memspy_menupane_process_end
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdProcessEndKill;				txt = "Kill"; },
+		MENU_ITEM { command = EMemSpyCmdProcessEndPanic;			txt = "Panic"; },
+		MENU_ITEM { command = EMemSpyCmdProcessEndTerminate;        txt = "Terminate"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_process
+    {
+    items=
+        {
+        //MENU_ITEM { command = EMemSpyCmdProcessInfo;                txt = "Info";       cascade = r_memspy_menupane_process_info; },
+        //MENU_ITEM { command = EMemSpyCmdProcessSort;                txt = "Sort";       cascade = r_memspy_menupane_process_sort; },
+		MENU_ITEM { command = EMemSpyCmdProcessEnd;                 txt = "End";       cascade = r_memspy_menupane_process_end; }		
+        };
+    }       
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_thread_priority
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteVeryLow;           txt = "Abs. Very Low"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteLowNormal;         txt = "Abs. Low Normal"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteLow;				txt = "Abs. Low"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal;	txt = "Abs. Background Normal"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteBackground;        txt = "Abs. Background "; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal;  txt = "Abs. Foreground Normal"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteForeground;        txt = "Abs. Foreground"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteHighNormal;        txt = "Abs. High Normal"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteHigh;				txt = "Abs. High"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime1;         txt = "Abs. Real Time 1"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime2;         txt = "Abs. Real Time 2"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime3;         txt = "Abs. Real Time 3"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime4;         txt = "Abs. Real Time 4"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime5;         txt = "Abs. Real Time 5"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime6;         txt = "Abs. Real Time 6"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime7;         txt = "Abs. Real Time 7"; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriorityAbsoluteRealTime8;         txt = "Abs. Real Time 8"; }
+        };
+    }
+
+/*
+RESOURCE MENU_PANE r_memspy_menupane_thread_info
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdThreadInfoHandles;			txt = "Handles"; }
+        };
+    }
+*/
+
+RESOURCE MENU_PANE r_memspy_menupane_thread_end
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdThreadEndKill;				txt = "Kill"; },
+		MENU_ITEM { command = EMemSpyCmdThreadEndPanic;				txt = "Panic"; },
+		MENU_ITEM { command = EMemSpyCmdThreadEndTerminate;			txt = "Terminate"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_thread
+    {
+    items=
+        {
+ 		//MENU_ITEM { command = EMemSpyCmdThreadInfo;					txt = "Info";				cascade = r_memspy_menupane_thread_info; },
+		MENU_ITEM { command = EMemSpyCmdThreadSetPriority;          txt = "Change Priority";	cascade = r_memspy_menupane_thread_priority; },
+		MENU_ITEM { command = EMemSpyCmdThreadEnd;					txt = "End";				cascade = r_memspy_menupane_thread_end; }
+        };
+    }
+
+
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_output
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdOutputToDebug;              txt = "Switch to Debug output"; },
+		MENU_ITEM { command = EMemSpyCmdOutputToFile;               txt = "Switch to File output"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_tools
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdToolsListOpenFiles;         txt = "List open files"; },
+		MENU_ITEM { command = EMemSpyCmdOutput;                     txt = "Change output mode";       cascade = r_memspy_menupane_output; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_view
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdViewRefresh;                txt = "Refresh"; },
+		MENU_ITEM { command = EMemSpyCmdViewOutputToSink;           txt = "Output Contents"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_images
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdImagesListing;              txt = "Output Listing"; },
+		MENU_ITEM { command = EMemSpyCmdImagesSlideshow;            txt = "Slideshow"; }
+#ifndef __WINS__
+		,
+		MENU_ITEM { command = EMemSpyCmdImagesSaveAllToMemoryCard;  txt = "Save All to Memory Card"; }
+#endif
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_server_list_output
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdServerListOutputListCSV;      txt = "Listing"; },
+		MENU_ITEM { command = EMemSpyCmdServerListOutputListDetailed; txt = "Detailed Listing"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_server_list_sort
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdServerListSortByName;           txt = "By Name"; },
+		MENU_ITEM { command = EMemSpyCmdServerListSortBySessionCount;   txt = "By Number of Sessions"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_server_list
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdServerListOutput;               txt = "Output";       cascade = r_memspy_menupane_server_list_output; },
+		MENU_ITEM { command = EMemSpyCmdServerListSort;                 txt = "Sort";         cascade = r_memspy_menupane_server_list_sort; }
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_chunk_list_sort
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdChunkSortByName;                txt = "By Name"; },
+		MENU_ITEM { command = EMemSpyCmdChunkSortBySize;                txt = "By Size"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_chunk_list
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdChunkListing;                   txt = "Output Listing"; },
+		MENU_ITEM { command = EMemSpyCmdChunkSort;                      txt = "Sort";         cascade = r_memspy_menupane_chunk_list_sort; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_filter_by_capability
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTCBProcess;              txt = "TCB (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTCBAll;                  txt = "TCB (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithCommDDProcess;           txt = "Comm DD (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithCommDDAll;               txt = "Comm DD (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess;        txt = "Power Mgmt (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll;            txt = "Power Mgmt (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess;     txt = "Multimedia DD (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll;         txt = "Multimedia DD (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess;   txt = "Read Device Data (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll;       txt = "Read Device Data (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess;  txt = "Write Device Data (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll;      txt = "Write Device Data (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDRMProcess;              txt = "DRM (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDRMAll;                  txt = "DRM (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess;        txt = "Trusted UI (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithTrustedUIAll;            txt = "Trusted UI (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithProtServProcess;         txt = "Prot Serv (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithProtServAll;             txt = "Prot Serv (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess;        txt = "Disk Admin (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithDiskAdminAll;            txt = "Disk Admin (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess;   txt = "Network Ctrl (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkControlAll;       txt = "Network Ctrl (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithAllFilesProcess;         txt = "All Files (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithAllFilesAll;             txt = "All Files (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSwEventProcess;          txt = "SW Event (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSwEventAll;              txt = "SW Event (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess;  txt = "Network Serv (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll;      txt = "Network Serv (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess;    txt = "Local Serv (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocalServicesAll;        txt = "Local Serv (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess;     txt = "Read User Data (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithReadUserDataAll;         txt = "Read User Data (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess;    txt = "Write User Data (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll;        txt = "Write User Data (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocationProcess;         txt = "Location (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithLocationAll;             txt = "Location (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess;   txt = "Surroundings DD (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll;       txt = "Surroundings DD (All)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithUserEnvProcess;          txt = "User Env (Exe)"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCapsWithUserEnvAll;              txt = "User Env (All)"; }
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_filter
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowItemsAll;                    txt = "None"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowItemsGlobalData;             txt = "By Global Data"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShowCaps;                        txt = "By Capability";         cascade = r_memspy_menupane_codeseg_list_filter_by_capability; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_codeseg_list_sort
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdCodeSegSortByName;               txt = "By Name"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegSortByCodeSize;           txt = "By Code Size"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegSortByDataSize;           txt = "By Total Data Size"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegSortByUid;                txt = "By Uid"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_codeseg_list
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdCodeSegListing;                 txt = "Output Listing"; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegShow;                    txt = "Filter";       cascade = r_memspy_menupane_codeseg_list_filter; },
+		MENU_ITEM { command = EMemSpyCmdCodeSegSort;                    txt = "Sort";         cascade = r_memspy_menupane_codeseg_list_sort; }
+        };
+    }
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_active_objects
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdActiveObjectListing;            txt = "Output Listing"; }
+        };
+    }
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_ram
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdRAMAvkonIconCacheDisabled;      txt = "Disable Icon Cache"; },
+		MENU_ITEM { command = EMemSpyCmdRAMAvkonIconCacheEnabled;       txt = "Enable Icon Cache"; }
+        };
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_kernel_containers
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdKernelContainersOutput;                     txt = "Output list"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_kernel_objects
+    {
+    items=
+        {
+        MENU_ITEM { command = EMemSpyCmdKernelObjectTerminate;                     txt = "Terminate"; },
+        MENU_ITEM { command = EMemSpyCmdKernelObjectSwitchTo;                      txt = "Switch to"; },
+        MENU_ITEM { command = EMemSpyCmdKernelObjectEnd;                           txt = "End"; },
+        MENU_ITEM { command = EMemSpyCmdKernelObjectPanic;                         txt = "Panic"; }
+        };
+    }
+
+
+RESOURCE MENU_PANE r_memspy_menupane_kernel_heap
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdKernelHeapDump;                             txt = "Dump Heap"; }
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_memory_tracking
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingStart;						txt = "Start"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingStop;							txt = "Stop"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingTotalWithSharedMem;			txt = "Include shared memory in Total"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingTotalWithoutSharedMem;		txt = "Exclude shared memory from Total"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWMReset;						txt = "Reset HWM"; }
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_memory_tracking_hwm
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWMReset;						txt = "Reset"; }
+        };
+    }
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_memory_tracking_autostart
+    {
+    items=
+        {
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemAdd;				txt = "Add"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemEdit;			txt = "Edit"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemDelete;			txt = "Remove"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll;		txt = "Remove All"; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStartItemImport;			txt = "Import"; }
+        };
+    }
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane_window_groups
+    {
+    items=
+        {
+        MENU_ITEM { command = EMemSpyCmdWindowGroupTerminate;                     txt = "Terminate"; },
+        MENU_ITEM { command = EMemSpyCmdWindowGroupSwitchTo;                      txt = "Switch to"; },
+        MENU_ITEM { command = EMemSpyCmdWindowGroupEnd;                           txt = "End"; },
+        MENU_ITEM { command = EMemSpyCmdWindowGroupPanic;                         txt = "Panic"; }
+        };
+    }
+
+
+
+
+
+
+
+RESOURCE MENU_PANE r_memspy_menupane
+    {
+    items=
+        {
+		// This item is visible if the view supports child views
+		MENU_ITEM { command = EMemSpyCmdOpen;						txt = "Open"; },
+		
+		// These are view-specific menu cascades that are not shown unless a specific view is open
+		MENU_ITEM { command = EMemSpyCmdServerList;						txt = "Server List";        cascade = r_memspy_menupane_server_list; },
+		MENU_ITEM { command = EMemSpyCmdChunk;							txt = "Chunk";              cascade = r_memspy_menupane_chunk_list; },
+		MENU_ITEM { command = EMemSpyCmdCodeSeg;						txt = "Code Segment";       cascade = r_memspy_menupane_codeseg_list; },
+		MENU_ITEM { command = EMemSpyCmdImages;							txt = "Images";             cascade = r_memspy_menupane_images; },
+		MENU_ITEM { command = EMemSpyCmdActiveObject;					txt = "Active Object";      cascade = r_memspy_menupane_active_objects; },
+		MENU_ITEM { command = EMemSpyCmdHeap;							txt = "Heap";               cascade = r_memspy_menupane_heap; },
+		MENU_ITEM { command = EMemSpyCmdStack;							txt = "Stack";              cascade = r_memspy_menupane_stack; },
+		MENU_ITEM { command = EMemSpyCmdRAM;							txt = "RAM";                cascade = r_memspy_menupane_ram; },
+		MENU_ITEM { command = EMemSpyCmdProcess;						txt = "Process";            cascade = r_memspy_menupane_process; },
+		MENU_ITEM { command = EMemSpyCmdThread;							txt = "Thread";             cascade = r_memspy_menupane_thread; },
+		MENU_ITEM { command = EMemSpyCmdKernelContainers;				txt = "Kernel Objects";     cascade = r_memspy_menupane_kernel_containers; },
+		MENU_ITEM { command = EMemSpyCmdKernelObjects;                  txt = "Kernel Object";      cascade = r_memspy_menupane_kernel_objects; },
+		MENU_ITEM { command = EMemSpyCmdKernelHeap;						txt = "Kernel Heap";        cascade = r_memspy_menupane_kernel_heap; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTracking;					txt = "Memory Tracking";    cascade = r_memspy_menupane_memory_tracking; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingHWM;				txt = "Memory HWM";			cascade = r_memspy_menupane_memory_tracking_hwm; },
+		MENU_ITEM { command = EMemSpyCmdMemoryTrackingAutoStart;		txt = "Auto-Start Items";   cascade = r_memspy_menupane_memory_tracking_autostart; },
+		MENU_ITEM { command = EMemSpyCmdWindowGroups;                   txt = "Window Group";       cascade = r_memspy_menupane_window_groups; },
+		
+		// These are standard menu items that are always visible
+		MENU_ITEM { command = EMemSpyCmdView;							txt = "View";               cascade = r_memspy_menupane_view; },
+		MENU_ITEM { command = EMemSpyCmdTools;							txt = "Tools";              cascade = r_memspy_menupane_tools; },
+		MENU_ITEM { command = EMemSpyCmdPhoneInfo;						txt = "Phone Information";  cascade = r_memspy_menupane_phone_info; },
+		MENU_ITEM { command = EMemSpyCmdAutoCapture;					txt = "Automatic Capture";  cascade = r_memspy_menupane_auto_capture; },
+
+		// About
+        MENU_ITEM { command = EMemSpyCmdToolsAbout;						txt = "About"; },
+		
+		// One or other is visible, depending on whether it is a top level menu item
+		MENU_ITEM { command = EAknSoftkeyBack;							txt = "Back"; },
+		MENU_ITEM { command = EAknCmdExit;								txt = "Exit"; }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_device_wide_operation_progress_dialog
+    {
+    title   = "Performing operation..";
+    flags   = EAknProgressNoteFlags | EEikDialogFlagWait;
+    buttons = R_AVKON_SOFTKEYS_CANCEL;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtNote;
+            id      = EMemSpyCtrlIdProgressNote;
+            control = AVKON_NOTE 
+                { 
+                layout      = EProgressLayout;
+                imagefile   = AVKON_ICON_FILE;
+                imageid     = EMbmAvkonQgn_note_progress;
+                imagemask   = EMbmAvkonQgn_note_progress_mask;
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_export_to_memorycard_dialog
+    {
+    title   = "Save Bitmaps to Memory Card";
+    flags   = EAknProgressNoteFlags | EEikDialogFlagWait;
+    buttons = R_AVKON_SOFTKEYS_CANCEL;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtNote;
+            id      = EMemSpyCtrlIdProgressNote;
+            control = AVKON_NOTE 
+                { 
+                layout      = EProgressLayout;
+                imagefile   = AVKON_ICON_FILE;
+                imageid     = EMbmAvkonQgn_note_progress;
+                imagemask   = EMbmAvkonQgn_note_progress_mask;
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_device_wide_settings
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_DATA_QUERY 
+                { 
+                layout  = ENumberLayout;
+                label   = "Frequency (seconds)";
+                control = AVKON_INTEGER_EDWIN
+                    {
+                    min         =    5;
+                    max         = 3600;
+                    maxlength   =    4;
+                    };
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_preparing_info_item_container_wait_note
+    {
+    flags   = EAknWaitNoteFlags | EEikDialogFlagWait;
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtNote;
+            id      = EMemSpyCtrlIdWaitNote;
+            control = AVKON_NOTE 
+                { 
+                layout          = EWaitLayout;
+                singular_label  = "Preparing items...";
+                imagefile       = AVKON_ICON_FILE;
+                imageid         = EMbmAvkonQgn_note_progress;
+                imagemask       = EMbmAvkonQgn_note_progress_mask;
+                animation       = R_QGN_GRAF_WAIT_BAR_ANIM;
+                };
+            }
+        };
+    }
+
+
+
+
+
+RESOURCE DIALOG r_memspy_image_slideshow
+    {
+    title   = "Image Slideshow...";
+    flags   = EEikDialogFlagNoDrag | EEikDialogFlagCbaButtons | EEikDialogFlagWait;
+    buttons = R_AVKON_SOFTKEYS_CANCEL;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EEikCtImage;
+            id      = EMemSpyCtrlIdSlideShowImage;
+            control = IMAGE
+                {
+                };
+            }
+        };
+    }
+
+
+
+
+
+
+RESOURCE DIALOG r_memspy_heap_tracker_timer_period
+    {
+    flags   = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_DATA_QUERY 
+                { 
+                layout  = ENumberLayout;
+                label   = "Frequency (seconds)";
+                control = AVKON_INTEGER_EDWIN
+                    {
+                    min         =   30;
+                    max         = 3600;
+                    maxlength   =    4;
+                    };
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_heap_tracker_name_filter
+    {
+    flags   = EAknDialogGenericQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items   =
+        {
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_DATA_QUERY 
+                { 
+                layout  = EDataLayout;
+                label   = "Thread Name Filter";
+                control = EDWIN
+                    {
+                    flags               = 0;
+                    width               = 8;
+                    lines               = 1;
+                    maxlength           = 16;
+                    avkon_flags         = EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
+                    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
+                    default_input_mode  = EAknEditorTextInputMode;
+                    };
+                };
+            }
+        };
+    }
+
+RESOURCE DIALOG r_memspy_memory_tracking_process_uid_dialog
+    {
+    flags	= EAknDialogGenericQueryFlags;
+    buttons	= R_AVKON_SOFTKEYS_OK_CANCEL;
+    items	=
+        {
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_DATA_QUERY 
+                { 
+                layout	= EDataLayout;
+                label	= "Process Uid (Hex)";
+                control = EDWIN
+                    {
+                    flags				= 0;
+                    width				= 8;
+                    lines				= 1;
+                    maxlength			= 8;
+                    avkon_flags			= EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
+                    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
+                    default_input_mode	= EAknEditorNumericInputMode;
+                    };
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_memory_tracking_import_from_installed_xml_dialog
+	{
+	flags	= EGeneralQueryFlags;
+	buttons	= R_AVKON_SOFTKEYS_YES_NO;
+	items	=
+		{
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY 
+                { 
+		        layout		= EConfirmationLayout;
+			    label		= "Import auto-start items\nfrom installed XML file?";
+				animation	= R_QGN_NOTE_QUERY_ANIM;
+				};
+			}
+		};
+	}
+
+
+RESOURCE DIALOG r_memspy_memory_tracking_import_from_userdefined_xml_dialog
+	{
+	flags	= EGeneralQueryFlags;
+	buttons	= R_AVKON_SOFTKEYS_YES_NO;
+	items	=
+		{
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY 
+                { 
+		        layout		= EConfirmationLayout;
+			    label		= "Import auto-start items\nfrom custom XML file?";
+				animation	= R_QGN_NOTE_QUERY_ANIM;
+				};
+			}
+		};
+	}
+
+    
+RESOURCE DIALOG r_memspyui_about_dialog
+	{
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+    items=
+		{
+        DLG_LINE
+			{
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+				{
+                label = "About MemSpy";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+				};
+			},
+        DLG_LINE
+			{
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+				{
+                message = "Version 2.1.0 - 15th June 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.";
+				};
+			}
+		};
+	}
+
+
+
+RESOURCE DIALOG r_memspy_ram_memory_delta_dialog
+    {
+	flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+		    id = EGeneralNote;
+            control = AVKON_NOTE 
+                { 
+                layout = EGeneralLayout;
+                singular_label = "Memory Delta";
+                animation = R_QGN_NOTE_INFO_ANIM;
+                };
+            }
+        };
+    }
+
+
+RESOURCE DIALOG r_memspy_panic_system_critical_thread_or_process
+	{
+	flags	= EGeneralQueryFlags;
+	buttons	= R_AVKON_SOFTKEYS_YES_NO;
+	items	=
+		{
+        DLG_LINE
+            {
+            type    = EAknCtQuery;
+            id      = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY 
+                { 
+		        layout		= EConfirmationLayout;
+			    label		= "Terminating/killing/panicking item will cause a reboot.\nContinue?";
+				animation	= R_QGN_NOTE_QUERY_ANIM;
+				};
+			}
+		};
+	}
+
+RESOURCE DIALOG r_memspy_kernel_object_details_dialog
+    {
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                label = "Object details";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {
+                message = ".";
+                };
+            }
+        };
+    }
+
+RESOURCE AVKON_SETTING_PAGE r_memspyui_swmt_categories_setting_page
+    {
+    type = EAknSetListBox;
+    editor_resource_id = r_memspyui_swmt_categories_items_listbox;
+    label = "SWMT Categories";
+    }   
+
+RESOURCE LISTBOX r_memspyui_swmt_categories_items_listbox
+    {
+    flags = EAknListBoxMultipleSelection;
+    }
+
+// ---------------------------------------------------------
+//   
+//    RESOURCE LOCALISABLE_APP_INFO
+//
+// ---------------------------------------------------------
+//
+RESOURCE LOCALISABLE_APP_INFO r_memspyui_localisable_app_info
+    {
+    short_caption = "MemSpy";
+    caption_and_icon = 
+    CAPTION_AND_ICON_INFO
+        {
+        caption = "MemSpy";
+
+        number_of_icons = 1;
+
+        // Note for ROM-based apps it is recommended to add the drive letter
+        // icon_file = "z:"APP_BITMAP_DIR"\\myapp_aif.mif";
+        icon_file = APP_BITMAP_DIR"\\memspyui_aif.mif";
+        };
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/data/memspyui_reg.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:
+*
+*/
+
+
+// System includes
+#include <memspyui.rsg>
+#include <appinfo.rh>
+#include <data_caging_paths_strings.hrh>
+
+
+
+UID2 KUidAppRegistrationResourceFile
+
+UID3 0x2002129F
+
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file                    = "MemSpyUI";
+    localisable_resource_file   = APP_RESOURCE_DIR"\\MemSpyUI";
+    localisable_resource_id     = R_MEMSPYUI_LOCALISABLE_APP_INFO;
+    group_name					= "RnD Tools";
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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 <platform_paths.hrh>
+
+prj_platforms
+
+WINSCW GCCE ARMV5 ARMV6
+
+#include "bld_generic.inf"
+
+#include "../ui/avkon/group/bld.inf"
+
+prj_mmpfiles
+
+prj_extensions
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/group/bld_generic.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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 <platform_paths.hrh>
+#include "../memspywindowserverhelper/group/bld.inf"
+
+PRJ_EXPORTS
+../data/MemSpyEComInterfaceIds.xml                      z:/private/2002129F/memspyecominterfaceids.xml
+../data/MemSpyProcessMemoryTrackingAutoStartConfig.xml	z:/private/2002129F/memspyprocessmemorytrackingautostartconfig.xml
+../data/backup_registration.xml							z:/private/2002129F/backup_registration.xml
+../rom/memspyui.iby                                     CORE_IBY_EXPORT_PATH(tools,memspyui.iby)
+
+#ifndef SBSV2
+  gnumakefile memspyui_icons_aif.mk
+
+  #ifdef MARM
+  gnumakefile memspyui_stub_sis.mk
+  #endif
+#endif
+
+#ifdef SBSV2
+  PRJ_EXTENSIONS
+  START EXTENSION s60/mifconv
+  OPTION TARGETFILE memspyui_aif.mif
+  OPTION SOURCEDIR ../icons
+  OPTION SOURCES -c8,8 qgn_menu_memspyui
+  END
+
+  #ifdef MARM
+  START EXTENSION app-services/buildstubsis
+  OPTION SRCDIR ../sis
+  OPTION SISNAME MemSpy_stub
+  END
+  #endif 
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/group/group.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include \"bld_generic.inf\""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/group/memspyui_icons_aif.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,54 @@
+#
+# 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:  
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\memspyui_aif.mif
+
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN :
+	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : $(ICONTARGETFILENAME)
+
+$(ICONTARGETFILENAME) : ..\icons\qgn_menu_memspyui.svg
+	mifconv $(ICONTARGETFILENAME) \
+		/c8,8 ..\icons\qgn_menu_memspyui.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/group/memspyui_stub_sis.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,56 @@
+#
+# 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:  
+#
+
+
+TARGETDIR=$(EPOCROOT)EPOC32\Data\Z\System\Install
+
+SISNAME=MemSpy_stub
+PKGNAME=MemSpy_stub
+
+$(TARGETDIR) :
+	@perl -S emkdir.pl "$(TARGETDIR)"
+
+do_nothing :
+	rem do_nothing
+
+SISFILE=$(TARGETDIR)\$(SISNAME).sis
+
+$(SISFILE) : ..\sis\$(PKGNAME).pkg
+	makesis -s $? $@ 
+
+
+
+MAKMAKE : do_nothing
+
+RESOURCE : do_nothing
+
+SAVESPACE : do_nothing
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : $(TARGETDIR) $(SISFILE)
+
+CLEAN : 
+	@if exist $(SISFILE) erase $(SISFILE)
+
+RELEASABLES : 
+	@echo $(SISFILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/icons/qgn_menu_memspyui.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="100%"
+   height="100%"
+   viewBox="0 0 87.999512 88.000488"
+   id="svg76799">
+  <defs
+     id="defs76881">
+    <radialGradient
+       cx="16.93359"
+       cy="17.94434"
+       r="10.21466"
+       fx="16.93359"
+       fy="17.94434"
+       id="XMLID_12_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bdcede;stop-opacity:1"
+         offset="0"
+         id="stop2443" />
+      <stop
+         style="stop-color:#b3b6ed;stop-opacity:1"
+         offset="1"
+         id="stop2445" />
+      <a:midPointStop
+         style="stop-color:#BDCEDE"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#BDCEDE"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B3B6ED"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="7.6855502"
+       y1="33.568359"
+       x2="9.2402296"
+       y2="35.123051"
+       id="XMLID_11_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#647490;stop-opacity:1"
+         offset="0"
+         id="stop2374" />
+      <stop
+         style="stop-color:#3b5375;stop-opacity:1"
+         offset="1"
+         id="stop2376" />
+      <a:midPointStop
+         style="stop-color:#647490"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#647490"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#3B5375"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="-87.874023"
+       y1="86.413094"
+       x2="-68.792519"
+       y2="59.91861"
+       id="XMLID_10_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,-1,106.50049,93.23242)">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop2363" />
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:1"
+         offset="0.12323"
+         id="stop2365" />
+      <stop
+         style="stop-color:#dcdcdc;stop-opacity:1"
+         offset="0.62667"
+         id="stop2367" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop2369" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F5F5F5"
+         offset="0.12323" />
+      <a:midPointStop
+         style="stop-color:#F5F5F5"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DCDCDC"
+         offset="0.62667" />
+      <a:midPointStop
+         style="stop-color:#DCDCDC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="-354.65088"
+       y1="-320.31396"
+       x2="-346.3559"
+       y2="-290.57343"
+       id="XMLID_9_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(381.50049,321.26758)">
+      <stop
+         style="stop-color:#5e5f5f;stop-opacity:1"
+         offset="0"
+         id="stop2332" />
+      <stop
+         style="stop-color:#7b7c7c;stop-opacity:1"
+         offset="0.0454"
+         id="stop2334" />
+      <stop
+         style="stop-color:#bfbfc0;stop-opacity:1"
+         offset="0.13559"
+         id="stop2336" />
+      <stop
+         style="stop-color:#c8c8c9;stop-opacity:1"
+         offset="0.16057999"
+         id="stop2338" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1"
+         offset="0.20213"
+         id="stop2340" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.24011"
+         id="stop2342" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0.28248999"
+         id="stop2344" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="0.34463"
+         id="stop2346" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.639"
+         id="stop2348" />
+      <stop
+         style="stop-color:#4a4a4a;stop-opacity:1"
+         offset="0.81300002"
+         id="stop2350" />
+      <stop
+         style="stop-color:#1e1e1e;stop-opacity:1"
+         offset="0.93730003"
+         id="stop2352" />
+      <stop
+         style="stop-color:#0d0d0d;stop-opacity:1"
+         offset="1"
+         id="stop2354" />
+      <a:midPointStop
+         style="stop-color:#5E5F5F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5E5F5F"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#7B7C7C"
+         offset="0.0454" />
+      <a:midPointStop
+         style="stop-color:#7B7C7C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#BFBFC0"
+         offset="0.13559" />
+      <a:midPointStop
+         style="stop-color:#BFBFC0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C8C8C9"
+         offset="0.16058" />
+      <a:midPointStop
+         style="stop-color:#C8C8C9"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E2E2E2"
+         offset="0.20213" />
+      <a:midPointStop
+         style="stop-color:#E2E2E2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.24011" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.28249" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E9E9E9"
+         offset="0.34463" />
+      <a:midPointStop
+         style="stop-color:#E9E9E9"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#919191"
+         offset="0.639" />
+      <a:midPointStop
+         style="stop-color:#919191"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#4A4A4A"
+         offset="0.813" />
+      <a:midPointStop
+         style="stop-color:#4A4A4A"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#1E1E1E"
+         offset="0.9373" />
+      <a:midPointStop
+         style="stop-color:#1E1E1E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#0D0D0D"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="matrix(2.0830394,0,0,2.0830394,-2.7158205,-1.6551108)"
+     id="g2735">
+    <path
+       d="M 38.8125,4.88574 C 34.00684,3.94433 18.62012,2.92529 18.03369,2.92529 C 17.44531,2.92529 15.28808,3.38379 14.93457,3.72607 C 14.8291,3.8291 14.81787,3.8291 14.82666,3.80273 L 14.84229,3.81884 C 15.94922,3.68505 34.9375,5.16064 37.96583,6.06396 C 38.61817,6.61084 38.69044,8.49218 38.74708,9.29345 C 38.89845,11.35302 38.59474,28.32031 38.46388,29.6621 C 38.3379,30.95702 38.4131,31.27929 37.8213,32.16796 C 37.62013,32.46484 37.45607,32.63671 37.11232,32.74413 C 37.12013,32.74022 37.23146,32.73241 37.23634,32.73046 C 37.93751,32.58983 40.54493,30.97069 40.78029,30.22265 C 41.29982,28.34179 41.70607,10.79247 41.46584,8.16992 C 41.48438,5.16064 39.57227,5.03418 38.8125,4.88574 z "
+       style="fill:url(#XMLID_9_)"
+       id="path2356" />
+    <path
+       d="M 37.82031,32.16797 C 38.41211,31.28125 38.33789,30.95899 38.46386,29.66211 C 38.59472,28.32422 38.93652,11.7793 38.82909,9.86133 C 38.72069,7.94385 38.708,6.57862 38.00975,6.1001 C 36.80176,5.3623 16.21094,3.75537 14.84131,3.81885 C 13.47217,3.8833 13.29639,26.92383 14.1211,27.20508 C 14.67237,28.03125 35.43848,32.70508 36.86719,32.74414 C 37.32813,32.7832 37.60938,32.48438 37.82031,32.16797 z "
+       style="fill:#ffffff"
+       id="path2358" />
+    <path
+       d="M 37.67578,10.2373 C 37.62598,8.34619 37.70117,7.6372 37.0664,7.16308 C 36.52051,6.604 17.74316,4.69287 16.24512,4.88672 C 16.13379,4.89942 15.62403,5.13428 15.5625,5.16211 C 16.45996,4.77881 36.09863,6.8208 36.64648,7.37891 C 37.32519,7.87012 37.20507,8.56006 37.25586,10.45215 C 37.32813,13.60108 37.24414,27.40235 37.12793,28.65235 C 37.03613,30.91016 36.35645,31.37501 35.68652,31.45508 C 35.76367,31.44922 35.83886,31.44336 35.90136,31.43164 C 36.73534,31.24609 37.46093,30.61133 37.54687,28.43945 C 37.66504,27.1875 37.74805,13.38574 37.67578,10.2373 z "
+       style="fill:#464646"
+       id="path2360" />
+    <path
+       d="M 37.12695,28.68359 C 37.25,27.46875 37.34765,13.40722 37.27148,10.3413 C 37.21875,8.4995 37.34277,7.82665 36.63085,7.34862 C 36.05858,6.80516 16.6494,4.791 15.70995,5.16405 C 14.76855,5.5376 14.6792,7.93262 14.6665,15.2085 C 14.66015,18.84766 14.62109,21.4668 14.6499,23.27344 C 14.67822,25.07813 14.77295,26.06836 15.03515,26.45117 C 15.70214,27.38086 33.5039,31.45508 35.22167,31.42187 C 35.35546,31.42578 35.5664,31.42382 35.75097,31.4121 C 36.45313,31.33594 37.03027,30.88477 37.12695,28.68359 z "
+       style="fill:url(#XMLID_10_)"
+       id="path2371" />
+    <path
+       d="M 13.88525,26.61621 C 14.35742,26.95703 14.54834,27.49902 14.31298,27.82519 L 4.11621,41.89746 C 3.87988,42.22363 3.30566,42.20996 2.83301,41.86914 L 2.83301,41.86914 C 2.36231,41.52637 2.1709,40.98535 2.40723,40.6582 L 12.60303,26.58691 C 12.83936,26.26074 13.41357,26.27344 13.88525,26.61621 L 13.88525,26.61621 z "
+       style="fill:url(#XMLID_11_)"
+       id="path2378" />
+    <path
+       d="M 19.96289,20.87451 L 19.0415,20.7124 C 18.20654,20.56592 17.53418,21.12256 17.54052,21.95801 L 17.56249,25.24707 C 17.56835,26.08008 18.24755,26.88477 19.08007,27.04102 L 19.9995,27.2129 C 20.83348,27.3711 21.50389,26.81446 21.4995,25.97462 L 21.48095,22.6631 C 21.47559,21.82031 20.79688,21.021 19.96289,20.87451 z M 21.12646,25.59375 C 21.13037,26.27344 20.58593,26.72559 19.91015,26.60059 L 19.16259,26.46094 C 18.48779,26.33301 17.93505,25.68067 17.93114,25.00489 L 17.91356,22.33448 C 17.90917,21.65626 18.45458,21.20362 19.13036,21.32276 L 19.87938,21.45557 C 20.55663,21.57422 21.1079,22.22608 21.1118,22.90625 L 21.12646,25.59375 z "
+       id="path2380" />
+    <path
+       d="M 28.68457,23.13477 L 28.04687,23.02247 C 27.46875,22.9209 27,23.31738 27.00195,23.9082 L 27.00976,26.2334 C 27.01171,26.82422 27.48242,27.3916 28.05956,27.5 L 28.69628,27.61914 C 29.27441,27.72852 29.74023,27.33301 29.73925,26.73828 L 29.73339,24.39453 C 29.73242,23.80078 29.26367,23.23633 28.68457,23.13477 z M 29.48047,26.4707 C 29.48145,26.95312 29.10449,27.27343 28.63477,27.18652 L 28.11719,27.08886 C 27.65039,27.00292 27.26758,26.54198 27.26563,26.06249 L 27.25977,24.17089 C 27.25879,23.69335 27.63868,23.37109 28.10645,23.45409 L 28.625,23.54589 C 29.0957,23.6289 29.47461,24.08788 29.47559,24.56835 L 29.48047,26.4707 z "
+       id="path2382" />
+    <polygon
+       points="15.91357,26.36426 15.12744,26.21777 15.08936,21.15137 15.87598,21.29004 15.91357,26.36426 "
+       id="polygon2384" />
+    <polygon
+       points="15.21777,22.12402 13.8667,21.88379 15.21045,21.19824 15.21777,22.12402 "
+       id="polygon2386" />
+    <polygon
+       points="24.64063,27.96387 23.85449,27.81738 23.81641,22.75098 24.60352,22.88965 24.64063,27.96387 "
+       id="polygon2388" />
+    <polygon
+       points="23.94434,23.72363 22.59375,23.48242 23.9375,22.79785 23.94434,23.72363 "
+       id="polygon2390" />
+    <polygon
+       points="32.44043,28.25 31.7959,28.12988 31.79004,23.80859 32.43555,23.92285 32.44043,28.25 "
+       id="polygon2392" />
+    <polygon
+       points="31.88867,24.6377 30.78223,24.44043 31.8877,23.84766 31.88867,24.6377 "
+       id="polygon2394" />
+    <polygon
+       points="35.36426,28.73633 34.71973,28.61523 34.71875,24.26465 35.36426,24.37793 35.36426,28.73633 "
+       id="polygon2396" />
+    <polygon
+       points="34.81641,25.09863 33.70996,24.90137 34.81641,24.30371 34.81641,25.09863 "
+       id="polygon2398" />
+    <path
+       d="M 20.7041,8.17773 L 20.0625,8.08886 C 19.48047,8.00878 19.0127,8.4121 19.01611,8.99072 L 19.03174,11.26806 C 19.03565,11.84667 19.50928,12.38574 20.08936,12.47314 L 20.72999,12.56933 C 21.31104,12.65673 21.77833,12.25488 21.77491,11.67236 L 21.76221,9.37793 C 21.75879,8.79492 21.28564,8.25781 20.7041,8.17773 z M 21.51514,11.41895 C 21.51758,11.89063 21.13868,12.21778 20.66748,12.14747 L 20.14697,12.06983 C 19.67627,11.99903 19.2915,11.56104 19.28857,11.0918 L 19.27636,9.24121 C 19.27343,8.77197 19.65331,8.44433 20.1245,8.50976 L 20.646,8.58252 C 21.11768,8.64844 21.50196,9.08496 21.50489,9.55713 L 21.51514,11.41895 z "
+       id="path2400" />
+    <path
+       d="M 24.59961,8.75439 L 23.95703,8.66601 C 23.37695,8.58544 22.90723,8.99365 22.91015,9.5791 L 22.92187,11.87988 C 22.9248,12.46484 23.39843,13.00927 23.97851,13.09619 L 24.61914,13.19287 C 25.20117,13.28027 25.66797,12.87353 25.66602,12.28467 L 25.65723,9.96631 C 25.65527,9.37744 25.18262,8.83496 24.59961,8.75439 z M 25.40625,12.02881 C 25.4082,12.50537 25.0293,12.83692 24.55664,12.76611 L 24.03516,12.68798 C 23.56641,12.61816 23.18164,12.17577 23.17969,11.70165 L 23.16992,9.83202 C 23.16699,9.35741 23.54883,9.02587 24.01953,9.0913 L 24.54101,9.16454 C 25.01464,9.22997 25.3955,9.67089 25.39746,10.14745 L 25.40625,12.02881 z "
+       id="path2402" />
+    <path
+       d="M 28.64648,9.25537 L 28.00586,9.1665 C 27.42383,9.08642 26.95313,9.5 26.95508,10.09082 L 26.96289,12.41748 C 26.96484,13.0083 27.43848,13.55762 28.01855,13.64502 L 28.65918,13.74121 C 29.24121,13.82861 29.70898,13.4165 29.70801,12.82178 L 29.70313,10.47852 C 29.70117,9.8833 29.23047,9.33594 28.64648,9.25537 z M 29.44824,12.56348 C 29.44922,13.04493 29.07031,13.38037 28.59765,13.30957 L 28.07617,13.23242 C 27.60644,13.16211 27.22265,12.71582 27.2207,12.23681 L 27.21484,10.34618 C 27.21289,9.86669 27.5957,9.53124 28.06543,9.59667 L 28.58789,9.66942 C 29.06152,9.73534 29.44141,10.17967 29.44238,10.6621 L 29.44824,12.56348 z "
+       id="path2404" />
+    <polygon
+       points="17.6748,11.98242 17.02686,11.88525 16.99512,7.73242 17.64453,7.82227 17.6748,11.98242 "
+       id="polygon2406" />
+    <polygon
+       points="17.10156,8.52637 15.98779,8.36963 17.0957,7.76709 17.10156,8.52637 "
+       id="polygon2408" />
+    <polygon
+       points="32.4248,14.23389 31.77637,14.13623 31.76953,9.81738 32.41992,9.90723 32.4248,14.23389 "
+       id="polygon2410" />
+    <polygon
+       points="31.87012,10.64258 30.75684,10.48584 31.86914,9.85303 31.87012,10.64258 "
+       id="polygon2412" />
+    <polygon
+       points="35.36426,14.61377 34.71582,14.5166 34.71484,10.16455 35.36426,10.25439 35.36426,14.61377 "
+       id="polygon2414" />
+    <polygon
+       points="34.81348,10.99561 33.7002,10.83887 34.81348,10.19971 34.81348,10.99561 "
+       id="polygon2416" />
+    <path
+       d="M 24.27832,14.48389 L 23.49707,14.36133 C 22.78906,14.25049 22.21875,14.73779 22.22266,15.45069 L 22.23682,18.25782 C 22.24024,18.97071 22.81641,19.64552 23.52051,19.76563 L 24.30078,19.89698 C 25.00683,20.0171 25.57617,19.53126 25.57422,18.81348 L 25.56348,15.98535 C 25.55957,15.26709 24.98535,14.59521 24.27832,14.48389 z M 25.25781,18.49561 C 25.25976,19.07764 24.79883,19.47217 24.22461,19.37598 L 23.59082,19.26856 C 23.02051,19.17286 22.55273,18.62501 22.54883,18.0459 L 22.53809,15.76563 C 22.53613,15.1875 23,14.79102 23.57227,14.88184 L 24.20606,14.98243 C 24.78126,15.07374 25.24708,15.61915 25.24805,16.20118 L 25.25781,18.49561 z "
+       id="path2418" />
+    <path
+       d="M 28.66602,16.29541 L 28.02637,16.19482 C 27.44629,16.104 26.97657,16.50878 26.97852,17.09961 L 26.98731,19.42627 C 26.98926,20.0166 27.45997,20.5752 28.04004,20.67334 L 28.67774,20.78125 C 29.25782,20.87939 29.72462,20.47607 29.72364,19.88135 L 29.71876,17.5376 C 29.7168,16.94287 29.24707,16.38672 28.66602,16.29541 z M 29.46484,19.61768 C 29.46582,20.09961 29.08789,20.42774 28.61621,20.34864 L 28.09668,20.26124 C 27.62891,20.18263 27.24609,19.72901 27.24414,19.24952 L 27.23828,17.35938 C 27.23633,16.88038 27.61719,16.55127 28.08594,16.62549 L 28.60645,16.70752 C 29.07813,16.78272 29.45899,17.23438 29.45997,17.7168 L 29.46484,19.61768 z "
+       id="path2420" />
+    <polygon
+       points="15.85449,18.26416 15.06592,18.13037 15.02881,13.06592 15.81787,13.19043 15.85449,18.26416 "
+       id="polygon2422" />
+    <polygon
+       points="15.15674,14.03613 13.80176,13.82031 15.1499,13.10986 15.15674,14.03613 "
+       id="polygon2424" />
+    <polygon
+       points="20.29785,20.33643 19.2832,20.16504 19.23535,13.64795 20.25049,13.80811 20.29785,20.33643 "
+       id="polygon2426" />
+    <polygon
+       points="19.3999,14.89648 17.65625,14.61865 19.39111,13.70459 19.3999,14.89648 "
+       id="polygon2428" />
+    <polygon
+       points="32.43262,21.34326 31.78613,21.23438 31.78027,16.91504 32.42773,17.01709 32.43262,21.34326 "
+       id="polygon2430" />
+    <polygon
+       points="31.87988,17.7417 30.76953,17.56494 31.87891,16.95215 31.87988,17.7417 "
+       id="polygon2432" />
+    <polygon
+       points="35.36426,21.77783 34.71777,21.66895 34.7168,17.31641 35.36426,17.41846 35.36426,21.77783 "
+       id="polygon2434" />
+    <polygon
+       points="34.81543,18.14941 33.70508,17.97217 34.81543,17.35352 34.81543,18.14941 "
+       id="polygon2436" />
+    <path
+       d="M 19.2666,10.71484 C 14.11426,10.71484 9.9375,14.8916 9.9375,20.04394 C 9.9375,25.19531 14.11426,29.37207 19.2666,29.37207 C 24.41797,29.37207 28.59375,25.19531 28.59375,20.04394 C 28.59375,14.8916 24.41797,10.71484 19.2666,10.71484 z M 19.22803,28.43945 C 14.56983,28.43945 10.79297,24.66308 10.79297,20.00537 C 10.79297,15.34717 14.56983,11.57031 19.22803,11.57031 C 23.88574,11.57031 27.66114,15.34717 27.66114,20.00537 C 27.66113,24.66309 23.88574,28.43945 19.22803,28.43945 z "
+       style="fill:#3b5375"
+       id="path2438" />
+    <path
+       d="M 19.22803,11.57031 C 14.56983,11.57031 10.79297,15.34717 10.79297,20.00537 C 10.79297,24.66308 14.56983,28.43945 19.22803,28.43945 C 23.88574,28.43945 27.66114,24.66308 27.66114,20.00537 C 27.66113,15.34717 23.88574,11.57031 19.22803,11.57031 z M 19.30566,27.66211 C 15.12011,27.66211 11.72607,24.26856 11.72607,20.08301 C 11.72607,15.89746 15.12011,12.50342 19.30566,12.50342 C 23.49121,12.50342 26.88379,15.89746 26.88379,20.08301 C 26.88379,24.26856 23.49121,27.66211 19.30566,27.66211 z "
+       style="fill:#f8f1df"
+       id="path2440" />
+    <circle
+       cx="19.30566"
+       cy="20.08276"
+       r="7.57935"
+       style="opacity:0.35;fill:url(#XMLID_12_)"
+       id="circle2447" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspyui.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
+
+SUBDIRS = group \
+          ui/hb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/bwins/memspywindowserverhelperu.def	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,13 @@
+EXPORTS
+	?WindowGroupListL@CMemSpyEngineHelperWindowServerImpl@@UAEPAVMMemSpyEngineWindowGroupList@@XZ @ 1 NONAME ; class MMemSpyEngineWindowGroupList * CMemSpyEngineHelperWindowServerImpl::WindowGroupListL(void)
+	?ItemIndex@CMemSpyEngineWindowGroupListImpl@@UBEHABVTMemSpyEngineWindowGroupBasicInfo@@@Z @ 2 NONAME ; int CMemSpyEngineWindowGroupListImpl::ItemIndex(class TMemSpyEngineWindowGroupBasicInfo const &) const
+	?NewMemSpyEngineHelperWindowServerImplL@@YAPAVMMemSpyEngineHelperWindowServer@@XZ @ 3 NONAME ; class MMemSpyEngineHelperWindowServer * NewMemSpyEngineHelperWindowServerImplL(void)
+	?MdcaPoint@CMemSpyEngineWindowGroupListImpl@@UBE?AVTPtrC16@@H@Z @ 4 NONAME ; class TPtrC16 CMemSpyEngineWindowGroupListImpl::MdcaPoint(int) const
+	?At@CMemSpyEngineWindowGroupListImpl@@UBEABVTMemSpyEngineWindowGroupBasicInfo@@H@Z @ 5 NONAME ; class TMemSpyEngineWindowGroupBasicInfo const & CMemSpyEngineWindowGroupListImpl::At(int) const
+	?GetWindowGroupListL@CMemSpyEngineHelperWindowServerImpl@@UAEXAAV?$RArray@VTMemSpyEngineWindowGroupBasicInfo@@@@@Z @ 6 NONAME ; void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupListL(class RArray<class TMemSpyEngineWindowGroupBasicInfo> &)
+	?Count@CMemSpyEngineWindowGroupListImpl@@UBEHXZ @ 7 NONAME ; int CMemSpyEngineWindowGroupListImpl::Count(void) const
+	?SwitchToL@CMemSpyEngineHelperWindowServerImpl@@UAEXH@Z @ 8 NONAME ; void CMemSpyEngineHelperWindowServerImpl::SwitchToL(int)
+	?GetWindowGroupDetailsL@CMemSpyEngineHelperWindowServerImpl@@UAEXHAAVTMemSpyEngineWindowGroupDetails@@@Z @ 9 NONAME ; void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupDetailsL(int, class TMemSpyEngineWindowGroupDetails &)
+	?NewL@CMemSpyEngineHelperWindowServerImpl@@SAPAV1@XZ @ 10 NONAME ; class CMemSpyEngineHelperWindowServerImpl * CMemSpyEngineHelperWindowServerImpl::NewL(void)
+	?MdcaCount@CMemSpyEngineWindowGroupListImpl@@UBEHXZ @ 11 NONAME ; int CMemSpyEngineWindowGroupListImpl::MdcaCount(void) const
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/eabi/memspywindowserverhelperu.def	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,22 @@
+EXPORTS
+	_Z38NewMemSpyEngineHelperWindowServerImplLv @ 1 NONAME
+	_ZN35CMemSpyEngineHelperWindowServerImpl16WindowGroupListLEv @ 2 NONAME
+	_ZN35CMemSpyEngineHelperWindowServerImpl19GetWindowGroupListLER6RArrayI33TMemSpyEngineWindowGroupBasicInfoE @ 3 NONAME
+	_ZN35CMemSpyEngineHelperWindowServerImpl22GetWindowGroupDetailsLEiR31TMemSpyEngineWindowGroupDetails @ 4 NONAME
+	_ZN35CMemSpyEngineHelperWindowServerImpl4NewLEv @ 5 NONAME
+	_ZN35CMemSpyEngineHelperWindowServerImpl9SwitchToLEi @ 6 NONAME
+	_ZNK32CMemSpyEngineWindowGroupListImpl2AtEi @ 7 NONAME
+	_ZNK32CMemSpyEngineWindowGroupListImpl5CountEv @ 8 NONAME
+	_ZNK32CMemSpyEngineWindowGroupListImpl9ItemIndexERK33TMemSpyEngineWindowGroupBasicInfo @ 9 NONAME
+	_ZNK32CMemSpyEngineWindowGroupListImpl9MdcaCountEv @ 10 NONAME
+	_ZNK32CMemSpyEngineWindowGroupListImpl9MdcaPointEi @ 11 NONAME
+	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl16WindowGroupListLEv @ 12 NONAME
+	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl19GetWindowGroupListLER6RArrayI33TMemSpyEngineWindowGroupBasicInfoE @ 13 NONAME
+	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl22GetWindowGroupDetailsLEiR31TMemSpyEngineWindowGroupDetails @ 14 NONAME
+	_ZThn4_N35CMemSpyEngineHelperWindowServerImpl9SwitchToLEi @ 15 NONAME
+	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl2AtEi @ 16 NONAME
+	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl5CountEv @ 17 NONAME
+	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9ItemIndexERK33TMemSpyEngineWindowGroupBasicInfo @ 18 NONAME
+	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9MdcaCountEv @ 19 NONAME
+	_ZThn4_NK32CMemSpyEngineWindowGroupListImpl9MdcaPointEi @ 20 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* 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:  Build information file for MemSpyWindowServerHelper
+*
+*/
+
+
+PRJ_PLATFORMS
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+memspywindowserverhelper.mmp
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/group/memspywindowserverhelper.mmp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* 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:  DLL implementing the MMemSpyEngineHelperWindowServer Interface
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET          memspywindowserverhelper.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x20028783
+VENDORID        VID_DEFAULT
+SMPSAFE
+
+CAPABILITY      ALL -TCB
+
+SOURCEPATH      ../src
+SOURCE          MemSpyEngineHelperWindowServerImpl.cpp
+
+USERINCLUDE     ../inc
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib
+LIBRARY			ws32.lib apgrfx.lib
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/inc/MemSpyEngineHelperWindowServerImpl.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYENGINEHELPERWINDOWSERVERIMPL_H
+#define MEMSPYENGINEHELPERWINDOWSERVERIMPL_H
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+
+
+// User includes
+#include <memspy/engine/memspyenginehelperwindowserver.h>
+
+
+// Classes referenced
+
+
+NONSHARABLE_CLASS( CMemSpyEngineHelperWindowServerImpl ) : public CBase, public MMemSpyEngineHelperWindowServer
+    {
+public:
+    IMPORT_C static CMemSpyEngineHelperWindowServerImpl* NewL();
+    virtual ~CMemSpyEngineHelperWindowServerImpl();
+
+private:
+    CMemSpyEngineHelperWindowServerImpl();
+    void ConstructL();
+
+public: // API
+    IMPORT_C MMemSpyEngineWindowGroupList* WindowGroupListL();
+    IMPORT_C void GetWindowGroupListL( RArray<TMemSpyEngineWindowGroupBasicInfo>& aWindowGroups );
+    IMPORT_C void GetWindowGroupDetailsL( TInt aWindowGroupId, TMemSpyEngineWindowGroupDetails& aWindowGroupDetails );
+    IMPORT_C void SwitchToL( TInt aWindowGroupId );
+
+private:
+    RWsSession iWsSession;
+    };
+
+
+
+
+NONSHARABLE_CLASS( CMemSpyEngineWindowGroupListImpl ) : public CBase, public MMemSpyEngineWindowGroupList
+    {
+public:
+    static CMemSpyEngineWindowGroupListImpl* NewLC();
+    virtual ~CMemSpyEngineWindowGroupListImpl();
+    
+private:
+    CMemSpyEngineWindowGroupListImpl();
+    void ConstructL();
+
+public: // API
+    IMPORT_C TInt Count() const;
+    IMPORT_C const TMemSpyEngineWindowGroupBasicInfo& At( TInt aIndex ) const;
+    IMPORT_C TInt ItemIndex( const TMemSpyEngineWindowGroupBasicInfo& aEntry ) const;
+
+public: // But not exported
+    void AddItemL( TMemSpyEngineWindowGroupBasicInfo& aItem );
+
+public: // From MDesCArray
+    IMPORT_C TInt MdcaCount() const;
+    IMPORT_C TPtrC MdcaPoint( TInt aIndex ) const;
+
+private: // Data members
+    RArray<TMemSpyEngineWindowGroupBasicInfo> iItems;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/memspywindowserverhelper/src/MemSpyEngineHelperWindowServerImpl.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,232 @@
+/*
+* 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 "MemSpyEngineHelperWindowServerImpl.h"
+
+// System includes
+#include <apgwgnam.h>
+#include <apgtask.h>
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+EXPORT_C MMemSpyEngineHelperWindowServer* NewMemSpyEngineHelperWindowServerImplL()
+    {
+    return CMemSpyEngineHelperWindowServerImpl::NewL();
+    }
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+CMemSpyEngineHelperWindowServerImpl::CMemSpyEngineHelperWindowServerImpl()
+    {
+    }
+
+    
+CMemSpyEngineHelperWindowServerImpl::~CMemSpyEngineHelperWindowServerImpl()
+    {
+    iWsSession.Close();
+    }
+
+
+void CMemSpyEngineHelperWindowServerImpl::ConstructL()
+    {
+    User::LeaveIfError( iWsSession.Connect() );
+    }
+
+
+EXPORT_C CMemSpyEngineHelperWindowServerImpl* CMemSpyEngineHelperWindowServerImpl::NewL()
+    {
+    CMemSpyEngineHelperWindowServerImpl* self = new(ELeave) CMemSpyEngineHelperWindowServerImpl();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+EXPORT_C MMemSpyEngineWindowGroupList* CMemSpyEngineHelperWindowServerImpl::WindowGroupListL()
+    {
+    CMemSpyEngineWindowGroupListImpl* list = CMemSpyEngineWindowGroupListImpl::NewLC();
+    //
+    RArray<TMemSpyEngineWindowGroupBasicInfo> groups;
+    CleanupClosePushL( groups );
+    //
+    GetWindowGroupListL( groups );
+    //
+    const TInt count = groups.Count();
+    for( TInt i = 0; i < count; i++ )
+        {
+        list->AddItemL( groups[ i ] );
+        }
+    //
+    CleanupStack::PopAndDestroy( &groups );
+
+    // Done
+    CleanupStack::Pop( list );
+    return list;
+    }
+
+
+EXPORT_C void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupListL( RArray<TMemSpyEngineWindowGroupBasicInfo>& aWindowGroups )
+    {
+    TInt count;
+    User::LeaveIfError( count = iWsSession.NumWindowGroups() );
+    RArray<RWsSession::TWindowGroupChainInfo> array;
+    CleanupClosePushL( array );
+    User::LeaveIfError( iWsSession.WindowGroupList( &array ) );
+    for (TInt i =0; i < count; i++ )
+        {
+        TMemSpyEngineWindowGroupBasicInfo group;
+        group.iId = array[i].iId;
+        TThreadId threadId;
+        RThread thread;
+        iWsSession.GetWindowGroupClientThreadId( array[i].iId, threadId );
+        group.iThreadId = threadId;
+        group.iOrdinalPosition = i;
+        if ( !thread.Open( threadId ) )
+            {
+            _LIT( KLineFormatSpec, "%d\t%S" );
+            group.iFullName.Format( KLineFormatSpec, group.iId, &thread.Name() );
+            }
+        else
+            {
+            _LIT( KLineFormatSpec, "%d\t<Unresolved name>" );
+            group.iFullName.Format( KLineFormatSpec, group.iId );
+            }
+        thread.Close();        
+        aWindowGroups.AppendL( group );
+        }
+    CleanupStack::PopAndDestroy( &array );
+    }
+
+
+EXPORT_C void CMemSpyEngineHelperWindowServerImpl::GetWindowGroupDetailsL( TInt aWindowGroupId, TMemSpyEngineWindowGroupDetails& aWindowGroupDetails )
+    {
+    TThreadId threadId;
+    RThread thread;
+    iWsSession.GetWindowGroupClientThreadId( aWindowGroupId, threadId );
+    aWindowGroupDetails.iThreadId = threadId;
+    aWindowGroupDetails.iId = aWindowGroupId;
+    if ( !thread.Open( threadId ) )
+        {
+        aWindowGroupDetails.iFullName.Copy( thread.Name() );
+        }
+    else
+        {
+        aWindowGroupDetails.iFullName.Copy( _L("<Unresolved name>") );
+        }
+    thread.Close();
+    aWindowGroupDetails.iPriority = iWsSession.GetWindowGroupOrdinalPriority( aWindowGroupId );
+    aWindowGroupDetails.iWindowGroupHandle = iWsSession.GetWindowGroupHandle( aWindowGroupId );
+    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( iWsSession, aWindowGroupId );
+    aWindowGroupDetails.iUID = wgName->AppUid();
+    aWindowGroupDetails.iIsBusy = wgName->IsBusy();
+    aWindowGroupDetails.iIsSystem = wgName->IsSystem();
+    aWindowGroupDetails.iIsHidden = wgName->Hidden();
+    aWindowGroupDetails.iCaption = wgName->Caption();
+    aWindowGroupDetails.iDocName = wgName->DocName();
+    CleanupStack::PopAndDestroy( wgName );
+    }
+        
+
+EXPORT_C void CMemSpyEngineHelperWindowServerImpl::SwitchToL( TInt aWindowGroupId )
+    {
+    TApaTask task( iWsSession );
+    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( iWsSession, aWindowGroupId );
+    task.SetWgId( aWindowGroupId );
+    if ( wgName->Hidden() )
+        {
+        User::Leave( KErrGeneral );
+        }
+    if ( !task.Exists() )
+        {
+        User::Leave( KErrNotFound );
+        }
+    task.BringToForeground();                     
+    CleanupStack::PopAndDestroy( wgName );
+    }
+
+
+
+
+
+
+
+
+        
+CMemSpyEngineWindowGroupListImpl::CMemSpyEngineWindowGroupListImpl()
+    {
+    }
+
+
+CMemSpyEngineWindowGroupListImpl::~CMemSpyEngineWindowGroupListImpl()
+    {
+    iItems.Close();
+    }
+
+
+void CMemSpyEngineWindowGroupListImpl::ConstructL()
+    {
+    }
+
+
+CMemSpyEngineWindowGroupListImpl* CMemSpyEngineWindowGroupListImpl::NewLC()
+    {
+    CMemSpyEngineWindowGroupListImpl* self = new(ELeave) CMemSpyEngineWindowGroupListImpl();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::Count() const
+    {
+    return iItems.Count();
+    }
+
+
+EXPORT_C const TMemSpyEngineWindowGroupBasicInfo& CMemSpyEngineWindowGroupListImpl::At( TInt aIndex ) const
+    {
+    return iItems[ aIndex ];
+    }
+
+
+EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::ItemIndex( const TMemSpyEngineWindowGroupBasicInfo& /*aEntry*/ ) const
+    {
+    TInt ret = KErrNotFound;
+    return ret;
+    }
+
+
+void CMemSpyEngineWindowGroupListImpl::AddItemL( TMemSpyEngineWindowGroupBasicInfo& aItem )
+    {
+    iItems.AppendL( aItem );
+    }
+
+
+EXPORT_C TInt CMemSpyEngineWindowGroupListImpl::MdcaCount() const
+    {
+    return Count();
+    }
+
+
+EXPORT_C TPtrC CMemSpyEngineWindowGroupListImpl::MdcaPoint( TInt aIndex ) const
+    {
+    return TPtrC( At( aIndex ).iFullName );
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/rom/memspyui.iby	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYUI_IBY
+#define MEMSPYUI_IBY
+
+
+S60_APP_EXE(MemSpyUI)
+S60_APP_AIF_ICONS(MemSpyUI)
+S60_APP_RESOURCE(MemSpyUI)
+SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,MemSpyUI)
+data=ZPRIVATE\10003a3f\import\APPS\MemSpyUI_reg.RSC Private\10003a3f\import\Apps\MemSpyUI_reg.rsc
+
+
+data=ZPRIVATE\2002129F\MemSpyEComInterfaceIds.xml							\private\2002129F\MemSpyEComInterfaceIds.xml
+data=ZPRIVATE\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml		\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml
+
+// Stub SIS
+data=ZSYSTEM\Install\MemSpy_stub.sis                                        \system\install\MemSpy_stub.sis
+
+// MemSpyWindowServerHelper
+file=ABI_DIR\BUILD_DIR\memspywindowserverhelper.dll							SHARED_LIB_DIR\memspywindowserverhelper.dll
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/sis/MemSpy_S60-50.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,49 @@
+;
+; 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:
+;
+
+
+; Language - standard language definitions
+&EN
+
+; Standard SIS file header
+#{"MemSpy"},(0x2002129F),1,2,0,TYPE=SA
+
+; Supports S60 v 5.0
+[0x1028315F], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; Engine:
+"\epoc32\release\armv5\urel\MemSpyDriver.ldd"-"!:\sys\bin\MemSpyDriver.ldd"
+"\epoc32\release\armv5\urel\MemSpyDriverClient.dll"-"!:\sys\bin\MemSpyDriverClient.dll"
+"\epoc32\release\armv5\urel\MemSpyEngine.dll"-"!:\sys\bin\MemSpyEngine.dll"
+"\epoc32\release\armv5\urel\MemSpy.exe"-"!:\sys\bin\MemSpy.exe"
+"\epoc32\release\armv5\urel\MemSpyConsole.exe"-"!:\sys\bin\MemSpyConsole.exe"
+"\epoc32\data\z\private\2002129E\MemSpyEComInterfaceIds.xml"-"c:\private\2002129E\MemSpyEComInterfaceIds.xml"
+"\epoc32\data\z\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+
+; UI:
+"\epoc32\release\armv5\urel\MemSpyUI.exe"-"!:\sys\bin\MemSpyUI.exe"
+"\epoc32\data\z\Resource\apps\MemSpyUI_aif.mif"-"!:\Resource\Apps\MemSpyUI_aif.mif"
+"\epoc32\data\z\Resource\apps\MemSpyUI.rsc"-"!:\Resource\Apps\MemSpyUI.rsc"
+"\epoc32\data\z\private\10003A3F\apps\MemSpyUI_reg.rsc"-"!:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
+"\epoc32\data\z\private\2002129F\MemSpyEComInterfaceIds.xml"-"c:\private\2002129F\MemSpyEComInterfaceIds.xml"
+"\epoc32\data\z\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+"\epoc32\release\armv5\urel\memspywindowserverhelper.dll"-"!:\sys\bin\memspywindowserverhelper.dll"
Binary file perfapps/memspyui/sis/MemSpy_S60-50.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/sis/MemSpy_S60-52.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,49 @@
+;
+; 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:
+;
+
+
+; Language - standard language definitions
+&EN
+
+; Standard SIS file header
+#{"MemSpy"},(0x2002129F),1,2,0,TYPE=SA
+
+; Supports S60 v 5.2
+[0x20022E6D], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; Engine:
+"\epoc32\release\armv5\urel\MemSpyDriver.ldd"-"!:\sys\bin\MemSpyDriver.ldd"
+"\epoc32\release\armv5\urel\MemSpyDriverClient.dll"-"!:\sys\bin\MemSpyDriverClient.dll"
+"\epoc32\release\armv5\urel\MemSpyEngine.dll"-"!:\sys\bin\MemSpyEngine.dll"
+"\epoc32\release\armv5\urel\MemSpy.exe"-"!:\sys\bin\MemSpy.exe"
+"\epoc32\release\armv5\urel\MemSpyConsole.exe"-"!:\sys\bin\MemSpyConsole.exe"
+"\epoc32\data\z\private\2002129E\MemSpyEComInterfaceIds.xml"-"c:\private\2002129E\MemSpyEComInterfaceIds.xml"
+"\epoc32\data\z\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+
+; UI:
+"\epoc32\release\armv5\urel\MemSpyUI.exe"-"!:\sys\bin\MemSpyUI.exe"
+"\epoc32\data\z\Resource\apps\MemSpyUI_aif.mif"-"!:\Resource\Apps\MemSpyUI_aif.mif"
+"\epoc32\data\z\Resource\apps\MemSpyUI.rsc"-"!:\Resource\Apps\MemSpyUI.rsc"
+"\epoc32\data\z\private\10003A3F\apps\MemSpyUI_reg.rsc"-"!:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
+"\epoc32\data\z\private\2002129F\MemSpyEComInterfaceIds.xml"-"c:\private\2002129F\MemSpyEComInterfaceIds.xml"
+"\epoc32\data\z\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"-"c:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+"\epoc32\release\armv5\urel\memspywindowserverhelper.dll"-"!:\sys\bin\memspywindowserverhelper.dll"
Binary file perfapps/memspyui/sis/MemSpy_S60-52.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/sis/MemSpy_stub.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,46 @@
+;
+; 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:
+;
+
+
+; Language - standard language definitions
+&EN
+
+; Standard SIS file header
+#{"MemSpyUI"},(0x2002129F),1,0,0
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; Engine:
+""-"z:\sys\bin\MemSpyDriver.ldd"
+""-"z:\sys\bin\MemSpyDriverClient.dll"
+""-"z:\sys\bin\MemSpyEngine.dll"
+""-"z:\sys\bin\MemSpy.exe"
+""-"z:\sys\bin\MemSpyConsole.exe"
+""-"z:\private\2002129E\MemSpyEComInterfaceIds.xml"
+""-"z:\private\2002129E\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+
+; UI:
+""-"z:\sys\bin\MemSpyUI.exe"
+""-"z:\Resource\Apps\MemSpyUI_aif.mif"
+""-"z:\Resource\Apps\MemSpyUI.rsc"
+""-"z:\private\10003a3f\import\apps\MemSpyUI_reg.rsc"
+""-"z:\private\2002129F\MemSpyEComInterfaceIds.xml"
+""-"z:\private\2002129F\MemSpyProcessMemoryTrackingAutoStartConfig.xml"
+""-"z:\sys\bin\memspywindowserverhelper.dll"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/group/MemSpyCapabilities.mmh	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,19 @@
+/*
+* 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:
+*
+*/
+
+
+CAPABILITY      ReadUserData WriteUserData ReadDeviceData WriteDeviceData SwEvent PowerMgmt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,21 @@
+/*
+* 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 <platform_paths.hrh>
+
+PRJ_MMPFILES
+memspyui.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/group/memspyui.mmp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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 <bldvariant.hrh>
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          memspyui.exe
+TARGETTYPE      exe
+UID             0x100039CE 0x2002129F
+VENDORID		VID_DEFAULT
+SMPSAFE
+
+EPOCSTACKSIZE	0x4000
+EPOCHEAPSIZE	0x100000 0x4000000
+
+#include		"MemSpyCapabilities.mmh"
+
+SOURCEPATH      ../src
+source          MemSpyApp.cpp 
+source          MemSpyAppUi.cpp
+source          MemSpyDocument.cpp
+source          MemSpyContainer.cpp
+source          MemSpyDeviceWideOperationDialog.cpp
+source          MemSpyExportBitmapsToMemoryCardDialog.cpp
+source          MemSpyUiUtils.cpp
+source          MemSpySettings.cpp
+//
+source          MemSpyViewBase.cpp
+source          MemSpyViewMainMenu.cpp
+source          MemSpyViewType.cpp
+source          MemSpyViewProcesses.cpp
+source          MemSpyViewServerList.cpp
+/*
+source          MemSpyViewOpenFiles.cpp
+source          MemSpyViewRAMInfo.cpp
+source          MemSpyViewROMInfo.cpp
+source          MemSpyViewFBServBitmaps.cpp
+source          MemSpyViewSystemConfig.cpp
+source          MemSpyViewCodeSegList.cpp
+source          MemSpyViewChunkList.cpp
+*/
+source          MemSpyViewKernel.cpp
+source          MemSpyViewKernelContainers.cpp
+source          MemSpyViewKernelHeap.cpp
+source          MemSpyViewKernelObjects.cpp
+/*
+source			MemSpyViewDriveInfo.cpp
+source			MemSpyViewECom.cpp
+*/
+source          MemSpyViewThreads.cpp
+source          MemSpyViewThreadInfoItemList.cpp
+source          MemSpyViewThreadInfoItemGeneric.cpp
+source          MemSpyViewThreadInfoItemHeap.cpp
+source          MemSpyViewThreadInfoItemStack.cpp
+source          MemSpyViewThreadInfoItemCodeSeg.cpp
+source          MemSpyViewThreadInfoItemChunk.cpp
+source          MemSpyViewThreadInfoItemServer.cpp
+source          MemSpyViewThreadInfoItemActiveObject.cpp
+source          MemSpyViewThreadInfoItemGeneralInfo.cpp
+
+source          MemSpyViewHeapTracking.cpp
+source          MemSpyViewHeapTrackingResults.cpp
+source          MemSpyViewHeapTrackingSettings.cpp
+/*
+source			MemSpyViewThreadInfoItemMemoryTracking.cpp
+source			MemSpyViewMemoryTrackingAutoStartConfig.cpp
+source			MemSpyViewWindowGroups.cpp
+source          MemSpyViewKernelObjects.cpp
+*/
+
+USERINCLUDE		../inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+
+START RESOURCE    ../../../data/memspyui.rss
+HEADER
+TARGETPATH        APP_RESOURCE_DIR
+END
+
+START RESOURCE    ../../../data/memspyui_reg.rss
+DEPENDS           memspyui.rsg
+TARGETPATH        /private/10003a3f/import/apps
+END
+
+LIBRARY			fbscli.lib				imageconversion.lib		estor.lib		apgrfx.lib
+LIBRARY			euser.lib				apparc.lib				cone.lib		eikcore.lib 
+LIBRARY			eikcoctl.lib			avkon.lib				etext.lib		eikctl.lib		
+LIBRARY			efsrv.lib				bafl.lib				egul.lib		hal.lib
+LIBRARY			cdlengine.lib			xmlframework.lib		charconv.lib	viewcli.lib
+LIBRARY			eikdlg.lib				ws32.lib				bitgdi.lib
+
+LIBRARY         MemSpyClient.lib
+LIBRARY			memspydriverclient.lib
+LIBRARY			memspyengine.lib 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpy.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,246 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPY_HRH
+#define MEMSPY_HRH
+
+#define KMemSpyMenuCommandBase 50000
+#define KMemSpyMenuCommandViewSpecific (KMemSpyMenuCommandBase + 10000)
+
+enum TMemSpyCommandIds
+    {
+	////////////////////////////////
+	// GENERIC MENU COMMANDS
+	////////////////////////////////
+	EMemSpyCmdOpen = KMemSpyMenuCommandBase,
+    //
+    EMemSpyCmdView,
+	EMemSpyCmdViewRefresh,
+	EMemSpyCmdViewOutputToSink,
+    //
+    EMemSpyCmdTools,
+    EMemSpyCmdToolsListOpenFiles,
+	EMemSpyCmdToolsAbout,
+    //
+    EMemSpyCmdPhoneInfo,
+	EMemSpyCmdPhoneInfoGeneral,
+    EMemSpyCmdPhoneInfoGeneralSummary,
+	EMemSpyCmdPhoneInfoGeneralDetailed,
+	EMemSpyCmdPhoneInfoGeneralHandles,
+	EMemSpyCmdPhoneInfoGeneralKernelContainers,
+	EMemSpyCmdPhoneInfoHeap,
+	EMemSpyCmdPhoneInfoHeapInfoSummary,
+    EMemSpyCmdPhoneInfoHeapInfoCompact,
+	EMemSpyCmdPhoneInfoHeapCellListing,
+	EMemSpyCmdPhoneInfoHeapDump,
+    EMemSpyCmdPhoneInfoStack,
+	EMemSpyCmdPhoneInfoStackInfo,
+    EMemSpyCmdPhoneInfoStackInfoCompact,
+	EMemSpyCmdPhoneInfoStackDumpUser,
+	EMemSpyCmdPhoneInfoStackDumpKernel,
+    //
+    EMemSpyCmdAutoCapture,
+    EMemSpyCmdAutoCaptureToggle,
+    EMemSpyCmdAutoCaptureRetryTime,
+    EMemSpyCmdAutoCaptureOperationType,
+	
+	////////////////////////////////
+	// VIEW SPECIFIC MENU COMMANDS
+	////////////////////////////////
+    EMemSpyCmdProcess = KMemSpyMenuCommandViewSpecific,
+	EMemSpyCmdProcessInfo,
+	EMemSpyCmdProcessInfoSummary,
+	EMemSpyCmdProcessInfoHandles,
+    EMemSpyCmdProcessSort,
+    EMemSpyCmdProcessSortById,
+    EMemSpyCmdProcessSortByName,
+    EMemSpyCmdProcessSortByThreadCount,
+    EMemSpyCmdProcessSortByCodeSegs,
+    EMemSpyCmdProcessSortByHeapUsage,
+    EMemSpyCmdProcessSortByStackUsage,
+    EMemSpyCmdProcessEnd,
+    EMemSpyCmdProcessEndKill,
+    EMemSpyCmdProcessEndPanic,
+    EMemSpyCmdProcessEndTerminate,
+    //
+    EMemSpyCmdThread,
+    EMemSpyCmdThreadEnd,
+    EMemSpyCmdThreadEndKill,
+    EMemSpyCmdThreadEndPanic,
+    EMemSpyCmdThreadEndTerminate,
+    EMemSpyCmdThreadSetPriority,
+	EMemSpyCmdThreadSetPriorityAbsoluteVeryLow,
+	EMemSpyCmdThreadSetPriorityAbsoluteLowNormal,
+	EMemSpyCmdThreadSetPriorityAbsoluteLow,
+	EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal,
+	EMemSpyCmdThreadSetPriorityAbsoluteBackground,
+	EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal,
+	EMemSpyCmdThreadSetPriorityAbsoluteForeground,
+	EMemSpyCmdThreadSetPriorityAbsoluteHighNormal,
+	EMemSpyCmdThreadSetPriorityAbsoluteHigh,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime1,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime2,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime3,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime4,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime5,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime6,
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime7, 
+	EMemSpyCmdThreadSetPriorityAbsoluteRealTime8,
+	EMemSpyCmdThreadInfo,
+	EMemSpyCmdThreadInfoHandles,
+    //
+    EMemSpyCmdOutput,
+    EMemSpyCmdOutputToDebug,
+    EMemSpyCmdOutputToFile,
+    //
+    EMemSpyCmdHeap,
+    EMemSpyCmdHeapInfoThread,
+    EMemSpyCmdHeapData,
+    EMemSpyCmdHeapCellListing,
+    EMemSpyCmdHeapDataDump,
+    //
+    EMemSpyCmdStack,
+    EMemSpyCmdStackInfoThread,
+    EMemSpyCmdStackData,
+    EMemSpyCmdStackDataUser,
+    EMemSpyCmdStackDataKernel,
+    //
+    EMemSpyCmdChunk,
+    EMemSpyCmdChunkSort,
+    EMemSpyCmdChunkSortByName,
+    EMemSpyCmdChunkSortBySize,
+    EMemSpyCmdChunkListing,
+    //
+    EMemSpyCmdCodeSeg,
+    EMemSpyCmdCodeSegShow,
+    EMemSpyCmdCodeSegShowItemsAll,
+    EMemSpyCmdCodeSegShowItemsGlobalData,
+    EMemSpyCmdCodeSegShowCaps,
+    EMemSpyCmdCodeSegShowCapsWithTCBProcess,              
+    EMemSpyCmdCodeSegShowCapsWithTCBAll,                  
+    EMemSpyCmdCodeSegShowCapsWithCommDDProcess,           
+    EMemSpyCmdCodeSegShowCapsWithCommDDAll,               
+    EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess,        
+    EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll,            
+    EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess,     
+    EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll,         
+    EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess,   
+    EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll,       
+    EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess,  
+    EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll,      
+    EMemSpyCmdCodeSegShowCapsWithDRMProcess,              
+    EMemSpyCmdCodeSegShowCapsWithDRMAll,                  
+    EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess,        
+    EMemSpyCmdCodeSegShowCapsWithTrustedUIAll,            
+    EMemSpyCmdCodeSegShowCapsWithProtServProcess,         
+    EMemSpyCmdCodeSegShowCapsWithProtServAll,             
+    EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess,        
+    EMemSpyCmdCodeSegShowCapsWithDiskAdminAll,            
+    EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess,   
+    EMemSpyCmdCodeSegShowCapsWithNetworkControlAll,       
+    EMemSpyCmdCodeSegShowCapsWithAllFilesProcess,         
+    EMemSpyCmdCodeSegShowCapsWithAllFilesAll,             
+    EMemSpyCmdCodeSegShowCapsWithSwEventProcess,          
+    EMemSpyCmdCodeSegShowCapsWithSwEventAll,              
+    EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess,  
+    EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll,      
+    EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess,    
+    EMemSpyCmdCodeSegShowCapsWithLocalServicesAll,        
+    EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess,     
+    EMemSpyCmdCodeSegShowCapsWithReadUserDataAll,         
+    EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess,    
+    EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll,        
+    EMemSpyCmdCodeSegShowCapsWithLocationProcess,         
+    EMemSpyCmdCodeSegShowCapsWithLocationAll,             
+    EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess,   
+    EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll,       
+    EMemSpyCmdCodeSegShowCapsWithUserEnvProcess,          
+    EMemSpyCmdCodeSegShowCapsWithUserEnvAll,              
+    EMemSpyCmdCodeSegSort,
+    EMemSpyCmdCodeSegSortByName,
+    EMemSpyCmdCodeSegSortByCodeSize,
+    EMemSpyCmdCodeSegSortByDataSize,
+    EMemSpyCmdCodeSegSortByUid,
+    EMemSpyCmdCodeSegListing,
+    //
+    EMemSpyCmdImages,
+    EMemSpyCmdImagesSlideshow,
+    EMemSpyCmdImagesSaveAllToMemoryCard,
+    EMemSpyCmdImagesListing,
+    //
+    EMemSpyCmdActiveObject,
+    EMemSpyCmdActiveObjectListing,
+    //
+    EMemSpyCmdServerList,
+    EMemSpyCmdServerListOutput,
+    EMemSpyCmdServerListOutputListCSV,
+    EMemSpyCmdServerListOutputListDetailed,
+    EMemSpyCmdServerListSort,
+    EMemSpyCmdServerListSortByName,
+    EMemSpyCmdServerListSortBySessionCount,
+    //
+    EMemSpyCmdKernelContainers,
+    EMemSpyCmdKernelContainersOutput,
+    EMemSpyCmdKernelObjects,
+    EMemSpyCmdKernelObjectTerminate,
+    EMemSpyCmdKernelObjectSwitchTo,
+    EMemSpyCmdKernelObjectEnd,
+    EMemSpyCmdKernelObjectPanic,
+    
+    //
+    EMemSpyCmdKernelHeap,
+    EMemSpyCmdKernelHeapDump,
+    //
+    EMemSpyCmdRAM,
+    EMemSpyCmdRAMAvkonIconCacheDisabled,
+    EMemSpyCmdRAMAvkonIconCacheEnabled,
+    //
+    EMemSpyCmdBTrace,
+    EMemSpyCmdBTraceCaptureToggle,
+    //
+    EMemSpyCmdMemoryTracking,
+    EMemSpyCmdMemoryTrackingStart,
+    EMemSpyCmdMemoryTrackingStop,
+    EMemSpyCmdMemoryTrackingAutoStart,
+    EMemSpyCmdMemoryTrackingAutoStartItemAdd,
+    EMemSpyCmdMemoryTrackingAutoStartItemEdit,
+    EMemSpyCmdMemoryTrackingAutoStartItemDelete,
+    EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll,
+    EMemSpyCmdMemoryTrackingAutoStartItemImport,
+    EMemSpyCmdMemoryTrackingHWM,
+    EMemSpyCmdMemoryTrackingHWMReset,
+    EMemSpyCmdMemoryTrackingTotalWithSharedMem,
+    EMemSpyCmdMemoryTrackingTotalWithoutSharedMem,
+
+    //
+    EMemSpyCmdWindowGroups,
+    EMemSpyCmdWindowGroupTerminate,
+    EMemSpyCmdWindowGroupSwitchTo,
+    EMemSpyCmdWindowGroupEnd,
+    EMemSpyCmdWindowGroupPanic
+    };
+
+enum TMemSpyControlIds
+    {
+    EMemSpyCtrlIdProgressNote = 1000,
+    EMemSpyCtrlIdSlideShowImage,
+    EMemSpyCtrlIdWaitNote
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyApp.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYAPP_H
+#define MEMSPYAPP_H
+
+// System includes
+#include <aknapp.h>
+
+// Constants
+const TUid KUidMemSpy = { 0x2002129F };
+
+
+class CMemSpyApp : public CAknApplication
+    {
+private: // From CApaApplication
+    CApaDocument* CreateDocumentL();
+    TUid AppDllUid() const;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyAppUi.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,134 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYAPPUI_H
+#define MEMSPYAPPUI_H
+
+// System includes
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <coeccntx.h>
+#include <aknappui.h>
+#include <coecobs.h>
+
+// User includes
+#include "MemSpyDeviceWideOperationDialog.h"
+#include "MemSpyContainerObserver.h"
+#include <memspy/engine/memspyengineobserver.h>
+#include "MemSpySettings.h"
+
+// Classes referenced
+class CEikMenuBar;
+class CMemSpyEngine;
+class CMemSpyContainer;
+class CMemSpyDocument;
+
+//cigasto
+class RMemSpySession;
+
+
+class CMemSpyAppUi : public CAknAppUi, public MMemSpyContainerObserver, public MCoeControlObserver, public MMemSpyEngineObserver//, public MMemSpyDeviceWideOperationDialogObserver
+    {
+public:
+    //CMemSpyAppUi( CMemSpyEngine& aEngine );
+	CMemSpyAppUi( RMemSpySession& aMemSpySession );
+    ~CMemSpyAppUi();
+    void ConstructL();
+
+public: // API
+    CMemSpyDocument& MemSpyDocument();
+    const CMemSpyDocument& MemSpyDocument() const;
+    inline CMemSpyContainer& Container() { return *iAppContainer; }
+
+private: // From Avkon
+    void HandleStatusPaneSizeChange();
+
+private: // From MCoeControlObserver
+    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
+
+private: // From MEikMenuObserver
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // From CEikAppUi
+	void HandleForegroundEventL(TBool aForeground);
+    void HandleCommandL(TInt aCommand);
+    TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+private: // From MMemSpyContainerObserver
+    void HandleThreadSelectedL( const CMemSpyThread& aThread );
+
+private: // From MMemSpyEngineObserver
+    void HandleMemSpyEngineEventL( MMemSpyEngineObserver::TEvent aEvent, TAny* aContext );
+
+private: // From MMemSpyDeviceWideOperationDialogObserver
+    void DWOperationStarted();
+    void DWOperationCancelled();
+    void DWOperationCompleted();
+
+private: // Internal methods
+    void UpdateCBAL();
+    void InitiateMemSpyClientServerOperationL( TInt aOpCode );
+    void SetViewServerTimeOutStatus( TBool aEnabled );
+    
+private: // Command handlers
+    void OnCmdBackL();
+    void OnCmdExitL();
+    void OnCmdOpenL();
+    void OnCmdAboutL();
+
+    // Output
+    void OnCmdOutputToDebugL();
+    void OnCmdOutputToFileL();
+ 
+    // Phone-information
+    //void OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::TOperation aOp );
+    void OnCmdPhoneInformationOperationL( TDeviceWideOperation aOperation );
+    void OnCmdPhoneInformationOperationKernelContainersL();
+    
+    // Automatic capture
+    void OnCmdAutoCaptureToggleL();
+    void OnCmdAutoCaptureRetryTimeL();
+    void OnCmdAutoCaptureOperationTypeL();
+
+    // Misc
+    void OnCmdToolsBitmapsSaveToMemoryCardL();
+    void OnCmdToolsSendToBackgroundL();
+    void OnCmdToolsBringToForegroundL();
+
+private: // Auto capture related
+    static TInt AutoCaptureCallBack( TAny* aSelf );
+    void AutoCaptureCallBackL();
+
+private: // Member data
+    //CMemSpyEngine& iEngine;
+    RMemSpySession& iMemSpySession;
+    CMemSpyContainer* iAppContainer;
+    CMemSpySettings* iSettings;
+    
+    // For phone information dialog
+    TBool iRunningDeviceWideOperation;
+    
+    // For auto-capture
+    TInt iAutoCaptureTimerPeriod;
+    CMemSpyDeviceWideOperations::TOperation iAutoCaptureOperationType;
+    CPeriodic* iAutoCaptureTimer;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyContainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYCONTAINER_H
+#define MEMSPYCONTAINER_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+#include "MemSpyViewObserver.h"
+
+// Classes referenced
+class CMemSpyEngine;
+class CMemSpyProcess;
+class CMemSpyThread;
+class CMemSpyThreadInfoItemBase;
+class CMemSpyEngineObjectContainer;
+class MMemSpyContainerObserver;
+//cigasto
+class RMemSpySession;
+
+class CMemSpyContainer : public CCoeControl, public MMemSpyViewObserver
+    {
+public:
+    //CMemSpyContainer( CMemSpyEngine& aEngine, MMemSpyContainerObserver& aObserver );
+	CMemSpyContainer( RMemSpySession& aSession, MMemSpyContainerObserver& aObserver );
+    ~CMemSpyContainer();
+    void ConstructL( const TRect& aRect );
+
+public: // API
+    inline TMemSpyViewType ActiveViewType() const { return iActiveView->ViewType(); }
+    inline CMemSpyViewBase& ActiveView() const { return *iActiveView; }
+
+public: // API
+    void NavigateToParentViewL();
+    void NavigateToChildViewL();
+    void HandleCommandL( TInt aCommand );
+    void SetNewActiveViewL( CMemSpyViewBase* aNewView );
+
+public: // Command handlers
+    void OnCmdViewRefreshL();
+
+private: // From CCoeControl
+    void SizeChanged();
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void Draw(const TRect& aRect) const;
+	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+private: // From MMemSpyViewObserver
+    void HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType aViewType, CMemSpyViewBase& aReportingView, TAny* aContext );
+
+private: // Internal methods
+    CMemSpyViewBase* PrepareTopLevelViewL();
+
+private: // Member data
+    //CMemSpyEngine& iEngine;
+    RMemSpySession& iMemSpySession;
+    MMemSpyContainerObserver& iObserver;
+    CMemSpyViewBase* iActiveView;
+    CMemSpyViewBase* iPreviousView;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyContainerObserver.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYCONTAINEROBSERVER_H
+#define MEMSPYCONTAINEROBSERVER_H
+
+// Classes referenced
+class CMemSpyThread;
+
+
+class MMemSpyContainerObserver
+    {
+public:
+    virtual void HandleThreadSelectedL( const CMemSpyThread& aThread ) = 0;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyDeviceWideOperationDialog.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYDEVICEWIDEOPERATIONDIALOG_H
+#define MEMSPYDEVICEWIDEOPERATIONDIALOG_H
+
+// System includes
+#include <AknProgressDialog.h>
+#include <AknWaitDialog.h>
+#include <e32cmn.h>
+
+// Engine includes
+#include <memspy/engine/memspydevicewideoperations.h>
+#include <memspyengineclientinterface.h>
+#include <memspysession.h>
+
+//#include "MemSpyAppUi.h"
+
+// Classes referenced
+//class RMemSpySession;
+
+enum TDeviceWideOperation
+{
+	OutputPhoneInfo = 0,
+	    
+	OutputDetailedPhoneInfo,
+	    
+	OutputHeapInfo,
+	    
+	OutputCompactHeapInfo,
+	    
+	OutputHeapCellListing,
+	    
+	OutputHeapData,
+	    
+	OutputStackInfo,
+	    
+	OutputCompactStackInfo,
+	    
+	OutputUserStackData,
+	    
+	OutputKernelStackData
+};
+
+
+class MMemSpyDeviceWideOperationDialogObserver
+    {
+public:
+    virtual void DWOperationStarted() = 0;
+    virtual void DWOperationCancelled() = 0;
+    virtual void DWOperationCompleted() = 0;
+    };
+
+
+class CMemSpyDwoProgressTracker : public CActive, public MProgressDialogCallback
+{
+public:
+	CMemSpyDwoProgressTracker(RMemSpySession &aSession);
+	
+	virtual ~CMemSpyDwoProgressTracker();
+	
+	void Start();
+	
+	void Cancel();
+	
+	TMemSpyDeviceWideOperationProgress Progress() { return iProgress; }
+	
+	CAknProgressDialog* ProgressDialog() { return iProgressDialog; }
+	
+	void UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText );
+
+protected: // from CActive
+	
+	void DialogDismissedL(TInt aButtonId);
+	
+	virtual void RunL();
+	 
+	virtual void DoCancel();
+	 
+	virtual TInt RunError(TInt aError);
+	
+private:
+	TMemSpyDeviceWideOperationProgress iProgress;
+	RMemSpySession iSession;	
+	
+	CEikProgressInfo* iProgressInfo;
+	CAknProgressDialog* iProgressDialog;		
+};
+
+
+
+
+
+
+class CMemSpyDwoTracker : public CActive
+{	
+public:	
+	CMemSpyDwoTracker(RMemSpySession &aSession, TDeviceWideOperation aOperation);
+	
+	virtual ~CMemSpyDwoTracker();
+	
+	void Start();
+	
+	void Cancel();		
+	
+protected: // from CActive
+	
+	virtual void RunL();
+	 
+	virtual void DoCancel();
+	 
+	virtual TInt RunError(TInt aError);		
+	
+private:
+	RMemSpySession iSession;
+	CMemSpyDwoProgressTracker *iProgressTracker;	
+	TDeviceWideOperation iOperation;
+};
+
+
+
+
+
+
+
+class CMemSpyDeviceWideOperationDialog : public CBase, public MProgressDialogCallback, public MMemSpyDeviceWideOperationsObserver
+    {
+public:
+    //static void ExecuteLD( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation );
+	//static void ExecuteLD( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation );
+	static void ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp );
+    ~CMemSpyDeviceWideOperationDialog();
+    
+    //added
+    static CMemSpyDwoTracker* CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp );
+
+private:
+    //CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver );
+    //CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver );
+    CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession );
+    //void ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation );
+    void ExecuteL( TDeviceWideOperation aOp );
+
+public: // API
+    void Cancel();
+
+private: // From MProgressDialogCallback
+    void DialogDismissedL( TInt aButtonId );
+
+private: // From MMemSpyDeviceWideOperationsObserver
+    void HandleDeviceWideOperationEvent( TEvent aEvent, TInt aParam1, const TDesC& aParam2 );
+
+private: // Internal methods
+    void SetDialogCaptionL( const TDesC& aText );
+
+private: // Member data
+    //CMemSpyEngine& iEngine;
+    RMemSpySession iSession;	
+    //MMemSpyDeviceWideOperationDialogObserver& iObserver;
+    TBool iForcedCancel;
+    CEikProgressInfo* iProgressInfo;
+    CAknProgressDialog* iProgressDialog;
+    CMemSpyDeviceWideOperations* iOperation;        
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyDocument.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYDOCUMENT_H
+#define MEMSPYDOCUMENT_H
+
+// System includes
+#include <AknDoc.h>
+   
+// Classes referenced
+class CMemSpyEngine;
+class CEikAppUi;
+class CMemSpySettings;
+//cigasto
+class RMemSpySession;
+
+
+class CMemSpyDocument : public CAknDocument
+    {
+public: // Constructors and destructor
+    static CMemSpyDocument* NewL(CEikApplication& aApp);
+    ~CMemSpyDocument();
+
+private:
+    CMemSpyDocument(CEikApplication& aApp);
+    void ConstructL();
+
+public:
+//    CMemSpyEngine& Engine();
+//    const CMemSpyEngine& Engine() const;
+    CMemSpySettings& Settings();
+    const CMemSpySettings& Settings() const;
+
+private: // Framework
+    CEikAppUi* CreateAppUiL();
+
+private: // Data members
+//    CMemSpyEngine* iEngine;
+    CMemSpySettings* iSettings;
+    //cigasto
+    RMemSpySession* iMemSpySession;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyExportBitmapsToMemoryCardDialog.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYEXPORTBITMAPSTOMEMORYCARDDIALOG_H
+#define MEMSPYEXPORTBITMAPSTOMEMORYCARDDIALOG_H
+
+// System includes
+#include <AknProgressDialog.h>
+#include <AknWaitDialog.h>
+#include <imageconversion.h>
+
+// Classes referenced
+class CMemSpyEngineFbServBitmap;
+class CMemSpyEngineFbServBitmapArray;
+
+
+
+class CMemSpyExportBitmapsToMemoryCardDialog : public CActive, public MProgressDialogCallback
+    {
+public:
+    static CMemSpyExportBitmapsToMemoryCardDialog* NewL( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps );
+    ~CMemSpyExportBitmapsToMemoryCardDialog();
+
+private:
+    CMemSpyExportBitmapsToMemoryCardDialog( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps );
+    void ConstructL();
+
+public: // API
+    void Cancel();
+    static TBool CheckMemoryCardAvailableL( RFs& aFsSession );
+
+private: // From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+
+private: // From MProgressDialogCallback
+    void DialogDismissedL( TInt aButtonId );
+
+private: // Internal methods
+    void CompleteSelf( TInt aError );
+    void ExportBitmapL( const CMemSpyEngineFbServBitmap& aBitmap );
+    void IdentifyBmpMimeTypeL();
+    void PruneExistingBitmapFilesL();
+    void PrepareFolderNameSpecL();
+    TBool TryToExportSingleBitmapL();
+
+private: // Member data
+    RFs& iFsSession;
+    const CMemSpyEngineFbServBitmapArray& iBitmaps;
+    TInt iBitmapIndex;
+    TBool iDialogDismissed;
+    CEikProgressInfo* iProgressInfo;
+    CAknProgressDialog* iProgressDialog;
+    CImageEncoder* iEncoder;
+    HBufC8* iBmpMimeType;
+    HBufC* iFolderName;
+    RFileExtensionMIMETypeArray iMimeTypeArray;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpySettings.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYSETTINGS_H
+#define MEMSPYSETTINGS_H
+
+// System includes
+#include <e32base.h>
+#include <badesca.h>
+#include <f32file.h>
+
+// Engine includes
+#include <memspy/engine/memspyengineoutputsink.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+
+// Classes referenced
+class CMemSpyEngine;
+
+//cigasto
+class RMemSpySession;
+
+
+class CMemSpySettings : public CBase
+    {
+public:
+    //static CMemSpySettings* NewL( RFs& aFsSession, CMemSpyEngine& aEngine );
+	static CMemSpySettings* NewL( RFs& aFsSession, RMemSpySession& aSession );
+    ~CMemSpySettings();
+
+private:
+    //CMemSpySettings( RFs& aFsSession, CMemSpyEngine& aEngine );
+    CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession );
+    void ConstructL();
+
+public: // API
+    inline RFs& FsSession() { return iFsSession; }
+    void StoreSettingsL();
+    
+    void SetSinkType( TMemSpySinkType aType ) { iSinkType = aType; }
+
+private: // Settings methods
+    void RestoreSettingsL();
+    void GetSettingsFileNameL( TDes& aFileName );
+    void GetSettingsPathL( TDes& aPath );
+    RFile SettingsFileLC( TBool aReplace = EFalse );
+
+private: // Data members
+    RFs& iFsSession;    
+    RMemSpySession& iMemSpySession;
+    
+private: //Settings
+    TMemSpySinkType iSinkType;
+    TMemSpyEngineHelperSysMemTrackerConfig iSwmtConfig;
+    RArray<TUid> iUidList;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyUiUtils.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYUIUTILS_H
+#define MEMSPYUIUTILS_H
+
+// System includes
+#include <e32std.h>
+#include <e32const.h>
+
+// Engine includes
+#include <memspy/engine/memspyengineutils.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+
+typedef TBuf<20> TMemSpySizeText;
+
+_LIT( KTab, "\t" );
+
+//ThreadInfoItemList view types
+_LIT( KTypeUnknown, "Unknown Type" );
+_LIT( KGeneral, "General" );
+_LIT( KHeap, "Heap" );
+_LIT( KStack, "Stack" );
+_LIT( KChunks, "Chunks" );
+_LIT( KCodeSegs, "Code Segments" );
+_LIT( KOpenFiles, "Open Files" );
+_LIT( KActiveObjects, "Active Objects" );
+_LIT( KThreadHandlers, "Handlers to other Threads" );
+_LIT( KProcessHandlers, "Handlers to other Processes" );
+_LIT( KServers, "Servers running in Thread" );
+_LIT( KConnections, "Client <> Server Connections" );
+_LIT( KSemaphores, "Semaphores" );
+_LIT( KThreadReferences, "References in Thread" );
+_LIT( KProcessReferences, "References in Process" );
+_LIT( KMutexes, "Mutexes" );
+_LIT( KTimers, "Timers" );
+_LIT( KDD, "Logical DD Channels" );
+_LIT( KChangeNotif, "Change Notifiers" );
+_LIT( KUndertakers, "Undertakers" );
+_LIT( KLogicalDrivers, "Logical Device Drivers" );
+_LIT( KPhysicalDrivers, "Physical Device Drivers" );	
+
+//Kernel Object types
+_LIT( KTypeThread, "Thread" );
+_LIT( KTypeProcess, "Process" );
+_LIT( KTypeChunk, "Chunk" );
+_LIT( KTypeLibrary, "Library" );
+_LIT( KTypeSemaphore, "Semaphore" );
+_LIT( KTypeMutex, "Mutex" );
+_LIT( KTypeTimer, "Timer" );
+_LIT( KTypeServer, "Server" );
+_LIT( KTypeSession, "Session" );
+_LIT( KTypeLogicalDevice, "Logical Device" );
+_LIT( KTypePhysicalDevice, "Physical Device" );
+_LIT( KTypeLogicalChannel, "Logical Channel" );
+_LIT( KTypeChangeNotifier, "Change Notifier" );
+_LIT( KTypeUndertaker, "Undertaker" );
+_LIT( KTypeMsgQueue, "Msg. Queue" );
+_LIT( KTypePropertyRef, "Property Ref." );
+_LIT( KTypeCondVar, "Conditional Var." );
+
+
+class MemSpyUiUtils : public MemSpyEngineUtils
+    {
+public:
+    static void Format( TDes& aBuf, TInt aResourceId, ...);
+    static void GetErrorText( TDes& aBuf, TInt aError );
+    static HBufC* FormatItem( const TDesC& aCaption );
+    static TDesC& ThreadInfoItemNameByType( TMemSpyThreadInfoItemType aType );
+    static void AppendPriority( TDes& aDes, TProcessPriority aPriority );
+    static void AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  );
+    static void AppendExitType( TDes& aDes, TExitType aType );
+    
+    //for Kernel Objects
+    static TPtrC TypeAsString( TMemSpyDriverContainerType aType );
+    static TMemSpySizeText FormatSizeText( const TInt64& aValue, TInt aDecimalPlaces, TBool aExtraRounding = EFalse );
+    };
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewBase.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWBASE_H
+#define MEMSPYVIEWBASE_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <memspyui.rsg>
+
+// User includes
+#include "MemSpy.hrh"
+#include "MemSpyViewType.h"
+#include "MemSpyViewObserver.h"
+#include "MemSpySettings.h"
+
+// Classes referenced
+class CMemSpyEngine;
+class CMemSpyContainer;
+class MMemSpyViewObserver;
+//cigasto
+class RMemSpySession;
+
+class CMemSpyViewBase : public CCoeControl, public MCoeControlObserver, public MEikListBoxObserver
+    {
+public:
+    //CMemSpyViewBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+	CMemSpyViewBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewBase();
+    virtual void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // API
+    virtual TMemSpyViewType ViewType() const = 0;
+    virtual CMemSpyViewBase* PrepareParentViewL();
+    virtual CMemSpyViewBase* PrepareChildViewL();
+    virtual void RefreshL();
+    virtual TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+    virtual TUint MenuCascadeResourceId() const;
+    virtual TInt MenuCascadeCommandId() const;
+
+private: // Command handlers
+    virtual void OnCmdViewOutputToSinkL();
+
+protected: // Construction support
+    void SetTitleL( const TDesC& aText );
+    TPtrC TitleL() const;
+    virtual CEikListBox* ConstructListBoxL();
+    virtual void SetListBoxModelL() = 0;
+
+protected: // Internal framework
+    virtual void HandleListBoxItemActionedL( TInt aIndex );
+    virtual void HandleListBoxItemSelectedL( TInt aIndex );
+ 
+protected: // Event reporting
+    void ReportEventL( MMemSpyViewObserver::TViewEventType aEvent, TAny* aContext = NULL );
+    void SetListBoxCurrentItemIndexL( TInt aIndex );
+
+protected: // Utility methods
+    CMemSpyContainer& Container();
+    CMemSpySettings& Settings();
+    const CMemSpySettings& Settings() const;
+
+public: // From CCoeControl
+	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+protected: // From CCoeControl
+    void Draw( const TRect& aRect ) const;
+    void SizeChanged();
+    void FocusChanged( TDrawNow aDrawNow );
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+
+protected: // From MCoeControlObserver
+    void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
+
+protected: // From MEikListBoxObserver
+    void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType);
+
+protected: // Member data
+    //CMemSpyEngine& iEngine;
+    RMemSpySession& iMemSpySession;
+    MMemSpyViewObserver& iObserver;
+    //
+    CEikListBox* iListBox;
+
+private:
+    CMemSpySettings* iSettings;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewChunkList.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,101 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWCHUNKLIST_H
+#define MEMSPYVIEWCHUNKLIST_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class CMemSpyEngineChunkList;
+class CMemSpyEngineChunkEntry;
+
+
+
+
+class CMemSpyViewChunkBase : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewChunkBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList* aList );
+    ~CMemSpyViewChunkBase();
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_CHUNK_LIST; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdChunk; }
+
+protected: // Command handlers
+    void OnCmdListingL();
+
+protected: // Data members
+    CMemSpyEngineChunkList* iList;
+    };
+
+
+
+
+class CMemSpyViewChunkList : public CMemSpyViewChunkBase
+    {
+public:
+    CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineChunkEntry* iCurrentChunk;
+    };
+
+
+
+class CMemSpyViewChunkDetails : public CMemSpyViewChunkBase
+    {
+public:
+    CMemSpyViewChunkDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList, CMemSpyEngineChunkEntry& aSelectedChunk );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Data members
+    CMemSpyEngineChunkEntry& iChunk;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewCodeSegList.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWCODESEGLIST_H
+#define MEMSPYVIEWCODESEGLIST_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class CMemSpyEngineCodeSegList;
+class CMemSpyEngineCodeSegEntry;
+
+
+class CMemSpyViewCodeSegBase : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewCodeSegBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList* aList );
+    ~CMemSpyViewCodeSegBase();
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    void RefreshL();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_CODESEG_LIST; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdCodeSeg; }
+
+protected: // Command handlers
+    void OnCmdCodeSegmentListingL();
+    void OnCmdShowItemsAllL();
+    void OnCmdShowItemsGlobalDataL();
+    void OnCmdFilterByCapabilityL( TCapability aCapability, TBool aAllBinaries );
+
+protected: // Data members
+    CMemSpyEngineCodeSegList* iList;
+    };
+
+
+
+
+class CMemSpyViewCodeSegList : public CMemSpyViewCodeSegBase
+    {
+public:
+    CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineCodeSegEntry* iCurrentCodeSegment;
+    };
+
+
+
+class CMemSpyViewCodeSegDetails : public CMemSpyViewCodeSegBase
+    {
+public:
+    CMemSpyViewCodeSegDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList, CMemSpyEngineCodeSegEntry& aSelectedCodeSegment );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Data members
+    CMemSpyEngineCodeSegEntry& iCodeSegment;
+    };
+
+
+
+
+
+
+class TMemSpyViewCodeSegFilter
+    {
+public:
+    inline TMemSpyViewCodeSegFilter( TCapability aCapability, TBool aAllBinaries = ETrue )
+    :   iCapability( aCapability ), iAllBinaries( aAllBinaries )
+        {
+        }
+
+public:
+    static TBool FilterItem( const CMemSpyEngineCodeSegEntry*& aItem, TAny* aRune );
+
+private:
+    TCapability iCapability;
+    TBool iAllBinaries;
+    };
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewDriveInfo.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWDRIVEINFO_H
+#define MEMSPYVIEWDRIVEINFO_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyenginehelperfilesystem.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+
+
+class CMemSpyViewDriveInfoBase : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewDriveInfoBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewDriveInfoBase();
+    void BaseConstructL();
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+protected: // Data members
+    CMemSpyEngineDriveList* iList;
+    };
+
+
+
+
+class CMemSpyViewDriveList : public CMemSpyViewDriveInfoBase, public MMemSpyEngineDriveListObserver
+    {
+public:
+    CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void RefreshL();
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // From MMemSpyEngineDriveListObserver
+    void HandleDriveListChangedL( const CMemSpyEngineDriveList& aList );
+
+private: // Data members
+    TBool iUseDriveNumber;
+    TDriveNumber iDriveNumber;
+    CMemSpyEngineDriveEntry* iCurrentDrive;
+    };
+
+
+
+class CMemSpyViewDriveInfo : public CMemSpyViewDriveInfoBase, public MMemSpyEngineDriveEntryObserver
+    {
+public:
+    CMemSpyViewDriveInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineDriveEntryObserver
+    void HandleDriveEntryChangedL( const CMemSpyEngineDriveEntry& aEntry );
+
+private: // Data members
+    const TDriveNumber iDriveNumber;
+    CMemSpyEngineDriveEntry* iDriveInfo;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewECom.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWECOM_H
+#define MEMSPYVIEWECOM_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <eikimage.h>
+#include <AknDialog.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Engine includes
+#include <memspy/engine/memspyenginehelperecom.h>
+
+
+class CMemSpyViewECom : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewECom( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineEComCategory* iCurrent;
+    };
+
+
+
+class CMemSpyViewEComCategory : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewEComCategory( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComCategory& aCategory );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineEComCategory& iCategory;
+    CMemSpyEngineEComInterface* iCurrent;
+    };
+
+
+
+
+class CMemSpyViewEComInterface : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewEComInterface( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComInterface& aInterface );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineEComInterface& iInterface;
+    CMemSpyEngineEComImplementation* iCurrent;
+    };
+
+
+
+
+
+
+class CMemSpyViewEComImplementation : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewEComImplementation( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineEComImplementation& aImplementation );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Data members
+    CMemSpyEngineEComImplementation& iImplementation;
+    };
+
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewFBServBitmaps.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,177 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWFBSERVBITMAPS_H
+#define MEMSPYVIEWFBSERVBITMAPS_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <eikimage.h>
+#include <AknDialog.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Engine includes
+#include <memspy/engine/memspyenginehelperfbserv.h>
+
+
+
+class CMemSpyViewFBServBase : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewFBServBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps );
+    ~CMemSpyViewFBServBase();
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_IMAGES; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdImages; }
+
+protected: // Command handlers
+    void OnCmdSlideShowL();
+    void OnCmdExportToMemoryCardL();
+    void OnCmdImageListingL();
+
+protected: // Data members
+    CMemSpyEngineFbServBitmapArray* iBitmaps;
+    };
+
+
+
+
+
+class CMemSpyViewFBServBitmaps : public CMemSpyViewFBServBase, public MMemSpyEngineFbSerbBitmapArrayObserver
+    {
+public:
+    CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps );
+    ~CMemSpyViewFBServBitmaps();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From MMemSpyEngineFbSerbBitmapArrayObserver
+    void HandleFbServBitmapArrayEventL( TEvent aEvent );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+
+private: // Idle timer update
+    static TInt IdleUpdateListBoxModel( TAny* aSelf );
+    void DoIdleUpdateListBoxModelL();
+
+private: // Data members
+    RArray<TInt> iBitmapHandles;
+    CMemSpyEngineFbServBitmap* iCurrentBitmap;
+    CPeriodic* iIdleResetListboxTimer;
+    };
+
+
+
+class CMemSpyViewFBServBitmapInfo : public CMemSpyViewFBServBase
+    {
+public:
+    CMemSpyViewFBServBitmapInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+
+private: // Data members
+    CMemSpyEngineFbServBitmap& iBitmapObject;
+    };
+
+
+
+
+class CMemSpyViewFBServBitmapViewer : public CMemSpyViewFBServBase
+    {
+public:
+    CMemSpyViewFBServBitmapViewer( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap );
+    ~CMemSpyViewFBServBitmapViewer();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    CEikListBox* ConstructListBoxL();
+
+private: // From CCoeControl
+    void Draw(const TRect& aRect) const;
+    void SizeChanged();
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+
+private: // Data members
+    CMemSpyEngineFbServBitmap& iBitmapObject;
+    CEikImage* iImage;
+    TRect iBorderRect;
+    };
+
+
+
+
+
+class CMemSpyViewFBServSlideshow : public CAknDialog
+    {
+public:
+    static void NewLD( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex );
+    ~CMemSpyViewFBServSlideshow();
+
+private:
+    CMemSpyViewFBServSlideshow( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex );
+    void ConstructL();
+
+private:
+    void PreLayoutDynInitL();
+	TBool OkToExitL(TInt aButtonId);
+
+private: // Idle timer update
+    static TInt IdleUpdate( TAny* aSelf );
+    void ShowNextImageL();
+
+private: // Data members
+    CMemSpyEngineFbServBitmapArray& iBitmaps;
+    TInt& iIndex;
+    CPeriodic* iTimer;
+    };
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTracking.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWHEAPTRACKING_H
+#define MEMSPYVIEWHEAPTRACKING_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackerobserver.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class RMemSpySession;
+
+
+class CMemSpyViewHeapTracking : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
+    {
+public:
+	CMemSpyViewHeapTracking( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewHeapTracking();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+public:
+    static TInt AsyncStopTimerCallback( TAny* aParam );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineHelperSysMemTrackerObserver
+    void HandleCyclesResetL();
+    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+    
+private: // Internal methods
+    TInt IndexByViewType( TMemSpyViewType aType );
+    void SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode aMode, TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
+    TInt AsyncStopTimerCallback();
+    void GetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
+    void SetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
+
+private: // Enum
+    enum TMemSpyViewHeapTrackingState
+        {
+        EMemSpyViewHeapTrackingStateIdle = 0,
+        EMemSpyViewHeapTrackingStateTimerOn,
+        EMemSpyViewHeapTrackingStateSingleOn        
+        };
+
+private: // Data
+    TMemSpyEngineHelperSysMemTrackerConfig iOriginalConfig;
+    TMemSpyViewHeapTrackingState iState;
+    CAsyncCallBack* iStopTimerCallBack;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingResults.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,133 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWHEAPTRACKINGRESULTS_H
+#define MEMSPYVIEWHEAPTRACKINGRESULTS_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyenginehelpersysmemtrackerobserver.h>
+#include <memspy/api/memspyapimemorytrackingcycle.h>
+
+// Driver includes
+#include <memspy/driver/memspydriverobjectsshared.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class CMemSpyEngineHelperSysMemTrackerCycle;
+class CMemSpyEngineHelperSysMemTrackerCycleChange;
+class RMemSpySession;
+
+class CMemSpyViewHeapTrackingResults : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
+    {
+public:
+    //CMemSpyViewHeapTrackingResults( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+	CMemSpyViewHeapTrackingResults( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewHeapTrackingResults();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineHelperSysMemTrackerObserver
+    void HandleCyclesResetL();
+    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+private:
+    RArray<CMemSpyApiMemoryTrackingCycle*> iCycles;
+    };
+
+
+
+
+
+
+
+class CMemSpyViewHeapTrackingResultsCycleInfo : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
+    {
+public:
+   // CMemSpyViewHeapTrackingResultsCycleInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+	CMemSpyViewHeapTrackingResultsCycleInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, const CMemSpyApiMemoryTrackingCycle& aCycle );
+    ~CMemSpyViewHeapTrackingResultsCycleInfo();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineHelperSysMemTrackerObserver
+    void HandleCyclesResetL();
+    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+
+private: // Data members
+    //const CMemSpyEngineHelperSysMemTrackerCycle& iCycle;
+    const CMemSpyApiMemoryTrackingCycle& iCycle;    
+    };
+
+
+
+
+
+/*
+class CMemSpyViewHeapTrackingResultsChangeDescriptor : public CMemSpyViewBase, public MMemSpyEngineHelperSysMemTrackerObserver
+    {
+public:
+    CMemSpyViewHeapTrackingResultsChangeDescriptor( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle, const CMemSpyEngineHelperSysMemTrackerCycleChange& aChangeDescriptor, TInt aIndex );
+    ~CMemSpyViewHeapTrackingResultsChangeDescriptor();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineHelperSysMemTrackerObserver
+    void HandleCyclesResetL();
+    void HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+    void HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle );
+
+private: // Data members
+    const CMemSpyEngineHelperSysMemTrackerCycle& iCycle;
+    const CMemSpyEngineHelperSysMemTrackerCycleChange& iChangeDescriptor;
+    TInt iIndex; // For selection rune when moving to parent view
+    };
+*/
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewHeapTrackingSettings.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWHEAPTRACKINGSETTINGS_H
+#define MEMSPYVIEWHEAPTRACKINGSETTINGS_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <aknsettingitemlist.h> 
+#include <akncheckboxsettingpage.h>
+#include <AknQueryDialog.h> 
+
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class RMemSpySession;
+
+
+class CMemSpyViewHeapTrackingSettings : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewHeapTrackingSettings( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+	CMemSpyViewHeapTrackingSettings( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewHeapTrackingSettings();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    void GetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
+    void SetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Internal methods
+    static void PrepareItemBufL( TDes& aBuf, const TDesC& aCaption, TBool aStatus, TBool aHeapCategorySelected );
+    };
+
+
+
+
+class CSWMTCategorySelectionCheckBoxSettingItem : public CAknSettingItem
+    {
+public:
+    CSWMTCategorySelectionCheckBoxSettingItem( TInt aIdentifier, TInt& aCategories );
+    virtual ~CSWMTCategorySelectionCheckBoxSettingItem();
+
+public:
+    CSelectionItemList* ItemArray() const;
+    
+protected:
+    void CompleteConstructionL();
+    void StoreL();
+    void LoadL();
+    void HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType );
+
+private:
+    void AddNewItemToArrayL(const TDesC& aLabel); 
+    
+private:
+    CSelectionItemList*     iItemArray;
+    HBufC*                  iSettingText;
+    TInt&                   iExtCategories;
+    };
+
+
+
+
+
+
+class CMemSpySWMTCategorySelectionCheckBoxSettingPage : public CAknCheckBoxSettingPage
+    {
+    public:
+        CMemSpySWMTCategorySelectionCheckBoxSettingPage( TInt aResourceID, CSelectionItemList* aItemArray );
+    public:     // New functions
+        void UpdateCba();
+    };
+    
+
+
+
+
+
+class CMemSpyAllowEmptyDataDialog : public CAknTextQueryDialog
+    {
+    public:
+        CMemSpyAllowEmptyDataDialog( TDes& aText, const TTone& aTone = ENoTone );
+    protected: // from CAknTextQueryDialog
+        void UpdateLeftSoftKeyL();
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewKernel.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWKERNEL_H
+#define MEMSPYVIEWKERNEL_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class RMemSpySession;
+
+class CMemSpyViewKernel : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewKernel( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewKernel();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Internal methods
+    static TInt IndexByViewType( TMemSpyViewType aType );
+
+private: // Data members
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelContainers.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWKERNELCONTAINERS_H
+#define MEMSPYVIEWKERNELCONTAINERS_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <BADESCA.H>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+#include <memspy/driver/memspydriverenumerationsshared.h>
+#include <memspy/api/memspyapikernelobject.h>
+
+// Classes referenced
+class CMemSpyEngineGenericKernelObjectContainer;
+
+class RMemSpySession;
+
+class CMemSpyViewKernelContainers : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewKernelContainers( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewKernelContainers();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();    
+    TPtrC TypeAsString( TMemSpyDriverContainerType aType );
+    
+    
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_CONTAINERS; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelContainers; }
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    TBool HandleCommandL( TInt aCommand );
+
+private: // Command handlers
+    void OnCmdOutputAllContainerContentsL();
+
+private: // Internal methods
+
+private: // Data members
+    //CMemSpyEngineGenericKernelObjectContainer* iModel;
+    RArray<CMemSpyApiKernelObject*> iKernelObjects; //array of raw items data
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelHeap.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWKERNELHEAP_H
+#define MEMSPYVIEWKERNELHEAP_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+#include <memspy/api/memspyapiheap.h>
+
+// Classes referenced
+class CMemSpyEngineGenericKernelObjectContainer;
+
+class RMemSpySession;
+
+class CMemSpyViewKernelHeap : public CMemSpyViewBase
+    {
+public:    
+	CMemSpyViewKernelHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );	
+    ~CMemSpyViewKernelHeap();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_HEAP; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelHeap; }
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    TBool HandleCommandL( TInt aCommand );    
+
+private: // Command handlers
+    void OnCmdDumpKernelHeapL();
+
+private: // Internal methods
+    //CDesCArrayFlat* FormatModel( RArray<CMemSpyApiHeap*> &aHeap );
+    CDesCArrayFlat* FormatModel( CMemSpyApiHeap* aHeap );
+    HBufC* FormatItem( const TDesC& aCaption, const TDesC& aValue );
+    HBufC* FormatItem( const TDesC& aCaption, TInt aValue );
+    HBufC* FormatItem( const TDesC& aCaption, TUint aValue );
+    HBufC* FormatItem( const TDesC& aCaption, const TInt64& aValue );
+    HBufC* FormatItem( const TDesC& aCaption, TAny* aValue );
+    HBufC* FormatItem( const TDesC& aCaption, TUint* aValue );
+    HBufC* FormatItem( const TDesC& aCaption, TUint8* aValue );
+    HBufC* FormatPercentageItem( const TDesC& aCaption, TReal aOneHundredPercentValue, TReal aValue );
+
+private: // Data members
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewKernelObjects.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWKERNELOBJECTS_H
+#define MEMSPYVIEWKERNELOBJECTS_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <AknTabObserver.h> 
+
+// User includes
+#include "MemSpyViewBase.h"
+#include <memspy/driver/memspydriverenumerationsshared.h>
+#include <memspy/api/memspyapikernelobjectitem.h>
+
+// Classes referenced
+class CMemSpyEngineGenericKernelObjectContainer;
+class CMemSpyEngineGenericKernelObjectList;
+class CAknNavigationDecorator;
+class CAknNavigationControlContainer;
+class CAknTabGroup;
+
+class RMemSpySession;
+
+class CMemSpyViewKernelObjects : public CMemSpyViewBase, public MAknTabObserver
+    {
+public:
+    //CMemSpyViewKernelObjects( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType );
+	CMemSpyViewKernelObjects( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType );
+    ~CMemSpyViewKernelObjects();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    CEikListBox* ConstructListBoxL();
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_KERNEL_OBJECTS; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdKernelObjects; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    TBool HandleCommandL( TInt aCommand );
+
+private: // From CCoeControl
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+private: // From MAknTabObserver
+    void TabChangedL( TInt aIndex );     
+    
+private: // Command handlers
+    void OnCmdTerminateL();
+    void OnCmdSwitchToL();
+    void OnCmdEndL();
+    void OnCmdPanicL();
+
+private: // Internal methods
+    void CreateTabsL();
+    void DetailsL();
+    void AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... );
+
+private: // Data members
+    //CMemSpyEngineGenericKernelObjectContainer* iModel;
+    CDesCArrayFlat* iItems;
+    TMemSpyDriverContainerType iObjectType;
+    CMemSpyEngineGenericKernelObjectList* iObjectList;
+    CAknNavigationDecorator* iNavDecorator;
+    CAknNavigationControlContainer* iNaviPane;
+    CAknNavigationControlContainer* iNavContainer;
+    CAknTabGroup* iTabs;
+    TInt iCurrItemIndex;
+    CDesCArrayFlat* iModel;
+    RArray<CMemSpyApiKernelObjectItem*> iKernelObjectItems;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewMainMenu.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWMAINMENU_H
+#define MEMSPYVIEWMAINMENU_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class CMemSpyProcess;
+
+//cigasto
+class RMemSpySession;
+
+class CMemSpyViewMainMenu : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewMainMenu( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+	CMemSpyViewMainMenu( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Internal methods
+    static TInt IndexByViewType( TMemSpyViewType aType );
+
+private: // Data members
+    };
+
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewMemoryTrackingAutoStartConfig.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWMEMORYTRACKINGAUTOSTARTCONFIG_H
+#define MEMSPYVIEWMEMORYTRACKINGAUTOSTARTCONFIG_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <ecom/ecom.h>
+#include <xml/contenthandler.h> // MContentHandler mix in class
+#include <xml/parser.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Literal constants
+_LIT( KMemSpyProcessMemoryTrackingAutoStartConfigSearchPath, "E:\\MemSpy\\" );
+_LIT( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, "MemSpyProcessMemoryTrackingAutoStartConfig.xml" );
+
+// Classes referenced
+class CCnvCharacterSetConverter;
+
+// Namespaces referenced
+using namespace Xml;
+
+
+class CMemSpyViewMemoryTrackingAutoStartConfig : public CMemSpyViewBase, public MContentHandler
+    {
+public:
+    CMemSpyViewMemoryTrackingAutoStartConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewMemoryTrackingAutoStartConfig();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    TBool HandleCommandL( TInt aCommand );
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void SetListBoxModelL();
+    void RefreshL();
+
+public: // Menu framework
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+    TUint MenuCascadeResourceId() const;
+    TInt MenuCascadeCommandId() const;
+
+private: // Command handlers
+    void OnCmdItemAddL();
+    void OnCmdItemEditL();
+    void OnCmdItemDeleteL();
+    void OnCmdItemDeleteAllL();
+    void OnCmdItemImportL();
+
+private: // Internal methods
+    TUid ShowDialogL( TUid aUid );
+    void SaveChangesL();
+    static TUid ValidateProcessUid( const TDesC& aUid );
+
+private: // Internal XML methods
+    void FindXmlInstallTimeL();
+    void FindXmlUserSuppliedL();
+    HBufC* FindEComXmlFileNameLC();
+    void ConvertL( const TDesC8& aInput, TDes16& aOutput );
+    void ParseL( const TDesC& aFileName );
+
+private: // XML helper functions
+    void OnSectionProcessL( const RAttributeArray& aAttributes );
+
+private: // From MContentHandler
+	void OnStartDocumentL( const RDocumentParameters& aDocParam, TInt aErrorCode );
+	void OnEndDocumentL( TInt aErrorCode );
+	void OnStartElementL( const RTagInfo& aElement, const RAttributeArray& aAttributes, TInt aErrorCode );
+	void OnEndElementL( const RTagInfo& aElement, TInt aErrorCode );
+	void OnContentL( const TDesC8& aBytes, TInt aErrorCode );
+	void OnStartPrefixMappingL( const RString& aPrefix, const RString& aUri, TInt aErrorCode );
+	void OnEndPrefixMappingL( const RString& aPrefix, TInt aErrorCode );
+	void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, TInt aErrorCode );
+	void OnSkippedEntityL( const RString& aName, TInt aErrorCode );
+	void OnProcessingInstructionL( const TDesC8& aTarget, const TDesC8& aData, TInt aErrorCode );
+	void OnError( TInt aErrorCode );
+	TAny* GetExtendedInterface( const TInt32 aUid );
+
+private: // Data members
+    RArray< TUid > iProcessUids;
+    TInt iParserErrorCode;
+    TInt iCharconvConverterState;
+    TBool iSeenMasterSection;
+    CParser* iParser;
+    CCnvCharacterSetConverter* iConverter;
+    HBufC* iXMLFileNameInstallTime;
+    HBufC* iXMLFileNameUserSupplied;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewObserver.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWOBSERVER_H
+#define MEMSPYVIEWOBSERVER_H
+
+// User includes
+#include "MemSpyViewType.h"
+
+// Classes referenced
+class CMemSpyViewBase;
+
+class MMemSpyViewObserver
+    {
+public: // Enumerations
+    enum TViewEventType
+        {
+        EEventItemActioned = 0,
+        EEventItemSelected
+        };
+
+public: // From MMemSpyViewObserver
+    virtual void HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType aViewType, CMemSpyViewBase& aReportingView, TAny* aContext ) = 0;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewOpenFiles.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWOPENFILES_H
+#define MEMSPYVIEWOPENFILES_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+class CMemSpyViewOpenFiles : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewOpenFiles( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewOpenFiles();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    CEikListBox* ConstructListBoxL();
+    void RefreshL();
+    TBool HandleCommandL( TInt aCommand );
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // Command handlers
+    void OnCmdListOpenFilesL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+
+private: // Internal
+    static TBool CompareTEntryObjects( const TEntry& aLeft, const TEntry& aRight );
+
+private: // Data members
+    RArray<TThreadId> iThreadIds;
+    const TThreadId* iActionedThreadId;
+    RArray<TEntry> iFileNames;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewProcesses.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWPROCESSES_H
+#define MEMSPYVIEWPROCESSES_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+#include <memspy/api/memspyapiprocess.h>
+
+// Classes referenced
+class CMemSpyProcess;
+class CAknSearchField;
+class RMemSpySession;
+
+class CMemSpyViewProcesses : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    //CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
+	CMemSpyViewProcesses( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+//	CMemSpyViewProcesses( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
+	CMemSpyViewProcesses( RMemSpySession& aEngine, MMemSpyViewObserver& aObserver, TProcessId aId );
+    ~CMemSpyViewProcesses();
+    //void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );    
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TProcessId aSelectionRune = NULL );
+
+public: // API
+    CMemSpyProcess& CurrentProcess() const;
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_PROCESS; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdProcess; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // Command handlers
+
+    // Sorting
+    void OnCmdSortByIdL();
+    void OnCmdSortByNameL();
+    void OnCmdSortByThreadCountL();
+    void OnCmdSortByCodeSegsL();
+    void OnCmdSortByHeapUsageL();
+    void OnCmdSortByStackUsageL();
+
+    // Info
+    void OnCmdInfoSummaryL();
+    void OnCmdInfoHandlesL();
+
+    // Ending
+    void OnCmdEndTerminateL();
+    void OnCmdEndPanicL();
+    void OnCmdEndKillL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void HandleListBoxItemSelectedL( TInt aIndex );
+    
+private: // From CCoeControl
+    void SizeChanged();
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+	TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    void FocusChanged( TDrawNow /*aDrawNow*/ );
+
+private: // From MCoeControlObserver
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+private: // Internal methods
+    void SelectListBoxItemByFindTextL();
+    
+    CDesCArrayFlat* FormatModel( RArray<CMemSpyApiProcess*> aProcesses );
+    void AppendPriority( TDes& aDes, TProcessPriority aPriority );
+    void AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  );
+    void AppendExitType( TDes& aDes, TExitType aType );
+
+private: // Data members
+    CMemSpyProcess* iCurrentProcess;
+    TProcessId iCurrentProcessId;
+    CAknSearchField* iSearchField;
+    HBufC* iMatcherBuffer;
+    RArray<CMemSpyApiProcess*> iProcesses;  //cigasto
+    CDesCArrayFlat* iModel;
+    CDesCArrayFlat* model;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewRAMInfo.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWRAMINFO_H
+#define MEMSPYVIEWRAMINFO_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+class CMemSpyViewRAMInfo : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewRAMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_RAM; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdRAM; }
+
+private: // Command handlers
+    void OnCmdSetIconCacheStatusL( TBool aEnabled );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Data members
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewROMInfo.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWROMINFO_H
+#define MEMSPYVIEWROMINFO_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+class CMemSpyViewROMInfo : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewROMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Data members
+    };
+
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewServerList.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWSERVERLIST_H
+#define MEMSPYVIEWSERVERLIST_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+#include <memspy/api/memspyapiserver.h>
+#include <memspysession.h>
+
+// Classes referenced
+class CMemSpyEngineServerList;
+class CMemSpyEngineServerEntry;
+class RMemSpySession;
+
+class CMemSpyViewServerList : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewServerList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+	CMemSpyViewServerList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewServerList();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_SERVER_LIST; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdServerList; }
+
+private: // Command handlers
+    void OnCmdServerListSortByNameL();
+    void OnCmdServerListSortBySessionCountL();
+    void OnCmdServerListOutputSummaryL();
+    void OnCmdServerListOutputDetailedL();
+    void OnCmdServerListOutputGenericL( TBool aDetailed );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+
+private: // Data members
+    CMemSpyEngineServerList* iList;
+    const CMemSpyEngineServerEntry* iActionedItem;
+    TInt iActionedItemIndex;
+    RArray<CMemSpyApiServer*> iServers;
+    CDesCArrayFlat* iModel;  
+    TSortType iSort;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewSystemConfig.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWSYSTEMCONFIG_H
+#define MEMSPYVIEWSYSTEMCONFIG_H
+
+// System includes
+#include <hal.h>
+#include <f32file.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+class CMemSpyViewSystemConfig : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewSystemConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewSystemConfig();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Internal enumerations 
+
+    enum TMemSpyDisplayMode
+	    {
+	    ENone,
+	    EGray2,
+	    EGray4,
+	    EGray16,
+	    EGray256,
+	    EColor16,
+	    EColor256,
+	    EColor64K,
+	    EColor16M,
+	    ERgb,
+	    EColor4K,
+	    EColor16MU,
+	    EColor16MA,
+	    EColor16MAP,
+	    EColorLast
+	    };
+
+private: // Internal methods
+    static void GetManufacturer( TDes& aBuf );
+    static void GetDeviceFamily( TDes& aBuf );
+    static void GetCPU( TDes& aBuf );
+    static void GetCPUABI( TDes& aBuf );
+    static void GetStartupReason( TDes& aBuf );
+    static void GetKeyboard( TDes& aBuf );
+    static void GetMachineUid( TDes& aBuf );
+    static void GetDisplayType( TDes& aBuf );
+    static void GetDisplayMode( TDes& aBuf, TMemSpyDisplayMode aMode );
+    //
+    static TInt GetHALValue( HALData::TAttribute aAttribute, TInt& aValue );
+    TInt GetHALValueAsStringL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
+    TInt GetHALValueAsNumericL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL, TInt aWidth = -1 );
+    TInt GetHALValueAsHexL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
+    TInt GetHALValueAsYesNoL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
+    TInt GetHALValueAsDriveLetterL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix = NULL );
+
+private:
+    void AddItemL( const TDesC& aCaption, const TDesC& aValue, const TDesC* aSuffix = NULL );
+    void AddItemL( TDriveNumber aDrive, const TDesC& aCaption, const TDesC* aSuffix = NULL );
+
+private: // Data members
+    CDesCArrayFlat* iModel;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemActiveObject.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,89 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMACTIVEOBJECT_H
+#define MEMSPYVIEWTHREADINFOITEMACTIVEOBJECT_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+// Classes referenced
+class CMemSpyEngineActiveObjectArray;
+class RMemSpySession;
+
+
+class CMemSpyViewThreadInfoItemActiveObjectBase : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemActiveObjectBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+    
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_ACTIVE_OBJECTS; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdActiveObject; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+protected:
+    CMemSpyEngineActiveObjectArray& ActiveObjectArray() const;
+
+private: // Command handlers
+    void OnCmdWriteAOListingL();
+    };
+
+
+
+class CMemSpyViewThreadInfoItemActiveObject : public CMemSpyViewThreadInfoItemActiveObjectBase
+    {
+public:
+    CMemSpyViewThreadInfoItemActiveObject( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareChildViewL();
+    };
+
+
+
+
+class CMemSpyViewThreadInfoItemActiveObjectDetails : public CMemSpyViewThreadInfoItemActiveObjectBase
+    {
+public:
+    CMemSpyViewThreadInfoItemActiveObjectDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, TAny* aObjectAddress );
+
+public: // From CMemSpyViewBase
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    
+private: // Data members
+    TAny* iObjectAddress;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemChunk.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMCHUNK_H
+#define MEMSPYVIEWTHREADINFOITEMCHUNK_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemChunk : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemChunk( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId,  TThreadId aId, TMemSpyThreadInfoItemType aType );
+
+private: // From CMemSpyViewBase
+    CMemSpyViewBase* PrepareChildViewL();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemCodeSeg.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMCODESEG_H
+#define MEMSPYVIEWTHREADINFOITEMCODESEG_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemCodeSeg : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemCodeSeg( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+private: // From CMemSpyViewBase
+    CMemSpyViewBase* PrepareChildViewL();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneralInfo.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMGENERALINFO_H
+#define MEMSPYVIEWTHREADINFOITEMGENERALINFO_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+class CMemSpyThreadInfoContainer;
+class CMemSpyThreadInfoItemBase;
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemGeneralInfo : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemGeneralInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+
+private: // Command handlers
+    void OnCmdToggleKernelEventHooksL();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemGeneric.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMGENERIC_H
+#define MEMSPYVIEWTHREADINFOITEMGENERIC_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/api/memspyapithreadinfoitem.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+class CAknWaitDialog;
+class CMemSpyProcess;
+class CMemSpyThread;
+class CMemSpyThreadInfoContainer;
+class CMemSpyThreadInfoItemBase;
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemGeneric : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewThreadInfoItemGeneric( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aInfoContainer, TMemSpyThreadInfoItemType aType );
+	CMemSpyViewThreadInfoItemGeneric( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcessId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+    ~CMemSpyViewThreadInfoItemGeneric();
+
+public: // From CMemSpyViewBase
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // API
+    CMemSpyProcess& Process() const;
+    CMemSpyThread& Thread() const;
+    CMemSpyThreadInfoContainer& Container() const;
+    CMemSpyThreadInfoItemBase& InfoItem() const;
+    TThreadId ThreadId() { return iThreadId; }
+    
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+
+protected: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
+
+private: // Internal methods
+    void ShowWaitNoteL();
+    void DestroyWaitNote();
+    static TInt CheckForItemConstructionComplete( TAny* aSelf );
+
+protected: // Member data
+    //CMemSpyThreadInfoContainer& iContainer;
+    //CMemSpyThreadInfoItemBase* iInfoItem;
+    
+private: // Member data
+    CAknWaitDialog* iWaitNote;
+    CPeriodic* iWaitConstructionChecker;
+    
+    RArray<CMemSpyApiThreadInfoItem*> iThreadInfoItems;  //cigasto
+    CDesCArrayFlat* iModel;
+    TThreadId iThreadId;
+    TProcessId iParentProcessId;
+    TMemSpyThreadInfoItemType iType;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemHeap.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMHEAP_H
+#define MEMSPYVIEWTHREADINFOITEMHEAP_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemHeap : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType  );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_HEAP; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdHeap; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // Command handlers
+    void OnCmdHeapDataL();
+    void OnCmdHeapCellListingL();
+    void OnCmdHeapInfoL();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemList.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMLIST_H
+#define MEMSPYVIEWTHREADINFOITEMLIST_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+
+// Classes referenced
+class CMemSpyProcess;
+class CMemSpyThread;
+class CMemSpyThreadInfoItemBase;
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemList : public CMemSpyViewBase, public MMemSpyThreadInfoContainerObserver
+    {
+public:
+    //CMemSpyViewThreadInfoItemList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThread& aThread );
+	CMemSpyViewThreadInfoItemList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcess, TThreadId aThread );
+    ~CMemSpyViewThreadInfoItemList();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TMemSpyThreadInfoItemType iType);
+
+public: // API
+    const CMemSpyThreadInfoItemBase& CurrentInfoItem() const;
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_THREAD; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdThread; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // Command handlers
+    void OnCmdInfoHandlesL();
+
+private: // From MMemSpyThreadInfoContainerObserver
+    void HandleMemSpyEngineInfoContainerEventL( TEvent aEvent, TMemSpyThreadInfoItemType aType );
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
+    static TInt IdleUpdateListBoxModel( TAny* aSelf );
+    void DoIdleUpdateListBoxModelL();   
+
+private: // Member data
+    //CMemSpyThread& iThread;
+    TThreadId iThreadId;
+    TProcessId iParentProcessId;
+    CMemSpyThreadInfoItemBase* iCurrentInfoItem;
+    TInt iCurrentInfoItemId;
+    CPeriodic* iIdleResetListboxTimer;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemMemoryTracking.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMMEMORYTRACKING_H
+#define MEMSPYVIEWTHREADINFOITEMMEMORYTRACKING_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyengineprocessmemorytracker.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+// Classes referenced
+class CMemSpyEngineProcessMemoryTracker;
+
+
+class CMemSpyViewThreadInfoItemMemoryTracking : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
+    {
+public:
+    CMemSpyViewThreadInfoItemMemoryTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+    TInt IndexByViewType( TMemSpyViewType aType );
+    void HandleListBoxItemActionedL( TInt aIndex );
+    void RefreshL();
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_MEMORY_TRACKING; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdMemoryTracking; }
+
+private: // From MMemSpyEngineProcessMemoryTrackerObserver
+    void HandleMemoryTrackingStartedL();
+    void HandleMemoryTrackingStoppedL();
+    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
+
+private: // Command handlers
+    void OnCmdTrackingStartL();
+    void OnCmdTrackingStopL();
+    void OnCmdHWMResetL();
+    void OnCmdTotalWithSharedMemL();
+    void OnCmdTotalWithoutSharedMemL();
+    };
+
+
+class CMemSpyViewThreadInfoItemMemoryTrackingCurrent : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
+    {
+public:
+    CMemSpyViewThreadInfoItemMemoryTrackingCurrent( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    void RefreshL();
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineProcessMemoryTrackerObserver
+    void HandleMemoryTrackingStartedL() { }
+    void HandleMemoryTrackingStoppedL() { }
+    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
+    };
+
+
+
+class CMemSpyViewThreadInfoItemMemoryTrackingHWM : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
+    {
+public:
+    CMemSpyViewThreadInfoItemMemoryTrackingHWM( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    TBool HandleCommandL( TInt aCommand );
+    void RefreshL();
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineProcessMemoryTrackerObserver
+    void HandleMemoryTrackingStartedL() { }
+    void HandleMemoryTrackingStoppedL() { }
+    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_MEMORY_TRACKING_HWM; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdMemoryTrackingHWM; }
+
+private: // Command handlers
+    void OnCmdHWMResetL();
+    };
+    
+
+
+
+class CMemSpyViewThreadInfoItemMemoryTrackingPeak : public CMemSpyViewThreadInfoItemGeneric, public MMemSpyEngineProcessMemoryTrackerObserver
+    {
+public:
+    CMemSpyViewThreadInfoItemMemoryTrackingPeak( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer );
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    TBool HandleCommandL( TInt aCommand );
+    void RefreshL();
+    void SetListBoxModelL();
+
+private: // From MMemSpyEngineProcessMemoryTrackerObserver
+    void HandleMemoryTrackingStartedL() { }
+    void HandleMemoryTrackingStoppedL() { }
+    void HandleMemoryChangedL( const TProcessId& aPid, const TMemSpyDriverProcessInspectionInfo& aCurrentInfo, const TMemSpyDriverProcessInspectionInfo& aHWMInfoIncShared, const TMemSpyDriverProcessInspectionInfo& aHWMInfoExcShared );
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemServer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMSERVER_H
+#define MEMSPYVIEWTHREADINFOITEMSERVER_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <badesca.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+// Classes referenced
+class TMemSpyDriverHandleInfoGeneric;
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemServer : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemServer( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+
+public: // From CMemSpyViewBase
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
+
+public: // From CMemSpyViewBase
+    CMemSpyViewBase* PrepareChildViewL();
+
+private: // Data members
+    TMemSpyDriverHandleInfoGeneric iCurrentInfoItemDetails;
+    };
+
+
+
+class CMemSpyViewThreadInfoItemServerDetails : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemServerDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails );
+
+public: // From CMemSpyViewBase
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareChildViewL();
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+    void HandleListBoxItemSelectedL( TInt aCurrentIndex );
+
+private: // Internal methods
+
+private: // Member data
+    const TMemSpyDriverHandleInfoGeneric iInfoItemDetails;
+    };
+
+
+
+class CMemSpyViewThreadInfoItemServerSessions : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemServerSessions( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails );
+
+public: // From CMemSpyViewBase
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+
+private: // Member data
+    const TMemSpyDriverHandleInfoGeneric iInfoItemDetails;
+    };
+
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreadInfoItemStack.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADINFOITEMSTACK_H
+#define MEMSPYVIEWTHREADINFOITEMSTACK_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// User includes
+#include "MemSpyViewThreadInfoItemGeneric.h"
+
+class RMemSpySession;
+
+class CMemSpyViewThreadInfoItemStack : public CMemSpyViewThreadInfoItemGeneric
+    {
+public:
+    CMemSpyViewThreadInfoItemStack( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType );
+
+public: // From CMemSpyViewBase
+    TBool HandleCommandL( TInt aCommand );
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_STACK; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdStack; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+private: // Command handlers
+    void OnCmdDeviceStackSummaryL();
+    void OnCmdStackInfoL();
+    void OnCmdStackDataUserL();
+    void OnCmdStackDataKernelL();
+    void OnCmdStackDataUserAllThreadsL();
+    void OnCmdStackDataKernelAllThreadsL();
+    void OnCmdStackWatchForHighWatermarkL();
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewThreads.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTHREADS_H
+#define MEMSPYVIEWTHREADS_H
+
+// System includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <e32const.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+#include <memspy/api/memspyapithread.h>
+
+// Classes referenced
+class CMemSpyProcess;
+class CMemSpyThread;
+class RMemSpySession;
+
+class CMemSpyViewThreads : public CMemSpyViewBase
+    {
+public:
+    //CMemSpyViewThreads( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyProcess& aProcess );
+	CMemSpyViewThreads( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aId, TThreadId aThreadId );
+    ~CMemSpyViewThreads();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // API
+    //const CMemSpyProcess& Process() const;
+    //CMemSpyThread& CurrentThread();
+    TProcessId Process() const;
+    TThreadId CurrentThread();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_THREAD; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdThread; }
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+public: // From CMemSpyViewBase
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+    TBool HandleCommandL( TInt aCommand );
+
+private: // Command handlers
+    void OnCmdEndKillL();
+    void OnCmdEndTerminateL();
+    void OnCmdEndPanicL();
+    void OnCmdSetPriorityL( TInt aCommand );
+    void OnCmdInfoHandlesL();
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    void HandleListBoxItemActionedL( TInt aCurrentIndex );
+    void HandleListBoxItemSelectedL( TInt aCurrentIndex );    
+    void AppendPriority( TDes& aDes, TThreadPriority aPriority );
+
+private: // Member data
+    //CMemSpyProcess& iParentProcess;
+    //CMemSpyThread* iCurrentThread;
+    TThreadId iCurrentThreadId;
+    TProcessId iParentProcessId;
+    
+    RArray<CMemSpyApiThread*> iThreads;
+    CDesCArrayFlat* iModel;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewType.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWTYPE_H
+#define MEMSPYVIEWTYPE_H
+
+// System includes
+#include <e32std.h>
+
+// Enumerations
+enum TMemSpyViewType
+    {
+    EMemSpyViewTypeNone = -1,
+    EMemSpyViewTypeMainMenu = 0,
+    EMemSpyViewTypeProcesses,
+    EMemSpyViewTypeRAMInfo,
+    EMemSpyViewTypeROMInfo,
+    EMemSpyViewTypeServerList,
+    EMemSpyViewTypeOpenFiles,
+    EMemSpyViewTypeFBServBitmaps,
+    EMemSpyViewTypeFBServBitmapInfo,
+    EMemSpyViewTypeFBServBitmapViewer,
+    EMemSpyViewTypeCodeSegmentList,
+    EMemSpyViewTypeCodeSegmentDetails,
+    EMemSpyViewTypeChunkList,
+    EMemSpyViewTypeChunkDetails,
+    EMemSpyViewTypeSystemConfig,
+    EMemSpyViewTypeKernel,
+    EMemSpyViewTypeKernelContainers,
+    EMemSpyViewTypeKernelObjects,
+    EMemSpyViewTypeKernelHeap,
+    EMemSpyViewTypeDriveSummary,
+    EMemSpyViewTypeDriveInfo,
+    EMemSpyViewTypeECom,
+    EMemSpyViewTypeEComCategory,
+    EMemSpyViewTypeEComInterface,
+    EMemSpyViewTypeEComImplementation,
+    EMemSpyViewTypeThreads,
+    EMemSpyViewTypeThreadInfoItemList,
+    EMemSpyViewTypeThreadInfoItemHeap,
+    EMemSpyViewTypeThreadInfoItemStack,
+    EMemSpyViewTypeThreadInfoItemChunk,
+    EMemSpyViewTypeThreadInfoItemCodeSeg,
+    EMemSpyViewTypeThreadInfoItemServer,
+    EMemSpyViewTypeThreadInfoItemServerDetails,
+    EMemSpyViewTypeThreadInfoItemServerSessions,
+    EMemSpyViewTypeThreadInfoItemSession,
+    EMemSpyViewTypeThreadInfoItemSemaphore,
+    EMemSpyViewTypeThreadInfoItemMutex,
+    EMemSpyViewTypeThreadInfoItemTimer,
+    EMemSpyViewTypeThreadInfoItemLDD,
+    EMemSpyViewTypeThreadInfoItemPDD,
+    EMemSpyViewTypeThreadInfoItemLogicalChannel,
+    EMemSpyViewTypeThreadInfoItemChangeNotifier,
+    EMemSpyViewTypeThreadInfoItemUndertaker,
+    EMemSpyViewTypeThreadInfoItemMessageQueue,
+    EMemSpyViewTypeThreadInfoItemConditionalVariable,
+    EMemSpyViewTypeThreadInfoItemOpenFiles,
+    EMemSpyViewTypeThreadInfoItemActiveObject,
+    EMemSpyViewTypeThreadInfoItemActiveObjectDetails,
+    EMemSpyViewTypeThreadInfoItemGeneralInfo,
+    EMemSpyViewTypeThreadInfoItemOtherThreads,
+    EMemSpyViewTypeThreadInfoItemOtherProcesses,
+    EMemSpyViewTypeThreadInfoItemOwnedThreadHandles,
+    EMemSpyViewTypeThreadInfoItemOwnedProcessHandles,
+    EMemSpyViewTypeHeapTracking,
+    EMemSpyViewTypeHeapTrackingSettings,
+    EMemSpyViewTypeHeapTrackingResults,
+    EMemSpyViewTypeHeapTrackingResultsCycleInfo,
+    EMemSpyViewTypeHeapTrackingResultsCycleChangeDescriptor,
+    EMemSpyViewTypeThreadInfoItemMemoryTracking,
+    EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig,
+    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatistics,
+    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent,
+    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM,
+    EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak,
+    EMemSpyViewTypeWindowGroups
+    };
+
+
+class MemSpyViewTypeUtils
+    {
+public:
+    static TBool IsOpenableItem( TMemSpyViewType aType );
+    static TBool IsThreadInfoItem( TMemSpyViewType aType );
+    static TBool IsExitableView( TMemSpyViewType aType );
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/MemSpyViewWindowGroups.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* 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:
+*
+*/
+
+#ifndef MEMSPYVIEWWINDOWGROUPS_H
+#define MEMSPYVIEWWINDOWGROUPS_H
+
+// System includes
+#include <hal.h>
+#include <coecntrl.h>
+#include <aknlists.h>
+
+// Engine includes
+#include <memspy/engine/memspyenginehelperwindowserver.h>
+
+// User includes
+#include "MemSpyViewBase.h"
+
+// Classes referenced
+
+
+class CMemSpyViewWindowGroups : public CMemSpyViewBase
+    {
+public:
+    CMemSpyViewWindowGroups( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver );
+    ~CMemSpyViewWindowGroups();
+    void ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune = NULL );
+
+public: // From CMemSpyViewBase
+    CEikListBox* ConstructListBoxL();
+    void RefreshL();
+    TMemSpyViewType ViewType() const;
+    CMemSpyViewBase* PrepareParentViewL();
+    CMemSpyViewBase* PrepareChildViewL();
+
+public: // Menu framework
+    TUint MenuCascadeResourceId() const { return R_MEMSPY_MENUPANE_WINDOW_GROUPS; }
+    TInt MenuCascadeCommandId() const { return EMemSpyCmdWindowGroups; }
+
+private: // From CMemSpyViewBase
+    void SetListBoxModelL();
+    TBool HandleCommandL( TInt aCommand );
+
+private: // Command handlers
+    void OnCmdSwitchToL();
+    void OnCmdEndL( TInt aCommand );
+
+private: // Internal methods
+    void DetailsL();
+    void AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... );
+
+private: // Data members
+    MMemSpyEngineWindowGroupList* iWindowGroupList;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/inc/viewcli.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,166 @@
+// Copyright (c) 1999-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:
+//
+
+#ifndef __VIEWCLI_H__
+#define __VIEWCLI_H__
+
+#include <e32base.h>
+#include <gdi.h>
+#include <vwsdef.h>
+
+//
+// Forward declarations.
+//
+
+class RVwsSession;
+class CVwsSessionEventHandler;
+class MVwsAppStarter;
+
+class MVwsSessionWrapperObserver
+/**
+The MVwsSessionObserver specifies an interface through which server events to be handled by the owner of
+a client session are notified
+
+@publishedAll 
+@deprecated
+*/
+//@internalTechnology @released
+
+	{
+public:	
+
+	/**
+	 * Handles the view event aEvent for a view added through the client session being observed.
+	 * Handles events for all the views added by the client.
+	 */
+	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
+	};
+
+
+class CVwsSessionWrapper : public CBase
+/**
+The CVwsSessionWrapper class mediates access to the view server client session which it creates, and wraps in
+support for notification of server events. A session observer will be called back with server events if
+it maintains an outstanding request for asynchronous event notification.
+
+@publishedPartner 
+@released 
+*/
+//@internalTechnology @released
+
+	{
+public:	
+	IMPORT_C static CVwsSessionWrapper* NewL();
+	IMPORT_C static CVwsSessionWrapper* NewLC();
+	IMPORT_C static CVwsSessionWrapper* NewL(MVwsSessionWrapperObserver& aObserver);
+	IMPORT_C static CVwsSessionWrapper* NewLC(MVwsSessionWrapperObserver& aObserver);
+	IMPORT_C ~CVwsSessionWrapper();
+	IMPORT_C static TInt StartViewServer(MVwsAppStarter& aAppStarter);
+	IMPORT_C TInt ShutdownViewServer();
+	IMPORT_C TInt AddView(const TVwsViewId& aViewId);
+	IMPORT_C TInt RemoveView(const TVwsViewId& aViewId) const;
+	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId,TInt aMode);
+	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId);
+	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
+	IMPORT_C TInt ActivateViewViaViewEvent(const TVwsViewIdAndMessage& aViewIdAndMessage);
+	IMPORT_C TInt RequestCustomMessage(TDes8& aMessageBufPtr) const;
+	IMPORT_C void QueueAsyncRequest();
+	IMPORT_C TInt StartApp(TUid aAppToStart);
+	IMPORT_C TInt DeactivateActiveView();
+	IMPORT_C TInt DeactivateActiveViewIfOwnerMatch();
+	IMPORT_C TInt NotifyNextDeactivation(const TVwsViewId& aViewId);
+	IMPORT_C TInt NotifyNextDeactivation();
+	IMPORT_C TInt NotifyNextActivation(const TVwsViewId& aViewId);
+	IMPORT_C TInt NotifyNextActivation();
+	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId,TInt aMode) const;
+	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId) const;
+	IMPORT_C TInt GetSystemDefaultView(TVwsViewId& aViewId);
+	IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
+	IMPORT_C TInt SetClientRequestTimeOut(TTimeIntervalMicroSeconds32 aDuration);
+	IMPORT_C TInt SetServerEventTimeOut(TTimeIntervalMicroSeconds32 aDuration);
+	IMPORT_C TInt EnableServerEventTimeOut(TBool aEnable);
+	IMPORT_C TInt CheckSourceOfViewSwitch(TBool& aResult,const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic);
+	IMPORT_C TInt EnableServerBlankScreen(TBool aEnable);
+	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
+	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus);
+	IMPORT_C TInt SetCrossCheckUid(const TUid& aCrossCheckUid);
+	IMPORT_C TInt SetWindowBackgroundColor(const TRgb& aBgColor);
+public:	
+	/**
+	@internalComponent
+	@released
+	*/
+	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
+	/**
+	@internalComponent
+	@released
+	*/
+	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus, TInt aCustomControl);
+	/**
+	@internalComponent
+	@released
+	*/IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
+	/**
+	@internalComponent
+	@released
+	*/
+	IMPORT_C TInt GetCurrentActiveViewInSystem(TVwsViewId& aActiveViewId);
+private:
+	CVwsSessionWrapper();
+	CVwsSessionWrapper(MVwsSessionWrapperObserver& aObserver);
+	void ConstructL();
+	TInt CheckCreateViewServerSession();
+	TBool IsSchedulerRunning();
+private:
+	RVwsSession* iVwsSession;
+	CVwsSessionEventHandler* iViewEventHandler;
+	MVwsSessionWrapperObserver* iObserver;
+	};
+
+
+//
+// Panic.
+//
+/**
+@internalComponent
+*/
+enum TVwsPanic
+	{
+	EVwsCreateScheduler=1,
+	EVwsThreadRename
+	};
+
+/**
+@internalComponent
+*/
+GLREF_C void Panic(TVwsPanic aPanic);
+
+/**
+Server thread start.
+
+@internalComponent
+*/
+GLDEF_C TInt ViewServerThreadStart(TAny* aPtr);
+
+/**
+@internalComponent
+*/
+struct SVwsCommandLine
+	{
+	MVwsAppStarter* iAppStarter;
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyApp.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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 "MemSpyApp.h"
+
+// System includes
+#include <eikstart.h>
+
+// User includes
+#include "MemSpyDocument.h"
+
+
+
+TUid CMemSpyApp::AppDllUid() const
+    {
+    return KUidMemSpy;
+    }
+
+
+CApaDocument* CMemSpyApp::CreateDocumentL()
+    {
+    return CMemSpyDocument::NewL( *this );
+    }
+
+
+EXPORT_C CApaApplication* NewApplication()
+    {
+    return new CMemSpyApp;
+    }
+
+
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyAppUi.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,761 @@
+/*
+* 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 "MemSpyAppUi.h"
+
+// System includes
+#include <AknQueryDialog.h>
+#include <aknmessagequerydialog.h> 
+#include <aknradiobuttonsettingpage.h>
+#include <eikaufty.h>
+#include <eikmenub.h>
+#include <avkon.hrh>
+#include <barsread.h>
+#include <f32file.h>
+#include <apgtask.h>
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineoutputsink.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyenginehelperchunk.h>
+#include <memspy/engine/memspyenginehelperthread.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperkernelcontainers.h>
+#include <memspy/engine/memspyenginehelperfbserv.h>
+#include <memspyengineclientinterface.h>
+#include <memspy/driver/memspydriverenumerationsshared.h>
+#include <memspy/engine/memspyenginehelperkernelcontainers.h>
+//cigasto
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainer.h"
+#include "MemSpyDocument.h"
+#include "MemSpySettings.h"
+#include "MemSpyDeviceWideOperationDialog.h"
+#include "MemSpyViewRAMInfo.h" // for aknicon config check
+#include "MemSpyExportBitmapsToMemoryCardDialog.h"
+#include "MemSpy.hrh"
+#include "viewcli.h"
+
+// Constants
+const TInt KMemSpyDefaultAutoCaptureTimerPeriod = 60;
+const TUint32 KMemSpyEikSrvSID = 0x10003a4a;
+
+/*
+CMemSpyAppUi::CMemSpyAppUi( CMemSpyEngine& aEngine )
+:   iEngine( aEngine ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
+    {
+    iEngine.SetObserver( this );
+    }
+*/
+CMemSpyAppUi::CMemSpyAppUi( RMemSpySession &aSession )
+:   iMemSpySession( aSession ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
+    {
+    //iEngine.SetObserver( this );
+    }
+
+CMemSpyAppUi::~CMemSpyAppUi()
+    {
+    RDebug::Printf( "[MemSpy] MemSpy is now closing." );
+    //
+    delete iAutoCaptureTimer;
+    //
+    if (iAppContainer)
+        {
+        RemoveFromStack( iAppContainer );
+        delete iAppContainer;
+        }
+    //
+    //iEngine.SetObserver( NULL );
+    SetViewServerTimeOutStatus( ETrue );
+    }
+
+
+void CMemSpyAppUi::ConstructL()
+    {
+    BaseConstructL( EAknEnableSkin );
+    //
+    //iAppContainer = new (ELeave) CMemSpyContainer( iEngine, *this );
+    iAppContainer = new (ELeave) CMemSpyContainer( iMemSpySession, *this );
+    iAppContainer->SetMopParent(this);
+    iAppContainer->ConstructL( ClientRect() );
+    iAppContainer->SetObserver( this );
+    iAppContainer->SetFocus( ETrue );
+    AddToStackL( iAppContainer );
+    //
+    iAutoCaptureTimer = CPeriodic::NewL( CActive::EPriorityIdle );
+	//
+	iEikonEnv->SetSystem( ETrue );
+    //
+    SetViewServerTimeOutStatus( EFalse );
+    }
+
+
+CMemSpyDocument& CMemSpyAppUi::MemSpyDocument()
+    {
+	CMemSpyDocument* doc = static_cast< CMemSpyDocument* >( Document() );
+    return *doc;
+    }
+
+
+const CMemSpyDocument& CMemSpyAppUi::MemSpyDocument() const
+    {
+	const CMemSpyDocument* doc = static_cast< const CMemSpyDocument* >( Document() );
+    return *doc;
+    }
+
+
+void CMemSpyAppUi::HandleStatusPaneSizeChange()
+	{
+	iAppContainer->SetRect( ClientRect() );
+	} 
+
+
+void CMemSpyAppUi::HandleControlEventL( CCoeControl* aControl, TCoeEvent /*aEventType*/ )
+    {
+    if  ( aControl == iAppContainer )
+        {
+        UpdateCBAL();
+        }
+    }
+
+
+void CMemSpyAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    CMemSpyViewBase& view = iAppContainer->ActiveView();
+    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
+    //
+    const TBool openableView = MemSpyViewTypeUtils::IsOpenableItem( viewType );
+    const TBool exitable = MemSpyViewTypeUtils::IsExitableView( viewType );
+    //
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - START - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
+#endif
+    //
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+        const TInt count = aMenuPane->NumberOfItemsInPane();
+        for( TInt i=0; i<count; i++ )
+            {
+            TBool dimItem = EFalse;
+            CEikMenuPaneItem::SData& menuPaneMetaData = aMenuPane->ItemDataByIndexL( i );
+
+            // If the command is inside the view-specific range then we'll hide it
+            // unless the view and command id matches.
+            const TBool isViewSpecific = ( menuPaneMetaData.iCommandId >= KMemSpyMenuCommandViewSpecific );
+            if  ( isViewSpecific )
+                {
+                // Check whether this view requires this command item.
+                dimItem = ( view.MenuCascadeCommandId() != menuPaneMetaData.iCommandId );
+                }
+
+            aMenuPane->SetItemDimmed( menuPaneMetaData.iCommandId, dimItem );
+            }
+
+        aMenuPane->SetItemDimmed( EMemSpyCmdOpen, !openableView );
+        aMenuPane->SetItemDimmed( EAknSoftkeyBack, exitable );
+        aMenuPane->SetItemDimmed( EAknCmdExit, !exitable );
+        }
+    else if ( aResourceId == R_MEMSPY_MENUPANE_TOOLS )
+        {
+        const TBool inOpenFilesView = ( viewType == EMemSpyViewTypeOpenFiles );
+        aMenuPane->SetItemDimmed( EMemSpyCmdToolsListOpenFiles, !inOpenFilesView );
+        }
+    else if ( aResourceId == R_MEMSPY_MENUPANE_VIEW )
+        {
+        // Hide the refresh item when in the thread info container view
+        aMenuPane->SetItemDimmed( EMemSpyCmdViewRefresh, viewType == EMemSpyViewTypeThreadInfoItemList );
+        aMenuPane->SetItemDimmed( EMemSpyCmdViewOutputToSink, viewType == EMemSpyViewTypeThreadInfoItemList );
+        }
+    else if ( aResourceId == R_MEMSPY_MENUPANE_OUTPUT )
+        {
+        TMemSpySinkType currentSink;
+        iMemSpySession.GetOutputSink( currentSink );
+		aMenuPane->SetItemDimmed( EMemSpyCmdOutputToDebug, currentSink == ESinkTypeDebug );
+        aMenuPane->SetItemDimmed( EMemSpyCmdOutputToFile, currentSink == ESinkTypeFile );                
+        }
+    else if ( aResourceId == R_MEMSPY_MENUPANE_AUTO_CAPTURE )
+        {
+        // Change the auto-capture toggle caption appropriately...
+        TInt resId = R_MEMSPY_AUTO_CAPTURE_ENABLE;
+        if  ( iAutoCaptureTimer->IsActive() )
+            {
+            resId = R_MEMSPY_AUTO_CAPTURE_DISABLE;
+            }
+        aMenuPane->SetItemTextL( EMemSpyCmdAutoCaptureToggle, resId );
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - sending to view..." );
+#endif
+
+    view.DynInitMenuPaneL( aResourceId, aMenuPane );
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - END - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
+#endif
+    }
+
+
+TKeyResponse CMemSpyAppUi::HandleKeyEventL( const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/ )
+    {
+    return EKeyWasNotConsumed;
+    }
+
+
+void CMemSpyAppUi::HandleCommandL( TInt aCommand )
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - START - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+
+    switch ( aCommand )
+        {
+    case EAknSoftkeyBack:
+        OnCmdBackL();
+        break;
+
+    case EEikCmdExit:
+    case EAknCmdExit:
+    case EAknSoftkeyExit:
+        OnCmdExitL();
+        break;
+
+    case EMemSpyCmdOpen:
+        OnCmdOpenL();
+        break;
+
+    case EMemSpyCmdOutputToDebug:
+        OnCmdOutputToDebugL();
+		break;
+    case EMemSpyCmdOutputToFile:
+        OnCmdOutputToFileL();
+		break;
+
+    case EMemSpyCmdToolsAbout:
+        OnCmdAboutL();
+        break;
+    //         
+    case EMemSpyCmdPhoneInfoGeneralSummary:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralSummary );
+    	OnCmdPhoneInformationOperationL( OutputPhoneInfo );
+        break;        
+    case EMemSpyCmdPhoneInfoGeneralDetailed:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralDetailed );
+        OnCmdPhoneInformationOperationL( OutputDetailedPhoneInfo );
+        break;
+    /*
+    case EMemSpyCmdPhoneInfoGeneralHandles:
+        OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralHandles );
+        break;
+    case EMemSpyCmdPhoneInfoGeneralKernelContainers:
+        OnCmdPhoneInformationOperationKernelContainersL();
+        break;
+    //
+    */
+    case EMemSpyCmdPhoneInfoHeapInfoSummary:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapInfo );
+    	OnCmdPhoneInformationOperationL (OutputHeapInfo );
+        break;
+    case EMemSpyCmdPhoneInfoHeapInfoCompact:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceHeapInfoCompact );
+    	OnCmdPhoneInformationOperationL( OutputCompactHeapInfo );
+        break;
+    case EMemSpyCmdPhoneInfoHeapCellListing:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapCellListing );
+        OnCmdPhoneInformationOperationL( OutputHeapCellListing );
+        break;
+        
+    case EMemSpyCmdPhoneInfoHeapDump:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapData );
+    	OnCmdPhoneInformationOperationL( OutputHeapData );
+        break;
+    //		   		    		
+    case EMemSpyCmdPhoneInfoStackInfo:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackInfo );
+        OnCmdPhoneInformationOperationL( OutputStackInfo );
+        break;
+    case EMemSpyCmdPhoneInfoStackInfoCompact:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceStackInfoCompact );
+        OnCmdPhoneInformationOperationL( OutputCompactStackInfo );
+        break;
+    case EMemSpyCmdPhoneInfoStackDumpUser:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataUser );
+    	OnCmdPhoneInformationOperationL( OutputUserStackData );
+        break;
+    case EMemSpyCmdPhoneInfoStackDumpKernel:
+        //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataKernel );
+        OnCmdPhoneInformationOperationL( OutputKernelStackData );
+        break;
+
+    case EMemSpyCmdAutoCaptureToggle:
+        OnCmdAutoCaptureToggleL();
+        break;
+    case EMemSpyCmdAutoCaptureRetryTime:
+        OnCmdAutoCaptureRetryTimeL();
+        break;
+    case EMemSpyCmdAutoCaptureOperationType:
+        OnCmdAutoCaptureOperationTypeL();
+        break;
+
+    default:
+        iAppContainer->HandleCommandL( aCommand );
+        break;
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - END - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+void CMemSpyAppUi::HandleForegroundEventL( TBool aForeground)
+    {
+    // Refresh the container when coming to the foreground
+    if  ( aForeground )
+        {
+        iAppContainer->OnCmdViewRefreshL();
+        }
+    }
+
+
+void CMemSpyAppUi::HandleThreadSelectedL( const CMemSpyThread& /*aThread*/ )
+    {
+	MEikAppUiFactory* appUiFactory = (iEikonEnv)->AppUiFactory();
+    appUiFactory->MenuBar()->TryDisplayMenuBarL();
+    }
+
+
+void CMemSpyAppUi::HandleMemSpyEngineEventL( MMemSpyEngineObserver::TEvent aEvent, TAny* aContext )
+    {
+    if  ( aEvent == MMemSpyEngineObserver::EHandleThreadsOrProcessesChanged )
+        {
+        // Get the original container
+        const CMemSpyEngineObjectContainer& oldContainer = *reinterpret_cast< CMemSpyEngineObjectContainer* >( aContext );
+        (void) oldContainer;
+
+        // Refresh the container
+        iAppContainer->OnCmdViewRefreshL();
+        }
+    else if ( aEvent == MMemSpyEngineObserver::EHandleClientServerOperationRequest )
+        {
+        const TInt function = reinterpret_cast<TInt>( aContext );
+        InitiateMemSpyClientServerOperationL( function );
+        }
+    }
+
+
+void CMemSpyAppUi::DWOperationStarted()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+
+    iRunningDeviceWideOperation = ETrue;
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+void CMemSpyAppUi::DWOperationCancelled()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+
+    iAutoCaptureTimer->Cancel();
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+void CMemSpyAppUi::DWOperationCompleted()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+
+    iRunningDeviceWideOperation = EFalse;
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - END - iAutoCaptureTimer is active: %d", iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+void CMemSpyAppUi::UpdateCBAL()
+    {
+    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
+    //
+    if  ( MemSpyViewTypeUtils::IsExitableView( viewType ) )
+        {
+        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_EXIT );
+        }
+    else
+        {
+        cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+        }
+
+    cba->MakeVisible( ETrue );
+    cba->DrawNow();
+    }
+
+
+void CMemSpyAppUi::InitiateMemSpyClientServerOperationL( TInt aOpCode )
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - START - aOpCode: %d", aOpCode );
+#endif
+
+    switch( aOpCode )
+        {
+    case EMemSpyClientServerOpSummaryInfo:
+        HandleCommandL( EMemSpyCmdPhoneInfoGeneralSummary );
+        break;
+    case EMemSpyClientServerOpSummaryInfoDetailed:
+        HandleCommandL( EMemSpyCmdPhoneInfoGeneralDetailed );
+        break;
+    //
+    case EMemSpyClientServerOpHeapInfo:
+        HandleCommandL( EMemSpyCmdPhoneInfoHeapInfoSummary );
+        break;
+    case EMemSpyClientServerOpHeapCellListing:
+        HandleCommandL( EMemSpyCmdPhoneInfoHeapCellListing );
+        break;
+    case EMemSpyClientServerOpHeapData:
+        HandleCommandL( EMemSpyCmdPhoneInfoHeapDump );
+        break;
+    //
+    case EMemSpyClientServerOpStackInfo:
+        HandleCommandL( EMemSpyCmdPhoneInfoStackInfo );
+        break;
+    case EMemSpyClientServerOpStackDataUser:
+        HandleCommandL( EMemSpyCmdPhoneInfoStackDumpUser );
+        break;
+    case EMemSpyClientServerOpStackDataKernel:
+        HandleCommandL( EMemSpyCmdPhoneInfoStackDumpKernel );
+        break;
+    //
+    case EMemSpyClientServerOpBitmapsSave:
+        OnCmdToolsBitmapsSaveToMemoryCardL();
+        break;
+    case EMemSpyClientServerOpSendToBackground:
+        OnCmdToolsSendToBackgroundL();
+        break;
+    case EMemSpyClientServerOpBringToForeground:
+        OnCmdToolsBringToForegroundL();
+        break;
+    case EMemSpyClientServerOpExit:
+        OnCmdExitL();
+        break;
+    //
+    default:
+        User::Leave( KErrNotSupported );
+        break;
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - END - aOpCode: %d", aOpCode );
+#endif
+    }
+
+
+void CMemSpyAppUi::SetViewServerTimeOutStatus( TBool aEnabled )
+    {
+	/* TODO
+	iMemSpySession.SetServerTimeOutStatus( KMemSpyEikSrvSID, aEnabled );
+	*/
+	/*
+    TRAP_IGNORE(
+        iEngine.HelperProcess().ImpersonateL( KMemSpyEikSrvSID );
+        //
+        CVwsSessionWrapper* ses = CVwsSessionWrapper::NewLC();
+        ses->EnableServerEventTimeOut( aEnabled );
+        CleanupStack::PopAndDestroy( ses );
+        //
+        iEngine.HelperProcess().ImpersonateL( 0 );
+        );
+    */	
+    }
+
+
+void CMemSpyAppUi::OnCmdBackL()
+    {
+    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
+    //
+    if  ( !MemSpyViewTypeUtils::IsExitableView( viewType ) )
+        {
+        // Should go back one view
+        iAppContainer->NavigateToParentViewL();
+        }
+    }
+
+
+void CMemSpyAppUi::OnCmdExitL()
+    {
+    Exit();
+    }
+
+
+void CMemSpyAppUi::OnCmdOpenL()
+    {
+    const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
+    //
+    if  ( MemSpyViewTypeUtils::IsOpenableItem( viewType ) )
+        {
+        // Should go back one view
+        iAppContainer->NavigateToChildViewL();
+        }
+    }
+
+
+void CMemSpyAppUi::OnCmdPhoneInformationOperationL( TDeviceWideOperation aOperation )
+    {	
+	//
+	//CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, aOperation );
+	CMemSpyDwoTracker* tracker = CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( iMemSpySession, aOperation );
+	tracker->Start();		
+	/*
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - START - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+
+    if  ( !iRunningDeviceWideOperation )
+        {        
+		CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, *this, aOp );
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - END - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
+#endif
+	*/
+    }
+
+
+void CMemSpyAppUi::OnCmdPhoneInformationOperationKernelContainersL()
+    {
+	/* TODO
+	iMemSpySession.OutputKernelObjects();
+	*/
+	/*
+    CMemSpyEngineGenericKernelObjectContainer* list = iEngine.HelperKernelContainers().ObjectsAllL();
+    CleanupStack::PushL( list );
+    iEngine.HelperKernelContainers().OutputL( *list );
+    CleanupStack::PopAndDestroy( list );
+    */	
+    }
+
+
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+
+void CMemSpyAppUi::OnCmdAutoCaptureToggleL()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+
+    if  ( iAutoCaptureTimer->IsActive() )
+        {
+        iAutoCaptureTimer->Cancel();
+        }
+    else
+        {
+        iAutoCaptureTimer->Cancel();
+        //
+        const TTimeIntervalMicroSeconds32 interval( iAutoCaptureTimerPeriod * 1000000 );
+        iAutoCaptureTimer->Start( 0, interval, TCallBack(AutoCaptureCallBack, this) );
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+void CMemSpyAppUi::OnCmdAutoCaptureRetryTimeL()
+    {
+    CAknNumberQueryDialog* dialog = new(ELeave) CAknNumberQueryDialog( iAutoCaptureTimerPeriod );
+    dialog->ExecuteLD( R_MEMSPY_DEVICE_WIDE_SETTINGS );
+    }
+
+
+void CMemSpyAppUi::OnCmdAutoCaptureOperationTypeL()
+    {
+    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES );
+    CleanupStack::PushL(items);
+    //
+    TInt currentItem = iAutoCaptureOperationType;
+    //
+    CAknRadioButtonSettingPage* dialog = new(ELeave) CAknRadioButtonSettingPage( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES_SETTINGS_PAGE, currentItem, items );
+    if  ( dialog->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
+        {
+        iAutoCaptureOperationType = static_cast< CMemSpyDeviceWideOperations::TOperation >( currentItem );
+        }
+    //
+    CleanupStack::PopAndDestroy( items ); 
+    }
+
+
+TInt CMemSpyAppUi::AutoCaptureCallBack( TAny* aSelf )
+    {
+    CMemSpyAppUi* self = reinterpret_cast< CMemSpyAppUi* >( aSelf );
+    TRAPD( err, self->AutoCaptureCallBackL() );
+    //
+    const TBool callMeBackAgain = ( err == KErrNone );
+    return callMeBackAgain;
+    }
+
+
+void CMemSpyAppUi::AutoCaptureCallBackL()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+
+   // OnCmdPhoneInformationOperationL( iAutoCaptureOperationType );
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - END - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
+#endif
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void CMemSpyAppUi::OnCmdOutputToDebugL()
+    {
+	iMemSpySession.SwitchOutputSinkL( ESinkTypeDebug ); //set in engine
+	MemSpyDocument().Settings().SetSinkType( ESinkTypeDebug ); //set in settings
+    }
+
+
+void CMemSpyAppUi::OnCmdOutputToFileL()
+    {
+	iMemSpySession.SwitchOutputSinkL( ESinkTypeFile ); //set in engine
+	MemSpyDocument().Settings().SetSinkType( ESinkTypeFile ); //set in settings
+    }
+
+
+
+
+
+
+
+
+
+
+
+void CMemSpyAppUi::OnCmdAboutL()
+    {
+    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
+    dialog->ExecuteLD( R_MEMSPYUI_ABOUT_DIALOG );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+void CMemSpyAppUi::OnCmdToolsBitmapsSaveToMemoryCardL()
+    {
+	/* TODO
+    // Get bitmap handles
+    RArray<TInt> handles;
+    CleanupClosePushL( handles );
+    iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( handles );
+
+    // Build bitmap list
+    CMemSpyEngineFbServBitmapArray* array = CMemSpyEngineFbServBitmapArray::NewL( handles );
+    CleanupStack::PopAndDestroy( &handles );
+    CleanupStack::PushL( array );
+
+    // Export...
+    CMemSpyExportBitmapsToMemoryCardDialog* dialog = CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *array );
+    
+    // All done
+    CleanupStack::PopAndDestroy( array );
+    */
+    }
+
+
+void CMemSpyAppUi::OnCmdToolsSendToBackgroundL()
+    {
+    TApaTask task( iCoeEnv->WsSession() );
+    task.SendToBackground();
+    }
+
+
+void CMemSpyAppUi::OnCmdToolsBringToForegroundL()
+    {
+    iCoeEnv->BringOwnerToFront();
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyContainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,227 @@
+/*
+* 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 "MemSpyContainer.h"
+
+// System includes
+#include <eikrted.h>  // for example label control
+#include <txtrich.h>
+#include <apgtask.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+
+// User includes
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+/*
+CMemSpyContainer::CMemSpyContainer( CMemSpyEngine& aEngine, MMemSpyContainerObserver& aObserver  )
+:   iEngine( aEngine ), iObserver( aObserver )
+    {
+    }
+*/
+CMemSpyContainer::CMemSpyContainer( RMemSpySession& aSession, MMemSpyContainerObserver& aObserver  )
+:   iMemSpySession( aSession ), iObserver( aObserver )
+    {
+    }
+
+CMemSpyContainer::~CMemSpyContainer()
+    {
+    delete iPreviousView;
+    delete iActiveView;
+    }
+
+
+void CMemSpyContainer::ConstructL(const TRect& aRect)
+    {
+    CreateWindowL();
+    SetRect(aRect);
+    PrepareTopLevelViewL();
+    ActivateL();
+    }
+
+
+void CMemSpyContainer::NavigateToParentViewL()
+    {
+    CMemSpyViewBase* parentView = iActiveView->PrepareParentViewL();
+    //
+    if  ( parentView == NULL )
+        {
+        // Parent can be null, in which case, revert to top-level view
+        PrepareTopLevelViewL();
+        }
+    else
+        {
+        SetNewActiveViewL( parentView );
+        }
+    }
+
+
+void CMemSpyContainer::NavigateToChildViewL()
+    {
+    CMemSpyViewBase* childView = iActiveView->PrepareChildViewL();
+    //
+    if  ( childView != NULL )
+        {
+        SetNewActiveViewL( childView );
+        }
+    }
+
+
+void CMemSpyContainer::HandleCommandL( TInt aCommand )
+    {
+    switch( aCommand )
+        {
+	case EMemSpyCmdViewRefresh:
+        OnCmdViewRefreshL();
+        break;
+    default:
+        if  ( iActiveView )
+            {
+            iActiveView->HandleCommandL( aCommand );
+            }
+        break;
+        }
+    }
+
+
+void CMemSpyContainer::OnCmdViewRefreshL()
+    {
+    if  ( iActiveView )
+        {
+        TRAPD(err, iActiveView->RefreshL());
+        if  ( err != KErrNone )
+            {
+            // Error during view refreshing (perhaps the thread doesn't exist anymore).
+            // Try to replace the active view with its parent...
+            NavigateToParentViewL();
+            }
+        }
+    }
+
+
+void CMemSpyContainer::SizeChanged()
+    {
+    if  ( iActiveView )
+        {
+        iActiveView->SetRect( Rect() );
+        }
+    }
+
+
+TInt CMemSpyContainer::CountComponentControls() const
+    {
+    return 1;
+    }
+
+
+CCoeControl* CMemSpyContainer::ComponentControl(TInt /*aIndex*/) const
+    {
+    return iActiveView;
+    }
+
+
+void CMemSpyContainer::Draw(const TRect& aRect) const
+    {
+    CWindowGc& gc = SystemGc();
+    //
+    gc.SetPenStyle(CGraphicsContext::ENullPen);
+    gc.SetBrushColor(KRgbGray);
+    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+    gc.DrawRect(aRect);
+    }
+
+
+TKeyResponse CMemSpyContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    TKeyResponse response = EKeyWasNotConsumed;
+    //
+    if  ( iActiveView )
+        {
+        response = iActiveView->OfferKeyEventL( aKeyEvent, aType );
+        }
+    //
+    return response;
+    }
+
+
+void CMemSpyContainer::HandleMemSpyViewEventL( TViewEventType aEvent, TMemSpyViewType /*aViewType*/, CMemSpyViewBase& aReportingView, TAny* /*aContext*/ )
+    {
+    if  ( aEvent == EEventItemActioned )
+        {
+        // Get the view to generate a child
+        CMemSpyViewBase* child = aReportingView.PrepareChildViewL();
+        if  ( child == NULL )
+            {
+            // View doesn't have a child - treat it as item activation and
+            // report event to observer.
+
+            }
+        else
+            {
+            // Child view becomes the active one
+            SetNewActiveViewL( child );
+            }
+        }
+    }
+
+
+CMemSpyViewBase* CMemSpyContainer::PrepareTopLevelViewL()
+    {
+    //CMemSpyViewMainMenu* view = new(ELeave) CMemSpyViewMainMenu( iEngine, *this );
+	CMemSpyViewMainMenu* view = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, *this );
+    CleanupStack::PushL( view );
+    view->ConstructL( Rect(), *this );
+    SetNewActiveViewL( view );
+    CleanupStack::Pop( view );
+    return view;
+    }
+
+
+void CMemSpyContainer::SetNewActiveViewL( CMemSpyViewBase* aNewView )
+    {
+    delete iPreviousView;
+    //
+    iPreviousView = iActiveView;
+    if  ( iPreviousView )
+        {
+        iPreviousView->MakeVisible( EFalse );
+        iPreviousView->SetFocus( EFalse );
+        }
+    //
+    iActiveView = aNewView;
+    iActiveView->RefreshL();
+    iActiveView->SetFocus( ETrue );
+    //
+    ReportEventL( MCoeControlObserver::EEventStateChanged );
+    }
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,387 @@
+/*
+* 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 "MemSpyDeviceWideOperationDialog.h"
+
+// System includes
+#include <eikprogi.h>
+#include <AknWaitDialog.h>
+#include <AknQueryDialog.h>
+#include <coemain.h>
+#include <eikenv.h>
+#include <avkon.hrh>
+#include <memspyui.rsg>
+
+#include <memspysession.h>
+
+/*
+CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver )
+:   iEngine( aEngine ), iObserver( aObserver )
+    {
+    }
+
+CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver )
+:   iSession( aSession ), iObserver( aObserver )
+    {
+    }    
+*/
+
+CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession )
+:   iSession( aSession )
+    {
+    }    
+
+
+CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog()
+    {
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - START - iForcedCancel: %d", iForcedCancel );
+#endif
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - deleting operation...: 0x%08x", iOperation );
+#endif
+    delete iOperation;
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - deleting dialog...: 0x%08x", iProgressDialog );
+#endif
+    iProgressInfo = NULL;
+    delete iProgressDialog;
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - sending EDialogDismissed to observer..." );
+#endif
+
+    //iObserver.DWOperationCompleted(); //TODO
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - END" );
+#endif
+    }
+
+
+//void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
+void CMemSpyDeviceWideOperationDialog::ExecuteL( TDeviceWideOperation aOp )
+    {
+	/*
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - START" );
+#endif
+
+    iOperation = CMemSpyDeviceWideOperations::NewL( iEngine, *this, aOperation );
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - constructed operation..." );
+#endif
+
+    ASSERT( iProgressDialog == NULL );
+    iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
+    iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
+    iProgressDialog->SetCallback( this );
+    iProgressDialog->SetGloballyCapturing( ETrue );
+    //
+    iProgressInfo = iProgressDialog->GetProgressInfoL();
+    iProgressInfo->SetFinalValue( iOperation->TotalOperationSize() );
+    //
+    iProgressDialog->RunLD();
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - END" );
+#endif
+	*/
+    }
+
+void CMemSpyDeviceWideOperationDialog::ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp )
+    {
+    //CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession, aObserver );
+	CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession );
+    CleanupStack::PushL( self );
+    self->ExecuteL( aOp );
+    CleanupStack::PopAndDestroy( self );
+    }
+
+
+void CMemSpyDeviceWideOperationDialog::Cancel()
+    {
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - START - iOperation: 0x%08x, iForcedCancel: %d", iOperation, iForcedCancel );
+#endif
+
+    iForcedCancel = ETrue;
+    //
+    if  ( iOperation )
+        {
+        iOperation->Cancel();
+        }
+    //
+    //iObserver.DWOperationCancelled();
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - END" );
+#endif
+    }
+
+
+void CMemSpyDeviceWideOperationDialog::DialogDismissedL( TInt aButtonId )
+    {
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::DialogDismissedL() - START - aButtonId: %d, iForcedCancel: %d", aButtonId, iForcedCancel );
+#else
+    (void) aButtonId;
+#endif
+
+    Cancel();
+
+#ifdef _DEBUG
+    RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::DialogDismissedL() - END - aButtonId: %d, iForcedCancel: %d", aButtonId, iForcedCancel );
+#endif
+    }
+
+
+void CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent( TEvent aEvent, TInt aParam1, const TDesC& aParam2 )
+    {
+#ifdef _DEBUG
+    RDebug::Print( _L("[MemSpy] CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent() - START - aEvent: %d, iProgressDialog: 0x%08x, aParam1: %d, aParam2: %S"), aEvent, iProgressDialog, aParam1, &aParam2 );
+#endif
+
+    switch( aEvent )
+        {
+    case MMemSpyDeviceWideOperationsObserver::EOperationSized:
+        break;
+    case MMemSpyDeviceWideOperationsObserver::EOperationStarting:
+        //iObserver.DWOperationStarted();
+        break;
+    case MMemSpyDeviceWideOperationsObserver::EOperationProgressStart:
+        ASSERT( iProgressDialog != NULL );
+        SetDialogCaptionL( aParam2 );
+        break;
+    case MMemSpyDeviceWideOperationsObserver::EOperationProgressEnd:
+        ASSERT( iProgressDialog != NULL );
+        iProgressInfo->IncrementAndDraw( aParam1 );
+        break;
+    case MMemSpyDeviceWideOperationsObserver::EOperationCancelled:
+        break;
+    case MMemSpyDeviceWideOperationsObserver::EOperationCompleting:
+        {
+        ASSERT( iProgressDialog != NULL );
+        const TInt finalValue = iProgressInfo->Info().iFinalValue;
+        iProgressInfo->SetAndDraw( finalValue );
+        break;
+        }
+    case MMemSpyDeviceWideOperationsObserver::EOperationCompleted:
+        if  ( iProgressDialog )
+            {
+            iProgressDialog->ProcessFinishedL();
+            }
+        break;
+    default:
+        break;
+        }
+
+#ifdef _DEBUG
+    RDebug::Print( _L("[MemSpy] CMemSpyDeviceWideOperationDialog::HandleDeviceWideOperationEvent() - END - aEvent: %d, aParam1: %d, aParam2: %S"), aEvent, aParam1, &aParam2 );
+#endif
+    }
+
+
+void CMemSpyDeviceWideOperationDialog::SetDialogCaptionL( const TDesC& aText )
+    {
+    if  ( aText.Length() )
+        {
+        iProgressDialog->SetTextL( aText );
+        iProgressDialog->DrawNow();
+        }
+    }
+
+CMemSpyDwoTracker* CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp )
+{
+	return new CMemSpyDwoTracker( aSession, aOp );
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyDwoProgressTracker::CMemSpyDwoProgressTracker(RMemSpySession &aSession) 
+	: CActive( EPriorityStandard ), iSession( aSession )
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CMemSpyDwoProgressTracker::~CMemSpyDwoProgressTracker()
+	{
+	Cancel();	
+	}
+
+void CMemSpyDwoProgressTracker::Start()
+	{
+	ASSERT( iProgressDialog == NULL );
+	iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
+	iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
+	iProgressDialog->SetCallback( this );
+	iProgressDialog->SetGloballyCapturing( ETrue );
+	iProgressInfo = iProgressDialog->GetProgressInfoL();	
+	
+	iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );
+	
+	UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );
+	
+	SetActive();
+	
+	iProgressDialog->RunLD();
+	}
+
+void CMemSpyDwoProgressTracker::Cancel()
+	{	
+	}
+
+void CMemSpyDwoProgressTracker::RunL()
+    { 		
+    // If an error occurred handle it in RunError().
+    User::LeaveIfError(iStatus.Int());
+ 
+    // Resubmit the request immediately    
+    iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );     
+    
+    SetActive();            
+    
+    UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );    
+    }
+ 
+void CMemSpyDwoProgressTracker::DoCancel()
+	{ 	
+	}
+ 
+TInt CMemSpyDwoProgressTracker::RunError(TInt aError)
+	{ 
+	// KErrNotReady and KErrCancel errors are OK, they just notify 
+	// us about the outstanding notification request that won't be 
+	// processed.		
+    return KErrNone;
+	}
+
+void CMemSpyDwoProgressTracker::UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText )
+	{
+	if(iProgressDialog)
+		{
+		iProgressDialog->SetTextL( aProgressText );
+	    }
+	 
+	if(iProgressInfo)
+		{
+	    iProgressInfo->SetAndDraw( aProgress );	
+		}
+	}
+
+void CMemSpyDwoProgressTracker::DialogDismissedL(TInt aButtonId)
+	{
+	iProgressDialog = NULL;
+	iProgressInfo = NULL;	
+	 
+	Cancel();
+	}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyDwoTracker::CMemSpyDwoTracker( RMemSpySession &aSession, TDeviceWideOperation aOperation )
+:	CActive( EPriorityStandard ), 
+	iSession( aSession ),
+	iProgressTracker(new CMemSpyDwoProgressTracker( aSession )),
+	iOperation( aOperation )
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CMemSpyDwoTracker::~CMemSpyDwoTracker()
+	{		
+	Cancel();
+	
+	delete iProgressTracker;
+	}
+
+void CMemSpyDwoTracker::Start()
+{	
+	void (RMemSpySession::*functions[])(TRequestStatus&) = { 
+		&RMemSpySession::OutputPhoneInfo,
+		&RMemSpySession::OutputDetailedPhoneInfo,
+		&RMemSpySession::OutputHeapInfo,
+		&RMemSpySession::OutputCompactHeapInfo,
+		&RMemSpySession::OutputHeapCellListing,
+		&RMemSpySession::OutputHeapData,
+		&RMemSpySession::OutputStackInfo,
+		&RMemSpySession::OutputCompactStackInfo,
+		&RMemSpySession::OutputUserStackData,
+		&RMemSpySession::OutputKernelStackData };
+		
+	(iSession.*functions[iOperation])(iStatus);			
+	
+	SetActive();
+	
+	iProgressTracker->Start();				
+}
+
+void CMemSpyDwoTracker::Cancel()
+{
+}
+ 
+void CMemSpyDwoTracker::RunL()
+    { 
+    // If an error occurred handle it in RunError().
+    User::LeaveIfError(iStatus.Int());
+ 
+    if( !IsActive() )
+    	{
+		iProgressTracker->ProgressDialog()->ProcessFinishedL();
+    	}
+    }
+ 
+void CMemSpyDwoTracker::DoCancel()
+{ 
+	// Cancel progress tracker
+	iProgressTracker->Cancel();
+	
+	iSession.CancelDeviceWideOperationL();	
+}
+ 
+TInt CMemSpyDwoTracker::RunError(TInt aError)
+{ 
+	// Emit the finished(false) signal to notify user 
+	// operation was canceled
+	//emit finished(false); //TODO:
+	
+    return KErrNone;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyDocument.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* 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 "MemSpyDocument.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+
+// User includes
+#include "MemSpyAppUi.h"
+#include "MemSpySettings.h"
+
+//cigasto
+#include <memspysession.h>
+
+
+CMemSpyDocument::CMemSpyDocument(CEikApplication& aApp)
+:   CAknDocument(aApp)    
+    {
+    }
+
+
+CMemSpyDocument::~CMemSpyDocument()
+    {
+    delete iSettings;
+    iMemSpySession->Close();    
+    }
+
+
+void CMemSpyDocument::ConstructL()
+    {
+    RFs& fsSession = CCoeEnv::Static()->FsSession();
+    //cigasto
+    //iEngine = CMemSpyEngine::NewL( fsSession );
+    
+    iMemSpySession = new (ELeave) RMemSpySession();
+    //RMemSpySession iMemSpySession;
+	TInt error = iMemSpySession->Connect();	
+	if(error != KErrNotFound)
+		{
+		User::LeaveIfError( error );
+		}		
+    
+    //iSettings = CMemSpySettings::NewL( fsSession, *iEngine );
+	iSettings = CMemSpySettings::NewL( fsSession, *iMemSpySession );
+    }
+
+
+CMemSpyDocument* CMemSpyDocument::NewL(CEikApplication& aApp)
+    {
+    CMemSpyDocument* self = new (ELeave) CMemSpyDocument( aApp );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+/*
+CMemSpyEngine& CMemSpyDocument::Engine()
+    {
+    return *iEngine;
+    }
+
+
+const CMemSpyEngine& CMemSpyDocument::Engine() const
+    {
+    return *iEngine;
+    }
+*/
+
+CMemSpySettings& CMemSpyDocument::Settings()
+    {
+    return *iSettings;
+    }
+
+
+const CMemSpySettings& CMemSpyDocument::Settings() const
+    {
+    return *iSettings;
+    }
+
+
+CEikAppUi* CMemSpyDocument::CreateAppUiL()
+    {
+    //return new (ELeave) CMemSpyAppUi( *iEngine );
+	return new (ELeave) CMemSpyAppUi( *iMemSpySession );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyExportBitmapsToMemoryCardDialog.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,328 @@
+/*
+* 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 "MemSpyExportBitmapsToMemoryCardDialog.h"
+
+// System includes
+#include <eikprogi.h>
+#include <AknWaitDialog.h>
+#include <AknQueryDialog.h>
+#include <coemain.h>
+#include <eikenv.h>
+#include <avkon.hrh>
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyenginehelperchunk.h>
+#include <memspy/engine/memspyenginehelpercodesegment.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspy/engine/memspyenginehelperstack.h>
+#include <memspy/engine/memspyenginehelperthread.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperfbserv.h>
+
+// Driver includes
+#include <memspy/driver/memspydriverenumerationsshared.h>
+
+// Literal constants
+_LIT( KMemSpyBitmapExportFolderAndFileName, "e:\\MemSpy\\Images\\%04d%02d%02d_%02d.%02d.%02d\\");
+
+
+CMemSpyExportBitmapsToMemoryCardDialog::CMemSpyExportBitmapsToMemoryCardDialog( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps )
+:   CActive(EPriorityIdle), iFsSession(aFsSession), iBitmaps(aBitmaps)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+
+CMemSpyExportBitmapsToMemoryCardDialog::~CMemSpyExportBitmapsToMemoryCardDialog()
+    {
+    Cancel();
+    //
+    delete iProgressDialog;
+    //
+    iMimeTypeArray.ResetAndDestroy();
+    iMimeTypeArray.Close();
+    //
+    if ( iEncoder )
+        {
+        iEncoder->Cancel();
+        }
+    delete iEncoder;
+    delete iFolderName;
+    delete iBmpMimeType;
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::ConstructL()
+    {
+    // Check card is ready
+    if  ( CheckMemoryCardAvailableL( iFsSession ) == EFalse )
+        {
+        User::Leave( KErrNotReady );
+        }
+
+    // Get mime type for BMP file
+    IdentifyBmpMimeTypeL();
+
+    // Prepare unique empty folder
+    PrepareFolderNameSpecL();
+
+    // Prepare UI stuff
+    iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ) );
+    iProgressDialog->SetCallback( this );
+    iProgressDialog->SetGloballyCapturing( ETrue );
+    iProgressDialog->PrepareLC( R_MEMSPY_EXPORT_TO_MEMORYCARD_DIALOG );
+    //
+    iProgressInfo = iProgressDialog->GetProgressInfoL( );
+    iProgressInfo->SetFinalValue( iBitmaps.Count() );
+    //
+    iProgressDialog->MakeVisible( ETrue ); // Visible right away
+    //
+    iDialogDismissed = EFalse;
+    iProgressInfo->SetAndDraw( 0 );
+
+    // Start the process rolling...
+    CompleteSelf(KErrNone);
+
+    //
+    iProgressDialog->RunLD( );
+    }
+
+
+CMemSpyExportBitmapsToMemoryCardDialog* CMemSpyExportBitmapsToMemoryCardDialog::NewL( RFs& aFsSession, const CMemSpyEngineFbServBitmapArray& aBitmaps )
+    {
+    CMemSpyExportBitmapsToMemoryCardDialog* self = new(ELeave) CMemSpyExportBitmapsToMemoryCardDialog( aFsSession, aBitmaps );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::Cancel()
+    {
+    CActive::Cancel();
+    }
+
+
+TBool CMemSpyExportBitmapsToMemoryCardDialog::CheckMemoryCardAvailableL( RFs& aFsSession )
+    {
+    TBool available = EFalse;
+    //
+    TDriveInfo driveInfo;
+    if  ( aFsSession.Drive( driveInfo, EDriveE ) == KErrNone )
+        {
+        // Other checks needed?
+        available = ETrue;
+        }
+    //
+    return available;
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::RunL()
+    {
+    const TInt error = iStatus.Int();
+    User::LeaveIfError( error );
+ 
+    if  ( !iDialogDismissed )
+        {
+        // Do we have more items to process?
+        if  ( TryToExportSingleBitmapL() )
+            {
+            _LIT(KTextFormat, "Saving image\n%d/%d");
+            TBuf<128> buf;
+            buf.Format( KTextFormat, iBitmapIndex, iBitmaps.Count() );
+            //
+            iProgressDialog->SetTextL( buf );
+            iProgressInfo->SetAndDraw( iBitmapIndex );
+            iProgressDialog->DrawDeferred();
+            }
+        else
+            {
+            // We're done - RunL will not be called again
+            if  (iProgressInfo)
+                {
+                const TInt finalValue = iProgressInfo->Info().iFinalValue;
+                iProgressInfo->SetAndDraw( finalValue );
+                //
+                delete iProgressDialog;
+                iProgressDialog = NULL;
+                //
+                delete this;
+                }
+            }
+
+        User::ResetInactivityTime();
+        }
+    else
+        {
+        delete iProgressDialog;
+        iProgressDialog = NULL;
+        //
+        delete this;
+        }
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::DoCancel()
+    {
+    if  ( iEncoder )
+        {
+        iEncoder->Cancel();
+        }
+
+    iDialogDismissed = ETrue;
+    }
+
+
+TInt CMemSpyExportBitmapsToMemoryCardDialog::RunError( TInt /*aError*/ )
+    {
+    TRAP_IGNORE(
+
+        // Try the next image
+        if  ( TryToExportSingleBitmapL() == EFalse )
+            {
+            iDialogDismissed = ETrue;
+            delete this;
+            }
+    );
+    //
+    return KErrNone;
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::DialogDismissedL( TInt /*aButtonId*/ )
+    {
+    iDialogDismissed = ETrue;
+    iProgressDialog = NULL;
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::CompleteSelf( TInt aError )
+    {
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete( status, aError );
+    SetActive();
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::ExportBitmapL( const CMemSpyEngineFbServBitmap& aBitmap )
+    {
+    // Create a filename
+    TFileName fileName( *iFolderName );
+    aBitmap.GetExportableFileNameL( fileName );
+
+    // Create encoder object...
+    CImageEncoder* encoder = CImageEncoder::FileNewL( iFsSession, fileName, *iBmpMimeType );
+    delete iEncoder;
+    iEncoder = encoder;
+
+    // Start operation
+    iEncoder->Convert( &iStatus, aBitmap.Bitmap() );
+    SetActive();
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::IdentifyBmpMimeTypeL()
+    {
+    _LIT(KBmpExtension, ".bmp");
+    CImageEncoder::GetFileTypesL( iMimeTypeArray );
+    //
+    const TInt count = iMimeTypeArray.Count();
+    //
+    for( TInt i=0; i<count; i++ )
+        {
+        CFileExtensionMIMEType* extension = iMimeTypeArray[ i ];
+        if  ( extension->FileExtension().FindF( KBmpExtension ) >= 0 )
+            {
+            // Found it - save mime type info
+            iBmpMimeType = extension->MIMEType().AllocL();
+            iMimeTypeArray.ResetAndDestroy();
+            iMimeTypeArray.Close();
+            return;
+            }
+        }
+    //
+    User::Leave( KErrNotFound );    
+    }
+
+
+void CMemSpyExportBitmapsToMemoryCardDialog::PrepareFolderNameSpecL()
+    {
+    delete iFolderName;
+    iFolderName = NULL;
+    
+    // Make a unique filename format specifier.
+    TTime now;
+    now.HomeTime();
+    const TDateTime dt( now.DateTime() );
+
+    // Build it up...
+    iFolderName = HBufC::NewL( KMaxFileName );
+    TPtr pName( iFolderName->Des() );
+    pName.Format( KMemSpyBitmapExportFolderAndFileName, dt.Year(), dt.Month()+1, dt.Day()+1, dt.Hour(), dt.Minute(), dt.Second());
+    
+    // Create directory
+    const TInt error = iFsSession.MkDirAll( pName );
+    User::LeaveIfError( error );
+    }
+
+
+TBool CMemSpyExportBitmapsToMemoryCardDialog::TryToExportSingleBitmapL()
+    {
+    TBool startedExport = EFalse;
+    
+    const TInt count = iBitmaps.Count();
+    for( ; ( iBitmapIndex < count ) && ( startedExport == EFalse ); iBitmapIndex++ )
+        {
+        const CMemSpyEngineFbServBitmap& memSpyBitmap = iBitmaps.At( iBitmapIndex );
+        const CFbsBitmap& fbsBitmap = memSpyBitmap.Bitmap();
+        const TSize size( fbsBitmap.SizeInPixels() );
+
+        // We don't want to export bitmaps which have a zero-pixel dimension.
+        if  ( size.iHeight > 0 && size.iWidth > 0 )
+            {
+            // This completes the object's request status and will therefore
+            // result in a further call to RunL() when the export to BMP
+            // is completed.
+            ExportBitmapL( memSpyBitmap );
+
+            // And indicate we managed to start an operation...
+            startedExport = ETrue;
+            }
+        }
+    //
+    return startedExport;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpySettings.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,300 @@
+/*
+* 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 "MemSpySettings.h"
+
+// System includes
+#include <e32svr.h>
+#include <s32file.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyenginelogger.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelpersysmemtracker.h>
+
+#include <memspysession.h>
+
+// Constants
+_LIT( KMemSpySettingsFileName, "settings.dat" ); //file or avkon client settings
+
+// Version 03 dumped some of the system wide memory tracker settings
+const TInt KMemSpySettingsFileFormatVersion = 6;
+
+CMemSpySettings::CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession )
+:   iFsSession( aFsSession ), iMemSpySession( aSession )
+    {	
+    }
+
+
+CMemSpySettings::~CMemSpySettings()
+    {	
+    TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - START" ) );
+    TRAP_IGNORE( StoreSettingsL() );
+    TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - END" ) );    	
+    }
+
+
+void CMemSpySettings::ConstructL()
+    {	
+    TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - START") ) );
+
+    TRAP_IGNORE( RestoreSettingsL() );
+
+    TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - END") ) );    
+    }
+
+CMemSpySettings* CMemSpySettings::NewL( RFs& aFsSession, RMemSpySession& aSession )
+    {
+    CMemSpySettings* self = new(ELeave) CMemSpySettings( aFsSession, aSession );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+void CMemSpySettings::GetSettingsFileNameL( TDes& aFileName )
+    {
+    GetSettingsPathL( aFileName );
+    aFileName.Append( KMemSpySettingsFileName );
+    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsFileNameL() - aFileName: %S"), &aFileName ) );
+    }
+
+
+void CMemSpySettings::GetSettingsPathL( TDes& aPath )
+    {
+    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - START") ) );
+    aPath.Zero();
+
+    // Get private data cage path
+    TInt err = iFsSession.PrivatePath( aPath );
+    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - priv path err: %d"), err ) );
+    User::LeaveIfError( err );
+
+    // Combine with C: drive
+    const TDriveUnit cDrive( EDriveC );
+    const TDriveName cDriveName( cDrive.Name() );
+    aPath.Insert( 0, cDriveName );
+
+    iFsSession.MkDirAll( aPath );
+    TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsPathL() - END - %S"), &aPath ) );
+    }
+
+RFile CMemSpySettings::SettingsFileLC( TBool aReplace )
+    {
+    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - START - aReplace: %d"), aReplace ) );
+
+    TFileName* fileName = new(ELeave) TFileName();
+    CleanupStack::PushL( fileName );
+    GetSettingsFileNameL( *fileName );
+    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - fileName: %S"), fileName ) );
+
+    RFile file;
+    TInt error = KErrNone;
+    //
+    if  ( aReplace )
+        {
+        error = file.Replace( iFsSession, *fileName, EFileWrite );
+        TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - replace err: %d"), error ) );
+        }
+    else
+        {
+        error = file.Open( iFsSession, *fileName, EFileWrite );
+        TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - open err: %d"), error ) );
+        //
+        if  ( error == KErrNotFound )
+            {
+            error = file.Create( iFsSession, *fileName, EFileWrite );
+            }
+        }
+    //
+    User::LeaveIfError( error );
+    CleanupStack::PopAndDestroy( fileName );
+    CleanupClosePushL( file );
+    //
+    TRACE( RDebug::Print( _L("CMemSpySettings::SettingsFileLC() - END") ) );
+    return file;
+    }
+
+
+void CMemSpySettings::StoreSettingsL()
+    {
+    TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - START" ) );
+
+    RFile file = SettingsFileLC( ETrue );
+    RFileWriteStream stream( file );
+    CleanupStack::Pop(); // file
+    CleanupClosePushL( stream );
+    
+    // Verion info
+    stream.WriteInt32L( KMemSpySettingsFileFormatVersion );
+    
+    stream.WriteUint8L( iSinkType );
+    
+    
+    // Get SWMT config
+    //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
+    //TMemSpyEngineHelperSysMemTrackerConfig swmtConfig;
+    //swmt.GetConfig( swmtConfig );
+
+    // Write SWMT settings
+    //stream.WriteInt32L( swmtConfig.TimerPeriod().Int() );
+    //stream.WriteUint8L( swmtConfig.DumpData() );
+    
+    stream.WriteInt32L( iSwmtConfig.TimerPeriod().Int() );
+    stream.WriteUint8L( iSwmtConfig.DumpData() );
+    
+    // Write memory tracking auto-start process list
+    /*
+    const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList();
+    stream.WriteInt32L( processUidList.Count() );
+    for( TInt i=0; i<processUidList.Count(); i++ )
+        {
+        const TUid uid = processUidList[ i ];
+        TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) );
+        stream << uid;
+        }
+    */    
+    stream.WriteInt32L( iUidList.Count() );
+    for( TInt i = 0; i < iUidList.Count(); i++ )
+    	{
+		const TUid uid = iUidList[ i ];
+		TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) );
+		stream << uid;
+    	}
+    
+    // Write memory tracking categories
+    //stream.WriteInt32L( swmtConfig.iEnabledCategories );
+    stream.WriteInt32L( iSwmtConfig.iEnabledCategories );
+    
+    // Write heap tracking thread name filter
+    //stream.WriteInt32L( swmtConfig.iThreadNameFilter.Length() );
+    stream.WriteInt32L( iSwmtConfig.iThreadNameFilter.Length() );
+    
+    /*
+    if ( swmtConfig.iThreadNameFilter.Length() > 0 )
+        {
+        stream.WriteL( swmtConfig.iThreadNameFilter, swmtConfig.iThreadNameFilter.Length() );
+        }
+    
+    // Write mode
+    stream.WriteInt32L( swmtConfig.iMode );
+    */
+    if ( iSwmtConfig.iThreadNameFilter.Length() > 0 )
+    	{
+		stream.WriteL( iSwmtConfig.iThreadNameFilter, iSwmtConfig.iThreadNameFilter.Length() );
+    	}
+        
+    // Write mode
+    stream.WriteInt32L( iSwmtConfig.iMode );
+    
+    stream.CommitL();
+    CleanupStack::PopAndDestroy( &stream ); // Closes file    
+    }
+
+void CMemSpySettings::RestoreSettingsL()
+    {  
+    RFile file = SettingsFileLC();
+    RFileReadStream stream( file );
+    CleanupStack::Pop(); // file
+    CleanupClosePushL( stream ); 
+    
+    // Version info
+    const TInt version = stream.ReadInt32L(); // discarded for now
+    TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) );
+
+    // Engine settings
+    TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() );
+    TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) );
+       
+    //iEngine.InstallSinkL( type );
+    //iMemSpySession.SwitchOutputSink( type ); //TODO: to argue to set stuf in engine from here
+    
+    // Set SWMT config
+    TMemSpyEngineHelperSysMemTrackerConfig swmtConfig;
+    swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); 
+    swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() );
+
+    if  ( version < 3 )
+        {
+        // Restore but ignore old delta tracker settings which aren't used anymore
+        //
+        static_cast< TBool >( stream.ReadUint8L() );
+        static_cast< TBool >( stream.ReadUint8L() );
+        static_cast< TBool >( stream.ReadUint8L() );
+        }
+    
+    // Restore memory tracking auto-start process uids if file format supports it...
+    if ( version >= 2 )
+        {
+        RArray<TUid> list;		
+        CleanupClosePushL( list );
+        //
+        const TInt count = stream.ReadInt32L();
+        
+        //CArrayFixFlat<TUid>* list = new(ELeave)CArrayFixFlat<TUid>(count);
+        //CleanupStack::PushL(list );               
+        
+        for( TInt i=0; i<count; i++ )
+            {
+            TUid processUid;
+            stream >> processUid;
+            //           
+            User::LeaveIfError( list.Append( processUid ) );            
+            //list->AppendL( processUid );
+            }
+        //
+        //CMemSpyEngineHelperProcess& processHelper = iEngine.HelperProcess();
+        //processHelper.SetMemoryTrackingAutoStartProcessListL( list );        
+        //iMemSpySession.SetSwmtAutoStartProcessList( list );
+        iUidList = list; 	//TODO: to get it into the engine
+        
+        CleanupStack::PopAndDestroy( &list );
+        }
+    
+    // Restore memory tracking categories 
+    if ( version > 3 )
+        {
+        swmtConfig.iEnabledCategories = stream.ReadInt32L();
+        }
+    
+    // Write heap tracking thread name filter 
+    if ( version > 4 )
+        {
+        TInt len = stream.ReadInt32L();
+        if ( len > 0 )
+            {
+            stream.ReadL( swmtConfig.iThreadNameFilter, len );
+            }
+        }
+
+    // Write mode
+    if ( version > 5 )
+        {
+        swmtConfig.iMode = (TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode)stream.ReadInt32L();
+        }
+    
+    //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker();
+    //swmt.SetConfigL( swmtConfig );
+    //iMemSpySession.SetSwmtConfig( swmtConfig );
+    
+    iSwmtConfig = swmtConfig; 	//TODO: to get it into the engine
+    
+    CleanupStack::PopAndDestroy( &stream ); // Closes file    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyUiUtils.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,367 @@
+/*
+* 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 "MemSpyUiUtils.h"
+
+// System includes
+#include <coemain.h>
+#include <memspyui.rsg>
+
+
+
+
+void MemSpyUiUtils::Format( TDes& aBuf, TInt aResourceId, ...)
+    {
+	VA_LIST list;
+    VA_START(list,aResourceId);
+	TBuf<128> format;
+	CCoeEnv::Static()->ReadResource( format, aResourceId );
+	aBuf.FormatList( format, list );
+    }
+
+
+void MemSpyUiUtils::GetErrorText( TDes& aBuf, TInt aError )
+    {
+    if  ( aError == KErrNotSupported )
+        {
+        _LIT( KMemSpyErrorText, "Not Supported" );
+        aBuf = KMemSpyErrorText;
+        }
+    else if ( aError == KErrNotReady )
+        {
+        _LIT( KMemSpyErrorText, "Not Ready" );
+        aBuf = KMemSpyErrorText;
+        }
+    else if ( aError == KErrNotFound )
+        {
+        _LIT( KMemSpyErrorText, "Missing" );
+        aBuf = KMemSpyErrorText;
+        }
+    else if ( aError == KErrGeneral )
+        {
+        _LIT( KMemSpyErrorText, "General Error" );
+        aBuf = KMemSpyErrorText;
+        }
+    else
+        {
+        _LIT( KMemSpyItemValueError, "Error: %d" );
+        aBuf.Format( KMemSpyItemValueError, aError );
+        }
+    }
+
+HBufC* MemSpyUiUtils::FormatItem( const TDesC& aCaption )
+	{
+	HBufC* retBuf = HBufC::NewL( 32 );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	return retBuf;
+	}
+
+TDesC& MemSpyUiUtils::ThreadInfoItemNameByType( TMemSpyThreadInfoItemType aType )
+	{	
+	TPtrC pType( KTypeUnknown );
+	
+	switch( aType )
+		{
+		case EMemSpyThreadInfoItemTypeFirst:			
+			pType.Set(KGeneral);
+			break;			
+		case EMemSpyThreadInfoItemTypeHeap:			
+			pType.Set(KHeap);
+			break;				
+		case EMemSpyThreadInfoItemTypeStack:			
+			pType.Set(KStack);
+			break;			
+		case EMemSpyThreadInfoItemTypeChunk:			
+			pType.Set(KChunks);
+			break;
+		case EMemSpyThreadInfoItemTypeCodeSeg:
+			pType.Set(KCodeSegs);
+			break;
+		case EMemSpyThreadInfoItemTypeOpenFiles:
+			pType.Set(KOpenFiles);
+			break;	
+		case EMemSpyThreadInfoItemTypeActiveObject:
+			pType.Set(KActiveObjects);
+			break;
+		case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
+			pType.Set(KThreadHandlers);
+			break;
+		case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
+			pType.Set(KProcessHandlers);
+			break;
+		case EMemSpyThreadInfoItemTypeServer:
+			pType.Set(KServers);
+			break;
+		case EMemSpyThreadInfoItemTypeSession:
+			pType.Set(KConnections);
+			break;
+		case EMemSpyThreadInfoItemTypeSemaphore:
+			pType.Set(KSemaphores);
+			break;
+		case EMemSpyThreadInfoItemTypeOtherThreads:
+			pType.Set(KThreadReferences);
+			break;
+		case EMemSpyThreadInfoItemTypeOtherProcesses:
+			pType.Set(KProcessReferences);
+			break;
+		case EMemSpyThreadInfoItemTypeMutex:
+			pType.Set(KMutexes);
+			break;
+		case EMemSpyThreadInfoItemTypeTimer:
+			pType.Set(KTimers);					
+			break;
+		case EMemSpyThreadInfoItemTypeLogicalChannel:
+			pType.Set(KDD);
+			break;
+		case EMemSpyThreadInfoItemTypeChangeNotifier:
+			pType.Set(KChangeNotif);
+			break;
+		case EMemSpyThreadInfoItemTypeUndertaker:
+			pType.Set(KUndertakers);
+			break;				
+		case EMemSpyThreadInfoItemTypeLDD:
+			pType.Set(KLogicalDrivers);
+			break;
+		case EMemSpyThreadInfoItemTypePDD:
+			pType.Set(KPhysicalDrivers);
+			break;
+			
+	    default:	       
+	    	break;  
+		}
+	return pType;
+	}
+
+
+void MemSpyUiUtils::AppendPriority( TDes& aDes, TProcessPriority aPriority )
+	{
+	switch( aPriority )
+		{
+	    case EPriorityLow:
+	        aDes += _L("[L]");
+	        break;
+	    case EPriorityBackground:
+	        aDes += _L("[B]");
+	        break;
+	    case EPriorityForeground:
+	        aDes += _L("[F]");
+	        break;
+	    case EPriorityHigh:
+	        aDes += _L("[H]");
+	        break;
+	    case EPriorityWindowServer:
+	        aDes += _L("[WS]");
+	        break;
+	    case EPriorityFileServer:
+	        aDes += _L("[FS]");
+	        break;
+	    case EPriorityRealTimeServer:
+	        aDes += _L("[RTS]");
+	        break;
+	    case EPrioritySupervisor:
+	        aDes += _L("[SUP]");
+	        break;
+	    default:
+	        aDes += _L("[?]");
+	        break;
+		}
+	}
+
+void MemSpyUiUtils::AppendExitInfo( TDes& aDes, TExitType aType, TInt aExitReason, const TDesC& aExitCategory  )
+	{
+    aDes.Append( '[' );
+    const TInt length = aDes.Length();
+    AppendExitType( aDes, aType );
+    aDes.SetLength( length + 1 ); // Remove all but the first letter
+    aDes.Append( ']' );
+    
+    if  ( aType == EExitKill || aType == EExitPending )
+        {
+        // Kill implies "clean" exit. Pending implies not yet dead.
+        }
+    else
+        {
+        TMemSpyTruncateOverflow overflow;
+
+        // Terminate or Panic implies abnormal exit condition, so
+        // show full exit info.
+        _LIT( KAbnormalFormatSpec, " %S-%d" );
+        aDes.AppendFormat( KAbnormalFormatSpec, &overflow, &aExitCategory, aExitReason );
+        }
+	}
+
+
+void MemSpyUiUtils::AppendExitType( TDes& aDes, TExitType aType )
+    {
+    _LIT( KExitTypeKilled, "Killed" );
+    _LIT( KExitTypeTerminated, "Terminated" );
+    _LIT( KExitTypePanicked, "Panicked" );
+    _LIT( KExitTypePending, "Pending" );
+    
+    // Panic and Terminate are exceptional exit conditions.
+    // Kill, is ironically, not an exceptional condition.
+    switch( aType )
+        {
+    case EExitKill:
+        aDes += KExitTypeKilled;
+        break;
+    case EExitTerminate:
+        aDes += KExitTypeTerminated;
+        break;
+    case EExitPanic:
+        aDes += KExitTypePanicked;
+        break;
+    default:
+    case EExitPending:
+        aDes += KExitTypePending;
+        break;
+        }
+    }
+
+
+TPtrC MemSpyUiUtils::TypeAsString( TMemSpyDriverContainerType aType )
+    {     
+    TPtrC pType( KTypeUnknown );
+    //
+    switch( aType )
+        {
+    case EMemSpyDriverContainerTypeThread:
+        pType.Set( KTypeThread );
+        break;
+    case EMemSpyDriverContainerTypeProcess:
+        pType.Set( KTypeProcess );
+        break;
+    case EMemSpyDriverContainerTypeChunk:
+        pType.Set( KTypeChunk );
+        break;
+    case EMemSpyDriverContainerTypeLibrary:
+        pType.Set( KTypeLibrary );
+        break;
+    case EMemSpyDriverContainerTypeSemaphore:
+        pType.Set( KTypeSemaphore );
+        break;
+    case EMemSpyDriverContainerTypeMutex:
+        pType.Set( KTypeMutex );
+        break;
+    case EMemSpyDriverContainerTypeTimer:
+        pType.Set( KTypeTimer );
+        break;
+    case EMemSpyDriverContainerTypeServer:
+        pType.Set( KTypeServer );
+        break;
+    case EMemSpyDriverContainerTypeSession:
+        pType.Set( KTypeSession );
+        break;
+    case EMemSpyDriverContainerTypeLogicalDevice:
+        pType.Set( KTypeLogicalDevice );
+        break;
+    case EMemSpyDriverContainerTypePhysicalDevice:
+        pType.Set( KTypePhysicalDevice );
+        break;
+    case EMemSpyDriverContainerTypeLogicalChannel:
+        pType.Set( KTypeLogicalChannel );
+        break;
+    case EMemSpyDriverContainerTypeChangeNotifier:
+        pType.Set( KTypeChangeNotifier );
+        break;
+    case EMemSpyDriverContainerTypeUndertaker:
+        pType.Set( KTypeUndertaker );
+        break;
+    case EMemSpyDriverContainerTypeMsgQueue:
+        pType.Set( KTypeMsgQueue );
+        break;
+    case EMemSpyDriverContainerTypePropertyRef:
+        pType.Set( KTypePropertyRef );
+        break;
+    case EMemSpyDriverContainerTypeCondVar:
+        pType.Set( KTypeCondVar );
+        break;
+        
+    default:
+        break;
+        }
+    //
+    return pType;
+    }
+
+TMemSpySizeText MemSpyUiUtils::FormatSizeText( const TInt64& aValue, TInt aDecimalPlaces, TBool aExtraRounding )
+    {
+    _LIT(KFormatKilo, "%dK");
+    _LIT(KFormatMega, "%SM");
+    _LIT(KFormatGiga, "%SG");
+
+	TMemSpySizeText buf;
+	if  ( aValue < 1024000 )					// If < 1000K
+		{
+		TInt sizeInK = 0;
+
+        if  ( aValue != 0 )
+			{
+			sizeInK = I64INT( (aValue + 512) >> 10 );
+			if  (sizeInK < 1)
+                {
+				sizeInK = 1;
+                }
+			if  (sizeInK > 999)
+                {
+				sizeInK = 999;
+                }
+			}
+
+        buf.Format( KFormatKilo, sizeInK );
+		}
+	else
+		{
+		TReal sizeInM = I64INT( aValue );
+		sizeInM /= 1048576;
+		if  ( sizeInM < 1 )
+            {
+			sizeInM = 1;
+            }
+
+        TPtrC pFormat( KFormatMega );
+		if  ( sizeInM >= 1000 )
+			{
+			sizeInM /= 1024;				// Size in G
+			if  (sizeInM < 1)
+                {
+				sizeInM = 1;
+                }
+			
+            pFormat.Set( KFormatGiga );
+			}
+
+        if  ( sizeInM > 999.9)
+            {
+            sizeInM = 999.9;
+            }
+
+        if  ( aExtraRounding )
+            {
+			sizeInM += 0.499999;
+            }
+
+		TBuf<16> size;
+		size.Num( sizeInM, TRealFormat( 14, aDecimalPlaces ) );	// Allow for "17179869184.0"G which is 2^64
+        buf.Format( pFormat, &size );
+		}
+
+    return buf;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewBase.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,422 @@
+/*
+* 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 "MemSpyViewBase.h"
+
+// System includes
+#include <eikrted.h>  // for example label control
+#include <txtrich.h>
+#include <apgtask.h>
+#include <akntitle.h>
+#include <akncontext.h>
+#include <aknnavi.h>
+#include <eiklbx.h>
+#include <eiklbm.h>
+#include <avkon.hrh>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineutils.h>
+#include <memspy/engine/memspyengineoutputsink.h>
+
+// User includes
+#include "MemSpyAppUi.h"
+#include "MemSpyDocument.h"
+#include "MemSpyContainer.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+/*
+CMemSpyViewBase::CMemSpyViewBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   iEngine( aEngine ), iObserver( aObserver )
+    {
+    }
+*/
+CMemSpyViewBase::CMemSpyViewBase( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   iMemSpySession( aSession ), iObserver( aObserver )
+    {
+    }
+
+
+CMemSpyViewBase::~CMemSpyViewBase()
+    {
+    delete iListBox;
+    }
+ 
+
+void CMemSpyViewBase::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* /*aSelectionRune*/ )
+    {
+    iSettings = &static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() )->MemSpyDocument().Settings();
+    //
+    User::LeaveIfError( SetParent( &aContainer ) );
+    SetContainerWindowL( aContainer );
+    
+    SetComponentsToInheritVisibility( ETrue );
+
+    iListBox = ConstructListBoxL();
+    if  ( iListBox )
+        {
+        iListBox->SetFocus( ETrue );
+        }
+
+    SetRect( aRect );
+    ActivateL();
+    }
+
+
+void CMemSpyViewBase::SetTitleL( const TDesC& aText )
+    {
+    CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
+    CAknTitlePane* title = static_cast<CAknTitlePane*> ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    title->SetTextL( aText );
+    }
+
+
+TPtrC CMemSpyViewBase::TitleL() const
+    {
+    TPtrC ret( KNullDesC );
+    //
+    CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
+    CAknTitlePane* title = static_cast<CAknTitlePane*> ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    if  ( title->Text() )
+        {
+        ret.Set( *title->Text() );
+        }
+    //
+    return ret;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewBase::PrepareParentViewL()
+    {
+    return NULL;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewBase::PrepareChildViewL()
+    {
+    return NULL;
+    }
+    
+    
+void CMemSpyViewBase::RefreshL()
+    {
+    if  ( iListBox )
+        {
+        iListBox->UpdateScrollBarsL();
+        }
+
+    DrawDeferred();
+    }
+
+
+TBool CMemSpyViewBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch( aCommand )
+        {
+	case EMemSpyCmdViewOutputToSink:
+        OnCmdViewOutputToSinkL();
+        break;
+    default:
+        handled = EFalse;
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewBase::DynInitMenuPaneL( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ )
+    {
+    }
+
+
+TUint CMemSpyViewBase::MenuCascadeResourceId() const
+    {
+    return 0;
+    }
+
+
+TInt CMemSpyViewBase::MenuCascadeCommandId() const
+    {
+    return 0;
+    }
+
+
+void CMemSpyViewBase::OnCmdViewOutputToSinkL()
+    {
+	//cigasto so solve - outputs content of the listbox into the sink
+	//to discuss format with Orbit
+	/*
+    if  ( iListBox )
+        {
+        // Prepare sink
+        CMemSpyEngineOutputSink& sink = iEngine.Sink();
+        HBufC* name = MemSpyEngineUtils::CleanupTextLC( TitleL() );
+        sink.OutputSectionHeadingL( *name, TChar('-') );
+        CleanupStack::PopAndDestroy( name );
+        sink.OutputPrefixSetLC( _L("  ") ); // Slight insertion
+        
+        // Get text from underlying listbox model...
+        MTextListBoxModel* model = static_cast< MTextListBoxModel* >( iListBox->Model() );
+        const TInt count = model->NumberOfItems();
+
+        // First pass to get max lengths
+        TInt maxLengthCaption = 0;
+        TInt maxLengthValue = 0;
+
+        for( TInt j=0; j<count; j++ )
+            {
+            const TPtrC pItem( model->ItemText( j ) );
+            const TInt length = pItem.Length();
+    
+            // Check if its split or not?
+            const TInt splitPos = pItem.FindF( _L("\t\t") );
+            if  ( splitPos > 0 )
+                {
+                maxLengthCaption = Max( maxLengthCaption, splitPos );
+                maxLengthValue = Max( maxLengthValue, length - splitPos + 1 );
+                }
+            else
+                {
+                maxLengthCaption = Max( maxLengthCaption, length );
+                }
+            }
+
+        // Second pass - real this time - to print the values
+        HBufC* line = HBufC::NewLC( ( maxLengthCaption + maxLengthValue ) + 20 );
+        TPtr pLine( line->Des() );
+        //
+        for( TInt i=0; i<count; i++ )
+            {
+            const TPtrC pItem( model->ItemText( i ) );
+            const TInt length = pItem.Length();
+            //
+            TPtrC pCaption( KNullDesC );
+            TPtrC pValue( KNullDesC );
+            //
+            const TInt splitPos = pItem.FindF( _L("\t\t") );
+            if  ( splitPos > 0 )
+                {
+                pCaption.Set( pItem.Left( splitPos ) );
+                pValue.Set( pItem.Mid( splitPos + 1 ) );
+                }
+            else
+                {
+                pCaption.Set( pItem );
+                }
+
+            // Remove initial tabs in caption
+            HBufC* caption = MemSpyEngineUtils::CleanupTextLC( pCaption );
+        
+            // Create value item & replace any further tabs
+            HBufC* value = MemSpyEngineUtils::CleanupTextLC( pValue );
+
+            // Now format the final line, with padding.
+            pLine.Justify( *caption, maxLengthCaption + 3, ELeft, TChar(' ') );
+            pLine.Append( *value );
+            CleanupStack::PopAndDestroy( 2, caption );
+
+            // Sink output
+            sink.OutputLineL( pLine );
+            }
+
+        // Remove prefix & tidy up
+        CleanupStack::PopAndDestroy( line );
+        sink.OutputBlankLineL();
+        CleanupStack::PopAndDestroy(); // clear prefix
+		}  
+	*/     
+    }
+
+
+CEikListBox* CMemSpyViewBase::ConstructListBoxL()
+    {
+    delete iListBox;
+    iListBox = NULL;
+    CAknSettingStyleListBox* listbox = new(ELeave) CAknSettingStyleListBox();
+    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->SetObserver( this );
+    listbox->SetComponentsToInheritVisibility( ETrue );
+    //
+    return listbox;
+    }
+
+
+void CMemSpyViewBase::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewBase::HandleListBoxItemSelectedL( TInt /*aIndex*/ )
+    {
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+void CMemSpyViewBase::ReportEventL( MMemSpyViewObserver::TViewEventType aEvent, TAny* aContext )
+    {
+    iObserver.HandleMemSpyViewEventL( aEvent, ViewType(), *this, aContext );
+    }
+
+
+void CMemSpyViewBase::SetListBoxCurrentItemIndexL( TInt aIndex )
+    {
+    if  ( iListBox )
+        {
+        iListBox->SetCurrentItemIndex( aIndex );
+        HandleListBoxItemSelectedL( aIndex );
+        }
+    }
+
+
+CMemSpyContainer& CMemSpyViewBase::Container()
+    {
+    CMemSpyAppUi* appUi = static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() );
+    return appUi->Container();
+    }
+
+
+CMemSpySettings& CMemSpyViewBase::Settings()
+    {
+    return *iSettings;
+    }
+
+
+const CMemSpySettings& CMemSpyViewBase::Settings() const
+    {
+    return *iSettings;
+    }
+
+    
+void CMemSpyViewBase::Draw( const TRect& aRect ) const
+    {
+    CWindowGc& gc = SystemGc();
+    //
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( KRgbWhite );
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    gc.DrawRect( aRect );
+    }
+
+
+void CMemSpyViewBase::SizeChanged()
+    {
+    if  ( iListBox )
+        {
+        iListBox->SetRect( Rect() );
+        }
+    }
+
+
+void CMemSpyViewBase::FocusChanged(TDrawNow /*aDrawNow*/)
+    {
+    if  ( iListBox )
+        {
+        iListBox->SetFocus( IsFocused() );
+        }
+    }
+
+
+TInt CMemSpyViewBase::CountComponentControls() const
+    {
+    TInt count = 0;
+    if  ( iListBox )
+        {
+        ++count;
+        }
+    //
+    return count;
+    }
+
+
+CCoeControl* CMemSpyViewBase::ComponentControl(TInt aIndex) const
+    {
+    switch ( aIndex )
+        {
+    case 0:
+        return iListBox;
+    default:
+        return NULL;
+        }
+    }
+
+
+TKeyResponse CMemSpyViewBase::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+	{
+    TKeyResponse resp = EKeyWasNotConsumed;
+    if  ( iListBox )
+        {
+        resp = iListBox->OfferKeyEventL( aKeyEvent, aType );
+        }
+    //
+    if ( resp == EKeyWasNotConsumed && aType == EEventKeyDown && aKeyEvent.iCode == EKeyBackspace )
+        {
+        // When backspace is pushed, go to the parent view
+        CMemSpyAppUi* appUi = static_cast< CMemSpyAppUi* >( iEikonEnv->EikAppUi() );
+        appUi->Container().NavigateToParentViewL();
+        resp = EKeyWasConsumed;
+        }
+    //
+	return resp;
+	}
+
+
+void CMemSpyViewBase::HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType )
+    {
+    if  ( aControl == iListBox )
+        {
+        if  ( aEventType == MCoeControlObserver::EEventStateChanged )
+            {
+            const TInt index = iListBox->CurrentItemIndex();
+            HandleListBoxItemSelectedL( index );
+            }
+        }
+    }
+
+
+void CMemSpyViewBase::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
+    {
+    const TInt index = iListBox->CurrentItemIndex();
+    //
+    switch (aEventType)
+        {
+    case EEventItemActioned:
+    case EEventEnterKeyPressed:
+    case EEventItemDoubleClicked:
+        HandleListBoxItemActionedL( index );
+        break;
+
+    default:
+        break;
+        }
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewChunkList.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,346 @@
+/*
+* 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 "MemSpyViewChunkList.h"
+
+// System includes
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperchunk.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+
+
+
+CMemSpyViewChunkBase::CMemSpyViewChunkBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList* aList )
+:   CMemSpyViewBase( aEngine, aObserver ), iList( aList )
+    {
+    }
+
+
+CMemSpyViewChunkBase::~CMemSpyViewChunkBase()
+    {
+    delete iList;
+    }
+
+
+TBool CMemSpyViewChunkBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdChunkSortByName:
+        iList->SortByNameL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdChunkSortBySize:
+        iList->SortBySizeL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdChunkListing:
+        OnCmdListingL();
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewChunkBase::OnCmdListingL()
+    {
+    // Begin a new data stream
+    _LIT( KMemSpyContext, "Chunk List" );
+    _LIT( KMemSpyFolder, "Chunks" );
+    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
+
+    // Set prefix for overall listing
+    _LIT( KOverallPrefix, "Chunk List - " );
+    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
+
+    // Create header
+    CMemSpyEngineChunkList::OutputDataColumnsL( iEngine );
+    
+    // List items
+    const TInt count = iList->Count();
+    for(TInt i=0; i<count; i++)
+        {
+        const CMemSpyEngineChunkEntry& entry = iList->At( i );
+        //
+        entry.OutputDataL( iEngine.HelperChunk() );
+        }
+
+    // Tidy up
+    CleanupStack::PopAndDestroy(); // prefix
+
+    // End data stream
+    iEngine.Sink().DataStreamEndL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewChunkList::CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewChunkBase( aEngine, aObserver, NULL )
+    {
+    }
+
+
+CMemSpyViewChunkList::CMemSpyViewChunkList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList )
+:   CMemSpyViewChunkBase( aEngine, aObserver, &aList )
+    {
+    }
+
+
+void CMemSpyViewChunkList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Chunks" );
+    SetTitleL( KTitle );
+
+    if  ( iList == NULL )
+        {
+        // Prepare code segment list
+        iList = iEngine.HelperChunk().ListL();
+        }
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    if  ( aSelectionRune != NULL )
+        {
+        iCurrentChunk = reinterpret_cast< CMemSpyEngineChunkEntry* >( aSelectionRune );
+        const TInt index = iList->ItemIndex( *iCurrentChunk );
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        }
+
+    iListBox->DrawDeferred();
+    }
+
+
+TMemSpyViewType CMemSpyViewChunkList::ViewType() const
+    {
+    return EMemSpyViewTypeChunkList;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewChunkList::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewChunkList::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = new(ELeave) CMemSpyViewChunkDetails( iEngine, iObserver, *iList, *iCurrentChunk );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iList = NULL;
+
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewChunkList::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iList );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewChunkList::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineChunkEntry& chunk = iList->At( aIndex );
+        iCurrentChunk = &chunk;
+        }
+    else
+        {
+        iCurrentChunk = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewChunkList::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineChunkEntry& chunk = iList->At( aIndex );
+        iCurrentChunk = &chunk;
+        }
+    else
+        {
+        iCurrentChunk = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewChunkDetails::CMemSpyViewChunkDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineChunkList& aList, CMemSpyEngineChunkEntry& aSelectedChunk )
+:   CMemSpyViewChunkBase( aEngine, aObserver, &aList ), iChunk( aSelectedChunk )
+    {
+    }
+
+
+void CMemSpyViewChunkDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Chunk Details" );
+    SetTitleL( KTitle );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewChunkDetails::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewChunkDetails::ViewType() const
+    {
+    return EMemSpyViewTypeChunkDetails;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewChunkDetails::PrepareParentViewL()
+    {
+    CMemSpyViewChunkList* parent = new(ELeave) CMemSpyViewChunkList( iEngine, iObserver, *iList );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iList = NULL;
+
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), &iChunk );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewChunkDetails::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( &iChunk );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewCodeSegList.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,500 @@
+/*
+* 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 "MemSpyViewCodeSegList.h"
+
+// System includes
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelpercodesegment.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyExportBitmapsToMemoryCardDialog.h"
+
+
+
+CMemSpyViewCodeSegBase::CMemSpyViewCodeSegBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList* aList )
+:   CMemSpyViewBase( aEngine, aObserver ), iList( aList )
+    {
+    }
+
+
+CMemSpyViewCodeSegBase::~CMemSpyViewCodeSegBase()
+    {
+    delete iList;
+    }
+
+
+TBool CMemSpyViewCodeSegBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdCodeSegSortByName:
+        iList->SortByFileNameL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdCodeSegSortByCodeSize:
+        iList->SortByCodeSizeL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdCodeSegSortByDataSize:
+        iList->SortByDataSizeL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdCodeSegSortByUid:
+        iList->SortByUidsL();
+        CMemSpyViewBase::RefreshL();
+        break;
+    case EMemSpyCmdCodeSegListing:
+        OnCmdCodeSegmentListingL();
+        break;
+    case EMemSpyCmdCodeSegShowItemsAll:
+        OnCmdShowItemsAllL();
+        break;
+    case EMemSpyCmdCodeSegShowItemsGlobalData:
+        OnCmdShowItemsGlobalDataL();
+        break;
+
+    case EMemSpyCmdCodeSegShowCapsWithTCBProcess:
+    case EMemSpyCmdCodeSegShowCapsWithTCBAll:              
+        OnCmdFilterByCapabilityL( ECapabilityTCB, aCommand == EMemSpyCmdCodeSegShowCapsWithTCBAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithCommDDProcess:
+    case EMemSpyCmdCodeSegShowCapsWithCommDDAll:
+        OnCmdFilterByCapabilityL( ECapabilityCommDD, aCommand == EMemSpyCmdCodeSegShowCapsWithCommDDAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithPowerMgmtProcess:
+    case EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll:
+        OnCmdFilterByCapabilityL( ECapabilityPowerMgmt, aCommand == EMemSpyCmdCodeSegShowCapsWithPowerMgmtAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithMultimediaDDProcess:
+    case EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll:
+        OnCmdFilterByCapabilityL( ECapabilityMultimediaDD, aCommand == EMemSpyCmdCodeSegShowCapsWithMultimediaDDAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithReadDeviceDataProcess:
+    case EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll:
+        OnCmdFilterByCapabilityL( ECapabilityReadDeviceData, aCommand == EMemSpyCmdCodeSegShowCapsWithReadDeviceDataAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataProcess:
+    case EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll:
+        OnCmdFilterByCapabilityL( ECapabilityWriteDeviceData, aCommand == EMemSpyCmdCodeSegShowCapsWithWriteDeviceDataAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithDRMProcess:
+    case EMemSpyCmdCodeSegShowCapsWithDRMAll:
+        OnCmdFilterByCapabilityL( ECapabilityDRM, aCommand == EMemSpyCmdCodeSegShowCapsWithDRMAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithTrustedUIProcess:
+    case EMemSpyCmdCodeSegShowCapsWithTrustedUIAll:
+        OnCmdFilterByCapabilityL( ECapabilityTrustedUI, aCommand == EMemSpyCmdCodeSegShowCapsWithTrustedUIAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithProtServProcess:
+    case EMemSpyCmdCodeSegShowCapsWithProtServAll:
+        OnCmdFilterByCapabilityL( ECapabilityProtServ, aCommand == EMemSpyCmdCodeSegShowCapsWithProtServAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithDiskAdminProcess:
+    case EMemSpyCmdCodeSegShowCapsWithDiskAdminAll:
+        OnCmdFilterByCapabilityL( ECapabilityDiskAdmin, aCommand == EMemSpyCmdCodeSegShowCapsWithDiskAdminAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithNetworkControlProcess:
+    case EMemSpyCmdCodeSegShowCapsWithNetworkControlAll:
+        OnCmdFilterByCapabilityL( ECapabilityNetworkControl, aCommand == EMemSpyCmdCodeSegShowCapsWithNetworkControlAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithAllFilesProcess:
+    case EMemSpyCmdCodeSegShowCapsWithAllFilesAll:
+        OnCmdFilterByCapabilityL( ECapabilityAllFiles, aCommand == EMemSpyCmdCodeSegShowCapsWithAllFilesAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithSwEventProcess:
+    case EMemSpyCmdCodeSegShowCapsWithSwEventAll:
+        OnCmdFilterByCapabilityL( ECapabilitySwEvent, aCommand == EMemSpyCmdCodeSegShowCapsWithSwEventAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithNetworkServicesProcess:
+    case EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll:
+        OnCmdFilterByCapabilityL( ECapabilityNetworkServices, aCommand == EMemSpyCmdCodeSegShowCapsWithNetworkServicesAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithLocalServicesProcess:
+    case EMemSpyCmdCodeSegShowCapsWithLocalServicesAll:
+        OnCmdFilterByCapabilityL( ECapabilityLocalServices, aCommand == EMemSpyCmdCodeSegShowCapsWithLocalServicesAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithReadUserDataProcess:
+    case EMemSpyCmdCodeSegShowCapsWithReadUserDataAll:
+        OnCmdFilterByCapabilityL( ECapabilityReadUserData, aCommand == EMemSpyCmdCodeSegShowCapsWithReadUserDataAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithWriteUserDataProcess:
+    case EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll:
+        OnCmdFilterByCapabilityL( ECapabilityWriteUserData, aCommand == EMemSpyCmdCodeSegShowCapsWithWriteUserDataAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithLocationProcess:
+    case EMemSpyCmdCodeSegShowCapsWithLocationAll:
+        OnCmdFilterByCapabilityL( ECapabilityLocation, aCommand == EMemSpyCmdCodeSegShowCapsWithLocationAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithSurroundingsDDProcess:
+    case EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll:
+        OnCmdFilterByCapabilityL( ECapabilitySurroundingsDD, aCommand == EMemSpyCmdCodeSegShowCapsWithSurroundingsDDAll );
+        break;
+    case EMemSpyCmdCodeSegShowCapsWithUserEnvProcess:
+    case EMemSpyCmdCodeSegShowCapsWithUserEnvAll:
+        OnCmdFilterByCapabilityL( ECapabilityUserEnvironment, aCommand == EMemSpyCmdCodeSegShowCapsWithUserEnvAll );
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewCodeSegBase::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewCodeSegBase::OnCmdCodeSegmentListingL()
+    {
+    // Begin a new data stream
+    _LIT( KMemSpyContext, "CodeSeg List - " );
+    _LIT( KMemSpyFolder, "CodeSegs" );
+    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
+
+    // Set prefix for overall listing
+    _LIT(KOverallPrefix, "CodeSeg List - ");
+    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
+
+    // Create header
+    CMemSpyEngineCodeSegList::OutputDataColumnsL( iEngine );
+    
+    // List items
+    const TInt count = iList->Count();
+    for(TInt i=0; i<count; i++)
+        {
+        const CMemSpyEngineCodeSegEntry& entry = iList->At( i );
+        //
+        entry.OutputDataL( iEngine.HelperCodeSegment() );
+        }
+
+    // Tidy up
+    CleanupStack::PopAndDestroy(); // prefix
+
+    // End data stream
+    iEngine.Sink().DataStreamEndL();
+    }
+
+
+void CMemSpyViewCodeSegBase::OnCmdShowItemsAllL()
+    {
+    iList->ShowAllL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewCodeSegBase::OnCmdShowItemsGlobalDataL()
+    {
+    iList->ShowOnlyEntriesWithGlobalDataL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewCodeSegBase::OnCmdFilterByCapabilityL( TCapability aCapability, TBool aAllBinaries )
+    {
+    TMemSpyViewCodeSegFilter filterLogic( aCapability, aAllBinaries );
+    TMemSpyEngineVisibiltyFunction<CMemSpyEngineCodeSegEntry> filterFunction( TMemSpyViewCodeSegFilter::FilterItem, &filterLogic );
+    iList->ShowL( filterFunction );
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewCodeSegList::CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewCodeSegBase( aEngine, aObserver, NULL )
+    {
+    }
+
+
+CMemSpyViewCodeSegList::CMemSpyViewCodeSegList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList )
+:   CMemSpyViewCodeSegBase( aEngine, aObserver, &aList )
+    {
+    }
+
+
+void CMemSpyViewCodeSegList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Code Segments" );
+    SetTitleL( KTitle );
+
+    if  ( iList == NULL )
+        {
+        // Prepare code segment list
+        iList = iEngine.HelperCodeSegment().CodeSegmentListL();
+        iList->SortByCodeSizeL();
+        }
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    if  ( aSelectionRune != NULL )
+        {
+        iCurrentCodeSegment = reinterpret_cast< CMemSpyEngineCodeSegEntry* >( aSelectionRune );
+        const TInt index = iList->ItemIndex( *iCurrentCodeSegment );
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        }
+
+    iListBox->DrawDeferred();
+    }
+
+
+TMemSpyViewType CMemSpyViewCodeSegList::ViewType() const
+    {
+    return EMemSpyViewTypeCodeSegmentList;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewCodeSegList::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewCodeSegList::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = new(ELeave) CMemSpyViewCodeSegDetails( iEngine, iObserver, *iList, *iCurrentCodeSegment );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iList = NULL;
+
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewCodeSegList::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iList );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewCodeSegList::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineCodeSegEntry& codeSeg = iList->At( aIndex );
+        iCurrentCodeSegment = &codeSeg;
+        }
+    else
+        {
+        iCurrentCodeSegment = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewCodeSegList::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineCodeSegEntry& codeSeg = iList->At( aIndex );
+        iCurrentCodeSegment = &codeSeg;
+        }
+    else
+        {
+        iCurrentCodeSegment = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewCodeSegDetails::CMemSpyViewCodeSegDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineCodeSegList& aList, CMemSpyEngineCodeSegEntry& aSelectedCodeSegment )
+:   CMemSpyViewCodeSegBase( aEngine, aObserver, &aList ), iCodeSegment( aSelectedCodeSegment )
+    {
+    }
+
+
+void CMemSpyViewCodeSegDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Code Segment Details" );
+    SetTitleL( KTitle );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewCodeSegDetails::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewCodeSegDetails::ViewType() const
+    {
+    return EMemSpyViewTypeCodeSegmentDetails;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewCodeSegDetails::PrepareParentViewL()
+    {
+    CMemSpyViewCodeSegList* parent = new(ELeave) CMemSpyViewCodeSegList( iEngine, iObserver, *iList );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iList = NULL;
+
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), &iCodeSegment );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewCodeSegDetails::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( &iCodeSegment );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TBool TMemSpyViewCodeSegFilter::FilterItem( const CMemSpyEngineCodeSegEntry*& aItem, TAny* aRune )
+    {
+    TMemSpyViewCodeSegFilter* self = reinterpret_cast< TMemSpyViewCodeSegFilter* >( aRune );
+
+    TBool match = aItem->HasCapability( self->iCapability );
+    if  ( match && self->iAllBinaries == EFalse )
+        {
+        // We're only looking for EXE's...
+        TParsePtrC parser( aItem->FileName() );
+        const TPtrC pExtension( parser.Ext() );
+        _LIT(KProcessExtension, ".exe");
+        //
+        match = ( pExtension.CompareF( KProcessExtension ) == 0 );
+        }
+    //
+    return match;
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewDriveInfo.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,381 @@
+/*
+* 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 "MemSpyViewDriveInfo.h"
+
+// System includes
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperfilesystem.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+
+
+
+CMemSpyViewDriveInfoBase::CMemSpyViewDriveInfoBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+CMemSpyViewDriveInfoBase::~CMemSpyViewDriveInfoBase()
+    {
+    if  ( iList )
+        {
+        iList->SetObserver( NULL );
+        }
+    //
+    delete iList;
+    }
+
+
+void CMemSpyViewDriveInfoBase::BaseConstructL()
+    {
+    iList = iEngine.HelperFileSystem().DriveListL();
+    }
+
+
+TBool CMemSpyViewDriveInfoBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( EFalse ), iDriveNumber( EDriveA )
+    {
+    }
+
+
+CMemSpyViewDriveList::CMemSpyViewDriveList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber )
+:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iUseDriveNumber( ETrue ), iDriveNumber( aDriveNumber )
+    {
+    }
+
+
+void CMemSpyViewDriveList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    BaseConstructL();
+
+    _LIT( KTitle, "Drive Summary" );
+    SetTitleL( KTitle );
+
+    // Start watching list
+    iList->SetObserver( this );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    if  ( iUseDriveNumber )
+        {
+#ifdef _DEBUG
+        RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iDriveNumber: %c:", iDriveNumber + 'A' );
+#endif
+        iCurrentDrive = iList->EntryByDriveNumber( iDriveNumber );
+
+#ifdef _DEBUG
+        RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - iCurrentDrive: 0x%08x", iCurrentDrive );
+#endif
+        if  ( iCurrentDrive )
+            {
+            const TInt index = iList->ItemIndex( *iCurrentDrive );
+#ifdef _DEBUG
+            RDebug::Printf( "CMemSpyViewDriveList::ConstructL() - index: %d", index );
+#endif
+            iListBox->SetCurrentItemIndex( index );
+            HandleListBoxItemSelectedL( index );
+            }
+        }
+    
+    iListBox->DrawDeferred();
+    }
+
+
+TMemSpyViewType CMemSpyViewDriveList::ViewType() const
+    {
+    return EMemSpyViewTypeDriveSummary;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewDriveList::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    //
+    if  ( parent )
+        {
+        iList->SetObserver( NULL );
+        }
+    //
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewDriveList::PrepareChildViewL()
+    {
+    ASSERT( iCurrentDrive );
+    CMemSpyViewBase* child = new(ELeave) CMemSpyViewDriveInfo( iEngine, iObserver, iCurrentDrive->DriveNumber() );
+
+    // Stop watching list
+    if  ( child )
+        {
+        iList->SetObserver( NULL );
+        }
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iList = NULL;
+
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewDriveList::RefreshL()
+    {
+    if  ( iList )
+        {
+        iList->SetObserver( NULL );
+        }
+    //
+    CMemSpyEngineDriveList* list = iEngine.HelperFileSystem().DriveListL();
+    delete iList;
+    iList = list;
+    iList->SetObserver( this );
+    //
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewDriveList::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iList );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewDriveList::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineDriveEntry& entry = iList->At( aIndex );
+        iCurrentDrive = &entry;
+        }
+    else
+        {
+        iCurrentDrive = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewDriveList::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+    const TInt count = iList->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineDriveEntry& entry = iList->At( aIndex );
+        iCurrentDrive = &entry;
+        }
+    else
+        {
+        iCurrentDrive = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+void CMemSpyViewDriveList::HandleDriveListChangedL( const CMemSpyEngineDriveList& /*aList*/ )
+    {
+    RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewDriveInfo::CMemSpyViewDriveInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TDriveNumber aDriveNumber )
+:   CMemSpyViewDriveInfoBase( aEngine, aObserver ), iDriveNumber( aDriveNumber )
+    {
+    }
+
+
+void CMemSpyViewDriveInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    BaseConstructL();
+    //
+    iDriveInfo = iList->EntryByDriveNumber( iDriveNumber );
+    if  ( !iDriveInfo )
+        {
+        User::Leave( KErrNotFound );
+        }
+    iDriveInfo->SetObserver( this );
+
+    _LIT( KTitleFormat, "Drive %S Info" );
+    const TDriveName name( iDriveInfo->DriveUnit().Name() );
+    TName title;
+    title.Format( KTitleFormat, &name );
+    SetTitleL( title );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewDriveInfo::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewDriveInfo::ViewType() const
+    {
+    return EMemSpyViewTypeDriveInfo;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewDriveInfo::PrepareParentViewL()
+    {
+    ASSERT( iDriveInfo );
+    CMemSpyViewDriveList* parent = new(ELeave) CMemSpyViewDriveList( iEngine, iObserver, iDriveInfo->DriveNumber() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( parent );
+    //
+    if  ( parent )
+        {
+        iDriveInfo->SetObserver( NULL );
+        }
+    //
+    return parent;
+    }
+
+
+void CMemSpyViewDriveInfo::SetListBoxModelL()
+    {
+    if  ( iDriveInfo )
+        {
+        CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+        listbox->Model()->SetItemTextArray( iDriveInfo );
+        listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+        }
+    }
+
+
+void CMemSpyViewDriveInfo::HandleDriveEntryChangedL( const CMemSpyEngineDriveEntry& /*aEntry*/ )
+    {
+    RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewECom.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -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 );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewFBServBitmaps.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,746 @@
+/*
+* 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 "MemSpyViewFBServBitmaps.h"
+
+// System includes
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyExportBitmapsToMemoryCardDialog.h"
+
+// Constants
+const TInt KMemSpyIdleResetListboxTimerPeriod = 500000;
+const TInt KMemSpyImageSlideshowPeriod = 1000000;
+
+
+
+CMemSpyViewFBServBase::CMemSpyViewFBServBase( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps )
+:   CMemSpyViewBase( aEngine, aObserver ), iBitmaps( aBitmaps )
+    {
+    }
+
+
+CMemSpyViewFBServBase::~CMemSpyViewFBServBase()
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBase::~CMemSpyViewFBServBase() - deleting bitmaps: 0x%08x", iBitmaps );
+#endif
+    delete iBitmaps;
+    }
+
+
+TBool CMemSpyViewFBServBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+	case EMemSpyCmdImagesSlideshow:
+    	OnCmdSlideShowL();
+        break;
+#ifndef __WINS__
+	case EMemSpyCmdImagesSaveAllToMemoryCard:
+        OnCmdExportToMemoryCardL();
+        break;
+#endif
+	case EMemSpyCmdImagesListing:
+        OnCmdImageListingL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewFBServBase::OnCmdSlideShowL()
+    {
+    TInt index = 0;
+    CMemSpyViewFBServSlideshow::NewLD( *iBitmaps, index );
+    
+    // Select the item that was last displayed
+    const TInt count = iBitmaps->Count();
+    if  ( iListBox && index >= 0 && index < count )
+        {
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        DrawDeferred();
+        }
+    }
+
+
+void CMemSpyViewFBServBase::OnCmdExportToMemoryCardL()
+    {
+    // Deletes itself
+    CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *iBitmaps );
+    }
+
+
+void CMemSpyViewFBServBase::OnCmdImageListingL()
+    {
+    // Begin a new data stream
+    _LIT( KMemSpyContext, "Bitmap List - " );
+    _LIT( KMemSpyFolder, "Bitmaps" );
+    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
+
+    // Set prefix for overall listing
+    _LIT(KOverallPrefix, "Bitmap List - ");
+    iEngine.Sink().OutputPrefixSetLC( KOverallPrefix );
+
+    // Create header
+    CMemSpyEngineFbServBitmap::OutputDataColumnsL( iEngine );
+    
+    // List items
+    const TInt count = iBitmaps->Count();
+    for(TInt i=0; i<count; i++)
+        {
+        const CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( i );
+        //
+        bitmap.OutputDataL( iEngine );
+        }
+
+    // Tidy up
+    CleanupStack::PopAndDestroy(); // prefix
+
+    // End data stream
+    iEngine.Sink().DataStreamEndL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewFBServBase( aEngine, aObserver, NULL )
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(1) - iBitmaps is: 0x%08x", iBitmaps );
+#endif
+    }
+
+
+CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps )
+:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps )
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBitmaps::CMemSpyViewFBServBitmaps(2) - iBitmaps is: 0x%08x", iBitmaps );
+#endif
+    }
+
+
+CMemSpyViewFBServBitmaps::~CMemSpyViewFBServBitmaps()
+    {
+    delete iIdleResetListboxTimer;
+    iBitmapHandles.Close();
+    }
+
+
+void CMemSpyViewFBServBitmaps::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Font & Bitmap Server" );
+    SetTitleL( KTitle );
+
+    if  ( iBitmaps == NULL )
+        {
+        // Prepare bitmap handles
+        iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( iBitmapHandles );
+
+        // Create bitmap array - construction occurs asynchronously
+        iBitmaps = CMemSpyEngineFbServBitmapArray::NewL( CActive::EPriorityIdle, iBitmapHandles, *this );
+        }
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    // Create idle listbox refresh timer
+    if  ( iBitmaps->Count() == 0 )
+        {
+        iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityLow );
+        }
+    else
+        {
+        if  ( aSelectionRune != NULL )
+            {
+            iCurrentBitmap = reinterpret_cast< CMemSpyEngineFbServBitmap* >( aSelectionRune );
+            const TInt index = iBitmaps->BitmapIndexByHandle( iCurrentBitmap->Handle() );
+            iListBox->SetCurrentItemIndex( index );
+            HandleListBoxItemSelectedL( index );
+            }
+
+        iListBox->DrawDeferred();
+        }
+    }
+
+
+void CMemSpyViewFBServBitmaps::RefreshL()
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBitmaps::RefreshL() - iBitmaps->Count(): %d", iBitmaps->Count());
+#endif
+
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewFBServBitmaps::ViewType() const
+    {
+    return EMemSpyViewTypeFBServBitmaps;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewFBServBitmaps::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, *iCurrentBitmap );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iBitmaps = NULL;
+
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewFBServBitmaps::HandleFbServBitmapArrayEventL( TEvent aEvent )
+    {
+    if  ( aEvent == EBitmapItemsCreated )
+        {
+        }
+    else if ( aEvent == EBitmapArrayConstructionComplete )
+        {
+        }
+    //
+    iIdleResetListboxTimer->Cancel();
+    iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod/2, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) );
+    }
+
+
+void CMemSpyViewFBServBitmaps::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iBitmaps );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewFBServBitmaps::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    const TInt count = iBitmaps->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex );
+        iCurrentBitmap = &bitmap;
+        }
+    else
+        {
+        iCurrentBitmap = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewFBServBitmaps::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+    const TInt count = iBitmaps->Count();
+    if  ( aIndex >= 0 && aIndex < count )
+        {
+        CMemSpyEngineFbServBitmap& bitmap = iBitmaps->At( aIndex );
+        iCurrentBitmap = &bitmap;
+        }
+    else
+        {
+        iCurrentBitmap = NULL;
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+TInt CMemSpyViewFBServBitmaps::IdleUpdateListBoxModel( TAny* aSelf )
+    {
+    CMemSpyViewFBServBitmaps* self = reinterpret_cast< CMemSpyViewFBServBitmaps* >( aSelf );
+    TRAP_IGNORE( self->DoIdleUpdateListBoxModelL() );
+    return EFalse;
+    }
+
+
+void CMemSpyViewFBServBitmaps::DoIdleUpdateListBoxModelL()
+    {
+    // Try to maintain current item selection if at all possible.
+    TInt handle = 0;
+    if  ( iCurrentBitmap )
+        {
+        handle = iCurrentBitmap->Handle();
+        iCurrentBitmap = NULL;
+        }
+   
+    // Update list box & model
+    iListBox->HandleItemAdditionL();
+    iListBox->DrawDeferred();
+    
+    // Try to select previous item if it is still available
+    const TInt index = iBitmaps->BitmapIndexByHandle( handle );
+    if  ( index >= 0 && index < iBitmaps->Count() )
+        {
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        }
+
+    iIdleResetListboxTimer->Cancel();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap )
+:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap )
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBitmapInfo::CMemSpyViewFBServBitmapInfo() - iBitmaps is: 0x%08x", iBitmaps );
+#endif
+    }
+
+
+void CMemSpyViewFBServBitmapInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Bitmap Details" );
+    SetTitleL( KTitle );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    
+    if  ( iBitmaps->Count() )
+        {
+        iListBox->SetCurrentItemIndex( 0 );
+        HandleListBoxItemSelectedL( 0 );
+        }
+    }
+
+
+void CMemSpyViewFBServBitmapInfo::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewFBServBitmapInfo::ViewType() const
+    {
+    return EMemSpyViewTypeFBServBitmapInfo;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareParentViewL()
+    {
+    CMemSpyViewFBServBitmaps* parent = new(ELeave) CMemSpyViewFBServBitmaps( iEngine, iObserver, iBitmaps );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iBitmaps = NULL;
+
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), &iBitmapObject );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewFBServBitmapInfo::PrepareChildViewL()
+    {
+    CMemSpyViewFBServBitmapViewer* child = new(ELeave) CMemSpyViewFBServBitmapViewer( iEngine, iObserver, iBitmaps, iBitmapObject );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iBitmaps = NULL;
+
+    CleanupStack::PushL( child );
+    CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() );
+    const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() );
+    child->ConstructL( rect, *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewFBServBitmapInfo::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( &iBitmapObject );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewFBServBitmapInfo::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    // Only report the event if its the first item that was actioned
+    if  ( aIndex == 0 )
+        {
+        ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyEngineFbServBitmapArray* aBitmaps, CMemSpyEngineFbServBitmap& aSelectedBitmap )
+:   CMemSpyViewFBServBase( aEngine, aObserver, aBitmaps ), iBitmapObject( aSelectedBitmap )
+    {
+#ifdef _DEBUG
+    RDebug::Printf("CMemSpyViewFBServBitmapViewer::CMemSpyViewFBServBitmapViewer() - iBitmaps is: 0x%08x", iBitmaps );
+#endif
+    }
+
+
+CMemSpyViewFBServBitmapViewer::~CMemSpyViewFBServBitmapViewer()
+    {
+    delete iImage;
+    }
+
+
+void CMemSpyViewFBServBitmapViewer::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Bitmap Preview" );
+    SetTitleL( KTitle );
+
+    // Finish construction
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    // Prepare image
+    iImage = new(ELeave) CEikImage();
+    iImage->SetContainerWindowL( *this );
+    iImage->SetPicture( &iBitmapObject.Bitmap(), NULL );
+    iImage->SetPictureOwnedExternally( ETrue );
+    SizeChanged();
+    }
+
+
+void CMemSpyViewFBServBitmapViewer::RefreshL()
+    {
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewFBServBitmapViewer::ViewType() const
+    {
+    return EMemSpyViewTypeFBServBitmapViewer;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewFBServBitmapViewer::PrepareParentViewL()
+    {
+    CMemSpyViewFBServBitmapInfo* parent = new(ELeave) CMemSpyViewFBServBitmapInfo( iEngine, iObserver, iBitmaps, iBitmapObject );
+
+    // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+    // This object is about to die in any case.
+    iBitmaps = NULL;
+
+    CleanupStack::PushL( parent );
+    CEikAppUi* appUi = static_cast< CEikAppUi* >( iEikonEnv->AppUi() );
+    const TRect rect( TPoint( 0, 0 ), appUi->ClientRect().Size() );
+    parent->ConstructL( rect, *Parent() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewFBServBitmapViewer::SetListBoxModelL()
+    {
+    }
+
+
+CEikListBox* CMemSpyViewFBServBitmapViewer::ConstructListBoxL()
+    {
+    return NULL;
+    }
+
+
+void CMemSpyViewFBServBitmapViewer::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    //
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( KRgbWhite );
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    gc.DrawRect( Rect() );
+    //
+    gc.SetBrushColor( KRgbBlack );
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    gc.DrawRect( iBorderRect );
+    }
+    
+
+void CMemSpyViewFBServBitmapViewer::SizeChanged()
+    {
+    TRect rect( Rect() );
+    TSize size( rect.Size() );
+    //
+    TSize bitmapSize( iBitmapObject.Bitmap().SizeInPixels() );
+
+    // Try to center image, if possible.
+    if  ( bitmapSize.iWidth < size.iWidth )
+        {
+        const TInt offset = ( size.iWidth - bitmapSize.iWidth) / 2;
+        rect.Move( offset, 0 );
+        size.iWidth = bitmapSize.iWidth;
+        }
+    if  ( bitmapSize.iHeight < size.iHeight )
+        {
+        const TInt offset = ( size.iHeight - bitmapSize.iHeight) / 2;
+        rect.Move( 0, offset );
+        size.iHeight = bitmapSize.iHeight;
+        }
+    //
+    rect.SetSize( size );
+    if  ( iImage )
+        {
+        iImage->SetRect( rect );
+        }
+    iBorderRect = rect;
+    iBorderRect.Grow( 2, 2 );
+    }
+
+
+TInt CMemSpyViewFBServBitmapViewer::CountComponentControls() const
+    {
+    TInt count = 0;
+    //
+    if  ( iImage )
+        {
+        ++count;
+        }
+    //
+    return count;
+    }
+
+
+CCoeControl* CMemSpyViewFBServBitmapViewer::ComponentControl( TInt /*aIndex*/ ) const
+    {
+    return iImage;
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewFBServSlideshow::CMemSpyViewFBServSlideshow( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex )
+:   iBitmaps( aBitmaps ), iIndex( aIndex )
+    {
+    }
+
+
+CMemSpyViewFBServSlideshow::~CMemSpyViewFBServSlideshow()
+    {
+    delete iTimer;
+    }
+
+
+void CMemSpyViewFBServSlideshow::ConstructL()
+    {
+    iTimer = CPeriodic::NewL( CActive::EPriorityLow );
+    iTimer->Start( KMemSpyImageSlideshowPeriod, KMemSpyImageSlideshowPeriod, TCallBack( IdleUpdate, this ) );
+    }
+
+
+void CMemSpyViewFBServSlideshow::NewLD( CMemSpyEngineFbServBitmapArray& aBitmaps, TInt& aIndex )
+    {
+    CMemSpyViewFBServSlideshow* self = new(ELeave) CMemSpyViewFBServSlideshow( aBitmaps, aIndex );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    //
+    self->ExecuteLD( R_MEMSPY_IMAGE_SLIDESHOW );
+    }
+
+
+void CMemSpyViewFBServSlideshow::PreLayoutDynInitL()
+    {
+    ShowNextImageL();
+    }
+
+
+TBool CMemSpyViewFBServSlideshow::OkToExitL( TInt /*aButtonId*/ )
+    {
+    return ETrue;
+    }
+
+
+TInt CMemSpyViewFBServSlideshow::IdleUpdate( TAny* aSelf )
+    {
+    CMemSpyViewFBServSlideshow* self = reinterpret_cast< CMemSpyViewFBServSlideshow* >( aSelf );
+    TRAP_IGNORE( self->ShowNextImageL() );
+    return EFalse;
+    }
+
+
+void CMemSpyViewFBServSlideshow::ShowNextImageL()
+    {
+	CEikImage* imageControl = static_cast< CEikImage* >( Control(EMemSpyCtrlIdSlideShowImage) );
+
+    // Get the right image
+    const TInt imageCount = iBitmaps.Count();
+    if  ( iIndex < imageCount )
+        {
+        CMemSpyEngineFbServBitmap& bitmap = iBitmaps.At( iIndex );
+        imageControl->SetPicture( &bitmap.Bitmap(), NULL );
+        imageControl->SetPictureOwnedExternally( ETrue );
+        
+        // Prepare title
+        const TSize size( bitmap.Bitmap().SizeInPixels() );
+        _LIT(KTitleFormat, "%3d x %3d");
+        TBuf<128> title;
+        title.Format( KTitleFormat, size.iWidth, size.iHeight );
+        SetTitleL( title );
+        //
+        User::ResetInactivityTime();
+        //
+        Layout();
+        //
+        ++iIndex;
+        }
+    else
+        {
+        // Dismiss myself.
+        delete this;
+        }
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTracking.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,488 @@
+/*
+* 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 "MemSpyViewHeapTracking.h"
+
+// System includes
+#include <hal.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelpersysmemtracker.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewHeapTrackingSettings.h"
+#include "MemSpyViewHeapTrackingResults.h"
+
+
+
+CMemSpyViewHeapTracking::CMemSpyViewHeapTracking( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver ),    
+    iState( EMemSpyViewHeapTrackingStateIdle )
+    {
+	/*
+    if ( iEngine.HelperSysMemTracker().IsActive() )
+        {
+        iState = EMemSpyViewHeapTrackingStateTimerOn;
+        }
+    */    
+    }
+
+
+CMemSpyViewHeapTracking::~CMemSpyViewHeapTracking()
+    {
+    delete iStopTimerCallBack;
+    //iEngine.HelperSysMemTracker().RemoveObserver( this );
+    }
+
+
+void CMemSpyViewHeapTracking::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "System-Wide Memory Tracking" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+            
+    // Backup current config because it may be overwritten with Basic/Full mode settings.       
+    TMemSpyEngineHelperSysMemTrackerConfig config;
+
+    GetSwmtConfig( config );
+    
+    iOriginalConfig = config;     
+        
+    if ( config.iMode != TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
+        {
+        // Set config. Needed for updating config for Basic or Full mode.               
+		SetConfigByModeL( config.iMode, config );
+        }
+    
+    // Make sure the correct item is selected
+    TInt index = 0;
+    if  ( aSelectionRune != NULL )
+        {
+        const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
+        index = IndexByViewType( viewType );
+        }
+    iListBox->SetCurrentItemIndex( index );
+    HandleListBoxItemSelectedL( index );       
+    }
+
+
+void CMemSpyViewHeapTracking::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::SizeChanged();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewHeapTracking::ViewType() const
+    {
+    return EMemSpyViewTypeHeapTracking;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTracking::PrepareParentViewL()
+    {
+    
+    // Save custom settings even if mode is Basic or Full	
+	TRAP_IGNORE(	        
+	        iMemSpySession.SetSwmtCategoriesL( iOriginalConfig.iEnabledCategories );	        
+	        iMemSpySession.SetSwmtFilter( iOriginalConfig.iThreadNameFilter );
+	        iMemSpySession.SetSwmtHeapDumpsEnabledL( iOriginalConfig.iDumpData );	        
+	        Settings().StoreSettingsL();
+	        );
+    
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTracking::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    const TInt index = iListBox->CurrentItemIndex();
+    
+    // Get current config    
+    TMemSpyEngineHelperSysMemTrackerConfig config;    
+    
+    GetSwmtConfig( config );
+    
+    //
+    if  ( index == 0 )
+        {
+        // This is the start/stop toggle so we don't make a child view
+        child = NULL; 
+
+        // ... instead we either start or stop the tracker
+       // if  ( !iEngine.HelperSysMemTracker().IsActive() )
+        if  ( !iMemSpySession.IsSwmtRunningL() )
+            {
+            iState = EMemSpyViewHeapTrackingStateSingleOn;
+            // Setting observer to be able to stop SWMT after first cycle is completed            
+            //iEngine.HelperSysMemTracker().SetObserver( this );
+            iMemSpySession.ForceSwmtUpdateL();
+            }
+
+        // Redraw listbox 
+        RefreshL();
+        }
+    else if  ( index == 1 )
+        {
+        // This is the start/stop toggle so we don't make a child view
+        child = NULL; 
+
+        // ... instead we either start or stop the tracker        
+        if  ( iMemSpySession.IsSwmtRunningL() && iState == EMemSpyViewHeapTrackingStateTimerOn )
+            {
+            iState = EMemSpyViewHeapTrackingStateIdle;
+            iMemSpySession.StopSwmtTimerL();
+            
+            }
+        else if ( iState == EMemSpyViewHeapTrackingStateIdle )
+            {
+            iState = EMemSpyViewHeapTrackingStateTimerOn;            
+            iMemSpySession.StartSwmtTimerL();
+            }
+
+        // Redraw listbox 
+        RefreshL();
+        }
+    else if ( index == 2 )
+        {
+        switch ( config.iMode )
+            {
+            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
+                {
+                // Set Full mode
+                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull, config );
+                break;
+                }
+            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
+                {
+                // Set Custom mode
+                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom, config );
+                break;
+                }
+            case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
+                {
+                // Set Basic mode
+                SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic, config );
+                break;
+                }
+            default: break;
+            }
+                
+        // Redraw listbox 
+        RefreshL();
+        }
+    else if ( index == 3 )
+        {        
+        if ( config.iMode == TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
+            {
+            child = new(ELeave) CMemSpyViewHeapTrackingSettings( iMemSpySession, iObserver );
+            }
+        else
+            {
+            child = new(ELeave) CMemSpyViewHeapTrackingResults( iMemSpySession, iObserver );
+            }
+        }
+    else if ( index == 4 )
+        {
+        child = new(ELeave) CMemSpyViewHeapTrackingResults( iMemSpySession, iObserver );
+        }
+    if  ( child )
+        {
+        CleanupStack::PushL( child );
+        child->ConstructL( Rect(), *Parent() );
+        CleanupStack::Pop( child );
+        }
+    
+    //
+    return child;
+    }
+
+
+void CMemSpyViewHeapTracking::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+    
+    // Get current config    
+    TMemSpyEngineHelperSysMemTrackerConfig config;       
+    
+    GetSwmtConfig( config );
+
+    // 1st item
+    _LIT( KItem1FormatEnable, "\tGet dump now" );
+    model->AppendL( KItem1FormatEnable );
+
+    
+    // 1st item
+    //if  ( iEngine.HelperSysMemTracker().IsActive() && iState == EMemSpyViewHeapTrackingStateTimerOn )
+    if  ( iMemSpySession.IsSwmtRunningL() && iState == EMemSpyViewHeapTrackingStateTimerOn )
+        {
+        _LIT( KItem1FormatEnable, "\tStop timer\t\t%d (sec)" );
+        TName item;
+        item.Format( KItem1FormatEnable, config.iTimerPeriod.Int() / 1000000 );
+        model->AppendL( item );
+        }
+    else
+        {
+        _LIT( KItem1FormatEnable, "\tStart timer\t\t%d (sec)" );
+        TName item;
+        item.Format( KItem1FormatEnable, config.iTimerPeriod.Int() / 1000000 );
+        model->AppendL( item );
+        }
+    
+    // 2nd item
+    switch ( config.iMode )
+        {
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
+            {
+            _LIT( KItem2Format, "\tTracking mode\t\tBasic" );
+            model->AppendL( KItem2Format );        
+            break;
+            }
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
+            {
+            _LIT( KItem2Format, "\tTracking mode\t\tFull" );
+            model->AppendL( KItem2Format );        
+            break;
+            }
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
+            {
+            _LIT( KItem2Format, "\tTracking mode\t\tCustom" );
+            model->AppendL( KItem2Format );
+            
+            // 3rd item
+            TFullName item;
+            if ( config.iDumpData && 
+                config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap )
+                {
+                _LIT( KItem3Format, "\tSettings\t\t%d categ., dump" );
+                
+                TInt count(0);
+                for( TInt bit = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups; bit > 0; bit = bit >> 1 )
+                    {
+                    if ( bit & config.iEnabledCategories )
+                        {
+                        count++;
+                        }
+                    }
+                item.Format( KItem3Format, count );
+                }
+            else
+                {
+                _LIT( KItem3Format, "\tSettings\t\t%d categories" );
+                TInt count(0);
+                for( TInt bit = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups; bit > 0; bit = bit >> 1 )
+                    {
+                    if ( bit & config.iEnabledCategories )
+                        {
+                        count++;
+                        }
+                    }
+                             
+                item.Format( KItem3Format, count );
+                }
+            model->AppendL( item );            
+            break;
+            }
+        default: break;
+        }
+    
+    // 4th item        
+    TInt cycleCount = iMemSpySession.GetSwmtCyclesCount();    
+    
+    if ( cycleCount > 0 )
+        {
+        _LIT( KItem2Format, "\tResults\t\t%d cycles" );
+        TFullName item;
+        item.Format( KItem2Format, cycleCount );
+        model->AppendL( item );
+        }
+    else
+        {
+        _LIT( KItem2Format, "\tResults\t\tNo results" );
+        model->AppendL( KItem2Format );
+        }      
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+void CMemSpyViewHeapTracking::HandleCyclesResetL()
+    {
+    }
+
+
+void CMemSpyViewHeapTracking::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+    }
+
+
+void CMemSpyViewHeapTracking::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+    // Stopping SWMT does not work directly from this function.
+    // It has to be made asynchronously.
+   // iStopTimerCallBack = new (ELeave) CAsyncCallBack( TCallBack( CMemSpyViewHeapTracking::AsyncStopTimerCallback, this ), CActive::EPriorityStandard );
+   // iStopTimerCallBack->CallBack();
+    }
+
+
+TInt CMemSpyViewHeapTracking::IndexByViewType( TMemSpyViewType aType )
+    {
+    // Get current config	
+    TMemSpyEngineHelperSysMemTrackerConfig config;    
+    
+    GetSwmtConfig( config );
+    
+    TInt index = 0;
+    //
+    switch( aType )
+        {
+    default:
+    case EMemSpyViewTypeHeapTrackingResults:
+        {
+        if ( config.iMode == TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom )
+            {
+            index = 4;
+            }
+        else
+            {
+            index = 3;
+            }
+        break;
+        }
+    case EMemSpyViewTypeHeapTrackingSettings:
+        index = 3;
+        break;
+        }
+    //
+    return index;
+    }
+
+
+void CMemSpyViewHeapTracking::SetConfigByModeL( TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode aMode, TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
+    {
+    switch ( aMode )
+        {
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeBasic:
+            {
+            aConfig.iMode = aMode;
+            aConfig.iEnabledCategories = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap |
+                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks |
+                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData |
+                                         TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory;
+            aConfig.iDumpData = EFalse;
+            break;
+            }
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeFull:
+            {
+            aConfig.iMode = aMode;
+            aConfig.iEnabledCategories = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryAll;
+            aConfig.iDumpData = ETrue;
+            aConfig.iThreadNameFilter = KNullDesC;
+            break;
+            }
+        case TMemSpyEngineHelperSysMemTrackerConfig::MemSpyEngineSysMemTrackerModeCustom:
+            {
+            aConfig.iMode = aMode;
+            aConfig.iEnabledCategories = iOriginalConfig.iEnabledCategories;
+            aConfig.iDumpData = iOriginalConfig.iDumpData;
+            aConfig.iThreadNameFilter = iOriginalConfig.iThreadNameFilter;
+            break;
+            }
+        default: User::Leave( KErrArgument );
+        }
+    // Push changes to SWMT
+    SetSwmtConfig( aConfig );
+    Settings().StoreSettingsL();
+    }
+
+
+TInt CMemSpyViewHeapTracking::AsyncStopTimerCallback( TAny* aParam )
+    {
+    CMemSpyViewHeapTracking* view = static_cast<CMemSpyViewHeapTracking*>( aParam );
+    return view->AsyncStopTimerCallback();
+    }
+
+
+TInt CMemSpyViewHeapTracking::AsyncStopTimerCallback()
+    {
+    iState = EMemSpyViewHeapTrackingStateIdle;
+   // iEngine.HelperSysMemTracker().RemoveObserver( this );
+    TRAP_IGNORE(
+    	iMemSpySession.StopSwmtTimerL();
+        RefreshL();
+        );
+    delete iStopTimerCallBack;
+    iStopTimerCallBack = NULL;
+    return KErrNone;
+    }
+
+void CMemSpyViewHeapTracking::GetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
+	{
+	TInt categories = 0;
+	iMemSpySession.GetSwmtCategoriesL( categories );
+	aConfig.iEnabledCategories = categories;
+	
+	TInt timerPeriod = 0;
+	iMemSpySession.GetSwmtTimerIntervalL( timerPeriod );
+	aConfig.iTimerPeriod = timerPeriod;
+	
+	TBool dumpData = EFalse;
+	iMemSpySession.GetSwmtHeapDumpsEnabledL( dumpData );
+	aConfig.iDumpData = dumpData;
+		     
+	TName threadNameFilter;
+	iMemSpySession.GetSwmtFilter( threadNameFilter );
+	aConfig.iThreadNameFilter = threadNameFilter;
+		
+	TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode mode;
+	iMemSpySession.GetSwmtMode( mode );
+	aConfig.iMode = mode;	     	
+	}
+
+void CMemSpyViewHeapTracking::SetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
+	{
+	iMemSpySession.SetSwmtMode( aConfig.iMode );
+	iMemSpySession.SetSwmtCategoriesL( aConfig.iEnabledCategories );
+	iMemSpySession.SetSwmtTimerIntervalL( aConfig.iTimerPeriod.Int() );
+	iMemSpySession.SetSwmtHeapDumpsEnabledL( aConfig.iDumpData );
+	iMemSpySession.SetSwmtFilter( aConfig.iThreadNameFilter );
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTrackingResults.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,515 @@
+/*
+* 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 "MemSpyViewHeapTrackingResults.h"
+
+// System includes
+#include <hal.h>
+#ifdef __EPOC32__
+#include <e32rom.h>
+#endif
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackercyclechange.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackerenums.h>
+#include <memspy/engine/memspyenginehelpersysmemtracker.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+#include <memspyui.rsg>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyContainer.h"
+#include "MemSpyViewHeapTracking.h"
+#include "MemSpyContainerObserver.h"
+
+
+_LIT( KCycle, "Cycle" );
+_LIT( KTime, "Time" );
+_LIT( KMemoryFree, "Memory Free" );
+_LIT( KMemoryChange, "Memory Change (vs. Last Cycle)" );
+_LIT( KNumOfChanges, "Number of Changes" );
+
+CMemSpyViewHeapTrackingResults::CMemSpyViewHeapTrackingResults( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    //iEngine.HelperSysMemTracker().SetObserver( this );
+    }
+
+
+CMemSpyViewHeapTrackingResults::~CMemSpyViewHeapTrackingResults()
+    {
+    //iEngine.HelperSysMemTracker().RemoveObserver( this );
+    }
+
+
+void CMemSpyViewHeapTrackingResults::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Results Summary" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    // Make sure the correct item is selected
+    const TInt cycleNumber = ((TInt) aSelectionRune);    
+    TInt maxCycle = iMemSpySession.GetSwmtCyclesCount();    
+    if  ( cycleNumber > 0 && cycleNumber <= maxCycle )
+        {
+        iListBox->SetCurrentItemIndex( cycleNumber - 1 );
+        HandleListBoxItemSelectedL( cycleNumber );
+        }
+    }
+
+
+void CMemSpyViewHeapTrackingResults::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewHeapTrackingResults::ViewType() const
+    {
+    return EMemSpyViewTypeHeapTrackingResults;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareParentViewL()
+    {
+    CMemSpyViewHeapTracking* parent = new(ELeave) CMemSpyViewHeapTracking( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    //
+   // iEngine.HelperSysMemTracker().RemoveObserver( this );
+    //
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareChildViewL()
+    {
+    const TInt index = iListBox->CurrentItemIndex();
+    //
+    CMemSpyViewBase* child = NULL;
+    
+    if  ( index >= 0 )
+        {
+        //const CMemSpyEngineHelperSysMemTrackerCycle* cycle = iEngine.HelperSysMemTracker().CompletedCycles()[ index ];
+		const CMemSpyApiMemoryTrackingCycle* cycle = iCycles[ index ];
+        //
+        child = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iMemSpySession, iObserver, *cycle );
+        CleanupStack::PushL( child );
+        child->ConstructL( Rect(), *Parent() );
+        CleanupStack::Pop( child );
+        //
+        //iEngine.HelperSysMemTracker().RemoveObserver( this );
+        }
+    
+    //
+    return child;
+    }
+
+
+void CMemSpyViewHeapTrackingResults::SetListBoxModelL()
+    {
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+            
+    iMemSpySession.GetMemoryTrackingCyclesL( iCycles );
+    
+    CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iCycles.Count());
+    
+    for ( TInt i = 0; i < iCycles.Count(); i++ )
+     	{
+ 		HBufC* tempName = HBufC::NewL( iCycles[i]->Caption().Length() + 16 );
+     	CleanupStack::PushL( tempName );
+     	TPtr tempNamePtr( tempName->Des() );     
+     	
+     	TBuf<KMaxName> temp;
+     	temp.Copy(iCycles[i]->Caption());  	
+     	tempNamePtr.Append( temp );
+     	model->AppendL( tempNamePtr );
+     	
+     	CleanupStack::PopAndDestroy( tempName ); 
+     	}    
+        
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewHeapTrackingResults::HandleCyclesResetL()
+    {
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewHeapTrackingResults::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+    }
+
+
+void CMemSpyViewHeapTrackingResults::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+	TInt count = iMemSpySession.GetSwmtCyclesCount();    
+	SetListBoxCurrentItemIndexL( count - 1 );
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewHeapTrackingResultsCycleInfo::CMemSpyViewHeapTrackingResultsCycleInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, const CMemSpyApiMemoryTrackingCycle& aCycle )
+:   CMemSpyViewBase( aSession, aObserver ), iCycle( aCycle )
+    {
+    //iEngine.HelperSysMemTracker().SetObserver( this );
+    }
+
+
+CMemSpyViewHeapTrackingResultsCycleInfo::~CMemSpyViewHeapTrackingResultsCycleInfo()
+    {
+    //iEngine.HelperSysMemTracker().RemoveObserver( this );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitleFormat, "Cycle Summary [%04d]" );
+    TBuf<30> buf;
+    buf.Format( KTitleFormat, iCycle.CycleNumber() );
+    SetTitleL( buf );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    // Make sure the correct item is selected
+    const TInt index = ((TInt) aSelectionRune);
+    iListBox->SetCurrentItemIndex( index );
+    HandleListBoxItemSelectedL( index );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewHeapTrackingResultsCycleInfo::ViewType() const
+    {
+    return EMemSpyViewTypeHeapTrackingResultsCycleInfo;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingResultsCycleInfo::PrepareParentViewL()
+    {
+    CMemSpyViewHeapTrackingResults* parent = new(ELeave) CMemSpyViewHeapTrackingResults( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) iCycle.CycleNumber() );
+    CleanupStack::Pop( parent );
+    //
+    //iEngine.HelperSysMemTracker().RemoveObserver( this );
+    //
+    return parent;
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::SetListBoxModelL()
+    {
+	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( 6 );
+			
+	HBufC* buf = HBufC::NewL( 64 );
+	TPtr pBuf( buf->Des() );
+	
+	TBuf<4> cycleBuf;
+	_LIT( KCycleFormat, "%d");
+	cycleBuf.Format( KCycleFormat, iCycle.CycleNumber() );
+	
+	pBuf.Zero();	
+	pBuf.Append( _L("\t") );
+	pBuf.Append( KCycle );
+	pBuf.Append( _L("\t\t") );
+	pBuf.Append( cycleBuf );	
+	model->AppendL( pBuf );
+	
+	//time:
+	TBuf<128> timeBuf;
+    const TDateTime dt = iCycle.Time().DateTime();
+    //
+    _LIT( KTimeFormatSpec, "%04d%02d%02d %02d:%02d:%02d" );
+    timeBuf.Format( KTimeFormatSpec, dt.Year(), dt.Month()+1, dt.Day()+1, dt.Hour(), dt.Minute(), dt.Second() );	    
+    pBuf.Zero();
+    pBuf.Append( _L("\t"));
+    pBuf.Append( KTime );
+    pBuf.Append( _L("\t\t") );        
+    pBuf.Append( timeBuf );         
+	model->AppendL( pBuf );
+	
+	TBuf<16> memoryFreeBuf;	
+	memoryFreeBuf.Format( KCycleFormat, iCycle.FreeMemory() );
+	pBuf.Zero();	
+	pBuf.Append( _L("\t") );
+	pBuf.Append( KMemoryFree );
+	pBuf.Append( _L("\t\t") );
+	pBuf.Append( memoryFreeBuf );
+	model->AppendL( pBuf );
+	
+	memoryFreeBuf.Format( KCycleFormat, iCycle.MemoryDelta() );
+	pBuf.Zero();	
+	pBuf.Append( _L("\t") );
+	pBuf.Append( KMemoryChange );
+	pBuf.Append( _L("\t\t") );
+	pBuf.Append( memoryFreeBuf );
+	model->AppendL( pBuf );
+	
+	cycleBuf.Format( KCycleFormat, iCycle.ChangeCount() );
+	pBuf.Zero();	
+	pBuf.Append( _L("\t") );
+	pBuf.Append( KNumOfChanges );
+	pBuf.Append( _L("\t\t") );
+	pBuf.Append( cycleBuf );
+	model->AppendL( pBuf );	
+	
+	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+	listbox->Model()->SetItemTextArray( model );
+	listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCyclesResetL()
+    {
+    Container().NavigateToParentViewL();
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+    }
+
+
+void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
+    {
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+
+
+
+CMemSpyViewHeapTrackingResultsChangeDescriptor::CMemSpyViewHeapTrackingResultsChangeDescriptor( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle, const CMemSpyEngineHelperSysMemTrackerCycleChange& aChangeDescriptor, TInt aIndex )
+:   CMemSpyViewBase( aEngine, aObserver ), iCycle( aCycle ), iChangeDescriptor( aChangeDescriptor ), iIndex( aIndex )
+    {
+    iEngine.HelperSysMemTracker().SetObserver( this );
+    }
+
+
+CMemSpyViewHeapTrackingResultsChangeDescriptor::~CMemSpyViewHeapTrackingResultsChangeDescriptor()
+    {
+    iEngine.HelperSysMemTracker().RemoveObserver( this );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    TBuf<30> buf;
+    if  ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapUser )
+        {
+        _LIT( KTitleFormat, "User Heap Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapKernel )
+        {
+        _LIT( KTitleFormat, "Kernel Heap Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeChunk )
+        {
+        _LIT( KTitleFormat, "Chunk Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeRamDrive )
+        {
+        _LIT( KTitleFormat, "RAM Drive Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeStack )
+        {
+        _LIT( KTitleFormat, "Stack Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeGlobalData )
+        {
+        _LIT( KTitleFormat, "Global Data Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeCode )
+        {
+        _LIT( KTitleFormat, "RAM-Loaded Code Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHandle )
+        {
+        _LIT( KTitleFormat, "Handle Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeOpenFile )
+        {
+        _LIT( KTitleFormat, "Open File Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeDiskSpace )
+        {
+        _LIT( KTitleFormat, "Disk Space Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeBitmap )
+        {
+        _LIT( KTitleFormat, "Bitmap Change [%04d]" );
+        buf.Format( KTitleFormat, iCycle.CycleNumber() );
+        }
+    //
+    SetTitleL( buf );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewHeapTrackingResultsChangeDescriptor::ViewType() const
+    {
+    return EMemSpyViewTypeHeapTrackingResultsCycleChangeDescriptor;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingResultsChangeDescriptor::PrepareParentViewL()
+    {
+    CMemSpyViewHeapTrackingResultsCycleInfo* parent = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iEngine, iObserver, iCycle );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) iIndex );
+    CleanupStack::Pop( parent );
+    //
+    iEngine.HelperSysMemTracker().RemoveObserver( this );
+    //
+    return parent;
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::SetListBoxModelL()
+    {
+    MDesCArray& model = const_cast< MDesCArray& >( static_cast< const MDesCArray&>( iChangeDescriptor ) );
+    //
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( &model );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCyclesResetL()
+    {
+    CMemSpyViewHeapTrackingResults* mainResultsMenu = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
+    CleanupStack::PushL( mainResultsMenu );
+    mainResultsMenu->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( mainResultsMenu );
+    //
+    Container().SetNewActiveViewL( mainResultsMenu );
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
+    {
+    }
+
+
+void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
+    {
+    }
+*/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTrackingSettings.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,470 @@
+/*
+* 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 "MemSpyViewHeapTrackingSettings.h"
+
+// System includes
+#include <hal.h>
+#ifdef __EPOC32__
+#include <e32rom.h>
+#endif
+#include <AknQueryDialog.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelpersysmemtracker.h>
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+#include <memspyui.rsg>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpySettings.h"
+#include "MemSpyViewHeapTracking.h"
+#include "MemSpyContainerObserver.h"
+
+/*
+CMemSpyViewHeapTrackingSettings::CMemSpyViewHeapTrackingSettings( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+*/
+CMemSpyViewHeapTrackingSettings::CMemSpyViewHeapTrackingSettings( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+
+CMemSpyViewHeapTrackingSettings::~CMemSpyViewHeapTrackingSettings()
+    {
+    }
+
+
+void CMemSpyViewHeapTrackingSettings::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Settings" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewHeapTrackingSettings::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::SizeChanged();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewHeapTrackingSettings::ViewType() const
+    {
+    return EMemSpyViewTypeHeapTrackingSettings;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingSettings::PrepareParentViewL()
+    {
+    CMemSpyViewHeapTracking* parent = new(ELeave) CMemSpyViewHeapTracking( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewHeapTrackingSettings::PrepareChildViewL()
+    {
+    const TInt index = iListBox->CurrentItemIndex();
+
+    // Get current config    
+    TMemSpyEngineHelperSysMemTrackerConfig config;    
+    GetSwmtConfig( config );
+
+    // This view abuses the child view callback to toggle field values and/or
+    // display settings dialogs.
+    if  ( index == 0 )
+        {
+        TInt period = config.iTimerPeriod.Int() / 1000000;
+        CAknNumberQueryDialog* dialog = new(ELeave) CAknNumberQueryDialog( period );
+        if  ( dialog->ExecuteLD( R_MEMSPY_HEAP_TRACKER_TIMER_PERIOD ) )
+            {
+            config.iTimerPeriod = period * 1000000;
+            }
+        }
+    else if ( index == 1 )
+        {
+        TInt categories( config.iEnabledCategories );
+        CSWMTCategorySelectionCheckBoxSettingItem* settingItem = new (ELeave) CSWMTCategorySelectionCheckBoxSettingItem( 0, categories );
+        CleanupStack::PushL( settingItem );
+        settingItem->ConstructL( EFalse,
+                                 0,
+                                 _L("SWMT Categories"),
+                                 NULL,
+                                 R_MEMSPYUI_SWMT_CATEGORIES_SETTING_PAGE,
+                                 EAknCtPopupSettingList,
+                                 NULL,
+                                 NULL );
+        
+        CMemSpySWMTCategorySelectionCheckBoxSettingPage* dlg = new(ELeave) CMemSpySWMTCategorySelectionCheckBoxSettingPage( R_MEMSPYUI_SWMT_CATEGORIES_SETTING_PAGE, settingItem->ItemArray() );
+        dlg->SetSettingPageObserver( settingItem );
+        if  ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+            {
+            config.iEnabledCategories = categories;
+            }
+        CleanupStack::PopAndDestroy( settingItem );
+        }
+    else if ( index == 2 )
+        {
+        config.iDumpData = !config.iDumpData;
+        }
+    else if  ( index == 3 )
+        {
+        TName nameFilter;
+        nameFilter.Copy( config.iThreadNameFilter );
+        CMemSpyAllowEmptyDataDialog* dialog = new (ELeave) CMemSpyAllowEmptyDataDialog( nameFilter );
+        if  ( dialog->ExecuteLD( R_MEMSPY_HEAP_TRACKER_NAME_FILTER ) )
+            {
+            config.iThreadNameFilter = nameFilter;
+            }
+        }
+    
+    // Push changes to SWMT    
+    SetSwmtConfig( config );
+    Settings().StoreSettingsL();
+
+    RefreshL();
+    return NULL;
+    }
+
+
+void CMemSpyViewHeapTrackingSettings::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    // Get current config    
+    TMemSpyEngineHelperSysMemTrackerConfig config;    
+    GetSwmtConfig( config );
+
+    // 1st item
+    _LIT( KItem1Format, "\tTracking timer period\t\t%d (sec)" );
+    item.Format( KItem1Format, config.iTimerPeriod.Int() / 1000000 );
+    model->AppendL( item );
+    
+    // 2nd item
+    _LIT( KItem3Format, "\tCategories\t\t%d selected" );
+    
+    TInt count(0);
+    for( TInt bit = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups; bit > 0; bit = bit >> 1 )
+        {
+        if ( bit & config.iEnabledCategories )
+            {
+            count++;
+            }
+        }
+    
+    item.Format( KItem3Format, count );
+    model->AppendL( item );
+
+    // following items are related only to User Heap category, 
+    // so hide them if User Heap is not selected
+    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap )
+        {
+        // 3th item
+        _LIT( KItem2Format, "\tDump data" );
+        PrepareItemBufL( item, KItem2Format, config.iDumpData, config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap && config.iThreadNameFilter.Length() > 0 );
+        model->AppendL( item );
+        
+        // 4th item
+        if ( config.iDumpData )
+            {
+            _LIT( KItem4Format, "\tHeap data thread filter\t\t%S" );
+            if ( config.iThreadNameFilter.Length() > 0 )
+                {
+                item.Format( KItem4Format, &config.iThreadNameFilter );
+                }
+            else
+                {
+                item.Format( KItem4Format, &_L("No filtering") );
+                }
+            model->AppendL( item );        
+            }        
+        }
+    
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+void CMemSpyViewHeapTrackingSettings::PrepareItemBufL( TDes& aBuf, const TDesC& aCaption, TBool aStatus, TBool aHeapCategorySelected )
+    {
+    aBuf.Copy( aCaption ); 
+    //
+    if  ( aStatus )
+        {
+        if ( aHeapCategorySelected )
+            {
+            _LIT( KItemEnabled, "\t\tCustom" );
+            aBuf.Append( KItemEnabled );            
+            }
+        else
+            {
+            _LIT( KItemEnabled, "\t\tAll user heaps" );
+            aBuf.Append( KItemEnabled );   
+            }
+        }
+    else
+        {
+        _LIT( KItemDisabled, "\t\tDisabled" );
+        aBuf.Append( KItemDisabled );
+        }
+    }
+
+void CMemSpyViewHeapTrackingSettings::GetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
+	{
+	TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode mode;
+	iMemSpySession.GetSwmtMode( mode );
+	aConfig.iMode = mode;
+	     
+	TInt categories = 0;
+	iMemSpySession.GetSwmtCategoriesL( categories );
+	aConfig.iEnabledCategories = categories;
+	     
+	TInt timerPeriod = 0;
+	iMemSpySession.GetSwmtTimerIntervalL( timerPeriod );
+	aConfig.iTimerPeriod = timerPeriod;
+	     
+	TBool dumpData = EFalse;
+	iMemSpySession.GetSwmtHeapDumpsEnabledL( dumpData );
+	aConfig.iDumpData = dumpData;
+	     
+	TName threadNameFilter;
+	iMemSpySession.GetSwmtFilter( threadNameFilter );
+	aConfig.iThreadNameFilter = threadNameFilter;
+	}
+
+void CMemSpyViewHeapTrackingSettings::SetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig )
+	{
+	iMemSpySession.SetSwmtMode( aConfig.iMode );
+	iMemSpySession.SetSwmtCategoriesL( aConfig.iEnabledCategories );
+	iMemSpySession.SetSwmtTimerIntervalL( aConfig.iTimerPeriod.Int() );
+	iMemSpySession.SetSwmtHeapDumpsEnabledL( aConfig.iDumpData );
+	iMemSpySession.SetSwmtFilter( aConfig.iThreadNameFilter );
+	}
+
+
+
+
+
+
+
+
+
+
+// --------------------------------------------------------------------------------------------
+
+CSWMTCategorySelectionCheckBoxSettingItem::CSWMTCategorySelectionCheckBoxSettingItem( TInt aIdentifier, TInt& aCategories ): 
+    CAknSettingItem(aIdentifier), iExtCategories( aCategories ) 
+    {
+    }   
+
+
+CSWMTCategorySelectionCheckBoxSettingItem::~CSWMTCategorySelectionCheckBoxSettingItem()
+    {
+    delete iSettingText;
+    if( iItemArray )
+        {
+        iItemArray->ResetAndDestroy();
+        delete iItemArray;
+        }
+    }
+
+
+CSelectionItemList* CSWMTCategorySelectionCheckBoxSettingItem::ItemArray() const
+    {
+    return iItemArray;
+    }
+
+
+void CSWMTCategorySelectionCheckBoxSettingItem::AddNewItemToArrayL(const TDesC& aLabel)
+    {
+    TBuf<64> buf;
+    buf.Copy( aLabel );    
+    CSelectableItem* item = new (ELeave) CSelectableItem( buf, EFalse );
+    CleanupStack::PushL( item );
+    item->ConstructL();
+    iItemArray->AppendL( item ); // Ownership is transferred
+    CleanupStack::Pop(); // item    
+    }
+    
+
+void CSWMTCategorySelectionCheckBoxSettingItem::CompleteConstructionL()
+    {
+    SetEmptyItemTextL(_L("Nothing selected"));
+    iItemArray = new(ELeave) CSelectionItemList(16);
+    AddNewItemToArrayL( _L("User Heap") );       // 0
+    AddNewItemToArrayL( _L("Kernel Heap") );     // 1
+    AddNewItemToArrayL( _L("User Stacks") );     // 2
+    AddNewItemToArrayL( _L("Global Data") );     // 3
+    AddNewItemToArrayL( _L("Disk Usage") );      // 4
+    AddNewItemToArrayL( _L("Open Files") );      // 5
+    AddNewItemToArrayL( _L("RAM-loaded Code") ); // 6
+    AddNewItemToArrayL( _L("System Memory") );   // 7
+    AddNewItemToArrayL( _L("Local Chunks") );    // 8
+    AddNewItemToArrayL( _L("Global Chunks") );   // 9
+    AddNewItemToArrayL( _L("RAM Drive") );       // 10
+    AddNewItemToArrayL( _L("FileServer Cache") );// 11
+    AddNewItemToArrayL( _L("Kernel Handles") );  // 12
+    AddNewItemToArrayL( _L("Bitmap Handles") );  // 13
+    AddNewItemToArrayL( _L("Window Groups") );   // 14
+    }
+
+
+void CSWMTCategorySelectionCheckBoxSettingItem::StoreL()
+    {
+    iExtCategories = 0;
+    if ( iItemArray->At( 11 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache; 
+    if ( iItemArray->At( 13 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles; 
+    if ( iItemArray->At( 0 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap; 
+    if ( iItemArray->At( 1 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap; 
+    if ( iItemArray->At( 8 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks; 
+    if ( iItemArray->At( 9 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks; 
+    if ( iItemArray->At( 10 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive; 
+    if ( iItemArray->At( 2 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks; 
+    if ( iItemArray->At( 3 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData; 
+    if ( iItemArray->At( 6 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode; 
+    if ( iItemArray->At( 12 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles; 
+    if ( iItemArray->At( 5 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles; 
+    if ( iItemArray->At( 4 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage; 
+    if ( iItemArray->At( 7 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory; 
+    if ( iItemArray->At( 14 )->SelectionStatus() )
+        iExtCategories |= TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups; 
+    }
+
+
+void CSWMTCategorySelectionCheckBoxSettingItem::LoadL()
+    {
+    iItemArray->At( 11 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache );
+    iItemArray->At( 13 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles );
+    iItemArray->At( 0 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap );
+    iItemArray->At( 1 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap );
+    iItemArray->At( 8 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks );
+    iItemArray->At( 9 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks );
+    iItemArray->At( 10 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive );
+    iItemArray->At( 2 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks );
+    iItemArray->At( 3 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData );
+    iItemArray->At( 6 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode );
+    iItemArray->At( 12 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles );
+    iItemArray->At( 5 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles );
+    iItemArray->At( 4 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage );
+    iItemArray->At( 7 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory );
+    iItemArray->At( 14 )->SetSelectionStatus( iExtCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups );
+    }
+
+
+void CSWMTCategorySelectionCheckBoxSettingItem::HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType )
+    {
+    switch( aEventType )
+        {
+        case EEventSettingOked:
+            {
+            // If settings oked, save new values
+            StoreL();
+            break;
+            }
+        case EEventSettingCancelled:
+            {
+            // If setting is cancelled, load old values
+            LoadL();
+            break;
+            }
+        case EEventSettingChanged:
+            {
+            // If setting has changed, update CBA visibility
+            static_cast<CMemSpySWMTCategorySelectionCheckBoxSettingPage*>( aSettingPage )->UpdateCba();
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    CAknSettingItem::HandleSettingPageEventL( aSettingPage, aEventType );
+    }
+
+
+CMemSpySWMTCategorySelectionCheckBoxSettingPage::CMemSpySWMTCategorySelectionCheckBoxSettingPage(TInt aResourceID, CSelectionItemList* aItemArray )
+    : CAknCheckBoxSettingPage( aResourceID, aItemArray )
+    {
+    }
+
+
+void CMemSpySWMTCategorySelectionCheckBoxSettingPage::UpdateCba()
+    {
+    // Cache the pointer to button group container
+    CEikButtonGroupContainer* cba = Cba();
+    // Left softkey should be visible if there are items selected,
+    // i.e. the selection index array has items.
+    TBool visible( ListBoxControl()->View()->SelectionIndexes()->Count() > 0 );
+    // Resolve left softkey command id
+    TInt leftId( cba->ButtonGroup()->CommandId( 0 ) );
+    // Check if left softkey visibility has changed
+    if( visible != cba->IsCommandVisible( leftId ) )
+        {
+        // Left softkey visibility has changed, update it
+        cba->MakeCommandVisible( leftId, visible );
+        }
+    }
+
+
+
+
+CMemSpyAllowEmptyDataDialog::CMemSpyAllowEmptyDataDialog( TDes& aText, const TTone& aTone )
+    : CAknTextQueryDialog( aText, aTone )
+    {
+    }
+ 
+
+void CMemSpyAllowEmptyDataDialog::UpdateLeftSoftKeyL()
+    {
+    MakeLeftSoftkeyVisible( ETrue );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewKernel.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,170 @@
+/*
+* 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 "MemSpyViewKernel.h"
+
+// System includes
+#include <hal.h>
+#ifdef __EPOC32__
+#include <e32rom.h>
+#endif
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewKernelHeap.h"
+#include "MemSpyViewKernelContainers.h"
+
+/*
+CMemSpyViewKernel::CMemSpyViewKernel( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+*/
+
+CMemSpyViewKernel::CMemSpyViewKernel( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+
+CMemSpyViewKernel::~CMemSpyViewKernel()
+    {
+    }
+
+
+void CMemSpyViewKernel::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Kernel" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    
+    // Make sure the correct item is selected
+    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
+    const TInt index = IndexByViewType( viewType );
+    iListBox->SetCurrentItemIndex( index );
+    HandleListBoxItemSelectedL( index );
+    }
+
+
+void CMemSpyViewKernel::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewKernel::ViewType() const
+    {
+    return EMemSpyViewTypeKernel;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernel::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernel::PrepareChildViewL()
+    {
+	
+    CMemSpyViewBase* child = NULL;
+    const TInt index = iListBox->CurrentItemIndex();
+    //
+    if  ( index == 0 )
+        {        
+		child = new(ELeave) CMemSpyViewKernelContainers( iMemSpySession, iObserver );
+        }
+    else if ( index == 1 )
+        {        
+		child = new(ELeave) CMemSpyViewKernelHeap( iMemSpySession, iObserver );
+        }
+	
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;    
+    }
+
+
+void CMemSpyViewKernel::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    // 1st item = Processes
+    _LIT( KItem1Format, "\tObjects" );
+    item.Format( KItem1Format );
+    model->AppendL( item );
+    
+    // 2nd item = System Config
+    _LIT( KItem2Format, "\tHeap" );
+    model->AppendL( KItem2Format );
+	
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+TInt CMemSpyViewKernel::IndexByViewType( TMemSpyViewType aType )
+    {
+    TInt index = 0;
+    //
+    switch( aType )
+        {
+    default:
+    case EMemSpyViewTypeKernelContainers:
+        index = 0;
+        break;
+        
+    case EMemSpyViewTypeKernelHeap:
+        index = 1;
+        break;
+        }
+        
+    //
+    return index;
+    }
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewKernelContainers.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,165 @@
+/*
+* 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 "MemSpyViewKernelContainers.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperkernelcontainers.h>
+
+#include <memspysession.h>
+#include <memspy/api/memspyapiprocess.h>
+#include <memspy/engine/memspyengineutils.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewKernel.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewKernelObjects.h"
+
+// Literal constants
+
+
+
+CMemSpyViewKernelContainers::CMemSpyViewKernelContainers( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+
+CMemSpyViewKernelContainers::~CMemSpyViewKernelContainers()
+    {
+    //delete iModel;
+    }
+
+
+void CMemSpyViewKernelContainers::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Kernel Objects" );
+    SetTitleL( KTitle );
+    //    
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewKernelContainers::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewKernelContainers::ViewType() const
+    {
+    return EMemSpyViewTypeKernelContainers;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelContainers::PrepareParentViewL()
+    {
+    CMemSpyViewKernel* parent = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelContainers::PrepareChildViewL()
+    {	
+    CMemSpyViewBase* child = NULL;
+    const TInt index = iListBox->CurrentItemIndex();
+    //child = new(ELeave) CMemSpyViewKernelObjects( iEngine, iObserver, iModel->At( index ).Type() );
+    child = new(ELeave) CMemSpyViewKernelObjects( iMemSpySession, iObserver, iKernelObjects[index]->Type() );
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;   
+    }
+
+
+void CMemSpyViewKernelContainers::SetListBoxModelL()
+    {	
+	iMemSpySession.GetKernelObjects( iKernelObjects );
+		
+	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iKernelObjects.Count() ); //array for formated items
+	
+	for( TInt i=0 ; i<iKernelObjects.Count() ; i++ )
+		{
+		TInt count = iKernelObjects[i]->Count();
+		TInt size = iKernelObjects[i]->Size();
+		const TMemSpySizeText sizeText( MemSpyUiUtils::FormatSizeText( size, 0 ) );
+								
+		HBufC* tempName = HBufC::NewL( iKernelObjects[i]->Name().Length() + 32 );
+		
+		CleanupStack::PushL( tempName );
+		TPtr tempNamePtr( tempName->Des() );
+		tempNamePtr.Copy( iKernelObjects[i]->Name() );									
+		
+		_LIT(KNameFormat, "\t%S\t\t%d item");
+		TPtr pName( tempName->Des() );
+		//
+		const TPtrC pType( MemSpyUiUtils::TypeAsString( iKernelObjects[i]->Type() ) );
+		//
+		pName.Format( KNameFormat, &pType, count );
+		//
+		if  ( count == 0 || count > 1 )
+			{
+			pName.Append( _L("s") );
+			}
+
+		pName.AppendFormat( _L(", %S"), &sizeText );
+		
+		model->AppendL( pName );
+		
+		CleanupStack::PopAndDestroy( tempName); //---
+		}
+	
+	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );	
+	listbox->Model()->SetItemTextArray( model );
+	listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+TBool CMemSpyViewKernelContainers::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdKernelContainersOutput:
+        OnCmdOutputAllContainerContentsL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewKernelContainers::OnCmdOutputAllContainerContentsL()
+    {
+	iMemSpySession.OutputAllContainerContents();		
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewKernelHeap.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,432 @@
+/*
+* 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 "MemSpyViewKernelHeap.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspy/engine/memspyengineoutputlist.h>
+
+#include <memspysession.h>
+#include <memspy/api/memspyapiheap.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewKernel.h"
+#include "MemSpyContainerObserver.h"
+
+// Constants
+const TInt KMemSpyBufferSize = 20;
+
+// Literal constants
+_LIT(KMemSpyHexFormat, "0x%08x");
+_LIT(KMemSpyUnsignedFormat, "%u");
+_LIT(KMemSpyDecFormat, "%d");
+_LIT(KMemSpyLongFormat, "%Ld");
+_LIT(KMemSpyCaptionYes, "Yes");
+_LIT(KMemSpyCaptionNo, "No");
+
+
+CMemSpyViewKernelHeap::CMemSpyViewKernelHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver ) //cigasto: remember to uncomment from MMP!
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+CMemSpyViewKernelHeap::~CMemSpyViewKernelHeap()
+    {
+    }
+
+
+void CMemSpyViewKernelHeap::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Kernel Heap" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewKernelHeap::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewKernelHeap::ViewType() const
+    {
+    return EMemSpyViewTypeKernelHeap;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelHeap::PrepareParentViewL()
+    {
+    CMemSpyViewKernel* parent = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelHeap::PrepareChildViewL()
+    {	
+    CMemSpyViewBase* child = NULL;
+    return child;    
+    }
+
+
+void CMemSpyViewKernelHeap::SetListBoxModelL()
+    {	
+	CMemSpyApiHeap* iHeap;
+	iHeap = iMemSpySession.GetHeap( );
+		
+	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( 22 );
+		
+	model = FormatModel( iHeap );	
+				
+	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+	listbox->Model()->SetItemTextArray( model );
+	listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );			
+	}
+
+
+TBool CMemSpyViewKernelHeap::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdKernelHeapDump:
+        OnCmdDumpKernelHeapL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewKernelHeap::OnCmdDumpKernelHeapL()
+    {	
+    iMemSpySession.DumpKernelHeap();
+    }
+
+
+//CDesCArrayFlat* CMemSpyViewKernelHeap::FormatModel( RArray<CMemSpyApiHeap*> &aHeap )
+CDesCArrayFlat* CMemSpyViewKernelHeap::FormatModel( CMemSpyApiHeap* aHeap )
+	{
+	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( 2 );
+	
+	if (aHeap) 
+	    {
+        _LIT( KItem0, "Heap type" );		   	  
+        _LIT( KItem1, "Heap size" );	  
+        _LIT( KItem8b, "Heap base address" );	        	       
+        _LIT( KItem1b, "Shared" );	        
+        _LIT( KItem2, "Chunk size" );
+        _LIT( KItem3, "Alloc. count" );
+        _LIT( KItem4, "Free. count" );
+        _LIT( KItem5, "Biggest alloc." );
+        _LIT( KItem6, "Biggest free" );
+        _LIT( KItem6a, "Total alloc." );
+        _LIT( KItem6b, "Total free" );
+        _LIT( KItem7, "Slack free space" );
+        _LIT( KItem8a, "Fragmentation" );
+        _LIT( KItem13, "Header size (A)" );
+        _LIT( KItem14, "Header size (F)" );
+        _LIT( KItem9a, "Overhead (alloc)" );
+        _LIT( KItem9b, "Overhead (free)" );
+        _LIT( KItem9c, "Overhead (total)" );
+        _LIT( KItem9d, "Overhead" );
+        _LIT( KItem10, "Min. length" );
+        _LIT( KItem11, "Max. length" );
+        _LIT( KItem12, "Debug Allocator Library" );
+         
+        HBufC* hItem = FormatItem( KItem0, aHeap->Type() );
+        TPtr pItem(hItem->Des());
+        model->AppendL( pItem );
+        pItem.Zero();	
+        
+        hItem = FormatItem( KItem1, aHeap->Size() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();	
+        
+        TUint address( aHeap->BaseAddress() );	
+        hItem = FormatItem( KItem8b, address );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        if(aHeap->Shared()) //Yes / No value formatting		
+            hItem = FormatItem( KItem1b, KMemSpyCaptionYes );		
+        else		
+            hItem = FormatItem( KItem1b, KMemSpyCaptionNo );	
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem2, aHeap->ChunkSize() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem3, aHeap->AllocationsCount() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem4, aHeap->FreeCount() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem5, aHeap->BiggestAllocation() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem6, aHeap->BiggestFree() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem6a, aHeap->TotalAllocations() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem6b, aHeap->TotalFree() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem7, aHeap->SlackFreeSpace() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        TReal iOneHundred( aHeap->Size() );
+        TReal iValue( aHeap->Fragmentation() );	
+        hItem = FormatPercentageItem( KItem8a, iOneHundred, iValue );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem13, aHeap->HeaderSizeA() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem14, aHeap->HeaderSizeF() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem9a, aHeap->AllocationOverhead() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem9b, aHeap->FreeOverhead() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem9c, aHeap->TotalOverhead() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        TReal iOverhead( aHeap->Overhead() );	
+        hItem = FormatPercentageItem( KItem9d, iOneHundred, iOverhead );	
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        hItem = FormatItem( KItem10, aHeap->MinLength() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+            
+        hItem = FormatItem( KItem11, aHeap->MaxLength() );
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+        
+        if( aHeap->DebugAllocatorLibrary() )		
+            hItem = FormatItem( KItem12, KMemSpyCaptionYes );		
+        else
+            hItem = FormatItem( KItem12, KMemSpyCaptionNo );	
+        pItem = hItem->Des();
+        model->AppendL( pItem );
+        pItem.Zero();
+	    }
+	else
+	    {
+        HBufC* hItem = FormatItem( _L("Not Found"), _L("") );
+        TPtr pItem(hItem->Des());
+        model->AppendL( pItem );
+        pItem.Zero();	    
+	    }
+	
+	return model;
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, const TDesC& aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( aValue );
+	return retBuf;
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TInt aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+    
+	TBuf<KMemSpyBufferSize> val;
+    val.Format( KMemSpyDecFormat, aValue );
+    
+    pRetBuf.Append( _L("\t") );
+    pRetBuf.Append( aCaption );
+    pRetBuf.Append( _L("\t\t") );
+    pRetBuf.Append( val );    
+	
+	return retBuf;
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+    
+	TBuf<KMemSpyBufferSize> val;
+    //val.Format( KMemSpyDecFormat, aValue );
+	val.Format( KMemSpyHexFormat, aValue );
+    
+    pRetBuf.Append( _L("\t") );
+    pRetBuf.Append( aCaption );
+    pRetBuf.Append( _L("\t\t") );
+    pRetBuf.Append( val );    
+	
+	return retBuf;	
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, const TInt64& aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+	    
+	TBuf<KMemSpyBufferSize> val;
+	val.Format( KMemSpyLongFormat, aValue );
+	    
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( val );    
+		
+	return retBuf;	
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TAny* aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+		    
+	TBuf<KMemSpyBufferSize> val;
+	val.Format( KMemSpyHexFormat, aValue );
+		    
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( val );    
+			
+	return retBuf;	
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint* aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+		    
+	TBuf<KMemSpyBufferSize> val;
+	val.Format( KMemSpyHexFormat, aValue );
+		    
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( val );    
+			
+	return retBuf;	
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TUint8* aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+		    
+	TBuf<KMemSpyBufferSize> val;
+	val.Format( KMemSpyHexFormat, aValue );
+		    
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( val );    
+			
+	return retBuf;	
+	}
+
+HBufC* CMemSpyViewKernelHeap::FormatPercentageItem( const TDesC& aCaption, TReal aOneHundredPercentValue, TReal aValue )
+	{
+	HBufC* retBuf = HBufC::NewL( KMaxName );	//buffer for formatted item
+	TPtr pRetBuf( retBuf->Des() );
+	pRetBuf.Zero();
+	
+    const TReal value = (TInt) (( aValue / aOneHundredPercentValue) * 100.0); // percentage value calculation    
+    _LIT(KPercentFormat, "%3.2f %%");
+    TMemSpyPercentText val;
+    val.Format( KPercentFormat, value );
+    
+	pRetBuf.Append( _L("\t") );
+	pRetBuf.Append( aCaption );
+	pRetBuf.Append( _L("\t\t") );
+	pRetBuf.Append( val );    
+			
+	return retBuf;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,875 @@
+/*
+* 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 "MemSpyViewKernelObjects.h"
+
+// System includes
+#include <eikspane.h>
+#include <aknnavide.h> 
+#include <akntabgrp.h>
+#include <eikclbd.h>
+#include <AknQueryDialog.h>
+#include <aknnotewrappers.h>
+#include <apgwgnam.h>
+#include <aknmessagequerydialog.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperkernelcontainers.h>
+#include <memspy/engine/memspyenginehelperserver.h>
+#include <memspy/engine/memspyenginehelpercondvar.h>
+
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewKernel.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewKernelContainers.h"
+
+const TInt KMaxInfoLength = 128;
+
+/*
+CMemSpyViewKernelObjects::CMemSpyViewKernelObjects( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType )
+:   CMemSpyViewBase( aEngine, aObserver ),
+    iObjectType( aObjectType ),
+    iCurrItemIndex( KErrNotFound )
+    {
+    }
+*/
+CMemSpyViewKernelObjects::CMemSpyViewKernelObjects( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TMemSpyDriverContainerType aObjectType )
+:   CMemSpyViewBase( aSession, aObserver ),
+    iObjectType( aObjectType ),
+    iCurrItemIndex( KErrNotFound )
+    {
+    }
+
+
+CMemSpyViewKernelObjects::~CMemSpyViewKernelObjects()
+    {
+    if ( iNavContainer && iNavDecorator )
+        {
+        iNavContainer->Pop( iNavDecorator );
+        delete iNavDecorator;
+        }
+    delete iModel;
+    delete iItems;
+    delete iObjectList;
+    }
+
+
+void CMemSpyViewKernelObjects::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Kernel Objects" );
+    SetTitleL( KTitle );
+    iItems = new(ELeave) CDesCArrayFlat(5);
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    CreateTabsL();
+    }
+
+
+CEikListBox* CMemSpyViewKernelObjects::ConstructListBoxL()
+    {
+    delete iListBox;
+    iListBox = NULL;
+    CAknSingleStyleListBox* listbox = new (ELeave) CAknSingleStyleListBox();
+    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 CMemSpyViewKernelObjects::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewKernelObjects::ViewType() const
+    {
+    return EMemSpyViewTypeKernelObjects;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelObjects::PrepareParentViewL()
+    {	
+	if ( iNaviPane && iNavDecorator )
+	   {
+		iNaviPane->Pop( iNavDecorator );
+		delete iNavDecorator;
+		iNavDecorator = NULL;
+	   }	
+    //CMemSpyViewBase* parent = new(ELeave) CMemSpyViewKernelContainers( iEngine, iObserver );
+    CMemSpyViewBase* parent = new(ELeave) CMemSpyViewKernelContainers( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewKernelObjects::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    if ( iListBox && 
+         iListBox->Model()->NumberOfItems() && 
+         iListBox->CurrentItemIndex() > KErrNotFound )
+        {
+        DetailsL();
+        }
+    return child;
+    }
+
+
+void CMemSpyViewKernelObjects::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+       {
+       if ( iObjectType > EMemSpyDriverContainerTypeProcess )
+           {
+           // Display Terminate, Switch to, End and Panic
+           // commands only for Threads and processes
+           aMenuPane->SetItemDimmed( EMemSpyCmdKernelObjects, ETrue );
+           }
+        }
+    }
+
+
+void CMemSpyViewKernelObjects::SetListBoxModelL()
+    {
+    //_LIT( KLineFormatSpec, "\t%S" );
+    _LIT( KTab, "\t" );
+       
+    iMemSpySession.GetKernelObjectItems( iKernelObjectItems, iObjectType );    
+    
+    iModel = new (ELeave) CDesC16ArrayFlat( iKernelObjectItems.Count() + 1 ); //array for formated items, +1 added there for 0 case - creating 0-sized array panics
+        
+    for ( TInt i = 0; i < iKernelObjectItems.Count(); i++ )
+        {
+        HBufC* tempName = HBufC::NewL( iKernelObjectItems[i]->Name().Length() + 16 );
+        CleanupStack::PushL( tempName );
+        TPtr tempNamePtr( tempName->Des() );
+        tempNamePtr.Copy( KTab );
+    	
+        TBuf<KMaxName> temp;
+        temp.Copy(iKernelObjectItems[i]->Name());    	
+        tempNamePtr.Append( temp	 );
+        iModel->AppendL( tempNamePtr );
+            
+        CleanupStack::PopAndDestroy( tempName ); 
+        }
+    
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iModel );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );       
+    }
+
+
+TBool CMemSpyViewKernelObjects::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+        case EMemSpyCmdKernelObjectTerminate:
+            {
+            TRAPD( err, OnCmdTerminateL() );
+            if ( err )
+                {
+                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
+                note->ExecuteLD( _L("Cannot terminate task") );
+                }
+            break;
+            }
+        case EMemSpyCmdKernelObjectSwitchTo:
+            {
+            TRAPD( err, OnCmdSwitchToL() );
+            if ( err )
+                {
+                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
+                note->ExecuteLD( _L("Cannot bring to foreground") );
+                }
+            break;
+            }
+        case EMemSpyCmdKernelObjectEnd:
+            {
+            TRAPD( err, OnCmdEndL() );
+            if ( err )
+                {
+                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
+                note->ExecuteLD( _L("Cannot end task") );
+                }
+            break;
+            }
+        case EMemSpyCmdKernelObjectPanic:
+            {
+            TRAPD( err, OnCmdPanicL() );
+            if ( err )
+                {
+                CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote( ETrue );
+                note->ExecuteLD( _L("Cannot panic task") );
+                }
+            break;
+            }
+        default:
+            {
+            handled = CMemSpyViewBase::HandleCommandL( aCommand );
+            break;        
+            }
+        }
+    //
+    return handled;
+    }
+
+
+TKeyResponse CMemSpyViewKernelObjects::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {	
+    TKeyResponse resp = EKeyWasNotConsumed;
+    resp = CMemSpyViewBase::OfferKeyEventL( aKeyEvent, aType );    
+    //}
+    return resp;
+    }
+
+void CMemSpyViewKernelObjects::TabChangedL( TInt /*aIndex*/ )
+    {
+    }
+
+
+void CMemSpyViewKernelObjects::OnCmdTerminateL()
+    {
+    switch ( iObjectType )
+        {
+        case EMemSpyDriverContainerTypeThread:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            
+            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread
+                        
+            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+				
+				if ( doTerminate )
+					{
+					iMemSpySession.EndThreadL( id, ETerminate );
+					RefreshL();
+					}
+            	}                                  
+            break;
+            }        
+        case EMemSpyDriverContainerTypeProcess:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
+            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
+                doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                
+                if( doTerminate )
+                	{
+                    iMemSpySession.EndProcessL( id, ETerminate );     
+                    RefreshL();
+                    }
+            	}                     
+            break;
+            }
+        default:
+            {
+            // Programming error
+            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
+            }
+        }
+    }
+
+
+void CMemSpyViewKernelObjects::OnCmdSwitchToL()
+    {	
+	TBool brought = EFalse;
+	/*
+    TInt wgCount;
+    RWsSession wsSession;
+    User::LeaveIfError( wsSession.Connect() );
+    CleanupClosePushL( wsSession );
+    User::LeaveIfError( wgCount = wsSession.NumWindowGroups() );
+    RArray<RWsSession::TWindowGroupChainInfo> wgArray;
+    CleanupClosePushL( wgArray );
+    User::LeaveIfError( wsSession.WindowGroupList( &wgArray ) );
+    TApaTask task( wsSession );
+    TBool brought( EFalse );
+    TInt wgId( KErrNotFound );
+    TThreadId threadId;
+    */
+    switch ( iObjectType )
+        {    	    	    	
+        case EMemSpyDriverContainerTypeThread:
+            {
+            TThreadId currentThreadId( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
+            TInt error = iMemSpySession.SwitchToThread( currentThreadId, brought );
+            /*
+            TThreadId currentThreadId( iObjectList->At( iListBox->CurrentItemIndex() ).iId );            
+            
+            // loop trough all window groups and see if a thread id matches
+            while( !brought && wgCount-- )
+                {
+                wgId = wgArray[wgCount].iId;
+                User::LeaveIfError( wsSession.GetWindowGroupClientThreadId( wgId, threadId ) );
+                if ( threadId == currentThreadId )
+                    {
+                    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( wsSession, wgId );
+                    task.SetWgId( wgId );
+                    if ( !wgName->Hidden() && task.Exists() )
+                        {
+                        task.BringToForeground();
+                        brought = ETrue;                        
+                        }
+                    CleanupStack::PopAndDestroy( wgName );
+                    }
+                }
+                */                
+            break;
+            }
+        case EMemSpyDriverContainerTypeProcess:
+            {                        
+            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
+            TInt error = iMemSpySession.SwitchToProcess( id, brought  );
+            /*
+            //CMemSpyEngineObjectContainer& container = iEngine.Container();
+            //TProcessId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
+            //CMemSpyProcess& process = container.ProcessByIdL( id );
+            
+            TProcessId id( iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
+            
+            
+            // loop trough threads in a process
+            for ( TInt i = 0; i < process.MdcaCount(); i++ )
+                {
+                TInt wgCountLocal = wgCount;
+                
+                // loop trough all window groups and see if a thread id matches
+                while( !brought && wgCountLocal-- )
+                    {
+                    wgId = wgArray[wgCountLocal].iId;
+                    User::LeaveIfError( wsSession.GetWindowGroupClientThreadId( wgId, threadId ) );
+                    if ( threadId == process.At( i ).Id() )
+                        {
+                        CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC( wsSession, wgId );
+                        task.SetWgId( wgId );
+                        if ( !wgName->Hidden() && task.Exists() )
+                            {
+                            task.BringToForeground();
+                            brought = ETrue;                        
+                            }
+                        CleanupStack::PopAndDestroy( wgName );
+                        }
+                    }
+                }
+			*/
+            break;
+            }
+        default:
+            {
+            // Programming error
+            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
+            }
+        }
+    if ( !brought )
+        {
+        // Error handling in HandleCommandL
+        User::Leave( KErrGeneral );
+        }
+    CleanupStack::PopAndDestroy( 2 ); //wgArray,wsSession    
+    }
+
+
+void CMemSpyViewKernelObjects::OnCmdEndL()
+    {
+    switch ( iObjectType )
+        {
+        case EMemSpyDriverContainerTypeThread:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            
+            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread                                   
+            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                        				
+				if ( doTerminate )
+					{
+					iMemSpySession.EndThreadL( id, EKill );
+					RefreshL();
+					}
+            	}            
+
+            
+            /*
+            CMemSpyEngineObjectContainer& container = iEngine.Container();
+            TThreadId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
+            
+            // Try to find the thread in question...
+            CMemSpyProcess* process = NULL;
+            CMemSpyThread* thread = NULL; 
+            User::LeaveIfError( container.ProcessAndThreadByThreadId( id, process, thread ) );
+
+            if ( thread )
+                {                
+                //
+                if  ( thread->IsSystemPermanent() || thread->IsSystemCritical() )
+                    {
+                    CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+                    doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                    }
+                //
+                if  ( doTerminate )
+                    {
+                    thread->KillL();
+                    }                
+                }
+            
+            RefreshL();
+            */
+            break;
+            }
+        case EMemSpyDriverContainerTypeProcess:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
+            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
+				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+				
+				if( doTerminate )
+					{
+					iMemSpySession.EndProcessL( id, EKill);     
+					RefreshL();
+					}
+            	}
+            
+            /*
+            TBool doTerminate = ETrue;
+            // Obtain the process that corresponds to the selected item
+            CMemSpyEngineObjectContainer& container = iEngine.Container();
+            TProcessId id( iObjectList->At( iListBox->CurrentItemIndex() ).iId );
+            CMemSpyProcess& process = container.ProcessByIdL( id );            
+
+            if  ( process.IsSystemPermanent() || process.IsSystemCritical() )
+                {
+                CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+                doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                }
+            if  ( doTerminate )
+                {
+                process.KillL();
+                RefreshL();
+                }
+			*/
+            break;
+            }
+        default:
+            {
+            // Programming error
+            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
+            }
+        }    
+    }
+
+
+void CMemSpyViewKernelObjects::OnCmdPanicL()
+    {
+    switch ( iObjectType )
+        {
+        case EMemSpyDriverContainerTypeThread:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            
+            TThreadId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() ); //get id of the current thread                                   
+            iMemSpySession.ThreadSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                        				
+				if ( doTerminate )
+					{
+					iMemSpySession.EndThreadL( id, EPanic );
+					RefreshL();
+					}
+            	}
+            
+            break;
+            }
+        case EMemSpyDriverContainerTypeProcess:
+            {
+            TBool err = EFalse;
+            TBool doTerminate = ETrue;
+            TProcessId id( iKernelObjectItems[ iListBox->CurrentItemIndex() ]->Id() );
+            iMemSpySession.ProcessSystemPermanentOrCritical( id, err );
+            
+            if( err )
+            	{
+				CAknQueryDialog* importDialog = CAknQueryDialog::NewL();	
+				doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+                           
+				if( doTerminate )
+					{
+					iMemSpySession.EndProcessL( id, EPanic );     
+					RefreshL();
+					}
+            	}
+        
+            break;
+            }
+        default:
+            {
+            // Programming error
+            __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0 ) );
+            }
+        }
+    }
+
+
+void CMemSpyViewKernelObjects::CreateTabsL()
+    {
+	TMemSpyDriverContainerType type = iObjectType;
+	const TPtrC pType( MemSpyUiUtils::TypeAsString( type ) );
+	
+	CEikStatusPane* statusPane = static_cast<CAknAppUi*> ( iEikonEnv->EikAppUi() )->StatusPane();
+	TUid uid;
+	uid.iUid = EEikStatusPaneUidNavi;
+	iNaviPane = ( CAknNavigationControlContainer * ) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );	
+	iNavDecorator=iNaviPane->CreateMessageLabelL( pType );
+	iNaviPane->PushL(*iNavDecorator); 		
+    }
+
+
+void CMemSpyViewKernelObjects::DetailsL()
+    {
+    HBufC* messageBuf = HBufC::NewLC( 40960 );    
+    TPtr messagePtr = messageBuf->Des();
+
+    //const TMemSpyDriverHandleInfoGeneric& selectedObject = iObjectList->At( iListBox->CurrentItemIndex() );
+    //iKernelObjectItems[iListBox->CurrentItemIndex];
+
+    // General attributes:
+    TFullName name;
+    name.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameDetail() );
+    AppendFormatString( messagePtr, _L("Name: %S\n"), &name );
+    name.Zero();
+    name.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
+    AppendFormatString( messagePtr, _L("FullName: %S\n"), &name );
+    name.Zero();
+    AppendFormatString( messagePtr, _L("AccessCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AccessCount() );
+    AppendFormatString( messagePtr, _L("UniqueID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UniqueID() );
+    AppendFormatString( messagePtr, _L("Protection: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Protection() );
+    AppendFormatString( messagePtr, _L("OwnrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfKernelOwner() );
+    AppendFormatString( messagePtr, _L("KernelAddr: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Handle() );
+    
+    // Object type specific attributes:
+    switch ( iKernelObjectItems[iListBox->CurrentItemIndex()]->Type() )
+        {
+        case EMemSpyDriverContainerTypeUnknown:
+            {
+            break;
+            }
+        case EMemSpyDriverContainerTypeThread:
+            {
+            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
+            AppendFormatString( messagePtr, _L("ThreadID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
+            AppendFormatString( messagePtr, _L("Priority: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Priority() );
+            TFullName procName;
+            procName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Proc: %S"), &procName );
+            procName.Zero();
+            break;
+            }
+        case EMemSpyDriverContainerTypeProcess:
+            {
+            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
+            AppendFormatString( messagePtr, _L("CreatorId: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->CreatorId() );
+            AppendFormatString( messagePtr, _L("Attributes: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Attributes() );
+            AppendFormatString( messagePtr, _L("StckChnk: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfDataBssStackChunk() );
+            AppendFormatString( messagePtr, _L("ProcessID: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Id() );
+            AppendFormatString( messagePtr, _L("Priority: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Priority() );
+            AppendFormatString( messagePtr, _L("SecurityZone: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->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 EMemSpyDriverContainerTypeChunk:
+            {
+            AppendFormatString( messagePtr, _L("\nOwnrPrAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningProcess() );
+            AppendFormatString( messagePtr, _L("Size: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Size() );
+            AppendFormatString( messagePtr, _L("MaxSize: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MaxSize() );
+            AppendFormatString( messagePtr, _L("Bottom: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Bottom() );
+            AppendFormatString( messagePtr, _L("Top: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Top() );
+            AppendFormatString( messagePtr, _L("Attr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Attributes() );
+            AppendFormatString( messagePtr, _L("Start: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->StartPos() );
+            AppendFormatString( messagePtr, _L("CntrlID: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ControllingOwner() );
+            AppendFormatString( messagePtr, _L("Restrictions: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Restrictions() );
+            AppendFormatString( messagePtr, _L("MapAttr: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MapAttr() );
+            AppendFormatString( messagePtr, _L("Type: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ChunkType() );
+            TFullName procName;
+            procName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Proc: %S"), &procName );
+            procName.Zero();
+            // OwnerAddr iAddressOfKernelOwner already listed
+            // ProcAddr iAddressOfOwningProcess already listed
+            break;
+            }
+        case EMemSpyDriverContainerTypeLibrary:
+            {
+            AppendFormatString( messagePtr, _L("\nMapCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MapCount() );
+            AppendFormatString( messagePtr, _L("State: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->State() );
+            AppendFormatString( messagePtr, _L("CodeSeg: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfCodeSeg() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeSemaphore:
+            {
+            AppendFormatString( messagePtr, _L("\nCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Count() );
+            AppendFormatString( messagePtr, _L("Resetting: %u"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeMutex:
+            {
+            AppendFormatString( messagePtr, _L("\nHoldCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Count() );
+            AppendFormatString( messagePtr, _L("WaitCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->WaitCount() );
+            AppendFormatString( messagePtr, _L("Resetting: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
+            AppendFormatString( messagePtr, _L("Order: %u"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Order() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeTimer:
+            {
+            AppendFormatString( messagePtr, _L("\nState: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TimerState() );
+            AppendFormatString( messagePtr, _L("Type: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TimerType() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeServer:
+            {
+            // Owner == ThrdAddr
+            AppendFormatString( messagePtr, _L("\nThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
+            TFullName thrName;
+            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Thr: %S\n"), &thrName );
+            thrName.Zero();
+            AppendFormatString( messagePtr, _L("Type: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SessionType() );
+            TBuf8<55>buf;
+            /*
+            RArray<TMemSpyDriverServerSessionInfo> sessions;
+            CleanupClosePushL( 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 EMemSpyDriverContainerTypeSession:
+            {
+            // Server == SvrAddr
+            AppendFormatString( messagePtr, _L("\nServer: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfServer() );
+            TFullName srvName;
+            srvName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
+            AppendFormatString( messagePtr, _L("Srv: %S\n"), &srvName );
+            srvName.Zero();
+            // Session: not supported
+            AppendFormatString( messagePtr, _L("AccCount: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->TotalAccessCount() );
+            AppendFormatString( messagePtr, _L("SesType: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SessionType() );
+            AppendFormatString( messagePtr, _L("SvrType: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->SvrSessionType() );
+            AppendFormatString( messagePtr, _L("MsgCount: %d\n"),  iKernelObjectItems[iListBox->CurrentItemIndex()]->MsgCount() );
+            AppendFormatString( messagePtr, _L("MsgLimit: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->MsgLimit() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeLogicalDevice:
+            {
+            AppendFormatString( messagePtr, 
+                                _L("\nVersion: %d.%d.%d\n"), 
+                                /*
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iMajor, TODO: To solve this
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iMinor,
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version.iBuild );
+                                */
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version() );
+            AppendFormatString( messagePtr, _L("ParseMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->ParseMask() );
+            AppendFormatString( messagePtr, _L("UnitsMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UnitsMask() );
+            AppendFormatString( messagePtr, _L("Open channels: %d"), iKernelObjectItems[iListBox->CurrentItemIndex()]->OpenChannels() );
+            break;
+            }
+        case EMemSpyDriverContainerTypePhysicalDevice:
+            {
+            AppendFormatString( messagePtr, 
+                                _L("\nVersion: %d.%d.%d\n"), 
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version(),
+                                iKernelObjectItems[iListBox->CurrentItemIndex()]->Version() );
+            AppendFormatString( messagePtr, _L("UnitsMask: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->UnitsMask() );
+            AppendFormatString( messagePtr, _L("CodeSeg: 0x%08X"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfCodeSeg() );
+            break;
+            }
+        case EMemSpyDriverContainerTypeLogicalChannel:
+            {
+            // No other details
+            break;
+            }
+        case EMemSpyDriverContainerTypeChangeNotifier:
+            {
+            AppendFormatString( messagePtr, _L("\nChanges: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Changes() );
+            // Thread == ThrdAddr
+            AppendFormatString( messagePtr, _L("ThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
+            TFullName thrName;
+            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Thr: %S"), &thrName );
+            thrName.Zero();
+            break;
+            }
+        case EMemSpyDriverContainerTypeUndertaker:
+            {
+            // Thread == ThrdAddr
+            AppendFormatString( messagePtr, _L("\nThrdAddr: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
+            TFullName thrName;
+            thrName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Thr: %S"), &thrName );
+            thrName.Zero();
+            break;
+            }
+        case EMemSpyDriverContainerTypeMsgQueue:
+            {
+            // No other details
+            break;
+            }
+        case EMemSpyDriverContainerTypePropertyRef:
+            {
+            /*
+            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 EMemSpyDriverContainerTypeCondVar:
+            {
+            AppendFormatString( messagePtr, _L("\nResetting: %u\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->Resetting() );
+            // Using iAddressOfOwningThread for mutex
+            AppendFormatString( messagePtr, _L("Mutex: 0x%08X\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->AddressOfOwningThread() );
+            // Using iNameOfOwner for mutex
+            TFullName mtxName;
+            mtxName.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->NameOfOwner() );
+            AppendFormatString( messagePtr, _L("Mtx: %S\n"), &mtxName );
+            mtxName.Zero();
+            AppendFormatString( messagePtr, _L("WaitCount: %d\n"), iKernelObjectItems[iListBox->CurrentItemIndex()]->WaitCount() );
+            /*
+            RArray<TMemSpyDriverCondVarSuspendedThreadInfo> threads;
+            CleanupClosePushL( threads );            
+            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 ) );
+            }
+        }
+    
+    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog( CAknQueryDialog::ENoTone );
+    dialog->PrepareLC( R_MEMSPY_KERNEL_OBJECT_DETAILS_DIALOG );
+    TFileName headerText;
+    headerText.Copy( iKernelObjectItems[iListBox->CurrentItemIndex()]->Name() );
+    dialog->SetHeaderTextL( headerText );
+    dialog->SetMessageTextL(messagePtr);
+    dialog->RunLD();
+    CleanupStack::PopAndDestroy( messageBuf );
+    }
+
+
+void CMemSpyViewKernelObjects::AppendFormatString( TPtr& aPtr, TRefByValue<const TDesC> aFmt, ... )
+    {
+    TBuf<KMaxInfoLength> infoString;
+    VA_LIST list;
+    VA_START ( list, aFmt );
+    infoString.FormatList( aFmt, list );
+    aPtr.Append( infoString );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewMainMenu.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,329 @@
+/*
+* 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 "MemSpyViewMainMenu.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewProcesses.h"
+#include "MemSpyViewRAMInfo.h"
+#include "MemSpyViewROMInfo.h"
+#include "MemSpyViewServerList.h"
+#include "MemSpyViewOpenFiles.h"
+#include "MemSpyViewFBServBitmaps.h"
+#include "MemSpyViewSystemConfig.h"
+#include "MemSpyViewCodeSegList.h"
+#include "MemSpyViewChunkList.h"
+#include "MemSpyViewKernel.h"
+#include "MemSpyViewHeapTracking.h"
+#include "MemSpyViewDriveInfo.h"
+#include "MemSpyViewECom.h"
+#include "MemSpyViewMemoryTrackingAutoStartConfig.h"
+#include "MemSpyViewWindowGroups.h"
+
+// System includes
+#include <aknnotewrappers.h>
+
+/*
+CMemSpyViewMainMenu::CMemSpyViewMainMenu( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+*/
+CMemSpyViewMainMenu::CMemSpyViewMainMenu( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+void CMemSpyViewMainMenu::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "MemSpy" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    
+    // Make sure the correct item is selected
+    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune);
+    const TInt index = IndexByViewType( viewType );
+    iListBox->SetCurrentItemIndex( index );
+    HandleListBoxItemSelectedL( index );
+    }
+
+
+void CMemSpyViewMainMenu::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewMainMenu::ViewType() const
+    {
+    return EMemSpyViewTypeMainMenu;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewMainMenu::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    const TInt index = iListBox->CurrentItemIndex();
+    
+#ifdef __WINS__
+    // threads & process view is not supported in the emulator environment    
+    if  ( index == 0 )
+        {
+        CAknInformationNote* note = new (ELeave) CAknInformationNote;
+        note->ExecuteLD(_L("Not supported in the emulator, try Kernel -> Objects view"));
+        return NULL;
+        }
+#endif
+
+    if  ( index == 0 )
+        {
+        child = new(ELeave) CMemSpyViewProcesses( iMemSpySession, iObserver );		
+        }
+    else if ( index == 1 )
+        {
+        //child = new(ELeave) CMemSpyViewRAMInfo( iEngine, iObserver );
+		child = new(ELeave) CMemSpyViewKernel( iMemSpySession, iObserver );
+        }
+    else if ( index == 2 )
+        {
+		child = new(ELeave) CMemSpyViewHeapTracking( iMemSpySession, iObserver );
+        }
+    else if ( index == 3 )
+            {
+            child = new(ELeave) CMemSpyViewServerList( iMemSpySession, iObserver );
+            }
+        
+    /*
+    else if ( index == 2 )
+        {
+        child = new(ELeave) CMemSpyViewROMInfo( iEngine, iObserver );
+        }
+    else if ( index == 3 )
+        {
+        child = new(ELeave) CMemSpyViewFBServBitmaps( iEngine, iObserver );
+        }
+    else if ( index == 4 )
+        {
+        child = new(ELeave) CMemSpyViewServerList( iEngine, iObserver );
+        }
+    else if ( index == 5 )
+        {
+        child = new(ELeave) CMemSpyViewChunkList( iEngine, iObserver );
+        }
+    else if ( index == 6 )
+        {
+        child = new(ELeave) CMemSpyViewCodeSegList( iEngine, iObserver );
+        }
+    else if ( index == 7 )
+        {
+        child = new(ELeave) CMemSpyViewOpenFiles( iEngine, iObserver );
+        }
+    else if ( index == 8 )
+        {
+        child = new(ELeave) CMemSpyViewSystemConfig( iEngine, iObserver );
+        }    
+    else if ( index == 9 )
+        {
+        child = new(ELeave) CMemSpyViewKernel( iEngine, iObserver );		       
+        }       
+    else if ( index == 10 )
+        {
+        child = new(ELeave) CMemSpyViewHeapTracking( iEngine, iObserver );
+        }
+     */    
+    /*
+    else if ( index == 11 )
+        {
+        child = new(ELeave) CMemSpyViewMemoryTrackingAutoStartConfig( iEngine, iObserver );
+        }
+    else if ( index == 12 )
+        {
+        child = new(ELeave) CMemSpyViewDriveList( iEngine, iObserver );
+        }
+    else if ( index == 13 )
+        {
+        child = new(ELeave) CMemSpyViewECom( iEngine, iObserver );
+        }
+    else if ( index == 14 )
+        {
+        child = new(ELeave) CMemSpyViewWindowGroups( iEngine, iObserver );
+        }
+        */
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+void CMemSpyViewMainMenu::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    
+    // 1st item = Processes
+    _LIT(KItem1Format, "\tProcesses & Threads");
+    item.Format( KItem1Format );
+    model->AppendL( item );
+
+    //some main view items temporary removed
+    /*
+    // 2nd item = RAM info
+    _LIT(KItem2Format, "\tRAM Info");
+    model->AppendL( KItem2Format );
+
+    // 3rd item = ROM info
+    _LIT(KItem3Format, "\tROM Info");
+    model->AppendL( KItem3Format );
+
+    // 4th item = FBServ Bitmaps
+    _LIT(KItem4Format, "\tFont & Bitmap\nServer");
+    model->AppendL( KItem4Format );
+	*/
+
+    /*
+    // 6th item = Chunks
+    _LIT(KItem6Format, "\tChunks");
+    model->AppendL( KItem6Format );
+
+    // 7th item = Code Segments
+    _LIT(KItem7Format, "\tCode Segments");
+    model->AppendL( KItem7Format );
+
+    // 8th item = Open Files
+    _LIT(KItem8Format, "\tOpen Files");
+    model->AppendL( KItem8Format );
+
+    // 9th item = System Config
+    _LIT(KItem9Format, "\tSystem\nConfiguration");
+    model->AppendL( KItem9Format );
+	*/
+    
+    // 10th item = Kernel
+    _LIT(KItem2Format, "\tKernel");
+    model->AppendL( KItem2Format );    
+
+    // 11th item = Heap Tracking
+    _LIT(KItem3Format, "\tSystem-Wide Memory Tracking");
+    model->AppendL( KItem3Format );
+
+    // 5th item = Servers
+    _LIT(KItem4Format, "\tServers");    
+    model->AppendL( KItem4Format );
+    /*
+    // 12th item = Process-specific Tracking
+    _LIT(KItem12Format, "\tProcess-Specific Memory Tracking");
+    model->AppendL( KItem12Format );
+
+    // 13th item = Drive Info
+    _LIT(KItem13Format, "\tDrive Summary");
+    model->AppendL( KItem13Format );
+
+    // 14th item = ECOM
+    _LIT(KItem14Format, "\tECom");
+    model->AppendL( KItem14Format );
+
+    // 15th item = Window Groups
+    _LIT(KItem15Format, "\tWindow Groups");
+    model->AppendL( KItem15Format );
+    */
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+TInt CMemSpyViewMainMenu::IndexByViewType( TMemSpyViewType aType )
+    {
+    TInt index = 0;
+    //
+    switch( aType )
+        {
+    default:
+    	
+    case EMemSpyViewTypeProcesses:
+        index = 0;
+        break;
+/*  case EMemSpyViewTypeRAMInfo:
+        index = 1;
+        break;
+    case EMemSpyViewTypeROMInfo:
+        index = 2;
+        break;
+    case EMemSpyViewTypeFBServBitmaps:
+        index = 3;
+        break;
+        */
+       /*
+    case EMemSpyViewTypeChunkList:
+        index = 5;
+        break;
+    case EMemSpyViewTypeCodeSegmentList:
+        index = 6;
+        break;
+    case EMemSpyViewTypeOpenFiles:
+        index = 7;
+        break;
+    case EMemSpyViewTypeSystemConfig:
+        index = 8;
+        break;*/  
+        
+    case EMemSpyViewTypeKernel:
+        index = 1 ;
+        break;    
+    case EMemSpyViewTypeHeapTracking:
+        index = 2;
+        break;
+    case EMemSpyViewTypeServerList:
+    	index = 3;
+    	break;
+        
+        
+    /*case EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig:
+        index = 11;
+        break;
+    case EMemSpyViewTypeDriveSummary:
+        index = 12;
+        break;
+    case EMemSpyViewTypeECom:
+        index = 13;
+        break;
+    case EMemSpyViewTypeWindowGroups:
+        index = 14;
+        break;*/        
+        }
+    //
+    return index;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewMemoryTrackingAutoStartConfig.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,570 @@
+/*
+* 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 "MemSpyViewMemoryTrackingAutoStartConfig.h"
+
+// System includes
+#include <AknQueryDialog.h>
+#include <charconv.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyengineprocessmemorytracker.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+// Literal constants
+_LIT8( KMemSpyProcessMemoryTrackerXmlFileMimeType, "text/xml" );
+_LIT8( KMemSpyXmlSpec_MasterSection, "memspy_process_memory_tracking" );
+_LIT8( KMemSpyXmlSpec_EntryProcess, "process" );
+_LIT8( KMemSpyXmlSpec_EntryProcess_SID, "sid" );
+_LIT8( KMemSpyXmlSpec_HexPrefix, "0x" );
+
+
+
+CMemSpyViewMemoryTrackingAutoStartConfig::CMemSpyViewMemoryTrackingAutoStartConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+CMemSpyViewMemoryTrackingAutoStartConfig::~CMemSpyViewMemoryTrackingAutoStartConfig()
+    {
+    iProcessUids.Close();
+    //
+    delete iParser;
+    delete iConverter;
+    //
+    delete iXMLFileNameInstallTime;
+    delete iXMLFileNameUserSupplied;
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    // We only convert from UTF-8 to UTF-16
+	iParser = CParser::NewL( KMemSpyProcessMemoryTrackerXmlFileMimeType, *this );
+    iConverter = CCnvCharacterSetConverter::NewL();
+    if  ( iConverter->PrepareToConvertToOrFromL( KCharacterSetIdentifierUtf8, iEngine.FsSession() ) == CCnvCharacterSetConverter::ENotAvailable )
+	    {
+		User::Leave(KErrNotFound);
+		}
+
+    // Search for standard files
+    FindXmlInstallTimeL();
+    FindXmlUserSuppliedL();
+
+    // Copy items to our own temporary list...
+    const RArray<TUid>& list = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList();
+    for( TInt i=0; i<list.Count(); i++ )
+        {
+        User::LeaveIfError( iProcessUids.Append( list[ i ] ) );
+        }
+
+    // Reset the title
+    _LIT( KCustomTitle, "Process-Specific Memory Tracking" );
+    SetTitleL( KCustomTitle );
+    }
+
+
+TMemSpyViewType CMemSpyViewMemoryTrackingAutoStartConfig::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemMemoryTrackingAutoStartConfig;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewMemoryTrackingAutoStartConfig::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+
+    return parent;
+    }
+
+
+TBool CMemSpyViewMemoryTrackingAutoStartConfig::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdMemoryTrackingAutoStartItemAdd:
+        OnCmdItemAddL();
+        break;
+    case EMemSpyCmdMemoryTrackingAutoStartItemEdit:
+        OnCmdItemEditL();
+        break;
+    case EMemSpyCmdMemoryTrackingAutoStartItemDelete:
+        OnCmdItemDeleteL();
+        break;
+    case EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll:
+        OnCmdItemDeleteAllL();
+        break;
+    case EMemSpyCmdMemoryTrackingAutoStartItemImport:
+        OnCmdItemImportL();
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    OnCmdItemEditL();
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<128> buf;
+    _LIT( KProcUidFormatSpec, "\t0x%08x" );
+
+    const TInt count = iProcessUids.Count();
+    for( TInt i=0; i<count; i++ )
+        {
+        const TUid procUid = iProcessUids[ i ];
+        //
+        buf.Format( KProcUidFormatSpec, procUid.iUid );
+        model->AppendL( buf );
+        }
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    iListBox->HandleItemAdditionL();
+    iListBox->DrawDeferred();
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == MenuCascadeResourceId() )
+        {
+        const TInt count = iProcessUids.Count();
+        const TInt index = iListBox->CurrentItemIndex();
+
+        // We cannot edit an item if none exists
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemEdit, ( count == 0 || index < 0 || index > count - 1 ) );
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemDelete, ( count == 0 || index < 0 || index > count - 1 ) );
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemDeleteAll, ( count <= 1 || index > count - 1 ) );
+
+        // We can only import items if an XML file is available
+        const TBool xmlAvailable = ( iXMLFileNameInstallTime->Length() || iXMLFileNameUserSupplied->Length() );
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStartItemImport, !xmlAvailable );
+        }
+    }
+
+
+TUint CMemSpyViewMemoryTrackingAutoStartConfig::MenuCascadeResourceId() const
+    {
+    return R_MEMSPY_MENUPANE_MEMORY_TRACKING_AUTOSTART;
+    }
+
+
+TInt CMemSpyViewMemoryTrackingAutoStartConfig::MenuCascadeCommandId() const
+    {
+    return EMemSpyCmdMemoryTrackingAutoStart;
+    }
+   
+    
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemAddL()
+    {
+    const TUid uid = ShowDialogL( KNullUid );
+    if ( uid != KNullUid )
+        {
+        User::LeaveIfError( iProcessUids.Append( uid ) );
+        SaveChangesL();
+        RefreshL();
+        iListBox->HandleItemAdditionL();
+        iListBox->DrawDeferred();
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemEditL()
+    {
+    const TInt index = iListBox->CurrentItemIndex();
+    if ( index >= 0 && index < iProcessUids.Count() )
+        {
+        TUid processUid = iProcessUids[ index ];
+        processUid = ShowDialogL( processUid );
+        //
+        if ( processUid != KNullUid )
+            {
+            iProcessUids[ index ] = processUid;
+            SaveChangesL();
+            RefreshL();
+            iListBox->HandleItemAdditionL();
+            iListBox->DrawDeferred();
+            }
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemDeleteL()
+    {
+    const TInt index = iListBox->CurrentItemIndex();
+    if ( index >= 0 && index < iProcessUids.Count() )
+        {
+        iProcessUids.Remove( index );
+        SaveChangesL();
+        RefreshL();
+        iListBox->HandleItemRemovalL();
+        iListBox->DrawDeferred();
+        
+        const TInt newIndex = index - 1;
+        const TInt count = iProcessUids.Count();
+        if ( newIndex >=0 && newIndex < count )
+            {
+            iListBox->SetCurrentItemIndex( index );
+            }
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemDeleteAllL()
+    {
+    iProcessUids.Reset();
+    SaveChangesL();
+    RefreshL();
+    iListBox->HandleItemRemovalL();
+    iListBox->DrawDeferred();
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnCmdItemImportL()
+    {
+    if  ( iXMLFileNameInstallTime->Length() )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        if  ( importDialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_IMPORT_FROM_INSTALLED_XML_DIALOG ) )
+            {
+            TRAP_IGNORE( ParseL( *iXMLFileNameInstallTime ) );
+            }
+        }
+    if  ( iXMLFileNameUserSupplied->Length() )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        if  ( importDialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_IMPORT_FROM_USERDEFINED_XML_DIALOG ) )
+            {
+            TRAP_IGNORE( ParseL( *iXMLFileNameUserSupplied ) );
+            }
+        }
+
+    SaveChangesL();
+    RefreshL();
+    iListBox->HandleItemRemovalL();
+    iListBox->DrawDeferred();
+    }
+
+
+TUid CMemSpyViewMemoryTrackingAutoStartConfig::ShowDialogL( TUid aUid )
+    {
+    TUid uid = KNullUid;
+    //
+    _LIT( KProcessUidFormat, "%x" );
+    TBuf<128> buf;
+    buf.Format( KProcessUidFormat, aUid );
+    //
+    CAknTextQueryDialog* dialog = new(ELeave) CAknTextQueryDialog( buf );
+    const TBool dialogActioned = ( dialog->ExecuteLD( R_MEMSPY_MEMORY_TRACKING_PROCESS_UID_DIALOG ) );
+    //
+    if ( dialogActioned )
+        {
+        // Validate the text
+        uid = ValidateProcessUid( buf );
+        }
+    //
+    return uid;
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::SaveChangesL()
+    {
+    iEngine.HelperProcess().SetMemoryTrackingAutoStartProcessListL( iProcessUids );
+    Settings().StoreSettingsL();
+    }
+
+
+TUid CMemSpyViewMemoryTrackingAutoStartConfig::ValidateProcessUid( const TDesC& aUid )
+    {
+    TUid ret = KNullUid;
+    TBool isValid = ETrue;
+    //
+    const TInt length = aUid.Length();
+    for( TInt i=0; i<length && isValid; i++ )
+        {
+        const TChar charValue = aUid[ i ];
+        //
+        switch( charValue )
+            {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+        case 'a':
+        case 'A':
+        case 'b':
+        case 'B':
+        case 'c':
+        case 'C':
+        case 'd':
+        case 'D':
+        case 'e':
+        case 'E':
+        case 'f':
+        case 'F':
+            break;
+        default:
+            isValid = EFalse;
+            break;
+            }
+        }
+    //
+    if ( isValid )
+        {
+        TUint32 val = 0;
+        TLex lexer( aUid );
+        if ( lexer.Val( val, EHex ) == KErrNone )
+            {
+            ret.iUid = val;
+            }
+        }
+    //
+    return ret;
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlInstallTimeL()
+    {
+    RFs& fsSession = iEngine.FsSession();
+    //
+    TFileName* fileName = new(ELeave) TFileName();
+    CleanupStack::PushL( fileName );
+    //
+    fsSession.PrivatePath( *fileName );
+    //
+    TFindFile findFile( fsSession );
+    if  ( findFile.FindByPath( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, fileName ) == KErrNone )
+        {
+        iXMLFileNameInstallTime = findFile.File().AllocL();
+        }
+    else
+        {
+        iXMLFileNameInstallTime = KNullDesC().AllocL();
+        RDebug::Print( _L("CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlInstallTimeL() - NO FILE FOUND") );
+        }
+    //
+    CleanupStack::PopAndDestroy( fileName );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlUserSuppliedL()
+    {
+    TFindFile findFile( iEngine.FsSession() );
+    if  ( findFile.FindByPath( KMemSpyProcessMemoryTrackingAutoStartConfigFileName, &KMemSpyProcessMemoryTrackingAutoStartConfigSearchPath ) == KErrNone )
+        {
+        iXMLFileNameUserSupplied = findFile.File().AllocL();
+        }
+    else
+        {
+        iXMLFileNameUserSupplied = KNullDesC().AllocL();
+        RDebug::Print( _L("CMemSpyViewMemoryTrackingAutoStartConfig::FindXmlUserSuppliedL() - NO FILE FOUND") );
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::ParseL( const TDesC& aFileName )
+    {
+	Xml::ParseL( *iParser, iEngine.FsSession(), aFileName );
+    //
+    const TInt error = iParserErrorCode;
+    iParserErrorCode = KErrNone;
+    //
+	User::LeaveIfError( error );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnSectionProcessL( const RAttributeArray& aAttributes )
+    {
+    TUid uid = KNullUid;
+    TBool gotSID = EFalse;
+    //
+    const TInt count = aAttributes.Count();
+	for( TInt i=0; i<count; i++ )
+		{
+		const TPtrC8 attrib( aAttributes[ i ].Attribute().LocalName().DesC() );
+		const TPtrC8 value( aAttributes[ i ].Value().DesC() );
+        //
+		if  ( attrib.CompareF( KMemSpyXmlSpec_EntryProcess_SID ) == 0 )
+			{
+            if  ( gotSID )
+                {
+                User::LeaveIfError( KErrCorrupt );
+                }
+            else
+                {
+                if  ( value.Length() >= 8 )
+                    {
+                    TRadix radix = EDecimal;
+                    TPtrC8 pValue( value );
+                    //
+                    if  ( value.Length() == 10 && value.Left( 2 ) == KMemSpyXmlSpec_HexPrefix )
+                        {
+                        pValue.Set( value.Mid( 2 ) );
+                        radix = EHex;
+                        }
+                    //
+                    TUint32 uidVal = 0;
+                    TLex8 lexer( pValue );
+                    const TInt err = lexer.Val( uidVal, radix );
+                    User::LeaveIfError( err );
+                    uid.iUid = uidVal;
+                    gotSID = ETrue;
+                    }
+                }
+			}
+        }
+    //
+    if  ( gotSID )
+        {
+        User::LeaveIfError( iProcessUids.Append( uid ) );
+        }
+    else
+        {
+        User::Leave( KErrCorrupt );
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartDocumentL( const RDocumentParameters& /*aDocParam*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndDocumentL( TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartElementL( const RTagInfo& aElement, const RAttributeArray& aAttributes, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    //
+	const TPtrC8 name( aElement.LocalName().DesC() );
+    //
+    if  ( name.CompareF( KMemSpyXmlSpec_MasterSection ) == 0 )
+		{
+		iSeenMasterSection = ETrue;
+		}
+    else if ( iSeenMasterSection && name.CompareF( KMemSpyXmlSpec_EntryProcess ) == 0 )
+        {
+        OnSectionProcessL( aAttributes );
+        }
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndElementL( const RTagInfo& /*aElement*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnContentL( const TDesC8& /*aBytes*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnStartPrefixMappingL( const RString& /*aPrefix*/, const RString& /*aUri*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnEndPrefixMappingL( const RString& /*aPrefix*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnIgnorableWhiteSpaceL( const TDesC8& /*aBytes*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnSkippedEntityL( const RString& /*aName*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnProcessingInstructionL( const TDesC8& /*aTarget*/, const TDesC8& /*aData*/, TInt aErrorCode )
+    {
+    User::LeaveIfError( aErrorCode );
+    }
+
+
+void CMemSpyViewMemoryTrackingAutoStartConfig::OnError( TInt aErrorCode )
+    {
+    iParserErrorCode = aErrorCode;
+    }
+
+
+TAny* CMemSpyViewMemoryTrackingAutoStartConfig::GetExtendedInterface( const TInt32 /*aUid*/ )
+    {
+    return NULL;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewOpenFiles.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,274 @@
+/*
+* 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 "MemSpyViewOpenFiles.h"
+
+// System includes
+#include <AknIconArray.h>
+#include <eikdef.h>
+#include <eikclbd.h>
+#include <aknconsts.h>
+#include <gulicon.h>
+#include <avkon.mbg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+
+CMemSpyViewOpenFiles::CMemSpyViewOpenFiles( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+CMemSpyViewOpenFiles::~CMemSpyViewOpenFiles()
+    {
+    iThreadIds.Close();
+    iFileNames.Close();
+    }
+
+
+void CMemSpyViewOpenFiles::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "Open Files" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+CEikListBox* CMemSpyViewOpenFiles::ConstructListBoxL()
+    {
+    delete iListBox;
+    iListBox = NULL;
+    CAknDoubleGraphicStyleListBox* listbox = new (ELeave) CAknDoubleGraphicStyleListBox();
+    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->SetObserver( this );
+
+    // Create icon array
+    CAknIconArray* iconArray = new (ELeave) CAknIconArray(1);
+    CleanupStack::PushL( iconArray );
+
+    // Create bitmap
+    CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
+    CleanupStack::PushL( bitmap );
+    const TInt error1 = bitmap->Create( TSize(10,10), EColor16M );
+    User::LeaveIfError( error1 );
+
+    // Create mask
+    CFbsBitmap* mask = new(ELeave) CFbsBitmap();
+    CleanupStack::PushL( mask );
+    const TInt error2 = mask->Create( TSize(10,10), EColor16M );
+    User::LeaveIfError( error2 );
+
+    // Create icon & transfer bitmap
+    CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
+    CleanupStack::Pop( 2, bitmap );
+    CleanupStack::PushL( icon );
+
+    // Transfer icon to array
+    iconArray->AppendL( icon );
+    CleanupStack::Pop( icon );
+    
+    // Give icon array to listbox
+    static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->FormattedCellData()->SetIconArrayL(iconArray);
+    CleanupStack::Pop( iconArray );
+    //
+    return listbox;
+    }
+
+
+void CMemSpyViewOpenFiles::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewOpenFiles::ViewType() const
+    {
+    return EMemSpyViewTypeOpenFiles;
+    }
+
+
+TBool CMemSpyViewOpenFiles::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+	case EMemSpyCmdToolsListOpenFiles:
+        OnCmdListOpenFilesL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewOpenFiles::OnCmdListOpenFilesL()
+    {
+    iEngine.ListOpenFilesL();
+    }
+
+
+CMemSpyViewBase* CMemSpyViewOpenFiles::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewOpenFiles::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+
+    // First, try to find the selected thread
+    if  ( iActionedThreadId )
+        {
+        // Try to create a view of the thread in question
+        CMemSpyProcess* process = NULL;
+        CMemSpyThread* thread = NULL;
+        const TInt error = iEngine.Container().ProcessAndThreadByThreadId( *iActionedThreadId, process, thread );
+        if  ( error == KErrNone && thread != NULL )
+            {
+            child = new(ELeave) CMemSpyViewThreads( iEngine, iObserver, thread->Process() );
+            CleanupStack::PushL( child );
+            child->ConstructL( Rect(), *Parent(), thread );
+            CleanupStack::Pop( child );
+            }
+        }
+    //
+    return child;
+    }
+
+
+void CMemSpyViewOpenFiles::SetListBoxModelL()
+    {
+    _LIT(KLineFormatSpec, "%d\t%S\t%S %S");
+
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 50> item;
+    TMemSpySizeText valueBuf;
+    TBuf<64> timeBuf;
+
+    iFileNames.Reset();
+    iThreadIds.Reset();
+    iActionedThreadId = NULL;
+
+    RFs& fsSession = iCoeEnv->FsSession();
+    TOpenFileScan scanner( fsSession );
+
+    CFileList* list = NULL;
+    scanner.NextL( list );
+
+    TIdentityRelation<TEntry> comparer( CompareTEntryObjects );
+
+    while( list != NULL )
+        {
+        CleanupStack::PushL( list );
+    
+        const TInt entryCount = list->Count();
+        for(TInt i=0; i<entryCount; i++)
+            {
+            const TEntry& entry = (*list)[ i ];
+
+            // Check for duplicates
+            const TInt foundIndex = iFileNames.Find( entry, comparer );
+            if  ( foundIndex == KErrNotFound )
+                {
+                // Get time and size format strings
+                valueBuf = MemSpyUiUtils::FormatSizeText( entry.iSize );
+                MemSpyUiUtils::FormatTimeL( timeBuf, entry.iModified );
+
+                // Get just file name
+                TParsePtrC parser( entry.iName );
+                const TPtrC pJustName( parser.NameAndExt() );
+
+                // Create item 
+                item.Format( KLineFormatSpec, 0, &pJustName, &valueBuf, &timeBuf );
+                model->AppendL( item );
+                iThreadIds.AppendL( scanner.ThreadId() );
+                iFileNames.AppendL( entry );
+                }
+            }
+
+        CleanupStack::PopAndDestroy( list );
+        list = NULL;
+        scanner.NextL( list );
+        }
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+void CMemSpyViewOpenFiles::HandleListBoxItemActionedL( TInt aCurrentIndex )
+    {
+    if  ( aCurrentIndex >= 0 && aCurrentIndex < iThreadIds.Count() )
+        {
+        iActionedThreadId = &iThreadIds[ aCurrentIndex ];
+        }
+    else
+        {
+        iActionedThreadId = NULL;
+        }
+
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+TBool CMemSpyViewOpenFiles::CompareTEntryObjects( const TEntry& aLeft, const TEntry& aRight )
+    {
+    return ( aLeft.iName.CompareF( aRight.iName ) == 0 );
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,604 @@
+/*
+* 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 "MemSpyViewProcesses.h"
+
+// System includes
+#include <aknsfld.h>
+#include <AknQueryDialog.h>
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspysession.h>
+#include <memspy/engine/memspyengineutils.h>
+
+// User includes
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+#include "MemSpyUiUtils.h"
+
+// Constants
+const TInt KMemSpyMaxSearchTextLength = 30;
+const TInt KMemSpyMaxSearchTextLengthWithWildcards = KMemSpyMaxSearchTextLength + 4;
+
+
+CMemSpyViewProcesses::CMemSpyViewProcesses( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+CMemSpyViewProcesses::CMemSpyViewProcesses( RMemSpySession& aEngine, MMemSpyViewObserver& aObserver, TProcessId aId )
+:   CMemSpyViewBase( aEngine, aObserver ), iCurrentProcessId( aId )
+    {
+    }
+
+CMemSpyViewProcesses::~CMemSpyViewProcesses()
+    {	
+	iProcesses.Close();
+    //delete iSearchField;
+    delete iMatcherBuffer;
+    }
+
+
+//void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TProcessId aSelectionRune )
+    {
+	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
+	
+    _LIT( KTitle, "Processes\n& Threads" );
+    SetTitleL( KTitle );
+    //
+    //CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    CMemSpyViewBase::ConstructL( aRect, aContainer );
+    //
+    iMatcherBuffer = HBufC::NewL( KMemSpyMaxSearchTextLengthWithWildcards );
+    //
+    /* TODO: to restore the Search field functionality
+    iSearchField = CAknSearchField::NewL( *this, CAknSearchField::ESearch, NULL, KMemSpyMaxSearchTextLength );
+
+    iSearchField->SetObserver( this );
+    iSearchField->SetFocus( ETrue );
+    iSearchField->SetComponentsToInheritVisibility( ETrue );
+    */
+    //    
+    if  ( iCurrentProcessId > 0 )
+        {
+		TInt index = 0;
+	//	TProcessId selectedItem = aSelectionRune; //static_cast< TProcessId >( *aSelectionRune );
+		for( TInt i=0; i<iProcesses.Count();i++)
+			{
+			if( iProcesses[i]->Id() == iCurrentProcessId )
+				{
+				index = i;
+				}
+			}					        
+        
+        if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
+            {
+            iListBox->SetCurrentItemIndex( index );
+            HandleListBoxItemSelectedL( index );
+            }            
+        }
+    else if ( iProcesses.Count() > 0 )
+        {
+        iListBox->SetCurrentItemIndex( 0 );
+        HandleListBoxItemSelectedL( 0 );
+        }
+    //
+    SizeChanged();
+    ActivateL();
+    }
+
+
+CMemSpyProcess& CMemSpyViewProcesses::CurrentProcess() const
+    {
+	/*
+    __ASSERT_ALWAYS( iCurrentProcess != NULL, User::Invariant() );
+    return *iCurrentProcess;
+    */	
+    }
+
+
+void CMemSpyViewProcesses::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewProcesses::ViewType() const
+    {
+    return EMemSpyViewTypeProcesses;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewProcesses::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewProcesses::PrepareChildViewL()
+    {	
+    CMemSpyViewThreads* child = new(ELeave) CMemSpyViewThreads( iMemSpySession, iObserver, iProcesses[iListBox->CurrentItemIndex()]->Id(), 0 );
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    
+	return 0;
+    }
+
+
+void CMemSpyViewProcesses::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == MenuCascadeResourceId() )
+        {
+        TInt index = iListBox->CurrentItemIndex( );
+        const TBool hide = iProcesses[index]->IsDead() || iProcesses[index]->ThreadCount() == 0;
+        
+        //aMenuPane->SetItemDimmed( EMemSpyCmdProcessInfo, hide ); //to be added into API
+        aMenuPane->SetItemDimmed( EMemSpyCmdProcessEnd, hide );
+        }
+    }
+
+
+TBool CMemSpyViewProcesses::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    // Sorting
+    case EMemSpyCmdProcessSortById:
+        OnCmdSortByIdL();
+		break;
+    case EMemSpyCmdProcessSortByName:
+        OnCmdSortByNameL();
+		break;
+    case EMemSpyCmdProcessSortByThreadCount:
+        OnCmdSortByThreadCountL();
+		break;
+    case EMemSpyCmdProcessSortByCodeSegs:
+        OnCmdSortByCodeSegsL();
+		break;
+    case EMemSpyCmdProcessSortByHeapUsage:
+        OnCmdSortByHeapUsageL();
+		break;
+    case EMemSpyCmdProcessSortByStackUsage:
+        OnCmdSortByStackUsageL();
+		break;
+    // End
+    case EMemSpyCmdProcessEndTerminate:
+        OnCmdEndTerminateL();
+		break;
+    case EMemSpyCmdProcessEndKill:
+        OnCmdEndKillL();
+		break;
+    case EMemSpyCmdProcessEndPanic:
+        OnCmdEndPanicL();
+		break;
+    // Info
+    case EMemSpyCmdProcessInfoSummary:
+        OnCmdInfoSummaryL();
+		break;
+    case EMemSpyCmdProcessInfoHandles:
+        OnCmdInfoHandlesL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByIdL()
+    {	
+    //iEngine.Container().SortById();
+    RefreshL();    
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByNameL()
+    {	
+    //iEngine.Container().SortByName();
+    RefreshL();    
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByThreadCountL()
+    {	
+    //iEngine.Container().SortByThreadCount();
+    RefreshL();    
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByCodeSegsL()
+    {	
+    //iEngine.Container().SortByCodeSegs();
+    RefreshL();
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByHeapUsageL()
+    {	
+    //iEngine.Container().SortByHeapUsage();
+    RefreshL();    
+    }
+
+
+void CMemSpyViewProcesses::OnCmdSortByStackUsageL()
+    {
+   // iEngine.Container().SortByStackUsage();
+    RefreshL();
+    }
+
+
+void CMemSpyViewProcesses::OnCmdInfoSummaryL()
+    {
+    //CMemSpyProcess& process = CurrentProcess();
+    //iEngine.HelperProcess().OutputProcessInfoL( process );
+    }
+
+
+void CMemSpyViewProcesses::OnCmdInfoHandlesL()
+    {
+	/*
+    CMemSpyProcess& process = CurrentProcess();
+    //
+    const TInt threadCount = process.Count();
+    for( TInt i=0; i<threadCount; i++ )
+        {
+        CMemSpyThread& thread = process.At( i );
+        thread.InfoContainerForceSyncronousConstructionL().PrintL();
+        }
+        */
+    }
+
+
+void CMemSpyViewProcesses::OnCmdEndTerminateL()
+    {
+    TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+    
+    iMemSpySession.ProcessSystemPermanentOrCritical( iCurrentProcessId, system );
+    
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+    
+    if ( doTerminate )
+        {        
+        TRAP( err, iMemSpySession.EndProcessL( iCurrentProcessId, ETerminate ) );
+        if( err = KErrNone )
+            RefreshL();
+        }        
+    }
+
+
+void CMemSpyViewProcesses::OnCmdEndPanicL()
+    {
+    TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+        
+    iMemSpySession.ProcessSystemPermanentOrCritical( iCurrentProcessId, system );
+        
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+        
+    if ( doTerminate )
+        {
+        TRAP( err, iMemSpySession.EndProcessL( iCurrentProcessId, EPanic ) );
+        if( err == KErrNone )            
+            RefreshL();
+        }               
+    }
+
+
+void CMemSpyViewProcesses::OnCmdEndKillL()
+    {
+    TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+         
+    iMemSpySession.ProcessSystemPermanentOrCritical( iCurrentProcessId, system );
+         
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+         
+    if ( doTerminate )
+        {
+        TRAP( err, iMemSpySession.EndProcessL( iCurrentProcessId, EKill ) )
+        if( err == KErrNone )
+            RefreshL();
+        }               
+    }
+
+
+
+
+void CMemSpyViewProcesses::SetListBoxModelL()
+    {	
+	if( iProcesses.Count() > 0 )
+		{
+		iProcesses.Close();
+		}
+	
+	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
+	iModel = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 1); //array for formated items
+	
+	_LIT( KTab, "\t" );
+	iModel = FormatModel( iProcesses ); //TODO Format model method with advanced formatting
+		
+	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    //listbox->Model()->SetItemTextArray( &iEngine.Container() );
+    listbox->Model()->SetItemTextArray( iModel );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewProcesses::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewProcesses::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+    iCurrentProcessId = iProcesses[aIndex]->Id();
+    /*
+    if  ( iCurrentProcess )
+        {
+        iCurrentProcess->Close();
+        }
+
+    // Obtain the process that corresponds to the selected item
+    CMemSpyEngineObjectContainer& container = iEngine.Container();
+    CMemSpyProcess& process = container.At( aIndex );
+    iCurrentProcess = &process;
+
+    // Notify observer about item selection     
+     */
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+void CMemSpyViewProcesses::SizeChanged()
+    {
+    const TRect rect( Rect() );
+    CMemSpyViewBase::SizeChanged();
+    /*
+    if  ( iListBox && iSearchField )
+        {
+        const TInt lafIndex_H = 1;
+        AknLayoutUtils::LayoutControl( iListBox, rect, AknLayout::list_gen_pane( lafIndex_H ) );
+        AknLayoutUtils::LayoutControl( iSearchField, rect, AknLayout::find_pane() );
+        }
+    else
+        {
+        CMemSpyViewBase::SizeChanged();
+        }
+    */
+
+/*
+    // Search field
+    TSize searchFieldSize( iSearchField->MinimumSize() ); // BALLS: search field doesn't implement minimum size correctly?!?!?
+    searchFieldSize.SetWidth( rect.Width() );
+    const TRect searchFieldRect( TPoint( rect.iTl.iX, rect.iBr.iY ), searchFieldSize );
+    iSearchField->SetRect( searchFieldRect );
+
+    // Listbox
+    TSize listBoxSize( rect.Size() - TSize( 0, searchFieldSize.iHeight ) );
+    iListBox->SetRect( rect.iTl, listBoxSize );
+*/
+    }
+
+
+TInt CMemSpyViewProcesses::CountComponentControls() const
+    {
+    TInt count = 0;
+    //
+    if  ( iListBox != NULL )
+        {
+        ++count;
+        }
+    /*if  ( iSearchField != NULL )
+        {
+        ++count;
+        }*/
+    //
+    return count;
+    }
+
+
+CCoeControl* CMemSpyViewProcesses::ComponentControl( TInt aIndex ) const
+    {
+    CCoeControl* ret = iListBox;
+    //
+    if  ( aIndex == 1 )
+        {
+        //ret = iSearchField;
+        }
+    //
+    return ret;
+    }
+
+
+TKeyResponse CMemSpyViewProcesses::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    TKeyResponse resp = EKeyWasNotConsumed;
+    //
+    if  ( aType == EEventKey )
+        {
+        switch( aKeyEvent.iCode )
+            {
+        case EKeyUpArrow:
+        case EKeyDownArrow:
+        case EKeyEnter:
+        case EKeyOK:
+            if  ( iListBox )
+                {
+                resp = iListBox->OfferKeyEventL( aKeyEvent, aType );
+                }
+            break;
+        default:
+            break;
+            }
+        //
+        if  ( resp == EKeyWasNotConsumed )
+            {
+            // Do we need to show the find field?
+            //resp = iSearchField->OfferKeyEventL( aKeyEvent, aType );
+            }
+        }
+    //
+    return resp;
+    }
+
+
+void CMemSpyViewProcesses::HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType )
+    {
+    CMemSpyViewBase::HandleControlEventL( aControl, aEventType );
+    //
+    if  ( aEventType == MCoeControlObserver::EEventStateChanged )
+        {
+        /*
+        if  ( aControl == iSearchField )
+            {
+            SelectListBoxItemByFindTextL();
+            }
+            */
+        }
+    }
+
+
+void CMemSpyViewProcesses::FocusChanged( TDrawNow /*aDrawNow*/ )
+    {
+    if  ( iListBox )
+        {
+        iListBox->SetFocus( IsFocused() );
+        }
+    /*if  ( iSearchField )
+        {
+        iSearchField->SetFocus( IsFocused() );
+        }
+        */
+    }
+
+
+void CMemSpyViewProcesses::SelectListBoxItemByFindTextL()
+    {
+	/*
+    _LIT( KMemSpyWildcardCharacter, "*" );
+    
+    TPtr pBuffer( iMatcherBuffer->Des() );
+    iSearchField->GetSearchText( pBuffer );
+    //pBuffer.Insert( 0, KMemSpyWildcardCharacter );
+    pBuffer.Append( KMemSpyWildcardCharacter );
+    
+    CMemSpyEngineObjectContainer& container = iEngine.Container();
+    const TInt count = container.Count();
+    //
+    TInt index = 0;
+    while( index < count )
+        {
+        CMemSpyProcess& process = container.At( index );
+        const TPtrC processName( process.Name() );
+        //
+        if  ( processName.MatchF( pBuffer ) >= 0 )
+            {
+            HandleListBoxItemSelectedL( index );
+            iListBox->ScrollToMakeItemVisible( index );
+            iListBox->SetCurrentItemIndexAndDraw( index );
+            return;
+            }
+            
+        ++index;
+        }
+        */
+    }
+
+//Model formating methods
+//TODO: to be debbuged
+
+CDesCArrayFlat* CMemSpyViewProcesses::FormatModel( RArray<CMemSpyApiProcess*> aProcesses )
+	{		
+	model = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 16 ); //array for formated items
+	_LIT( KMemSpyProcessNameFormatSpecBasicName, " \t%S\t\t%8x, " );
+	
+	for( TInt i=0; i < aProcesses.Count(); i++ )
+		{
+		HBufC* tempName = HBufC::NewL( KMaxFullName ); //aProcesses[i]->Name().Length() + 16
+	    CleanupStack::PushL( tempName );
+	    TPtr tempNamePtr( tempName->Des() );	    
+	    tempNamePtr.Copy( aProcesses[i]->Name() );
+		
+		TBuf<10> priority;
+		TProcessPriority tempPriority = aProcesses[i]->Priority();
+		MemSpyUiUtils::AppendPriority( priority, tempPriority );
+		
+	    // Convert the full name to the format we want in the UI
+	    TBuf<KMaxFullName + 60> name;
+	    TMemSpyTruncateOverflow overflow; //included from EngineUtils TODO: to consider if this is needed to be removed or left there
+	    TUint32 tempSID =  aProcesses[i]->SID();
+	    name.AppendFormat( KMemSpyProcessNameFormatSpecBasicName, &overflow, tempName, tempSID );	//tempNamePtr
+	    
+	    if( aProcesses[i]->ExitType() != EExitPending ) // instead of IsDead() method
+	    	{
+			MemSpyUiUtils::AppendExitInfo( name, aProcesses[i]->ExitType(), aProcesses[i]->ExitReason(), aProcesses[i]->ExitCategory() );
+	    	}
+	    else
+	        {
+			_LIT( KMemSpyProcessNameFormatSpecAlive, "%2d thr, %S" );
+			name.AppendFormat( KMemSpyProcessNameFormatSpecAlive, &overflow, aProcesses[i]->ThreadCount(), &priority );
+	        }
+							
+    	model->AppendL( name );
+    	
+    	CleanupStack::PopAndDestroy( tempName ); 
+		}	
+	
+	return model;
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewRAMInfo.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,211 @@
+/*
+* 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 "MemSpyViewRAMInfo.h"
+
+// System includes
+#include <hal.h>
+#include <aknnotedialog.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperram.h>
+#include <memspy/engine/memspyengineutils.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+
+
+
+CMemSpyViewRAMInfo::CMemSpyViewRAMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+void CMemSpyViewRAMInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "RAM Info" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewRAMInfo::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewRAMInfo::ViewType() const
+    {
+    return EMemSpyViewTypeRAMInfo;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewRAMInfo::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewRAMInfo::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    return child;
+    }
+
+
+void CMemSpyViewRAMInfo::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    TInt value;
+    TMemSpySizeText size;
+    TMemoryInfoV1Buf memInfoBuf;
+    UserHal::MemoryInfo( memInfoBuf );
+    const TMemoryInfoV1 memInfo( memInfoBuf() );
+
+    // 1st item = Total RAM
+    _LIT(KItem1Format, "\tTotal RAM\t\t%S");
+    size = MemSpyUiUtils::FormatSizeText( memInfo.iTotalRamInBytes );
+    item.Format( KItem1Format, &size );
+    model->AppendL( item );
+
+    // 2nd item = Max free RAM
+    _LIT(KItem2Format, "\tMax Free RAM\t\t%S");
+    size = MemSpyUiUtils::FormatSizeText( memInfo.iMaxFreeRamInBytes );
+    item.Format( KItem2Format, &size );
+    model->AppendL( item );
+
+    // 3rd item = Free RAM
+    _LIT(KItem3Format, "\tFree RAM\t\t%S (%S)");
+    const TMemSpyPercentText freeRamPercentage( MemSpyEngineUtils::FormatPercentage( TReal( memInfo.iTotalRamInBytes ), TReal( memInfo.iFreeRamInBytes ) ) );
+    size = MemSpyUiUtils::FormatSizeText( memInfo.iFreeRamInBytes );
+    item.Format( KItem3Format, &size, &freeRamPercentage );
+    model->AppendL( item );
+
+    // 4th item = RAM disk info
+    _LIT(KItem4Format, "\tRAM Disk Size\t\t%S");
+    size = MemSpyUiUtils::FormatSizeText( memInfo.iInternalDiskRamInBytes );
+    item.Format( KItem4Format, &size );
+    model->AppendL( item );
+
+    // 5th item = Max RAM disk size
+    _LIT(KItem5Format, "\tMax RAM Disk Size\t\t%S");
+    HAL::Get( HALData::EMaxRAMDriveSize, value );
+    size = MemSpyUiUtils::FormatSizeText( value );
+    item.Format( KItem5Format, &size );
+    model->AppendL( item );
+
+    // 6th item = RAM page size
+    _LIT(KItem6Format, "\tMemory Page Size\t\t%S");
+    HAL::Get( HALData::EMemoryPageSize, value );
+    size = MemSpyUiUtils::FormatSizeText( value );
+    item.Format( KItem6Format, &size );
+    model->AppendL( item );
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
+TBool CMemSpyViewRAMInfo::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    if  ( iEngine.HelperRAM().IsAknIconCacheConfigurable() )
+        {
+        switch ( aCommand )
+            {
+        case EMemSpyCmdRAMAvkonIconCacheDisabled:
+            OnCmdSetIconCacheStatusL( EFalse );
+		    break;
+        case EMemSpyCmdRAMAvkonIconCacheEnabled:
+            OnCmdSetIconCacheStatusL( ETrue );
+		    break;
+
+        default:
+            handled = CMemSpyViewBase::HandleCommandL( aCommand );
+            break;
+            }
+        }
+    else
+        {
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewRAMInfo::OnCmdSetIconCacheStatusL( TBool aEnabled )
+    {
+    ASSERT( iEngine.HelperRAM().IsAknIconCacheConfigurable() );
+    //
+    const TInt64 savedAmount = iEngine.HelperRAM().SetAknIconCacheStatusL( aEnabled );
+    if ( !aEnabled )
+        {
+        TBuf<128> buf;
+        //
+        if  ( savedAmount != 0 ) 
+            {
+            _LIT(KSavedAmountFormatBuffer, "Saved %S of RAM");
+            const TMemSpySizeText savedAmountString( MemSpyEngineUtils::FormatSizeText( savedAmount, 0, EFalse ) );
+            buf.Format( KSavedAmountFormatBuffer, &savedAmountString );
+            }
+        else
+            {
+            _LIT(KDidNotSaveAnyRAM, "Operation did not save any RAM");
+            buf.Copy( KDidNotSaveAnyRAM );
+            }
+
+        // Show dialog
+	    CAknNoteDialog* note = new( ELeave ) CAknNoteDialog( CAknNoteDialog::ENoTone );
+	    CleanupStack::PushL( note );
+	    note->SetTextWrapping( ETrue );
+	    note->PrepareLC( R_MEMSPY_RAM_MEMORY_DELTA_DIALOG );
+	    note->SetTextL( buf );
+	    CleanupStack::Pop( note );
+	    note->RunLD();
+        }
+    //
+    RefreshL();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewROMInfo.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,270 @@
+/*
+* 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 "MemSpyViewROMInfo.h"
+
+// System includes
+#include <hal.h>
+#ifdef __EPOC32__
+#include <e32rom.h>
+#endif
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+// Remap of E32 DP constants, needed so MemSpy can still build on v9.1
+enum TMemSpyDemandPagingKernelConfigFlags
+    {
+    EMemSpyKernelConfigPagingPolicyMask = 3<<5,
+    EMemSpyKernelConfigPagingPolicyNoPaging = 0<<5,
+    EMemSpyKernelConfigPagingPolicyAlwaysPage = 1<<5,
+    EMemSpyKernelConfigPagingPolicyDefaultUnpaged = 2<<5,
+    EMemSpyKernelConfigPagingPolicyDefaultPaged = 3<<5,
+    };
+
+
+
+CMemSpyViewROMInfo::CMemSpyViewROMInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+void CMemSpyViewROMInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "ROM Info" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewROMInfo::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewROMInfo::ViewType() const
+    {
+    return EMemSpyViewTypeROMInfo;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewROMInfo::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewROMInfo::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    return child;
+    }
+
+
+void CMemSpyViewROMInfo::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    TInt value = 0;
+    TMemSpySizeText valueBuf;
+    TMemSpySizeText valueBuf2;
+    
+    // 1st item = Total RAM
+    _LIT(KItem1Format, "\tROM Size (HAL)\t\t%S");
+    HAL::Get( HALData::EMemoryROM, value );
+    valueBuf = MemSpyUiUtils::FormatSizeText( value );
+    item.Format( KItem1Format, &valueBuf );
+    model->AppendL( item );
+
+#ifdef __EPOC32__
+    TBuf<128> buf2;
+    _LIT( KTimeFormatSpecLocal, "%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B" );
+	const TUint main_start = UserSvr::RomHeaderAddress();
+    TRomHeader* romHeader = (TRomHeader*) main_start;
+
+    _LIT(KItem2Format, "\tROM Size (Header)\t\t%S");
+    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iRomSize ) );
+    item.Format( KItem2Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem2aFormat, "\tROM Page Size\t\t%S");
+    HAL::Get( HALData::EMemoryPageSize, value );
+    valueBuf = MemSpyUiUtils::FormatSizeText( value );
+    item.Format( KItem2aFormat, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem10Format, "\tVersion\t\tv%2d.%02d.%06d");
+    item.Format( KItem10Format, romHeader->iVersion.iMajor, romHeader->iVersion.iMinor, romHeader->iVersion.iBuild );
+    model->AppendL( item );
+
+    _LIT(KItem3Format, "\tTimestamp\t\t%S");
+    TTime time( romHeader->iTime );
+    time.FormatL( buf2, KTimeFormatSpecLocal );
+    item.Format( KItem3Format, &buf2 );
+    model->AppendL( item );
+
+    _LIT(KItem4Format, "\tAddress Range\t\t%S - %S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iRomBase );
+    MemSpyUiUtils::FormatHex( valueBuf2, (romHeader->iRomBase + romHeader->iRomSize ));
+    item.Format( KItem4Format, &valueBuf, &valueBuf2 );
+    model->AppendL( item );
+
+    _LIT(KItem5Format, "\tPrimary File Address\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iPrimaryFile );
+    item.Format( KItem5Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem6Format, "\tSecondary File Address\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iSecondaryFile );
+    item.Format( KItem6Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem7Format, "\tChecksum\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iCheckSum );
+    item.Format( KItem7Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem8Format, "\tKernel Config Flags\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iKernelConfigFlags );
+    item.Format( KItem8Format, &valueBuf );
+    model->AppendL( item );
+
+    if  ( romHeader->iKernelConfigFlags & EKernelConfigIpcV1Available )
+        {
+        _LIT(KItem8aFormat, "\tIPC v1 Available\t\tYes");
+        item.Copy( KItem8aFormat );
+        model->AppendL( item );
+        }
+    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecEnforcement )
+        {
+        _LIT(KItem8bFormat, "\tPlatSec Enforcement\t\tYes");
+        item.Copy( KItem8bFormat );
+        model->AppendL( item );
+        }
+    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecDiagnostics )
+        {
+        _LIT(KItem8cFormat, "\tPlatSec Diagnostics\t\tYes");
+        item.Copy( KItem8cFormat );
+        model->AppendL( item );
+        }
+    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecProcessIsolation )
+        {
+        _LIT(KItem8dFormat, "\tPlatSec Process Isolation\t\tYes");
+        item.Copy( KItem8dFormat );
+        model->AppendL( item );
+        }
+    if  ( romHeader->iKernelConfigFlags & EKernelConfigPlatSecEnforceSysBin )
+        {
+        _LIT(KItem8eFormat, "\tEnforce \\Sys\\Bin\\\t\tYes");
+        item.Copy( KItem8eFormat );
+        model->AppendL( item );
+        }
+
+    const TUint32 pagingPolicy = ( romHeader->iKernelConfigFlags & EMemSpyKernelConfigPagingPolicyMask );
+#ifdef _DEBUG
+    RDebug::Printf( "pagingPolicy: %u (0x%08x)", pagingPolicy, pagingPolicy );
+#endif
+    _LIT(KItem8eFormat, "\tDemand Paging\t\t%S");
+    //
+    if  ( pagingPolicy & EMemSpyKernelConfigPagingPolicyNoPaging )
+        {
+        _LIT( KDemandPagingPolicyNoPaging, "No Paging" );
+        item.Format( KItem8eFormat, &KDemandPagingPolicyNoPaging );
+        }
+    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyAlwaysPage )
+        {
+        _LIT( KDemandPagingPolicyAlwaysPage, "Always Paging" );
+        item.Format( KItem8eFormat, &KDemandPagingPolicyAlwaysPage);
+        }
+    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyDefaultUnpaged )
+        {
+        _LIT( KDemandPagingPolicyDefaultUnpaged, "Default Unpaged" );
+        item.Format( KItem8eFormat, &KDemandPagingPolicyDefaultUnpaged);
+        }
+    else if ( pagingPolicy & EMemSpyKernelConfigPagingPolicyDefaultPaged )
+        {
+        _LIT( KDemandPagingPolicyDefaultPaged, "Default Paged" );
+        item.Format( KItem8eFormat, &KDemandPagingPolicyDefaultPaged );
+        }
+    //
+    model->AppendL( item );
+
+    _LIT(KItem9Format, "\tSection Header Address\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iRomSectionHeader );
+    item.Format( KItem9Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem11Format, "\tCompressed Size\t\t%S");
+    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iCompressedSize ) );
+    item.Format( KItem11Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem12Format, "\tUncompressed Size\t\t%S");
+    valueBuf = MemSpyUiUtils::FormatSizeText( TInt64( romHeader->iUncompressedSize ) );
+    item.Format( KItem12Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem13Format, "\tDisabled Caps. #1\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iDisabledCapabilities[0] );
+    item.Format( KItem13Format, &valueBuf );
+    model->AppendL( item );
+
+    _LIT(KItem14Format, "\tDisabled Caps. #2\t\t%S");
+    MemSpyUiUtils::FormatHex( valueBuf, romHeader->iDisabledCapabilities[1] );
+    item.Format( KItem14Format, &valueBuf );
+    model->AppendL( item );
+
+    for(TInt i=0; i<TRomHeader::KNumTraceMask; i++)
+        {
+        _LIT(KItem15Format, "\tTrace Mask #%d\t\t%S");
+        MemSpyUiUtils::FormatHex( valueBuf, romHeader->iTraceMask[i] );
+        item.Format( KItem15Format, i+1, &valueBuf );
+        model->AppendL( item );
+        }
+
+#endif
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewServerList.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,239 @@
+/*
+* 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 "MemSpyViewServerList.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspy/engine/memspyenginehelperserver.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyViewProcesses.h"
+#include "MemSpyContainerObserver.h"
+
+
+
+/*
+CMemSpyViewServerList::CMemSpyViewServerList( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+*/
+CMemSpyViewServerList::CMemSpyViewServerList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aSession, aObserver )
+    {
+    }
+
+
+
+CMemSpyViewServerList::~CMemSpyViewServerList()
+    {
+    delete iList;
+    }
+
+
+void CMemSpyViewServerList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+	iSort = ESortServByName;
+    _LIT( KTitle, "Running Servers" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+TBool CMemSpyViewServerList::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdServerListSortByName:
+        OnCmdServerListSortByNameL();
+        break;
+    case EMemSpyCmdServerListSortBySessionCount:
+        OnCmdServerListSortBySessionCountL();
+        break;
+    case EMemSpyCmdServerListOutputListCSV:
+        OnCmdServerListOutputSummaryL();
+        break;
+    case EMemSpyCmdServerListOutputListDetailed:
+        OnCmdServerListOutputDetailedL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewServerList::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewServerList::ViewType() const
+    {
+    return EMemSpyViewTypeServerList;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewServerList::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iMemSpySession, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewServerList::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+
+    if  ( iActionedItemIndex )
+        {
+		child = new(ELeave) CMemSpyViewProcesses( iMemSpySession, iObserver, iServers[iActionedItemIndex]->Id() );
+		CleanupStack::PushL( child );
+		child->ConstructL( Rect(), *Parent() );
+		CleanupStack::Pop( child );        	
+        }
+    //
+    
+    return child;
+    }
+
+void CMemSpyViewServerList::SetListBoxModelL()
+    {
+	TInt err = KErrNone;	
+	iModel = NULL;		
+	
+	TRAP( err, iMemSpySession.GetServersL( iServers, iSort ) );
+	
+	if ( err == KErrNone )
+		{
+		iModel = new (ELeave) CDesC16ArrayFlat( iServers.Count() ); //array for formated items
+		_LIT(KSession, "session");		
+		
+		for( TInt i = 0; i < iServers.Count(); i++ )
+			{		
+			HBufC* combined = HBufC::NewLC( iServers[i]->Name().Length() + 128 );
+
+			TPtr pCombined( combined->Des() );
+			pCombined.Zero();
+			pCombined.Copy( _L("\t") );
+			
+			if( iServers[i]->Name() != KNullDesC )
+				{
+				pCombined.Append( iServers[i]->Name() );
+				}
+			
+			pCombined.Append( _L("\t\t") );
+			TBuf<16> count;
+			_LIT( KCount, "%d session");
+			
+			count.Format( KCount, iServers[i]->SessionCount() );
+			pCombined.Append( count );
+			
+			if( iServers[i]->SessionCount() != 1 )				
+				{
+				_LIT( KS, "s" );
+				pCombined.Append( KS );
+				}
+			
+			iModel->AppendL( pCombined );	
+			
+			CleanupStack::PopAndDestroy(combined);
+			}
+		}
+	
+    //
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( iModel );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );    
+    }
+
+
+void CMemSpyViewServerList::HandleListBoxItemActionedL( TInt aCurrentIndex )
+    {	
+    if  ( aCurrentIndex >= 0 && aCurrentIndex < iServers.Count() )
+        {        
+ 		iActionedItemIndex = aCurrentIndex;
+        }
+    else
+        {
+        iActionedItem = NULL;
+        }
+
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );    
+    }
+
+
+void CMemSpyViewServerList::OnCmdServerListSortByNameL()
+    {
+	iSort = ESortServByName;
+	RefreshL();
+    }
+
+
+void CMemSpyViewServerList::OnCmdServerListSortBySessionCountL()
+    {
+	iSort = ESortServBySessionCount;
+	RefreshL();
+    }
+   
+
+void CMemSpyViewServerList::OnCmdServerListOutputSummaryL()
+    {
+    OnCmdServerListOutputGenericL( EFalse );
+    }
+
+
+void CMemSpyViewServerList::OnCmdServerListOutputDetailedL()
+    {
+    OnCmdServerListOutputGenericL( ETrue );
+    }
+
+
+void CMemSpyViewServerList::OnCmdServerListOutputGenericL( TBool aDetailed )
+    {
+	iMemSpySession.ServerListOutputGenericL( aDetailed );			
+    }
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewSystemConfig.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,883 @@
+/*
+* 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 "MemSpyViewSystemConfig.h"
+
+// System includes
+#include <hal.h>
+#include <bautils.h>
+#include <eikenv.h>
+#ifdef __EPOC32__
+#include <e32rom.h>
+#endif
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperfilesystem.h>
+
+// User includes
+#include "MemSpyUiUtils.h"
+#include "MemSpyViewMainMenu.h"
+#include "MemSpyContainerObserver.h"
+
+// Literal constants
+_LIT( KMemSpyItemValueNotKnown, "Unknown" );
+
+
+
+CMemSpyViewSystemConfig::CMemSpyViewSystemConfig( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver )
+:   CMemSpyViewBase( aEngine, aObserver )
+    {
+    }
+
+
+CMemSpyViewSystemConfig::~CMemSpyViewSystemConfig()
+    {
+    delete iModel;
+    }
+
+
+void CMemSpyViewSystemConfig::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    _LIT( KTitle, "System Configuration" );
+    SetTitleL( KTitle );
+    //
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+void CMemSpyViewSystemConfig::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewSystemConfig::ViewType() const
+    {
+    return EMemSpyViewTypeSystemConfig;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareParentViewL()
+    {
+    CMemSpyViewMainMenu* parent = new(ELeave) CMemSpyViewMainMenu( iEngine, iObserver );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewSystemConfig::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    return child;
+    }
+
+
+void CMemSpyViewSystemConfig::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(5);
+    delete iModel;
+    iModel = model;
+
+    TBuf<128> valueBuf;
+    TInt value = 0;
+    TInt value2 = 0;
+    TMemSpySizeText sizeBuf;
+
+    //
+    _LIT(KItem1Format, "Manufacturer");
+    GetManufacturer( valueBuf );
+    AddItemL( KItem1Format, valueBuf );
+
+    //
+    _LIT(KItem2Format, "Machine Uid");
+    GetMachineUid( valueBuf );
+    AddItemL( KItem2Format, valueBuf );
+
+    //
+    _LIT(KItem1aFormat, "Model Uid");
+    GetHALValueAsHexL( HALData::EModel, KItem1aFormat );
+
+    //
+    _LIT(KItem2aFormat, "Device Family");
+    GetDeviceFamily( valueBuf );
+    AddItemL( KItem2aFormat, valueBuf );
+
+    //
+    _LIT(KItem2bFormat, "Device Family Rev.");
+    GetHALValueAsNumericL( HALData::EDeviceFamilyRev, KItem2bFormat );
+
+    //
+    _LIT(KItem3Format, "Hardware Rev.");
+    GetHALValueAsNumericL( HALData::EManufacturerHardwareRev, KItem3Format );
+
+    //
+    _LIT(KItem4Format, "Software Rev.");
+    GetHALValueAsNumericL( HALData::EManufacturerSoftwareRev, KItem4Format );
+
+    //
+    _LIT(KItem5Format, "Software Build");
+    GetHALValueAsNumericL( HALData::EManufacturerSoftwareBuild, KItem5Format );
+
+    //
+    _LIT(KItem6Format, "CPU");
+    GetCPU( valueBuf );
+    AddItemL( KItem6Format, valueBuf );
+
+    //
+    _LIT(KItem7Format, "CPU ABI");
+    GetCPUABI( valueBuf );
+    AddItemL( KItem7Format, valueBuf );
+
+    //
+    _LIT(KItem8Format, "CPU Speed");
+    _LIT(KItem8Suffix, "KHz");
+    GetHALValueAsNumericL( HALData::ECPUSpeed, KItem8Format, &KItem8Suffix );
+
+    //
+    _LIT(KItem8aFormat, "Floating Point Support");
+    GetHALValueAsYesNoL( HALData::EHardwareFloatingPoint, KItem8aFormat );
+
+    //
+    _LIT(KItem8bFormat, "System Tick Period");
+    _LIT(KItem8bSuffix, "ms");
+    GetHALValueAsNumericL( HALData::ESystemTickPeriod, KItem8bFormat, &KItem8bSuffix );
+
+    //
+    _LIT(KItem8cFormat, "Nano Tick Period");
+    _LIT(KItem8cSuffix, "us");
+    GetHALValueAsNumericL( HALData::ENanoTickPeriod, KItem8cFormat, &KItem8cSuffix );
+
+    //
+    _LIT(KItem9Format, "Startup Reason");
+    GetStartupReason( valueBuf );
+    AddItemL( KItem9Format, valueBuf );
+
+    //
+    _LIT(KItem10Format, "Language");
+    GetHALValueAsNumericL( HALData::ELanguageIndex, KItem10Format, NULL, 4 );
+
+    //
+    _LIT(KItem10aFormat, "Locale");
+    GetHALValueAsNumericL( HALData::ELocaleLoaded, KItem10aFormat, NULL, 4 );
+
+    //
+    _LIT(KItem11aFormat, "Clipboard Drive");
+    GetHALValueAsDriveLetterL( HALData::EClipboardDrive, KItem11aFormat );
+
+    //
+    _LIT(KItem11bFormat, "System Drive (Hal)");
+    GetHALValueAsDriveLetterL( HALData::ESystemDrive, KItem11bFormat );
+
+    //
+    _LIT(KItem11cFormat, "System Drive (F32)");
+    TDriveNumber systemDrive = CMemSpyEngineHelperFileSystem::GetSystemDrive();
+    AddItemL( systemDrive, KItem11cFormat );
+
+    //
+    _LIT(KItem11dFormat, "System Drive (Bafl)");
+    value = BaflUtils::GetSystemDrive( systemDrive );
+    if ( value == KErrNone )
+        {
+        AddItemL( systemDrive, KItem11dFormat );
+        }
+    else
+        {
+        MemSpyUiUtils::GetErrorText( valueBuf, value );
+        AddItemL( KItem11dFormat, valueBuf );
+        }
+
+    //
+    _LIT(KItem12Format, "Display Type");
+    GetDisplayType( valueBuf );
+    AddItemL( KItem12Format, valueBuf );
+    //
+    _LIT(KItem12aCaption, "Display Size");
+    _LIT(KItem12aFormat, "%d x %d");
+    value = value2 = 0;
+    GetHALValue( HALData::EDisplayXPixels, value );
+    GetHALValue( HALData::EDisplayYPixels, value2 );
+    valueBuf.Format( KItem12aFormat, value, value2 );
+    AddItemL( KItem12aCaption, valueBuf );
+
+    //
+    _LIT(KItem13Format, "Display Depth");
+    _LIT(KItem13Suffix, "bpp");
+    GetHALValueAsNumericL( HALData::EDisplayBitsPerPixel, KItem13Format, &KItem13Suffix );
+
+    //
+    _LIT(KItem14Format, "Display Mode Count");
+    GetHALValueAsNumericL( HALData::EDisplayNumModes, KItem14Format );
+
+    //
+    _LIT(KItem14aFormat, "Current Mode");
+    GetHALValueAsNumericL( HALData::EDisplayMode, KItem14aFormat );
+
+    //
+    _LIT(KItem15Format, "Display Address");
+    GetHALValueAsHexL( HALData::EDisplayMemoryAddress, KItem15Format );
+
+    //
+    _LIT(KItem16Format, "Screen Count");
+    GetHALValueAsNumericL( HALData::EDisplayNumberOfScreens, KItem16Format );
+
+    //
+    _LIT(KItem17Format, "Eikon Def. Disp. Mode");
+    GetDisplayMode( valueBuf, static_cast<TMemSpyDisplayMode>( CEikonEnv::Static()->DefaultDisplayMode() ) );
+    AddItemL( KItem17Format, valueBuf );
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    iModel = NULL;
+    }
+
+
+void CMemSpyViewSystemConfig::GetManufacturer( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::EManufacturer, value );
+    //
+    switch( value )
+        {
+    case HALData::EManufacturer_Ericsson:
+        {
+        _LIT( KName, "Ericsson" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Motorola:
+        {
+        _LIT( KName, "Motorola" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Nokia:
+        {
+        _LIT( KName, "Nokia" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Panasonic:
+        {
+        _LIT( KName, "Panasonic" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Psion:
+        {
+        _LIT( KName, "Psion" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Intel:
+        {
+        _LIT( KName, "Intel" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Cogent:
+        {
+        _LIT( KName, "Cogent" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Cirrus:
+        {
+        _LIT( KName, "Cirrus" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_Linkup:
+        {
+        _LIT( KName, "Linkup" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EManufacturer_TexasInstruments:
+        {
+        _LIT( KName, "Texas Instruments" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetDisplayMode( TDes& aBuf, TMemSpyDisplayMode aMode )
+    {
+    switch( aMode )
+        {
+    case ENone:
+        {
+        _LIT( KName, "ENone" );
+        aBuf.Copy( KName );
+        }
+    case EGray2:
+        {
+        _LIT( KName, "EGray2" );
+        aBuf.Copy( KName );
+        }
+    case EGray4:
+        {
+        _LIT( KName, "EGray4" );
+        aBuf.Copy( KName );
+        }
+    case EGray16:
+        {
+        _LIT( KName, "EGray16" );
+        aBuf.Copy( KName );
+        }
+    case EGray256:
+        {
+        _LIT( KName, "EGray256" );
+        aBuf.Copy( KName );
+        }
+    case EColor16:
+        {
+        _LIT( KName, "EColor16" );
+        aBuf.Copy( KName );
+        }
+    case EColor256:
+        {
+        _LIT( KName, "EColor256" );
+        aBuf.Copy( KName );
+        }
+    case EColor64K:
+        {
+        _LIT( KName, "EColor64K" );
+        aBuf.Copy( KName );
+        }
+    case EColor16M:
+        {
+        _LIT( KName, "EColor16M" );
+        aBuf.Copy( KName );
+        }
+    case ERgb:
+        {
+        _LIT( KName, "ERgb" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case EColor4K:
+        {
+        _LIT( KName, "EColor4K" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case EColor16MU:
+        {
+        _LIT( KName, "EColor16MU" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case EColor16MA:
+        {
+        _LIT( KName, "EColor16MA" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case EColor16MAP:
+        {
+        _LIT( KName, "EColor16MAP" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetDeviceFamily( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::EDeviceFamily, value );
+    //
+    switch( value )
+        {
+    case HALData::EDeviceFamily_Crystal:
+        {
+        _LIT( KName, "Crystal" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EDeviceFamily_Pearl:
+        {
+        _LIT( KName, "Pearl" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EDeviceFamily_Quartz:
+        {
+        _LIT( KName, "Quartz" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetCPU( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::ECPU, value );
+    //
+    switch( value )
+        {
+    case HALData::ECPU_ARM:
+        {
+        _LIT( KName, "ARM" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPU_MCORE:
+        {
+        _LIT( KName, "mCORE" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPU_X86:
+        {
+        _LIT( KName, "X86" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetCPUABI( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::ECPUABI, value );
+    //
+    switch( value )
+        {
+    case HALData::ECPUABI_ARM4:
+        {
+        _LIT( KName, "ARM4" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_ARMI:
+        {
+        _LIT( KName, "ARMI" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_THUMB:
+        {
+        _LIT( KName, "ARM4" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_MCORE:
+        {
+        _LIT( KName, "mCORE" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_MSVC:
+        {
+        _LIT( KName, "MSVC" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_ARM5T:
+        {
+        _LIT( KName, "ARM5T" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ECPUABI_X86:
+        {
+        _LIT( KName, "X86" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetStartupReason( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::ESystemStartupReason, value );
+    //
+    switch( value )
+        {
+    case HALData::ESystemStartupReason_Cold:
+        {
+        _LIT( KName, "Cold" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ESystemStartupReason_Warm:
+        {
+        _LIT( KName, "Warm" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::ESystemStartupReason_Fault:
+        {
+        _LIT( KName, "Fault" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetKeyboard( TDes& aBuf )
+    {
+    _LIT(KComma, ", ");
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::EKeyboard, value );
+    //
+    aBuf.Zero();
+    if  ( value & EKeyboard_Keypad )
+        {
+        _LIT( KName, "Keypad" );
+        aBuf.Copy( KName );
+        }
+
+
+    if  ( value & EKeyboard_Full )
+        {
+        if  ( aBuf.Length() )
+            {
+            aBuf.Append( KComma );
+            }
+
+        _LIT( KName, "Full Keyboard" );
+        aBuf.Copy( KName );
+        }
+
+    if  ( !aBuf.Length() )
+        {
+        aBuf.Copy( KMemSpyItemValueNotKnown );
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetMachineUid( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::EMachineUid, value );
+    //
+    switch( value )
+        {
+    case HALData::EMachineUid_Series5mx:
+        {
+        _LIT( KName, "Series 5mx" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Brutus:
+        {
+        _LIT( KName, "Brutus" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Cogent:
+        {
+        _LIT( KName, "Cogent" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Win32Emulator:
+        {
+        _LIT( KName, "Win32 Emulator" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_WinC:
+        {
+        _LIT( KName, "WINC" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_CL7211_Eval:
+        {
+        _LIT( KName, "CL7211" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_LinkUp:
+        {
+        _LIT( KName, "LinkUp" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Assabet:
+        {
+        _LIT( KName, "Assabet" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_IQ80310:
+        {
+        _LIT( KName, "IQ80310" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Lubbock:
+        {
+        _LIT( KName, "Lubbock" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Integrator:
+        {
+        _LIT( KName, "Integrator" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_Helen:
+        {
+        _LIT( KName, "Helen" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_X86PC:
+        {
+        _LIT( KName, "X86PC" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_OmapH2:
+        {
+        _LIT( KName, "OmapH2" );
+        aBuf.Copy( KName );
+        }
+        break;
+    case HALData::EMachineUid_OmapH4:
+        {
+        _LIT( KName, "OmapH4" );
+        aBuf.Copy( KName );
+        }
+        break;
+    default:
+        {
+        _LIT( KName, "0x%08x" );
+        aBuf.Format( KName, value );
+        }
+        break;
+        }
+    }
+
+
+void CMemSpyViewSystemConfig::GetDisplayType( TDes& aBuf )
+    {
+    TInt value = KErrGeneral;
+    GetHALValue( HALData::EDisplayIsMono, value );
+    //
+    if  ( value == 0 )
+        {
+        _LIT( KName, "Colour" );
+        aBuf.Copy( KName );
+        }
+    else if ( value == 1 )
+        {
+        _LIT( KName, "Mono" );
+        aBuf.Copy( KName );
+        }
+    else
+        {
+        MemSpyUiUtils::GetErrorText( aBuf, value );
+        }
+    }
+
+
+TInt CMemSpyViewSystemConfig::GetHALValue( HALData::TAttribute aAttribute, TInt& aValue )
+    {
+    aValue = KErrGeneral;
+    const TInt error = HAL::Get( aAttribute, aValue );
+
+#ifdef _DEBUG
+    if  ( error != KErrNone )
+        {
+        RDebug::Printf("CMemSpyViewSystemConfig::GetHALValue() - aAttribute: %3d, error: %d, value: %d", aAttribute, error, aValue);
+        }
+#endif
+
+    return error;
+    }
+
+
+TInt CMemSpyViewSystemConfig::GetHALValueAsNumericL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix, TInt aWidth )
+    {
+    TBuf<20> valueBuf; 
+    TInt value = 0;
+    //
+    const TInt error = GetHALValue( aAttribute, value );
+    if  ( error == KErrNone )
+        {
+        if  ( aWidth > 0 && aWidth < 12 )
+            {
+            valueBuf.NumFixedWidthUC( (TUint) value, EDecimal, aWidth );
+            }
+        else
+            {
+            valueBuf.Num( value );
+            }
+
+        AddItemL( aCaption, valueBuf, aSuffix );
+        }
+    else
+        {
+        MemSpyUiUtils::GetErrorText( valueBuf, error );
+        AddItemL( aCaption, valueBuf );
+        }
+    //
+    return error;
+    }
+
+
+TInt CMemSpyViewSystemConfig::GetHALValueAsHexL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
+    {
+    TBuf<20> valueBuf; 
+    TInt value = 0;
+    //
+    const TInt error = GetHALValue( aAttribute, value );
+    if  ( error == KErrNone )
+        {
+        MemSpyEngineUtils::FormatHex( valueBuf, value );
+        AddItemL( aCaption, valueBuf, aSuffix );
+        }
+    else
+        {
+        MemSpyUiUtils::GetErrorText( valueBuf, error );
+        AddItemL( aCaption, valueBuf );
+        }
+    //
+    return error;
+    }
+
+
+TInt CMemSpyViewSystemConfig::GetHALValueAsYesNoL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
+    {
+    TBuf<20> valueBuf; 
+    TInt value = 0;
+    //
+    const TInt error = GetHALValue( aAttribute, value );
+    if  ( error == KErrNone || error == KErrNotSupported )
+        {
+        _LIT(KYes, "Yes");
+        _LIT(KNo, "No");
+        _LIT(KError, "Error: %d");
+
+        if ( error < KErrNone )
+            {
+            valueBuf.Format( KError, error );
+            }
+        else if ( value == EFalse )
+            {
+            valueBuf.Copy( KNo );
+            }
+        else if ( error == KErrNone )
+            {
+            valueBuf.Copy( KYes );
+            }
+
+        AddItemL( aCaption, valueBuf, aSuffix );
+        }
+    else
+        {
+        MemSpyUiUtils::GetErrorText( valueBuf, error );
+        AddItemL( aCaption, valueBuf );
+        }
+    //
+    return error;
+    }
+
+
+TInt CMemSpyViewSystemConfig::GetHALValueAsDriveLetterL( HALData::TAttribute aAttribute, const TDesC& aCaption, const TDesC* aSuffix )
+    {
+    TInt value = 0;
+    const TInt error = GetHALValue( aAttribute, value );
+    //
+    if  ( error == KErrNone && ( value >= EDriveA && value <= EDriveZ ) )
+        {
+        AddItemL( (TDriveNumber) value, aCaption, aSuffix );
+        }
+    else
+        {
+        _LIT( KItemNotSet, "Not Defined");
+        AddItemL( aCaption, KItemNotSet );
+        }
+    //
+    return error;
+    }
+
+
+void CMemSpyViewSystemConfig::AddItemL( const TDesC& aCaption, const TDesC& aValue, const TDesC* aSuffix )
+    {
+    _LIT(KItemFormat, "\t%S\t\t%S");
+    //
+    TBuf<KMaxFullName> item;
+    item.Format( KItemFormat, &aCaption, &aValue );
+    if  ( aSuffix ) 
+        {
+        _LIT(KSpace, " ");
+        item.Append( KSpace );
+        item.Append( *aSuffix );
+        }
+    //
+    iModel->AppendL( item );
+    }
+
+
+void CMemSpyViewSystemConfig::AddItemL( TDriveNumber aDrive, const TDesC& aCaption, const TDesC* aSuffix )
+    {
+    TBuf<20> valueBuf; 
+    //
+    const TDriveUnit drive( aDrive );
+    valueBuf.Copy( drive.Name() );
+    //
+    AddItemL( aCaption, valueBuf, aSuffix );
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemActiveObject.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,248 @@
+/*
+* 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 "MemSpyViewThreadInfoItemActiveObject.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperactiveobject.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+
+
+CMemSpyViewThreadInfoItemActiveObjectBase::CMemSpyViewThreadInfoItemActiveObjectBase(RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeActiveObject )
+    {
+    }
+
+
+TBool CMemSpyViewThreadInfoItemActiveObjectBase::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    /*
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdActiveObjectListing:
+        OnCmdWriteAOListingL();
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+     * */
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemActiveObjectBase::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+     //   aMenuPane->SetItemDimmed( EMemSpyCmdActiveObject, Thread().IsDead() );
+        }
+    }
+
+
+CMemSpyEngineActiveObjectArray& CMemSpyViewThreadInfoItemActiveObjectBase::ActiveObjectArray() const
+    {
+ //   CMemSpyThreadInfoActiveObjects* activeObjectArray = static_cast< CMemSpyThreadInfoActiveObjects* >( iInfoItem );
+ //   return activeObjectArray->Array();
+    }
+    
+    
+void CMemSpyViewThreadInfoItemActiveObjectBase::OnCmdWriteAOListingL()
+    {
+	iMemSpySession.OutputAOListL( ThreadId(), EMemSpyThreadInfoItemTypeActiveObject );
+	
+	/*
+    CMemSpyEngineActiveObjectArray& objects = ActiveObjectArray();
+
+    // Begin a new data stream
+    _LIT( KMemSpyContext, "Active Object List - " );
+    _LIT( KMemSpyFolder, "Active Objects" );
+    iEngine.Sink().DataStreamBeginL( KMemSpyContext, KMemSpyFolder );
+
+    // Set prefix for overall listing
+    iEngine.Sink().OutputPrefixSetLC( KMemSpyContext );
+
+    // Create header
+    CMemSpyEngineActiveObjectArray::OutputDataColumnsL( iEngine );
+    
+    // List items
+    const TInt count = objects.Count();
+    for(TInt i=0; i<count; i++)
+        {
+        const CMemSpyEngineActiveObject& object = objects.At( i );
+        //
+        object.OutputDataL( iEngine );
+        }
+
+    // Tidy up
+    CleanupStack::PopAndDestroy(); // prefix
+
+    // End data stream
+    iEngine.Sink().DataStreamEndL();
+    */
+    }
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewThreadInfoItemActiveObject::CMemSpyViewThreadInfoItemActiveObject( RMemSpySession& aSession, MMemSpyViewObserver& aObserver,  TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemActiveObjectBase( aSession, aObserver, aProcId, aId, aType )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemActiveObject::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    // Causes list of server's to be prepared
+    CMemSpyViewThreadInfoItemActiveObjectBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    _LIT( KTitle, "Active Objects" );
+    SetTitleL( KTitle );
+
+    // Try to select the correct server
+    /* TODO: to consider this
+    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
+    TInt selectedIndex = 0;
+    if  ( aSelectionRune )
+        {
+        CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
+        const TInt index = activeObjectArray.ObjectIndexByAddress( aSelectionRune );
+        if  ( index >= 0 && index < activeObjectArray.Count() )
+            {
+            selectedIndex = index + 1;
+            }
+        }
+
+    // Select item
+    if  ( infoItem->DetailsCount() > 0 )
+        {
+        */
+        iListBox->SetCurrentItemIndex( 0 ); //selectedIndex
+        HandleListBoxItemSelectedL( 0 ); //selectedIndex
+        /*
+        }
+        */
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemActiveObject::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemActiveObject;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemActiveObject::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    /*
+    // Get current entry address
+    TInt index = iListBox->CurrentItemIndex();
+    if  ( index > 0 )
+        {
+        --index;
+        CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
+        //
+        if  ( index >= 0 && index < activeObjectArray.MdcaCount() )
+            {
+            CMemSpyEngineActiveObject& object = activeObjectArray.At( index );
+            TAny* aoAddress = object.Address();
+            //
+            child = new(ELeave) CMemSpyViewThreadInfoItemActiveObjectDetails( iEngine, iObserver, iInfoItem->Container(), aoAddress );
+            CleanupStack::PushL( child );
+            child->ConstructL( Rect(), *Parent(), NULL );
+            CleanupStack::Pop( child );
+            }
+        }
+    //
+     * 
+     */
+    return child;
+    }
+
+
+
+
+
+
+
+
+
+
+/*
+CMemSpyViewThreadInfoItemActiveObjectDetails::CMemSpyViewThreadInfoItemActiveObjectDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, TAny* aObjectAddress )
+:   CMemSpyViewThreadInfoItemActiveObjectBase( aEngine, aObserver, aContainer ), iObjectAddress( aObjectAddress )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemActiveObjectDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemActiveObjectBase::ConstructL( aRect, aContainer, aSelectionRune );
+
+    _LIT( KTitle, "Active Object Details" );
+    SetTitleL( KTitle );
+    }
+    
+
+TMemSpyViewType CMemSpyViewThreadInfoItemActiveObjectDetails::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemActiveObjectDetails;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemActiveObjectDetails::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemActiveObject* parent = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iEngine, iObserver, iInfoItem->Container() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), iObjectAddress );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewThreadInfoItemActiveObjectDetails::SetListBoxModelL()
+    {
+    // Try to find the right entry
+    CMemSpyEngineActiveObjectArray& activeObjectArray = ActiveObjectArray();
+    const TInt index = activeObjectArray.ObjectIndexByAddress( iObjectAddress );
+    User::LeaveIfError( index );
+    CMemSpyEngineActiveObject& object = activeObjectArray.At( index );
+    //
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( &object );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemChunk.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* 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 "MemSpyViewThreadInfoItemChunk.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperchunk.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewChunkList.h"
+
+
+
+CMemSpyViewThreadInfoItemChunk::CMemSpyViewThreadInfoItemChunk( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeChunk )
+    {
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemChunk::PrepareChildViewL()
+    {	
+    CMemSpyViewBase* child = NULL;
+    /* TODO
+    // Get the code segment list
+    CMemSpyThreadInfoChunk* chunkInfoItem = static_cast< CMemSpyThreadInfoChunk* >( iInfoItem );
+    CMemSpyEngineChunkList* list = &chunkInfoItem->List();
+    
+    // Get the current code segment that corresponds to our currently focused list item.
+    const TInt index = iListBox->CurrentItemIndex();
+    if  ( index >= 0 && index < list->Count() )
+        {
+        CMemSpyEngineChunkEntry& entry = list->At( index );
+        child = new(ELeave) CMemSpyViewChunkDetails( iEngine, iObserver, *list, entry );
+        
+        // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+        // This object is about to die in any case.
+        chunkInfoItem->NullifyList();
+
+        CleanupStack::PushL( child );
+        child->ConstructL( Rect(), *Parent() );
+        CleanupStack::Pop( child );
+        }
+    */
+    return child;    
+    }
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemCodeSeg.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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 "MemSpyViewThreadInfoItemCodeSeg.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelpercodesegment.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewCodeSegList.h"
+
+
+
+CMemSpyViewThreadInfoItemCodeSeg::CMemSpyViewThreadInfoItemCodeSeg( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeCodeSeg )
+    {
+    }
+
+
+TBool CMemSpyViewThreadInfoItemCodeSeg::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
+    return handled;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemCodeSeg::PrepareChildViewL()
+    {	
+    CMemSpyViewBase* child = NULL;
+    /* TODO
+    // Get the code segment list
+    CMemSpyThreadInfoCodeSeg* codeSegInfoItem = static_cast< CMemSpyThreadInfoCodeSeg* >( iInfoItem );
+    CMemSpyEngineCodeSegList* list = &codeSegInfoItem->List();
+    
+    // Get the current code segment that corresponds to our currently focused list item.
+    const TInt index = iListBox->CurrentItemIndex();
+    if  ( index >= 0 && index < list->Count() )
+        {
+        CMemSpyEngineCodeSegEntry& entry = list->At( index );
+        child = new(ELeave) CMemSpyViewCodeSegDetails( iEngine, iObserver, *list, entry );
+        
+        // Ownership is transferred to child. Cleanupstack guarantees it will be destroyed now.
+        // This object is about to die in any case.
+        codeSegInfoItem->NullifyList();
+
+        CleanupStack::PushL( child );
+        child->ConstructL( Rect(), *Parent() );
+        CleanupStack::Pop( child );
+        }
+    */
+    return child;    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneralInfo.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* 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 "MemSpyViewThreadInfoItemGeneralInfo.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewThreadInfoItemHeap.h"
+
+
+/*
+CMemSpyViewThreadInfoItemGeneralInfo::CMemSpyViewThreadInfoItemGeneralInfo( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeGeneralInfo )
+    {
+    }
+*/
+CMemSpyViewThreadInfoItemGeneralInfo::CMemSpyViewThreadInfoItemGeneralInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeGeneralInfo )
+    {
+    }
+
+
+TBool CMemSpyViewThreadInfoItemGeneralInfo::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+
+
+void CMemSpyViewThreadInfoItemGeneralInfo::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemGeneric.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,327 @@
+/*
+* 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 "MemSpyViewThreadInfoItemGeneric.h"
+
+// System includes
+#include <AknWaitDialog.h>
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewThreadInfoItemList.h"
+#include "MemSpyUiUtils.h"
+
+// Constants
+const TInt KMemSpyConstructionCheckerTimerPeriod = 500000; // 1/2 second
+
+CMemSpyViewThreadInfoItemGeneric::CMemSpyViewThreadInfoItemGeneric( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcessId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewBase( aSession, aObserver )//, iThreadId( aId ), iType( aType )		//iContainer( aInfoContainer )
+    {
+	iParentProcessId = aProcessId;
+	iThreadId = aId;
+	iType = aType;
+    }
+
+
+CMemSpyViewThreadInfoItemGeneric::~CMemSpyViewThreadInfoItemGeneric()
+    {/* TODO:
+    if  ( iInfoItem )
+        {
+        iInfoItem->Close();
+        }    
+    DestroyWaitNote();    
+    */
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+	const TPtrC pTitle( MemSpyUiUtils::ThreadInfoItemNameByType( iType ) );
+	SetTitleL( pTitle );
+
+    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+    }
+
+
+CMemSpyProcess& CMemSpyViewThreadInfoItemGeneric::Process() const
+    {
+  //  return iContainer.Thread().Process();
+    }
+
+
+CMemSpyThread& CMemSpyViewThreadInfoItemGeneric::Thread() const
+    {
+  //  return iContainer.Thread();
+    }
+
+
+CMemSpyThreadInfoContainer& CMemSpyViewThreadInfoItemGeneric::Container() const
+    {
+ //   return iContainer;
+    }
+
+
+CMemSpyThreadInfoItemBase& CMemSpyViewThreadInfoItemGeneric::InfoItem() const
+    {
+ //   __ASSERT_ALWAYS( iInfoItem != NULL, User::Invariant() );
+ //   return *iInfoItem;
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::RefreshL()
+    {
+ //   iInfoItem->RebuildL();     //TODO
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemGeneric::ViewType() const
+    {
+    TMemSpyViewType type = EMemSpyViewTypeNone;
+    //
+    //switch( iInfoItem->Type() )
+    switch( iType )
+        {
+    case EMemSpyThreadInfoItemTypeHeap:
+        type = EMemSpyViewTypeThreadInfoItemHeap;
+        break;
+    case EMemSpyThreadInfoItemTypeStack:
+        type = EMemSpyViewTypeThreadInfoItemStack;
+        break;
+    case EMemSpyThreadInfoItemTypeChunk:
+        type = EMemSpyViewTypeThreadInfoItemChunk;
+        break;
+    case EMemSpyThreadInfoItemTypeCodeSeg:
+        type = EMemSpyViewTypeThreadInfoItemCodeSeg;
+        break;
+    case EMemSpyThreadInfoItemTypeServer:
+        type = EMemSpyViewTypeThreadInfoItemServer;
+        break;
+    case EMemSpyThreadInfoItemTypeSession:
+        type = EMemSpyViewTypeThreadInfoItemSession;
+        break;
+    case EMemSpyThreadInfoItemTypeSemaphore:
+        type = EMemSpyViewTypeThreadInfoItemSemaphore;
+        break;
+    case EMemSpyThreadInfoItemTypeMutex:
+        type = EMemSpyViewTypeThreadInfoItemMutex;
+        break;
+    case EMemSpyThreadInfoItemTypeTimer:
+        type = EMemSpyViewTypeThreadInfoItemTimer;
+        break;
+    case EMemSpyThreadInfoItemTypeLDD:
+        type = EMemSpyViewTypeThreadInfoItemLDD;
+        break;
+    case EMemSpyThreadInfoItemTypePDD:
+        type = EMemSpyViewTypeThreadInfoItemPDD;
+        break;
+    case EMemSpyThreadInfoItemTypeLogicalChannel:
+        type = EMemSpyViewTypeThreadInfoItemLogicalChannel;
+        break;
+    case EMemSpyThreadInfoItemTypeChangeNotifier:
+        type = EMemSpyViewTypeThreadInfoItemChangeNotifier;
+        break;
+    case EMemSpyThreadInfoItemTypeUndertaker:
+        type = EMemSpyViewTypeThreadInfoItemUndertaker;
+        break;
+    case EMemSpyThreadInfoItemTypeMessageQueue:
+        type = EMemSpyViewTypeThreadInfoItemMessageQueue;
+        break;
+    case EMemSpyThreadInfoItemTypeConditionalVariable:
+        type = EMemSpyViewTypeThreadInfoItemConditionalVariable;
+        break;
+    case EMemSpyThreadInfoItemTypeOpenFiles:
+        type = EMemSpyViewTypeThreadInfoItemOpenFiles;
+        break;
+    case EMemSpyThreadInfoItemTypeActiveObject:
+        type = EMemSpyViewTypeThreadInfoItemActiveObject;
+        break;
+    case EMemSpyThreadInfoItemTypeGeneralInfo:
+        type = EMemSpyViewTypeThreadInfoItemGeneralInfo;
+        break;
+    case EMemSpyThreadInfoItemTypeOtherThreads:
+        type = EMemSpyViewTypeThreadInfoItemOtherThreads;
+        break;
+    case EMemSpyThreadInfoItemTypeOtherProcesses:
+        type = EMemSpyViewTypeThreadInfoItemOtherProcesses;
+        break;
+    case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
+        type = EMemSpyViewTypeThreadInfoItemOwnedThreadHandles;
+        break;
+    case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
+        type = EMemSpyViewTypeThreadInfoItemOwnedProcessHandles;
+        break;
+
+    default:
+        //__ASSERT_DEBUG( EFalse, User::Invariant() );
+        break;
+        }
+    //
+    return type;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemGeneric::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemList* parent = new(ELeave) CMemSpyViewThreadInfoItemList( iMemSpySession, iObserver, iParentProcessId, iThreadId );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), iType );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemGeneric::PrepareChildViewL()
+    {
+    //__ASSERT_ALWAYS( iInfoItem != NULL, User::Invariant() );
+    CMemSpyViewBase* child = NULL;
+    //
+    return child;
+    }
+
+
+TBool CMemSpyViewThreadInfoItemGeneric::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::SetListBoxModelL()
+    {
+	iMemSpySession.GetThreadInfoItems( iThreadInfoItems, iThreadId, iType ); // TODO don't ignore error!
+	
+	iModel = new (ELeave) CDesC16ArrayFlat( iThreadInfoItems.Count() + 10 );
+	
+	for( TInt i=0; i<iThreadInfoItems.Count(); i++)
+		{						
+		HBufC* combined = HBufC::NewLC( iThreadInfoItems[i]->Caption().Length() + iThreadInfoItems[i]->Value().Length() + 30 );		
+
+		TPtr pCombined( combined->Des() );
+		pCombined.Zero();
+		pCombined.Copy( _L("\t") );
+		if( iThreadInfoItems[i]->Caption() != KNullDesC )
+			pCombined.Append( iThreadInfoItems[i]->Caption() );
+		if( iType != EMemSpyThreadInfoItemTypeChunk )
+			{
+			pCombined.Append( _L("\t\t") );
+			pCombined.Append( iThreadInfoItems[i]->Value() );
+			}					
+		
+		iModel->AppendL( pCombined );	
+		
+		CleanupStack::PopAndDestroy(combined);
+		}	
+	
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    //listbox->Model()->SetItemTextArray( iInfoItem );
+    listbox->Model()->SetItemTextArray( iModel );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::HandleListBoxItemSelectedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+
+void CMemSpyViewThreadInfoItemGeneric::ShowWaitNoteL()
+    {
+    // Ugly, but I'm not adding an observer mechanism just for this wait dialog.
+   // __ASSERT_ALWAYS( iWaitConstructionChecker == NULL, User::Invariant() );
+    iWaitConstructionChecker = CPeriodic::NewL( CActive::EPriorityLow );
+    iWaitConstructionChecker->Start( KMemSpyConstructionCheckerTimerPeriod, 
+                                     KMemSpyConstructionCheckerTimerPeriod, 
+                                     TCallBack( CheckForItemConstructionComplete, this ) );
+
+    if  ( !iWaitNote )
+        {
+        iWaitNote = new ( ELeave ) CAknWaitDialog( reinterpret_cast<CEikDialog**> ( &iWaitNote ), ETrue );
+        iWaitNote->ExecuteDlgLD( CAknNoteDialog::ENoTone, R_MEMSPY_PREPARING_INFO_ITEM_CONTAINER_WAIT_NOTE );
+        }
+    }
+
+
+void CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote()
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote() - START" );
+#endif
+	//
+    delete iWaitConstructionChecker;
+    iWaitConstructionChecker = NULL;
+    //
+    if  ( iWaitNote )
+        {
+        TRAP_IGNORE( iWaitNote->ProcessFinishedL() ); // deletes the dialog
+        iWaitNote = NULL;
+        }
+	//
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::DestroyWaitNote() - END" );
+#endif
+    }
+
+
+TInt CMemSpyViewThreadInfoItemGeneric::CheckForItemConstructionComplete( TAny* aSelf )
+    {
+	/*
+    CMemSpyViewThreadInfoItemGeneric& self = *reinterpret_cast< CMemSpyViewThreadInfoItemGeneric* >( aSelf );
+    */
+    //
+#ifdef _DEBUG
+/*   RDebug::Printf( "CMemSpyViewThreadInfoItemGeneric::CheckForItemConstructionComplete() - ready status: %d, iType: %d", self.iInfoItem->IsReady(), self.iInfoItem->Type() );*/
+#endif
+	//
+    /*
+    TBool callAgain = ETrue;
+    if  ( self.iInfoItem->IsReady() )
+        {
+        self.DestroyWaitNote();
+        callAgain = EFalse;
+        }
+    //
+    return callAgain;
+    */
+    }
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemHeap.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,101 @@
+/*
+* 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 "MemSpyViewThreadInfoItemHeap.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewThreadInfoItemHeap.h"
+#include "MemSpyAppUi.h" 
+
+
+/*
+CMemSpyViewThreadInfoItemHeap::CMemSpyViewThreadInfoItemHeap( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeHeap )
+    {
+    }
+*/
+CMemSpyViewThreadInfoItemHeap::CMemSpyViewThreadInfoItemHeap( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId , EMemSpyThreadInfoItemTypeHeap )
+    {
+    } 
+
+
+TBool CMemSpyViewThreadInfoItemHeap::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+#ifndef __WINS__
+	case EMemSpyCmdHeapDataDump:
+        OnCmdHeapDataL();
+        break;
+#endif
+	case EMemSpyCmdHeapCellListing:
+        OnCmdHeapCellListingL();
+        break;
+    case EMemSpyCmdHeapInfoThread:
+        OnCmdHeapInfoL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemHeap::OnCmdHeapDataL()
+    {
+	iMemSpySession.OutputThreadHeapDataL( ThreadId() );    
+    }
+
+
+void CMemSpyViewThreadInfoItemHeap::OnCmdHeapCellListingL()
+    {
+    iMemSpySession.OutputThreadCellListL( ThreadId() );
+    }
+
+
+void CMemSpyViewThreadInfoItemHeap::OnCmdHeapInfoL()
+    {
+	iMemSpySession.OutputHeapInfoUserL( ThreadId() );    
+    }
+
+
+void CMemSpyViewThreadInfoItemHeap::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+        //aMenuPane->SetItemDimmed( EMemSpyCmdHeap, Thread().IsDead() ); //TODO
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemList.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,435 @@
+/*
+* 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 "MemSpyViewThreadInfoItemList.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#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"
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewThreadInfoItemHeap.h"
+#include "MemSpyViewThreadInfoItemStack.h"
+#include "MemSpyViewThreadInfoItemChunk.h"
+#include "MemSpyViewThreadInfoItemCodeSeg.h"
+#include "MemSpyViewThreadInfoItemServer.h"
+#include "MemSpyViewThreadInfoItemActiveObject.h"
+#include "MemSpyViewThreadInfoItemGeneralInfo.h"
+#include "MemSpyViewThreadInfoItemMemoryTracking.h"
+
+// Constants
+const TInt KMemSpyIdleResetListboxTimerPeriod = 250000;
+
+
+CMemSpyViewThreadInfoItemList::CMemSpyViewThreadInfoItemList( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcess, TThreadId aThread )
+:   CMemSpyViewBase( aSession, aObserver ), iParentProcessId( aProcess ), iThreadId( aThread )
+    {
+    }
+
+
+CMemSpyViewThreadInfoItemList::~CMemSpyViewThreadInfoItemList()
+    {
+	/* TODO:
+    TRAP_IGNORE( 
+        CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
+        container.ObserverRemove( *this );
+    );
+	*/
+    }
+
+
+
+void CMemSpyViewThreadInfoItemList::ConstructL( const TRect& aRect, CCoeControl& aContainer, TMemSpyThreadInfoItemType aType )
+    {
+    _LIT( KTitle, "Thread Objects" );
+    SetTitleL( KTitle );
+    //
+    //iIdleResetListboxTimer = CPeriodic::NewL( CActive::EPriorityIdle );    
+    /* TODO: to solve observer
+    CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
+    container.ObserverAddL( *this );
+    */    
+    CMemSpyViewBase::ConstructL( aRect, aContainer );
+    //
+    if( aType > EMemSpyThreadInfoItemTypeFirst || aType < EMemSpyThreadInfoItemTypeLast )
+    	{
+		TInt index(aType);
+		if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
+			{
+			iListBox->SetCurrentItemIndex( index );
+			HandleListBoxItemSelectedL( index );
+			}
+    	}
+    else
+    	{
+		iListBox->SetCurrentItemIndex( 0 );
+        HandleListBoxItemSelectedL( 0 );
+    	}
+    /*if  ( aSelectionRune )
+        {		
+        CMemSpyThreadInfoItemBase* selectedItem = reinterpret_cast< CMemSpyThreadInfoItemBase* >( aSelectionRune );
+        const TInt index = container.InfoItemIndexByType( selectedItem->Type() );
+        if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
+            {
+            iListBox->SetCurrentItemIndex( index );
+            HandleListBoxItemSelectedL( index );
+            }
+        }
+    else if ( container.MdcaCount() > 0 )
+        {*/
+        //iListBox->SetCurrentItemIndex( 0 );
+        //HandleListBoxItemSelectedL( 0 );
+        //}
+    }
+
+const CMemSpyThreadInfoItemBase& CMemSpyViewThreadInfoItemList::CurrentInfoItem() const
+    {
+    //__ASSERT_ALWAYS( iCurrentInfoItem != NULL, User::Invariant() );
+    return *iCurrentInfoItem;
+    }
+
+void CMemSpyViewThreadInfoItemList::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemList::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemList;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareParentViewL()
+    {
+    CMemSpyViewBase* parent = new(ELeave) CMemSpyViewThreads( iMemSpySession, iObserver, iParentProcessId, iThreadId );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemList::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+
+    TMemSpyThreadInfoItemType type;
+    iMemSpySession.GetInfoItemType( iCurrentInfoItemId, iThreadId, type );
+    
+    switch( type )
+        {    	
+    case EMemSpyThreadInfoItemTypeHeap:
+        child = new(ELeave) CMemSpyViewThreadInfoItemHeap( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
+        break;        
+    case EMemSpyThreadInfoItemTypeStack:
+        child = new(ELeave) CMemSpyViewThreadInfoItemStack( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
+        break;        
+    case EMemSpyThreadInfoItemTypeChunk:
+        child = new(ELeave) CMemSpyViewThreadInfoItemChunk( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
+        break;
+    case EMemSpyThreadInfoItemTypeCodeSeg:
+        child = new(ELeave) CMemSpyViewThreadInfoItemCodeSeg( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
+        break;        
+    case EMemSpyThreadInfoItemTypeServer:
+        child = new(ELeave) CMemSpyViewThreadInfoItemServer( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
+        break;        
+    case EMemSpyThreadInfoItemTypeActiveObject:
+        child = new(ELeave) CMemSpyViewThreadInfoItemActiveObject( iMemSpySession, iObserver, iParentProcessId, iThreadId, type  );
+        break;             
+    case EMemSpyThreadInfoItemTypeGeneralInfo:
+        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:
+    case EMemSpyThreadInfoItemTypeTimer:
+    case EMemSpyThreadInfoItemTypeLDD:
+    case EMemSpyThreadInfoItemTypePDD:
+    case EMemSpyThreadInfoItemTypeLogicalChannel:
+    case EMemSpyThreadInfoItemTypeChangeNotifier:
+    case EMemSpyThreadInfoItemTypeUndertaker:
+    case EMemSpyThreadInfoItemTypeMessageQueue:
+    case EMemSpyThreadInfoItemTypeConditionalVariable:
+    case EMemSpyThreadInfoItemTypeOpenFiles:
+    case EMemSpyThreadInfoItemTypeOtherThreads:
+    case EMemSpyThreadInfoItemTypeOtherProcesses:
+    case EMemSpyThreadInfoItemTypeOwnedThreadHandles:
+    case EMemSpyThreadInfoItemTypeOwnedProcessHandles:
+        child = new(ELeave) CMemSpyViewThreadInfoItemGeneric( iMemSpySession, iObserver, iParentProcessId, iThreadId, type );
+        break;
+    
+    default:
+       // __ASSERT_ALWAYS( EFalse, User::Panic( _L("MemSpy-View"), 0) );
+        break;        
+        }
+       
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    }
+
+
+TBool CMemSpyViewThreadInfoItemList::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+	case EMemSpyCmdThreadInfoHandles:
+        OnCmdInfoHandlesL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+    
+void CMemSpyViewThreadInfoItemList::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+     //   aMenuPane->SetItemDimmed( EMemSpyCmdThread, iThread.IsDead() ); //TODO
+        }
+    else if ( aResourceId == MenuCascadeResourceId() )
+        {
+        // Always remove these items - they are only shown in the master thread view
+        aMenuPane->SetItemDimmed( EMemSpyCmdThreadSetPriority, ETrue );
+        aMenuPane->SetItemDimmed( EMemSpyCmdThreadEnd, ETrue );
+        }
+    }
+
+
+void CMemSpyViewThreadInfoItemList::OnCmdInfoHandlesL()
+    {
+    iMemSpySession.OutputThreadInfoHandlesL( iThreadId );
+    }
+
+
+void CMemSpyViewThreadInfoItemList::HandleMemSpyEngineInfoContainerEventL( TEvent aEvent, TMemSpyThreadInfoItemType aType )
+    {/*
+    if  ( aEvent == EInfoItemChanged )
+        {
+        }
+    else if ( aEvent == EInfoItemDestroyed )
+        {
+        if  ( iCurrentInfoItem && iCurrentInfoItem->Type() == aType )
+            {
+            iCurrentInfoItem->Close();
+            iCurrentInfoItem = NULL;
+            }
+        }
+
+    iIdleResetListboxTimer->Cancel();
+    iIdleResetListboxTimer->Start( KMemSpyIdleResetListboxTimerPeriod, KMemSpyIdleResetListboxTimerPeriod, TCallBack( IdleUpdateListBoxModel, this ) );
+    */
+    }
+
+
+void CMemSpyViewThreadInfoItemList::SetListBoxModelL()
+    {	
+	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 );
+    }
+
+
+void CMemSpyViewThreadInfoItemList::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewThreadInfoItemList::HandleListBoxItemSelectedL( TInt aIndex )
+    {
+	iCurrentInfoItemId = aIndex;
+	
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+TInt CMemSpyViewThreadInfoItemList::IdleUpdateListBoxModel( TAny* aSelf )
+    {
+    CMemSpyViewThreadInfoItemList* self = reinterpret_cast< CMemSpyViewThreadInfoItemList* >( aSelf );
+    TRAP_IGNORE( self->DoIdleUpdateListBoxModelL() );
+    return EFalse;
+    }
+
+
+void CMemSpyViewThreadInfoItemList::DoIdleUpdateListBoxModelL()
+    {
+	/*
+    CMemSpyThreadInfoContainer& container = iThread.InfoContainerL();
+
+    // Try to maintain current item selection if at all possible.
+    TMemSpyThreadInfoItemType type = EMemSpyThreadInfoItemTypeHeap;
+    if  ( iCurrentInfoItem )
+        {
+        type = iCurrentInfoItem->Type();
+        }
+   
+    // Update list box & model
+    SetListBoxModelL();
+    iListBox->HandleItemAdditionL();
+    RefreshL();
+    
+    // Try to select previous item if it is still available
+    const TInt index = container.InfoItemIndexByType( type );
+    if  ( index >= 0 && index < container.MdcaCount() )
+        {
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        }
+
+    iIdleResetListboxTimer->Cancel();
+    */
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemMemoryTracking.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,664 @@
+/*
+* 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 "MemSpyViewThreadInfoItemMemoryTracking.h"
+
+// System includes
+#include <AknQueryDialog.h>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyengineprocessmemorytracker.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+
+
+CMemSpyViewThreadInfoItemMemoryTracking::CMemSpyViewThreadInfoItemMemoryTracking( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverAddL( *this );
+
+    // Reset the title
+    _LIT( KCustomTitle, "Memory Statistics" );
+    SetTitleL( KCustomTitle );
+    
+    // Select the appropriate view
+    const TMemSpyViewType viewType = (TMemSpyViewType) ((TInt) aSelectionRune );
+    const TInt index = IndexByViewType( viewType );
+    //
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::ConstructL() - aSelectionRune: 0x%08x, viewType: %d, index: %d", aSelectionRune, viewType, index );
+#endif
+    //
+    if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
+        {
+        iListBox->SetCurrentItemIndex( index );
+        HandleListBoxItemSelectedL( index );
+        }
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTracking::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatistics;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTracking::PrepareParentViewL()
+    {
+    CMemSpyViewBase* parent = CMemSpyViewThreadInfoItemGeneric::PrepareParentViewL();
+    
+    // Stop observing changes
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverRemove( *this );
+
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTracking::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    //
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    const TInt index = iListBox->CurrentItemIndex();
+    if  ( index == 1 )
+        {
+        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingCurrent( iEngine, iObserver, Container() );
+        }
+    else if ( index == 2 )
+        {
+        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingHWM( iEngine, iObserver, Container() );
+        }
+    else if ( index == 3 )
+        {
+        child = new(ELeave) CMemSpyViewThreadInfoItemMemoryTrackingPeak( iEngine, iObserver, Container() );
+        }
+    //        
+    if  ( child )
+        {
+        CleanupStack::PushL( child );
+        child->ConstructL( Rect(), *Parent() );
+        CleanupStack::Pop( child );
+           
+        // Stop observing changes
+        item->TrackingObserverRemove( *this );
+        }
+    //
+    return child;
+    }
+
+
+TBool CMemSpyViewThreadInfoItemMemoryTracking::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdMemoryTrackingStart:
+        OnCmdTrackingStartL();
+        break;
+    case EMemSpyCmdMemoryTrackingStop:
+        OnCmdTrackingStopL();
+        break;
+    case EMemSpyCmdMemoryTrackingHWMReset:
+        OnCmdHWMResetL();
+        break;
+    case EMemSpyCmdMemoryTrackingTotalWithSharedMem:
+        OnCmdTotalWithSharedMemL();
+        break;
+    case EMemSpyCmdMemoryTrackingTotalWithoutSharedMem:
+        OnCmdTotalWithoutSharedMemL();
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+TInt CMemSpyViewThreadInfoItemMemoryTracking::IndexByViewType( TMemSpyViewType aType )
+    {
+    TInt index = 0;
+    //
+    switch( aType )
+        {
+    default:
+    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent:
+        index = 1;
+        break;
+    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM:
+        index = 2;
+        break;
+    case EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak:
+        index = 3;
+        break;
+        }
+    //
+    return index;
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::HandleListBoxItemActionedL( TInt aIndex )
+    {
+    if  ( aIndex == 0 )
+        {
+        CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+        if  ( item->TrackingActive() )
+            {
+            OnCmdTrackingStopL();
+            }
+        else
+            {
+            OnCmdTrackingStartL();
+            }
+        }
+
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+
+    // Ensure we refresh the listbox content
+    iListBox->DrawDeferred();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    iListBox->DrawDeferred();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == MenuCascadeResourceId() )
+        {
+        CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+        //
+        if  ( !item->TrackerExists() || item->TrackingActive() )
+            {
+            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingStart, ETrue );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingStop, ETrue );
+            }
+        //
+        if ( item->TotalIncludesSharedMemory() )
+            {
+            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingTotalWithSharedMem, ETrue );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingTotalWithoutSharedMem, ETrue );
+            }
+
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingHWMReset, Thread().IsDead() );
+        }
+    else if ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTracking, Thread().IsDead() );
+        aMenuPane->SetItemDimmed( EMemSpyCmdMemoryTrackingAutoStart, Thread().IsDead() );
+        }
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryTrackingStartedL()
+    {
+    RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryTrackingStoppedL()
+    {
+    RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
+    {
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL() - START - this: 0x%08x", this );
+#endif 
+
+    CMemSpyViewBase::RefreshL();
+    iListBox->DrawDeferred();
+
+#ifdef _DEBUG
+    RDebug::Printf( "[MemSpy] CMemSpyViewThreadInfoItemMemoryTracking::HandleMemoryChangedL() - END - this: 0x%08x", this );
+#endif 
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTrackingStartL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingStartL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTrackingStopL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingStopL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdHWMResetL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingResetHWML();
+    RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTotalWithSharedMemL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingSetTotalIncludesSharedMemoryL( ETrue );
+    RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTracking::OnCmdTotalWithoutSharedMemL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingSetTotalIncludesSharedMemoryL( EFalse );
+    RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewThreadInfoItemMemoryTrackingCurrent::CMemSpyViewThreadInfoItemMemoryTrackingCurrent( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverAddL( *this );
+
+    // Reset the title
+    _LIT( KCustomTitle, "Current Statistics" );
+    SetTitleL( KCustomTitle );
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingCurrent::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsCurrent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingCurrent::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    
+    // Stop observing changes
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverRemove( *this );
+
+    return parent;
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::SetListBoxModelL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    MDesCArray* model = &item->InfoCurrent();
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+    
+
+void CMemSpyViewThreadInfoItemMemoryTrackingCurrent::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
+    {
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewThreadInfoItemMemoryTrackingHWM::CMemSpyViewThreadInfoItemMemoryTrackingHWM( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingHWM::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverAddL( *this );
+
+    // Reset the title
+    _LIT( KCustomTitle, "HWM Statistics" );
+    SetTitleL( KCustomTitle );
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingHWM::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsHWM;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingHWM::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    
+    // Stop observing changes
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverRemove( *this );
+
+    return parent;
+    }
+
+
+TBool CMemSpyViewThreadInfoItemMemoryTrackingHWM::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdMemoryTrackingHWMReset:
+        OnCmdHWMResetL();
+        break;
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingHWM::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingHWM::SetListBoxModelL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    MDesCArray* model = &item->InfoHWM();
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+    
+
+void CMemSpyViewThreadInfoItemMemoryTrackingHWM::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
+    {
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingHWM::OnCmdHWMResetL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingResetHWML();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyViewThreadInfoItemMemoryTrackingPeak::CMemSpyViewThreadInfoItemMemoryTrackingPeak( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeMemoryTracking )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingPeak::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverAddL( *this );
+
+    // Reset the title
+    _LIT( KCustomTitle, "Peak Statistics" );
+    SetTitleL( KCustomTitle );
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemMemoryTrackingPeak::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemMemoryTrackingStatisticsPeak;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemMemoryTrackingPeak::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemMemoryTracking* parent = new(ELeave) CMemSpyViewThreadInfoItemMemoryTracking( iEngine, iObserver, Container() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
+    CleanupStack::Pop( parent );
+    
+    // Stop observing changes
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    item->TrackingObserverRemove( *this );
+
+    return parent;
+    }
+
+
+TBool CMemSpyViewThreadInfoItemMemoryTrackingPeak::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingPeak::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+void CMemSpyViewThreadInfoItemMemoryTrackingPeak::SetListBoxModelL()
+    {
+    CMemSpyThreadInfoMemoryTracking* item = static_cast< CMemSpyThreadInfoMemoryTracking* >( iInfoItem );
+    MDesCArray* model = &item->InfoPeak();
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+    
+
+void CMemSpyViewThreadInfoItemMemoryTrackingPeak::HandleMemoryChangedL( const TProcessId& /*aPid*/, const TMemSpyDriverProcessInspectionInfo& /*aCurrentInfo*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoIncShared*/, const TMemSpyDriverProcessInspectionInfo& /*aHWMInfoExcShared*/ )
+    {
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemServer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,394 @@
+/*
+* 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 "MemSpyViewThreadInfoItemServer.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperheap.h>
+#include <memspy/engine/memspyenginehelperserver.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+
+// Constants
+const TInt KMemSpyServerSessionsIndex = 2;
+
+
+
+CMemSpyViewThreadInfoItemServer::CMemSpyViewThreadInfoItemServer( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeServer )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemServer::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    // Causes list of server's to be prepared
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+
+    _LIT( KTitle, "Server List" );
+    SetTitleL( KTitle );
+
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreadInfoItemServer::ConstructL() - aSelectionRune: 0x%08x", aSelectionRune );
+#endif
+    /* TODO
+    // Try to select the correct server
+    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
+    */
+    TInt selectedIndex = 0;
+    /*if  ( aSelectionRune )
+        {
+        // Treat the rune as a handle, and try to look it up
+        selectedIndex = infoItem->DetailsIndexByHandle( aSelectionRune );
+        }
+
+    // Select item
+    if  ( infoItem->DetailsCount() > 0 )
+        {*/
+        iListBox->SetCurrentItemIndex( selectedIndex );
+        HandleListBoxItemSelectedL( selectedIndex );
+        /*}*/
+    }
+
+
+TBool CMemSpyViewThreadInfoItemServer::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
+    return handled;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemServer::PrepareChildViewL()
+    {
+	/*
+    CMemSpyViewThreadInfoItemServerDetails* child = new(ELeave) CMemSpyViewThreadInfoItemServerDetails( iEngine, iObserver, iContainer, iCurrentInfoItemDetails );
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( child );
+    return child;
+    */
+    }
+
+
+void CMemSpyViewThreadInfoItemServer::HandleListBoxItemSelectedL( TInt aIndex )
+    {/* TODO
+    // Identify the type of item to display...
+    CMemSpyThreadInfoHandleObjectBase* infoItem = static_cast< CMemSpyThreadInfoHandleObjectBase* >( iInfoItem );
+    iCurrentInfoItemDetails = infoItem->DetailsAt( aIndex );
+
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreadInfoItemServer::HandleListBoxItemSelectedL() - iCurrentInfoItemDetails.iHandle: 0x%08x", iCurrentInfoItemDetails.iHandle );
+#endif
+*/
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+CMemSpyViewThreadInfoItemServerDetails::CMemSpyViewThreadInfoItemServerDetails( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeServer ), iInfoItemDetails( aInfoItemDetails )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemServerDetails::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    // Causes list of server's to be prepared
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+
+    _LIT( KTitle, "Server Details" );
+    SetTitleL( KTitle );
+
+    // Try to select the correct server
+    TInt selectedIndex = 0;
+    if  ( aSelectionRune )
+        {
+        // Presence of non-null item means that we came from the "Server sessions" list
+        selectedIndex = KMemSpyServerSessionsIndex;
+        }
+
+    // Select item
+    iListBox->SetCurrentItemIndex( selectedIndex );
+    HandleListBoxItemSelectedL( selectedIndex );
+    }
+
+
+TBool CMemSpyViewThreadInfoItemServerDetails::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
+    return handled;
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemServerDetails::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemServerDetails;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemServerDetails::PrepareChildViewL()
+    {
+    CMemSpyViewBase* child = NULL;
+    const TInt currentIndex = iListBox->CurrentItemIndex();
+    //
+    if  ( currentIndex == KMemSpyServerSessionsIndex )
+        {
+        CMemSpyViewThreadInfoItemServerSessions* serverSessions = new(ELeave) CMemSpyViewThreadInfoItemServerSessions( iEngine, iObserver, iInfoItem->Container(), iInfoItemDetails );
+        CleanupStack::PushL( serverSessions );
+        serverSessions->ConstructL( Rect(), *Parent(), NULL );
+        CleanupStack::Pop( serverSessions );
+        child = serverSessions;
+        }
+    //
+    return child;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemServerDetails::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemServer* parent = new(ELeave) CMemSpyViewThreadInfoItemServer( iEngine, iObserver, iInfoItem->Container() );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), iInfoItemDetails.iHandle );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewThreadInfoItemServerDetails::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(4);
+    CleanupStack::PushL( model );
+
+    TBuf<KMaxFullName + 1> item;
+
+    // 1st item = session type
+    const TPtrC pServerSessionType = CMemSpyThreadInfoServer::SessionType( iInfoItemDetails.iSessionType );
+    _LIT(KItem1Format, "\tServer Type\t\t%S");
+    item.Format( KItem1Format, &pServerSessionType );
+    model->AppendL( item );
+
+    // 2nd item = session count
+    _LIT(KItem2Format, "\tConnected Sessions\t\t%d");
+    item.Format( KItem2Format, iInfoItemDetails.iCount );
+    model->AppendL( item );
+
+    // 3rd item = view sessions
+    if  ( iInfoItem->Container().MdcaCount() > 0 )
+        {
+        _LIT(KItem3Format, "\tView Sessions");
+        model->AppendL( KItem3Format );
+        }
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+*/
+/*
+void CMemSpyViewThreadInfoItemServerDetails::HandleListBoxItemActionedL( TInt /*aIndex*/ /*)
+*/
+/*    
+   	{
+    // Notify observer about an item being 'fired'    
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewThreadInfoItemServerDetails::HandleListBoxItemSelectedL( TInt /*aIndex*/ /*)
+*/
+/*
+    {
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+
+
+CMemSpyViewThreadInfoItemServerSessions::CMemSpyViewThreadInfoItemServerSessions( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, CMemSpyThreadInfoContainer& aContainer, const TMemSpyDriverHandleInfoGeneric& aInfoItemDetails )
+:   CMemSpyViewThreadInfoItemGeneric( aEngine, aObserver, aContainer, EMemSpyThreadInfoItemTypeServer ), iInfoItemDetails( aInfoItemDetails )
+    {
+    }
+
+
+void CMemSpyViewThreadInfoItemServerSessions::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    CMemSpyViewThreadInfoItemGeneric::ConstructL( aRect, aContainer, aSelectionRune );
+    //
+    _LIT( KTitle, "Connected Session List" );
+    SetTitleL( KTitle );
+    }
+
+
+TBool CMemSpyViewThreadInfoItemServerSessions::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = CMemSpyViewBase::HandleCommandL( aCommand );
+    return handled;
+    }
+
+
+TMemSpyViewType CMemSpyViewThreadInfoItemServerSessions::ViewType() const
+    {
+    return EMemSpyViewTypeThreadInfoItemServerSessions;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreadInfoItemServerSessions::PrepareParentViewL()
+    {
+    CMemSpyViewThreadInfoItemServerDetails* parent = new(ELeave) CMemSpyViewThreadInfoItemServerDetails( iEngine, iObserver, iInfoItem->Container(), iInfoItemDetails );
+    CleanupStack::PushL( parent );
+    parent->ConstructL( Rect(), *Parent(), this );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+void CMemSpyViewThreadInfoItemServerSessions::SetListBoxModelL()
+    {
+    CDesCArrayFlat* model = new(ELeave) CDesCArrayFlat(4);
+    CleanupStack::PushL( model );
+
+    // Get handles
+    RArray<TMemSpyDriverServerSessionInfo> sessions;
+    CleanupClosePushL( sessions );
+    iEngine.HelperServer().GetServerSessionsL( iInfoItemDetails, sessions );
+
+    // Prepare items
+    TBuf<KMaxFullName + 1> item;
+    const TInt count = sessions.Count();
+    for( TInt i=0; i<count; i++ )
+        {
+        _LIT(KInsertTab, "\t");
+
+        const TMemSpyDriverServerSessionInfo& session = sessions[ i ];
+        item.Zero();
+
+        if  ( session.iOwnerType == TMemSpyDriverServerSessionInfo::EOwnerThread )
+            {
+            // Find the thread object
+            CMemSpyThread* thread = NULL;
+            CMemSpyProcess* process = NULL;
+            //
+            const TInt error = iEngine.Container().ProcessAndThreadByThreadId( session.iOwnerId, process, thread );
+            //
+            if  ( error == KErrNone )
+                {
+                item.Append( process->Name() );
+                item.Append( KInsertTab );
+                item.Append( KInsertTab );
+                item.Append( thread->Name() );
+                }
+            }
+        else if ( session.iOwnerType == TMemSpyDriverServerSessionInfo::EOwnerProcess )
+            {
+            // Find the process object
+            CMemSpyProcess* process = NULL;
+            TRAPD( error, process = &iEngine.Container().ProcessByIdL( session.iOwnerId ) );
+            if  ( error == KErrNone )
+                {
+                item.Append( process->Name() );
+                }
+            }
+
+        if  ( !item.Length() )
+            {
+            // Fall-back case
+            item.Copy( session.iName );
+            }
+
+        // Add item
+        item.Insert( 0, KInsertTab );
+        model->AppendL( item );
+        }
+    CleanupStack::PopAndDestroy( &sessions );
+
+    // Set up list box
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    CleanupStack::Pop( model );
+    }
+
+*/
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreadInfoItemStack.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* 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 "MemSpyViewThreadInfoItemStack.h"
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspy/engine/memspyenginehelperstack.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewThreads.h"
+#include "MemSpyViewThreadInfoItemHeap.h"
+#include "MemSpyAppUi.h"
+
+
+
+CMemSpyViewThreadInfoItemStack::CMemSpyViewThreadInfoItemStack( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aProcId, TThreadId aId, TMemSpyThreadInfoItemType aType )
+:   CMemSpyViewThreadInfoItemGeneric( aSession, aObserver, aProcId, aId, EMemSpyThreadInfoItemTypeStack )
+    {
+    }
+
+
+TBool CMemSpyViewThreadInfoItemStack::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+#ifndef __WINS__
+	case EMemSpyCmdStackDataUser:
+        OnCmdStackDataUserL();
+		break;
+	case EMemSpyCmdStackDataKernel:
+        OnCmdStackDataKernelL();
+		break;
+#endif
+	case EMemSpyCmdStackInfoThread:
+        OnCmdStackInfoL();
+		break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewThreadInfoItemStack::OnCmdStackInfoL()
+    {
+	iMemSpySession.OutputStackInfoL( ThreadId() );   
+    }
+
+
+void CMemSpyViewThreadInfoItemStack::OnCmdStackDataUserL()
+    {
+    iMemSpySession.OutputStackDataL( ThreadId(), EMemSpyDriverDomainUser );
+    }
+
+
+void CMemSpyViewThreadInfoItemStack::OnCmdStackDataKernelL()
+    {
+	iMemSpySession.OutputStackDataL( ThreadId(), EMemSpyDriverDomainKernel );
+    }    
+
+
+void CMemSpyViewThreadInfoItemStack::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+        //TODO aMenuPane->SetItemDimmed( EMemSpyCmdStack, Thread().IsDead() );
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewThreads.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,464 @@
+/*
+* 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 "MemSpyViewThreads.h"
+
+// System includes
+#include <AknQueryDialog.h>
+#include <memspyui.rsg>
+
+// Engine includes
+#include <memspy/engine/memspyengine.h>
+#include <memspy/engine/memspyengineobjectprocess.h>
+#include <memspy/engine/memspyengineobjectthread.h>
+#include <memspy/engine/memspyengineobjectcontainer.h>
+#include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
+#include <memspy/engine/memspyengineobjectthreadinfocontainer.h>
+#include <memspy/engine/memspyenginehelperprocess.h>
+#include <memspysession.h>
+
+// User includes
+#include "MemSpyContainerObserver.h"
+#include "MemSpyViewProcesses.h"
+#include "MemSpyViewThreadInfoItemList.h"
+
+
+
+CMemSpyViewThreads::CMemSpyViewThreads( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, TProcessId aId, TThreadId aThreadId )
+:   CMemSpyViewBase( aSession, aObserver ), iParentProcessId( aId ), iCurrentThreadId( aThreadId )
+    {    
+    }
+
+
+CMemSpyViewThreads::~CMemSpyViewThreads()
+    {
+    }
+
+ 
+void CMemSpyViewThreads::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
+    {
+    TInt error = KErrNone; 
+	TRAP( error, iMemSpySession.GetThreadsL( iParentProcessId, iThreads ) );
+	
+	if( error == KErrNone )
+	    {
+	    _LIT( KTitle, "Threads" );
+	    SetTitleL( KTitle );
+	    //
+	    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
+	    //    
+	    if( iCurrentThreadId > 0 )
+	        {		
+	        for( TInt i = 0; i < iThreads.Count() ; i++ )
+	            {
+	            if( iThreads[i]->Id() == iCurrentThreadId )
+	                {
+	                const TInt index = i;
+	                if  ( index >= 0 && index < iListBox->Model()->NumberOfItems() )
+	                    {
+	                    iListBox->SetCurrentItemIndex( index );
+	                    HandleListBoxItemSelectedL( index );
+	                    }
+	                }			
+	            }
+	        }
+	    else if( iThreads.Count() > 0 )
+	        {
+	        iListBox->SetCurrentItemIndex( 0 );
+	        HandleListBoxItemSelectedL( 0 );
+	        }
+	    }
+    }
+
+
+TProcessId CMemSpyViewThreads::Process() const
+    {
+	return iParentProcessId;
+    }
+
+
+TThreadId CMemSpyViewThreads::CurrentThread()
+    { 
+	return iCurrentThreadId;
+    }
+
+
+void CMemSpyViewThreads::RefreshL()
+    {
+    SetListBoxModelL();
+    CMemSpyViewBase::RefreshL();
+    }
+
+
+TMemSpyViewType CMemSpyViewThreads::ViewType() const
+    {
+    return EMemSpyViewTypeThreads;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreads::PrepareParentViewL()
+    {
+    CMemSpyViewProcesses* parent = new(ELeave) CMemSpyViewProcesses( iMemSpySession, iObserver, iParentProcessId );
+    CleanupStack::PushL( parent );
+    //parent->ConstructL( Rect(), *Parent(), &iParentProcessId );
+    parent->ConstructL( Rect(), *Parent() );
+    CleanupStack::Pop( parent );
+    return parent;
+    }
+
+
+CMemSpyViewBase* CMemSpyViewThreads::PrepareChildViewL()
+    {	
+    CMemSpyViewThreadInfoItemList* child = new(ELeave) CMemSpyViewThreadInfoItemList( iMemSpySession, iObserver, iParentProcessId, iCurrentThreadId );
+    CleanupStack::PushL( child );
+    child->ConstructL( Rect(), *Parent(), EMemSpyThreadInfoItemTypeFirst );
+    CleanupStack::Pop( child );
+    return child;    
+    }
+
+
+void CMemSpyViewThreads::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+    if  ( aResourceId == R_MEMSPY_MENUPANE )
+        {
+		/*
+        CMemSpyThread& thread = CurrentThread();
+        aMenuPane->SetItemDimmed( EMemSpyCmdThread, thread.IsDead() );
+        */
+		//aMenuPane->SetItemDimmed( EMemSpyCmdThread, (iThreads[iListBox->CurrentItemIndex()]->ExitType() !=  EExitPending ));
+        }
+    }
+
+
+TBool CMemSpyViewThreads::HandleCommandL( TInt aCommand )
+    {
+    TBool handled = ETrue;
+    //
+    switch ( aCommand )
+        {
+    case EMemSpyCmdThreadEndKill:
+        OnCmdEndKillL();
+		break;
+    case EMemSpyCmdThreadEndTerminate:
+        OnCmdEndTerminateL();
+		break;
+    case EMemSpyCmdThreadEndPanic:
+        OnCmdEndPanicL();
+		break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteVeryLow:
+	case EMemSpyCmdThreadSetPriorityAbsoluteLowNormal:
+	case EMemSpyCmdThreadSetPriorityAbsoluteLow:
+	case EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal:
+	case EMemSpyCmdThreadSetPriorityAbsoluteBackground:
+	case EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal:
+	case EMemSpyCmdThreadSetPriorityAbsoluteForeground:
+	case EMemSpyCmdThreadSetPriorityAbsoluteHighNormal:
+	case EMemSpyCmdThreadSetPriorityAbsoluteHigh:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime1:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime2:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime3:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime4:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime5:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime6:
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime7: 
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime8:
+        OnCmdSetPriorityL( aCommand );
+        break;
+
+    case EMemSpyCmdThreadInfoHandles:
+        OnCmdInfoHandlesL();
+        break;
+
+    default:
+        handled = CMemSpyViewBase::HandleCommandL( aCommand );
+        break;
+        }
+    //
+    return handled;
+    }
+
+
+void CMemSpyViewThreads::OnCmdEndKillL()
+    {
+    TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+    
+    iMemSpySession.ThreadSystemPermanentOrCritical( iCurrentThreadId, system );
+    
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+    //
+    if  ( doTerminate )
+        {
+        TRAP( err, iMemSpySession.EndThreadL( iCurrentThreadId, EKill ) );
+        if ( err == KErrNone )
+            RefreshL();
+        }    
+    }
+
+
+void CMemSpyViewThreads::OnCmdEndTerminateL()
+    {
+	TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+    
+    iMemSpySession.ThreadSystemPermanentOrCritical( iCurrentThreadId, system );
+    
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+    //
+    if  ( doTerminate )
+        {
+        TRAP( err, iMemSpySession.EndThreadL( iCurrentThreadId, ETerminate ) );
+        if( err == KErrNone )
+            RefreshL();        
+        }    
+    }
+
+
+void CMemSpyViewThreads::OnCmdEndPanicL()
+    {
+    TBool system = ETrue;
+    TBool doTerminate = ETrue;
+    TInt err = KErrNone;
+    
+    iMemSpySession.ThreadSystemPermanentOrCritical( iCurrentThreadId, system );
+    
+    if ( system )
+        {
+        CAknQueryDialog* importDialog = CAknQueryDialog::NewL();
+        doTerminate = ( importDialog->ExecuteLD( R_MEMSPY_PANIC_SYSTEM_CRITICAL_THREAD_OR_PROCESS ) );
+        }
+    //
+    if  ( doTerminate )
+        {
+        TRAP( err, iMemSpySession.EndThreadL( iCurrentThreadId, EPanic ) );
+        if( err == KErrNone )            
+            RefreshL();
+        }    
+    }
+
+
+void CMemSpyViewThreads::OnCmdSetPriorityL( TInt aCommand )
+    {	
+    TThreadPriority pri = EPriorityAbsoluteBackground;
+    switch( aCommand )
+        {
+	case EMemSpyCmdThreadSetPriorityAbsoluteVeryLow:
+        pri = EPriorityAbsoluteVeryLow;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteLowNormal:
+        pri = EPriorityAbsoluteLowNormal;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteLow:
+        pri = EPriorityAbsoluteLow;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteBackgroundNormal:
+        pri = EPriorityAbsoluteBackgroundNormal;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteBackground:
+        pri = EPriorityAbsoluteBackground;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteForegroundNormal:
+        pri = EPriorityAbsoluteForegroundNormal;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteForeground:
+        pri = EPriorityAbsoluteForeground;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteHighNormal:
+        pri = EPriorityAbsoluteHighNormal;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteHigh:
+        pri = EPriorityAbsoluteHigh;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime1:
+        pri = EPriorityAbsoluteRealTime1;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime2:
+        pri = EPriorityAbsoluteRealTime2;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime3:
+        pri = EPriorityAbsoluteRealTime3;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime4:
+        pri = EPriorityAbsoluteRealTime4;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime5:
+        pri = EPriorityAbsoluteRealTime5;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime6:
+        pri = EPriorityAbsoluteRealTime6;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime7: 
+        pri = EPriorityAbsoluteRealTime7;
+        break;
+	case EMemSpyCmdThreadSetPriorityAbsoluteRealTime8:
+        pri = EPriorityAbsoluteRealTime8;
+        break;
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreads::OnCmdSetPriorityL() - pri: %d", pri );
+#endif
+    TInt err = KErrNone;
+    TRAP( err , iMemSpySession.SetThreadPriorityL( iCurrentThreadId, pri ) );
+    if( err == KErrNone )
+        {
+        RefreshL();
+        }
+    else
+        {
+        #ifdef _DEBUG
+            RDebug::Printf( "CMemSpyViewThreads::OnCmdSetPriorityL() - set priority failed" );
+        #endif
+        }
+
+#ifdef _DEBUG
+    RDebug::Printf( "CMemSpyViewThreads::OnCmdSetPriorityL() - END" );
+#endif
+	
+    }
+
+
+void CMemSpyViewThreads::OnCmdInfoHandlesL()
+    {
+	iMemSpySession.OutputThreadInfoHandlesL( iCurrentThreadId );	
+    }
+
+
+void CMemSpyViewThreads::SetListBoxModelL()
+    {		
+	iModel = new (ELeave) CDesC16ArrayFlat( iThreads.Count() ); //array for formated items
+		
+	_LIT( KTab, "\t" );
+	_LIT( KTTab, "\t\t" );
+			
+	for( TInt i=0; i < iThreads.Count(); i++ )
+	    {
+	    HBufC* tempName = HBufC::NewL( iThreads[i]->Name().Length() + 16 );
+	    CleanupStack::PushL( tempName );
+	    TPtr tempNamePtr( tempName->Des() );
+	    tempNamePtr.Copy( KTab );
+	    tempNamePtr.Append( iThreads[i]->Name() );
+	    tempNamePtr.Append( KTTab );
+	    
+	    AppendPriority( tempNamePtr, iThreads[i]->ThreadPriority() );
+	    
+	    iModel->AppendL( tempNamePtr );
+	    	
+	    CleanupStack::PopAndDestroy( tempName ); 
+	    }			
+	
+    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );    
+    listbox->Model()->SetItemTextArray( iModel );
+    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    }
+
+
+void CMemSpyViewThreads::HandleListBoxItemActionedL( TInt /*aIndex*/ )
+    {
+    // Notify observer about an item being 'fired'
+    ReportEventL( MMemSpyViewObserver::EEventItemActioned );
+    }
+
+
+void CMemSpyViewThreads::HandleListBoxItemSelectedL( TInt aIndex )
+	{	
+	iCurrentThreadId = iThreads[ aIndex ]->Id();
+	
+    // Notify observer about item selection
+    ReportEventL( MMemSpyViewObserver::EEventItemSelected );
+    }
+
+
+void CMemSpyViewThreads::AppendPriority( TDes& aDes, TThreadPriority aPriority )
+    {
+    switch( aPriority )
+        {
+    case EPriorityNull:
+        aDes += _L("[Null]");
+        break;
+    case EPriorityMuchLess:
+        aDes += _L("[Much Less]");
+        break;
+    case EPriorityLess:
+        aDes += _L("[Less]");
+        break;
+    case EPriorityNormal:
+        aDes += _L("[Normal]");
+        break;
+    case EPriorityMore:
+        aDes += _L("[More]");
+        break;
+    case EPriorityMuchMore:
+        aDes += _L("[Much More]");
+        break;
+    case EPriorityRealTime:
+        aDes += _L("[Real Time]");
+        break;
+
+    // Absolute values
+    case EPriorityAbsoluteVeryLow:
+        aDes += _L("[Abs Very Low]");
+        break;
+    case EPriorityAbsoluteLowNormal:
+        aDes += _L("[Abs Low Norm]");
+        break;
+    case EPriorityAbsoluteLow:
+        aDes += _L("[Abs Low]");
+        break;
+    case EPriorityAbsoluteBackground:
+        aDes += _L("[Abs Bgnd]");
+        break;
+    case EPriorityAbsoluteBackgroundNormal:
+        aDes += _L("[Abs Bgnd Norm]");
+        break;
+    case EPriorityAbsoluteForeground:
+        aDes += _L("[Abs Fgnd]");
+        break;
+    case EPriorityAbsoluteForegroundNormal:
+        aDes += _L("[Abs Fgnd Norm]");
+        break;
+    case EPriorityAbsoluteHigh:
+        aDes += _L("[Abs High]");
+        break;
+    case EPriorityAbsoluteHighNormal:
+        aDes += _L("[Abs High Norm]");
+        break;
+    case EPriorityAbsoluteRealTime1:
+    case EPriorityAbsoluteRealTime2:
+    case EPriorityAbsoluteRealTime3:
+    case EPriorityAbsoluteRealTime4:
+    case EPriorityAbsoluteRealTime5:
+    case EPriorityAbsoluteRealTime6:
+    case EPriorityAbsoluteRealTime7:
+    case EPriorityAbsoluteRealTime8:
+        aDes.AppendFormat( _L("[Abs RT %d]"), ( aPriority - EPriorityAbsoluteRealTime1 ) + 1 );
+        break;
+    default:
+        aDes += _L("[Unknown Pri.]");
+        break;
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewType.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* 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 "MemSpyViewType.h"
+
+
+
+
+TBool MemSpyViewTypeUtils::IsOpenableItem( TMemSpyViewType aType )
+    {
+    TBool openable = EFalse;
+    //
+    switch( aType )
+        {
+    case EMemSpyViewTypeMainMenu:
+    case EMemSpyViewTypeProcesses:
+    case EMemSpyViewTypeServerList:
+    case EMemSpyViewTypeThreads:
+    case EMemSpyViewTypeThreadInfoItemList:
+    case EMemSpyViewTypeThreadInfoItemServer:
+    case EMemSpyViewTypeThreadInfoItemSession:
+        openable = ETrue;
+        break;
+    default:
+        break;
+        }
+    //
+    return openable;
+    }
+
+
+TBool MemSpyViewTypeUtils::IsThreadInfoItem( TMemSpyViewType aType )
+    {
+    TBool infoItem = ETrue;
+    //
+    switch( aType )
+        {
+    case EMemSpyViewTypeMainMenu:
+    case EMemSpyViewTypeRAMInfo:
+    case EMemSpyViewTypeROMInfo:
+    case EMemSpyViewTypeServerList:
+    case EMemSpyViewTypeOpenFiles:
+    case EMemSpyViewTypeProcesses:
+    case EMemSpyViewTypeThreads:
+    case EMemSpyViewTypeThreadInfoItemList:
+        infoItem = EFalse;
+        break;
+    default:
+        break;
+        }
+    //
+    return infoItem;
+    }
+
+
+TBool MemSpyViewTypeUtils::IsExitableView( TMemSpyViewType aType )
+    {
+    TBool ret = EFalse;
+    //
+    switch( aType )
+        {
+    case EMemSpyViewTypeMainMenu:
+        ret = ETrue;
+        break;
+    default:
+        break;
+        }
+    //
+    return ret;
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewWindowGroups.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,315 @@
+/*
+* 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 )
+        {
+        //
+        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 );
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/hb.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = app
+TARGET = MemSpyUI
+DEPENDPATH += . 
+INCLUDEPATH += /epoc32/include/platform/memspy/api
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+
+load(hb.prf)
+symbian:CONFIG -= symbian_i18n
+
+HEADERS += inc/enginewrapper.h \
+	inc/viewmanager.h \
+	inc/memspyview.h \
+	inc/memspylistview.h \
+	inc/memspymainview.h \
+	inc/memspyprocessview.h \
+	inc/memspythreadview.h \
+	inc/memspythreaddetailindexview.h \
+	inc/memspythreaddetailview.h \
+	inc/memspykernelobjecttypeview.h \
+	inc/memspykernelobjectview.h \
+	inc/memspykernelobjectdetailview.h \
+	inc/memspytrackingview.h \
+	inc/memspyswmtview.h \
+	inc/memspyheapdumpsview.h \
+	inc/memspysettingsview.h \
+	inc/memspyserverview.h \
+	inc/memspyecomcategoryview.h \
+	inc/memspyecominterfaceview.h \
+	inc/memspyecomimplementationview.h \
+	inc/memspyecomimplementationdetailview.h
+
+SOURCES += src/main.cpp \
+	src/enginewrapper.cpp \
+	src/viewmanager.cpp \
+	src/memspyview.cpp \
+	src/memspylistview.cpp \
+	src/memspymainview.cpp \
+	src/memspyprocessview.cpp \
+	src/memspythreadview.cpp \
+	src/memspythreaddetailindexview.cpp \
+	src/memspythreaddetailview.cpp \
+	src/memspykernelobjecttypeview.cpp \
+	src/memspykernelobjectview.cpp \
+	src/memspykernelobjectdetailview.cpp \
+	src/memspytrackingview.cpp \
+	src/memspyswmtview.cpp \
+	src/memspyheapdumpsview.cpp \
+	src/memspysettingsview.cpp \
+	src/memspyserverview.cpp \
+	src/memspyecomcategoryview.cpp \
+	src/memspyecominterfaceview.cpp \
+	src/memspyecomimplementationview.cpp \
+	src/memspyecomimplementationdetailview.cpp
+
+RESOURCES +=
+
+symbian: {
+    LIBS += -lestor \
+        -lbafl \
+        -lMemSpyClient \
+        -lefsrv
+        
+
+    TARGET.CAPABILITY = ReadUserData WriteUserData ReadDeviceData WriteDeviceData SwEvent PowerMgmt
+
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x2002129F
+    TARGET.SID = 0x2002129F
+    TARGET.VID = 0x101FB657 // Nokia
+
+    TARGET.EPOCHEAPSIZE = 0x10000 0x2000000  // Min 64Kb, Max 32Mb
+
+    ICON = ../../icons/qgn_menu_memspyui.svg
+
+    RSS_RULES += "group_name = \"RnD Tools\"";
+} else {
+    error("Only Symbian supported")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/enginewrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,636 @@
+/*
+* 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:
+* 
+*/
+
+#ifndef ENGINEWRAPPER_H_
+#define ENGINEWRAPPER_H_
+
+#include <QObject>
+#include <QVariantList>
+#include <QSettings>
+
+#include <memspysession.h>
+
+typedef quint64 ProcessId;
+typedef quint64 ThreadId;
+
+enum ThreadPriority
+{
+	ThreadPriorityNull=(-30),
+	ThreadPriorityMuchLess=(-20),
+	ThreadPriorityLess=(-10),
+	ThreadPriorityNormal=0,
+	ThreadPriorityMore=10,
+	ThreadPriorityMuchMore=20,
+	ThreadPriorityRealTime=30,
+	ThreadPriorityAbsoluteVeryLow=100,
+	ThreadPriorityAbsoluteLowNormal=150,
+	ThreadPriorityAbsoluteLow=200,
+	ThreadPriorityAbsoluteBackgroundNormal=250,
+	ThreadPriorityAbsoluteBackground=300,
+	ThreadPriorityAbsoluteForegroundNormal=350,
+	ThreadPriorityAbsoluteForeground=400,
+	ThreadPriorityAbsoluteHighNormal=450,
+	ThreadPriorityAbsoluteHigh=500,
+	ThreadPriorityAbsoluteRealTime1=810,
+	ThreadPriorityAbsoluteRealTime2=820,
+	ThreadPriorityAbsoluteRealTime3=830,
+	ThreadPriorityAbsoluteRealTime4=840,
+	ThreadPriorityAbsoluteRealTime5=850,
+	ThreadPriorityAbsoluteRealTime6=860,
+	ThreadPriorityAbsoluteRealTime7=870, 
+	ThreadPriorityAbsoluteRealTime8=880
+};
+
+enum KernelObjectType
+{
+	KernelObjectTypeUnknown = -1,
+	KernelObjectTypeThread = 0,
+	KernelObjectTypeProcess,
+	KernelObjectTypeChunk,
+	KernelObjectTypeLibrary,
+	KernelObjectTypeSemaphore,
+	KernelObjectTypeMutex,
+	KernelObjectTypeTimer,
+	KernelObjectTypeServer,
+	KernelObjectTypeSession,
+	KernelObjectTypeLogicalDevice,
+	KernelObjectTypePhysicalDevice,
+	KernelObjectTypeLogicalChannel,
+	KernelObjectTypeChangeNotifier,
+	KernelObjectTypeUndertaker,
+	KernelObjectTypeMsgQueue,
+	KernelObjectTypePropertyRef,
+	KernelObjectTypeCondVar
+};
+
+enum ThreadInfoType
+{
+	ThreadInfoTypeGeneral = EMemSpyThreadInfoItemTypeGeneralInfo,
+	ThreadInfoTypeHeap = EMemSpyThreadInfoItemTypeHeap,
+	ThreadInfoTypeStack = EMemSpyThreadInfoItemTypeStack,
+	ThreadInfoTypeChunk = EMemSpyThreadInfoItemTypeChunk,
+	ThreadInfoTypeCodeSeg = EMemSpyThreadInfoItemTypeCodeSeg,
+	ThreadInfoTypeOpenFiles = EMemSpyThreadInfoItemTypeOpenFiles,
+	ThreadInfoTypeActiveObjects = EMemSpyThreadInfoItemTypeActiveObject,
+	ThreadInfoTypeOwnedThreadHandles = EMemSpyThreadInfoItemTypeOwnedThreadHandles,
+	ThreadInfoTypeOwnedProcessHandles = EMemSpyThreadInfoItemTypeOwnedProcessHandles,
+	ThreadInfoTypeServer = EMemSpyThreadInfoItemTypeServer,
+	ThreadInfoTypeSession = EMemSpyThreadInfoItemTypeSession,
+	ThreadInfoTypeSemaphore = EMemSpyThreadInfoItemTypeSemaphore,
+	ThreadInfoTypeOtherThreads = EMemSpyThreadInfoItemTypeOtherThreads,
+	ThreadInfoTypeOtherProcesses = EMemSpyThreadInfoItemTypeOtherProcesses,
+	ThreadInfoTypeMutex = EMemSpyThreadInfoItemTypeMutex,
+	ThreadInfoTypeTimer = EMemSpyThreadInfoItemTypeTimer,
+	ThreadInfoTypeChannel = EMemSpyThreadInfoItemTypeLogicalChannel,
+	ThreadInfoTypeChangeNotifier = EMemSpyThreadInfoItemTypeChangeNotifier,
+	ThreadInfoTypeUndertaker = EMemSpyThreadInfoItemTypeUndertaker,
+	ThreadInfoTypeMessageQueue = EMemSpyThreadInfoItemTypeMessageQueue,
+	ThreadInfoTypeConditionalVariable = EMemSpyThreadInfoItemTypeConditionalVariable,
+	ThreadInfoTypeLDD = EMemSpyThreadInfoItemTypeLDD,
+	ThreadInfoTypePDD = EMemSpyThreadInfoItemTypePDD,
+};
+
+enum DeviceWideOperation
+{
+	OutputPhoneInfo = 0,
+	    
+	OutputDetailedPhoneInfo,
+	    
+	OutputHeapInfo,
+	    
+	OutputCompactHeapInfo,
+	    
+	OutputHeapCellListing,
+	    
+	OutputHeapData,
+	    
+	OutputStackInfo,
+	    
+	OutputCompactStackInfo,
+	    
+	OutputUserStackData,
+	    
+	OutputKernelStackData
+};
+
+enum SwmtMode
+{
+	SwmtModeBasic = 0,
+	SwmtModeFull,
+	SwmtModeCustom
+};
+
+enum HeapDumpsMode
+{
+	HeapDumpsModeKernel = 0,
+	HeapDumpsModeUser,
+	HeapDumpsModeBoth
+};
+
+enum OutputMode
+{
+	OutputModeTrace = 0,
+	OutputModeFile
+};
+
+class MemSpyProcess
+{
+public:
+	MemSpyProcess(CMemSpyApiProcess* process)
+		: mProcess(process)
+	{}
+	
+	virtual  ~MemSpyProcess() { delete mProcess; }
+	
+	ProcessId id() const { return mProcess->Id(); }
+	
+	QString name() const { return QString((QChar*) mProcess->Name().Ptr(), mProcess->Name().Length()); }
+	
+	QString exitInfo() const;
+	
+	int priority() const { return mProcess->Priority(); }
+	
+	int threadCount() const { return mProcess->ThreadCount(); }
+	
+	int sid() const { return mProcess->SID(); }
+	
+	int vid() const { return mProcess->VID(); }
+	
+	bool isDead() const { return mProcess->IsDead(); }
+	
+private:
+	CMemSpyApiProcess *mProcess;
+};
+
+class MemSpyThread
+{
+public:
+	MemSpyThread(CMemSpyApiThread* thread)
+		: mThread(thread)
+	{}
+	
+	virtual ~MemSpyThread() { delete mThread;	}
+	
+	ThreadId id() const { return mThread->Id(); }
+	
+	QString name() const { return QString((QChar*) mThread->Name().Ptr(), mThread->Name().Length()); }
+	
+	int priority() const { return mThread->ThreadPriority(); }
+	
+	
+private:
+	CMemSpyApiThread *mThread;
+};
+
+class MemSpyKernelObjectType
+{
+public:
+	MemSpyKernelObjectType(CMemSpyApiKernelObject* type)
+		: mType(type)
+	{}
+	
+	virtual ~MemSpyKernelObjectType() { delete mType; }
+	
+	int id() const { return mType->Type(); }
+	
+	QString name() const { return QString((QChar*) mType->Name().Ptr(), mType->Name().Length()); }
+	
+	int count() const { return mType->Count(); }
+	
+	qint64 size() const { return mType->Size(); }
+	
+private:
+	CMemSpyApiKernelObject *mType;
+};
+
+class MemSpyKernelObject
+{
+public:
+	MemSpyKernelObject(CMemSpyApiKernelObjectItem* object)
+		: mObject(object)
+	{}
+	
+	virtual ~MemSpyKernelObject() { delete mObject; }
+	
+	int type() const { return mObject->Type(); }
+	
+	QString name() const { return QString::fromLatin1((char*)mObject->Name().Ptr(), mObject->Name().Length()); }
+	
+	QString nameDetail() const { return QString::fromLatin1((char*)mObject->NameDetail().Ptr(), mObject->NameDetail().Length()); }
+	
+	int accessCount() const { return mObject->AccessCount(); }
+	
+	int uniqueId() const { return mObject->UniqueID(); }
+	
+	unsigned int protection() const { return mObject->Protection(); }
+	
+	unsigned int addressOfKernelOwner() const { return reinterpret_cast<unsigned int>(mObject->AddressOfKernelOwner()); }
+	
+	unsigned int kernelAddress() const { return reinterpret_cast<unsigned int>(mObject->Handle()); }
+	
+	unsigned int addressOfOwningProcess() const { return reinterpret_cast<unsigned int>(mObject->AddressOfOwningProcess()); }
+	
+	int id() const { return mObject->Id(); }
+	
+	int priority() const { return mObject->Priority(); }
+	
+	QString nameOfOwner() const { return QString::fromLatin1((char*)mObject->NameOfOwner().Ptr(), mObject->NameOfOwner().Length()); }
+	
+	unsigned int creatorId() const { return mObject->CreatorId(); }
+	
+	int attributes() const { return mObject->Attributes(); }
+	
+	unsigned int addressOfDataBssStackChunk() const { return reinterpret_cast<unsigned int>(mObject->AddressOfDataBssStackChunk()); }
+	
+	unsigned int securityZone() const { return mObject->SecurityZone(); }
+	
+	unsigned int size() const { return mObject->Size(); }
+	
+	unsigned int maxSize() const { return mObject->MaxSize(); }
+	
+	unsigned int bottom() const { return mObject->Bottom(); }
+	
+	unsigned int top() const { return mObject->Top(); }
+	
+	unsigned int startPos() const { return mObject->StartPos(); }
+	
+	unsigned int controllingOwner() const { return mObject->ControllingOwner(); }
+	
+	unsigned int restrictions() const { return mObject->Restrictions(); }
+	
+	unsigned int mapAttr() const { return mObject->Restrictions(); }
+	
+	unsigned int chunkType() const { return mObject->ChunkType(); }
+	
+	int mapCount() const { return mObject->MapCount(); }
+	
+	unsigned int state() const { return mObject->State(); }
+	
+	unsigned int addressOfCodeSeg() const { return reinterpret_cast<unsigned int>(mObject->AddressOfCodeSeg()); }
+	
+	unsigned int resetting() const { return mObject->Resetting(); }
+	
+	unsigned int order() const { return mObject->Order(); }
+	
+	QString version() const { return QString((QChar*) mObject->Version().Name().Ptr(), mObject->Version().Name().Length()); }
+	
+	unsigned int parseMask() const { return mObject->ParseMask(); }
+	
+	unsigned int unitsMask() const { return mObject->UnitsMask(); }
+	
+	unsigned int changes() const { return mObject->Changes(); }
+	
+	int count() const { return mObject->Count(); }
+	
+	int waitCount() const { return mObject->WaitCount(); }
+
+	int sessionType() const { return mObject->SessionType(); }
+
+	int timerType() const { return mObject->TimerType(); }
+	
+	int timerState() const { return mObject->TimerState(); }
+	
+	unsigned int addressOfOwningThread() const { return reinterpret_cast<unsigned int>(mObject->AddressOfOwningThread()); }
+	
+	unsigned int addressOfServer() const { return reinterpret_cast<unsigned int>(mObject->AddressOfServer()); }
+	
+	unsigned int svrSessionType() const { return mObject->SvrSessionType(); }
+	
+	int msgCount() const { return mObject->MsgCount(); }
+	
+	int msgLimit() const { return mObject->MsgLimit(); }
+	
+	unsigned int totalAccessCount() const { return mObject->TotalAccessCount(); }
+	
+	int openChannels() const { return mObject->OpenChannels(); }
+	
+private:
+	CMemSpyApiKernelObjectItem *mObject;
+};
+
+class MemSpyThreadInfoItem 
+{
+public:
+	MemSpyThreadInfoItem(CMemSpyApiThreadInfoItem *item)
+		: mItem(item)
+	{}
+	
+	virtual  ~MemSpyThreadInfoItem() { delete mItem;	}
+	
+	QString caption() const { return QString((QChar*) mItem->Caption().Ptr(), mItem->Caption().Length()); }
+	
+	QString value() const { return QString((QChar*) mItem->Value().Ptr(), mItem->Value().Length()); }
+	
+private:
+	CMemSpyApiThreadInfoItem* mItem;
+};
+
+class MemSpyServer
+{
+public:
+    MemSpyServer(CMemSpyApiServer* server)
+        : mServer(server)
+    {}
+    
+    virtual  ~MemSpyServer() { delete mServer; }
+    
+    ProcessId id() const { return mServer->Id(); }
+    
+    QString name() const { return QString((QChar*) mServer->Name().Ptr(), mServer->Name().Length()); }
+        
+    int sessionCount() const { return mServer->SessionCount(); }
+    
+private:
+    CMemSpyApiServer *mServer;
+};
+
+class MemSpyEComCategory
+{
+public:
+    MemSpyEComCategory(CMemSpyApiEComCategory* category)
+        : mData(category)
+    {}
+    
+    virtual  ~MemSpyEComCategory() { delete mData; }
+    
+    int id() const { return mData->Id().iUid; }
+    
+    QString name() const { return QString((QChar*) mData->Name().Ptr(), mData->Name().Length()); }
+        
+    int interfaceCount() const { return mData->InterfaceCount(); }
+    
+private:
+    CMemSpyApiEComCategory *mData;
+};
+
+class MemSpyEComInterface
+{
+public:
+    MemSpyEComInterface(CMemSpyApiEComInterface* interface)
+        : mData(interface)
+    {}
+    
+    virtual  ~MemSpyEComInterface() { delete mData; }
+    
+    int id() const { return mData->Id().iUid; }
+    
+    int categoryId() const { return mData->CategoryId().iUid; }
+    
+    QString name() const { return QString((QChar*) mData->Name().Ptr(), mData->Name().Length()); }
+        
+    int implementationCount() const { return mData->ImplementationCount(); }
+    
+private:
+    CMemSpyApiEComInterface *mData;
+};
+
+class MemSpyEComImplementation
+{
+public:
+    MemSpyEComImplementation(CMemSpyApiEComImplementation* interface)
+        : mData(interface)
+    {}
+    
+    virtual  ~MemSpyEComImplementation() { delete mData; }
+    
+    int id() const { return mData->ImplementationUid().iUid; }
+    
+    QString name() const { return QString((QChar*) mData->Name().Ptr(), mData->Name().Length()); }
+    
+    int version() const { return mData->Version(); }
+    
+    QString dataType() const { return QString((QChar*) mData->DataType().Ptr(), mData->DataType().Length()); }
+    
+    QString opaqueData() const { return QString((QChar*) mData->OpaqueData().Ptr(), mData->OpaqueData().Length()); }
+    
+    QString drive() const { return QString((QChar*) mData->Drive().Name().Ptr(), mData->Drive().Name().Length()); }
+    
+    bool romOnly() const { return mData->RomOnly(); }
+    
+    bool romBased() const { return mData->RomBased(); }
+    
+    int vendorId() const { return mData->VendorId(); }
+    
+    bool disabled() const { return mData->Disabled(); }
+    
+private:
+    CMemSpyApiEComImplementation *mData;
+};
+
+
+class MemSpyDwoProgressTracker : public QObject, public CActive
+{
+	Q_OBJECT
+
+public:
+	MemSpyDwoProgressTracker(RMemSpySession &session);
+	virtual ~MemSpyDwoProgressTracker();
+	
+public slots:
+
+	void start();
+
+	void cancel();
+	
+protected: // from CActive
+	
+	virtual void RunL();
+	 
+	virtual void DoCancel();
+	 
+	virtual TInt RunError(TInt aError);
+	
+signals:
+	void progress(int progress, const QString& processName);
+	
+private:
+	TMemSpyDeviceWideOperationProgress mProgress;
+	RMemSpySession mSession;
+};
+
+class MemSpyDwoTracker : public QObject, public CActive
+{
+	Q_OBJECT
+
+public:
+	MemSpyDwoTracker(RMemSpySession &session, DeviceWideOperation operation);
+	virtual ~MemSpyDwoTracker();
+	
+public slots:
+
+	void start();
+	
+	void cancel();
+	
+protected: // from CActive
+	
+	virtual void RunL();
+	 
+	virtual void DoCancel();
+	 
+	virtual TInt RunError(TInt aError);
+	
+signals:
+	void finished(int errorCode);
+	void progress(int progress, const QString& processName);
+	
+private:
+	RMemSpySession mSession;
+	MemSpyDwoProgressTracker *mProgressTracker;
+	DeviceWideOperation mOperation;
+};
+
+class MemSpyAsyncTracker : public QObject, public CActive
+{
+	Q_OBJECT
+	
+public:
+	
+	MemSpyAsyncTracker(RMemSpySession& session, void (RMemSpySession::*function)(TRequestStatus&));
+	
+	void start();
+	
+	virtual void RunL();
+	
+	virtual void DoCancel();
+	
+	virtual TInt RunError(TInt aError);
+	
+signals:
+	
+	void finished(int errorCode);
+	
+private:
+	void (RMemSpySession::*mFunction)(TRequestStatus&);
+	RMemSpySession& mSession;
+};
+
+class MemSpySwmtDumpTracker : public MemSpyAsyncTracker
+{
+public:
+	MemSpySwmtDumpTracker(RMemSpySession& session) : 
+		MemSpyAsyncTracker(session, &RMemSpySession::ForceSwmtUpdate)
+	{}
+};
+
+class MemSpyKernelHeapDumpTracker : public MemSpyAsyncTracker
+{
+public:
+	MemSpyKernelHeapDumpTracker(RMemSpySession& session) : 
+		MemSpyAsyncTracker(session, &RMemSpySession::OutputKernelHeapData)
+	{}
+};
+
+class MemSpySettings : private QSettings
+{
+public:
+	
+	MemSpySettings();
+	
+	OutputMode outputMode() const;
+	void setOutputMode(OutputMode mode);
+	
+	QString outputPath() const;
+	void setOutputPath(const QString& path);
+		
+	int swmtTimerPeriod() const;
+	void setSwmtTimerPeriod(int period);
+	
+	SwmtMode swmtMode() const;
+	void setSwmtMode(SwmtMode mode);
+	
+	QVariantList swmtCategories() const;
+	void setSwmtCategories(const QVariantList& categories);
+	
+	HeapDumpsMode heapDumpsMode() const;
+	void setHeapDumpsMode(HeapDumpsMode mode);
+};
+
+class EngineWrapper : public QObject
+{
+	Q_OBJECT
+	
+public:
+	EngineWrapper();
+	
+	virtual ~EngineWrapper();
+	
+	bool initialize();
+	
+	MemSpySettings& settings();
+	
+	const MemSpySettings& settings() const;
+	
+	
+	
+	QList<MemSpyProcess*> getProcesses();
+	
+	QList<MemSpyThread*> getThreads(ProcessId processId);
+	
+	QList<MemSpyThreadInfoItem*> getThreadInfo(ThreadId threadId, ThreadInfoType type);
+	
+	void setThreadPriority(ThreadId threadId, ThreadPriority priority);
+	
+	QList<MemSpyKernelObjectType*> getKernelObjectTypes();
+	
+	QList<MemSpyKernelObject*> getKernelObjects(int type);
+	
+	QList<MemSpyServer*> getServers();
+	
+	QList<MemSpyEComCategory*> getEComCategories();
+	
+	QList<MemSpyEComInterface*> getEComInterfaces(int categoryId);
+	
+	QList<MemSpyEComImplementation*> getEComImplementations(int interfaceId);
+	
+	MemSpyDwoTracker* createDeviceWideOperation(DeviceWideOperation operation);
+	
+	MemSpyKernelHeapDumpTracker* createKernelHeapDumpTracker();
+	
+	MemSpySwmtDumpTracker* createSwmtDumpTracker();
+	
+	void setSwmtSettings(SwmtMode mode, const QVariantList& categories);
+	
+	bool isSwmtRunning();
+	
+	void startSwmt(int period);
+	
+	void stopSwmt();
+	
+	void forceSwmtDump();
+	
+	void outputKernelHeapData();
+	
+	int outputThreadHeapData(const QString& filter);
+	
+	void updateOutputSettings();
+	
+	void killProcess(ProcessId process);
+	
+	void panicProcess(ProcessId process);
+	
+	void terminateProcess(ProcessId process);
+	
+private:
+	RMemSpySession mSession;
+	
+	bool mSwmtRunning;
+	
+	MemSpySettings mSettings;
+};
+
+#endif /* ENGINEWRAPPER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyecomcategoryview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYECOMCATEGORYVIEW_H_
+#define MEMSPYECOMCATEGORYVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyEComCategoryModel : public QAbstractListModel
+{
+public:
+    MemSpyEComCategoryModel(EngineWrapper &engine, QObject *parent = 0);
+    
+    ~MemSpyEComCategoryModel();
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    
+    void refresh();
+    
+private:
+    EngineWrapper& mEngine;
+    
+    QList<MemSpyEComCategory*> mData;
+};
+
+class MemSpyEComCategoryView : public MemSpyListView
+{
+    
+    Q_OBJECT
+    
+public:
+    MemSpyEComCategoryView(EngineWrapper &engine, ViewManager &viewManager) : 
+            MemSpyListView(engine, viewManager),
+            mModel(0)
+        {}
+    
+public slots:
+    virtual void refresh();
+    
+protected:
+    void initialize(const QVariantMap& params);
+    
+protected:
+    virtual bool isRefreshable() const { return true; }
+    
+private slots:
+    void itemClicked(const QModelIndex& index);
+    
+private:
+    MemSpyEComCategoryModel* mModel;
+};
+
+#endif /* MEMSPYECOMCATEGORYVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyecomimplementationdetailview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,58 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYECOMIMPLEMENTATIONDETAILVIEW_H_
+#define MEMSPYECOMIMPLEMENTATIONDETAILVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyEComImplementationDetailModel : public QAbstractListModel
+{
+public:
+    MemSpyEComImplementationDetailModel(MemSpyEComImplementation* implementation, QObject *parent = 0);
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    
+private:
+    QVariantList mData;
+};
+
+class MemSpyEComImplementationDetailView : public MemSpyListView
+{
+    
+    Q_OBJECT
+    
+public:
+    MemSpyEComImplementationDetailView(EngineWrapper &engine, ViewManager &viewManager) : 
+            MemSpyListView(engine, viewManager),
+            mModel(0)
+        {}
+    
+protected:
+    void initialize(const QVariantMap& params);
+    
+private:
+    MemSpyEComImplementationDetailModel* mModel;
+};
+
+#endif /* MEMSPYECOMIMPLEMENTATIONDETAILVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyecomimplementationview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,79 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYECOMIMPLEMENTATIONVIEW_H_
+#define MEMSPYECOMIMPLEMENTATIONVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyEComImplementationModel : public QAbstractListModel
+{
+public:
+    MemSpyEComImplementationModel(EngineWrapper &engine, int interfaceId, QObject *parent = 0);
+    
+    ~MemSpyEComImplementationModel();
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    
+    void refresh();
+    
+private:
+    int mInterfaceId;
+    
+    EngineWrapper& mEngine;
+    
+    QList<MemSpyEComImplementation*> mData;
+};
+
+class MemSpyEComImplementationView : public MemSpyListView
+{
+    
+    Q_OBJECT
+    
+public:
+    MemSpyEComImplementationView(EngineWrapper &engine, ViewManager &viewManager) : 
+            MemSpyListView(engine, viewManager),
+            mModel(0)
+        {}
+    
+public slots:
+    virtual void refresh();
+    
+protected:
+    void initialize(const QVariantMap& params);
+    
+protected:
+    virtual bool isRefreshable() const { return true; }
+    
+private slots:
+    void itemClicked(const QModelIndex& index);
+    
+private:
+    MemSpyEComImplementationModel* mModel;
+    
+    int mParentId;
+    
+    QString mParentName;
+};
+
+#endif /* MEMSPYECOMIMPLEMENTATIONVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyecominterfaceview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,79 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYECOMINTERFACEVIEW_H_
+#define MEMSPYECOMINTERFACEVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyEComInterfaceModel : public QAbstractListModel
+{
+public:
+    MemSpyEComInterfaceModel(EngineWrapper &engine, int categoryId, QObject *parent = 0);
+    
+    ~MemSpyEComInterfaceModel();
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    
+    void refresh();
+    
+private:
+    int mCategoryId;
+    
+    EngineWrapper& mEngine;
+    
+    QList<MemSpyEComInterface*> mData;
+};
+
+class MemSpyEComInterfaceView : public MemSpyListView
+{
+    
+    Q_OBJECT
+    
+public:
+    MemSpyEComInterfaceView(EngineWrapper &engine, ViewManager &viewManager) : 
+            MemSpyListView(engine, viewManager),
+            mModel(0)
+        {}
+    
+public slots:
+    virtual void refresh();
+    
+protected:
+    void initialize(const QVariantMap& params);
+    
+protected:
+    virtual bool isRefreshable() const { return true; }
+    
+private slots:
+    void itemClicked(const QModelIndex& index);
+    
+private:
+    MemSpyEComInterfaceModel* mModel;
+    
+    int mParentId;
+    
+    QString mParentName;
+};
+
+#endif /* MEMSPYECOMINTERFACEVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyheapdumpsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,61 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYHEAPDUMPSVIEW_H_
+#define MEMSPYHEAPDUMPSVIEW_H_
+
+#include "memspyview.h"
+
+class HbDataFormModel;
+class HbDataFormModelItem;
+
+class MemSpyHeapDumpsView : public MemSpyView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyHeapDumpsView(EngineWrapper &engine, ViewManager &viewManager);
+	virtual ~MemSpyHeapDumpsView();
+	
+	void initialize(const QVariantMap& params);
+		
+protected:
+	HbToolBar* createToolBar();
+	
+	HbWidget* createCentralWidget();
+	
+private slots:
+	void modeChanged(int mode);
+	void dump();
+
+	void updateDwoProgress(int progress, const QString& processName);
+	void asyncOperationFinished(int errorCode);
+
+	
+private:
+	void removeFilterItem();
+	void createFilterItem();
+	
+private:
+	HbDataFormModel* mModel;
+	HbDataFormModelItem* mModeItem;
+	HbDataFormModelItem* mFilterItem;
+	
+	HbProgressDialog* mDwoProgressDialog;
+};
+
+#endif /* MEMSPYHEAPDUMPSVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspykernelobjectdetailview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYKERNELOBJECTDETAILVIEW_H_
+#define MEMSPYKERNELOBJECTDETAILVIEW_H_
+
+#include "memspylistview.h"
+
+class MemSpyKernelObjectDetailModel : public QAbstractListModel
+{
+public:
+    MemSpyKernelObjectDetailModel(const QStringList& details, QObject *parent = 0);
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+  
+private:
+    QStringList mDetails;
+};
+
+class MemSpyKernelObjectDetailView : public MemSpyListView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyKernelObjectDetailView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+	
+protected:
+	virtual void initialize(const QVariantMap& params);
+	
+	virtual bool isBreadCrumbVisible() const;
+	        
+	virtual QString getBreadCrumbText() const;
+	
+private:
+	QString mTypeName;
+	QString mObjectName;
+};
+
+#endif /* MEMSPYKERNELOBJECTDETAILVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspykernelobjecttypeview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,59 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYKERNELOBJECTTYPESVIEW_H_
+#define MEMSPYKERNELOBJECTTYPESVIEW_H_
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+class MemSpyKernelObjectTypeModel : public QAbstractListModel
+{
+public:
+	MemSpyKernelObjectTypeModel(EngineWrapper &engine, QObject *parent = 0);
+	
+	virtual ~MemSpyKernelObjectTypeModel();
+	
+	int rowCount(const QModelIndex &parent = QModelIndex()) const;
+	
+	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	
+private:
+	QString formatSize(qint64 size) const;
+	
+private:
+	QList<MemSpyKernelObjectType*> mObjectTypes;
+	
+	QStringList mKernelObjectNames;
+};
+
+class MemSpyKernelObjectTypeView : public MemSpyListView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyKernelObjectTypeView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+
+protected:
+	virtual void initialize(const QVariantMap& params);
+
+private slots:
+	void itemClicked(const QModelIndex& index);
+};
+
+#endif /* MEMSPYKERNELOBJECTTYPESVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspykernelobjectview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,62 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYKERNELOBJECTVIEW_H_
+#define MEMSPYKERNELOBJECTVIEW_H_
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+class MemSpyKernelObjectModel : public QAbstractListModel
+{
+public:
+	MemSpyKernelObjectModel(EngineWrapper &engine, int objectType, QObject *parent = 0);
+	
+	~MemSpyKernelObjectModel();
+	
+	int rowCount(const QModelIndex &parent = QModelIndex()) const;
+	
+	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	
+private:
+	QList<MemSpyKernelObject*> mObjects;
+};
+
+
+class MemSpyKernelObjectView : public MemSpyListView
+{
+	Q_OBJECT
+
+public:
+	MemSpyKernelObjectView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+
+protected:
+	virtual void initialize(const QVariantMap& params);
+	
+	virtual bool isBreadCrumbVisible() const;
+	            
+	virtual QString getBreadCrumbText() const;
+
+private slots:
+	void itemClicked(const QModelIndex& index);
+	
+private:
+	QStringList getDetails(MemSpyKernelObject *object);
+};
+
+#endif /* MEMSPYKERNELOBJECTVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspylistview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,38 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYLISTVIEW_H_
+#define MEMSPYLISTVIEW_H_
+
+#include <HbListView>
+
+#include "memspyview.h"
+
+class MemSpyListView : public MemSpyView
+	{
+public:
+	MemSpyListView(EngineWrapper &engine, ViewManager &viewManager) : 
+		MemSpyView(engine, viewManager) {}
+	
+protected:
+	virtual HbWidget* createCentralWidget();
+	
+protected:
+	HbListView mListView;
+	};
+
+#endif /* MEMSPYLISTVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspymainview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,38 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYMAINVIEW_H_
+#define MEMSPYMAINVIEW_H_
+
+#include "memspylistview.h"
+
+class MemSpyMainView : public MemSpyListView
+{
+    Q_OBJECT
+    
+public:
+	MemSpyMainView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+protected:
+	virtual void initialize(const QVariantMap& params);
+	virtual bool isBreadCrumbVisible() const;
+	
+public slots:
+	void itemClicked(const QModelIndex& index);
+};
+
+#endif /* MEMSPYMAINVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyprocessview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* 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:
+* 
+*/
+
+#ifndef MEMSPYPROCESSVIEW_H_
+#define MEMSPYPROCESSVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyProcessModel : public QAbstractListModel
+{
+public:
+	MemSpyProcessModel(EngineWrapper &engine, QObject *parent = 0);
+	
+	~MemSpyProcessModel();
+	
+	int rowCount(const QModelIndex &parent = QModelIndex()) const;
+	
+	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	
+	void refresh();
+	
+private:
+	EngineWrapper& mEngine;
+	
+	QList<MemSpyProcess*> mProcesses;
+	
+	QMap<int, QString> mPriorityMap;
+};
+
+class MemSpyProcessView : public MemSpyListView
+{
+    Q_OBJECT
+    
+public:
+	MemSpyProcessView(EngineWrapper &engine, ViewManager &viewManager) : 
+        MemSpyListView(engine, viewManager),
+		mModel(0)
+	{}
+	
+public slots:
+    virtual void refresh();
+	
+protected:
+	void initialize(const QVariantMap& params);
+	
+protected:
+	virtual bool isRefreshable() const { return true; }
+	
+private slots:
+	void itemClicked(const QModelIndex& index);
+	void catchLongPress(HbAbstractViewItem *item, const QPointF &coords);
+	
+	void kill();
+	void panic();
+	void terminate();
+	
+private:
+	MemSpyProcessModel* mModel;
+	
+	HbMenu* mContextMenu;
+	HbMenu* mEndMenu;
+	
+	ProcessId mProcessId;
+};
+
+#endif /* MEMSPYPROCESSVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyserverview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYSERVERVIEW_H_
+#define MEMSPYSERVERVIEW_H_
+
+#include <QAbstractListModel>
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+
+class MemSpyServerModel : public QAbstractListModel
+{
+public:
+    MemSpyServerModel(EngineWrapper &engine, QObject *parent = 0);
+    
+    ~MemSpyServerModel();
+    
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    
+    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    
+    void refresh();
+    
+private:
+    EngineWrapper& mEngine;
+    
+    QList<MemSpyServer*> mServers;
+};
+
+class MemSpyServerView : public MemSpyListView
+{
+    
+    Q_OBJECT
+    
+public:
+    MemSpyServerView(EngineWrapper &engine, ViewManager &viewManager) : 
+            MemSpyListView(engine, viewManager),
+            mModel(0)
+        {}
+    
+public slots:
+    virtual void refresh();
+    
+protected:
+    void initialize(const QVariantMap& params);
+    
+protected:
+    virtual bool isRefreshable() const { return true; }
+    
+private slots:
+    void itemClicked(const QModelIndex& index);
+    
+private:
+    MemSpyServerModel* mModel;
+};
+
+#endif /* MEMSPYSERVERVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspysettingsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYSETTINGSVIEW_H_
+#define MEMSPYSETTINGSVIEW_H_
+
+#include <HbView>
+
+class HbDataForm;
+class HbDataFormModel;
+class HbDataFormModelItem;
+class EngineWrapper;
+
+class MemSpySettingsView : public HbView
+{
+	Q_OBJECT
+	
+public:
+	MemSpySettingsView(EngineWrapper &engine);
+	virtual ~MemSpySettingsView();
+	
+	void initialize(const QVariantMap& params);
+	
+private slots:
+	void updateModel();
+	void accept();
+	void reject();
+	
+signals:
+	void finished(bool ok);
+
+private:
+	HbDataForm* mForm;
+	HbDataFormModel* mModel;
+	HbDataFormModelItem* mModeItem;
+	HbDataFormModelItem* mPathItem;
+	HbDataFormModelItem* mCustomPathItem;
+	
+	EngineWrapper& mEngine;
+};
+
+#endif /* MEMSPYSETTINGSVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyswmtview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,65 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYSWMTVIEW_H_
+#define MEMSPYSWMTVIEW_H_
+
+#include "memspyview.h"
+
+class HbDataFormModel;
+class HbDataFormModelItem;
+class HbProgressDialog;
+
+class MemSpySwmtView : public MemSpyView
+{
+	Q_OBJECT
+	
+public:
+	MemSpySwmtView(EngineWrapper &engine, ViewManager &viewManager);
+	virtual ~MemSpySwmtView();
+	
+	void initialize(const QVariantMap& params);
+		
+protected:
+	HbToolBar* createToolBar();
+	
+	HbWidget* createCentralWidget();
+	
+private slots:
+	void toggleTimer();
+	void forceDump();
+	void modeChanged(int mode);
+	void asyncOperationFinished(int errorCode);
+	
+private:
+	void updateTimerAction(bool isRunning);
+	void removeCategoriesItem();
+	void createCategoriesItem();
+	void updateSettings();
+	
+private:
+	HbAction* mToggleTimerAction;
+	
+	HbDataFormModel* mModel;
+	HbDataFormModelItem* mTimerItem;
+	HbDataFormModelItem* mModeItem;
+	HbDataFormModelItem* mCategoriesItem;
+	
+	HbProgressDialog* mProgressDialog;
+};
+
+#endif /* MEMSPYSWMTVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspythreaddetailindexview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,53 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYTHREADDETAILINDEXVIEW_H_
+#define MEMSPYTHREADDETAILINDEXVIEW_H_
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+class HbMenu;
+
+class MemSpyThreadDetailIndexView : public MemSpyListView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyThreadDetailIndexView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+protected:
+	virtual void initialize(const QVariantMap& params);
+	
+	virtual HbMenu* createToolMenu();
+	
+	virtual bool isBreadCrumbVisible() const;
+	    
+	virtual QString getBreadCrumbText() const;
+
+private slots:
+	void changePriority();
+	void itemClicked(const QModelIndex& index);
+	
+private:
+	ThreadId mThreadId;
+	HbMenu *mPriorityMenu;
+	QString mProcessName;
+	QString mThreadName;
+};
+
+#endif /* MEMSPYTHREADDETAILINDEXVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspythreaddetailview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,63 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYTHREADDETAILVIEW_H_
+#define MEMSPYTHREADDETAILVIEW_H_
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+class HbMenu;
+
+class MemSpyThreadDetailModel : public QAbstractListModel
+{
+public:
+	MemSpyThreadDetailModel(EngineWrapper &engine, ThreadId threadId, ThreadInfoType type, QObject *parent = 0);
+	
+	~MemSpyThreadDetailModel();
+	
+	int rowCount(const QModelIndex &parent = QModelIndex()) const;
+	
+	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	
+private:
+	QList<MemSpyThreadInfoItem*> mThreadInfo;
+};
+
+
+class MemSpyThreadDetailView : public MemSpyListView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyThreadDetailView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+protected:
+	virtual void initialize(const QVariantMap& params);
+	
+	virtual bool isBreadCrumbVisible() const;
+	
+	virtual QString getBreadCrumbText() const;
+	
+private:
+	ThreadId mThreadId;
+	HbMenu *mPriorityMenu;
+	QString mProcessName;
+	QString mThreadName;
+};
+
+#endif /* MEMSPYTHREADDETAILVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspythreadview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,90 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYTHREADVIEW_H_
+#define MEMSPYTHREADVIEW_H_
+
+#include "memspylistview.h"
+#include "enginewrapper.h"
+
+class MemSpyThreadModel : public QAbstractListModel
+{
+public:
+	MemSpyThreadModel(EngineWrapper &engine, ProcessId threadId, QObject *parent = 0);
+	
+	~MemSpyThreadModel();
+	
+	int rowCount(const QModelIndex &parent = QModelIndex()) const;
+	
+	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	
+	void refresh();
+	
+private:
+	ProcessId mProcessId;
+	
+	EngineWrapper& mEngine;
+	
+	QList<MemSpyThread*> mThreads;
+	
+	QMap<int, QString> mPriorityMap;
+};
+
+
+class MemSpyThreadView : public MemSpyListView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager);
+	~MemSpyThreadView();
+	
+public slots:
+    virtual void refresh();
+
+protected:
+	void initialize(const QVariantMap& params);
+	
+protected:
+	virtual bool isRefreshable() const { return true; }
+	
+	virtual bool isBreadCrumbVisible() const;
+	
+	QString getBreadCrumbText() const;
+	
+	HbMenu* createToolMenu();
+	
+private slots:
+	void itemClicked(const QModelIndex& index);
+	void catchLongPress(HbAbstractViewItem *item, const QPointF &coords);
+	void changePriority();
+	
+	void kill();
+    void panic();
+    void terminate();	    
+	
+private:
+	HbMenu* mContextMenu;
+	HbMenu* mPriorityMenu;
+	ProcessId mProcessId;
+	ThreadId mThreadId;
+	QString mProcessName;
+	
+	MemSpyThreadModel* mModel;
+};
+
+#endif /* MEMSPYTHREADVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspytrackingview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,38 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef MEMSPYTRACKINGVIEW_H_
+#define MEMSPYTRACKINGVIEW_H_
+
+#include "memspylistview.h"
+
+class MemSpyTrackingView : public MemSpyListView
+{
+    Q_OBJECT
+    
+public:
+    MemSpyTrackingView(EngineWrapper &engine, ViewManager &viewManager) 
+		: MemSpyListView(engine, viewManager) {}
+protected:
+	virtual void initialize(const QVariantMap& params);
+	virtual bool isBreadCrumbVisible() const;
+	
+public slots:
+	void itemClicked(const QModelIndex& index);
+};
+
+#endif /* MEMSPYTRACKINGVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/memspyview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* 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:
+* 
+*/
+
+#ifndef MEMSPYVIEW_H_
+#define MEMSPYVIEW_H_
+
+#include <HbView>
+#include <HbListView>
+#include <QVariantMap>
+
+class HbLabel;
+class HbProgressDialog;
+class EngineWrapper;
+class ViewManager;
+
+
+class MemSpyView : public HbView
+{
+	Q_OBJECT
+	
+public:
+	MemSpyView(EngineWrapper &engine, ViewManager &viewManager);
+	
+	virtual ~MemSpyView();
+	
+protected:
+	
+	virtual QList<QAction*> createOutputActions();
+	
+	virtual HbMenu* createToolMenu();
+	
+	virtual HbToolBar* createToolBar();
+	
+	virtual bool isRefreshable() const;
+	
+	virtual bool isBreadCrumbVisible() const;
+	
+	virtual QString getBreadCrumbText() const;
+	
+	virtual HbWidget* createCentralWidget() = 0;
+	
+public slots:
+
+	virtual void initialize(const QVariantMap& params);
+
+	virtual void refresh();
+	
+	void showSettings();
+	
+	void showAbout();
+	
+private slots:
+	
+	void closeSettings();
+		
+protected:
+	
+	EngineWrapper &mEngine;
+	
+	ViewManager &mViewManager;
+	
+	
+private:
+	HbMenu* mOutputMenu;
+	HbMenu* mOutputGenInfoMenu;
+	HbMenu* mOutputHeapInfoMenu;
+	HbMenu* mOutputStackInfoMenu;
+	HbToolBar* mToolBar;
+	
+	HbLabel* mBreadCrumb;
+};
+
+#endif /* MEMSPYVIEW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/inc/viewmanager.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,71 @@
+/*
+ * 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:
+ *  
+ */
+
+#ifndef VIEWMANAGER_H_
+#define VIEWMANAGER_H_
+
+
+#include <QObject>
+#include <QVariantMap>
+
+enum ViewIndex {
+	MainView,
+	ProcessView,
+	ThreadView,
+	ThreadDetailIndexView,
+	ThreadDetailView,
+	KernelObjectTypeView,
+	KernelObjectView,
+	KernelObjectDetailView,
+	TrackingView,
+	SwmtView,
+	HeapDumpsView,
+	ServerView,
+	EComCategoryView,
+	EComInterfaceView,
+	EComImplementationView,
+	EComImplementationDetailView,
+};
+
+class HbMainWindow;
+class HbView;
+class EngineWrapper;
+
+
+class ViewManager : public QObject
+{
+	Q_OBJECT
+	
+public:
+	ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent = 0);
+	
+public slots:
+	void showView(ViewIndex index, const QVariantMap &params);
+	
+	void showView(ViewIndex index);
+	
+	void goBack();
+	
+private slots:
+	void viewChanged(HbView *view);
+	
+private:
+	HbMainWindow &mWindow;
+	EngineWrapper &mEngine;
+};
+
+#endif /* VIEWMANAGER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,578 @@
+/*
+* 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 <QMessageBox>
+
+#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
+
+#include "enginewrapper.h"
+
+// CONSTANTS
+
+const QString OUTPUT_MODE = "output/mode";
+const QString OUTPUT_PATH = "output/path";
+const QString SWMT_PERIOD = "swmt/period";
+const QString SWMT_MODE = "swmt/mode";
+const QString SWMT_CATEGORIES = "swmt/categories";
+const QString HEAP_DUMPS_MODE = "heapdumps/mode";
+
+QString MemSpyProcess::exitInfo() const
+{
+    QChar exitType[] = {'K', 'T', 'P', 'R'};
+    QString result = QString("[%1]").arg(exitType[mProcess->ExitType()]);
+    
+    if (mProcess->ExitType() != EExitKill && mProcess->ExitType() != EExitPending) {
+        
+        QString exitCategory = QString((QChar*) mProcess->ExitCategory().Ptr(), mProcess->ExitCategory().Length());
+        result.append(QString(" %1-%2").arg(exitCategory).arg(mProcess->ExitReason()));
+    }
+    
+    return result;
+}
+
+
+MemSpyDwoProgressTracker::MemSpyDwoProgressTracker(RMemSpySession &session) :
+	CActive(EPriorityStandard), mSession(session)
+{
+	CActiveScheduler::Add(this);
+}
+
+MemSpyDwoProgressTracker::~MemSpyDwoProgressTracker()
+{
+	Cancel();
+}
+
+void MemSpyDwoProgressTracker::start()
+{
+	mSession.NotifyDeviceWideOperationProgress(mProgress, iStatus);
+	
+	SetActive();
+}
+
+void MemSpyDwoProgressTracker::cancel()
+{
+	Cancel();
+}
+
+// Event handler method.
+ 
+void MemSpyDwoProgressTracker::RunL()
+    {
+ 
+    // If an error occurred handle it in RunError().
+    User::LeaveIfError(iStatus.Int());
+ 
+    // Resubmit the request immediately
+    
+    mSession.NotifyDeviceWideOperationProgress(mProgress, iStatus);
+ 
+    SetActive();
+ 
+    emit progress(mProgress.Progress(), QString((QChar*) mProgress.Description().Ptr(), mProgress.Description().Length()));
+    }
+ 
+void MemSpyDwoProgressTracker::DoCancel()
+{ 
+	// this is not yet implemented, as it is not required in current use cases
+}
+ 
+TInt MemSpyDwoProgressTracker::RunError(TInt aError)
+{ 
+	// KErrNotReady and KErrCancel errors are OK, they just notify 
+	// us about the outstanding notification request that won't be 
+	// processed.
+	Q_UNUSED(aError);
+	
+    return KErrNone;
+}
+
+MemSpyDwoTracker::MemSpyDwoTracker(RMemSpySession &session, DeviceWideOperation operation) :
+	CActive(EPriorityStandard), 
+	mSession(session),
+	mProgressTracker(new MemSpyDwoProgressTracker(session)),
+	mOperation(operation)
+{
+	CActiveScheduler::Add(this);
+	connect(mProgressTracker, SIGNAL(progress(int,QString)), this, SIGNAL(progress(int,QString)));
+}
+
+MemSpyDwoTracker::~MemSpyDwoTracker()
+{
+	Cancel();
+	
+	delete mProgressTracker;
+}
+
+void MemSpyDwoTracker::start()
+{
+	void (RMemSpySession::*functions[])(TRequestStatus&) = { 
+			&RMemSpySession::OutputPhoneInfo,
+			&RMemSpySession::OutputDetailedPhoneInfo,
+			&RMemSpySession::OutputHeapInfo,
+			&RMemSpySession::OutputCompactHeapInfo,
+			&RMemSpySession::OutputHeapCellListing,
+			&RMemSpySession::OutputHeapData,
+			&RMemSpySession::OutputStackInfo,
+			&RMemSpySession::OutputCompactStackInfo,
+			&RMemSpySession::OutputUserStackData,
+			&RMemSpySession::OutputKernelStackData };
+	
+	(mSession.*functions[mOperation])(iStatus);
+	
+	mProgressTracker->start();
+	
+	SetActive();
+}
+
+void MemSpyDwoTracker::cancel()
+{
+	Cancel();
+}
+
+// Event handler method.
+ 
+void MemSpyDwoTracker::RunL()
+    {
+ 
+    // If an error occurred handle it in RunError().
+    User::LeaveIfError(iStatus.Int());
+ 
+    // Operation has finished successfully 
+    emit finished(0);
+    }
+ 
+void MemSpyDwoTracker::DoCancel()
+{
+	// Cancel progress tracker
+	mProgressTracker->cancel();
+	
+	mSession.CancelDeviceWideOperationL();
+}
+ 
+TInt MemSpyDwoTracker::RunError(TInt aError)
+{ 
+	// Emit the finished signal to notify user 
+	// operation was canceled
+	emit finished(aError);
+	
+    return KErrNone;
+}
+
+MemSpyAsyncTracker::MemSpyAsyncTracker(RMemSpySession& session, void (RMemSpySession::*function)(TRequestStatus&)) :
+	CActive(EPriorityStandard), 
+	mFunction(function),
+	mSession(session)
+{
+	CActiveScheduler::Add(this);
+}
+
+void MemSpyAsyncTracker::RunL()
+{ 
+    // If an error occurred handle it in RunError().
+    User::LeaveIfError(iStatus.Int());
+ 
+    // Operation has finished successfully 
+    emit finished(0);
+}
+
+void MemSpyAsyncTracker::DoCancel()
+{
+	// nothing to do here
+}
+
+TInt MemSpyAsyncTracker::RunError(TInt aError)
+{ 
+	// Emit the finished signal to notify user 
+	// that operation was canceled
+	emit finished(aError);
+	
+    return KErrNone;
+}
+
+void MemSpyAsyncTracker::start()
+{
+	(mSession.*mFunction)(iStatus);
+	
+	SetActive();
+}
+
+MemSpySettings::MemSpySettings() : 
+	QSettings("Nokia", "MemSpy") 
+{
+}
+
+OutputMode MemSpySettings::outputMode() const
+{
+	return static_cast<OutputMode>(value(OUTPUT_MODE, 0).toInt());
+}
+
+void MemSpySettings::setOutputMode(OutputMode mode)
+{
+	setValue(OUTPUT_MODE, mode);
+}
+	
+QString MemSpySettings::outputPath() const
+{
+	return value(OUTPUT_PATH).toString();
+}
+
+void MemSpySettings::setOutputPath(const QString& path)
+{
+	setValue(OUTPUT_PATH, path);
+}
+
+int MemSpySettings::swmtTimerPeriod() const
+{
+	return value(SWMT_PERIOD, 30).toInt();
+}
+
+void MemSpySettings::setSwmtMode(SwmtMode mode)
+{
+	setValue(SWMT_MODE, mode);
+}
+
+SwmtMode MemSpySettings::swmtMode() const
+{
+	return static_cast<SwmtMode>(value(SWMT_MODE, 0).toInt());
+}
+
+void MemSpySettings::setSwmtTimerPeriod(int period)
+{
+	setValue(SWMT_PERIOD, period);
+}
+
+
+QVariantList MemSpySettings::swmtCategories() const
+{
+	return value(SWMT_CATEGORIES).toList();
+}
+
+void MemSpySettings::setSwmtCategories(const QVariantList& categories)
+{
+	setValue(SWMT_CATEGORIES, categories);
+}
+
+HeapDumpsMode MemSpySettings::heapDumpsMode() const
+{
+	return static_cast<HeapDumpsMode>(value(HEAP_DUMPS_MODE).toInt());
+}
+
+void MemSpySettings::setHeapDumpsMode(HeapDumpsMode mode)
+{
+	setValue(HEAP_DUMPS_MODE, mode);
+}
+
+
+EngineWrapper::EngineWrapper() :
+	mSwmtRunning(false)
+{
+}
+
+EngineWrapper::~EngineWrapper()
+{
+	mSession.Close();
+}
+
+bool EngineWrapper::initialize()
+{
+	return mSession.Connect() == KErrNone;
+}
+
+MemSpySettings& EngineWrapper::settings()
+{
+	return mSettings;
+}
+
+const MemSpySettings& EngineWrapper::settings() const
+{
+	return mSettings;
+}
+
+
+
+QList<MemSpyProcess*> EngineWrapper::getProcesses()
+{
+	QList<MemSpyProcess*> result;
+	
+	RArray<CMemSpyApiProcess*> proc;
+	
+	QT_TRAP_THROWING(mSession.GetProcessesL(proc));
+	
+	for (TInt i=0; i<proc.Count(); i++)
+        result.append(new MemSpyProcess(proc[i]));
+	
+	return result;
+}
+
+QList<MemSpyThread*> EngineWrapper::getThreads(ProcessId processId)
+{
+	QList<MemSpyThread*> result;
+	
+	RArray<CMemSpyApiThread*> proc;
+	
+	QT_TRAP_THROWING(mSession.GetThreadsL(processId, proc));
+	
+    for (TInt i=0; i<proc.Count(); i++)
+        result.append(new MemSpyThread(proc[i]));
+	
+	return result;
+}
+
+QList<MemSpyThreadInfoItem*> EngineWrapper::getThreadInfo(ThreadId threadId, ThreadInfoType type)
+{
+	QList<MemSpyThreadInfoItem*> result;
+	RArray<CMemSpyApiThreadInfoItem*> threadInfo;
+	qt_symbian_throwIfError(mSession.GetThreadInfoItems(threadInfo, threadId, 
+			static_cast<TMemSpyThreadInfoItemType>(type)));
+	
+	for (TInt i=0; i<threadInfo.Count(); i++)
+		result.append(new MemSpyThreadInfoItem(threadInfo[i]));
+	
+	return result;
+}
+
+void EngineWrapper::setThreadPriority(ThreadId threadId, ThreadPriority priority)
+{
+	TRAP_IGNORE(mSession.SetThreadPriorityL(threadId, priority));
+}
+
+QList<MemSpyKernelObjectType*> EngineWrapper::getKernelObjectTypes()
+{
+	QList<MemSpyKernelObjectType*> result;
+		
+	RArray<CMemSpyApiKernelObject*> types;
+	qt_symbian_throwIfError(mSession.GetKernelObjects(types));
+	
+	for(TInt i=0; i<types.Count(); i++)
+		result.append(new MemSpyKernelObjectType(types[i]));
+	
+	return result;
+}
+
+QList<MemSpyKernelObject*> EngineWrapper::getKernelObjects(int type)
+{
+	QList<MemSpyKernelObject*> result;
+		
+	RArray<CMemSpyApiKernelObjectItem*> objects;
+	qt_symbian_throwIfError(mSession.GetKernelObjectItems(objects, 
+			static_cast<TMemSpyDriverContainerType>(type)));
+	
+	for (TInt i=0; i<objects.Count(); i++)
+		result.append(new MemSpyKernelObject(objects[i]));
+	
+	return result;
+}
+
+QList<MemSpyServer*> EngineWrapper::getServers()
+{
+    QList<MemSpyServer*> result;
+        
+    RArray<CMemSpyApiServer*> proc;
+    
+    QT_TRAP_THROWING(mSession.GetServersL(proc));
+    
+    for (TInt i=0; i<proc.Count(); i++)
+        result.append(new MemSpyServer(proc[i]));
+    
+    return result;
+}
+
+QList<MemSpyEComCategory*> EngineWrapper::getEComCategories()
+{
+    QList<MemSpyEComCategory*> result;
+        
+    RArray<CMemSpyApiEComCategory*> cat;
+    
+    QT_TRAP_THROWING(mSession.GetEComCategoriesL(cat));
+    
+    for (TInt i=0; i<cat.Count(); i++)
+        result.append(new MemSpyEComCategory(cat[i]));
+    
+    return result;
+}
+
+QList<MemSpyEComInterface*> EngineWrapper::getEComInterfaces(int categoryId)
+{
+    QList<MemSpyEComInterface*> result;
+            
+    RArray<CMemSpyApiEComInterface*> interfaces;
+    
+    QT_TRAP_THROWING(mSession.GetEComInterfacesL(TUid::Uid(categoryId), interfaces));
+    
+    for (TInt i=0; i<interfaces.Count(); i++)
+        result.append(new MemSpyEComInterface(interfaces[i]));
+    
+    return result;
+}
+
+QList<MemSpyEComImplementation*> EngineWrapper::getEComImplementations(int interfaceId)
+{
+    QList<MemSpyEComImplementation*> result;
+                
+    RArray<CMemSpyApiEComImplementation*> implementations;
+    
+    QT_TRAP_THROWING(mSession.GetEComImplementationsL(TUid::Uid(interfaceId), implementations));
+    
+    for (TInt i=0; i<implementations.Count(); i++)
+        result.append(new MemSpyEComImplementation(implementations[i]));
+    
+    return result;
+}
+
+
+MemSpyDwoTracker* EngineWrapper::createDeviceWideOperation(DeviceWideOperation operation)
+{
+	return new MemSpyDwoTracker(mSession, operation);
+}
+
+MemSpyKernelHeapDumpTracker* EngineWrapper::createKernelHeapDumpTracker()
+{
+	return new MemSpyKernelHeapDumpTracker(mSession);
+}
+
+MemSpySwmtDumpTracker* EngineWrapper::createSwmtDumpTracker()
+{
+	return new MemSpySwmtDumpTracker(mSession);
+}
+
+void EngineWrapper::setSwmtSettings(SwmtMode mode, const QVariantList& categories)
+{
+	int bits = 0;
+	bool heapDumps = false;
+	switch (mode)
+	{
+	case SwmtModeBasic:
+		bits = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap | 
+			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks |
+			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData |
+			TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory;
+		
+		break;
+		
+	case SwmtModeFull:
+		bits = TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryAll;
+		heapDumps = true;
+		
+		break;
+		
+	case SwmtModeCustom:
+		bits = 0;
+		// this needs to be in sync. with swmt view categories
+		TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerCategories cats[] = {
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache,
+            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap,
+            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive,
+            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks,
+            //TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory,
+            TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups
+		};
+
+		foreach (const QVariant& bit, categories)
+			bits |= cats[bit.toInt()];
+		
+		break;
+	}
+	
+	TRAP_IGNORE(mSession.SetSwmtCategoriesL(bits));
+	TRAP_IGNORE(mSession.SetSwmtHeapDumpsEnabledL(heapDumps));
+}
+
+bool EngineWrapper::isSwmtRunning()
+{
+	return mSwmtRunning;
+}
+	
+void EngineWrapper::startSwmt(int period)
+{
+	mSwmtRunning = true;
+	updateOutputSettings();
+	TRAP_IGNORE(mSession.StartSwmtTimerL(period));
+}
+
+void EngineWrapper::stopSwmt()
+{
+	mSwmtRunning = false;
+	TRAP_IGNORE(mSession.StopSwmtTimerL());
+}
+
+void EngineWrapper::forceSwmtDump()
+{
+	updateOutputSettings();	
+	TRAP_IGNORE(mSession.ForceSwmtUpdateL());
+}
+
+void EngineWrapper::outputKernelHeapData()
+{
+	updateOutputSettings();
+	TRAP_IGNORE(mSession.OutputKernelHeapDataL());
+}
+
+int EngineWrapper::outputThreadHeapData(const QString& filter)
+{
+	TPtrC customFilterDesc(static_cast<const TUint16*>(filter.utf16()), filter.length());
+	
+	TRAPD(err, mSession.OutputThreadHeapDataL(customFilterDesc));
+	
+	return err;
+}
+
+void EngineWrapper::updateOutputSettings()
+{
+	switch (mSettings.outputMode()) {
+		case OutputModeTrace:
+			TRAP_IGNORE(mSession.SwitchOutputToTraceL());
+			break;
+		
+		case OutputModeFile:
+		
+			if (mSettings.outputPath().isEmpty()) {
+				TRAP_IGNORE(mSession.SwitchOutputToFileL(KNullDesC));
+			
+			} else {
+				
+				QString root = mSettings.outputPath();
+				TPtrC rootDesc (static_cast<const TUint16*>(root.utf16()), root.length());
+			
+				TRAP_IGNORE(mSession.SwitchOutputToFileL(rootDesc));
+			}
+	
+	}
+}
+
+void EngineWrapper::killProcess(ProcessId process)
+{
+    TRAP_IGNORE(mSession.EndProcessL(process, EKill));
+}
+    
+void EngineWrapper::panicProcess(ProcessId process)
+{
+    TRAP_IGNORE(mSession.EndProcessL(process, EPanic));
+}
+
+void EngineWrapper::terminateProcess(ProcessId process)
+{
+    TRAP_IGNORE(mSession.EndProcessL(process, ETerminate));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/main.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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 <HbApplication>
+#include <QMessageBox>
+#include <HbMainWindow>
+
+#include "enginewrapper.h"
+#include "memspyview.h"
+#include "memspyprocessview.h"
+#include "viewmanager.h"
+
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+	
+    EngineWrapper engine;
+    if (!engine.initialize()) {
+		QMessageBox::critical(0, "Error", "Engine failed to initialize. Closing.");
+		return 1;
+    }
+        
+    HbMainWindow window;
+    ViewManager viewManager(window, engine);
+    viewManager.showView(MainView);
+	
+    window.show();
+	return app.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyecomcategoryview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,89 @@
+/*
+ * 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 "memspyecomcategoryview.h"
+#include "viewmanager.h"
+
+MemSpyEComCategoryModel::MemSpyEComCategoryModel(EngineWrapper &engine, QObject *parent) :
+    QAbstractListModel(parent),
+    mEngine(engine),
+    mData(engine.getEComCategories())
+{
+}
+
+MemSpyEComCategoryModel::~MemSpyEComCategoryModel()
+{
+    qDeleteAll(mData);
+}
+    
+int MemSpyEComCategoryModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mData.count();
+}
+    
+QVariant MemSpyEComCategoryModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole) {
+        const MemSpyEComCategory* cat = mData.at(index.row());
+        
+        QStringList lines;
+        lines << cat->name();
+        lines << QString("%1 interface(s)").arg(cat->interfaceCount());
+        
+        return lines;
+    }
+    
+    if (role == Qt::UserRole)
+        return mData.at(index.row())->id();
+    
+    return QVariant();
+}
+
+void MemSpyEComCategoryModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyEComCategory*> data = mEngine.getEComCategories();
+    qDeleteAll(mData);
+    mData = data;
+    endResetModel();
+}
+    
+
+void MemSpyEComCategoryView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("ECom Categories"));
+    MemSpyView::initialize(params);
+    
+    mModel = new MemSpyEComCategoryModel(mEngine, this);
+    mListView.setModel(mModel);
+    
+    connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyEComCategoryView::itemClicked(const QModelIndex& index)
+{
+    QVariantMap map;
+    map.insert("pid", index.data(Qt::UserRole));
+    map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
+    mViewManager.showView(EComInterfaceView, map);
+}
+
+void MemSpyEComCategoryView::refresh()
+{ 
+    mModel->refresh(); 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyecomimplementationdetailview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,58 @@
+/*
+ * 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 "memspyecomimplementationdetailview.h"
+#include "viewmanager.h"
+
+MemSpyEComImplementationDetailModel::MemSpyEComImplementationDetailModel(MemSpyEComImplementation* impl, QObject *parent) :
+    QAbstractListModel(parent)
+{
+    mData << (QStringList() << tr("Impl. Uid") << QString("0x%1").arg(impl->id(), 0, 16));
+    mData << (QStringList() << tr("Display Name") << impl->name());
+    mData << (QStringList() << tr("Opaque Data") << impl->opaqueData());
+    mData << (QStringList() << tr("Data Type") << impl->dataType());
+    mData << (QStringList() << tr("Drive") << impl->drive());
+    mData << (QStringList() << tr("Is Disabled") << (impl->disabled() ? tr("Yes") : tr("No")));
+    mData << (QStringList() << tr("ROM-Only") << (impl->romOnly() ? tr("Yes") : tr("No")));
+    mData << (QStringList() << tr("ROM-Based") << (impl->romBased() ? tr("Yes") : tr("No")));
+}
+    
+int MemSpyEComImplementationDetailModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mData.count();
+}
+    
+QVariant MemSpyEComImplementationDetailModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole)
+        return mData.at(index.row());
+    
+    return QVariant();
+}    
+
+void MemSpyEComImplementationDetailView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("ECom Implementation Detail"));
+    MemSpyView::initialize(params);
+    
+    MemSpyEComImplementation* implementation = static_cast<MemSpyEComImplementation*>(
+            qVariantValue<void*>(params["implementation"]));
+    
+    mModel = new MemSpyEComImplementationDetailModel(implementation);
+    mListView.setModel(mModel);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyecomimplementationview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,93 @@
+/*
+ * 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 "memspyecomimplementationview.h"
+#include "viewmanager.h"
+
+MemSpyEComImplementationModel::MemSpyEComImplementationModel(EngineWrapper &engine, int interfaceId, QObject *parent) :
+    QAbstractListModel(parent),
+    mInterfaceId(interfaceId),
+    mEngine(engine),
+    mData(engine.getEComImplementations(interfaceId))
+{
+}
+
+MemSpyEComImplementationModel::~MemSpyEComImplementationModel()
+{
+    qDeleteAll(mData);
+}
+    
+int MemSpyEComImplementationModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mData.count();
+}
+    
+QVariant MemSpyEComImplementationModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole) {
+        const MemSpyEComImplementation* impl = mData.at(index.row());
+        
+        QStringList lines;
+        lines << QString("0x%1").arg(impl->id(), 0, 16);
+        lines << impl->name();
+        
+        return lines;
+    }
+    
+    if (role == Qt::UserRole)
+        return qVariantFromValue<void*>(mData.at(index.row()));
+    
+    return QVariant();
+}
+
+void MemSpyEComImplementationModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyEComImplementation*> data = mEngine.getEComImplementations(mInterfaceId);
+    qDeleteAll(mData);
+    mData = data;
+    endResetModel();
+}
+    
+
+void MemSpyEComImplementationView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("ECom Implementations"));
+    
+    mParentId = params["pid"].toInt();    
+    mParentName = params["pname"].toString();
+        
+    MemSpyView::initialize(params);
+    
+    mModel = new MemSpyEComImplementationModel(mEngine, mParentId, this);
+    mListView.setModel(mModel);
+    
+    connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyEComImplementationView::itemClicked(const QModelIndex& index)
+{
+    QVariantMap map;
+    map.insert("implementation", index.data(Qt::UserRole));
+    mViewManager.showView(EComImplementationDetailView, map);
+}
+
+void MemSpyEComImplementationView::refresh()
+{ 
+    mModel->refresh(); 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyecominterfaceview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,94 @@
+/*
+ * 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 "memspyecominterfaceview.h"
+#include "viewmanager.h"
+
+MemSpyEComInterfaceModel::MemSpyEComInterfaceModel(EngineWrapper &engine, int categoryId, QObject *parent) :
+    QAbstractListModel(parent),
+    mCategoryId(categoryId),
+    mEngine(engine),
+    mData(engine.getEComInterfaces(categoryId))
+{
+}
+
+MemSpyEComInterfaceModel::~MemSpyEComInterfaceModel()
+{
+    qDeleteAll(mData);
+}
+    
+int MemSpyEComInterfaceModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mData.count();
+}
+    
+QVariant MemSpyEComInterfaceModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole) {
+        const MemSpyEComInterface* interface = mData.at(index.row());
+        
+        QStringList lines;
+        lines << interface->name();
+        lines << QString("%1 implementation(s)").arg(interface->implementationCount());
+        
+        return lines;
+    }
+    
+    if (role == Qt::UserRole)
+        return mData.at(index.row())->id();
+    
+    return QVariant();
+}
+
+void MemSpyEComInterfaceModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyEComInterface*> data = mEngine.getEComInterfaces(mCategoryId);
+    qDeleteAll(mData);
+    mData = data;
+    endResetModel();
+}
+    
+
+void MemSpyEComInterfaceView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("ECom Interfaces"));
+    
+    mParentId = params["pid"].toInt();    
+    mParentName = params["pname"].toString();
+        
+    MemSpyView::initialize(params);
+    
+    mModel = new MemSpyEComInterfaceModel(mEngine, mParentId, this);
+    mListView.setModel(mModel);
+    
+    connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyEComInterfaceView::itemClicked(const QModelIndex& index)
+{
+    QVariantMap map;
+    map.insert("pid", index.data(Qt::UserRole));
+    map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
+    mViewManager.showView(EComImplementationView, map);
+}
+
+void MemSpyEComInterfaceView::refresh()
+{ 
+    mModel->refresh(); 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyheapdumpsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,184 @@
+/*
+ * 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 <HbToolBar>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbProgressDialog>
+#include <HbMessageBox>
+#include <HbLabel>
+
+#include "memspyheapdumpsview.h"
+#include "enginewrapper.h"
+
+const QStringList MODE_ITEMS = QStringList() << 
+	MemSpyHeapDumpsView::tr("Kernel") << 
+	MemSpyHeapDumpsView::tr("User") << 
+	MemSpyHeapDumpsView::tr("Both");
+	
+MemSpyHeapDumpsView::MemSpyHeapDumpsView(EngineWrapper &engine, ViewManager &viewManager) : 
+	MemSpyView(engine, viewManager),
+	mModel(0),
+	mModeItem(0),
+	mFilterItem(0),
+	mDwoProgressDialog(0)
+{
+}
+
+MemSpyHeapDumpsView::~MemSpyHeapDumpsView()
+{
+	delete mDwoProgressDialog;
+}
+
+void MemSpyHeapDumpsView::initialize(const QVariantMap& params)
+{
+	setTitle(tr("Heap Dumps"));
+	
+	MemSpyView::initialize(params);
+}
+
+HbToolBar* MemSpyHeapDumpsView::createToolBar()
+{
+	HbToolBar* toolBar = new HbToolBar();
+	toolBar->addAction(tr("Dump Now"), this, SLOT(dump()));
+	return toolBar;
+}
+
+HbWidget* MemSpyHeapDumpsView::createCentralWidget()
+{
+	mModel = new HbDataFormModel(this);
+	
+	//TODO: uncomment after kernel heap dumps are implemented 
+//	mModeItem = mModel->appendDataFormItem(
+//		HbDataFormModelItem::ComboBoxItem, tr("Heap Dump"));
+//	mModeItem->setContentWidgetData("items", MODE_ITEMS);
+//	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().heapDumpsMode());
+//	modeChanged(mEngine.settings().heapDumpsMode());
+	
+	//TODO: remove after kernel heap dumps are implemented
+	createFilterItem();
+	
+	HbDataForm* form = new HbDataForm(this);
+	form->setModel(mModel);
+	
+	//TODO: uncomment after kernel heap dumps are implemented
+//	form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int)));
+	
+	return form;
+}
+
+void MemSpyHeapDumpsView::modeChanged(int mode)
+{
+	if (mode == HeapDumpsModeKernel && mFilterItem)
+		removeFilterItem();
+	else if (mode != HeapDumpsModeKernel && !mFilterItem)
+		createFilterItem();
+}
+
+void MemSpyHeapDumpsView::createFilterItem()
+{
+	mFilterItem = mModel->appendDataFormItem(
+			HbDataFormModelItem::TextItem, tr("Filter"));
+}
+
+void MemSpyHeapDumpsView::removeFilterItem()
+{
+	mModel->removeItem(mFilterItem);
+	mFilterItem = 0;
+}
+
+void MemSpyHeapDumpsView::dump()
+{
+    mEngine.updateOutputSettings();
+    
+	HeapDumpsMode mode = HeapDumpsModeUser;
+	//TODO: uncomment after kernel heap dumps are implemented 
+	//static_cast<HeapDumpsMode>(mModeItem->contentWidgetData("currentIndex").toInt());
+	
+	// save settings
+	//TODO: uncomment after kernel heap dumps are implemented
+	//mEngine.settings().setHeapDumpsMode(mode);
+
+	if (mode == HeapDumpsModeKernel || mode == HeapDumpsModeBoth) {
+		// dump kernel heap
+		mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+		mDwoProgressDialog->setText(tr("Please wait..."));
+		mDwoProgressDialog->show();
+		
+		MemSpyKernelHeapDumpTracker* tracker = mEngine.createKernelHeapDumpTracker();
+		connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
+		tracker->start();
+	}
+	
+	if (mode == HeapDumpsModeUser || mode == HeapDumpsModeBoth) {
+		// dump user heap
+		
+		QString filter = mFilterItem->contentWidgetData("text").toString();
+		if (!filter.isEmpty()) {
+		    
+			int errorCode = mEngine.outputThreadHeapData(filter);
+            if (errorCode == KErrNotFound) {
+                HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+                messageBox->setText(tr("No thread matches your filter"));
+                HbLabel *header = new HbLabel(tr("No such thread"), messageBox);
+                messageBox->setHeadingWidget(header);
+                messageBox->setAttribute(Qt::WA_DeleteOnClose);
+                messageBox->setTimeout(HbPopup::StandardTimeout);
+                messageBox->open();
+            }
+			    
+			
+		} else {
+			mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::ProgressDialog);
+			mDwoProgressDialog->setMinimum(0);
+			mDwoProgressDialog->setMaximum(100);
+			mDwoProgressDialog->show();
+			
+			MemSpyDwoTracker* tracker = mEngine.createDeviceWideOperation(OutputHeapData);
+			connect(tracker, SIGNAL(progress(int,QString)), this, SLOT(updateDwoProgress(int,QString)));
+			connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
+			connect(mDwoProgressDialog, SIGNAL(cancelled()), tracker, SLOT(cancel()));
+			tracker->start();
+		}
+	}
+}
+
+void MemSpyHeapDumpsView::updateDwoProgress(int progress, const QString& processName)
+{
+	mDwoProgressDialog->setText(processName);
+	mDwoProgressDialog->setProgressValue(progress);
+}
+
+void MemSpyHeapDumpsView::asyncOperationFinished(int errorCode)
+{
+	mDwoProgressDialog->hide();
+	delete mDwoProgressDialog;
+	mDwoProgressDialog = 0;
+	
+	delete sender();    
+	
+	if (errorCode != KErrNone && errorCode != KErrCancel) {
+	    HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
+        messageBox->setText(tr("An error occured during the operation. Error code: %1").arg(errorCode));
+        HbLabel *header = new HbLabel(tr("Error"), messageBox);
+        messageBox->setHeadingWidget(header);
+        messageBox->setAttribute(Qt::WA_DeleteOnClose);
+        messageBox->setTimeout(HbPopup::StandardTimeout);
+        messageBox->open();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspykernelobjectdetailview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,67 @@
+/*
+ * 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 "memspykernelobjectdetailview.h"
+
+MemSpyKernelObjectDetailModel::MemSpyKernelObjectDetailModel(const QStringList& details, QObject *parent) :
+    QAbstractListModel(parent),
+    mDetails(details)
+{
+
+}
+    
+int MemSpyKernelObjectDetailModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mDetails.count();
+}
+    
+QVariant MemSpyKernelObjectDetailModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole) {
+        
+        // convert from semicolon delimited line to two lines
+        return mDetails.at(index.row()).split(": ");
+    }
+    
+    return QVariant();
+}
+
+
+void MemSpyKernelObjectDetailView::initialize(const QVariantMap& params)
+{
+	setTitle("Details");
+	
+	mTypeName = params["typeName"].toString();
+	mObjectName = params["objectName"].toString();
+	MemSpyView::initialize(params);
+		
+	QStringList items = params.value("details").toStringList();
+	mListView.setModel(new MemSpyKernelObjectDetailModel(items, this));
+}
+
+bool MemSpyKernelObjectDetailView::isBreadCrumbVisible() const
+{
+    return true;
+}
+            
+QString MemSpyKernelObjectDetailView::getBreadCrumbText() const
+{
+    return tr("Kernel Objects > %1 > %2").arg(mTypeName).arg(mObjectName);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspykernelobjecttypeview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,92 @@
+/*
+ * 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 "memspykernelobjecttypeview.h"
+#include "viewmanager.h"
+
+MemSpyKernelObjectTypeModel::MemSpyKernelObjectTypeModel(EngineWrapper &engine, QObject *parent) :
+	QAbstractListModel(parent),
+	mObjectTypes(engine.getKernelObjectTypes())
+{
+    mKernelObjectNames << "Threads" << "Processes" << "Chunks" << "Libraries" <<
+        "Semaphores" << "Mutexes" << "Timers" << "Servers" << "Sessions" << "Logical Devices" <<
+        "Physical Devices" << "Logical Channels" << "Change Notifiers" << "Undertakers" <<
+        "Message Queues" << "Property Refs." << "Conditional Vars.";
+}
+
+MemSpyKernelObjectTypeModel::~MemSpyKernelObjectTypeModel()
+{
+	qDeleteAll(mObjectTypes);
+}
+	
+int MemSpyKernelObjectTypeModel::rowCount(const QModelIndex &parent) const
+{
+	Q_UNUSED(parent);
+	return mObjectTypes.count();
+}
+	
+QVariant MemSpyKernelObjectTypeModel::data(const QModelIndex &index, int role) const
+{
+	if (role == Qt::DisplayRole) {
+		QStringList lines;
+		lines << mKernelObjectNames.at(index.row());
+		lines << QString("%1, %2").
+			arg(tr("%n item(s)", "", mObjectTypes.at(index.row())->count())).
+			arg(formatSize(mObjectTypes.at(index.row())->size()));
+		
+		return lines;
+	}
+	
+	if (role == Qt::UserRole)
+		return mObjectTypes.at(index.row())->id();
+	
+	return QVariant();
+}
+
+QString MemSpyKernelObjectTypeModel::formatSize(qint64 size) const
+{
+	// If < 1000K
+	if  (size < 1024000)
+		return QString("%1K").arg(size ? qBound<int>(1, (size + 512) >> 10, 999) : 0);
+	
+	// larger than 1M
+	double sizeInM = size / 1048576.;
+	return sizeInM >= 1000 ?
+		QString("%1G").arg(qMax<double>(1, sizeInM / 1024), 0, 'f', 1) :
+		QString("%1M").arg(qBound<double>(1, sizeInM, 999.9), 0, 'f', 1);
+}
+
+void MemSpyKernelObjectTypeView::initialize(const QVariantMap& params)
+{
+	setTitle(tr("Kernel Objects"));
+		
+	MemSpyView::initialize(params);
+			
+	mListView.setModel(new MemSpyKernelObjectTypeModel(mEngine, this));
+	
+	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyKernelObjectTypeView::itemClicked(const QModelIndex& index)
+{
+	QVariantMap map;
+	map.insert("type", index.row());
+    mViewManager.showView(KernelObjectView, map);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspykernelobjectview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,310 @@
+/*
+ * 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;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspylistview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,23 @@
+/*
+ * 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 "memspylistview.h"
+
+HbWidget* MemSpyListView::createCentralWidget()
+{
+	return &mListView;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspymainview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,52 @@
+/*
+ * 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 "memspymainview.h"
+#include "viewmanager.h"
+
+#include <QStringListModel>
+#include <QDebug>
+
+void MemSpyMainView::initialize(const QVariantMap& params)
+{
+	setTitle("MemSpy");
+	
+	MemSpyView::initialize(params);
+	
+	QStringList items = QStringList() 
+			<< tr("Processes & Threads") 
+			<< tr("Kernel Objects")
+			<< tr("Tracking")
+            << tr("Servers")
+            << tr("ECom");
+	mListView.setModel(new QStringListModel(items, this));
+    
+	QObject::connect(&mListView, SIGNAL(released(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyMainView::itemClicked(const QModelIndex& index)
+{
+	Q_UNUSED(index);
+	ViewIndex indexes[] = { ProcessView, KernelObjectTypeView, TrackingView, ServerView, EComCategoryView };
+    mViewManager.showView(indexes[index.row()]);
+}
+
+bool MemSpyMainView::isBreadCrumbVisible() const
+{
+	return false;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyprocessview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* 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 "memspyprocessview.h"
+
+#include <QVariantMap>
+#include <HbAbstractViewItem>
+#include <HbMenu>
+
+#include "viewmanager.h"
+
+MemSpyProcessModel::MemSpyProcessModel(EngineWrapper &engine, QObject *parent) :
+	QAbstractListModel(parent),
+	mEngine(engine),
+	mProcesses(engine.getProcesses())
+{
+    mPriorityMap.insert(EPriorityLow, tr("[L]"));
+    mPriorityMap.insert(EPriorityBackground, tr("[B]"));
+    mPriorityMap.insert(EPriorityForeground, tr("[F]"));
+    mPriorityMap.insert(EPriorityHigh, tr("[H]"));
+    mPriorityMap.insert(EPriorityWindowServer, tr("[WS]"));
+    mPriorityMap.insert(EPriorityFileServer, tr("[FS]"));
+    mPriorityMap.insert(EPriorityRealTimeServer, tr("[RTS]"));
+    mPriorityMap.insert(EPrioritySupervisor, tr("[SUP]"));
+}
+
+MemSpyProcessModel::~MemSpyProcessModel()
+{
+	qDeleteAll(mProcesses);
+}
+	
+int MemSpyProcessModel::rowCount(const QModelIndex &parent) const
+{
+	Q_UNUSED(parent);
+	return mProcesses.count();
+}
+	
+QVariant MemSpyProcessModel::data(const QModelIndex &index, int role) const
+{
+	if (role == Qt::DisplayRole) {
+	    const MemSpyProcess* process = mProcesses.at(index.row());
+	    
+		QStringList lines;
+		lines << process->name();
+		
+		lines << (process->isDead() ? 
+		    process->exitInfo() :
+		    QString("%1, %2 thr, %3").
+                arg(process->sid(), 0, 16).
+                arg(process->threadCount()).
+                arg(mPriorityMap.value(process->priority(), tr("[?]"))));
+		
+		return lines;
+	}
+	
+	if (role == Qt::UserRole)
+		return mProcesses.at(index.row())->id();
+	
+	return QVariant();
+}
+
+void MemSpyProcessModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyProcess*> data = mEngine.getProcesses();
+    qDeleteAll(mProcesses);
+    mProcesses = data;
+    endResetModel();
+}
+	
+
+void MemSpyProcessView::initialize(const QVariantMap& params)
+{
+	setTitle(tr("Processes"));
+	MemSpyView::initialize(params);
+	
+	mModel = new MemSpyProcessModel(mEngine, this);
+	mListView.setModel(mModel);
+	
+	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
+	        this, SLOT(catchLongPress(HbAbstractViewItem*,QPointF)));
+	
+	mContextMenu = new HbMenu;
+    mEndMenu = mContextMenu->addMenu("End");
+    
+    mEndMenu->addAction(tr("Kill"), this, SLOT(kill()));
+    mEndMenu->addAction(tr("Panic"), this, SLOT(panic()));
+    mEndMenu->addAction(tr("Terminate"), this, SLOT(terminate()));
+}
+
+void MemSpyProcessView::itemClicked(const QModelIndex& index)
+{
+	QVariantMap map;
+	map.insert("pid", index.data(Qt::UserRole));
+	map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
+    mViewManager.showView(ThreadView, map);
+}
+
+void MemSpyProcessView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
+{
+    mProcessId = qVariantValue<ProcessId>(item->modelIndex().data(Qt::UserRole));
+    mContextMenu->setPreferredPos(coords);
+    mContextMenu->open();
+}
+
+void MemSpyProcessView::kill()
+{
+    mEngine.killProcess(mProcessId);
+    refresh();
+}
+
+void MemSpyProcessView::panic()
+{
+    mEngine.panicProcess(mProcessId);
+    refresh();
+}
+
+void MemSpyProcessView::terminate()
+{
+    mEngine.terminateProcess(mProcessId);
+    refresh();
+}
+
+void MemSpyProcessView::refresh()
+{ 
+    mModel->refresh(); 
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyserverview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,89 @@
+/*
+ * 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 "memspyserverview.h"
+#include "viewmanager.h"
+
+MemSpyServerModel::MemSpyServerModel(EngineWrapper &engine, QObject *parent) :
+    QAbstractListModel(parent),
+    mEngine(engine),
+    mServers(engine.getServers())
+{
+}
+
+MemSpyServerModel::~MemSpyServerModel()
+{
+    qDeleteAll(mServers);
+}
+    
+int MemSpyServerModel::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return mServers.count();
+}
+    
+QVariant MemSpyServerModel::data(const QModelIndex &index, int role) const
+{
+    if (role == Qt::DisplayRole) {
+        const MemSpyServer* server = mServers.at(index.row());
+        
+        QStringList lines;
+        lines << server->name();
+        lines << QString("%1 session(s)").arg(server->sessionCount());
+        
+        return lines;
+    }
+    
+    if (role == Qt::UserRole)
+        return mServers.at(index.row())->id();
+    
+    return QVariant();
+}
+
+void MemSpyServerModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyServer*> data = mEngine.getServers();
+    qDeleteAll(mServers);
+    mServers = data;
+    endResetModel();
+}
+    
+
+void MemSpyServerView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("Servers"));
+    MemSpyView::initialize(params);
+    
+    mModel = new MemSpyServerModel(mEngine, this);
+    mListView.setModel(mModel);
+    
+    connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyServerView::itemClicked(const QModelIndex& index)
+{
+    QVariantMap map;
+    map.insert("pid", index.data(Qt::UserRole));
+    map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
+    mViewManager.showView(ThreadView, map);
+}
+
+void MemSpyServerView::refresh()
+{ 
+    mModel->refresh(); 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspysettingsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,127 @@
+/*
+ * 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 <HbToolBar>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbProgressDialog>
+
+#include "memspysettingsview.h"
+#include "enginewrapper.h"
+
+const QStringList MODE_ITEMS = QStringList() << 
+	MemSpySettingsView::tr("RDebug") << 
+	MemSpySettingsView::tr("File");
+	
+MemSpySettingsView::MemSpySettingsView(EngineWrapper &engine) :
+	mForm(new HbDataForm(this)),
+	mModel(0),
+	mModeItem(0),
+	mPathItem(0),
+	mCustomPathItem(0),
+	mEngine(engine)
+{
+	setTitle(tr("Settings"));
+	
+	toolBar()->addAction(tr("OK"), this, SLOT(accept()));
+	toolBar()->addAction(tr("Cancel"), this, SLOT(reject()));
+	
+	mModel = new HbDataFormModel(this);
+		
+	mModeItem = mModel->appendDataFormItem(
+		HbDataFormModelItem::ComboBoxItem, tr("Output"));
+	mModeItem->setContentWidgetData("items", MODE_ITEMS);
+	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().outputMode());
+	
+	updateModel();
+		
+	
+	mForm->setModel(mModel);
+	mForm->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(updateModel()));
+	setWidget(mForm);
+	
+	// change navigation action
+	HbAction* action = new HbAction(Hb::BackNaviAction, this);
+	connect(action, SIGNAL(triggered()), this, SLOT(reject()));
+	setNavigationAction(action);
+}
+
+MemSpySettingsView::~MemSpySettingsView()
+{
+}
+
+void MemSpySettingsView::updateModel()
+{
+	OutputMode mode = static_cast<OutputMode>(mModeItem->contentWidgetData("currentIndex").toInt());
+	if (mode == OutputModeTrace) {
+		// remove both path item and custom path item
+		if (mPathItem)
+			mModel->removeItem(mPathItem);
+		if (mCustomPathItem)
+			mModel->removeItem(mCustomPathItem);
+		
+		mPathItem = mCustomPathItem = 0;
+	} else if (mode == OutputModeFile) {
+		if (!mPathItem) {
+			// create path item
+			mPathItem = mModel->appendDataFormItem(
+					HbDataFormModelItem::CheckBoxItem, tr("Path"));
+			mPathItem->setContentWidgetData("text", tr("Use Default Path (\\MemSpy)"));
+			mPathItem->setContentWidgetData("checkState", 
+					mEngine.settings().outputPath().isEmpty() ? Qt::Checked : Qt::Unchecked);
+			
+			mForm->addConnection(mPathItem, SIGNAL(stateChanged(int)), 
+					this, SLOT(updateModel()));
+		}
+		
+		if (mPathItem->contentWidgetData("checkState").toInt() == Qt::Unchecked && !mCustomPathItem) {
+			// create custom path item
+			mCustomPathItem = mModel->appendDataFormItem(
+					HbDataFormModelItem::TextItem, tr("Custom Path"));
+			mCustomPathItem->setContentWidgetData("text", 
+					mEngine.settings().outputPath().isEmpty() ? "\\MemSpy" : mEngine.settings().outputPath());
+		}
+		
+		if (mPathItem->contentWidgetData("checkState").toInt() == Qt::Checked && mCustomPathItem) {
+			// remove cusom path item
+			mModel->removeItem(mCustomPathItem);
+			mCustomPathItem = 0;
+		}
+	}
+}
+
+void MemSpySettingsView::accept()
+{
+	OutputMode mode = static_cast<OutputMode>(mModeItem->contentWidgetData("currentIndex").toInt());
+	
+	mEngine.settings().setOutputMode(mode);
+	
+	if (mode == OutputModeFile) {
+		QString path = mPathItem->contentWidgetData("checkState").toInt() == Qt::Checked ? 
+				"" :
+				mCustomPathItem->contentWidgetData("text").toString();
+		mEngine.settings().setOutputPath(path);
+	}
+	emit finished(true);
+}
+
+void MemSpySettingsView::reject()
+{
+	emit finished(false);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyswmtview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,181 @@
+/*
+ * 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 <HbToolBar>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbProgressDialog>
+
+#include "memspyswmtview.h"
+#include "enginewrapper.h"
+
+const QStringList MODE_ITEMS = QStringList() << 
+	MemSpySwmtView::tr("Basic") << 
+	MemSpySwmtView::tr("Full") << 
+	MemSpySwmtView::tr("Custom");
+ 
+const QStringList CATEGORIES_ITEMS = QStringList() <<
+	MemSpySwmtView::tr("FileServer Cache") <<
+	//MemSpySwmtView::tr("Bitmap Handles") <<
+	MemSpySwmtView::tr("User Heap") <<
+	//MemSpySwmtView::tr("Kernel Heap") <<
+	MemSpySwmtView::tr("Local Chunks") <<
+	MemSpySwmtView::tr("Global Chunks") <<
+	MemSpySwmtView::tr("RAM Drive") <<
+	//MemSpySwmtView::tr("User Stacks") <<
+	//MemSpySwmtView::tr("Global Data") <<
+	MemSpySwmtView::tr("RAM-loaded Code") <<
+	MemSpySwmtView::tr("Kernel Handles") <<
+	MemSpySwmtView::tr("Open Files") <<
+	MemSpySwmtView::tr("Disk Usage") <<
+	MemSpySwmtView::tr("System Memory") <<
+	MemSpySwmtView::tr("Windows Groups");
+	
+MemSpySwmtView::MemSpySwmtView(EngineWrapper &engine, ViewManager &viewManager) : 
+	MemSpyView(engine, viewManager), 
+	mToggleTimerAction(0),
+	mCategoriesItem(0),
+	mProgressDialog(0)
+{
+}
+
+MemSpySwmtView::~MemSpySwmtView()
+{
+}
+
+void MemSpySwmtView::initialize(const QVariantMap& params)
+{
+	setTitle(tr("SWMT"));
+	
+	MemSpyView::initialize(params);
+}
+
+HbToolBar* MemSpySwmtView::createToolBar()
+{
+	HbToolBar* toolBar = new HbToolBar();
+	mToggleTimerAction = toolBar->addAction("", this, SLOT(toggleTimer()));
+	toolBar->addAction(tr("Dump Now"), this, SLOT(forceDump()));
+	
+	updateTimerAction(mEngine.isSwmtRunning());
+	
+	return toolBar;
+}
+
+HbWidget* MemSpySwmtView::createCentralWidget()
+{
+	mModel = new HbDataFormModel(this);
+	
+	mTimerItem = mModel->appendDataFormItem(
+			HbDataFormModelItem::TextItem, tr("Timer (sec.)"));
+	mTimerItem->setContentWidgetData("maxLength", 2);
+	mTimerItem->setContentWidgetData("text", mEngine.settings().swmtTimerPeriod());
+	
+	mModeItem = mModel->appendDataFormItem(
+			HbDataFormModelItem::ComboBoxItem, tr("Tracking mode"));
+	mModeItem->setContentWidgetData("items", MODE_ITEMS);
+	mModeItem->setContentWidgetData("currentIndex", mEngine.settings().swmtMode());
+	
+	modeChanged(mEngine.settings().swmtMode());
+	
+	HbDataForm* form = new HbDataForm(this);
+	form->setModel(mModel);
+	
+	form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int)));
+	
+	return form;
+}
+
+void MemSpySwmtView::updateTimerAction(bool isRunning)
+{
+	mToggleTimerAction->setText(isRunning ? tr("Stop Timer") : tr("Start Timer"));
+}
+
+void MemSpySwmtView::toggleTimer()
+{
+	bool wasRunning = mEngine.isSwmtRunning();
+	if (wasRunning)
+		mEngine.stopSwmt();
+	else
+	{
+		updateSettings();
+		mEngine.startSwmt(qBound(5, mTimerItem->contentWidgetData("text").toInt(), 60));
+	}
+	
+	updateTimerAction(!wasRunning);
+}
+
+void MemSpySwmtView::forceDump()
+{
+	updateSettings();
+	mEngine.updateOutputSettings();
+		
+	MemSpySwmtDumpTracker* tracker = mEngine.createSwmtDumpTracker();
+	connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
+	
+	mProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+	mProgressDialog->setText(tr("Please wait..."));
+	mProgressDialog->setPrimaryAction(0);
+	mProgressDialog->show();
+	
+	tracker->start();
+}
+
+void MemSpySwmtView::updateSettings()
+{
+	mEngine.settings().setSwmtTimerPeriod(mTimerItem->contentWidgetData("text").toInt());
+	mEngine.settings().setSwmtMode(static_cast<SwmtMode>(
+			mModeItem->contentWidgetData("currentIndex").toInt()));
+	if (mCategoriesItem)
+		mEngine.settings().setSwmtCategories(mCategoriesItem->contentWidgetData("selectedItems").toList());
+	
+	mEngine.setSwmtSettings(static_cast<SwmtMode>(mEngine.settings().swmtMode()), 
+		mEngine.settings().swmtCategories());
+}
+
+void MemSpySwmtView::modeChanged(int mode)
+{
+	if (mode != SwmtModeCustom && mCategoriesItem)
+		removeCategoriesItem();
+	else if (mode == SwmtModeCustom && !mCategoriesItem)
+		createCategoriesItem();
+}
+
+void MemSpySwmtView::asyncOperationFinished(int errorCode)
+{
+	Q_UNUSED(errorCode);
+		
+	mProgressDialog->hide();
+	delete mProgressDialog;
+	mProgressDialog = 0;
+	
+	delete sender();
+}
+
+void MemSpySwmtView::createCategoriesItem()
+{
+	mCategoriesItem = mModel->appendDataFormItem(
+			HbDataFormModelItem::MultiselectionItem, tr("Categories"));
+	mCategoriesItem->setContentWidgetData("items", CATEGORIES_ITEMS);
+	mCategoriesItem->setContentWidgetData("selectedItems", mEngine.settings().swmtCategories());
+}
+
+void MemSpySwmtView::removeCategoriesItem()
+{
+	mModel->removeItem(mCategoriesItem);
+	mCategoriesItem = 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspythreaddetailindexview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,132 @@
+/*
+ * 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 <QAction>
+#include <QStringListModel>
+#include <HbMenu>
+
+#include "memspythreaddetailindexview.h"
+#include "viewmanager.cpp"
+
+void MemSpyThreadDetailIndexView::initialize(const QVariantMap& params)
+{
+	setTitle(tr("Details"));
+	
+	mProcessName = params["pname"].toString();
+	mThreadName = params["tname"].toString();
+	
+	MemSpyView::initialize(params);
+	
+	mThreadId = qVariantValue<ThreadId>(params["tid"]);
+	
+	QStringList lines = QStringList() << tr("General") << tr("Heap") << tr("Stack") 
+			<< tr("Chunks") << tr("Code Segments") << tr("Open Files") << tr("Active Objects")
+			<< tr("Handles to other Threads") << tr("Handles to other Processes") 
+			<< tr("Servers Running in Thread") << tr("Client <-> Server connections")
+			<< tr("Semaphores") << tr("References this Thread") << tr("References this Process")
+			<< tr("Mutexes") << tr("Timers") << tr("Logical DD Channels") 
+			<< tr("Change Notifiers") << tr("Undertakers") << tr("Logical Device Drivers")
+			<< tr("Physical Device Drivers");
+	
+	mListView.setModel(new QStringListModel(lines, this));
+	
+	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+HbMenu* MemSpyThreadDetailIndexView::createToolMenu()
+{
+	HbMenu* menu = new HbMenu(tr("Thread"));
+	mPriorityMenu = menu->addMenu("Change Priority");
+	
+	mPriorityMenu->addAction(tr("Abs. Very Low"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Low Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Low"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Background Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Background"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Foreground Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Foreground"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. High Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. High"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 1"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 2"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 3"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 4"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 5"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
+	
+	return menu;
+}
+
+bool MemSpyThreadDetailIndexView::isBreadCrumbVisible() const
+{
+    return true;
+}
+
+QString MemSpyThreadDetailIndexView::getBreadCrumbText() const
+{
+    return tr("Processes > %1 > Threads > %2").arg(mProcessName).arg(mThreadName);
+}
+
+void MemSpyThreadDetailIndexView::changePriority()
+{
+	QAction *s = qobject_cast<QAction*>(sender());
+	int index = mPriorityMenu->actions().indexOf(s);
+	
+	ThreadPriority priorities[] = {
+		ThreadPriorityAbsoluteVeryLow,
+		ThreadPriorityAbsoluteLowNormal,
+		ThreadPriorityAbsoluteLow,
+		ThreadPriorityAbsoluteBackgroundNormal,
+		ThreadPriorityAbsoluteBackground,
+		ThreadPriorityAbsoluteForegroundNormal,
+		ThreadPriorityAbsoluteForeground,
+		ThreadPriorityAbsoluteHighNormal,
+		ThreadPriorityAbsoluteHigh,
+		ThreadPriorityAbsoluteRealTime1,
+		ThreadPriorityAbsoluteRealTime2,
+		ThreadPriorityAbsoluteRealTime3,
+		ThreadPriorityAbsoluteRealTime4,
+		ThreadPriorityAbsoluteRealTime5,
+		ThreadPriorityAbsoluteRealTime6,
+		ThreadPriorityAbsoluteRealTime7, 
+		ThreadPriorityAbsoluteRealTime8 };
+	
+	if (index >= 0)
+	    mEngine.setThreadPriority(mThreadId, priorities[index]);
+}
+
+void MemSpyThreadDetailIndexView::itemClicked(const QModelIndex& index)
+{
+	ThreadInfoType types[] = { ThreadInfoTypeGeneral, ThreadInfoTypeHeap, 
+			ThreadInfoTypeStack, ThreadInfoTypeChunk, ThreadInfoTypeCodeSeg, 
+			ThreadInfoTypeOpenFiles, ThreadInfoTypeActiveObjects, ThreadInfoTypeOwnedThreadHandles,
+			ThreadInfoTypeOwnedProcessHandles, ThreadInfoTypeServer, ThreadInfoTypeSession, 
+			ThreadInfoTypeSemaphore, ThreadInfoTypeOtherThreads, ThreadInfoTypeOtherProcesses,
+			ThreadInfoTypeMutex, ThreadInfoTypeTimer, ThreadInfoTypeChannel,
+			ThreadInfoTypeChangeNotifier, ThreadInfoTypeUndertaker,
+			ThreadInfoTypeLDD, ThreadInfoTypePDD };
+	
+	QVariantMap map;
+	map.insert("tid", mThreadId);
+	map.insert("type", types[index.row()]);
+	map.insert("pname", mProcessName);
+	map.insert("tname", mThreadName);
+	mViewManager.showView(ThreadDetailView, map);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspythreaddetailview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,110 @@
+/*
+ * 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 <QAction>
+#include <QStringListModel>
+#include <HbMenu>
+
+#include "memspythreaddetailview.h"
+
+MemSpyThreadDetailModel::MemSpyThreadDetailModel(EngineWrapper &engine, ThreadId threadId, ThreadInfoType type, QObject *parent) :
+	QAbstractListModel(parent),
+	mThreadInfo(engine.getThreadInfo(threadId, type))
+{
+}
+
+MemSpyThreadDetailModel::~MemSpyThreadDetailModel()
+{
+	qDeleteAll(mThreadInfo);
+}
+	
+int MemSpyThreadDetailModel::rowCount(const QModelIndex &parent) const
+{
+	Q_UNUSED(parent);
+	return qMax(mThreadInfo.count(), 1);
+}
+	
+QVariant MemSpyThreadDetailModel::data(const QModelIndex &index, int role) const
+{
+	if (role == Qt::DisplayRole) {
+	    
+	    if (mThreadInfo.count()) {
+            QStringList lines;
+            lines << mThreadInfo.at(index.row())->caption();
+            lines << mThreadInfo.at(index.row())->value();
+            return lines;
+	    }
+	    
+	    return tr("(no items found)");
+	}
+	
+	if (role == Qt::TextAlignmentRole && mThreadInfo.count() == 0) {
+	    
+	    return Qt::AlignHCenter;
+	}
+	
+	return QVariant();
+}
+
+void MemSpyThreadDetailView::initialize(const QVariantMap& params)
+{
+    mProcessName = params["pname"].toString();
+    mThreadName = params["tname"].toString();
+    
+    // TODO: Remove duplicates with memspythreaddetailindexview
+    QMap<int, QString> titleMap;
+    titleMap[ThreadInfoTypeGeneral] = tr("General");
+    titleMap[ThreadInfoTypeHeap] = tr("Heap");
+    titleMap[ThreadInfoTypeStack] = tr("Stack");
+    titleMap[ThreadInfoTypeChunk] = tr("Chunks");
+    titleMap[ThreadInfoTypeCodeSeg] = tr("Code Segments"); 
+    titleMap[ThreadInfoTypeOpenFiles] = tr("Open Files");
+    titleMap[ThreadInfoTypeActiveObjects] = tr("Active Objects");
+    titleMap[ThreadInfoTypeOwnedThreadHandles] = tr("Handles to other Threads");
+    titleMap[ThreadInfoTypeOwnedProcessHandles] = tr("Handles to other Processes");
+    titleMap[ThreadInfoTypeServer] = tr("Servers Running in Thread");
+    titleMap[ThreadInfoTypeSession] = tr("Client <-> Server connections");
+    titleMap[ThreadInfoTypeSemaphore] = tr("Semaphores");
+    titleMap[ThreadInfoTypeOtherThreads] = tr("References this Thread");
+    titleMap[ThreadInfoTypeOtherProcesses] = tr("References this Process");
+    titleMap[ThreadInfoTypeMutex] = tr("Mutexes");
+    titleMap[ThreadInfoTypeTimer] = tr("Timers");
+    titleMap[ThreadInfoTypeChannel] = tr("Logical DD Channels");
+    titleMap[ThreadInfoTypeChangeNotifier] = tr("Change Notifiers"); 
+    titleMap[ThreadInfoTypeUndertaker] = tr("Undertakers");
+    titleMap[ThreadInfoTypeLDD] = tr("Logical Device Drivers");
+    titleMap[ThreadInfoTypePDD] = tr("Physical Device Drivers");
+    
+    setTitle(titleMap.value(params["type"].toInt()));
+    
+	MemSpyView::initialize(params);
+	
+	ThreadId threadId = qVariantValue<ThreadId>(params["tid"]);
+	ThreadInfoType type = static_cast<ThreadInfoType>(qVariantValue<int>(params["type"]));
+	
+	mListView.setModel(new MemSpyThreadDetailModel(mEngine, threadId, type, this));
+}
+
+bool MemSpyThreadDetailView::isBreadCrumbVisible() const
+{
+    return true;
+}
+
+QString MemSpyThreadDetailView::getBreadCrumbText() const
+{
+    return tr("Processes > %1 > Threads > %2").arg(mProcessName).arg(mThreadName);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspythreadview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,234 @@
+/*
+ * 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 <HbAbstractViewItem>
+#include <HbMenu>
+#include <QAction>
+
+#include "memspythreadview.h"
+#include "viewmanager.h"
+
+MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId processId, QObject *parent) :
+	QAbstractListModel(parent),
+	mProcessId(processId),
+	mEngine(engine),
+	mThreads(engine.getThreads(processId))
+{
+	mPriorityMap.insert(ThreadPriorityNull, tr("[Null]"));
+	mPriorityMap.insert(ThreadPriorityMuchLess, tr("[Much Less]"));
+	mPriorityMap.insert(ThreadPriorityLess, tr("[Less]"));
+	mPriorityMap.insert(ThreadPriorityNormal, tr("[Normal]"));
+	mPriorityMap.insert(ThreadPriorityMore, tr("[More]"));
+	mPriorityMap.insert(ThreadPriorityMuchMore, tr("[Much More]"));
+	mPriorityMap.insert(ThreadPriorityRealTime, tr("[Real Time]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteVeryLow, tr("[Abs. Very Low]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteLowNormal, tr("[Abs. Low Normal]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteLow, tr("[Abs. Low]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteBackgroundNormal, tr("[Abs. Background Normal]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteBackground, tr("[Abs. Background]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteForegroundNormal, tr("[Abs. Foreground Normal]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteForeground, tr("[Abs. Foreground]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteHighNormal, tr("[Abs. Hight Normal]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteHigh, tr("[Abs. High]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime1, tr("[Abs. RT 1]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime2, tr("[Abs. RT 2]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime3, tr("[Abs. RT 3]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime4, tr("[Abs. RT 4]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime5, tr("[Abs. RT 5]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime6, tr("[Abs. RT 6]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime7, tr("[Abs. RT 7]"));
+	mPriorityMap.insert(ThreadPriorityAbsoluteRealTime8, tr("[Abs. RT 8]"));
+}
+
+MemSpyThreadModel::~MemSpyThreadModel()
+{
+	qDeleteAll(mThreads);
+}
+	
+int MemSpyThreadModel::rowCount(const QModelIndex &parent) const
+{
+	Q_UNUSED(parent);
+	return mThreads.count();
+}
+	
+QVariant MemSpyThreadModel::data(const QModelIndex &index, int role) const
+{
+	if (role == Qt::DisplayRole) {
+		QStringList lines;
+		lines << mThreads.at(index.row())->name();
+		lines << mPriorityMap.value(mThreads.at(index.row())->priority(), tr("[Unknown]"));
+		return lines;
+	}
+	
+	if (role == Qt::UserRole)
+		return mThreads.at(index.row())->id();
+	
+	return QVariant();
+}
+
+void MemSpyThreadModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyThread*> data = mEngine.getThreads(mProcessId);
+    qDeleteAll(mThreads);
+    mThreads = data;
+    endResetModel();
+}
+
+MemSpyThreadView::MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager) : 
+	MemSpyListView(engine, viewManager), 
+	mContextMenu(0), 
+	mPriorityMenu(0),
+	mThreadId(0),
+	mModel(0)
+{
+}
+
+MemSpyThreadView::~MemSpyThreadView()
+{
+	delete mContextMenu;
+	delete mPriorityMenu;
+}
+
+void MemSpyThreadView::initialize(const QVariantMap& params)
+{
+    setTitle(tr("Threads"));
+    
+    mProcessId = qVariantValue<ProcessId>(params["pid"]);    
+	mProcessName = params["pname"].toString();
+	
+	MemSpyView::initialize(params);
+	
+	mModel = new MemSpyThreadModel(mEngine, mProcessId, this);
+	mListView.setModel(mModel);
+	
+	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
+	        this, SLOT(catchLongPress(HbAbstractViewItem*,QPointF)));
+	
+	mContextMenu = new HbMenu;
+	mPriorityMenu = mContextMenu->addMenu("Change Priority");
+	
+	mPriorityMenu->addAction(tr("Abs. Very Low"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Low Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Low"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Background Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Background"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Foreground Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Foreground"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. High Normal"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. High"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 1"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 2"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 3"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 4"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 5"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
+	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
+}
+
+
+bool MemSpyThreadView::isBreadCrumbVisible() const
+{
+    return true;
+}
+
+QString MemSpyThreadView::getBreadCrumbText() const
+{
+    return tr("Processes > %1").arg(mProcessName);
+}
+
+HbMenu* MemSpyThreadView::createToolMenu()
+{
+    HbMenu* menu = new HbMenu(tr("Process"));
+    menu->addAction("Kill", this, SLOT(kill()));
+    menu->addAction("Panic", this, SLOT(panic()));
+    menu->addAction("Terminate", this, SLOT(terminate()));
+    return menu;
+}
+
+void MemSpyThreadView::itemClicked(const QModelIndex& index)
+{
+	QVariantMap map;
+	map["tid"] = index.data(Qt::UserRole);
+	map.insert("pname", mProcessName);
+	map.insert("tname", index.data(Qt::DisplayRole).toStringList().at(0));
+	
+	mViewManager.showView(ThreadDetailIndexView, map);
+}
+
+void MemSpyThreadView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
+{
+	mThreadId = qVariantValue<ThreadId>(item->modelIndex().data(Qt::UserRole));
+	mContextMenu->setPreferredPos(coords);
+	mContextMenu->open();
+}
+
+void MemSpyThreadView::changePriority()
+{
+	QAction *s = qobject_cast<QAction*>(sender());
+	int index = mPriorityMenu->actions().indexOf(s);
+	
+	ThreadPriority priorities[] = {
+		ThreadPriorityAbsoluteVeryLow,
+		ThreadPriorityAbsoluteLowNormal,
+		ThreadPriorityAbsoluteLow,
+		ThreadPriorityAbsoluteBackgroundNormal,
+		ThreadPriorityAbsoluteBackground,
+		ThreadPriorityAbsoluteForegroundNormal,
+		ThreadPriorityAbsoluteForeground,
+		ThreadPriorityAbsoluteHighNormal,
+		ThreadPriorityAbsoluteHigh,
+		ThreadPriorityAbsoluteRealTime1,
+		ThreadPriorityAbsoluteRealTime2,
+		ThreadPriorityAbsoluteRealTime3,
+		ThreadPriorityAbsoluteRealTime4,
+		ThreadPriorityAbsoluteRealTime5,
+		ThreadPriorityAbsoluteRealTime6,
+		ThreadPriorityAbsoluteRealTime7, 
+		ThreadPriorityAbsoluteRealTime8 };
+	
+	if (index >= 0)	{
+	    mEngine.setThreadPriority(mThreadId, priorities[index]);
+	    refresh();
+	}
+}
+
+void MemSpyThreadView::kill()
+{
+    mEngine.killProcess(mProcessId);
+    refresh();
+}
+
+void MemSpyThreadView::panic()
+{
+    mEngine.panicProcess(mProcessId);
+    refresh();
+}
+
+void MemSpyThreadView::terminate()
+{
+    mEngine.terminateProcess(mProcessId);
+    refresh();
+}
+
+
+void MemSpyThreadView::refresh()
+{ 
+    mModel->refresh(); 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspytrackingview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,49 @@
+/*
+ * 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 "memspytrackingview.h"
+#include "viewmanager.h"
+
+#include <QStringListModel>
+#include <QDebug>
+
+void MemSpyTrackingView::initialize(const QVariantMap& params)
+{
+	setTitle("MemSpy");
+	
+	MemSpyView::initialize(params);
+	
+	QStringList items = QStringList() 
+			<< tr("System Wide Memory Tracking")
+			<< tr("Heap Dumps");
+	mListView.setModel(new QStringListModel(items, this));
+    
+	QObject::connect(&mListView, SIGNAL(released(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+}
+
+void MemSpyTrackingView::itemClicked(const QModelIndex& index)
+{
+	Q_UNUSED(index);
+	ViewIndex indexes[] = { SwmtView, HeapDumpsView };
+    mViewManager.showView(indexes[index.row()]);
+}
+
+bool MemSpyTrackingView::isBreadCrumbVisible() const
+{
+	return false;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/memspyview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* 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 <QSignalMapper>
+#include <QGraphicsLinearLayout>
+#include <QDebug>
+#include <HbMenu>
+#include <HbAction>
+#include <HbToolBar>
+#include <HbApplication>
+#include <HbMessageBox>
+#include <HbMainWindow>
+#include <HbLabel>
+
+#include "memspyview.h"
+#include "enginewrapper.h"
+
+#include "memspysettingsview.h"
+
+MemSpyView::MemSpyView(EngineWrapper &engine, ViewManager &viewManager) : 
+	HbView(),
+	mEngine(engine),
+	mViewManager(viewManager),
+	mOutputMenu(0), 
+	mOutputGenInfoMenu(0), 
+	mOutputHeapInfoMenu(0),
+	mOutputStackInfoMenu(0),
+	mToolBar(0),
+	mBreadCrumb(0)
+{
+}
+
+MemSpyView::~MemSpyView()
+{
+	delete mBreadCrumb;
+	delete mToolBar;
+	delete mOutputStackInfoMenu;
+	delete mOutputHeapInfoMenu;
+	delete mOutputGenInfoMenu; 
+	delete mOutputMenu;
+}
+
+void MemSpyView::initialize(const QVariantMap& params)
+{
+	Q_UNUSED(params);
+	QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, this);
+	
+	if (isBreadCrumbVisible()) {
+		mBreadCrumb = new HbLabel(this);
+		mBreadCrumb->setTextWrapping(Hb::TextWordWrap);
+		mBreadCrumb->setElideMode(Qt::ElideLeft);
+		mBreadCrumb->setPlainText(getBreadCrumbText());
+		HbFontSpec spec(HbFontSpec::PrimarySmall);
+		mBreadCrumb->setFontSpec(spec);
+		layout->addItem(mBreadCrumb);
+	}
+	layout->addItem(createCentralWidget());
+	setLayout(layout); 
+	
+	if (isRefreshable())
+		menu()->addAction(tr("Refresh"), this, SLOT(refresh()));
+	
+	HbMenu* toolMenu = createToolMenu();
+	if (toolMenu)
+		menu()->addMenu(toolMenu);
+	
+	menu()->addAction(tr("Settings ..."), this, SLOT(showSettings()));
+	menu()->addAction(tr("About ..."), this, SLOT(showAbout()));
+	menu()->addAction(tr("Exit"), qApp, SLOT(quit()));
+	
+	mToolBar = createToolBar();
+	if (mToolBar)
+		setToolBar(mToolBar);
+}
+
+QList<QAction*> MemSpyView::createOutputActions()
+{
+	return QList<QAction*>();
+}
+
+HbMenu* MemSpyView::createToolMenu()
+{
+	return 0;
+}
+
+HbToolBar* MemSpyView::createToolBar()
+{
+	return 0;
+}
+
+bool MemSpyView::isRefreshable() const
+{
+	return false;
+}
+
+bool MemSpyView::isBreadCrumbVisible() const
+{
+    return false;
+}
+
+QString MemSpyView::getBreadCrumbText() const
+{
+	QStringList views;
+	for (int i=1; i<mainWindow()->views().count() - 1; i++)	{
+		const HbView *view = mainWindow()->views().at(i);
+		if (view == this)
+			break;
+		views.append(view->title());
+	}
+	views.append(title());
+	
+	return views.join(" > ");
+}
+
+void MemSpyView::refresh()
+{
+	// Empty default implementation
+}
+
+void MemSpyView::showSettings()
+{
+	MemSpySettingsView* settings = new MemSpySettingsView(mEngine);
+	connect(settings, SIGNAL(finished(bool)), this, SLOT(closeSettings()));
+	mainWindow()->addView(settings);
+	mainWindow()->setCurrentView(settings);
+}
+
+void MemSpyView::showAbout()
+{
+	HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+	messageBox->setText("Version 2.2.0 - 24th August 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
+	HbLabel *header = new HbLabel("About MemSpy", messageBox);
+	messageBox->setHeadingWidget(header);
+	messageBox->setAttribute(Qt::WA_DeleteOnClose);
+	messageBox->setTimeout(HbPopup::NoTimeout);
+	messageBox->open();
+}
+
+void MemSpyView::closeSettings()
+{
+	sender()->deleteLater();
+	mainWindow()->setCurrentView(this);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/memspyui/ui/hb/src/viewmanager.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,132 @@
+/*
+ * 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 <HbMainWindow>
+#include <HbAction>
+#include <HbMessageBox>
+#include <HbLabel>
+
+#include "viewmanager.h"
+
+#include "enginewrapper.h"
+#include "memspyview.h"
+#include "memspymainview.h"
+#include "memspyprocessview.h"
+#include "memspythreadview.h"
+#include "memspythreaddetailindexview.h"
+#include "memspythreaddetailview.h"
+#include "memspykernelobjecttypeview.h"
+#include "memspykernelobjectview.h"
+#include "memspykernelobjectdetailview.h"
+#include "memspytrackingview.h"
+#include "memspyswmtview.h"
+#include "memspyheapdumpsview.h"
+#include "memspyserverview.h"
+#include "memspyecomcategoryview.h"
+#include "memspyecominterfaceview.h"
+#include "memspyecomimplementationview.h"
+#include "memspyecomimplementationdetailview.h"
+
+template <typename T>
+static MemSpyView* factory(EngineWrapper &engine, ViewManager &viewManager)
+{
+	return new T(engine, viewManager);
+}
+// This array needs to be in sync with view enum
+MemSpyView* (*sFactories[])(EngineWrapper&, ViewManager&) = { 
+	&factory<MemSpyMainView>,
+	&factory<MemSpyProcessView>,
+	&factory<MemSpyThreadView>,
+	&factory<MemSpyThreadDetailIndexView>,
+	&factory<MemSpyThreadDetailView>,
+	&factory<MemSpyKernelObjectTypeView>,
+	&factory<MemSpyKernelObjectView>,
+	&factory<MemSpyKernelObjectDetailView>,
+	&factory<MemSpyTrackingView>,
+	&factory<MemSpySwmtView>,
+	&factory<MemSpyHeapDumpsView>,
+	&factory<MemSpyServerView>,
+	&factory<MemSpyEComCategoryView>,
+	&factory<MemSpyEComInterfaceView>,
+	&factory<MemSpyEComImplementationView>,
+	&factory<MemSpyEComImplementationDetailView>,
+};
+
+
+ViewManager::ViewManager(HbMainWindow &window, EngineWrapper &engine, QObject *parent) :
+	QObject(parent),
+	mWindow(window),
+	mEngine(engine)
+{
+	connect(&mWindow, SIGNAL(currentViewChanged(HbView *)), this, SLOT(viewChanged(HbView *)));
+}
+
+void ViewManager::showView(ViewIndex viewIndex, const QVariantMap &params)
+{
+    MemSpyView* view;
+    try {
+        view = sFactories[viewIndex](mEngine, *this);
+        view->initialize(params);
+    }
+    catch (std::exception& ex)
+    {
+        // show message box with exception
+        // TODO: qt_symbian_exception2Error shouldn't probably be here
+        QString error = tr("An error occured during the operation. Error code: %1").arg(
+                qt_symbian_exception2Error(ex));
+        
+        HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
+        messageBox->setText(error);
+        HbLabel *header = new HbLabel(tr("Error"), messageBox);
+        messageBox->setHeadingWidget(header);
+        messageBox->setAttribute(Qt::WA_DeleteOnClose);
+        messageBox->setTimeout(HbPopup::StandardTimeout);
+        messageBox->open();
+        
+        delete view;
+        return;
+    }
+    
+	if (viewIndex != MainView) {
+		HbAction* action = new HbAction(Hb::BackNaviAction, this);
+		connect(action, SIGNAL(triggered()), this, SLOT(goBack()));
+		view->setNavigationAction(action);
+	}
+		
+	mWindow.addView(view);
+	mWindow.setCurrentView(view);
+}
+
+void ViewManager::showView(ViewIndex viewIndex)
+{
+	showView(viewIndex, QVariantMap());
+}
+
+void ViewManager::goBack()
+{
+	const QList<HbView*> views = mWindow.views();
+	int index = views.indexOf(mWindow.currentView());
+	mWindow.setCurrentView(views.at(index-1), true, Hb::ViewSwitchUseBackAnim);
+}
+
+void ViewManager::viewChanged(HbView *view)
+{
+	const QList<HbView*> views = mWindow.views();
+	int index = views.indexOf(view);
+	for (int i=views.count()-1; i>index; i--)
+		mWindow.removeView(views.at(i));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/data/perfmon.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,702 @@
+/*
+* 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:  
+*
+*/
+
+
+
+NAME MATT
+
+#include <eikon.rh>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <avkon.mbg>
+#include <CommonDialogs.hrh>
+#include <CommonDialogs.rh>
+#include <pathconfiguration.hrh>
+
+#include "perfmon.hrh"
+#include "perfmon_std.h"
+#include <data_caging_paths_strings.hrh>
+#include <appinfo.rh>
+
+
+// ---------------------------------------------------------
+//   
+//    Define the resource file signature 
+//    This resource should be empty.
+//
+// ---------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE { }
+
+// ---------------------------------------------------------
+//   
+//    Default Document Name
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_default_document_name { buf=""; }
+
+// ---------------------------------------------------------
+//   
+//    Define default menu and CBA key.
+//
+// ---------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+	status_pane = r_perfmon_status_pane;
+    //menubar = r_perfmon_menubar;
+    //cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+    }
+
+//----------------------------------------------------
+//    r_perfmon_status_pane
+//----------------------------------------------------
+//   
+RESOURCE STATUS_PANE_APP_MODEL r_perfmon_status_pane
+    {
+	panes=
+		{
+		SPANE_PANE
+			{
+			id = EEikStatusPaneUidNavi;
+			type = EAknCtNaviPane;
+			resource = r_perfmon_navi_decorator;
+			}
+		};
+    }
+    
+//----------------------------------------------------
+//    r_perfmon_navi_decorator
+//----------------------------------------------------
+//
+RESOURCE NAVI_DECORATOR r_perfmon_navi_decorator
+    {
+    type = ENaviDecoratorControlTabGroup;
+    control = TAB_GROUP
+		{
+		tab_width = EAknTabWidthWithTwoTabs;
+		active = 0;
+		tabs = {
+			TAB
+				{
+                id = ETabMainViewValues;
+                txt = "Values";
+                },
+			TAB
+				{
+                id = ETabMainViewGraphs;
+                txt = "Graphs";
+				}
+			};
+		};
+	}
+	
+//----------------------------------------------------
+//   
+//    r_perfmon_hotkeys
+//
+//----------------------------------------------------
+//
+RESOURCE HOTKEYS r_perfmon_hotkeys
+    {
+    control=
+        {
+        HOTKEY { command=EAknCmdExit; key='e'; }
+        };
+    }
+
+
+//----------------------------------------------------
+//    r_perfmon_view_values
+//----------------------------------------------------
+//
+RESOURCE AVKON_VIEW r_perfmon_view_values
+    {
+    hotkeys=r_perfmon_hotkeys;
+    menubar=r_perfmon_menubar_view_values;  
+    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
+    }
+
+//----------------------------------------------------
+//    r_perfmon_menubar_view_values
+//----------------------------------------------------
+//
+RESOURCE MENU_BAR r_perfmon_menubar_view_values
+    {
+    titles=
+        {
+        MENU_TITLE { menu_pane=r_perfmon_app_menu; txt="App"; },
+        MENU_TITLE { menu_pane=r_perfmon_view_values_menu; txt="Values"; }
+        };
+    }
+
+//----------------------------------------------------
+//    r_perfmon_view_values_menu
+//----------------------------------------------------
+//
+
+RESOURCE MENU_PANE r_perfmon_view_values_menu
+    {
+    items=
+        {
+        };
+    }
+
+//----------------------------------------------------
+//    r_perfmon_view_graphs
+//----------------------------------------------------
+//
+RESOURCE AVKON_VIEW r_perfmon_view_graphs
+    {
+    hotkeys=r_perfmon_hotkeys;
+    menubar=r_perfmon_menubar_view_graphs;  
+    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
+    }
+
+//----------------------------------------------------
+//    r_perfmon_menubar_view_graphs
+//----------------------------------------------------
+//
+RESOURCE MENU_BAR r_perfmon_menubar_view_graphs
+    {
+    titles=
+        {
+        MENU_TITLE { menu_pane=r_perfmon_app_menu; txt="App"; },
+        MENU_TITLE { menu_pane=r_perfmon_view_graphs_menu; txt="graphs"; }
+        };
+    }
+
+//----------------------------------------------------
+//    r_perfmon_view_graphs_menu
+//----------------------------------------------------
+//
+
+RESOURCE MENU_PANE r_perfmon_view_graphs_menu
+    {
+    items=
+        {
+        };
+    }
+           
+        
+//----------------------------------------------------
+//    r_perfmon_app_menu
+//----------------------------------------------------
+//
+RESOURCE MENU_PANE r_perfmon_app_menu
+    {
+    items=
+        {
+        MENU_ITEM { command=EPerfMonCmdEnableLogging; txt="Enable Logging"; },
+        MENU_ITEM { command=EPerfMonCmdDisableLogging; txt="Disable Logging"; },
+        MENU_ITEM { command=EPerfMonCmdSettings; txt="Settings"; },
+        MENU_ITEM { command=EPerfMonCmdAbout; txt="About"; },
+        MENU_ITEM { command=EAknCmdExit; txt="Exit"; }
+        };
+    }
+
+//----------------------------------------------------
+//    r_perfmon_settings_dialog
+//    Dialog for setting list
+//----------------------------------------------------
+//
+RESOURCE DIALOG r_perfmon_settings_dialog
+    {
+    flags =
+        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
+        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
+        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
+    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtSettingListBox;
+            id = EPerfMonSettingItemList;
+            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
+            control = LISTBOX
+                {
+                flags = EAknListBoxSelectionList;
+                };
+            }
+        };
+    }
+
+//----------------------------------------------------
+//    r_perfmon_settings_menubar
+//----------------------------------------------------
+//
+
+RESOURCE MENU_BAR r_perfmon_settings_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_perfmon_settings_menupane;
+            txt = " ";   // dummy
+            }
+        };
+    }
+
+RESOURCE MENU_PANE r_perfmon_settings_menupane
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EPerfMonCmdSettingsChange;
+            txt = "Change";
+            },
+        MENU_ITEM
+            {
+            command = EPerfMonCmdSettingsExit;
+            txt = "Exit";
+            }
+        };
+    }
+
+
+//----------------------------------------------------
+//   
+//    Setting item resources
+//
+//----------------------------------------------------
+//
+
+// generic resources
+RESOURCE POPUP_SETTING_LIST r_popup_setting_list_editor
+	{
+	}
+RESOURCE AVKON_SETTING_PAGE r_binary_setting_page
+    {   
+    number = EAknSettingPageNoOrdinalDisplayed;
+    type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+    }
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_yesno_binaryselection_texts
+	{
+	setting_texts_resource = r_yesno_binaryselection_text_array;
+	}
+RESOURCE ARRAY r_yesno_binaryselection_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=0; text = "No"; },
+		AVKON_ENUMERATED_TEXT { value=1; text = "Yes"; }
+		};
+	}
+
+//
+// resources for heartbeat selection
+//
+RESOURCE TBUF r_heartbeat_setting_title
+    {
+    buf = "Heart beat (ms)";
+    }
+RESOURCE AVKON_SETTING_PAGE r_heartbeat_setting_page
+	{
+	type = EAknCtIntegerEdwin;
+	editor_resource_id = r_heartbeat_integer_editor;
+	}
+RESOURCE AVKON_INTEGER_EDWIN r_heartbeat_integer_editor
+	{
+	maxlength = 5;
+	min = 1;
+	max = 99999;
+	}    
+    
+
+//
+// resources for maxsamples selection
+//
+RESOURCE TBUF r_maxsamples_setting_title
+    {
+    buf = "Max samples";
+    }
+RESOURCE AVKON_SETTING_PAGE r_maxsamples_setting_page
+	{
+	type = EAknCtIntegerEdwin;
+	editor_resource_id = r_maxsamples_integer_editor;
+	}
+RESOURCE AVKON_INTEGER_EDWIN r_maxsamples_integer_editor
+	{
+	maxlength = 4;
+	min = 1;
+	max = 9999;
+	} 
+
+
+//
+// resources for priority selection
+//
+RESOURCE TBUF r_priority_setting_title
+    {
+    buf = "Priority";
+    }
+RESOURCE AVKON_SETTING_PAGE r_priority_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_priority_setting_texts
+	{
+	setting_texts_resource = r_priority_text_array;
+	}
+RESOURCE ARRAY r_priority_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMuchLess; text = "Much less"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeLess; text = "Less"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeNormal; text = "Normal"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMore; text = "More"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMuchMore; text = "Much more"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeRealTime; text = "Real time"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteVeryLow; text = "Abs. very low"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteLow; text = "Abs. low"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteBackground; text = "Abs. background"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteForeground; text = "Abs. foreground"; },
+		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteHigh; text = "Abs. high"; }
+		};
+	}
+
+
+//
+// resources for cpumode selection
+//
+RESOURCE TBUF r_cpumode_setting_title
+    {
+    buf = "CPU sampling mode";
+    }
+RESOURCE AVKON_SETTING_PAGE r_cpumode_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_cpumode_setting_texts
+	{
+	setting_texts_resource = r_cpumode_text_array;
+	}
+RESOURCE ARRAY r_cpumode_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=ECPUModeCPUTime; text = "CPU Time"; },
+		AVKON_ENUMERATED_TEXT { value=ECPUModeNOPs; text = "NOPs"; }
+		};
+	}
+
+
+//
+// resources for keepbacklighton selections
+//
+RESOURCE TBUF r_keepbacklighton_setting_title
+    {
+    buf = "Keep backlight on";
+    }
+
+
+//
+// resources for enablepowermonitoring selections
+//
+RESOURCE TBUF r_powermonitoringenabled_setting_title
+    {
+    buf = "Enable power monitoring";
+    }
+
+
+//
+// resources for datapopupvisibility selection
+//
+RESOURCE TBUF r_datapopupvisibility_setting_title
+    {
+    buf = "Visibility";
+    }
+RESOURCE AVKON_SETTING_PAGE r_datapopupvisibility_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_datapopupvisibility_setting_texts
+	{
+	setting_texts_resource = r_datapopupvisibility_text_array;
+	}
+RESOURCE ARRAY r_datapopupvisibility_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityAlwaysOn; text = "On"; },
+		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityBackgroundOnly; text = "Backgr. only"; },
+		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityAlwaysAlwaysOff; text = "Off"; }
+		};
+	}    
+
+//
+// resources for datapopuplocation selection
+//
+RESOURCE TBUF r_datapopuplocation_setting_title
+    {
+    buf = "Location";
+    }
+RESOURCE AVKON_SETTING_PAGE r_datapopuplocation_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_datapopuplocation_setting_texts
+	{
+	setting_texts_resource = r_datapopuplocation_text_array;
+	}
+RESOURCE ARRAY r_datapopuplocation_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=EDataPopupLocationTopRight; text = "Top right"; },
+		AVKON_ENUMERATED_TEXT { value=EDataPopupLocationBottomMiddle; text = "Bottom middle"; }
+		};
+	}
+
+//
+// resources for sources selection
+//
+RESOURCE TBUF r_sources_setting_title
+    {
+    buf = "Sources";
+    }
+RESOURCE AVKON_SETTING_PAGE r_sources_setting_page
+	{
+	type = EAknSetListBox;
+	editor_resource_id = r_sources_items_listbox;
+	label = "Sources";
+	}	
+RESOURCE LISTBOX r_sources_items_listbox
+	{
+	flags = EAknListBoxMultipleSelection;
+	}	
+
+
+//
+// resources for graphsverticalbar selection
+//
+RESOURCE TBUF r_graphsverticalbar_setting_title
+    {
+    buf = "Vertical bar period (s)";
+    }
+RESOURCE AVKON_SETTING_PAGE r_graphsverticalbar_setting_page
+	{
+	type = EAknCtIntegerEdwin;
+	editor_resource_id = r_graphsverticalbar_integer_editor;
+	}
+RESOURCE AVKON_INTEGER_EDWIN r_graphsverticalbar_integer_editor
+	{
+	maxlength = 3;
+	min = 0;
+	max = 999;
+	} 
+
+
+//
+// resources for loggingmode selection
+//
+RESOURCE TBUF r_loggingmode_setting_title
+    {
+    buf = "Mode";
+    }
+RESOURCE AVKON_SETTING_PAGE r_loggingmode_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_loggingmode_setting_texts
+	{
+	setting_texts_resource = r_loggingmode_text_array;
+	}
+RESOURCE ARRAY r_loggingmode_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=ELoggingModeRDebug; text = "RDebug"; },
+		AVKON_ENUMERATED_TEXT { value=ELoggingModeLogFile; text = "Log file"; },
+		AVKON_ENUMERATED_TEXT { value=ELoggingModeRDebugLogFile; text = "RDebug & log file"; }
+		};
+	}
+
+
+//
+// resources for loggingfilepath selection
+//
+RESOURCE TBUF r_loggingfilepath_setting_title
+    {
+    buf = "Log file path";
+    }
+RESOURCE AVKON_SETTING_PAGE r_loggingfilepath_setting_page
+	{
+	type = EEikCtEdwin;
+	editor_resource_id = r_loggingfilepath_text_editor;
+	}
+
+RESOURCE EDWIN r_loggingfilepath_text_editor
+	{
+	lines = 0;  // expanding to multiple rows
+	maxlength = 63;
+	flags = EEikEdwinNoLineOrParaBreaks;
+	}
+
+  
+// ---------------------------------------------------------
+//   
+//   r_perfmon_about_dialog
+//   About dialog - show version and copyright info etc.
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_perfmon_about_dialog
+    {
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                label = "About PerfMon";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {
+                message = "Version 1.2.0 - 26th August 2010. Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.";
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//   r_general_confirmation_query
+// ---------------------------------------------------------
+//
+
+RESOURCE DIALOG r_general_confirmation_query
+	{
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_YES_NO;
+	items =
+		{
+		DLG_LINE
+			{
+			type = EAknCtQuery;
+			id = EGeneralQuery;
+			control = AVKON_CONFIRMATION_QUERY
+				{
+				layout = EConfirmationQueryLayout;
+				};
+			}
+		};
+	}
+
+// ---------------------------------------------------------
+//   r_general_text_query
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_general_text_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_DATA_QUERY
+                {
+                layout = EDataLayout;
+                control = EDWIN
+                    {
+                    width = 256;
+                    lines = 3;
+                    maxlength = 256;
+                    };
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//   r_general_numeric_query
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_general_numeric_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control= AVKON_DATA_QUERY
+                {
+                layout = ENumberLayout;
+                control = AVKON_INTEGER_EDWIN
+                    {
+                    min = -999999;
+                    max = 999999;
+                    };
+                };
+            }
+        };
+    }
+
+
+// ---------------------------------------------------------
+//   
+//    RESOURCE LOCALISABLE_APP_INFO
+//
+// ---------------------------------------------------------
+//
+RESOURCE LOCALISABLE_APP_INFO r_perfmon_localisable_app_info
+    {
+    short_caption = "PerfMon";
+    caption_and_icon = 
+    CAPTION_AND_ICON_INFO
+        {
+        caption = "PerfMon";
+
+        number_of_icons = 1;
+
+        // Note for ROM-based apps it is recommended to add the drive letter
+        // icon_file = "z:"APP_BITMAP_DIR"\\myapp_aif.mif";
+        icon_file = APP_BITMAP_DIR"\\perfmon_aif.mif";
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/data/perfmon_reg.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* 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 <perfmon.rsg>
+#include <appinfo.rh>
+#include <data_caging_paths_strings.hrh>
+
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x20011385
+
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "PerfMon";
+    localisable_resource_file = APP_RESOURCE_DIR"\\PerfMon";
+    localisable_resource_id = R_PERFMON_LOCALISABLE_APP_INFO;
+    group_name = "RnD Tools";    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/engine/inc/perfmon.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,128 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_HRH
+#define PERFMON_HRH
+
+enum TPerfMonCommandIds
+    {
+    EPerfMonCmdEnableLogging = 1,
+    EPerfMonCmdDisableLogging,
+    EPerfMonCmdSettings,
+    EPerfMonCmdAbout,
+
+    EPerfMonCmdSettingsChange,
+    EPerfMonCmdSettingsExit,
+    EPerfMonCmdSettingsBack,
+    
+    EPerfMonSettingItemList = 1000
+    };
+
+enum TPerfMonMainViewTabs
+    {
+    ETabMainViewValues = 1,
+    ETabMainViewGraphs    
+    };
+               
+enum TPerfMonSettingListTabs
+    {
+    ETabSettingsGeneral = 0,
+    ETabSettingsDataPopup,    
+    ETabSettingsGraphs,    
+    ETabSettingsLogging    
+    };
+    
+enum TPerfMonSettingListIds
+    {
+    ESettingListItemHeartBeat = 0,
+    ESettingListItemMaxSamples,
+    ESettingListItemPriority,
+    ESettingListItemCPUMode,
+    ESettingListItemKeepBackLightOn,
+    ESettingListItemPowerMonitoringEnabled,
+
+    ESettingListItemDataPopupVisbility,
+    ESettingListItemDataPopupLocation,
+    ESettingListItemDataPopupSources,
+
+    ESettingListItemGraphsVerticalBarPeriod,
+    ESettingListItemGraphsSources,
+
+    ESettingListItemLoggingMode,
+    ESettingListItemLoggingFilePath,
+    ESettingListItemLoggingSources
+    };
+
+enum TPerfMonSettingThreadPriorityTypes
+    {
+    EThreadPriorityTypeMuchLess = 0,    
+    EThreadPriorityTypeLess,    
+    EThreadPriorityTypeNormal,    
+    EThreadPriorityTypeMore,    
+    EThreadPriorityTypeMuchMore,    
+    EThreadPriorityTypeRealTime,    
+    EThreadPriorityTypeAbsoluteVeryLow,    
+    EThreadPriorityTypeAbsoluteLow,    
+    EThreadPriorityTypeAbsoluteBackground,    
+    EThreadPriorityTypeAbsoluteForeground,    
+    EThreadPriorityTypeAbsoluteHigh
+    };
+
+enum TPerfMonSettingCPUModes
+    {
+    ECPUModeNotSet = -1,
+    ECPUModeCPUTime,
+    ECPUModeNOPs
+    };
+
+enum TPerfMonSettingDataPopupVisbilities
+    {
+    EDataPopupVisbilityAlwaysOn = 0,
+    EDataPopupVisbilityBackgroundOnly,
+    EDataPopupVisbilityAlwaysAlwaysOff
+    };
+
+enum TPerfMonSettingDataPopupLocations
+    {
+    EDataPopupLocationTopRight = 0,
+    EDataPopupLocationBottomMiddle
+    };
+        
+enum TPerfMonSettingSources
+    {
+    ESourceCPU = 0,
+    ESourceRAM,
+    ESourceC,
+    ESourceD,
+    ESourceE,
+    ESourceF,
+    ESourceG,
+    ESourceH,
+    ESourceI,
+    ESourcePwr,
+    ESourcesLength // this should be always the last!
+    };
+    
+enum TPerfMonSettingLoggingMode
+    {
+    ELoggingModeRDebug = 0,
+    ELoggingModeLogFile,
+    ELoggingModeRDebugLogFile
+    };
+
+#endif      // PERFMON_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/engine/inc/perfmon_engine.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,259 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_ENGINE_H
+#define PERFMON_ENGINE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <apgcli.h>
+#include <gdi.h>
+
+#include "perfmon.hrh"
+#include "perfmon_powerlistener.h"
+
+const TUint KMaxCPUs = 4;
+
+
+// setting keys (do not change uids of existing keys to maintain compatibility to older versions!)
+const TUid KPMSettingHeartBeat                              = { 0x00 };
+const TUid KPMSettingMaxSamples                             = { 0x01 };
+const TUid KPMSettingPriority                               = { 0x02 };
+const TUid KPMSettingCPUMode                                = { 0x03 };
+const TUid KPMSettingKeepBackLightOn                        = { 0x04 };
+
+const TUid KPMSettingDataPopupVisbility                     = { 0x05 };
+const TUid KPMSettingDataPopupLocation                      = { 0x06 };
+const TUid KPMSettingDataPopupSources                       = { 0x07 };
+
+const TUid KPMSettingGraphsVerticalBarPeriod                = { 0x08 };
+const TUid KPMSettingGraphsSources                          = { 0x09 };
+
+const TUid KPMSettingLoggingMode                            = { 0x0A };
+const TUid KPMSettingLoggingFilePath                        = { 0x0B };
+const TUid KPMSettingLoggingSources                         = { 0x0C };
+
+const TUid KPMSettingPowerMonitoringEnabled                 = { 0x0D };
+
+// FORWARD DECLARATIONS
+class CPerfMonValuesContainer;
+class CPerfMonGraphsContainer;
+class CPerfMonDataPopupContainer;
+class CEikonEnv;
+class CCoeControl;
+class CDictionaryFileStore;
+
+
+// CLASS DECLARATIONS
+
+class TPerfMonNOPCounter
+    {
+public:
+    TInt64      iCounterValue;
+    TInt        iCPUNumber;
+    TInt        iAmountOfCPUs;
+    };
+
+class TPerfMonSources
+    {
+public:
+    TBool iSrcEnabled[ESourcesLength];
+
+public:
+    inline void SetDefaults1()
+        {
+        iSrcEnabled[ESourceCPU] = ETrue;
+        iSrcEnabled[ESourceRAM] = ETrue;
+        iSrcEnabled[ESourceC]   = ETrue;
+        iSrcEnabled[ESourceD]   = EFalse;
+        iSrcEnabled[ESourceE]   = EFalse;
+        iSrcEnabled[ESourceF]   = EFalse;
+        iSrcEnabled[ESourceG]   = EFalse;
+        iSrcEnabled[ESourceH]   = EFalse;
+        iSrcEnabled[ESourceI]   = EFalse;
+        iSrcEnabled[ESourcePwr] = EFalse;
+        }
+    inline void SetDefaults2()
+        {
+        iSrcEnabled[ESourceCPU] = ETrue;
+        iSrcEnabled[ESourceRAM] = ETrue;
+        iSrcEnabled[ESourceC]   = EFalse;
+        iSrcEnabled[ESourceD]   = EFalse;
+        iSrcEnabled[ESourceE]   = EFalse;
+        iSrcEnabled[ESourceF]   = EFalse;
+        iSrcEnabled[ESourceG]   = EFalse;
+        iSrcEnabled[ESourceH]   = EFalse;
+        iSrcEnabled[ESourceI]   = EFalse;
+        iSrcEnabled[ESourcePwr] = EFalse;
+        }
+    TInt EnabledSourcesCount()
+        {
+        TInt srcCount(0);
+        
+        for (TInt i=0; i<ESourcesLength; i++)
+            {
+            if (iSrcEnabled[i])
+                srcCount++;
+            }
+        
+        return srcCount;
+        }
+    };
+    
+
+class TPerfMonSettings
+    {
+public:
+    TInt                iHeartBeat;
+    TInt                iMaxSamples;
+    TInt                iPriority;
+    TInt                iCPUMode;
+    TBool               iKeepBacklightOn;
+
+    TInt                iDataPopupVisibility;
+    TInt                iDataPopupLocation;
+    TPerfMonSources     iDataPopupSources;
+
+    TInt                iGraphsVerticalBarPeriod;
+    TPerfMonSources     iGraphsSources;
+
+    TInt                iLoggingMode;
+    TFileName           iLoggingFilePath;
+    TPerfMonSources     iLoggingSources;
+    
+    TBool               iLoggingEnabled;
+
+    TBool               iPowerMonitoringEnabled;
+    };
+
+
+class TSampleData
+    {
+public:
+    TInt64                          iFree;
+    TInt64                          iSize;
+    TTimeIntervalMicroSeconds       iTimeFromStart;
+    };
+
+typedef CArrayFixSeg<TSampleData> CSampleDataArray;
+
+
+class TSampleEntry
+    {
+public:
+    TBuf<16>            iDescription;
+    TBuf<16>            iUnitTypeShort; //eg. b
+    TBuf<16>            iUnitTypeLong;  //eg. bytes
+    TInt                iDriveNumber;   //used only for disk drives
+    TRgb                iGraphColor;
+    CSampleDataArray*   iSampleDataArray;
+    };
+
+typedef CArrayFixSeg<TSampleEntry> CSampleEntryArray;
+
+
+
+class CPerfMonEngine : public CActive
+    {
+public:
+    ~CPerfMonEngine();
+    void ActivateEngineL();
+    void DeActivateEngineL();
+    void EnableLogging(TBool aEnable);
+
+private:
+    void RunL();
+    void DoCancel();
+
+    void LoadSettingsL();
+    void OpenLogFile(TBool aOpen);
+    void CreateSamplesDataArrayL();
+    void UpdateSamplesDataL();
+    void AppendLatestSamplesToLogsL();
+    void ActivateCPUMonitoringL();
+    TBool OpenHandleToNullThread();
+    void DeActivateCPUMonitoring();
+    TBool CPUTimeSupported();
+    TInt GetAmountOfCPUs();
+    TThreadPriority SettingItemToThreadPriority(TInt aIndex);
+    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue);
+    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TDes& aValue);
+    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TPerfMonSources& aValue);
+    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TInt& aValue);
+    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TDes& aValue);
+    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TPerfMonSources& aValue);
+    void ActivatePowerMonitoringL();
+    void DeActivatePowerMonitoring();
+
+    TInt SampleEntryPosToSettingPos(TInt aSampleEntryPos);
+
+protected:
+    CPerfMonEngine();
+    void ConstructL();
+    void SaveSettingsL();
+    virtual void SendDrawEventToContainersL() = 0;
+    virtual void HandleSettingsChangeL();
+    
+public:
+    inline TPerfMonSettings& Settings() { return iSettings; }
+    inline CEikonEnv* EikonEnv() { return iEnv; }
+    inline RApaLsSession& LsSession() { return iLs; }
+
+    inline CSampleEntryArray* SampleEntryArray() { return iSampleEntryArray; }
+    inline TInt CPU0PositionInSamples()          { return iCPU0PositionInSamples; }
+    inline TInt RAMPositionInSamples()           { return iRAMPositionInSamples; }
+    inline TInt CDrivePositionInSamples()        { return iCDrivePositionInSamples; }
+    inline TInt PowerPositionInSamples()         { return iPowerPositionInSamples; }
+    inline TInt AmountOfCPUs()                   { return iAmountOfCPUs; }
+    inline TBool PowerMonitoringSupported()      { return iPowerClient->IsSupported(); }
+
+protected:
+    RTimer                          iTimer;
+    CEikonEnv*                      iEnv;
+    TPerfMonSettings                iSettings;
+    RApaLsSession                   iLs;
+    CSampleEntryArray*              iSampleEntryArray;
+    TTime                           iStartTime;
+
+    TInt                            iCurrentCPUMode;
+
+    RThread                         iCPULoadNOPThread[KMaxCPUs];
+    TPerfMonNOPCounter              iCPULoadNOPCounter[KMaxCPUs];
+
+    RThread                         iNullThreads[KMaxCPUs];
+    TBool                           iCPULoadCalibrating;
+    TInt                            iCPULoadCalibrationCounter;
+    TInt64                          iCPULoadMaxValue;
+    TInt64                          iCPULoadPreviousValue[KMaxCPUs];
+    TInt                            iAmountOfCPUs;
+    TTime                           iPreviousTime;
+
+    TInt                            iCPU0PositionInSamples;
+    TInt                            iRAMPositionInSamples;
+    TInt                            iCDrivePositionInSamples;
+    TInt                            iPowerPositionInSamples;
+
+    TBool                           iLogFileInitialized;
+    RFile                           iLogFile;
+
+    CPerfMonPowerListener*          iPowerClient;
+    };
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/engine/inc/perfmon_powerlistener.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_POWERLISTENER_H
+#define PERFMON_POWERLISTENER_H
+
+// INCLUDES
+#include <hwrmpower.h>
+
+#include "perfmon.hrh"
+
+// HWRM reporting interval multiplier
+const TInt KSampleIntervalMultiple = 1;
+const TInt KReportingDuration = 0;  // Infinite duration
+
+class CPerfMonPowerListener : public CBase, public MHWRMBatteryPowerObserver
+    {
+public:
+    static CPerfMonPowerListener* NewL();
+    ~CPerfMonPowerListener();
+
+private:
+    CPerfMonPowerListener();
+    void ConstructL();
+
+    // Handling central repository max reporting period key
+    void GetReportingPeriodL();
+    void SetReportingPeriodL(TInt aDuration);
+
+public:
+    static TBool IsSupported();
+
+    // Start monitoring power values
+    TInt Activate();
+    // Stop monitoring power values
+    void DeActivate();
+
+    // Get average power since last read.
+    TInt GetPower();
+    // Maximum power value since measurement started
+    inline TInt GetMaxPower()       { return iMaxPower; }
+
+    virtual void PowerMeasurement(TInt aErrCode, CHWRMPower::TBatteryPowerMeasurementData& aMeasurement);
+
+private:
+    CHWRMPower*                     iHWRMPower;
+    RArray<TInt>                    iPowerBuffer;
+    TInt                            iLastPowerAvg;
+    TInt                            iMaxPower;
+
+    TInt                            iOriginalMaxReportingPeriod;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/engine/src/perfmon_engine.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,1129 @@
+/*
+ * 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 FILES
+#include "perfmon_engine.h"
+#include "perfmon_powerlistener.h"
+#include <coeutils.h>
+#include <bautils.h>
+#include <eikenv.h>
+#include <e32hal.h>
+#include <u32std.h>
+#include <s32file.h>
+#include <akntitle.h> 
+#include <eikspane.h>
+#include <aknnotewrappers.h>
+_LIT(KDefaultLogFilePath, "c:\\data\\PerfMon.log");
+
+const TInt KCalibrationLength = 2;
+const TInt KMinimumSamplesLength = 16;
+const TInt KCPUTimeMultiplier = 1000000; // used to avoid TReal conversions
+
+const TInt KSettingsDrive = EDriveC;
+_LIT(KSettingsFileName, "perfmon_settings.ini");
+
+// --------------------------------------------------------------------------------------------
+
+TInt CPULoadCount(TAny* aPtr)
+    {
+    TPerfMonNOPCounter& atts = *((TPerfMonNOPCounter*) aPtr);
+
+    // increase the counter
+    atts.iCounterValue++;
+    return 1;
+    }
+
+TInt CPULoadNOPThread(TAny* aPtr)
+    {
+    // set the thread running in correct CPU
+    TPerfMonNOPCounter& atts = *((TPerfMonNOPCounter*) aPtr);
+    
+    if (atts.iAmountOfCPUs > 1)
+        {
+        // request via HAL that the current thread will run in CPU defined in atts.iCPUNumber
+        TInt err = UserSvr::HalFunction(EHalGroupKernel, 19 /*EKernelHalLockThreadToCpu*/, (TAny*) atts.iCPUNumber, 0);
+
+        if (err != KErrNone)
+            {
+            // error, stop this thread
+            return err;
+            }
+        }
+
+    // init trap clean and install active scheduler
+    CTrapCleanup* pC = CTrapCleanup::New();
+    CActiveScheduler* pS = new CActiveScheduler;
+    CActiveScheduler::Install(pS);
+
+    // call the counter to simulate polling the null thread for cpu time
+    CIdle* idle = CIdle::NewL(CActive::EPriorityStandard);
+    TCallBack cb(CPULoadCount, aPtr);
+    idle->Start(cb);
+
+    pS->Start();
+
+    delete idle;
+    delete pS;
+    delete pC;
+
+    return KErrNone;
+    }
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CPerfMonEngine::CPerfMonEngine() :
+    CActive(EPriorityUserInput),
+    iPowerClient(0)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::ConstructL()
+    {
+    iCurrentCPUMode = ECPUModeNotSet;
+    iLogFileInitialized = EFalse;
+    iAmountOfCPUs = 1;
+
+    iEnv = CEikonEnv::Static();
+    User::LeaveIfError(iLs.Connect());
+
+    User::LeaveIfError(iTimer.CreateLocal());
+    CActiveScheduler::Add(this);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::ActivateEngineL()
+    {
+    // load settings
+    TRAP_IGNORE(LoadSettingsL());
+
+    // create data storages for the samples
+    CreateSamplesDataArrayL();
+
+    // set default modes
+    HandleSettingsChangeL();
+
+    // start sampling data immediately (jump to RunL)    
+    iTimer.After(iStatus, 100);
+    SetActive();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::DeActivateEngineL()
+    {
+    Cancel();
+
+    DeActivatePowerMonitoring();
+    DeActivateCPUMonitoring();
+
+    // close log file
+    OpenLogFile(EFalse);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonEngine::~CPerfMonEngine()
+    {
+    DeActivatePowerMonitoring();
+
+    if (iPowerClient)
+        {
+        delete iPowerClient;
+        iPowerClient = 0;
+        }
+
+    iTimer.Close();
+
+    // clear data storages
+    if (iSampleEntryArray)
+        {
+        for (TInt i = 0; i < iSampleEntryArray->Count(); i++)
+            {
+            delete iSampleEntryArray->At(i).iSampleDataArray;
+            }
+
+        delete iSampleEntryArray;
+        }
+
+    iLs.Close();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::DoCancel()
+    {
+    iTimer.Cancel();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::RunL()
+    {
+    // calculate new values 
+    UpdateSamplesDataL();
+
+    // log changes
+    AppendLatestSamplesToLogsL();
+
+    // redraw views
+    SendDrawEventToContainersL();
+
+    // continue
+    iTimer.After(iStatus, iSettings.iHeartBeat * 1000); // convert from milliseconds to microseconds
+    SetActive();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::HandleSettingsChangeL()
+    {
+    // set priority of the thread
+    RThread().SetPriority(SettingItemToThreadPriority(iSettings.iPriority));
+
+    // init cpu monitor if setting has been changed
+    if (iCurrentCPUMode != iSettings.iCPUMode)
+        {
+        DeActivateCPUMonitoring();
+        ActivateCPUMonitoringL();
+        }
+
+    // Check for power setting changes every time
+    if (iSettings.iPowerMonitoringEnabled)
+        {
+        ActivatePowerMonitoringL();
+        }
+    else
+        {
+        DeActivatePowerMonitoring();
+        }
+
+    // close log file
+    OpenLogFile(EFalse);
+
+    // enable log file
+    if (iSettings.iLoggingEnabled && (iSettings.iLoggingMode
+            == ELoggingModeLogFile || iSettings.iLoggingMode
+            == ELoggingModeRDebugLogFile))
+        OpenLogFile(ETrue);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::EnableLogging(TBool aEnable)
+    {
+    if (aEnable)
+        {
+        if (iSettings.iLoggingMode == ELoggingModeLogFile
+                || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
+            OpenLogFile(ETrue);
+
+        iSettings.iLoggingEnabled = ETrue;
+        }
+    else // disable
+        {
+        iSettings.iLoggingEnabled = EFalse;
+        OpenLogFile(EFalse);
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::OpenLogFile(TBool aOpen)
+    {
+    // open log file for writing
+    if (aOpen)
+        {
+        if (!iLogFileInitialized)
+            {
+            TInt err(KErrNone);
+
+            // open the log file for writing
+            if (iLogFile.Open(iEnv->FsSession(), iSettings.iLoggingFilePath,
+                    EFileWrite) != KErrNone)
+                {
+                iEnv->FsSession().MkDirAll(iSettings.iLoggingFilePath);
+                err = iLogFile.Replace(iEnv->FsSession(),
+                        iSettings.iLoggingFilePath, EFileWrite);
+                }
+            else
+                {
+                // file opens correctly, seek to the end
+                TInt fileSize = 0;
+                iLogFile.Size(fileSize);
+                err = iLogFile.Seek(ESeekCurrent, fileSize);
+                }
+
+            if (err == KErrNone)
+                {
+                iLogFileInitialized = ETrue;
+                }
+            else
+                {
+                // show error
+                CAknErrorNote* note = new (ELeave) CAknErrorNote();
+                note->ExecuteLD(_L("Unable to create log file, check settings"));
+                }
+            }
+        }
+
+    // close handle to log file
+    else
+        {
+        if (iLogFileInitialized)
+            {
+            iLogFile.Flush();
+            iLogFile.Close();
+
+            iLogFileInitialized = EFalse;
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::ActivateCPUMonitoringL()
+    {
+    // reset counter variables
+    iCPULoadCalibrating = ETrue;
+    iCPULoadCalibrationCounter = 0;
+    iCPULoadMaxValue = 999999999;
+
+    for (TInt i=0; i<KMaxCPUs; i++)
+        {
+        iCPULoadPreviousValue[i] = 1;
+        }
+
+    // use null thread is cpu time is supported and the setting is on
+    if (CPUTimeSupported() && iSettings.iCPUMode == ECPUModeCPUTime)
+        {
+        // try to open handle to null thread
+        if (OpenHandleToNullThread())
+            {
+            // handle is open, get initial value for each CPU
+            for (TInt i=0; i<iAmountOfCPUs; i++)
+                {
+                TTimeIntervalMicroSeconds time;
+                iNullThreads[i].GetCpuTime(time);
+                iCPULoadPreviousValue[i] = time.Int64();
+                }
+
+            iPreviousTime.HomeTime();
+
+            iCurrentCPUMode = ECPUModeCPUTime;
+            return; // cpu time is succesfully in use
+            }
+        }
+
+    // otherwise use normal sampling with nops
+    iCurrentCPUMode = ECPUModeNotSet;
+
+    // show a warning if cpu time cannot be taken in use
+    if (iSettings.iCPUMode == ECPUModeCPUTime)
+        {
+        CAknInformationNote* note = new (ELeave) CAknInformationNote();
+        note->ExecuteLD(
+                _L("CPU Time not supported in this system, using NOPs sampling"));
+        }
+
+    // get the amount of CPUs
+    iAmountOfCPUs = GetAmountOfCPUs();
+
+    // create a thread for CPU load monitoring
+    for (TInt i=0; i<iAmountOfCPUs; i++)
+        {
+        // initialize the NOP counter variables
+        iCPULoadNOPCounter[i].iCounterValue = 0;
+        iCPULoadNOPCounter[i].iCPUNumber = i;
+        iCPULoadNOPCounter[i].iAmountOfCPUs = iAmountOfCPUs;
+
+        // create a name for the thread
+        TFileName cpuLoadThreadName;
+        cpuLoadThreadName.Copy(_L("PerfMonCPULoadNOPThread"));
+        cpuLoadThreadName.AppendNum(i);
+        
+        // create the thread and resume it
+        User::LeaveIfError(iCPULoadNOPThread[i].Create(cpuLoadThreadName,
+                CPULoadNOPThread, 0x1000, 0x1000, 0x100000, &iCPULoadNOPCounter[i]));
+        iCPULoadNOPThread[i].SetPriority(EPriorityLess);
+        iCPULoadNOPThread[i].Resume();
+        }
+
+    iCurrentCPUMode = ECPUModeNOPs; // NOPs taken succesfully in use
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CPerfMonEngine::OpenHandleToNullThread()
+    {
+    // find the kernel process and then the null thread
+    TFindProcess fp(_L("ekern.exe*"));
+
+    TFullName kernelName;
+    if (fp.Next(kernelName) == KErrNone)
+        {
+        iAmountOfCPUs = 0;
+
+        // find all null threads in the system by following the order ie "Null", "Null1", "Null2", "Null3"
+        for (TInt i(0); i<KMaxCPUs; i++)
+            {
+            // construct name of the null thread from the process name
+            TFullName nullThreadName(kernelName);
+            nullThreadName.Append(_L("::Null"));
+            
+            if (i >= 1) // add identifier for CPUs higher than zero
+                nullThreadName.AppendNum(i);
+
+            TFindThread ft(nullThreadName);
+            TFullName threadName;
+
+            if (ft.Next(threadName) == KErrNone)
+                {
+                if (iNullThreads[i].Open(threadName) != KErrNone)
+                    return EFalse;
+                
+                iAmountOfCPUs++;
+                }
+            else
+                {
+                break;  // break the loop, no more matches can be found
+                }
+            }
+        }
+
+    // process not found
+    else
+        return EFalse;
+
+    // success!
+    return ETrue;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::DeActivateCPUMonitoring()
+    {
+    if (iCurrentCPUMode == ECPUModeCPUTime)
+        {
+        // close handles to null threads
+        for (TInt i=0;i<iAmountOfCPUs;i++)
+            {
+            iNullThreads[i].Close();
+            }
+        }
+
+    else if (iCurrentCPUMode == ECPUModeNOPs)
+        {
+        // kill the cpu load thread
+        for (TInt i=0;i<iAmountOfCPUs;i++)
+            {
+            iCPULoadNOPThread[i].Kill(0);
+            iCPULoadNOPThread[i].Close();
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CPerfMonEngine::CPUTimeSupported()
+    {
+    TTimeIntervalMicroSeconds time;
+    TInt err = RThread().GetCpuTime(time);
+
+    if (err == KErrNone && time.Int64() > 0)
+        return ETrue;
+    else
+        return EFalse;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CPerfMonEngine::GetAmountOfCPUs()
+    {
+    // query from HAL the amount of CPUs and then check it returns a valid value
+    TInt amountOfCPUs = UserSvr::HalFunction(EHalGroupKernel, 16 /*EKernelHalNumLogicalCpus*/, 0, 0);
+    
+    if (amountOfCPUs >= 1 && amountOfCPUs <= KMaxCPUs)
+        return amountOfCPUs;
+    else
+        return 1; // HAL may not support this feature, so just return one CPU
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TThreadPriority CPerfMonEngine::SettingItemToThreadPriority(TInt aIndex)
+    {
+    TThreadPriority threadPriority = EPriorityNull;
+
+    switch (aIndex)
+        {
+        case EThreadPriorityTypeMuchLess:
+            {
+            threadPriority = EPriorityMuchLess;
+            break;
+            }
+        case EThreadPriorityTypeLess:
+            {
+            threadPriority = EPriorityLess;
+            break;
+            }
+        case EThreadPriorityTypeNormal:
+            {
+            threadPriority = EPriorityNormal;
+            break;
+            }
+        case EThreadPriorityTypeMore:
+            {
+            threadPriority = EPriorityMore;
+            break;
+            }
+        case EThreadPriorityTypeMuchMore:
+            {
+            threadPriority = EPriorityMuchMore;
+            break;
+            }
+        case EThreadPriorityTypeRealTime:
+            {
+            threadPriority = EPriorityRealTime;
+            break;
+            }
+        case EThreadPriorityTypeAbsoluteVeryLow:
+            {
+            threadPriority = EPriorityAbsoluteVeryLow;
+            break;
+            }
+        case EThreadPriorityTypeAbsoluteLow:
+            {
+            threadPriority = EPriorityAbsoluteLow;
+            break;
+            }
+        case EThreadPriorityTypeAbsoluteBackground:
+            {
+            threadPriority = EPriorityAbsoluteBackground;
+            break;
+            }
+        case EThreadPriorityTypeAbsoluteForeground:
+            {
+            threadPriority = EPriorityAbsoluteForeground;
+            break;
+            }
+        case EThreadPriorityTypeAbsoluteHigh:
+            {
+            threadPriority = EPriorityAbsoluteHigh;
+            break;
+            }
+
+        default:
+            {
+            User::Panic(_L("Wrong tp index"), 276);
+            break;
+            }
+        }
+
+    return threadPriority;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::CreateSamplesDataArrayL()
+    {
+    TInt maxSamples =
+            iSettings.iMaxSamples >= KMinimumSamplesLength ? iSettings.iMaxSamples
+                    : KMinimumSamplesLength;
+
+    // create the data structure to store all samples
+    iSampleEntryArray = new (ELeave) CSampleEntryArray(16);
+
+    // set sample data array positions for each type
+    iCPU0PositionInSamples = 0;
+    iRAMPositionInSamples = KMaxCPUs;
+    iCDrivePositionInSamples = KMaxCPUs+1;
+    iPowerPositionInSamples = iCDrivePositionInSamples + ( ESourceI - ESourceC ) + 1;
+
+    // add all CPU source entries
+    for (TInt i=0; i<KMaxCPUs; i++)
+        {
+        TSampleEntry newSampleEntry;
+
+        newSampleEntry.iDescription.Copy(_L("CPU"));
+        newSampleEntry.iDescription.AppendNum(i);
+
+        newSampleEntry.iUnitTypeShort.Copy(KNullDesC);
+        newSampleEntry.iUnitTypeLong.Copy(KNullDesC);
+        newSampleEntry.iDriveNumber = -1;
+        newSampleEntry.iGraphColor = KRgbYellow;
+        newSampleEntry.iGraphColor.SetGreen(255-i*75);
+        newSampleEntry.iGraphColor.SetBlue(i*75);
+
+        newSampleEntry.iSampleDataArray = new(ELeave) CSampleDataArray(maxSamples);
+        iSampleEntryArray->AppendL(newSampleEntry);
+        }
+
+    // add RAM entry
+    {
+    TSampleEntry newSampleEntry;
+
+    newSampleEntry.iDescription.Copy(_L("RAM"));
+    newSampleEntry.iUnitTypeShort.Copy(_L("b"));
+    newSampleEntry.iUnitTypeLong.Copy(_L("bytes"));
+    newSampleEntry.iDriveNumber = -1;
+    newSampleEntry.iGraphColor = KRgbGreen;
+
+    newSampleEntry.iSampleDataArray = new(ELeave) CSampleDataArray(maxSamples);
+    iSampleEntryArray->AppendL(newSampleEntry);
+    }
+
+    // add all disk drives
+    for (TInt i=0; i<ESourceI-ESourceC+1; i++)
+        {
+        TSampleEntry newSampleEntry;
+
+        TChar driveLetter = 'C' + i; // C is the first drive
+
+        newSampleEntry.iDescription.Append(driveLetter);
+        newSampleEntry.iDescription.Append(_L(":"));
+        newSampleEntry.iUnitTypeShort.Copy(_L("b"));
+        newSampleEntry.iUnitTypeLong.Copy(_L("bytes"));
+
+        iEnv->FsSession().CharToDrive(driveLetter,
+                newSampleEntry.iDriveNumber);
+
+        newSampleEntry.iGraphColor = KRgbCyan;
+        newSampleEntry.iGraphColor.SetGreen(255 - (i - ESourceC) * 30);
+        newSampleEntry.iGraphColor.SetRed(i * 30);
+
+        newSampleEntry.iSampleDataArray = new (ELeave) CSampleDataArray(
+                maxSamples);
+
+        iSampleEntryArray->AppendL(newSampleEntry);
+        }
+
+    // add power entry
+    {
+    TSampleEntry newSampleEntry;
+
+    newSampleEntry.iDescription.Copy(_L("Power"));
+    newSampleEntry.iUnitTypeShort.Copy(_L("mW"));
+    newSampleEntry.iUnitTypeLong.Copy(_L("milliwatts"));
+    newSampleEntry.iDriveNumber = -1;
+    newSampleEntry.iGraphColor = KRgbRed;
+
+    newSampleEntry.iSampleDataArray = new(ELeave) CSampleDataArray(maxSamples);
+    iSampleEntryArray->AppendL(newSampleEntry);
+    }
+
+    // save current time as start time
+    iStartTime.HomeTime();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::UpdateSamplesDataL()
+    {
+    // reset inactivity timers
+    if (iSettings.iKeepBacklightOn)
+        User::ResetInactivityTime();
+
+    // get current time
+    TTime currentTime;
+    currentTime.HomeTime();
+
+    // calculate time difference
+    TTimeIntervalMicroSeconds timeDeltaFromPreviousSample =
+            currentTime.MicroSecondsFrom(iPreviousTime);
+
+    // remember current time as previous
+    iPreviousTime = currentTime;
+
+    // get CPU load value for each CPU
+    for (TInt i=0;i<iAmountOfCPUs;i++)
+        {
+        TInt64 cpuLoadDelta(0);
+        TInt64 cpuLoadFree(0);
+        TInt64 currentCPUValue(0);
+        
+        if (iCurrentCPUMode == ECPUModeCPUTime || iCurrentCPUMode == ECPUModeNOPs)
+            {
+            if (iCurrentCPUMode == ECPUModeCPUTime)
+                {
+                // get CPU time of null thread
+                TTimeIntervalMicroSeconds time;
+                iNullThreads[i].GetCpuTime(time);
+                currentCPUValue = time.Int64();
+                }
+            else if (iCurrentCPUMode == ECPUModeNOPs)
+                {
+                // get CPU time from sampler
+                currentCPUValue = iCPULoadNOPCounter[i].iCounterValue;
+                }
+
+            // get delta and store the previous value
+            cpuLoadDelta = currentCPUValue - iCPULoadPreviousValue[i];
+            iCPULoadPreviousValue[i] = currentCPUValue;
+            
+            // velocity = distance / time
+            cpuLoadFree = cpuLoadDelta * KCPUTimeMultiplier / timeDeltaFromPreviousSample.Int64();
+
+            // detect maximum value (this is common to all CPUs)
+            if (cpuLoadFree > iCPULoadMaxValue)
+                {
+                iCPULoadMaxValue = cpuLoadFree;
+                }
+            }
+
+        // save cpu sample data
+        TSampleData cpuSample;
+        cpuSample.iFree = cpuLoadFree;
+        cpuSample.iSize = iCPULoadCalibrating ? cpuLoadFree : iCPULoadMaxValue;  // if calibrating, size==free, otherwise store the correct size value
+        cpuSample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
+
+        iSampleEntryArray->At(i).iSampleDataArray->InsertL(0, cpuSample);
+        }
+        
+    // check calibration status, the calibration will be only done against CPU0
+    if (iCPULoadCalibrating)
+        {
+        iCPULoadCalibrationCounter++;
+        TInt64 cpuLoadSize = iSampleEntryArray->At(iCPU0PositionInSamples).iSampleDataArray->At(0).iSize;
+        
+        // check if need to calibrate anymore
+        if (iCPULoadCalibrationCounter > KCalibrationLength)
+            {
+            iCPULoadCalibrating = EFalse;
+            
+            // from the samples, get the minimum value, and let it be the max value
+            for (TInt i=0; i<iSampleEntryArray->At(0).iSampleDataArray->Count(); i++)
+                {
+                TInt64 newCPULoadMaxValue = iCPULoadMaxValue;
+                
+                if (iSampleEntryArray->At(0).iSampleDataArray->At(i).iFree < newCPULoadMaxValue)
+                    {
+                    newCPULoadMaxValue = iSampleEntryArray->At(0).iSampleDataArray->At(i).iFree;
+                    }
+                
+                iCPULoadMaxValue = newCPULoadMaxValue;
+                }
+            
+            // adjust priority of the poller thread
+            if (iCurrentCPUMode == ECPUModeNOPs)
+                {
+                for (TInt i=0; i<iAmountOfCPUs; i++)
+                    {
+                    iCPULoadNOPThread[i].SetPriority(EPriorityAbsoluteVeryLow);
+                    }
+                }
+
+            }
+        }
+
+    // get ram memory
+    TMemoryInfoV1Buf ramMemory;
+    UserHal::MemoryInfo(ramMemory);
+
+    TSampleData memorySample;
+    memorySample.iFree = ramMemory().iFreeRamInBytes;
+    memorySample.iSize = ramMemory().iMaxFreeRamInBytes;
+    memorySample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
+
+    iSampleEntryArray->At(iRAMPositionInSamples).iSampleDataArray->InsertL(0, memorySample);
+    
+    // all drives
+    for (TInt i = iCDrivePositionInSamples; i < iPowerPositionInSamples; i++)
+        {
+        TSampleData driveSample;
+
+        // get volume info from RFs
+        TVolumeInfo volumeInfo;
+        if (iEnv->FsSession().Volume(volumeInfo,
+                iSampleEntryArray->At(i).iDriveNumber) == KErrNone)
+            {
+            driveSample.iFree = volumeInfo.iFree;
+            driveSample.iSize = volumeInfo.iSize;
+            }
+        else
+            {
+            driveSample.iFree = 0;
+            driveSample.iSize = 0;
+            }
+
+        driveSample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
+
+        iSampleEntryArray->At(i).iSampleDataArray->InsertL(0, driveSample);
+        }
+
+    // Power data
+    TSampleData powerSample;
+    if (iSettings.iPowerMonitoringEnabled)
+        {
+        // Values in milliwatts
+        powerSample.iFree = ( iPowerClient->GetMaxPower() - iPowerClient->GetPower() ) / 1000;
+        powerSample.iSize = iPowerClient->GetMaxPower() / 1000;
+        }
+    else
+        {
+        powerSample.iFree = 0;
+        powerSample.iSize = 0;
+        }
+
+    powerSample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
+
+    iSampleEntryArray->At(iPowerPositionInSamples).iSampleDataArray->InsertL(0, powerSample);
+
+    // compress sample data arrays to save memory
+    TInt curLength(iSampleEntryArray->At(0).iSampleDataArray->Count());
+
+    TInt maxSamples =
+            iSettings.iMaxSamples >= KMinimumSamplesLength ? iSettings.iMaxSamples
+                    : KMinimumSamplesLength;
+
+    if (curLength > maxSamples && curLength % 5 == 0)
+        {
+        for (TInt i = 0; i < iSampleEntryArray->Count(); i++)
+            {
+            if (SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                iSampleEntryArray->At(i).iSampleDataArray->ResizeL(maxSamples); // looses old samples
+                iSampleEntryArray->At(i).iSampleDataArray->Compress();
+                }
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::AppendLatestSamplesToLogsL()
+    {
+    if (iSettings.iLoggingEnabled && SampleEntryArray())
+        {
+        // loop all sources
+        for (TInt i = 0; i < SampleEntryArray()->Count(); i++)
+            {
+            // check if this setting has been enabled and it has some data
+            if (iSettings.iLoggingSources.iSrcEnabled[SampleEntryPosToSettingPos(i)]
+                    && SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                // get current sample
+                TSampleData& currentSample =
+                        SampleEntryArray()->At(i).iSampleDataArray->At(0);
+
+                TBuf<128> buf;
+                buf.Append(_L("PERFMON;"));
+                buf.Append(SampleEntryArray()->At(i).iDescription);
+                buf.Append(_L(";"));
+                buf.AppendNum(currentSample.iTimeFromStart.Int64());
+                buf.Append(_L(";"));
+                buf.AppendNum(currentSample.iFree);
+                buf.Append(_L(";"));
+                buf.AppendNum(currentSample.iSize);
+
+                // print to RDebug
+                if (iSettings.iLoggingMode == ELoggingModeRDebug
+                        || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
+                    {
+                    RDebug::Print(buf);
+                    }
+
+                // print to log file
+                if (iSettings.iLoggingMode == ELoggingModeLogFile
+                        || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
+                    {
+                    buf.Append(_L("\r\n"));
+
+                    TBuf8<128> buf8;
+                    buf8.Copy(buf);
+
+                    iLogFile.Write(buf8);
+                    }
+                }
+            }
+        }
+    }
+
+void CPerfMonEngine::LoadSettingsL()
+    {
+    // set defaults
+    iSettings.iHeartBeat = 600;
+    iSettings.iMaxSamples = 64;
+    iSettings.iPriority = EThreadPriorityTypeNormal;
+    iSettings.iCPUMode = ECPUModeCPUTime;
+    iSettings.iKeepBacklightOn = ETrue;
+
+    iSettings.iDataPopupVisibility = EDataPopupVisbilityAlwaysOn;
+    iSettings.iDataPopupLocation = EDataPopupLocationTopRight;
+    iSettings.iDataPopupSources.SetDefaults1();
+
+    iSettings.iGraphsVerticalBarPeriod = 5;
+    iSettings.iGraphsSources.SetDefaults2();
+
+    iSettings.iLoggingMode = ELoggingModeRDebug;
+    iSettings.iLoggingFilePath.Copy(KDefaultLogFilePath);
+    iSettings.iLoggingSources.SetDefaults2();
+
+    iSettings.iLoggingEnabled = EFalse;
+
+    iSettings.iPowerMonitoringEnabled = ETrue;
+
+    // make sure that the private path of this app in c-drive exists
+    iEnv->FsSession().CreatePrivatePath(KSettingsDrive); // c:\\private\\20011385\\
+    
+    // handle settings always in the private directory 
+    if (iEnv->FsSession().SetSessionToPrivate(KSettingsDrive) == KErrNone)
+        {
+        const TUid KUidPerfMon =
+            {
+            0x20011385
+            };
+        // open or create a dictionary file store
+        CDictionaryFileStore* settingsStore = CDictionaryFileStore::OpenLC(
+                iEnv->FsSession(), KSettingsFileName, KUidPerfMon);
+
+        LoadDFSValueL(settingsStore, KPMSettingHeartBeat, iSettings.iHeartBeat);
+        LoadDFSValueL(settingsStore, KPMSettingMaxSamples,
+                iSettings.iMaxSamples);
+        LoadDFSValueL(settingsStore, KPMSettingPriority, iSettings.iPriority);
+        
+        LoadDFSValueL(settingsStore, KPMSettingCPUMode, iSettings.iCPUMode);
+        
+        LoadDFSValueL(settingsStore, KPMSettingKeepBackLightOn,
+                iSettings.iKeepBacklightOn);
+
+        LoadDFSValueL(settingsStore, KPMSettingDataPopupVisbility,
+                iSettings.iDataPopupVisibility);
+        LoadDFSValueL(settingsStore, KPMSettingDataPopupLocation,
+                iSettings.iDataPopupLocation);
+        LoadDFSValueL(settingsStore, KPMSettingDataPopupSources,
+                iSettings.iDataPopupSources);
+
+        LoadDFSValueL(settingsStore, KPMSettingGraphsVerticalBarPeriod,
+                iSettings.iGraphsVerticalBarPeriod);
+        LoadDFSValueL(settingsStore, KPMSettingGraphsSources,
+                iSettings.iGraphsSources);
+
+        LoadDFSValueL(settingsStore, KPMSettingLoggingMode,
+                iSettings.iLoggingMode);
+        LoadDFSValueL(settingsStore, KPMSettingLoggingFilePath,
+                iSettings.iLoggingFilePath);
+        LoadDFSValueL(settingsStore, KPMSettingLoggingSources,
+                iSettings.iLoggingSources);
+
+        LoadDFSValueL(settingsStore, KPMSettingPowerMonitoringEnabled,
+                iSettings.iPowerMonitoringEnabled);
+
+        CleanupStack::PopAndDestroy(); // settingsStore
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonEngine::SaveSettingsL()
+    {
+    // handle settings always in c:\\private\\20011385\\ 
+    if (iEnv->FsSession().SetSessionToPrivate( KSettingsDrive ) == KErrNone)
+        {
+        // delete existing store to make sure that it is clean and not eg corrupted
+        if (BaflUtils::FileExists(iEnv->FsSession(), KSettingsFileName))
+            {
+            iEnv->FsSession().Delete(KSettingsFileName);
+            }
+        const TUid KUidPerfMon =
+            {
+            0x20011385
+            };
+        // create a dictionary file store
+        CDictionaryFileStore* settingsStore = CDictionaryFileStore::OpenLC(
+                iEnv->FsSession(), KSettingsFileName, KUidPerfMon);
+
+        SaveDFSValueL(settingsStore, KPMSettingHeartBeat, iSettings.iHeartBeat);
+        SaveDFSValueL(settingsStore, KPMSettingMaxSamples,
+                iSettings.iMaxSamples);
+        SaveDFSValueL(settingsStore, KPMSettingPriority, iSettings.iPriority);
+        SaveDFSValueL(settingsStore, KPMSettingCPUMode, iSettings.iCPUMode);
+        SaveDFSValueL(settingsStore, KPMSettingKeepBackLightOn,
+                iSettings.iKeepBacklightOn);
+
+        SaveDFSValueL(settingsStore, KPMSettingDataPopupVisbility,
+                iSettings.iDataPopupVisibility);
+        SaveDFSValueL(settingsStore, KPMSettingDataPopupLocation,
+                iSettings.iDataPopupLocation);
+        SaveDFSValueL(settingsStore, KPMSettingDataPopupSources,
+                iSettings.iDataPopupSources);
+
+        SaveDFSValueL(settingsStore, KPMSettingGraphsVerticalBarPeriod,
+                iSettings.iGraphsVerticalBarPeriod);
+        SaveDFSValueL(settingsStore, KPMSettingGraphsSources,
+                iSettings.iGraphsSources);
+
+        SaveDFSValueL(settingsStore, KPMSettingLoggingMode,
+                iSettings.iLoggingMode);
+        SaveDFSValueL(settingsStore, KPMSettingLoggingFilePath,
+                iSettings.iLoggingFilePath);
+        SaveDFSValueL(settingsStore, KPMSettingLoggingSources,
+                iSettings.iLoggingSources);
+
+        SaveDFSValueL(settingsStore, KPMSettingPowerMonitoringEnabled,
+                iSettings.iPowerMonitoringEnabled);
+
+        settingsStore->CommitL();
+        CleanupStack::PopAndDestroy(); // settingsStore
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, TInt& aValue)
+    {
+    if (aDicFS->IsPresentL(aUid))
+        {
+        RDictionaryReadStream in;
+        in.OpenLC(*aDicFS, aUid);
+        aValue = in.ReadInt16L();
+        CleanupStack::PopAndDestroy(); // in        
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, TDes& aValue)
+    {
+    if (aDicFS->IsPresentL(aUid))
+        {
+        RDictionaryReadStream in;
+        in.OpenLC(*aDicFS, aUid);
+        TInt bufLength = in.ReadInt16L(); // get length of descriptor
+        in.ReadL(aValue, bufLength); // get the descriptor itself
+        CleanupStack::PopAndDestroy(); // in
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, TPerfMonSources& aValue)
+    {
+    if (aDicFS->IsPresentL(aUid))
+        {
+        RDictionaryReadStream in;
+        in.OpenLC(*aDicFS, aUid);
+        TInt bufLength = in.ReadInt16L(); // get length of the array
+
+        if (bufLength < 0 || bufLength > ESourcesLength) // check for validaty
+            User::Leave(KErrNotSupported);
+
+        for (TInt i = 0; i < bufLength; i++) // get all items
+            aValue.iSrcEnabled[i] = in.ReadInt16L();
+
+        CleanupStack::PopAndDestroy(); // in
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, const TInt& aValue)
+    {
+    RDictionaryWriteStream out;
+    out.AssignLC(*aDicFS, aUid);
+    out.WriteInt16L(aValue);
+    out.CommitL();
+    CleanupStack::PopAndDestroy(); // out
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, const TDes& aValue)
+    {
+    RDictionaryWriteStream out;
+    out.AssignLC(*aDicFS, aUid);
+    out.WriteInt16L(aValue.Length()); // write length of the descriptor
+    out.WriteL(aValue, aValue.Length()); // write the descriptor itself
+    out.CommitL();
+    CleanupStack::PopAndDestroy(); // out
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
+        const TUid& aUid, const TPerfMonSources& aValue)
+    {
+    RDictionaryWriteStream out;
+    out.AssignLC(*aDicFS, aUid);
+
+    out.WriteInt16L(ESourcesLength); // write length of the array
+
+    for (TInt i = 0; i < ESourcesLength; i++) // write all items
+        out.WriteInt16L(aValue.iSrcEnabled[i]);
+
+    out.CommitL();
+    CleanupStack::PopAndDestroy(); // out
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::ActivatePowerMonitoringL()
+    {
+    if (!iPowerClient)
+        {
+        iPowerClient = CPerfMonPowerListener::NewL();
+        }
+
+    // disable power monitoring if initialization fails
+    TInt err = iPowerClient->Activate();
+    if (err != KErrNone )
+        {
+        DeActivatePowerMonitoring();
+
+        iSettings.iPowerMonitoringEnabled = EFalse;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+void CPerfMonEngine::DeActivatePowerMonitoring()
+    {
+    if (iPowerClient)
+        {
+        iPowerClient->DeActivate();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+
+TInt CPerfMonEngine::SampleEntryPosToSettingPos(TInt aSampleEntryPos)
+    {
+    TInt settingPos(0); // return position of aSampleEntryPos in settings
+    
+    if (aSampleEntryPos >= iCPU0PositionInSamples && aSampleEntryPos < iRAMPositionInSamples)
+        {
+        settingPos = ESourceCPU;
+        }
+    else if (aSampleEntryPos == iRAMPositionInSamples)
+        {
+        settingPos = ESourceRAM;
+        }
+    else
+        {
+        settingPos = ESourceC + (aSampleEntryPos-iCDrivePositionInSamples);
+        }
+    
+    return settingPos;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/engine/src/perfmon_powerlistener.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,262 @@
+/*
+ * 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 FILES
+#include "perfmon_powerlistener.h"
+#include "../../symbian_version.hrh"
+
+#include <centralrepository.h>
+#include <hwrm/hwrmpowerdomaincrkeys.h>
+
+
+#if (SYMBIAN_VERSION_SUPPORT == SYMBIAN_3)
+
+    CPerfMonPowerListener* CPerfMonPowerListener::NewL()
+        {
+        CPerfMonPowerListener* self = new (ELeave) CPerfMonPowerListener();
+        CleanupStack::PushL(self);
+        self->ConstructL();
+        CleanupStack::Pop();
+        return self;
+        }
+
+    // --------------------------------------------------------------------------------------------
+
+    CPerfMonPowerListener::CPerfMonPowerListener() :
+        iHWRMPower(0),
+        iLastPowerAvg(0),
+        iMaxPower(0),
+        iOriginalMaxReportingPeriod(0)
+        {
+        }
+
+    // --------------------------------------------------------------------------------------------
+
+    void CPerfMonPowerListener::ConstructL()
+        {
+        }
+
+    // --------------------------------------------------------------------------------------------
+
+    CPerfMonPowerListener::~CPerfMonPowerListener()
+        {
+        DeActivate();
+        
+        if (iHWRMPower != 0)
+            {
+            delete iHWRMPower;
+            iHWRMPower = 0;
+            }
+        }
+
+    // --------------------------------------------------------------------------------------------
+
+    TBool CPerfMonPowerListener::IsSupported()
+        {
+        return ETrue;
+        }
+
+    // --------------------------------------------------------------------------------------------
+
+    TInt CPerfMonPowerListener::Activate()
+        {
+        if (iHWRMPower == 0)
+            {
+            TRAPD(err, iHWRMPower = CHWRMPower::NewL());
+            if (err != KErrNone)
+                {
+                return err;
+                }
+
+            // Callbacks to this object
+            err = iHWRMPower->SetPowerReportObserver(this);
+            if (err != KErrNone)
+                {
+                return err;
+                }
+            
+            TRAP_IGNORE(GetReportingPeriodL());
+            }
+
+        // Set infinite reporting period
+        TRAPD(err, SetReportingPeriodL(KReportingDuration));
+        if (err != KErrNone)
+            {
+            return err;
+            }
+
+        TRequestStatus status(KRequestPending);
+
+        // Start the power consumption notification
+        iHWRMPower->StartAveragePowerReporting(status, KSampleIntervalMultiple);
+        User::WaitForRequest(status);
+
+        // Check if monitoring was succesfully started or already ongoing.
+        if ((status.Int() != KErrNone) && (status.Int() != KErrAlreadyExists))
+            {
+            return status.Int();
+            }
+
+        return KErrNone;
+        }
+
+    // ---------------------------------------------------------------------------
+
+    void CPerfMonPowerListener::DeActivate()
+        {
+        if (iHWRMPower != 0)
+            {
+            TRAP_IGNORE(iHWRMPower->StopAveragePowerReportingL());
+            }
+
+        // Restore original value to max sampling duration
+        TRAP_IGNORE(SetReportingPeriodL(iOriginalMaxReportingPeriod));
+
+        iPowerBuffer.Reset();
+        iLastPowerAvg = 0;
+        }
+
+    // ---------------------------------------------------------------------------
+
+    TInt CPerfMonPowerListener::GetPower()
+        {
+        TInt avgPower = 0;
+        TInt newValueCount = iPowerBuffer.Count();
+
+        if (newValueCount > 0)
+            {
+            // Read all new values from buffer and calculate average from them.
+            for (int i = 0; i < newValueCount; i++)
+                {
+                avgPower += iPowerBuffer[i];
+                }
+            avgPower = avgPower / newValueCount;
+
+            iPowerBuffer.Reset();
+            iLastPowerAvg = avgPower;
+            }
+        else
+            {
+            avgPower = iLastPowerAvg;
+            }
+
+        return avgPower;
+        }
+
+    // ---------------------------------------------------------------------------
+
+    void CPerfMonPowerListener::PowerMeasurement(TInt aErrCode, CHWRMPower::TBatteryPowerMeasurementData& aMeasurement)
+        {
+        if (aErrCode == KErrNone)
+            {
+            // Store new value to buffer to wait for reading
+            TInt value = aMeasurement.iAverageVoltage * aMeasurement.iAverageCurrent;
+
+            // If charger is connected, reported values may be negative.
+            if (value < 0)
+                {
+                value = 0;
+                }
+
+            iPowerBuffer.Append(value);
+
+            if ( value > iMaxPower )
+                {
+                iMaxPower = value;
+                }
+            }
+        // Ignore any errors
+        }
+
+    void CPerfMonPowerListener::GetReportingPeriodL()
+        {
+        CRepository* cenRep = CRepository::NewL(KCRUidPowerSettings);
+
+        CleanupStack::PushL(cenRep);
+        User::LeaveIfError(cenRep->Get(KPowerMaxReportingPeriod, iOriginalMaxReportingPeriod));
+        CleanupStack::Pop();
+
+        delete cenRep;
+        }
+
+    void CPerfMonPowerListener::SetReportingPeriodL(TInt aDuration)
+        {
+        CRepository* cenRep = CRepository::NewL(KCRUidPowerSettings);
+
+        CleanupStack::PushL(cenRep);
+        User::LeaveIfError(cenRep->Set(KPowerMaxReportingPeriod, aDuration));
+        CleanupStack::Pop();
+        
+        delete cenRep;
+        }
+
+// SYMBIAN_VERSION_SUPPORT < SYMBIAN_3
+#else
+
+    // Stub implementation for older Symbian versions
+
+    CPerfMonPowerListener* CPerfMonPowerListener::NewL()
+        {
+        CPerfMonPowerListener* self = new (ELeave) CPerfMonPowerListener();
+        CleanupStack::PushL(self);
+        self->ConstructL();
+        CleanupStack::Pop();
+        return self;
+        }
+
+    CPerfMonPowerListener::CPerfMonPowerListener() :
+        iHWRMPower(0),
+        iLastPowerAvg(0),
+        iMaxPower(0)
+        {
+        }
+
+    void CPerfMonPowerListener::ConstructL()
+        {
+        }
+
+    CPerfMonPowerListener::~CPerfMonPowerListener()
+        {
+        DeActivate();
+        }
+
+    TBool CPerfMonPowerListener::IsSupported()
+        {
+        return EFalse;
+        }
+
+    TInt CPerfMonPowerListener::Activate()
+        {
+        return KErrNotSupported;
+        }
+
+    void CPerfMonPowerListener::DeActivate()
+        {
+        }
+
+    TInt CPerfMonPowerListener::GetPower()
+        {
+        return 0;
+        }
+
+    void CPerfMonPowerListener::PowerMeasurement(TInt aErrCode, CHWRMPower::TBatteryPowerMeasurementData& aMeasurement)
+        {
+        }
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/envpatcher/EnvPatcher.pl	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,544 @@
+#
+# 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:
+# Environment Patcher - Patches older S60 SDKs for supporting
+# tricks in newer platforms
+#
+
+
+require v5.6.1;	
+
+use File::Copy;
+use strict;
+
+# check amount of commandline options is valid
+if (@ARGV != 1)
+{
+    print "Usage: EnvPatcher <EPOCROOT>\n";
+    exit 1;
+}
+
+
+# get epocroot and convert, convert \ -> /
+(my $epocroot = $ARGV[0]) =~ s{\\}{/}g;
+
+# remove any trailing forward slashes
+$epocroot =~ s/\/$//;
+
+
+# create variables for paths
+my $e32toolsdir = $epocroot."/epoc32/tools";
+my $e32includedir = $epocroot."/epoc32/include";
+my $e32includeoemdir = $e32includedir."/oem";
+my $platformpathspath = $e32includedir."/platform_paths.hrh";
+my $domainplatformpathspath = $e32includedir."/domain/osextensions/platform_paths.hrh";
+my $mmppmpath = $e32toolsdir."/mmp.pm";
+my $pathutlpmpath = $e32toolsdir."/pathutl.pm";
+my $prepfilepmpath = $e32toolsdir."/prepfile.pm";
+
+# variables for hacked content
+my $dependshack = "\t\t\tif (/^DEPENDS\$/o) {\r\n\t\t\t\tnext LINE;  # Ignore DEPENDS keyword, not needed by ABLD\r\n\t\t\t}\r\n";
+my $smpsafehack = "\t\tif (/^SMPSAFE\$/o) {\r\n\t\t\tnext LINE;  # Ignore SMPSAFE keyword, not needed by older environments\r\n\t\t}\r\n";
+my $forwardslashhack = "\t\t# EnvPatcher forwardslash hack begins\r\n\t\t\$_=~s{/}{\\\\}g;   # convert all forward slashes to backslashes\r\n\t\t# EnvPatcher forwardslash hack ends\r\n\r\n";
+my $coreibyexportsupport = "\r\n// Following definition is used for exporting tools and stubs IBY files to\r\n// Core image.\r\n#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/##exported\r\n";
+
+
+# check epoc32\tools exists
+unless (-d $e32toolsdir)
+{
+    print "$e32toolsdir not found, please check valid epocroot has been given!\n";
+    exit 1;
+}
+
+# check epoc32\include exists
+unless (-d $e32includedir)
+{
+    print "$e32includedir not found, please check valid epocroot has been given!\n";
+    exit 1;
+}
+
+
+# create epoc32\include\oem if it does not exist
+unless (-d $e32includeoemdir)
+{
+    mkdir $e32includeoemdir or die;
+    print "Missing directory $e32includeoemdir created succesfully.\n";
+}
+
+
+# check if epoc32\include\domain\osextensions\platform_paths.hrh exists
+if (-e $domainplatformpathspath)
+{
+    # show an error if the file does not have any platform macros
+    unless (string_exists_in_file($domainplatformpathspath, "OS_LAYER_SYSTEMINCLUDE"))
+    {
+        print "ERROR: $domainplatformpathspath does not have SF macros.\n";
+        print "Please check your environment, if you have S60 3.2 OEM or newer, please get the latest version!\n";
+        exit 2;
+    }
+}
+
+
+# check if epoc32\include\platform_paths.hrh exists
+if (-e $platformpathspath)
+{
+    print "$platformpathspath already exists, not checking it.\n";    
+}
+else
+{
+    # create the file missing file
+    create_default_platform_paths_hrh();
+    print "Missing file $platformpathspath created succesfully.\n";    
+}
+
+
+# check if CORE_IBY_EXPORT_PATH macro exist in the platform_paths.hrh
+unless (string_exists_in_file($platformpathspath, "CORE_IBY_EXPORT_PATH"))
+{
+    # read content of the platform_paths.hrh
+    my @filecontent = read_file_to_array($platformpathspath);  
+
+    my $match_found = 0;
+    my $i = 0;
+    my $match_found_pos = 0;
+    
+    # find the position where the include guards start (this should be a safe position)
+    foreach (@filecontent)
+    {
+        if ($_ =~ /#define PLATFORM_PATHS_HRH/)
+        {
+            $match_found = 1;
+            $match_found_pos = $i;
+            last;
+        } 
+
+        $i++;
+    }
+    
+    if ($match_found)
+    {
+        # insert the patched content to the file
+        splice(@filecontent, $match_found_pos+1, 0, $coreibyexportsupport);
+        
+        # write the modified array to the file
+        write_file_from_array($platformpathspath, @filecontent);
+    
+        print "Platform_paths.hrh updated to support CORE_IBY_EXPORT_PATH macro.\n";
+    }
+    else
+    {
+        print "WARNING: $platformpathspath is corrupted or not supported!\n";    
+    }
+}
+ 
+    
+# check if epoc32\tools\mmp.pm exists
+if (-e $mmppmpath)
+{
+    # check if DEPENDS keyword already exists in the file
+    if (string_exists_in_file($mmppmpath, "DEPENDS"))
+    {
+        print "The SDK can already handle DEPENDS keyword in a MMP file.\n";        
+    }
+    else
+    {
+        # read content of the mmp.pm file
+        my @filecontent = read_file_to_array($mmppmpath);
+        
+        my $match_found = 0;
+        my $i = 0;
+        my $match_found_pos = 0;
+        
+        # loop through the array to find the correct place
+        foreach (@filecontent)
+        {
+            if ($_ =~ /Unrecognised Resource Keyword/)
+            {
+                $match_found = 1;
+                $match_found_pos = $i;
+                last;
+            } 
+
+            $i++;
+        }
+        
+        if ($match_found)
+        {
+            # insert the patched content to the file
+            splice(@filecontent, $match_found_pos-1, 0, $dependshack);
+            
+            # write the modified array to the file
+            write_file_from_array($mmppmpath, @filecontent);
+        
+            print "Mmp.pm patched with DEPENDS keyword hack.\n";
+        }
+        else
+        {
+            print "ERROR: Unable to find correct place from $mmppmpath for patching!\n";
+            print "Your SDK environment probably is not supported by this script!\n";
+            exit(2);    
+        }
+    }
+
+    # check if SMPSAFE keyword already exists in the file
+    if (string_exists_in_file($mmppmpath, "SMPSAFE"))
+    {
+        print "The SDK can already handle SMPSAFE keyword in a MMP file.\n";        
+    }
+    else
+    {
+        # read content of the mmp.pm file
+        my @filecontent = read_file_to_array($mmppmpath);
+        
+        my $match_found = 0;
+        my $i = 0;
+        my $match_found_pos = 0;
+        
+        # loop through the array to find the correct place
+        foreach (@filecontent)
+        {
+            if ($_ =~ /Unrecognised Keyword/)
+            {
+                $match_found = 1;
+                $match_found_pos = $i;
+                last;
+            } 
+
+            $i++;
+        }
+        
+        if ($match_found)
+        {
+            # insert the patched content to the file
+            splice(@filecontent, $match_found_pos, 0, $smpsafehack);
+            
+            # write the modified array to the file
+            write_file_from_array($mmppmpath, @filecontent);
+        
+            print "Mmp.pm patched with SMPSAFE keyword hack.\n";
+        }
+        else
+        {
+            print "ERROR: Unable to find correct place from $mmppmpath for patching!\n";
+            print "Your SDK environment probably is not supported by this script!\n";
+            exit(2);    
+        }
+    }
+}
+else
+{
+    print "WARNING: $mmppmpath not found, this environment is not supported!\n";
+}
+
+
+# check if epoc32\tools\pathutl.pm exists
+if (-e $pathutlpmpath)
+{
+    # check if "sub Path_Norm" already exists in the pathutil.pm file
+    # if it does not exists, then we need to patch prepfile.pm
+    if (string_exists_in_file($pathutlpmpath, "sub Path_Norm"))
+    {
+        print "The SDK is non Symbian OS 9.1, no need to add forward slash hack.\n";        
+    }
+    else
+    {
+        # check if prepfile.pm has already been patched
+        if (string_exists_in_file($prepfilepmpath, "EnvPatcher forwardslash hack"))
+        {        
+            print "The SDK has already been patched with forwardslash hack.\n";         
+        }
+        else
+        {    
+            # read content of the prepfile.pm file
+            my @filecontent = read_file_to_array($prepfilepmpath);  
+    
+            my $match_found = 0;
+            my $i = 0;
+            my $match_found_pos = 0;
+            
+            # loop through the array to find the correct place
+            foreach (@filecontent)
+            {
+                if ($_ =~ /# skip blank lines/)
+                {
+                    $match_found = 1;
+                    $match_found_pos = $i;
+                    last;
+                } 
+    
+                $i++;
+            }
+            
+            if ($match_found)
+            {
+                # insert the patched content to the file
+                splice(@filecontent, $match_found_pos+6, 0, $forwardslashhack);
+                
+                # write the modified array to the file
+                write_file_from_array($prepfilepmpath, @filecontent);
+            
+                print "Prepfile.pm patched with forward slash hack.\n";
+            }
+            else
+            {
+                print "ERROR: Unable to find correct place from $prepfilepmpath for patching!\n";
+                print "Your SDK environment probably is not supported by this script!\n";
+                exit(2);    
+            }
+        }
+    }    
+}
+else
+{
+    print "WARNING: $pathutlpmpath not found, this environment is not supported!\n";
+}
+ 
+ 
+ 
+# checks if string exists in the file    
+sub string_exists_in_file
+{
+    my $filepath = $_[0];
+    my $findstring = $_[1];
+    my $match_found = 0;     
+
+    open(FILE, "<", $filepath) or die "Failed to open $filepath for reading!";
+
+    # loop through the file for occurances
+    while (<FILE>)
+    {
+        if ($_ =~ /$findstring/)
+        {
+            $match_found = 1;
+            last;
+        } 
+    }
+
+    close FILE;
+    
+    return $match_found;
+}
+
+
+# reads lines from a file to an array    
+sub read_file_to_array
+{
+    my $filepath = $_[0];
+
+    open(FILE, "<", $filepath) or die "Failed to open $filepath for reading!";
+    my @data = <FILE>;
+    close FILE;
+    
+    return(@data);
+}
+
+
+# writes lines from an array to a file
+sub write_file_from_array
+{
+    my ($filepath, @data) = @_;
+    
+    # take a backup of the file
+    copy ($filepath, $filepath."EnvPatcher") or die "Cannot take backup of $filepath to $filepath.EnvPatcher";
+        
+    open(FILE, ">", $filepath) or die "Failed to open $filepath for writing!";
+
+    # write the array to file
+    foreach my $line (@data)
+    {
+        print FILE "$line";
+    }
+
+    close FILE;
+}
+
+sub create_default_platform_paths_hrh
+{
+    # the file does not exist, so create the missing file
+    open(FILE, ">", $platformpathspath) or die "Failed to open $platformpathspath for writing!\n";
+    
+    print FILE <<ENDOFTHEFILE;
+#ifndef PLATFORM_PATHS_HRH
+#define PLATFORM_PATHS_HRH
+
+/**
+* ---------------------------------------
+* Location, where the applications layer specific public headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+#define APP_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
+#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the applications layer specific platform headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
+#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the middleware layer specific public headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+#define MW_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
+#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the middleware layer specific platform headers should be exported
+* ---------------------------------------
+*/
+#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
+#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the os layer specific public headers should be exported
+* ---------------------------------------
+*/
+#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
+#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the os specific platform headers should be exported
+* ---------------------------------------
+*/
+#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
+#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
+
+/**
+* ---------------------------------------
+* Location, where the  cenrep excel sheets should be exported
+* Deprecated: should no longer be used. Kept for compability.
+* ---------------------------------------
+*/
+#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
+* used in the mmp-files that are part of the applications-layer. It includes all 
+* the needed directories from the /epoc32/include, that are valid ones for the 
+* application-layer components. 
+*
+* Applications layer is the last one in the list, since most likely the most of 
+* the headers come from middleware or os-layer  => thus they are first.
+*/
+#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
+ 
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the middleware-layer. It includes all 
+* the needed directories from the /epoc32/include, that are valid ones for the 
+* middleware-layer components. 
+*/
+#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the  osextensions-layer. It includes all
+* the needed directories from the /epoc32/include, that are valid ones for the
+* os-layer components. 
+*/
+#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
+
+
+// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
+// used.
+#define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the os-layer. This is intended 
+* to be only used by those components which need to use in their mmp-file either
+* kern_ext.mmh or nkern_ext.mmh. Reason is that those
+* 2 files already contain the /epoc32/include  as system include path.
+* 
+*/
+#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include/oem
+
+
+// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
+// has to be used.
+#define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
+
+/**
+****************************************************************************
+* Definitions that also define the paths to the layer specific source directories.
+****************************************************************************
+*/
+/**
+* The below 3 macros define the paths to the layer-specific source dirs.
+* See usage on top of this hrh-file, these are used the same way as 
+* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
+* Deprecated: is not allowed to be using in Symbian Foundation
+*/
+#define APP_LAYER_SOURCE_PATH(rest)    /s60/app/##rest
+#define MW_LAYER_SOURCE_PATH(rest)     /s60/mw/##rest
+#define OSEXT_LAYER_SOURCE_PATH(rest)  /s60/osext/##rest
+
+/**
+****************************************************************************
+* Definitions to export IBY files to different folders where they will be taken 
+* to ROM image
+****************************************************************************
+*/
+// Following definition is used for exporting tools and stubs IBY files to 
+// Core image.
+#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/##exported
+
+/**
+* ---------------------------------------
+* Macros for Configuration tool migration. 
+* The below macros define the location under epoc32, where the confml 
+* (Configuration Markup Language) and crml (Central Repository Markup Language) 
+* files should be exported.
+* ---------------------------------------
+*/
+#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
+#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
+#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
+#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
+
+#define APP_LAYER_CONFML(exported) 	                CONFML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
+                                                    
+#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
+       
+// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
+#define OSEXT_LAYER_CONFML(exported)                CONFML_EXPORT_PATH(exported,s60)
+#define OSEXT_LAYER_CRML(exported)                  CRML_EXPORT_PATH(exported,s60)
+#define OSEXT_LAYER_GCFML(exported)                 GCFML_EXPORT_PATH(exported,s60)
+#define OSEXT_LAYER_CONFML_CONFIG(exported)         CONFML_CONFIG_EXPORT_PATH(exported,s60)
+#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
+
+#endif  // end of PLATFORM_PATHS_HRH
+
+ENDOFTHEFILE
+
+    close FILE;    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/envpatcher/ReadMe.txt	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,46 @@
+Environment Patcher v1.0.1
+==========================
+
+Updated: 12th November 2009
+
+
+Introduction:
+-------------
+This tool can be used to patch your S60 SDK environment so that the tricks and
+macros introduced in the latest SDKs can be used in a public SDK and older
+OEM releases.
+
+This tool can perform the following tasks:
+- Adds support for forward slashes in paths in bld.inf/.mmp files in S60 3.0 
+- Removes an unncessary warning about DEPENDS and SMPSAFE resource keywords in
+  an .mmp file
+- Creates a missing epoc32\include\platform_paths.hrh file for supporting
+  platform macros introduced since S60 3.2 OEM and Symbian Foundation releases
+- Modifies epoc32\include\platform_paths.hrh for missing macros   
+- Creates a missing epoc32\include\oem directory to suppress a possible warning
+
+
+Usage:
+------
+EnvPatcher.pl <EPOCROOT>
+
+Where EPOCROOT is the path to the root of the SDK, for example:
+  EnvPatcher.pl c:\Symbian\9.1\S60_3rd_MR
+  EnvPatcher.pl z:\
+
+
+Requirements:
+-------------
+- S60 SDK (public or OEM), version 3.0 or newer
+- Perl 5.6.1 or newer
+
+
+
+
+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".
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/ReleaseNotes_PerfMon.txt	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,95 @@
+===============================================================================
+
+RELEASE NOTES - PERFORMANCE MONITOR v1.2.0
+RELEASED 26th August 2010 
+
+SUPPORTS S60 5.2+
+
+===============================================================================
+
+Product Description:
+====================
+PerfMon is an S60 UI application that you can use to monitor and log CPU load
+in a device. You can also use it to monitor and log the consumption of memory
+(RAM and disk drives) in a device. 
+
+Main Features:
+==============
+- Three different monitor views for CPU load, RAM and disk usage:
+  - Values
+  - Graphs
+  - Popup (always on top) 
+- Supports CPU load sampling via a null thread CPU counter or with NOPs
+- Source selections for graphs, popup and logging
+- Heartbeat and thread priority configurable via settings
+- Logging to RDebug and/or to a file
+
+===============================================================================
+
+What's New in v1.2.0
+====================
+- SMP support
+- Added power usage statistics
+- Error corrections  
+
+===============================================================================
+
+Installation Notes:
+===================
+PerfMon is typically preinstalled on ROM. If not, it can be added to the
+ROM with the .iby file. Alternatively, the .sis file can be found under the
+sis-directory, but the user need to sign it with their own developer
+certificate. In Nokia R&D environment, you can use directly the R&D-signed .sis
+file under the internal\sis directory.
+
+When signing with own developer certificate, the following capabilities are
+needed:
+  WriteDeviceData
+  
+When builing PerfMon against S60 3.0 or 3.1, you may need to patch your SDK
+environment first with some fixes. For more information, please refer to the
+instructions under the "envpatcher" directory.  
+
+===============================================================================
+
+System Requirements:
+====================
+Basic Requirements:
+- Any S60 3.x device or emulator environment
+
+===============================================================================
+
+Compatibility Issues:
+=====================
+N/A
+
+===============================================================================
+
+Known Issues:
+=============
+N/A
+
+===============================================================================
+
+Version History:
+================
+
+Version 1.1.1 - 26th August 2010 
+====================
+- Improved Orbit UI
+- Error corrections
+
+Version 1.0.0 - 6th March 2008
+------------------------------
+- Initial version
+ 
+===============================================================================
+
+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".
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/backup_registration.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+  <passive_backup>
+    <include_directory name="\"/>
+  </passive_backup>
+  <system_backup/>
+  <restore requires_reboot = "no"/>
+</backup_registration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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 <platform_paths.hrh>
+
+prj_platforms
+
+WINSCW GCCE ARMV5 ARMV6
+
+#include "bld_generic.inf"
+
+#include "../ui/avkon/group/bld.inf"
+
+prj_mmpfiles
+
+prj_extensions
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/bld_generic.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2010 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 <platform_paths.hrh>
+
+PRJ_EXPORTS
+../group/backup_registration.xml    Z:/private/20011385/backup_registration.xml
+../rom/perfmon.iby CORE_IBY_EXPORT_PATH(tools,perfmon.iby)
+
+PRJ_MMPFILES
+#if defined(__SERIES60_30__) || defined(__SERIES60_31__) || defined(__S60_32__)
+  gnumakefile perfmon_icons_aif.mk
+
+  #ifdef MARM
+  gnumakefile perfmon_stub_sis.mk
+  #endif
+#endif
+
+#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
+  PRJ_EXTENSIONS
+  START EXTENSION s60/mifconv
+  OPTION TARGETFILE perfmon_aif.mif
+  OPTION SOURCEDIR ../icons
+  OPTION SOURCES -c8,8 qgn_menu_perfmon
+  END
+
+  #ifdef MARM
+  START EXTENSION app-services/buildstubsis
+  OPTION SRCDIR ../sis
+  OPTION SISNAME PerfMon_stub
+  END
+  #endif  
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/group.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include \"bld_generic.inf\""
+#TODO: Functionality broken 
+#BLD_INF_RULES.prj_exports += "../rom/perfmon_datapopup.iby CORE_IBY_EXPORT_PATH(tools,perfmon_datapopup.iby)"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/perfmon_icons_aif.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,54 @@
+#
+# 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:  
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\perfmon_aif.mif
+
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN :
+	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : $(ICONTARGETFILENAME)
+
+$(ICONTARGETFILENAME) : ..\icons\qgn_menu_perfmon.svg
+	mifconv $(ICONTARGETFILENAME) \
+		/c8,8 ..\icons\qgn_menu_perfmon.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/group/perfmon_stub_sis.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,56 @@
+#
+# 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:  
+#
+
+
+TARGETDIR=$(EPOCROOT)EPOC32\Data\Z\System\Install
+
+SISNAME=PerfMon_stub
+PKGNAME=PerfMon_stub
+
+$(TARGETDIR) :
+	@perl -S emkdir.pl "$(TARGETDIR)"
+
+do_nothing :
+	rem do_nothing
+
+SISFILE=$(TARGETDIR)\$(SISNAME).sis
+
+$(SISFILE) : ..\sis\$(PKGNAME).pkg
+	makesis -s $? $@ 
+
+
+
+MAKMAKE : do_nothing
+
+RESOURCE : do_nothing
+
+SAVESPACE : do_nothing
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : $(TARGETDIR) $(SISFILE)
+
+CLEAN : 
+	@if exist $(SISFILE) erase $(SISFILE)
+
+RELEASABLES : 
+	@echo $(SISFILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/icons/qgn_menu_perfmon.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="100%"
+   height="100%"
+   viewBox="0 0 87.999512 88.000488"
+   id="svg76799">
+  <defs
+     id="defs76881" />
+  <path
+     d="M 9.0713171,59.555059 L 9.0713171,59.555059 L 29.815483,31.95446 L 53.905481,46.690373 L 77.99548,28.212006"
+     style="fill:none;fill-opacity:0.46710528;stroke:#0000ff;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4569" />
+  <path
+     d="M 9.5317326,73.333448 L 30.06138,52.248151 L 53.681509,63.493643 L 77.30164,60.213707"
+     style="fill:none;fill-opacity:0.46710528;stroke:#ff0000;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4571" />
+  <g
+     transform="matrix(0.1348839,0,0,0.1348839,12.762244,-36.73138)"
+     style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+     id="g2303">
+    <path
+       d="M 114.897,303.361 C 139.482,303.361 151.775,322.648 151.775,361.221 C 151.775,380.714 148.599,395.205 142.247,404.695 C 135.895,414.184 126.778,418.928 114.897,418.928 C 90.3641,418.928 78.0977,399.692 78.0977,361.221 C 78.0977,341.728 81.2737,327.211 87.6258,317.671 C 93.9779,308.131 103.068,303.361 114.897,303.361 z M 114.897,407.51 C 122.356,407.51 127.988,403.897 131.794,396.671 C 135.6,389.445 137.503,377.628 137.503,361.221 C 137.503,349.804 136.667,340.816 134.995,334.259 C 133.323,327.701 130.803,322.815 127.434,319.6 C 124.066,316.386 119.836,314.779 114.744,314.779 C 107.287,314.779 101.68,318.456 97.9254,325.811 C 94.1705,333.165 92.293,344.968 92.293,361.221 C 92.293,372.485 93.1418,381.409 94.8395,387.992 C 96.5372,394.576 99.0573,399.474 102.4,402.689 C 105.743,405.903 109.908,407.51 114.897,407.51 z "
+       transform="translate(-33.85833,40)"
+       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2305" />
+    <path
+       d="M 218.098,417 L 204.211,417 L 204.211,328.51 C 197.268,335.093 187.984,340.674 176.361,345.251 L 176.361,331.828 C 192.357,324.165 203.261,314.676 209.072,303.361 L 218.098,303.361 L 218.098,417 z "
+       transform="translate(-33.85833,40)"
+       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2307" />
+    <path
+       d="M 290.593,303.361 C 315.178,303.361 327.471,322.648 327.471,361.221 C 327.471,380.714 324.295,395.205 317.943,404.695 C 311.591,414.184 302.474,418.928 290.593,418.928 C 266.06,418.928 253.794,399.692 253.794,361.221 C 253.794,341.728 256.97,327.211 263.322,317.671 C 269.674,308.131 278.764,303.361 290.593,303.361 z M 290.593,407.51 C 298.052,407.51 303.684,403.897 307.49,396.671 C 311.296,389.445 313.199,377.628 313.199,361.221 C 313.199,349.804 312.363,340.816 310.691,334.259 C 309.019,327.701 306.499,322.815 303.13,319.6 C 299.762,316.386 295.532,314.779 290.44,314.779 C 282.983,314.779 277.376,318.456 273.621,325.811 C 269.866,333.165 267.989,344.968 267.989,361.221 C 267.989,372.485 268.838,381.409 270.535,387.992 C 272.233,394.576 274.753,399.474 278.096,402.689 C 281.439,405.903 285.604,407.51 290.593,407.51 z "
+       transform="translate(-33.85833,40)"
+       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2309" />
+    <path
+       d="M 393.794,417 L 379.907,417 L 379.907,328.51 C 372.964,335.093 363.68,340.674 352.057,345.251 L 352.057,331.828 C 368.053,324.165 378.957,314.676 384.768,303.361 L 393.794,303.361 L 393.794,417 z "
+       transform="translate(-33.85833,40)"
+       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2311" />
+    <path
+       d="M 466.289,303.361 C 490.874,303.361 503.167,322.648 503.167,361.221 C 503.167,380.714 499.991,395.205 493.639,404.695 C 487.287,414.184 478.17,418.928 466.289,418.928 C 441.756,418.928 429.49,399.692 429.49,361.221 C 429.49,341.728 432.666,327.211 439.018,317.671 C 445.37,308.131 454.46,303.361 466.289,303.361 z M 466.289,407.51 C 473.748,407.51 479.38,403.897 483.186,396.671 C 486.992,389.445 488.895,377.628 488.895,361.221 C 488.895,349.804 488.059,340.816 486.387,334.259 C 484.715,327.701 482.195,322.815 478.826,319.6 C 475.458,316.386 471.228,314.779 466.136,314.779 C 458.679,314.779 453.072,318.456 449.317,325.811 C 445.562,333.165 443.685,344.968 443.685,361.221 C 443.685,372.485 444.534,381.409 446.231,387.992 C 447.929,394.576 450.449,399.474 453.792,402.689 C 457.135,405.903 461.3,407.51 466.289,407.51 z "
+       transform="translate(-33.85833,40)"
+       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2313" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/perfmon.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
+
+SUBDIRS = group \
+          #TODO: Functionality broken
+          #ui/hb/datapopup \
+          ui/hb/app
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/rom/perfmon.iby	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef __PERFMON_IBY__
+#define __PERFMON_IBY__
+
+S60_APP_EXE(PerfMon)
+S60_APP_AIF_ICONS(PerfMon)
+S60_APP_RESOURCE(PerfMon)
+SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,PerfMon)
+data=ZPRIVATE\10003a3f\import\APPS\PerfMon_reg.RSC Private\10003a3f\import\Apps\PerfMon_reg.rsc
+
+data=ZPRIVATE\20011385\backup_registration.xml        	private\20011385\backup_registration.xml
+data=ZSYSTEM\Install\PerfMon_stub.sis                   \system\install\PerfMon_stub.sis
+
+#endif // __PERFMON_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/rom/perfmon_datapopup.iby	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef __PERFMON_DATAPOPUP_IBY__
+#define __PERFMON_DATAPOPUP_IBY__
+
+file=ABI_DIR\BUILD_DIR\PerfMonDataPopupPlugin.dll       SHARED_LIB_DIR\PerfMonDataPopupPlugin.dll
+data=DATAZ_\resource\plugins\devicedialogs\PerfMonDataPopupPlugin.qtplugin resource\plugins\devicedialogs\PerfMonDataPopupPlugin.qtplugin
+
+#endif // __PERFMON_DATAPOPUP_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/sis/PerfMon_S60-30.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,38 @@
+;
+; 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:
+;
+
+
+; Language - standard language definitions
+&EN
+
+; Standard SIS file header
+#{"PerfMon"},(0x20011385),1,0,0,TYPE=SA
+
+; Supports S60 v 3.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\UREL\PerfMon.exe"-"!:\sys\bin\PerfMon.exe"
+"\epoc32\data\z\Resource\apps\PerfMon_aif.mif"-"!:\Resource\Apps\PerfMon_aif.mif"
+"\epoc32\data\z\Resource\apps\PerfMon.rsc"-"!:\Resource\Apps\PerfMon.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\PerfMon_reg.rsc"-"!:\private\10003a3f\import\apps\PerfMon_reg.rsc"
+"..\group\backup_registration.xml"-"!:\private\20011385\backup_registration.xml"
Binary file perfapps/perfmon/sis/PerfMon_S60-30.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/sis/PerfMon_stub.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,36 @@
+;
+; 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:
+;
+
+
+; Language - standard language definitions
+&EN
+
+; Standard SIS file header
+#{"PerfMon"},(0x20011385),1,0,0
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+""-"z:\sys\bin\PerfMon.exe"
+""-"z:\Resource\Apps\PerfMon_aif.mif"
+""-"z:\Resource\Apps\PerfMon.rsc"
+""-"z:\private\10003a3f\import\apps\PerfMon_reg.rsc"
+""-"z:\private\20011385\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/symbian_version.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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: Symbian version configuration file 
+*
+*/
+
+#ifndef __SYMBIAN_VERSION_HRH
+#define __SYMBIAN_VERSION_HRH
+
+// S60 and Symbian version number enumeration definitions
+
+#define S60_30                                              30
+#define S60_31                                              31
+#define S60_32                                              32
+#define S60_50                                              50
+#define S60_51                                              91
+#define S60_52                                              92
+#define SYMBIAN_1                                           50
+#define SYMBIAN_2                                           91
+#define SYMBIAN_3                                           92
+#define SYMBIAN_4                                           101
+
+
+/**
+ * Defines the S60 or Symbian version used by this component. This flag can be
+ * used to variate the source code based on the SDK in use. The value of the
+ * flag should be always changed to reflect the current build environment.
+ */
+#define SYMBIAN_VERSION_SUPPORT                              SYMBIAN_4
+
+
+#endif  // __SYMBIAN_VERSION_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,21 @@
+/*
+* 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 <platform_paths.hrh>
+
+PRJ_MMPFILES
+perfmon.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/group/perfmon.mmp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* 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 <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+
+TARGET            PerfMon.exe
+TARGETTYPE        exe
+EPOCSTACKSIZE     0x5000
+EPOCHEAPSIZE      0x10000 0x1000000  // Min 64Kb, Max 16Mb
+
+UID               0x100039CE 0x20011385
+
+VENDORID          VID_DEFAULT
+CAPABILITY        WriteDeviceData
+
+SMPSAFE
+
+LANG              SC
+
+
+START RESOURCE    ../../../data/perfmon.rss
+HEADER
+TARGETPATH        APP_RESOURCE_DIR
+END
+
+START RESOURCE    ../../../data/perfmon_reg.rss
+DEPENDS           perfmon.rsg
+TARGETPATH        /private/10003a3f/import/apps
+END
+
+APP_LAYER_SYSTEMINCLUDE
+USERINCLUDE       ../inc
+SOURCEPATH        ../src
+
+SOURCE            perfmon_app.cpp
+SOURCE            perfmon_document.cpp 
+SOURCE            perfmon_appui.cpp
+SOURCE            perfmon_model.cpp
+SOURCE            perfmon_valuesview.cpp 
+SOURCE            perfmon_valuescontainer.cpp 
+SOURCE            perfmon_graphsview.cpp 
+SOURCE            perfmon_graphscontainer.cpp 
+SOURCE            perfmon_settingsviewdlg.cpp
+SOURCE            perfmon_datapopupcontainer.cpp 
+
+USERINCLUDE       ../../../engine/inc
+SOURCEPATH        ../../../engine/src
+SOURCE            perfmon_engine.cpp
+SOURCE            perfmon_powerlistener.cpp
+
+LIBRARY           euser.lib
+LIBRARY           commonengine.lib
+LIBRARY           apparc.lib
+LIBRARY           cone.lib 
+LIBRARY           eikcore.lib
+LIBRARY           eikcoctl.lib
+LIBRARY           eikdlg.lib  
+LIBRARY           avkon.lib 
+LIBRARY           ws32.lib 
+LIBRARY           apgrfx.lib
+LIBRARY           efsrv.lib
+LIBRARY           bafl.lib
+LIBRARY           gdi.lib
+LIBRARY           estor.lib
+LIBRARY           centralrepository.lib
+LIBRARY           HWRMPowerClient.lib
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_app.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_APP_H
+#define PERFMON_APP_H
+
+
+// INCLUDES
+#include <aknapp.h>
+
+// CONSTANTS
+// UID of the application
+const TUid KUidPerfMon = { 0x20011385 };
+
+// CLASS DECLARATION
+
+/**
+* CPerfMonApp application class.
+* Provides factory to create concrete document object.
+* 
+*/
+class CPerfMonApp : public CAknApplication
+    {
+    
+    public: // Functions from base classes
+        /**
+        * From CApaApplication, overridden to enable INI file support.
+        * @return A pointer to the dictionary store
+        */
+    CDictionaryStore* OpenIniFileLC(RFs& aFs) const;
+    private:
+
+        /**
+        * From CApaApplication, creates CPerfMonDocument document object.
+        * @return A pointer to the created document object.
+        */
+        CApaDocument* CreateDocumentL();
+        
+        /**
+        * From CApaApplication, returns application's UID (KUidPerfMon).
+        * @return The value of KUidPerfMon.
+        */
+        TUid AppDllUid() const;
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_appui.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,74 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_APPUI_H
+#define PERFMON_APPUI_H
+
+// INCLUDES
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <coeccntx.h>
+#include <aknViewAppUi.h>
+#include <akntabgrp.h>
+#include <aknnavide.h>
+#include "perfmon_std.h"
+
+// FORWARD DECLARATIONS
+class CPerfMonModel;
+class CAknNavigationControlContainer;
+class CAknTabGroup;
+class CAknNavigationDecorator;
+
+
+// CLASS DECLARATIONS
+
+class CPerfMonAppUi : public CAknViewAppUi
+    {
+    public: // // Constructors and destructor
+
+        void ConstructL();
+
+        ~CPerfMonAppUi();
+        
+    public: // New functions
+
+    private:
+        // From MEikMenuObserver
+        void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
+
+    private:
+        void HandleForegroundEventL(TBool aForeground); 
+
+        void HandleCommandL(TInt aCommand);
+
+        void HandleResourceChangeL(TInt aType);
+
+        virtual TKeyResponse HandleKeyEventL(
+            const TKeyEvent& aKeyEvent,TEventCode aType);
+
+    private: //Data
+        CPerfMonModel*                  iModel;
+        CAknNavigationControlContainer* iNaviPane;
+        CAknTabGroup*                   iTabGroup;
+        CAknNavigationDecorator*        iDecoratedTabGroup;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_datapopupcontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_DATAPOPUPCONTAINER_H
+#define PERFMON_DATAPOPUPCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+
+#include "perfmon_drawcallback.h"
+
+
+// FORWARD DECLARATIONS
+class CPerfMonModel;
+
+
+// CLASS DECLARATIONS
+
+class CPerfMonDataPopupContainer : public CCoeControl, public MDrawUpdateCallback
+    {
+public:
+    void ConstructL(const TRect& aRect);
+    ~CPerfMonDataPopupContainer();
+
+protected:
+    void Draw(const TRect& aRect) const;
+    virtual void SizeChanged();    
+
+public:
+    void SetPositionAndSize();
+    void UpdateVisibility(TBool aForeground=ETrue);
+
+public: // from MDrawUpdateCallback
+    void DrawUpdate();
+
+private:
+    CPerfMonModel*                      iModel;
+    RWindowGroup                        iWindowGroup;
+    const CFont*                        iFont; 
+    TInt                                iFontSize;
+    };
+    
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_document.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_DOCUMENT_H
+#define PERFMON_DOCUMENT_H
+
+// INCLUDES
+#include <AknDoc.h>
+   
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CEikAppUi;
+class CPerfMonModel;
+
+
+// CLASS DECLARATION
+
+/**
+*  CPerfMonDocument application class.
+*/
+class CPerfMonDocument : public CAknDocument
+    {
+    public: // Constructors and destructor
+        static CPerfMonDocument* NewL(CEikApplication& aApp);
+        virtual ~CPerfMonDocument();
+
+    public: // New functions
+
+    public:	// from CEikDocument
+	    CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+
+    private:
+
+        /**
+        * EPOC default constructor.
+        */
+        CPerfMonDocument(CEikApplication& aApp);
+        void ConstructL();
+
+    private:
+
+        /**
+        * From CEikDocument, create CPerfMonAppUi "App UI" object.
+        */
+        CEikAppUi* CreateAppUiL();
+
+    public:
+        inline CPerfMonModel* Model() { return iModel; }
+
+    private:
+        CPerfMonModel* iModel;
+
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_drawcallback.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_DRAWCALLBACK_H
+#define PERFMON_DRAWCALLBACK_H
+
+class MDrawUpdateCallback
+    {
+public:
+    virtual void DrawUpdate() = 0;    
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_graphscontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_GRAPHSCONTAINER_H
+#define PERFMON_GRAPHSCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+
+#include "perfmon_drawcallback.h"
+
+
+// FORWARD DECLARATIONS
+class CPerfMonModel;
+
+
+// CLASS DECLARATIONS
+
+class CPerfMonGraphsContainer : public CCoeControl, public MDrawUpdateCallback
+    {
+public:
+    void ConstructL(const TRect& aRect);
+    ~CPerfMonGraphsContainer();
+
+private:
+    void Draw(const TRect& aRect) const;
+    void HandleResourceChange(TInt aType);
+
+public:
+	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/);
+
+public: // from MDrawUpdateCallback
+    void DrawUpdate();
+
+private:
+    CPerfMonModel*                      iModel;
+    const CFont*                        iFont;
+    };
+    
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_graphsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_GRAPHSVIEW_H
+#define PERFMON_GRAPHSVIEW_H
+
+// INCLUDES
+#include <aknview.h>
+
+#include "perfmon_std.h"
+
+
+
+// CONSTANTS
+// UID of view
+const TUid KGraphsViewUID = {2};
+
+
+// FORWARD DECLARATIONS
+class CPerfMonGraphsContainer;
+class CPerfMonModel;
+
+
+// CLASS DECLARATION
+
+/**
+*  CPerfMonGraphsView view class.
+* 
+*/
+class CPerfMonGraphsView : public CAknView
+    {
+    public: // Constructors and destructor
+        void ConstructL();
+        ~CPerfMonGraphsView();
+
+    public: // Functions from base classes
+        TUid Id() const;
+        void HandleCommandL(TInt aCommand);
+        void HandleClientRectChange();
+
+    private: // From MEikMenuObserver
+        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+    private: // From AknView
+        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
+        void DoDeactivate();
+
+    private: // Data
+        CPerfMonGraphsContainer*        iContainer;
+        CPerfMonModel*                  iModel;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_model.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_MODEL_H
+#define PERFMON_MODEL_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <apgcli.h>
+#include <gdi.h>
+
+#include "perfmon_engine.h"
+
+// FORWARD DECLARATIONS
+class CPerfMonValuesContainer;
+class CPerfMonGraphsContainer;
+class CPerfMonDataPopupContainer;
+
+class CPerfMonModel : public CPerfMonEngine
+	{
+private:
+    enum TContainerDrawState
+    	{
+    	EDrawStateInvalid = -1,
+    	EDrawStateValues,
+    	EDrawStateGraphs
+    	};
+
+public:
+	static CPerfMonModel* NewL();
+	void ActivateModelL();
+	void DeActivateModelL();
+
+private:
+	void ConstructL();
+	void SendDrawEventToContainersL();
+	void HandleSettingsChangeL();
+    
+public:
+    void SetValuesContainer(CPerfMonValuesContainer* aValuesContainer);
+    void SetGraphsContainer(CPerfMonGraphsContainer* aGraphsContainer);
+    TInt LaunchSettingsDialogL();
+    TInt SampleEntryPosToSettingPos(TInt aSampleEntryPos);
+
+    inline CPerfMonValuesContainer*     ValuesContainer()       { return iValuesContainer; }
+    inline CPerfMonGraphsContainer*     GraphsContainer()       { return iGraphsContainer; }
+    inline CPerfMonDataPopupContainer*  DataPopupContainer()    { return iDataPopupContainer; } 
+
+private:
+    CPerfMonValuesContainer*        iValuesContainer;
+    CPerfMonGraphsContainer*        iGraphsContainer;
+    CPerfMonDataPopupContainer*     iDataPopupContainer;
+    TInt                            iDrawState;
+    };
+ 
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_settingsviewdlg.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_SETTINGSVIEWDLG_H
+#define PERFMON_SETTINGSVIEWDLG_H
+
+//  INCLUDES
+#include <AknDialog.h>
+#include <eiklbo.h>
+#include <AknTabObserver.h> 
+#include <akntabgrp.h>
+#include <aknsettingitemlist.h> 
+#include <akncheckboxsettingpage.h> 
+
+#include "perfmon_model.h"
+
+
+//  FORWARD DECLARATIONS
+class CAknSettingItemArray;
+class CAknSettingStyleListBox;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CAknTabGroup; 
+class TPerfMonSettings;
+class CSelectionItemList;
+
+
+//  CLASS DEFINITIONS
+
+class CPerfMonSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
+    {
+public:
+    static CPerfMonSettingsViewDlg* NewL(TPerfMonSettings& aSettings);
+    virtual ~CPerfMonSettingsViewDlg();
+
+public: // From MEikListBoxObserver
+    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+
+public: // From MAknTabObserver
+    void TabChangedL(TInt aIndex); 
+
+public: // From CAknDialog
+    void ProcessCommandL(TInt aCommandId);
+
+protected: // From CEikDialog
+    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
+    void PreLayoutDynInitL();
+    TBool OkToExitL(TInt aButtonId);    
+
+private: // New methods
+    void ShowSettingPageL(TBool aCalledFromMenu);
+    void SetVisibilitiesOfSettingItemsL();
+    void UpdateListBoxL();
+    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
+
+private: // Constructors
+    CPerfMonSettingsViewDlg(TPerfMonSettings& aSettings);
+    void ConstructL();        
+
+private: // Data
+    CAknSettingItemArray*               iSettingItemArray;
+    CAknSettingStyleListBox*            iListBox;
+    CAknNavigationControlContainer*     iNaviContainer;
+    CAknNavigationDecorator*            iDecoratedTabGroup;
+    CAknTabGroup*                       iTabGroup;
+    TPerfMonSettings&               iSettings;
+    };
+
+
+class CSourceSelectionCheckBoxSettingItem : public CAknSettingItem
+    {
+public:
+    CSourceSelectionCheckBoxSettingItem( TInt aIdentifier, TPerfMonSources& aMemoryInUse );
+	virtual ~CSourceSelectionCheckBoxSettingItem();
+
+protected:
+	void CompleteConstructionL();
+	void StoreL();
+	void LoadL();
+	const TDesC& SettingTextL();
+	void EditItemL( TBool aCalledFromMenu );
+    void HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType );
+
+private:
+    void AddNewItemToArrayL(const TDesC& aLabel); 
+
+private:
+    CSelectionItemList*     iItemArray;
+    HBufC*                  iSettingText;
+    TPerfMonSources&        iExternalSources;
+    };
+
+
+class CSourceSelectionCheckBoxSettingPage : public CAknCheckBoxSettingPage
+	{
+	public:
+        CSourceSelectionCheckBoxSettingPage( TInt aResourceID, CSelectionItemList* aItemArray );
+	public:		// New functions
+		void UpdateCba();
+	};
+	
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_std.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_STD_H
+#define PERFMON_STD_H
+
+
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_valuescontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_VALUESCONTAINER_H
+#define PERFMON_VALUESCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+
+#include "perfmon_drawcallback.h"
+
+
+// FORWARD DECLARATIONS
+class CPerfMonModel;
+
+
+// CLASS DECLARATIONS
+
+class CPerfMonValuesContainer : public CCoeControl, public MDrawUpdateCallback
+    {
+public:
+    void ConstructL(const TRect& aRect);
+    ~CPerfMonValuesContainer();
+
+private:
+    void Draw(const TRect& aRect) const;
+    void HandleResourceChange(TInt aType);
+
+public:
+	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/);
+
+public: // from MDrawUpdateCallback
+    void DrawUpdate();
+    
+private:
+    CPerfMonModel*                      iModel;
+    const CFont*                        iFont; 
+    };
+    
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/inc/perfmon_valuesview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* 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:  
+*
+*/
+
+
+#ifndef PERFMON_VALUESVIEW_H
+#define PERFMON_VALUESVIEW_H
+
+// INCLUDES
+#include <aknview.h>
+
+#include "perfmon_std.h"
+
+
+
+// CONSTANTS
+// UID of view
+const TUid KValuesViewUID = {1};
+
+
+// FORWARD DECLARATIONS
+class CPerfMonValuesContainer;
+class CPerfMonModel;
+
+
+// CLASS DECLARATION
+
+/**
+*  CPerfMonValuesView view class.
+* 
+*/
+class CPerfMonValuesView : public CAknView
+    {
+    public: // Constructors and destructor
+        void ConstructL();
+        ~CPerfMonValuesView();
+
+    public: // Functions from base classes
+        TUid Id() const;
+        void HandleCommandL(TInt aCommand);
+        void HandleClientRectChange();
+
+    private: // From MEikMenuObserver
+        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+    private: // From AknView
+        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
+        void DoDeactivate();
+
+    private: // Data
+        CPerfMonValuesContainer*        iContainer;
+        CPerfMonModel*                  iModel;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_app.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* 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 FILES
+#include "perfmon_app.h"
+#include "perfmon_document.h"
+
+#include <eikstart.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPerfMonApp::AppDllUid()
+// Returns application UID
+// ---------------------------------------------------------
+//
+TUid CPerfMonApp::AppDllUid() const
+    {
+    return KUidPerfMon;
+    }
+
+// ---------------------------------------------------------
+// CDictionaryStore* CPerfMonApp::OpenIniFileLC(RFs& aFs) const
+// overrides CAknApplication::OpenIniFileLC to enable INI file support
+// ---------------------------------------------------------
+//
+CDictionaryStore* CPerfMonApp::OpenIniFileLC(RFs& aFs) const
+    {
+    return CEikApplication::OpenIniFileLC(aFs);
+    }
+   
+// ---------------------------------------------------------
+// CPerfMonApp::CreateDocumentL()
+// Creates CPerfMonDocument object
+// ---------------------------------------------------------
+//
+CApaDocument* CPerfMonApp::CreateDocumentL()
+    {
+    return CPerfMonDocument::NewL( *this );
+    }
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CPerfMonApp;
+    }
+
+
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+   
+
+// End of File  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_appui.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,228 @@
+/*
+* 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 FILES
+#include "perfmon_appui.h"
+#include "perfmon_valuesview.h"
+#include "perfmon_graphsview.h"
+#include "perfmon_datapopupcontainer.h"
+#include "perfmon.hrh"
+#include "perfmon_model.h"
+#include "perfmon_document.h"
+#include <perfmon.rsg>
+
+#include <avkon.hrh>
+#include <AknQueryDialog.h>
+#include <aknmessagequerydialog.h> 
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonAppUi::ConstructL()
+    {
+    // disable window server priority control for this application
+    iEikonEnv->WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
+
+    // set as system application to prevent getting shut down events 
+    iEikonEnv->SetSystem(ETrue);
+    
+    BaseConstructL(EAknEnableSkin);
+
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+
+    // Show tabs for main views from resources
+    CEikStatusPane* sp = StatusPane();
+
+    // Fetch pointer to the default navi pane control
+    iNaviPane = (CAknNavigationControlContainer*)sp->ControlL( 
+        TUid::Uid(EEikStatusPaneUidNavi));
+
+    // Tabgroup has been read from resource and it were pushed to the navi pane. 
+    // Get pointer to the navigation decorator with the ResourceDecorator() function. 
+    // Application owns the decorator and it has responsibility to delete the object.
+    iDecoratedTabGroup = iNaviPane->ResourceDecorator();
+    if (iDecoratedTabGroup)
+        {
+        iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
+        }
+        
+    CPerfMonValuesView* valuesView = new(ELeave) CPerfMonValuesView;
+    CleanupStack::PushL(valuesView);
+    valuesView->ConstructL();
+    AddViewL(valuesView);           // transfer ownership to CAknViewAppUi
+    CleanupStack::Pop();            // valuesView
+
+    CPerfMonGraphsView* graphsView = new(ELeave) CPerfMonGraphsView;
+    CleanupStack::PushL(graphsView);
+    graphsView->ConstructL();
+    AddViewL(graphsView);           // transfer ownership to CAknViewAppUi
+    CleanupStack::Pop();            // graphsView
+    
+    // set the default view
+    SetDefaultViewL(*valuesView);
+
+    // notify the model that everything has been constructed
+    iModel->ActivateModelL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonAppUi::~CPerfMonAppUi()
+    {
+    // notify the model that the application is closing
+    if (iModel)    
+        TRAP_IGNORE(iModel->DeActivateModelL());
+    
+    delete iDecoratedTabGroup;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    if (aResourceId == R_PERFMON_APP_MENU)
+        {
+        aMenuPane->SetItemDimmed(EPerfMonCmdEnableLogging, iModel->Settings().iLoggingEnabled);
+        aMenuPane->SetItemDimmed(EPerfMonCmdDisableLogging, !iModel->Settings().iLoggingEnabled);
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CPerfMonAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/)
+    {
+    if ( iTabGroup == NULL )
+        {
+        return EKeyWasNotConsumed;
+        }
+
+    TInt active = iTabGroup->ActiveTabIndex();
+    TInt count = iTabGroup->TabCount();
+
+    switch ( aKeyEvent.iCode )
+        {
+        case EKeyLeftArrow:
+            if (active > 0)
+                {
+                active--;
+                iTabGroup->SetActiveTabByIndex( active );
+                ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active)));
+                }
+            break;
+        case EKeyRightArrow:
+            if((active + 1) < count)
+                {
+                active++;
+                iTabGroup->SetActiveTabByIndex( active );
+                ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active)));
+                }
+            break;
+        default:
+            return EKeyWasNotConsumed;
+        }
+
+    return EKeyWasConsumed;
+    }
+
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonAppUi::HandleCommandL(TInt aCommand)
+    {
+    switch ( aCommand )
+        {
+        case EPerfMonCmdEnableLogging:
+            {
+            iModel->EnableLogging(ETrue);
+            break;
+            }
+
+        case EPerfMonCmdDisableLogging:
+            {
+            iModel->EnableLogging(EFalse);
+            break;
+            }
+                        
+        case EPerfMonCmdSettings:
+            {
+            if (iModel->LaunchSettingsDialogL() == EAknCmdExit)
+                Exit();
+            break;
+            }
+
+        case EPerfMonCmdAbout:
+            {
+	        CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
+            dialog->ExecuteLD(R_PERFMON_ABOUT_DIALOG);
+            }
+            break;
+            
+        // a normal way to close an application
+        case EAknCmdExit:
+        case EEikCmdExit:
+        case EAknSoftkeyExit: 
+			{
+            Exit();
+			}
+            break;
+
+        default:
+            break;      
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonAppUi::HandleForegroundEventL(TBool aForeground)
+    {
+    // handle visibility of the data popup container
+    if (iModel && iModel->DataPopupContainer())
+        {
+        iModel->DataPopupContainer()->UpdateVisibility(aForeground);
+        }
+    
+    // call the base class
+    CAknAppUi::HandleForegroundEventL(aForeground); 
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonAppUi::HandleResourceChangeL(TInt aType)
+    {
+    CAknAppUi::HandleResourceChangeL(aType);
+
+    // update size of the data popup container (implemented here because data popup container
+    // does not get HandleResourceChangeL events)
+    if (aType == KEikDynamicLayoutVariantSwitch)
+        {
+        if (iModel)
+            {
+            if (iModel->DataPopupContainer())
+                {
+                iModel->DataPopupContainer()->SetPositionAndSize();
+                }
+            
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_datapopupcontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,247 @@
+/*
+* 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 FILES
+#include "perfmon_datapopupcontainer.h"
+#include "perfmon.hrh"
+#include "perfmon_document.h"
+#include "perfmon_appui.h"
+#include "perfmon_model.h"
+
+#include <AknUtils.h>
+
+_LIT(KFreeFormat,"%S free %S%S");
+
+const TInt KLeftMargin = 2;
+const TInt KPopupWidth = 94;
+const TInt KCPUExtraLength = 8;
+const TInt KPopupExtraSpaceBig = 15;
+const TInt KPopupExtraSpace = 3;
+
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+void CPerfMonDataPopupContainer::ConstructL(const TRect& /*aRect*/)
+    {
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    iFont = LatinPlain12();
+    iFontSize = iFont->FontMaxHeight();
+ 
+    // set windowgroup so that it always on top and does not receive focus
+    iWindowGroup = RWindowGroup(iCoeEnv->WsSession());
+    User::LeaveIfError(iWindowGroup.Construct((TUint32)&iWindowGroup));
+    iWindowGroup.SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
+    iWindowGroup.EnableReceiptOfFocus(EFalse);
+    
+    CreateWindowL(&iWindowGroup);
+    //SetRect(aRect);
+    SetPositionAndSize();
+    SetBlank();
+
+    ActivateL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonDataPopupContainer::~CPerfMonDataPopupContainer()
+    {
+    iWindowGroup.Close();    
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonDataPopupContainer::Draw(const TRect& aRect) const
+    {
+    CWindowGc& gc = SystemGc();
+    gc.SetBrushColor(KRgbWhite);
+    gc.Clear(aRect);
+    
+    // check if sample array has been constructed
+    if (iModel->SampleEntryArray())
+        {
+        // init font
+        gc.SetPenColor(KRgbBlack);
+        gc.UseFont( iFont );
+        
+        // draw a rect around the popup
+        gc.DrawRect(aRect);
+        
+        TInt posCounter(1);
+        
+        // draw CPU % if enabled
+        if (iModel->Settings().iDataPopupSources.iSrcEnabled[ESourceCPU])
+            {
+            TBuf<64> cpuText;
+            cpuText.Copy(_L("CPU: "));
+            
+            // loop all CPUs
+            for (TInt i=iModel->CPU0PositionInSamples(); i<iModel->CPU0PositionInSamples()+iModel->AmountOfCPUs(); i++)
+                {
+                // check samples available
+                if (iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                    {
+                    TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);
+                    
+                    // append % value
+                    cpuText.AppendNum( currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
+                    cpuText.Append(_L("% "));
+                    }
+                }
+
+            gc.DrawText(cpuText, TPoint(KLeftMargin, iFontSize*posCounter));
+            posCounter++;
+            }
+        
+        // draw RAM and Drive values
+        for (TInt i=iModel->RAMPositionInSamples(); i<iModel->PowerPositionInSamples(); i++)
+            {
+            // check if this setting has been enabled and it has some data
+            if (iModel->Settings().iDataPopupSources.iSrcEnabled[ESourceRAM + i - iModel->RAMPositionInSamples()] && iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);    
+
+                TBuf<32> freeBuf;
+                freeBuf.AppendNum(currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
+
+                TBuf<32> buf;
+                buf.Format(KFreeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &freeBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
+                gc.DrawText(buf, TPoint(KLeftMargin, iFontSize*posCounter));
+                
+                posCounter++;
+                }
+            }
+
+        // draw power value
+        // check if this setting has been enabled and it has some data
+        if (iModel->Settings().iDataPopupSources.iSrcEnabled[ESourcePwr] && iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iSampleDataArray->Count() > 0)
+            {
+            TSampleData& currentSample = iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iSampleDataArray->At(0);    
+
+            TBuf<32> powerText;
+            powerText.Copy(_L("Power "));
+
+            powerText.AppendNum(currentSample.iSize - currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
+            powerText.AppendFormat(_L("%S"), &iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iUnitTypeShort);
+
+            gc.DrawText(powerText, TPoint(KLeftMargin,iFontSize*posCounter));
+
+            posCounter++;
+            }
+
+        gc.DiscardFont();        
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonDataPopupContainer::SizeChanged()
+    {
+    DrawNow();
+    }   
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonDataPopupContainer::SetPositionAndSize()
+    {
+    CWsScreenDevice* screenDevice = iEikonEnv->ScreenDevice();
+
+    const TInt popupWidth = iModel->AmountOfCPUs() * KCPUExtraLength + KPopupWidth;
+
+    // top right
+    if (iModel->Settings().iDataPopupLocation == EDataPopupLocationTopRight)
+        {
+        // screen orientation is landscape with softkeys on right
+        if (AknLayoutUtils::CbaLocation()==AknLayoutUtils::EAknCbaLocationRight)
+            {
+            SetRect(
+                TRect(
+                    screenDevice->SizeInPixels().iWidth-popupWidth-KPopupExtraSpaceBig,
+                    0,
+                    screenDevice->SizeInPixels().iWidth-KPopupExtraSpaceBig,
+                    iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize + KPopupExtraSpace
+                    ));
+            }
+
+        // any other orientation
+        else
+            {
+            SetRect(
+                TRect(
+                    screenDevice->SizeInPixels().iWidth-popupWidth,
+                    0,
+                    screenDevice->SizeInPixels().iWidth,
+                    iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize + KPopupExtraSpace
+                    ));
+            }        
+        }
+
+    // bottom middle
+    else if (iModel->Settings().iDataPopupLocation == EDataPopupLocationBottomMiddle)
+        {
+        SetRect(
+            TRect(
+                screenDevice->SizeInPixels().iWidth/2-popupWidth/2,
+                screenDevice->SizeInPixels().iHeight - iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize - KPopupExtraSpace,
+                screenDevice->SizeInPixels().iWidth/2+popupWidth/2,
+                screenDevice->SizeInPixels().iHeight
+                ));
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonDataPopupContainer::UpdateVisibility(TBool aForeground)
+    {
+    // application has been brought to foregound
+    if (aForeground)
+        {
+        if (iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityAlwaysOn)
+            {
+            MakeVisible(ETrue);
+            }
+        else
+            {
+            MakeVisible(EFalse);
+            }    
+        }
+    
+    // application has been sent to background
+    else
+        {
+        if (iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityAlwaysOn
+            || iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityBackgroundOnly)
+            {
+            MakeVisible(ETrue);
+            }
+        else
+            {
+            MakeVisible(EFalse);
+            }              
+        }    
+    }
+            
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonDataPopupContainer::DrawUpdate()
+    {
+    DrawDeferred(); 
+    }
+    
+// --------------------------------------------------------------------------------------------
+       
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_document.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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 FILES
+#include "perfmon_document.h"
+#include "perfmon_appui.h"
+#include "perfmon_model.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// constructor
+CPerfMonDocument::CPerfMonDocument(CEikApplication& aApp)
+: CAknDocument(aApp)    
+    {
+    }
+
+// ----------------------------------------------------
+
+// destructor
+CPerfMonDocument::~CPerfMonDocument()
+    {
+    delete iModel;
+    }
+
+// ----------------------------------------------------
+
+// EPOC default constructor can leave.
+void CPerfMonDocument::ConstructL()
+    {
+    iModel = CPerfMonModel::NewL();
+    }
+
+// ----------------------------------------------------
+
+// Two-phased constructor.
+CPerfMonDocument* CPerfMonDocument::NewL(CEikApplication& aApp)
+    {
+    CPerfMonDocument* self = new(ELeave) CPerfMonDocument(aApp);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+    }
+    
+// ----------------------------------------------------
+// CPerfMonDocument::CreateAppUiL()
+// constructs CPerfMonAppUi
+// ----------------------------------------------------
+//
+CEikAppUi* CPerfMonDocument::CreateAppUiL()
+    {
+    return new (ELeave) CPerfMonAppUi;
+    }
+
+// ----------------------------------------------------
+// CPerfMonDocument::OpenFileL
+// Overrides CAknDocument::OpenFileL to support document file
+// ----------------------------------------------------
+//
+CFileStore* CPerfMonDocument::OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs)
+    {
+    return CEikDocument::OpenFileL(aDoOpen, aFilename, aFs);
+    }
+
+// ----------------------------------------------------
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_graphscontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,233 @@
+/*
+* 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 FILES
+#include "perfmon_graphscontainer.h"
+#include "perfmon.hrh"
+#include "perfmon_document.h"
+#include "perfmon_appui.h"
+#include "perfmon_model.h"
+
+#include <AknUtils.h>
+
+const TInt KAmountOfMicroSecondsFitsScreen = 20 * 1000000;
+#define KRgbCustomGrey TRgb(0x808080)
+
+_LIT(K100p, "100%"); 
+_LIT(K50p, "50%"); 
+_LIT(K0p, "0%"); 
+
+_LIT(KPercentageFormat,"%S %d%%");
+
+const TInt KMicroToSecondMultiplier = 1000000;
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+void CPerfMonGraphsContainer::ConstructL(const TRect& aRect)
+    {
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    //iFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont);
+    iFont = LatinBold12();
+
+    CreateWindowL();
+    SetRect(aRect);
+    SetBlank();
+
+    ActivateL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonGraphsContainer::~CPerfMonGraphsContainer()
+    {
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonGraphsContainer::Draw(const TRect& aRect) const
+    {
+    // draw black background
+    CWindowGc& gc = SystemGc();
+    gc.SetBrushColor(KRgbBlack);
+    gc.Clear(aRect);
+    
+    // activate font and get size
+    gc.UseFont(iFont);
+    TUint fontSize = iFont->FontMaxHeight();
+    //TInt fontBaseOffset = iFont->DescentInPixels();
+    
+
+    // calculate time factor
+    TReal scaleFactor = (TReal) aRect.Width() / (TReal) KAmountOfMicroSecondsFitsScreen;
+
+    // calculate area height which is used to draw the grpahs
+    TInt drawAreaHeight = aRect.Height() - fontSize - fontSize;
+        
+    
+    // check if sample array has been constructed
+    if (iModel->SampleEntryArray())
+        {
+        
+        // draw vertical time lines first
+        TInt verticalBarPeriodInSecs = iModel->Settings().iGraphsVerticalBarPeriod;
+        
+        if (verticalBarPeriodInSecs >= 1 && iModel->SampleEntryArray()->At(0).iSampleDataArray->Count() > 0)
+            {
+            // get time from the first sample
+            TSampleData& firstSample = iModel->SampleEntryArray()->At(0).iSampleDataArray->At(0);
+            TInt64 currentMicroSeconds = firstSample.iTimeFromStart.Int64();
+            
+            // calculate amount of microseconds exceeding value by using the modulo operator
+            TInt remainderInMicroSeconds = currentMicroSeconds % (verticalBarPeriodInSecs * 1000000); 
+            
+            // calculate first x pos
+            TInt vbarXpos = aRect.Width() - (remainderInMicroSeconds * scaleFactor);
+            
+            // calculate the amount in seconds
+            TInt barSeconds = (currentMicroSeconds - remainderInMicroSeconds) / KMicroToSecondMultiplier;
+
+            
+            // continue drawing periodically the vertical lines
+            while (vbarXpos >= 0 && barSeconds >= 0)
+                {
+                // draw vertical line    
+                gc.SetPenColor(KRgbDarkRed);
+                gc.DrawLine(TPoint(vbarXpos,fontSize+1), TPoint(vbarXpos,aRect.Height()-fontSize));
+                
+                // draw seconds value
+                gc.SetPenColor(KRgbCustomGrey);
+                TBuf<16> secsBuf;
+                secsBuf.AppendNum(barSeconds);    
+                secsBuf.Append(_L("s"));
+                gc.DrawText(secsBuf, TPoint(vbarXpos-(iFont->TextWidthInPixels(secsBuf)/2), aRect.Height()));    
+
+                // calculate new position
+                vbarXpos -= verticalBarPeriodInSecs * 1000000 * scaleFactor;
+                barSeconds -= verticalBarPeriodInSecs;
+                }
+            }
+        
+        // draw the basic grid
+        gc.SetPenColor(KRgbCustomGrey);
+    
+        gc.DrawLine(TPoint(0,fontSize), TPoint(aRect.Width(),fontSize));  // upper line
+        gc.DrawText(K100p, TPoint(0,fontSize));
+    
+        gc.DrawLine(TPoint(0,aRect.Height()/2), TPoint(aRect.Width(),aRect.Height()/2));  // mid line
+        gc.DrawText(K50p, TPoint(0,aRect.Height()/2));
+    
+        gc.DrawLine(TPoint(0,aRect.Height()-fontSize), TPoint(aRect.Width(),aRect.Height()-fontSize));  // bottom line
+        gc.DrawText(K0p, TPoint(0,aRect.Height()-fontSize));
+
+        TInt c(0);
+            
+        // draw graphs for each sampled type
+        for (TInt i=0; i<iModel->SampleEntryArray()->Count(); i++)
+            {
+            // check if this setting has been enabled and it has some data
+            if (iModel->Settings().iGraphsSources.iSrcEnabled[iModel->SampleEntryPosToSettingPos(i)] && iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                // set pen color for the graph
+                gc.SetPenColor(iModel->SampleEntryArray()->At(i).iGraphColor);
+                
+                // remember the position where drawing started
+                /*TReal*/TInt currentXPos(aRect.Width()); // start drawing from right            
+                /*TReal*/TInt currentYPos(0);
+                
+                // draw samples
+                for (TInt j=0; j<iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() - 1; j++)
+                    {
+                    TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(j);
+                    TSampleData& previousSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(j+1);
+                    
+                    // calculate X position for previous (j+1)
+                    /*TReal*/TInt previousXPos = currentXPos -
+                        ( (Abs(previousSample.iTimeFromStart.Int64() - currentSample.iTimeFromStart.Int64())) * scaleFactor );
+                    
+
+                    // calculate initial Y position
+                    if (j==0)
+                        {
+                        currentYPos = currentSample.iSize > 0 ? (TReal)(currentSample.iFree) / (TReal)currentSample.iSize * drawAreaHeight + fontSize : aRect.Height()-fontSize;
+                        }
+
+                    // calculate Y position for previous (j+1)
+                    /*TReal*/TInt previousYPos = previousSample.iSize > 0 ? (TReal)(previousSample.iFree) / (TReal)previousSample.iSize * drawAreaHeight + fontSize : aRect.Height()-fontSize; 
+                    
+                    
+                    // draw a line between the previous and current
+                    gc.DrawLine(TPoint((TInt)previousXPos,(TInt)previousYPos), TPoint((TInt)currentXPos,(TInt)currentYPos));
+                    
+                    
+                    // draw current value in %
+                    if (j==0) // draw the value of first sample
+                        {
+                        TBuf<16> buf;
+                        buf.Format(KPercentageFormat, &iModel->SampleEntryArray()->At(i).iDescription, currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
+      
+                        gc.DrawText(buf, TPoint(0,fontSize+fontSize+c*fontSize));
+                        c++;                    
+                        }
+                    
+                    
+                    // stop drawing if we have run out of space
+                    if (previousXPos < 0)
+                        break;
+                    
+                    // remeber previous values
+                    currentXPos = previousXPos;
+                    currentYPos = previousYPos;
+                    }
+                }
+            }
+        }
+
+    gc.DiscardFont();        
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CPerfMonGraphsContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
+    }
+        
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonGraphsContainer::HandleResourceChange(TInt aType)
+    {
+    if (aType == KEikDynamicLayoutVariantSwitch)
+        {
+        TRect mainPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+        SetRect(mainPaneRect);
+        }
+    else
+        CCoeControl::HandleResourceChange(aType);    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonGraphsContainer::DrawUpdate()
+    {
+    DrawDeferred();    
+    }
+    
+// --------------------------------------------------------------------------------------------
+            
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_graphsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,147 @@
+/*
+* 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 FILES
+#include "perfmon.hrh"
+#include "perfmon_graphsview.h"
+#include "perfmon_graphscontainer.h"
+#include "perfmon_document.h" 
+#include "perfmon_model.h"
+#include <perfmon.rsg>
+
+#include <eikenv.h>
+#include <aknViewAppUi.h> 
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPerfMonGraphsView::ConstructL(const TRect& aRect)
+// EPOC two-phased constructor
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::ConstructL()
+    {
+    BaseConstructL( R_PERFMON_VIEW_GRAPHS );
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    }
+
+// ---------------------------------------------------------
+// CPerfMonGraphsView::~CPerfMonGraphsView()
+// ---------------------------------------------------------
+//
+CPerfMonGraphsView::~CPerfMonGraphsView()
+    {
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+
+// ---------------------------------------------------------
+// TUid CPerfMonGraphsView::Id()
+// ---------------------------------------------------------
+//
+TUid CPerfMonGraphsView::Id() const
+    {
+    return KGraphsViewUID;
+    }
+
+// ---------------------------------------------------------
+// TUid CPerfMonGraphsView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
+    }
+
+  
+// ---------------------------------------------------------
+// CPerfMonGraphsView::HandleCommandL(TInt aCommand)
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::HandleCommandL(TInt aCommand)
+    {   
+/*
+    switch ( aCommand )
+        {
+        case EPerfMonCmdFileBack:
+            {
+            iModel->FileUtils()->MoveUpOneLevelL();
+            break;
+            }
+
+        default:
+            {
+*/
+            AppUi()->HandleCommandL( aCommand );
+/*
+            break;
+            }
+        }
+*/
+    }
+
+// ---------------------------------------------------------
+// CPerfMonGraphsView::HandleClientRectChange()
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::HandleClientRectChange()
+    {
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    }
+
+// ---------------------------------------------------------
+// CPerfMonGraphsView::DoActivateL(...)
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::DoActivateL(
+   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8& /*aCustomMessage*/)
+    {
+    if (!iContainer)
+        {
+        iContainer = new (ELeave) CPerfMonGraphsContainer;
+        iModel->SetGraphsContainer(iContainer);
+        iContainer->SetMopParent(this);
+        iContainer->ConstructL( ClientRect() );
+        AppUi()->AddToStackL( *this, iContainer );
+        } 
+   }
+
+// ---------------------------------------------------------
+// CPerfMonGraphsView::DoDeactivate()
+// ---------------------------------------------------------
+//
+void CPerfMonGraphsView::DoDeactivate()
+    {
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_model.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* 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 FILES
+
+#include "perfmon_model.h"
+#include "perfmon_app.h"
+#include "perfmon_settingsviewdlg.h"
+#include "perfmon.hrh"
+#include "perfmon_valuescontainer.h"
+#include "perfmon_graphscontainer.h"
+#include "perfmon_datapopupcontainer.h"
+#include <perfmon.rsg>
+
+#include <coeutils.h>
+#include <bautils.h>
+#include <eikenv.h>
+#include <e32hal.h>
+#include <u32std.h>
+#include <s32file.h>
+#include <akntitle.h> 
+#include <eikspane.h>
+#include <aknnotewrappers.h>  
+
+_LIT(KAppName, "PerfMon");
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CPerfMonModel* CPerfMonModel::NewL()
+	{
+	CPerfMonModel* self = new(ELeave) CPerfMonModel;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::ConstructL()
+	{
+	iDrawState = EDrawStateInvalid;
+	CPerfMonEngine::ConstructL();
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::ActivateModelL()
+	{
+	// initialize the data popup container in top-right corner
+	iDataPopupContainer = new(ELeave) CPerfMonDataPopupContainer;
+	iDataPopupContainer->ConstructL(TRect(0,0,1,1));
+    
+	ActivateEngineL();
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::DeActivateModelL()
+	{
+	DeActivateEngineL();
+	
+	if (iDataPopupContainer)
+		{
+		delete iDataPopupContainer;
+		iDataPopupContainer = NULL;
+		}
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::SetValuesContainer(CPerfMonValuesContainer* aContainer)
+    {
+    iValuesContainer = aContainer;
+    iDrawState = EDrawStateValues;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::SetGraphsContainer(CPerfMonGraphsContainer* aContainer)
+    {
+    iGraphsContainer = aContainer;
+    iDrawState = EDrawStateGraphs;
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonModel::SendDrawEventToContainersL()
+    {
+    if (iDrawState == EDrawStateValues && iValuesContainer)
+        iValuesContainer->DrawUpdate();
+    else if (iDrawState == EDrawStateGraphs && iGraphsContainer)
+        iGraphsContainer->DrawUpdate();
+           
+    if (iDataPopupContainer)
+        iDataPopupContainer->DrawUpdate();
+    }
+
+void CPerfMonModel::HandleSettingsChangeL()
+    {
+    // set visibility and location of the data popup
+    iDataPopupContainer->UpdateVisibility();
+    iDataPopupContainer->SetPositionAndSize();
+    CPerfMonEngine::HandleSettingsChangeL();
+    }
+            
+// --------------------------------------------------------------------------------------------
+
+TInt CPerfMonModel::LaunchSettingsDialogL()
+    {
+    // launch the settings dialog
+    TPerfMonSettings newSettings = iSettings;
+    
+    CPerfMonSettingsViewDlg* dlg = CPerfMonSettingsViewDlg::NewL(newSettings);
+    TInt returnValue = dlg->ExecuteLD(R_PERFMON_SETTINGS_DIALOG);
+    
+    // always save settings since the settings dialog does not provide a possibility to cancel
+    iSettings = newSettings;
+    SaveSettingsL();
+    HandleSettingsChangeL();
+
+    // make sure that the title of the application is correct
+    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL(KAppName);
+    
+    return returnValue;
+    }
+	
+// ---------------------------------------------------------------------------
+    
+TInt CPerfMonModel::SampleEntryPosToSettingPos(TInt aSampleEntryPos)
+    {
+    TInt settingPos(0); // return position of aSampleEntryPos in settings
+    
+    if (aSampleEntryPos >= iCPU0PositionInSamples && aSampleEntryPos < iRAMPositionInSamples)
+        {
+        settingPos = ESourceCPU;
+        }
+    else if (aSampleEntryPos == iRAMPositionInSamples)
+        {
+        settingPos = ESourceRAM;
+        }
+    else
+        {
+        settingPos = ESourceC + (aSampleEntryPos-iCDrivePositionInSamples);
+        }
+    
+    return settingPos;
+    } 
+
+// ---------------------------------------------------------------------------
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_settingsviewdlg.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,702 @@
+/*
+* 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 FILES
+#include "perfmon_settingsviewdlg.h"
+#include "perfmon_model.h"
+#include "perfmon.hrh"
+#include "perfmon_std.h"
+#include "perfmon_powerlistener.h"
+#include <perfmon.rsg>
+
+#include <aknsettingitemlist.h>
+#include <CAknMemorySelectionSettingItem.h> 
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <StringLoader.h>
+#include <aknnotewrappers.h> 
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CPerfMonSettingsViewDlg* CPerfMonSettingsViewDlg::NewL(TPerfMonSettings& aSettings)
+    {
+    CPerfMonSettingsViewDlg* self = new(ELeave) CPerfMonSettingsViewDlg(aSettings);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonSettingsViewDlg::~CPerfMonSettingsViewDlg()
+    {
+    // restore default navi pane by popping the tab group from stack
+    if (iNaviContainer)
+        iNaviContainer->Pop();
+    
+    if (iSettingItemArray)
+        {
+        iSettingItemArray->ResetAndDestroy();
+        delete iSettingItemArray; 
+        }
+    
+    delete iDecoratedTabGroup;   
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonSettingsViewDlg::CPerfMonSettingsViewDlg(TPerfMonSettings& aSettings) : iSettings(aSettings)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::ConstructL()
+    {
+    // construct a menu bar
+    CAknDialog::ConstructL(R_PERFMON_SETTINGS_MENUBAR);
+
+    // get pointer to status pane   
+    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+    
+    // set title text
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL( _L("Settings") );
+    
+    // create a new tab group
+    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+    iDecoratedTabGroup = iNaviContainer->CreateTabGroupL(this);
+    iTabGroup = static_cast<CAknTabGroup*>(iDecoratedTabGroup->DecoratedControl());
+    iTabGroup->SetTabFixedWidthL(KTabWidthWithTwoLongTabs); 
+    
+    // add tabs
+    iTabGroup->AddTabL(ETabSettingsGeneral, _L("General"));
+    iTabGroup->AddTabL(ETabSettingsDataPopup, _L("Data popup"));
+    iTabGroup->AddTabL(ETabSettingsGraphs, _L("Graphs"));
+    iTabGroup->AddTabL(ETabSettingsLogging, _L("Logging"));
+    iTabGroup->SetActiveTabByIndex(ETabSettingsGeneral);
+    
+    // add new tab group to stack
+    iNaviContainer->PushL( *iDecoratedTabGroup );
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
+    {
+    switch (aEventType)
+        {
+        case EEventEnterKeyPressed:
+        case EEventItemDoubleClicked:
+            ShowSettingPageL(EFalse);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
+    {
+    iListBox->SetCurrentItemIndex(0);
+
+    SetVisibilitiesOfSettingItemsL();   
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::ProcessCommandL(TInt aCommandId)
+    {
+    CAknDialog::ProcessCommandL(aCommandId);
+
+    switch (aCommandId)
+        {
+        case EPerfMonCmdSettingsChange:
+            ShowSettingPageL(ETrue);
+            break;
+        case EPerfMonCmdSettingsExit:
+            TryExitL(EAknCmdExit);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CPerfMonSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    if (iTabGroup == NULL)
+        {
+        return EKeyWasNotConsumed;
+        }
+
+    TInt active = iTabGroup->ActiveTabIndex();
+    TInt count = iTabGroup->TabCount();
+
+    switch ( aKeyEvent.iCode )
+        {
+        case EKeyLeftArrow:
+            if (active > 0)
+                {
+                active--;
+                iTabGroup->SetActiveTabByIndex(active);
+                TabChangedL(active); 
+                }
+            break;
+        
+        case EKeyRightArrow:
+            if((active + 1) < count)
+                {
+                active++;
+                iTabGroup->SetActiveTabByIndex(active);
+                TabChangedL(active); 
+                }
+            break;
+        }
+
+    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
+    }    
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::PreLayoutDynInitL()
+    {
+    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EPerfMonSettingItemList) );
+    iListBox->SetMopParent(this);
+    iListBox->CreateScrollBarFrameL(ETrue);
+    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+    iListBox->SetListBoxObserver(this);
+
+    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
+
+    CTextListBoxModel* model = iListBox->Model();
+    model->SetItemTextArray(iSettingItemArray);
+    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+    UpdateListBoxL();    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CPerfMonSettingsViewDlg::OkToExitL(TInt aButtonId)
+    {
+    return CAknDialog::OkToExitL(aButtonId);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
+    {
+    TInt listIndex = iListBox->CurrentItemIndex();
+    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
+    CAknSettingItem* item = iSettingItemArray->At(realIndex);
+    item->EditItemL(aCalledFromMenu);
+    item->StoreL();
+    SetVisibilitiesOfSettingItemsL();
+    DrawNow();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
+    {
+    if (iSettingItemArray->Count() > 0)
+        {
+        switch (iTabGroup->ActiveTabIndex())
+            {
+            case ETabSettingsGeneral:
+                {
+                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(EFalse);
+                if (CPerfMonPowerListener::IsSupported())
+                    ((*iSettingItemArray)[ESettingListItemPowerMonitoringEnabled])->SetHidden(EFalse);
+                else
+                    ((*iSettingItemArray)[ESettingListItemPowerMonitoringEnabled])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
+
+                break;
+                }
+            
+            case ETabSettingsDataPopup:
+                {
+                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPowerMonitoringEnabled])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(EFalse);
+
+                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
+
+                break;
+                }
+
+            case ETabSettingsGraphs:
+                {
+                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPowerMonitoringEnabled])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(EFalse);
+                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(EFalse);
+
+                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
+
+                break;
+                }
+
+            case ETabSettingsLogging:
+                {
+                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemPowerMonitoringEnabled])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
+                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
+
+                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(EFalse);
+                
+                if (iSettings.iLoggingMode == ELoggingModeLogFile || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
+                    ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(EFalse);
+                else
+                    ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
+                
+                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(EFalse);
+
+                break;
+                }                
+
+            default:
+                User::Panic(_L("TabIOOB"), 50);
+                break;
+            }
+
+        iSettingItemArray->RecalculateVisibleIndicesL();
+        iListBox->HandleItemAdditionL();
+        iListBox->UpdateScrollBarsL();
+        }
+    }   
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::UpdateListBoxL()
+    {
+    iSettingItemArray->ResetAndDestroy();
+
+    // create items
+    TInt ordinal(0);
+
+    AddSettingItemL(ESettingListItemHeartBeat,
+                    R_HEARTBEAT_SETTING_TITLE,
+                    R_HEARTBEAT_SETTING_PAGE,
+                    NULL,
+                    ordinal++);    
+    
+    AddSettingItemL(ESettingListItemMaxSamples,
+                    R_MAXSAMPLES_SETTING_TITLE,
+                    R_MAXSAMPLES_SETTING_PAGE,
+                    NULL,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemPriority,
+                    R_PRIORITY_SETTING_TITLE,
+                    R_PRIORITY_SETTING_PAGE,
+                    R_PRIORITY_SETTING_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemCPUMode,
+                    R_CPUMODE_SETTING_TITLE,
+                    R_CPUMODE_SETTING_PAGE,
+                    R_CPUMODE_SETTING_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemKeepBackLightOn,
+                    R_KEEPBACKLIGHTON_SETTING_TITLE,
+                    R_BINARY_SETTING_PAGE,
+                    R_YESNO_BINARYSELECTION_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemPowerMonitoringEnabled,
+                    R_POWERMONITORINGENABLED_SETTING_TITLE,
+                    R_BINARY_SETTING_PAGE,
+                    R_YESNO_BINARYSELECTION_TEXTS,
+                    ordinal++);
+//
+    AddSettingItemL(ESettingListItemDataPopupVisbility,
+                    R_DATAPOPUPVISIBILITY_SETTING_TITLE,
+                    R_DATAPOPUPVISIBILITY_SETTING_PAGE,
+                    R_DATAPOPUPVISIBILITY_SETTING_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemDataPopupLocation,
+                    R_DATAPOPUPLOCATION_SETTING_TITLE,
+                    R_DATAPOPUPLOCATION_SETTING_PAGE,
+                    R_DATAPOPUPLOCATION_SETTING_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemDataPopupSources,
+                    R_SOURCES_SETTING_TITLE,
+                    R_SOURCES_SETTING_PAGE,
+                    NULL,
+                    ordinal++);                    
+//
+    AddSettingItemL(ESettingListItemGraphsVerticalBarPeriod,
+                    R_GRAPHSVERTICALBAR_SETTING_TITLE,
+                    R_GRAPHSVERTICALBAR_SETTING_PAGE,
+                    NULL,
+                    ordinal++);
+    
+    AddSettingItemL(ESettingListItemGraphsSources,
+                    R_SOURCES_SETTING_TITLE,
+                    R_SOURCES_SETTING_PAGE,
+                    NULL,
+                    ordinal++);                    
+//
+    AddSettingItemL(ESettingListItemLoggingMode,
+                    R_LOGGINGMODE_SETTING_TITLE,
+                    R_LOGGINGMODE_SETTING_PAGE,
+                    R_LOGGINGMODE_SETTING_TEXTS,
+                    ordinal++);
+
+     AddSettingItemL(ESettingListItemLoggingFilePath,
+                    R_LOGGINGFILEPATH_SETTING_TITLE,
+                    R_LOGGINGFILEPATH_SETTING_PAGE,
+                    NULL,
+                    ordinal++);
+    
+    AddSettingItemL(ESettingListItemLoggingSources,
+                    R_SOURCES_SETTING_TITLE,
+                    R_SOURCES_SETTING_PAGE,
+                    NULL,
+                    ordinal++);                    
+                                                             
+    SetVisibilitiesOfSettingItemsL(); 
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonSettingsViewDlg::AddSettingItemL(TInt aId,
+                                                 TInt aTitleResource,
+                                                 TInt aSettingPageResource,
+                                                 TInt aAssociatedResource,
+                                                 TInt aOrdinal)
+    {
+    // create a setting item
+    CAknSettingItem* settingItem = NULL;
+    
+    switch (aId)
+        {
+        case ESettingListItemHeartBeat:
+            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iHeartBeat);
+            break;
+
+        case ESettingListItemMaxSamples:
+            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iMaxSamples);
+            break;
+
+        case ESettingListItemPriority:
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iPriority);
+            break;
+
+        case ESettingListItemCPUMode:
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iCPUMode);
+            break;
+
+        case ESettingListItemKeepBackLightOn:
+            settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iKeepBacklightOn);
+            break;
+
+        case ESettingListItemPowerMonitoringEnabled:
+            settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iPowerMonitoringEnabled);
+            break;
+
+        case ESettingListItemDataPopupVisbility:
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iDataPopupVisibility);
+            break;
+
+        case ESettingListItemDataPopupLocation:
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iDataPopupLocation);
+            break;
+
+        case ESettingListItemDataPopupSources:
+            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iDataPopupSources);
+            break;
+
+        case ESettingListItemGraphsVerticalBarPeriod:
+            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iGraphsVerticalBarPeriod);
+            break;
+
+        case ESettingListItemGraphsSources:
+            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iGraphsSources);
+            break;
+
+        case ESettingListItemLoggingMode:
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iLoggingMode);
+            break;
+
+        case ESettingListItemLoggingFilePath:
+            settingItem = new(ELeave) CAknTextSettingItem(aId, iSettings.iLoggingFilePath);
+            break;
+
+        case ESettingListItemLoggingSources:
+            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iLoggingSources);
+            break;
+
+        default:
+            User::Panic(_L("NotSetItem"), 50);
+            break;
+        }
+        
+    CleanupStack::PushL(settingItem);
+
+    // get title text
+    HBufC* itemTitle = StringLoader::LoadLC(aTitleResource);
+
+    // construct the setting item
+    settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
+                            EAknCtPopupSettingList, NULL, aAssociatedResource);
+
+    // append the setting item to settingitem array
+    iSettingItemArray->InsertL(aOrdinal, settingItem);
+
+    CleanupStack::PopAndDestroy(); //itemTitle
+    CleanupStack::Pop(); //settingItem
+    }
+
+
+// --------------------------------------------------------------------------------------------
+// --------------------------------------------------------------------------------------------
+	
+CSourceSelectionCheckBoxSettingItem::CSourceSelectionCheckBoxSettingItem( TInt aIdentifier, TPerfMonSources& aMemoryInUse ): 
+	CAknSettingItem(aIdentifier), iExternalSources( aMemoryInUse ) 
+	{
+	}	
+
+CSourceSelectionCheckBoxSettingItem::~CSourceSelectionCheckBoxSettingItem()
+	{
+	delete iSettingText;
+
+    if( iItemArray )
+        {
+        iItemArray->ResetAndDestroy();
+        delete iItemArray;
+        }
+	}
+
+void CSourceSelectionCheckBoxSettingItem::AddNewItemToArrayL(const TDesC& aLabel)
+	{
+	TBuf<64> buf;
+	buf.Copy(aLabel);
+	
+    CSelectableItem* item = new(ELeave) CSelectableItem(buf, EFalse);
+    CleanupStack::PushL(item);
+    item->ConstructL();
+    iItemArray->AppendL(item); // Ownership is transferred
+    CleanupStack::Pop(); // item	
+	}
+	
+void CSourceSelectionCheckBoxSettingItem::CompleteConstructionL()
+	{
+    SetEmptyItemTextL(_L("Nothing selected"));
+
+    iItemArray = new(ELeave) CSelectionItemList(16);
+    AddNewItemToArrayL(_L("CPU"));
+    AddNewItemToArrayL(_L("RAM"));
+    AddNewItemToArrayL(_L("C:"));
+    AddNewItemToArrayL(_L("D:"));
+    AddNewItemToArrayL(_L("E:"));
+    AddNewItemToArrayL(_L("F:"));
+    AddNewItemToArrayL(_L("G:"));
+    AddNewItemToArrayL(_L("H:"));
+    AddNewItemToArrayL(_L("I:"));
+    AddNewItemToArrayL(_L("Power"));
+
+	__ASSERT_ALWAYS(ESourcesLength==iItemArray->Count(), User::Panic(_L("Src.mismatch"),443));
+    }
+
+// transfer settings to the variables defined in the constructor    	
+void CSourceSelectionCheckBoxSettingItem::StoreL()
+	{
+	for (TInt i=0; i<ESourcesLength; i++)
+	    {
+        iExternalSources.iSrcEnabled[i] = iItemArray->At(i)->SelectionStatus();
+	    }
+	}
+
+// load settings from the variables defined in the constructor to our internal variables
+void CSourceSelectionCheckBoxSettingItem::LoadL()
+	{
+	for (TInt i=0; i<ESourcesLength; i++)
+	    {
+        iItemArray->At(i)->SetSelectionStatus( iExternalSources.iSrcEnabled[i] );
+	    }
+	}
+
+// returns the text shown in the setting item list
+const TDesC& CSourceSelectionCheckBoxSettingItem::SettingTextL()
+	{
+    TBuf<32> settingText;
+
+    if (iItemArray->At(ESourceCPU)->SelectionStatus())
+        settingText.Append(_L("CPU "));
+    if (iItemArray->At(ESourceRAM)->SelectionStatus())
+        settingText.Append(_L("RAM "));
+    if (iItemArray->At(ESourceC)->SelectionStatus())
+        settingText.Append(_L("C: "));
+    if (iItemArray->At(ESourceD)->SelectionStatus())
+        settingText.Append(_L("D: "));
+    if (iItemArray->At(ESourceE)->SelectionStatus())
+        settingText.Append(_L("E: "));
+    if (iItemArray->At(ESourceF)->SelectionStatus())
+        settingText.Append(_L("F: "));
+    if (iItemArray->At(ESourceG)->SelectionStatus())
+        settingText.Append(_L("G: "));
+    if (iItemArray->At(ESourceH)->SelectionStatus())
+        settingText.Append(_L("H: "));
+    if (iItemArray->At(ESourceI)->SelectionStatus())
+        settingText.Append(_L("I: "));
+    if (iItemArray->At(ESourcePwr)->SelectionStatus())
+        settingText.Append(_L("Power "));
+    settingText.TrimAll();
+
+    if (iSettingText)
+        {
+        delete iSettingText;
+        iSettingText = NULL;
+        }
+
+    iSettingText = HBufC::NewL(settingText.Length());
+    iSettingText->Des().Copy(settingText);
+
+	if ( iSettingText->Length() > 0 )
+		return *iSettingText;
+	else
+		return EmptyItemText();
+	}
+
+
+// launches the setting page
+void CSourceSelectionCheckBoxSettingItem::EditItemL(TBool /*aCalledFromMenu*/)
+	{
+	CSourceSelectionCheckBoxSettingPage* dlg = new(ELeave) CSourceSelectionCheckBoxSettingPage(SettingPageResourceId(), iItemArray);
+
+	SetSettingPage( dlg );
+	SettingPage()->SetSettingPageObserver(this);
+
+	SettingPage()->ExecuteLD(CAknSettingPage::EUpdateWhenChanged);
+	SetSettingPage(0); // it is deleted now
+	}
+
+
+// handles setting page events
+void CSourceSelectionCheckBoxSettingItem::HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType )
+    {
+    switch( aEventType )
+        {
+        case EEventSettingCancelled:
+            {
+            // If setting is cancelled, load old values
+            LoadL();
+            break;
+            }
+        case EEventSettingChanged:
+            {
+            // If setting has changed, update CBA visibility
+            static_cast<CSourceSelectionCheckBoxSettingPage*>( aSettingPage )->UpdateCba();
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    CAknSettingItem::HandleSettingPageEventL( aSettingPage, aEventType );
+    }
+
+// --------------------------------------------------------------------------------------------
+// --------------------------------------------------------------------------------------------
+
+CSourceSelectionCheckBoxSettingPage::CSourceSelectionCheckBoxSettingPage(TInt aResourceID, CSelectionItemList* aItemArray )
+    : CAknCheckBoxSettingPage( aResourceID, aItemArray )
+	{
+	}
+
+void CSourceSelectionCheckBoxSettingPage::UpdateCba()
+	{
+	// Cache the pointer to button group container
+	CEikButtonGroupContainer* cba = Cba();
+	// Left softkey should be visible if there are items selected,
+	// i.e. the selection index array has items.
+	TBool visible( ListBoxControl()->View()->SelectionIndexes()->Count() > 0 );
+	// Resolve left softkey command id
+	TInt leftId( cba->ButtonGroup()->CommandId( 0 ) );
+	// Check if left softkey visibility has changed
+	if( visible != cba->IsCommandVisible( leftId ) )
+		{
+		// Left softkey visibility has changed, update it
+		cba->MakeCommandVisible( leftId, visible );
+		}
+	}
+
+// --------------------------------------------------------------------------------------------
+// --------------------------------------------------------------------------------------------
+    
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_valuescontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,169 @@
+/*
+* 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 FILES
+#include "perfmon_valuescontainer.h"
+#include "perfmon.hrh"
+#include "perfmon_document.h"
+#include "perfmon_appui.h"
+#include "perfmon_model.h"
+
+#include <AknUtils.h>
+
+_LIT(KFreeFormat,"%S free %S%S"); 
+_LIT(KSizeFormat,"%S size %S%S"); 
+
+const TInt KLeftMargin = 2;
+
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+void CPerfMonValuesContainer::ConstructL(const TRect& aRect)
+    {
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    iFont = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont);
+ 
+    CreateWindowL();
+    SetRect(aRect);
+    SetBlank();
+
+    ActivateL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CPerfMonValuesContainer::~CPerfMonValuesContainer()
+    {
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonValuesContainer::Draw(const TRect& aRect) const
+    {
+    CWindowGc& gc = SystemGc();
+    gc.SetBrushColor(KRgbWhite);
+    gc.Clear(aRect);
+    
+    // check if sample array has been constructed
+    if (iModel->SampleEntryArray())
+        {
+        // init font
+        gc.SetPenColor(KRgbBlack);
+        gc.UseFont( iFont );
+        TUint separator = iFont->HeightInPixels()-2;
+
+        // draw CPU %
+        TBuf<64> cpuText;
+        cpuText.Copy(_L("CPU: "));
+
+        for (TInt i=iModel->CPU0PositionInSamples(); i<iModel->CPU0PositionInSamples()+iModel->AmountOfCPUs(); i++)
+            {
+            // check if data available
+            if (iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);
+                
+                cpuText.AppendNum( currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
+                cpuText.Append(_L("% "));
+                }
+
+            }
+        gc.DrawText(cpuText, TPoint(KLeftMargin,separator));
+        
+        TInt c(2);  // line counter
+
+        // draw RAM and Drive values
+        for (TInt i=iModel->RAMPositionInSamples(); i<iModel->PowerPositionInSamples(); i++)
+            {
+            // check if data available
+            if (iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
+                {
+                TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);
+
+                if (currentSample.iSize > 0) // draw only when size is known, this should ignore absent drives
+                    {
+                    TBuf<32> amountBuf;
+                    amountBuf.AppendNum(currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
+        
+                    TBuf<32> buf;
+                    buf.Format(KFreeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &amountBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
+                    gc.DrawText(buf, TPoint(KLeftMargin,separator*c));
+                    c++;
+                    
+                    amountBuf.Copy(KNullDesC);
+                    amountBuf.AppendNum(currentSample.iSize, TRealFormat(KDefaultRealWidth, 0));
+        
+                    buf.Format(KSizeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &amountBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
+                    gc.DrawText(buf, TPoint(KLeftMargin,separator*c));
+                    c++;
+                    }
+                }
+            }
+            
+        // draw power value
+        if (iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iSampleDataArray->Count() > 0)
+            {
+            TSampleData& currentSample = iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iSampleDataArray->At(0);
+
+            if (currentSample.iSize > 0)
+                {
+                TBuf<32> powerText;
+                powerText.Copy(_L("Power "));
+
+                powerText.AppendNum(currentSample.iSize - currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
+                powerText.AppendFormat(_L("%S"), &iModel->SampleEntryArray()->At(iModel->PowerPositionInSamples()).iUnitTypeShort);
+
+                gc.DrawText(powerText, TPoint(KLeftMargin,separator*c));
+                }
+            }
+            
+        gc.DiscardFont();        
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CPerfMonValuesContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
+    }
+        
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonValuesContainer::HandleResourceChange(TInt aType)
+    {
+    if (aType == KEikDynamicLayoutVariantSwitch)
+        {
+        TRect mainPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+        SetRect(mainPaneRect);
+        }
+    else
+        CCoeControl::HandleResourceChange(aType);    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CPerfMonValuesContainer::DrawUpdate()
+    {
+    DrawDeferred(); 
+    }
+    
+// --------------------------------------------------------------------------------------------
+       
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/avkon/src/perfmon_valuesview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,147 @@
+/*
+* 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 FILES
+#include "perfmon.hrh"
+#include "perfmon_valuesview.h"
+#include "perfmon_valuescontainer.h"
+#include "perfmon_document.h" 
+#include "perfmon_model.h"
+#include <perfmon.rsg>
+
+#include <eikenv.h>
+#include <aknViewAppUi.h> 
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPerfMonValuesView::ConstructL(const TRect& aRect)
+// EPOC two-phased constructor
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::ConstructL()
+    {
+    BaseConstructL( R_PERFMON_VIEW_VALUES );
+    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    }
+
+// ---------------------------------------------------------
+// CPerfMonValuesView::~CPerfMonValuesView()
+// ---------------------------------------------------------
+//
+CPerfMonValuesView::~CPerfMonValuesView()
+    {
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+
+// ---------------------------------------------------------
+// TUid CPerfMonValuesView::Id()
+// ---------------------------------------------------------
+//
+TUid CPerfMonValuesView::Id() const
+    {
+    return KValuesViewUID;
+    }
+
+// ---------------------------------------------------------
+// TUid CPerfMonValuesView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
+    }
+
+  
+// ---------------------------------------------------------
+// CPerfMonValuesView::HandleCommandL(TInt aCommand)
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::HandleCommandL(TInt aCommand)
+    {   
+/*
+    switch ( aCommand )
+        {
+        case EPerfMonCmdFileBack:
+            {
+            iModel->FileUtils()->MoveUpOneLevelL();
+            break;
+            }
+
+        default:
+            {
+*/
+            AppUi()->HandleCommandL( aCommand );
+/*
+            break;
+            }
+        }
+*/
+    }
+
+// ---------------------------------------------------------
+// CPerfMonValuesView::HandleClientRectChange()
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::HandleClientRectChange()
+    {
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    }
+
+// ---------------------------------------------------------
+// CPerfMonValuesView::DoActivateL(...)
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::DoActivateL(
+   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8& /*aCustomMessage*/)
+    {
+    if (!iContainer)
+        {
+        iContainer = new (ELeave) CPerfMonValuesContainer;
+        iModel->SetValuesContainer(iContainer);
+        iContainer->SetMopParent(this);
+        iContainer->ConstructL( ClientRect() );
+        AppUi()->AddToStackL( *this, iContainer );
+        } 
+   }
+
+// ---------------------------------------------------------
+// CPerfMonValuesView::DoDeactivate()
+// ---------------------------------------------------------
+//
+void CPerfMonValuesView::DoDeactivate()
+    {
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/app.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,80 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = app
+TARGET = PerfMon
+DEPENDPATH += .
+INCLUDEPATH += inc
+
+load(hb.prf)
+symbian:CONFIG -= symbian_i18n
+
+HEADERS += inc/application.h \
+    inc/mainwindow.h \
+    inc/mainview.h \
+    inc/datacontainer.h \
+    inc/valuedatacontainer.h \
+    inc/graphdatacontainer.h \
+    inc/settingsview.h \
+#    inc/datapopup.h \
+    inc/enginewrapper.h
+
+SOURCES += src/main.cpp \
+    src/application.cpp \
+    src/mainwindow.cpp \
+    src/mainview.cpp \
+    src/valuedatacontainer.cpp \
+    src/graphdatacontainer.cpp \
+    src/settingsview.cpp \
+#    src/datapopup.cpp \
+    src/enginewrapper.cpp
+
+RESOURCES +=
+
+symbian: {
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+    INCLUDEPATH += ../../../engine/inc
+    HEADERS += ../../../engine/inc/perfmon_engine.h \
+            ../../../engine/inc/perfmon_powerlistener.h
+
+    SOURCES += ../../../engine/src/perfmon_engine.cpp \
+            ../../../engine/src/perfmon_powerlistener.cpp
+
+    LIBS += -lestor \
+        -lbafl \
+        -lefsrv \
+        -lavkon \
+        -lapparc \
+        -lapgrfx \
+        -lgdi \
+        -lcone \
+        -lcentralrepository \
+        -lHWRMPowerClient
+
+    TARGET.CAPABILITY = WriteDeviceData
+
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x20011385
+    TARGET.SID = 0x20011385
+    TARGET.VID = 0x101FB657 // Nokia
+
+    TARGET.EPOCHEAPSIZE = 0x10000 0x2000000  // Min 64Kb, Max 32Mb
+
+    ICON = ../../../icons/qgn_menu_perfmon.svg
+
+    RSS_RULES += "group_name = \"RnD Tools\"";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/application.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef APPLICATION_H
+#define APPLICATION_H
+
+#include <HbApplication>
+
+
+class QSymbianEvent;
+
+class Application : public HbApplication
+{
+    Q_OBJECT
+
+public:
+    Application(int &argc, char *argv[]);
+
+signals:
+    void foregroundEvent(bool foreground);
+
+protected:
+#ifdef Q_OS_SYMBIAN
+    bool symbianEventFilter(const QSymbianEvent * event);
+#endif
+};
+
+#endif // APPLICATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/datacontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef DATACONTAINER_H
+#define DATACONTAINER_H
+
+#include <hbwidget.h>
+#include <enginewrapper.h>
+
+class DataContainer : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    DataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0) :
+            HbWidget(parent),
+            mEngine(engine)
+    {
+    }
+
+    void hideContainer()
+        {
+        disconnect(&mEngine, SIGNAL(samplesUpdated()), this, SLOT(samplesUpdated()));
+        hide();
+        }
+    
+    void showContainer()
+        {
+        connect(&mEngine, SIGNAL(samplesUpdated()),this, SLOT(samplesUpdated()));
+        show();
+        }
+    
+    inline const EngineWrapper& engine() const { return mEngine; }
+
+public slots:
+    virtual void samplesUpdated()
+    {
+    update();
+    }
+
+private:
+    const EngineWrapper& mEngine;
+};
+
+#endif // DATACONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/datapopup.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef DATAPOPUP_H
+#define DATAPOPUP_H
+
+#include <HbDeviceDialog>
+#include <QFont>
+
+class EngineWrapper;
+
+class DataPopup : public HbDeviceDialog
+{
+    Q_OBJECT
+
+public:
+    DataPopup(EngineWrapper &engine);
+
+public slots:
+    void show();
+    void hide();
+    void updateSamples();
+    void updateSettings();
+    void updateVisibility(bool foreground);
+
+signals:
+    void clicked();
+
+private slots:
+    void triggerAction(QVariantMap data);
+
+private:
+    QVariantMap collectParams() const;
+    void updateData();
+
+private:
+    EngineWrapper &mEngine;
+
+    bool mPopupCreated;
+
+    bool mPopupVisible;
+};
+
+#endif // DATAPOPUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/enginewrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef ENGINEWRAPPER_H
+#define ENGINEWRAPPER_H
+
+#include "perfmon_engine.h"
+
+#include <QObject>
+#include <QColor>
+#include <QList>
+#include <QVariant>
+
+struct SampleData
+{
+    qint64 mFree;
+    qint64 mSize;
+    qint64 mTimeFromStart;
+};
+
+class SampleEntry
+{
+public:
+    SampleEntry(const TSampleEntry& sampleEntry) : mEntry(&sampleEntry) {}
+
+    QString description() const { return QString((QChar*)mEntry->iDescription.Ptr(), mEntry->iDescription.Length()); }
+    QString unitShort() const { return QString((QChar*)mEntry->iUnitTypeShort.Ptr(), mEntry->iUnitTypeShort.Length()); }
+    QString unitLong() const { return QString((QChar*)mEntry->iUnitTypeLong.Ptr(), mEntry->iUnitTypeLong.Length()); }
+    int driveNumber() const { return mEntry->iDriveNumber; }
+    QColor graphColor() const { return QColor(mEntry->iGraphColor.Red(), mEntry->iGraphColor.Green(), mEntry->iGraphColor.Blue()); }
+
+    int sampleCount() const { return mEntry->iSampleDataArray->Count(); }
+    inline const SampleData& sample(int index) const { return reinterpret_cast<SampleData&>(mEntry->iSampleDataArray->At(index)); }
+private:
+    const TSampleEntry *mEntry;
+
+friend class EngineWrapper;
+};
+
+class PerfMonSources
+{
+public:
+    int count() const { return ESourcesLength; }
+    int isEnabled (int index) const { return mSources.iSrcEnabled[index]; }
+    void setEnabled(int index, bool enabled) { mSources.iSrcEnabled[index] = enabled; }
+    QList<QVariant> enabledIndexes() const {
+        QList<QVariant> indexes;
+        for(int i=0; i<count(); i++) {
+            if (isEnabled(i))
+                indexes.append(i);
+        }
+        return indexes;
+    }
+    void setEnabledIndexes(const QList<QVariant> &indexes)
+    {
+        for (int i=0; i<count(); i++) {
+            setEnabled(i, false);
+        }
+        foreach (const QVariant& index, indexes) {
+        	setEnabled(index.toInt(), true);
+        }
+    }
+
+private:
+    PerfMonSources(TPerfMonSources &sources) : mSources(sources) {}
+    friend class PerfMonSettings;
+
+private:
+    TPerfMonSources &mSources;
+};
+
+class PerfMonSettings
+{
+public:
+    int heartBeat() const { return mSettings.iHeartBeat; }
+    int maxSamples() const { return mSettings.iMaxSamples; }
+    int priority() const { return mSettings.iPriority; }
+    int cpuMode() const { return mSettings.iCPUMode; }
+    bool keepBacklightOn() const { return mSettings.iKeepBacklightOn; }
+    bool powerMonitoringEnabled() const { return mSettings.iPowerMonitoringEnabled; }
+
+    int dataPopupVisibility() const { return mSettings.iDataPopupVisibility; }
+    int dataPopupLocation() const { return mSettings.iDataPopupLocation; }
+    PerfMonSources &dataPopupSources() { return mDataPopupSources; }
+    const PerfMonSources &dataPopupSources() const { return mDataPopupSources; }
+
+    int graphVerticalBarPeriod() const { return mSettings.iGraphsVerticalBarPeriod; }
+    PerfMonSources &graphSources() { return mGraphSources; }
+    const PerfMonSources &graphSources() const { return mGraphSources; }
+
+    int loggingMode() const { return mSettings.iLoggingMode; }
+    QString loggingFilePath() const {
+        return QString((QChar*)mSettings.iLoggingFilePath.Ptr(),
+                       mSettings.iLoggingFilePath.Length());
+    }
+    PerfMonSources &loggingSources() { return mLogSources; }
+    const PerfMonSources &loggingSources() const { return mLogSources; }
+
+    bool loggingEnabled() { return mSettings.iLoggingEnabled; }
+
+
+    void setHeartBeat(int heartBeat) { mSettings.iHeartBeat = heartBeat; }
+    void setMaxSamples(int maxSamples) { mSettings.iMaxSamples = maxSamples; }
+    void setPriority(int priority) { mSettings.iPriority = priority; }
+    void setCpuMode(int cpuMode) { mSettings.iCPUMode = cpuMode; }
+    void setKeepBacklightOn(bool backlightOn) const { mSettings.iKeepBacklightOn = backlightOn; }
+    void setPowerMonitoringEnabled(bool powerEnabled) const { mSettings.iPowerMonitoringEnabled = powerEnabled; }
+
+    void setDataPopupVisibility(int visibility) { mSettings.iDataPopupVisibility = visibility; }
+    void setDataPopupLocation(int location) { mSettings.iDataPopupLocation = location; }
+
+    void setGraphVerticalBarPeriod(int period) { mSettings.iGraphsVerticalBarPeriod = period; }
+
+    void setLoggingMode(int mode) { mSettings.iLoggingMode = mode; }
+    void setLoggingFilePath(const QString& filePath) { mSettings.iLoggingFilePath = filePath.utf16(); }
+
+private:
+    // only EngineWrapper can create Settings instance
+    PerfMonSettings(TPerfMonSettings &settings) :
+            mSettings(settings),
+            mDataPopupSources(settings.iDataPopupSources),
+            mGraphSources(settings.iGraphsSources),
+            mLogSources(settings.iLoggingSources)
+    {}
+    friend class EngineWrapper;
+
+private:
+    TPerfMonSettings &mSettings;
+    PerfMonSources mDataPopupSources;
+    PerfMonSources mGraphSources;
+    PerfMonSources mLogSources;
+};
+
+/**
+ * class that is used for communicating between Symbian and Qt code.
+ */
+class EngineWrapper : public QObject, public CPerfMonEngine
+ {
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor
+     */
+    EngineWrapper();
+
+    /**
+     * Destructor
+     */
+    ~EngineWrapper();
+
+public:
+    const QList<SampleEntry>& sampleEntries() const { return mEntries; }
+
+    PerfMonSettings &settings() { return mSettings; }
+    const PerfMonSettings &settings() const { return mSettings; }
+
+    int SampleEntryPosToSettingPos(int entryPos) const;
+
+public slots:
+
+    bool updateSettings();
+    bool initialize();
+    void finalize();
+    void setLoggingEnabled(bool enabled);
+
+signals:
+
+    void samplesUpdated();
+    void settingsUpdated();
+
+protected:
+    void SendDrawEventToContainersL();
+
+private:
+    QList<SampleEntry> mEntries;
+
+    void createSampleEntriesArray();
+
+    PerfMonSettings mSettings;
+};
+
+#endif //ENGINEWRAPPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/graphdatacontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef GRAPHDATACONTAINER_H
+#define GRAPHDATACONTAINER_H
+
+#include "datacontainer.h"
+
+#include <QFont>
+
+class GraphDataContainer : public DataContainer
+{
+    Q_OBJECT
+public:
+    GraphDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
+
+protected:
+    void paint (QPainter *painter,
+                const QStyleOptionGraphicsItem *option,
+                QWidget *widget = 0);
+
+private:
+    QFont mFont;
+};
+
+#endif // GRAPHDATACONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/mainview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef MAINVIEW_H
+#define MAINVIEW_H
+
+#include <hbview.h>
+
+#include "valuedatacontainer.h"
+#include "graphdatacontainer.h"
+
+class HbAction;
+class EngineWrapper;
+
+class MainView : public HbView
+{
+    Q_OBJECT
+
+public:
+    MainView(EngineWrapper &engine);
+    ~MainView();
+
+private:
+    void createMenu();
+
+public slots:
+    void showValues();
+    void showGraphs();
+    void toggleLogging();
+    void showAbout();
+
+signals:
+    void settingsCommandInvoked();
+
+private:
+    void updateLoggingAction();
+
+private:
+    EngineWrapper &mEngine;
+
+    ValueDataContainer *mValueDataContainer;
+    GraphDataContainer *mGraphDataContainer;
+
+    HbAction *mValuesAction;
+    HbAction *mGraphAction;
+    HbAction *mSwitchViewAction;
+    HbAction *mLoggingAction;
+};
+
+#endif // MAINVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/mainwindow.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <HbMainWindow>
+
+class EngineWrapper;
+class MainView;
+class SettingsView;
+
+class MainWindow : public HbMainWindow
+{
+    Q_OBJECT
+public:
+    MainWindow(EngineWrapper &engine, QWidget *parent = 0);
+
+public slots:
+    void showMainView();
+    void showSettings();
+
+private:
+    void clearViews();
+
+private:
+    EngineWrapper &mEngine;
+    MainView* mMainView;
+    SettingsView* mSettingsView;
+};
+
+#endif // MAINWINDOW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/popupdatacontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef POPUPDATACONTAINER_H
+#define POPUPDATACONTAINER_H
+
+#include "datacontainer.h"
+
+#include <QFont>
+
+class PopupDataContainer : public DataContainer
+{
+    Q_OBJECT
+public:
+    PopupDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
+
+public slots:
+    virtual void samplesUpdated();
+
+protected:
+    void paint (QPainter *painter,
+                const QStyleOptionGraphicsItem *option,
+                QWidget *widget = 0);
+
+private:
+    QFont mFont;
+};
+
+#endif // POPUPDATACONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/settingsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef SETTINGSVIEW_H
+#define SETTINGSVIEW_H
+
+#include <hbview.h>
+
+class HbDataForm;
+class HbDataFormModel;
+class HbDataFormModelItem;
+
+class EngineWrapper;
+class PerfMonSettings;
+class PerfMonSources;
+
+class SettingsView : public HbView
+{
+    Q_OBJECT
+
+signals:
+    void finished(bool ok);
+
+public:
+    SettingsView(EngineWrapper &engine);
+
+private slots:
+    void dataItemDisplayed(const QModelIndex &index);
+    void logModeChanged(int index);
+    void accept();
+    void reject();
+
+private:
+    void createModel(HbDataFormModel &model);
+    void load(const PerfMonSettings& settings);
+    void save(PerfMonSettings& settings);
+    void createLogFilePathItem();
+    void removeLogFilePathItem();
+    
+private:
+    EngineWrapper &mEngine;
+    HbDataForm *mSettingsForm;
+    HbDataFormModel *mModel;
+
+    HbDataFormModelItem* mHeartBeatItem;
+    HbDataFormModelItem* mMaxSamplesItem;
+    HbDataFormModelItem* mPriorityItem;
+    HbDataFormModelItem* mCpuSamplingItem;
+    HbDataFormModelItem* mKeepBacklightItem;
+    HbDataFormModelItem* mPowerMonitoringEnabledItem;
+    HbDataFormModelItem* mPopupVisibilityItem;
+    HbDataFormModelItem* mPopupLocationItem;
+    HbDataFormModelItem* mPopupSourcesItem;
+    HbDataFormModelItem* mVerticalBarPeriodItem;
+    HbDataFormModelItem* mGraphSourcesItem;
+
+    HbDataFormModelItem* mLogPage;
+    HbDataFormModelItem* mLogModeItem;
+    HbDataFormModelItem* mLogFilePathItem;
+    HbDataFormModelItem* mLogSourcesItem;
+    
+    QString mLogFilePath;
+};
+
+#endif // SETTINGSVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/inc/valuedatacontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef VALUEDATACONTAINER_H
+#define VALUEDATACONTAINER_H
+
+#include "datacontainer.h"
+
+#include <QFont>
+
+class ValueDataContainer : public DataContainer
+{
+    Q_OBJECT
+public:
+    ValueDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
+
+protected:
+    void paint (QPainter *painter,
+                const QStyleOptionGraphicsItem *option,
+                QWidget *widget = 0);
+
+private:
+    QFont mFont;
+};
+
+#endif // VALUEDATACONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/application.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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 <QSymbianEvent>
+
+#include "application.h"
+
+#ifdef Q_OS_SYMBIAN
+#include <w32std.h>
+
+#endif
+
+Application::Application(int &argc, char *argv[]) :
+        HbApplication(argc, argv)
+{
+}
+
+#ifdef Q_OS_SYMBIAN
+bool Application::symbianEventFilter(const QSymbianEvent * event)
+{
+    if (event->type() == QSymbianEvent::WindowServerEvent)
+    {
+        const TWsEvent *aEvent = event->windowServerEvent();
+
+        if (aEvent->Type() == EEventFocusLost) {
+            emit foregroundEvent(false);
+        }
+
+        if (aEvent->Type() == EEventFocusGained) {
+            emit foregroundEvent(true);
+        }
+    }
+    return HbApplication::symbianEventFilter(event);
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/datapopup.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2010 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 <HbView>
+#include <HbEvent>
+#include <QFontMetrics>
+
+#include "datapopup.h"
+#include "enginewrapper.h"
+#include "popupdatacontainer.h"
+
+DataPopup::DataPopup(EngineWrapper &engine) :
+        mEngine(engine),
+        mPopupCreated(false),
+        mPopupVisible(false)
+{
+    connect(&mEngine, SIGNAL(samplesUpdated()), this, SLOT(updateSamples()));
+    connect(&mEngine, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
+    connect(this, SIGNAL(dataReceived(QVariantMap)), this, SLOT(triggerAction(QVariantMap)));
+}
+
+void DataPopup::show()
+{
+    mPopupVisible = true;
+    if (!mPopupCreated &&
+        mEngine.sampleEntries().length() &&
+        mEngine.settings().dataPopupSources().enabledIndexes().length())
+    {
+        bool anyData = false;
+        foreach (QVariant index, mEngine.settings().dataPopupSources().enabledIndexes())
+            anyData = anyData || mEngine.sampleEntries().at(index.toInt()).sampleCount();
+
+        if (anyData) {
+            mPopupCreated = HbDeviceDialog::show("com.nokia.rnd.perfmondatapopup/1.0",
+                                                 collectParams());
+        }
+    }
+}
+
+void DataPopup::hide()
+{
+    mPopupVisible = false;
+    if (mPopupCreated) {
+        mPopupCreated = !cancel();
+    }
+}
+
+void DataPopup::updateSamples()
+{
+    updateData();
+}
+
+void DataPopup::updateSettings()
+{
+    // mEngine.settings().dataPopupVisibility can only be changed from
+    // main window, so we may assume the window is in foreground
+    updateVisibility(true);
+    updateData();
+}
+
+void DataPopup::updateVisibility(bool foreground)
+{
+    if (mEngine.settings().dataPopupVisibility() == EDataPopupVisbilityAlwaysOn ||
+        (mEngine.settings().dataPopupVisibility() == EDataPopupVisbilityBackgroundOnly && !foreground)) {
+
+        show();
+    } else {
+        hide();
+    }
+}
+
+void DataPopup::triggerAction(QVariantMap data)
+{
+    if (data.contains("mouseEvent") && data["mouseEvent"].toString() == "press") {
+        emit clicked();
+
+        // data popup was clicked, move it to other position
+        mEngine.settings().setDataPopupLocation(
+                EDataPopupLocationBottomMiddle - mEngine.settings().dataPopupLocation());
+        mEngine.updateSettings();
+    }
+}
+
+QVariantMap DataPopup::collectParams() const
+{
+    QVariantMap result;
+
+    // add location param
+    result["location"] = mEngine.settings().dataPopupLocation();
+
+    // add lines param
+    QStringList lines;
+    QList<SampleEntry> entries = mEngine.sampleEntries();
+    int posCounter(ESourceCPU);
+
+    if (mEngine.settings().dataPopupSources().isEnabled(posCounter))
+    {
+        // loop all CPUs
+        for (TInt i = mEngine.CPU0PositionInSamples(); i < mEngine.CPU0PositionInSamples() + mEngine.AmountOfCPUs(); i++)
+        {
+            // check samples available
+            if (entries.at(i).sampleCount() > 0)
+            {
+                const SampleEntry &entry = entries.at(i);
+                const SampleData &sample = entry.sample(0);
+
+                double perc = sample.mSize > 0 ?
+                              100. - 100. * sample.mFree / sample.mSize : 0;
+
+                QString text = tr("%1 %2%").arg(entry.description()).
+                               arg(perc, 0, 'f', 0);
+                lines.append(text);
+            }
+        }
+    }
+
+    posCounter++;
+
+    // draw RAM and Drive values
+    for (TInt i = mEngine.RAMPositionInSamples(); i < mEngine.PowerPositionInSamples(); i++)
+    {
+        // check if this setting has been enabled and it has some data
+        if (mEngine.settings().dataPopupSources().isEnabled(posCounter) && entries.at(i).sampleCount() > 0)
+        {
+            const SampleEntry &entry = entries.at(i);
+            const SampleData &sample = entry.sample(0);
+
+            QString text = tr("%1 free %L2%3").arg(entry.description()).
+                           arg(sample.mFree).arg(entry.unitShort());
+            lines.append(text);
+        }
+
+        posCounter++;
+    }
+
+    // draw power value
+    // check if this setting has been enabled and it has some data
+    if (mEngine.settings().dataPopupSources().isEnabled(posCounter) && entries.at(mEngine.PowerPositionInSamples()).sampleCount() > 0)
+    {
+        const SampleEntry &entry = entries.at(mEngine.PowerPositionInSamples());
+        const SampleData &sample = entry.sample(0);
+
+        QString text = tr("%1 %L2%3").arg(entry.description()).
+                       arg(sample.mSize - sample.mFree).arg(entry.unitShort());
+        lines.append(text);
+    }
+
+    result["lines"] = lines;
+
+    return result;
+}
+
+void DataPopup::updateData()
+{
+    if (!mPopupVisible)
+        return;
+
+    if (!mPopupCreated) {
+        show();
+    } else {
+        HbDeviceDialog::update(collectParams());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2010 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 <e32def.h>
+#include <e32cmn.h>
+
+#include "enginewrapper.h"
+
+
+// ---------------------------------------------------------------------------
+
+EngineWrapper::EngineWrapper() : mSettings(iSettings)
+{
+}
+
+// ---------------------------------------------------------------------------
+
+EngineWrapper::~EngineWrapper()
+{
+    finalize();
+}
+
+// ---------------------------------------------------------------------------
+
+bool EngineWrapper::initialize()
+{
+    TInt err = KErrNone;
+
+    TRAP(err, ConstructL());
+    if (err != KErrNone)
+        return false;
+
+    TRAP(err, ActivateEngineL());
+    if (err != KErrNone)
+        return false;
+
+    createSampleEntriesArray();
+
+    return true;
+}
+
+// ---------------------------------------------------------------------------
+
+int EngineWrapper::SampleEntryPosToSettingPos(int entryPos) const
+{
+    int settingPos(0); // return position of aSampleEntryPos in settings
+
+    if (entryPos >= iCPU0PositionInSamples && entryPos < iRAMPositionInSamples)
+    {
+        settingPos = ESourceCPU;
+    }
+    else if (entryPos == iRAMPositionInSamples)
+    {
+        settingPos = ESourceRAM;
+    }
+    else
+    {
+        settingPos = ESourceC + (entryPos - iCDrivePositionInSamples);
+    }
+
+    return settingPos;
+}
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::createSampleEntriesArray()
+{
+    for (TInt i=0; i < iSampleEntryArray->Count(); i++)
+    {
+        mEntries.append(iSampleEntryArray->At(i));
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::finalize()
+{
+    TRAP_IGNORE(DeActivateEngineL());
+}
+
+// ---------------------------------------------------------------------------
+
+bool EngineWrapper::updateSettings()
+{
+    TInt err = KErrNone;
+
+    TRAP(err, SaveSettingsL());
+    if (err != KErrNone)
+        return false;
+
+    TRAP(err, HandleSettingsChangeL());
+    if (err != KErrNone)
+        return false;
+
+    emit settingsUpdated();
+    return true;
+}
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::setLoggingEnabled(bool enabled)
+{
+    EnableLogging(enabled);    
+}
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::SendDrawEventToContainersL()
+{
+    emit samplesUpdated();
+}
+
+// ---------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/graphdatacontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2010 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 "graphdatacontainer.h"
+#include "enginewrapper.h"
+
+#include <QPainter>
+#include <QFontMetrics>
+
+const int amountOfMicroSecondsFitsScreen = 20 * 1000000;
+const int microToSecondMultiplier = 1000000;
+
+GraphDataContainer::GraphDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
+    DataContainer(engine, parent)
+{
+    HbFontSpec spec(HbFontSpec::Secondary);
+    mFont = spec.font();
+    mFont.setPixelSize(12);
+}
+
+void GraphDataContainer::paint (QPainter *painter,
+    const QStyleOptionGraphicsItem *option,
+    QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    // set proper font and prepare font metrics for text width / height calculation
+    painter->setFont(mFont);
+    QFontMetricsF metrics(mFont);
+
+    // fill background with black color
+    painter->fillRect(rect(), Qt::black);
+
+    // calculate time factor
+    qreal scaleFactor = rect().width() / (qreal) amountOfMicroSecondsFitsScreen;
+
+    // calculate area height which is used to draw the grpahs
+    qreal drawAreaHeight = rect().height() - 2 * metrics.height();
+
+
+    const QList<SampleEntry> sampleEntries = engine().sampleEntries();
+
+    // check if sample array has been constructed
+    if (sampleEntries.length())
+    {
+        // draw vertical time lines first
+        int verticalBarPeriodInSecs = engine().settings().graphVerticalBarPeriod();
+
+        if (verticalBarPeriodInSecs >= 1 && sampleEntries.first().sampleCount() > 0)
+        {
+            // get time from the first sample
+            const SampleData& firstSample = sampleEntries.first().sample(0);
+            qint64 currentMicroSeconds = firstSample.mTimeFromStart;
+
+            // calculate amount of microseconds exceeding value by using the modulo operator
+            int remainderInMicroSeconds = currentMicroSeconds % (verticalBarPeriodInSecs * 1000000);
+
+            // calculate first x pos
+            qreal vbarXpos = rect().width() - (remainderInMicroSeconds * scaleFactor);
+
+            // calculate the amount in seconds
+            int barSeconds = (currentMicroSeconds - remainderInMicroSeconds) / microToSecondMultiplier;
+
+            // continue drawing periodically the vertical lines
+            while (vbarXpos >= 0 && barSeconds >= 0)
+            {
+                // draw vertical line
+                painter->setPen(Qt::darkRed);
+                painter->drawLine(QPointF(vbarXpos, metrics.height() + 1),
+                                  QPointF(vbarXpos, rect().height() - metrics.height()));
+
+                // draw seconds value
+                painter->setPen(Qt::darkGray);
+                QString secsText = QString("%1s").arg(barSeconds);
+                QPointF secsPos(vbarXpos - metrics.width(secsText) / 2,
+                                rect().height());
+                painter->drawText(secsPos, secsText);
+
+                // calculate new position
+                vbarXpos -= verticalBarPeriodInSecs * 1000000 * scaleFactor;
+                barSeconds -= verticalBarPeriodInSecs;
+            }
+        }
+
+        // draw the basic grid
+        painter->setPen(Qt::darkGray);
+
+        qreal axisY = metrics.height();
+        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // upper line
+        painter->drawText(QPointF(0, axisY), tr("100%"));
+
+        axisY = rect().height() / 2;
+        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // mid line
+        painter->drawText(QPointF(0, axisY), tr("50%"));
+
+        axisY = rect().height() - metrics.height();
+        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // bottom line
+        painter->drawText(QPointF(0, axisY), tr("0%"));
+
+        int c = 0;
+        // draw graphs for each sampled type
+        for (int i=0; i<sampleEntries.length(); i++)
+        {
+            // check if this setting has been enabled and it has some data
+            if (engine().settings().graphSources().isEnabled(engine().SampleEntryPosToSettingPos(i)) &&
+                sampleEntries.at(i).sampleCount() > 0)
+            {
+                // set pen color for the graph
+                painter->setPen(sampleEntries.at(i).graphColor());
+
+                // remember the position where drawing started
+                qreal currentXPos(rect().width()); // start drawing from right
+                qreal currentYPos(0.);
+
+                // draw samples
+                for (int j=0; j<sampleEntries.at(i).sampleCount()-1; j++)
+                {
+                    const SampleData& currentSample = sampleEntries.at(i).sample(j);
+                    const SampleData& previousSample = sampleEntries.at(i).sample(j+1);
+
+                    // calculate X position for previous (j+1)
+                    qreal previousXPos = currentXPos -
+                        qAbs(previousSample.mTimeFromStart - currentSample.mTimeFromStart) * scaleFactor;
+
+
+                    // calculate initial Y position
+                    if (j==0)
+                    {
+                        currentYPos = currentSample.mSize > 0 ?
+                            drawAreaHeight * currentSample.mFree / currentSample.mSize + metrics.height() :
+                            rect().height() - metrics.height();
+                    }
+
+                    // calculate Y position for previous (j+1)
+                    qreal previousYPos = previousSample.mSize > 0 ?
+                        drawAreaHeight * previousSample.mFree / previousSample.mSize + metrics.height() :
+                        rect().height() - metrics.height();
+
+
+                    // draw a line between the previous and current
+                    painter->drawLine(QPointF(previousXPos, previousYPos),
+                                      QPointF(currentXPos, currentYPos));
+
+                    // draw current value in %
+                    if (j==0) // draw the value of first sample
+                    {
+                        qreal perc = currentSample.mSize > 0 ?
+                                     100. - 100. * currentSample.mFree / currentSample.mSize : 0;
+                        QString percText = QString ("%1 %2%").
+                                           arg(sampleEntries.at(i).description()).
+                                           arg(perc, 0, 'f', 0);
+
+                        painter->drawText(QPointF(0, metrics.height() * (c + 2)),
+                                          percText);
+                        c++;
+                    }
+
+
+                    // stop drawing if we have run out of space
+                    if (previousXPos < 0)
+                        break;
+
+                    // remeber previous values
+                    currentXPos = previousXPos;
+                    currentYPos = previousYPos;
+                }
+
+
+            }
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/main.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 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 <QMessageBox>
+
+#include "application.h"
+#include "enginewrapper.h"
+#include "mainwindow.h"
+#include "datapopup.h"
+
+int main(int argc, char *argv[])
+{
+    Application app(argc, argv);
+	
+    EngineWrapper engine;
+    if (!engine.initialize())
+    {
+        QMessageBox::critical(0, QObject::tr("Error"), QObject::tr("Unable to initialize engine. Application will now quit."));
+        return 1;
+    }
+
+    MainWindow window(engine);
+	window.show();
+// TODO: functionality broken
+	/*
+    DataPopup dataPopup(engine);
+
+    QObject::connect(&app, SIGNAL(foregroundEvent(bool)),
+                     &dataPopup, SLOT(updateVisibility(bool)));
+
+    // TODO: pass false if run in background
+    dataPopup.updateVisibility(true);
+*/
+    return app.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/mainview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2010 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 <QActionGroup>
+#include <HbApplication>
+#include <HbMenu>
+#include <HbToolBar>
+#include <HbAction>
+#include <HbMessageBox>
+#include <HbLabel>
+
+#include "mainview.h"
+#include "enginewrapper.h"
+
+
+// ---------------------------------------------------------------------------
+
+MainView::MainView(EngineWrapper &engine) :
+    mEngine(engine),
+    mValueDataContainer(0),
+    mGraphDataContainer(0)
+{
+    setTitle(tr("Perf. Monitor"));
+    mValueDataContainer = new ValueDataContainer(mEngine, this); 
+    mGraphDataContainer = new GraphDataContainer(mEngine, this);
+    createMenu();
+    showValues();
+}
+
+// ---------------------------------------------------------------------------
+
+MainView::~MainView()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+void MainView::createMenu()
+{
+    HbMenu *menu = this->menu();
+    HbToolBar *toolbar = this->toolBar();
+
+    if (menu && toolbar) {
+        mSwitchViewAction = new HbAction(toolbar);
+        toolbar->addAction(mSwitchViewAction);
+
+        QActionGroup *viewGroup = new QActionGroup(this);
+        HbMenu *viewSubmenu = menu->addMenu(tr("View"));
+        mValuesAction = viewSubmenu->addAction(tr("Values"), this, SLOT(showValues()));
+        mValuesAction->setCheckable(true);
+        mValuesAction->setChecked(true);
+        viewGroup->addAction(mValuesAction);
+
+        mGraphAction = viewSubmenu->addAction(tr("Graphs"), this, SLOT(showGraphs()));
+        mGraphAction->setCheckable(true);
+        viewGroup->addAction(mGraphAction);
+
+        mLoggingAction = menu->addAction(QString(), this, SLOT(toggleLogging()));
+        toolbar->addAction(mLoggingAction);
+        updateLoggingAction();
+
+        menu->addAction(tr("Settings..."), this, SIGNAL(settingsCommandInvoked()));
+        menu->addAction(tr("About..."), this, SLOT(showAbout()));
+        menu->addAction(tr("Exit"), qApp, SLOT(quit()));
+
+    }
+}
+
+void MainView::showValues()
+{
+    // remove old widget & take ownership
+    takeWidget();
+    mGraphDataContainer->hideContainer();
+    mValueDataContainer->showContainer(); 
+    // set new widget
+    this->setWidget(mValueDataContainer);
+    
+    mValuesAction->setChecked(true);
+
+    mSwitchViewAction->setText(tr("View Graphs"));
+    disconnect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showValues()));
+    connect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showGraphs()));
+}
+
+void MainView::showGraphs()
+{
+    // remove old widget & take ownership
+    takeWidget();
+    mValueDataContainer->hideContainer();    
+    mGraphDataContainer->showContainer();
+    // set new widget
+    this->setWidget(mGraphDataContainer);
+
+    mGraphAction->setChecked(true);
+
+    mSwitchViewAction->setText(tr("View Values"));
+    disconnect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showGraphs()));
+    connect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showValues()));
+}
+
+void MainView::updateLoggingAction()
+{
+    mLoggingAction->setText(mEngine.settings().loggingEnabled() ?
+                            tr("Stop Logging") :
+                            tr("Start Logging"));
+}
+
+void MainView::toggleLogging()
+{
+    mEngine.setLoggingEnabled(!mEngine.settings().loggingEnabled());
+    updateLoggingAction();
+}
+
+void MainView::showAbout()
+{
+    HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+    messageBox->setText("Version 1.2.0 - 26th August 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
+    HbLabel *header = new HbLabel("About PerfMon", messageBox);
+    messageBox->setHeadingWidget(header);
+    messageBox->setAttribute(Qt::WA_DeleteOnClose);
+    messageBox->setTimeout(HbPopup::NoTimeout);
+    messageBox->open();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/mainwindow.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 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 <HbAction>
+
+#include "mainwindow.h"
+
+#include "enginewrapper.h"
+#include "mainview.h"
+#include "settingsview.h"
+
+MainWindow::MainWindow(EngineWrapper &engine, QWidget *parent)
+    : HbMainWindow(parent)
+    , mEngine(engine)
+{
+    mMainView = new MainView(mEngine);
+    connect(mMainView, SIGNAL(settingsCommandInvoked()), this, SLOT(showSettings()));
+
+    addView(mMainView);
+    
+    mSettingsView = new SettingsView(mEngine);
+    connect(mSettingsView, SIGNAL(finished(bool)), this, SLOT(showMainView()));
+    
+    HbAction *action = new HbAction(Hb::BackNaviAction, mSettingsView);        
+    connect(action, SIGNAL(triggered()), mSettingsView, SLOT(reject()));
+    mSettingsView->setNavigationAction(action);
+
+    addView(mSettingsView);
+    
+    showMainView();
+}
+
+void MainWindow::showMainView()
+{
+    setCurrentView( mMainView );
+}
+
+void MainWindow::showSettings()
+{
+    setCurrentView( mSettingsView );
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/popupdatacontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2010 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 "popupdatacontainer.h"
+#include "enginewrapper.h"
+
+#include <QGraphicsLinearLayout>
+#include <HbLabel>
+#include <QPainter>
+
+const int leftMargin = 2;
+
+PopupDataContainer::PopupDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
+    DataContainer(engine, parent)
+{
+    connect(&engine, SIGNAL(samplesUpdated()), this, SLOT(samplesUpdated()));
+
+    HbFontSpec spec(HbFontSpec::Secondary);
+    mFont = spec.font();
+    mFont.setPixelSize(12);
+    
+}
+
+void PopupDataContainer::samplesUpdated()
+{
+    update();
+}
+
+void PopupDataContainer::paint (QPainter *painter,
+    const QStyleOptionGraphicsItem *option,
+    QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    // set proper font and prepare font metrics for text height calculation
+    painter->setFont(mFont);
+    QFontMetricsF metrics(mFont);
+
+    QList<SampleEntry> entries = engine().sampleEntries();
+    qreal verticalPos = metrics.height();
+
+    for (int i=0; i<entries.length(); i++)
+    {
+        if (engine().settings().dataPopupSources().isEnabled(i) &&
+            entries.at(i).sampleCount() > 0)
+        {
+            const SampleEntry &entry = entries.at(i);
+            const SampleData &sample = entry.sample(0);
+
+            if (i == ESourceCPU)
+            {
+                // CPU
+                double perc = sample.mSize > 0 ?
+                              100. - 100. * sample.mFree / sample.mSize : 0;
+
+
+                QString text = tr("%1 %2%").arg(entry.description()).
+                               arg(perc, 0, 'f', 2);
+                painter->drawText(QPointF(leftMargin, verticalPos), text);
+            }
+            else if (i == ESourcePwr)
+            {
+                // Power
+                QString text = tr("%1 %L2%3").arg(entry.description()).
+                               arg(sample.mSize - sample.mFree).arg(entry.unitShort());
+                painter->drawText(QPointF(leftMargin, verticalPos), text);
+            }
+            else
+            {
+                // RAM and Drives
+                QString text = tr("%1 free %L2%3").arg(entry.description()).
+                               arg(sample.mFree).arg(entry.unitShort());
+                painter->drawText(QPointF(leftMargin, verticalPos), text);
+            }
+
+            verticalPos += metrics.height();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/settingsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,278 @@
+/*
+* Copyright (c) 2010 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 "settingsview.h"
+
+#include <HbAction>
+#include <HbToolBar>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbDataFormViewItem>
+#include <HbLineEdit>
+#include <HbPushButton>
+
+#include "enginewrapper.h"
+
+const QStringList PRIORITY_ITEMS = QStringList() << SettingsView::tr("Much less") <<
+    SettingsView::tr("Less") << SettingsView::tr("Normal") <<
+    SettingsView::tr("More") << SettingsView::tr("Much more") <<
+    SettingsView::tr("Real time") << SettingsView::tr("Abs. very low") <<
+    SettingsView::tr("Abs. low") << SettingsView::tr("Abs background") <<
+    SettingsView::tr("Abs. foreground") << SettingsView::tr("Abs high");
+
+const QStringList CPU_SAMPLING = QStringList() << SettingsView::tr("CPU Time") <<
+    SettingsView::tr("NOPs");
+
+const QStringList POPUP_LOCATION = QStringList() << SettingsView::tr("Top right") <<
+    SettingsView::tr("Bottom middle");
+
+const QStringList POPUP_VISIBILITY = QStringList() << SettingsView::tr("On") <<
+    SettingsView::tr("Backgr. only") << SettingsView::tr("Off");
+
+const QStringList SOURCES = QStringList() << SettingsView::tr("CPU") <<
+    SettingsView::tr("Ram") << SettingsView::tr("C:") << SettingsView::tr("D:") <<
+    SettingsView::tr("E:") << SettingsView::tr("F:") << SettingsView::tr("G:") <<
+    SettingsView::tr("H:") << SettingsView::tr("I:") << SettingsView::tr("Power");
+
+const QStringList LOG_MODES = QStringList() << SettingsView::tr("RDebug") <<
+    SettingsView::tr("Log file") << SettingsView::tr("RDebug & log file");
+
+
+SettingsView::SettingsView(EngineWrapper &engine)
+    : mEngine(engine), mLogFilePathItem(0)
+{
+    setTitle(tr("Settings"));
+
+    //create toolbar showing launch popup
+    HbToolBar *toolBar = this->toolBar();
+    HbAction *actionOk = new HbAction(tr("Ok"), toolBar);
+    HbAction *actionCancel = new HbAction(tr("Cancel"), toolBar);
+    
+    toolBar->addAction(actionOk);
+    toolBar->addAction(actionCancel);
+
+    //create setting form
+    mSettingsForm = new HbDataForm();
+
+    //create a model class
+    mModel = new HbDataFormModel(this);
+    createModel(*mModel);
+    load(engine.settings());
+
+    connect(mSettingsForm, SIGNAL(itemShown(const QModelIndex)),
+            this, SLOT(dataItemDisplayed(const QModelIndex)));
+
+    // Set created model to form
+    mSettingsForm->setModel(mModel);
+    setWidget(mSettingsForm);
+
+
+    connect(actionOk, SIGNAL(triggered()), this, SLOT(accept()));
+    connect(actionCancel, SIGNAL(triggered()), this, SLOT(reject()));
+    connect(this, SIGNAL(aboutToClose()), this, SLOT(accept()));
+
+}
+
+void SettingsView::createModel(HbDataFormModel &model)
+{
+    // General page
+    HbDataFormModelItem *generalPage = model.appendDataFormPage(tr("General"));
+
+    mHeartBeatItem = model.appendDataFormItem(
+            HbDataFormModelItem::TextItem, tr("Heart beat (ms)"), generalPage);
+    mHeartBeatItem->setContentWidgetData("maximum", 99999);
+    mHeartBeatItem->setContentWidgetData("minimum", 0);
+    mHeartBeatItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
+
+    mMaxSamplesItem = model.appendDataFormItem(
+            HbDataFormModelItem::TextItem, tr("Max samples"), generalPage);
+    mMaxSamplesItem->setContentWidgetData("maximum", 9999);
+    mMaxSamplesItem->setContentWidgetData("minimum", 0);
+    mMaxSamplesItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
+
+    mPriorityItem = model.appendDataFormItem(
+            HbDataFormModelItem::RadioButtonListItem, tr("Priority"), generalPage);
+    mPriorityItem->setContentWidgetData("items", PRIORITY_ITEMS);
+
+    mCpuSamplingItem = model.appendDataFormItem(
+            HbDataFormModelItem::RadioButtonListItem, tr("CPU sampling mode"), generalPage);
+    mCpuSamplingItem->setContentWidgetData("items", CPU_SAMPLING);
+    
+    mKeepBacklightItem = model.appendDataFormItem(
+            HbDataFormModelItem::CheckBoxItem, tr("Backlight"), generalPage);
+    mKeepBacklightItem->setContentWidgetData("text", tr("Keep backlight on"));
+
+    mPowerMonitoringEnabledItem = model.appendDataFormItem(
+            HbDataFormModelItem::CheckBoxItem, tr("Power"), generalPage);
+    mPowerMonitoringEnabledItem->setContentWidgetData("text", tr("Enable power monitoring"));
+
+    // Gray out selection if feature is not supported.
+    if (!mEngine.PowerMonitoringSupported())
+        {
+        mPowerMonitoringEnabledItem->setEnabled(false);
+        }
+    
+    // Data popup page
+    HbDataFormModelItem *dataPopupPage = model.appendDataFormPage(tr("Data popup"));
+
+    mPopupVisibilityItem = model.appendDataFormItem(
+            HbDataFormModelItem::RadioButtonListItem, tr("Visibility"),
+            dataPopupPage);
+    mPopupVisibilityItem->setContentWidgetData("items", POPUP_VISIBILITY);
+
+    mPopupLocationItem = model.appendDataFormItem(
+            HbDataFormModelItem::RadioButtonListItem, tr("Location"), dataPopupPage);
+    mPopupLocationItem->setContentWidgetData("items", POPUP_LOCATION);
+
+    mPopupSourcesItem = model.appendDataFormItem(
+            HbDataFormModelItem::MultiselectionItem, tr("Sources"), dataPopupPage);
+    mPopupSourcesItem->setContentWidgetData("items", SOURCES);
+
+    // Graphs page
+    HbDataFormModelItem *graphsPage = model.appendDataFormPage(tr("Graphs"));
+
+    mVerticalBarPeriodItem = model.appendDataFormItem(
+            HbDataFormModelItem::TextItem, tr("Vertical bar period (s)"), graphsPage);
+    mVerticalBarPeriodItem->setContentWidgetData("maximum", 999);
+    mVerticalBarPeriodItem->setContentWidgetData("minimum", 0);
+    mVerticalBarPeriodItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
+
+    mGraphSourcesItem = model.appendDataFormItem(
+            HbDataFormModelItem::MultiselectionItem, tr("Sources"), graphsPage);
+    mGraphSourcesItem->setContentWidgetData("items", SOURCES);
+
+    // Logging page
+    mLogPage = model.appendDataFormPage(tr("Logging"));
+
+    mLogModeItem = model.appendDataFormItem(
+            HbDataFormModelItem::RadioButtonListItem, tr("Mode"), mLogPage);
+    mLogModeItem->setContentWidgetData("items", LOG_MODES);
+    mSettingsForm->addConnection(mLogModeItem, SIGNAL(itemSelected(int)),
+                                 this, SLOT(logModeChanged(int)));
+
+    mLogSourcesItem = model.appendDataFormItem(
+            HbDataFormModelItem::MultiselectionItem, tr("Sources"), mLogPage);
+    mLogSourcesItem->setContentWidgetData("items", SOURCES);
+}
+
+void SettingsView::load(const PerfMonSettings& settings)
+{
+    mHeartBeatItem->setContentWidgetData("text", settings.heartBeat());
+    mMaxSamplesItem->setContentWidgetData("text", settings.maxSamples());
+    mPriorityItem->setContentWidgetData("selected", settings.priority());
+    mCpuSamplingItem->setContentWidgetData("selected", settings.cpuMode());
+    mKeepBacklightItem->setContentWidgetData("checkState", settings.keepBacklightOn() ? Qt::Checked : Qt::Unchecked);
+    mPowerMonitoringEnabledItem->setContentWidgetData("checkState", settings.powerMonitoringEnabled() ? Qt::Checked : Qt::Unchecked);
+
+    mPopupVisibilityItem->setContentWidgetData("selected", settings.dataPopupVisibility());
+    mPopupLocationItem->setContentWidgetData("selected", settings.dataPopupLocation());
+    mPopupSourcesItem->setContentWidgetData("selectedItems",
+            qVariantFromValue(settings.dataPopupSources().enabledIndexes()));
+
+    mVerticalBarPeriodItem->setContentWidgetData("text", settings.graphVerticalBarPeriod());
+    mGraphSourcesItem->setContentWidgetData("selectedItems",
+            qVariantFromValue(settings.graphSources().enabledIndexes()));
+
+    mLogModeItem->setContentWidgetData("selected", settings.loggingMode());
+    mLogFilePath = settings.loggingFilePath();
+    if (settings.loggingMode() > ELoggingModeRDebug)
+        createLogFilePathItem();
+    mLogSourcesItem->setContentWidgetData("selectedItems",
+            qVariantFromValue(settings.loggingSources().enabledIndexes()));
+}
+
+void SettingsView::save(PerfMonSettings& settings)
+{
+    settings.setHeartBeat(mHeartBeatItem->contentWidgetData("text").toInt());
+    settings.setMaxSamples(mMaxSamplesItem->contentWidgetData("text").toInt());
+    settings.setPriority(mPriorityItem->contentWidgetData("selected").toInt());
+    settings.setCpuMode(mCpuSamplingItem->contentWidgetData("selected").toInt());
+    settings.setKeepBacklightOn(mKeepBacklightItem->contentWidgetData("checkState").toInt() == Qt::Checked);
+    settings.setPowerMonitoringEnabled(mPowerMonitoringEnabledItem->contentWidgetData("checkState").toInt() == Qt::Checked);
+
+    settings.setDataPopupVisibility(mPopupVisibilityItem->contentWidgetData("selected").toInt());
+    settings.setDataPopupLocation(mPopupLocationItem->contentWidgetData("selected").toInt());
+    settings.dataPopupSources().setEnabledIndexes(
+            qVariantValue<QList<QVariant> >(mPopupSourcesItem->contentWidgetData("selectedItems")));
+
+    settings.setGraphVerticalBarPeriod(mVerticalBarPeriodItem->contentWidgetData("text").toInt());
+    settings.graphSources().setEnabledIndexes(
+            qVariantValue<QList<QVariant> >(mGraphSourcesItem->contentWidgetData("selectedItems")));
+
+    settings.setLoggingMode(mLogModeItem->contentWidgetData("selected").toInt());
+    
+    if (mLogFilePathItem)
+        settings.setLoggingFilePath(mLogFilePathItem->contentWidgetData("text").toString());
+    settings.loggingSources().setEnabledIndexes(
+            qVariantValue<QList<QVariant> >(mLogSourcesItem->contentWidgetData("selectedItems")));
+}
+
+void SettingsView::dataItemDisplayed(const QModelIndex &index)
+{
+    HbDataFormModelItem* modelItem = mModel->itemFromIndex(index);
+    HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(mSettingsForm->itemByIndex(index));
+    HbWidget *dataContentWidget = viewItem->dataItemContentWidget();
+
+    // set input method hint for edits
+    // TODO: remove once setContentWidgetData works with inputMethodHints
+    if (modelItem == mHeartBeatItem ||
+        modelItem == mMaxSamplesItem ||
+        modelItem == mVerticalBarPeriodItem)
+    {
+        HbLineEdit *edit = static_cast<HbLineEdit*>(dataContentWidget);
+        edit->setInputMethodHints(Qt::ImhDigitsOnly);
+    }
+}
+
+void SettingsView::logModeChanged(int index)
+{
+    if (index == ELoggingModeRDebug && mLogFilePathItem) {
+        removeLogFilePathItem();
+    }
+    else if (index != ELoggingModeRDebug && !mLogFilePathItem) {
+        createLogFilePathItem();
+    }
+}
+
+void SettingsView::createLogFilePathItem()
+{
+    mLogFilePathItem = mModel->insertDataFormItem(mLogPage->indexOf(mLogModeItem) + 1,
+            HbDataFormModelItem::TextItem, tr("Log file path"), mLogPage);
+    mLogFilePathItem->setContentWidgetData("text", mLogFilePath);
+}
+
+void SettingsView::removeLogFilePathItem()
+{
+    // we need to store current text so that it is not lost when 
+    // user hides and then displays "Log file path" item again.
+    mLogFilePath = mLogFilePathItem->contentWidgetData("text").toString();
+    mModel->removeItem(mLogFilePathItem);
+    mLogFilePathItem = 0;
+}
+
+void SettingsView::accept()
+{
+    save(mEngine.settings());
+    mEngine.updateSettings();
+    emit finished(true);
+}
+
+void SettingsView::reject()
+{
+    emit finished(false);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/app/src/valuedatacontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* Copyright (c) 2010 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 "valuedatacontainer.h"
+#include "enginewrapper.h"
+
+#include <QGraphicsLinearLayout>
+#include <QPalette>
+#include <QPainter>
+#include <HbColorScheme>
+
+const int leftMargin = 2;
+
+ValueDataContainer::ValueDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
+    DataContainer(engine, parent)
+{
+    HbFontSpec spec(HbFontSpec::Secondary);
+    mFont = spec.font();
+}
+
+void ValueDataContainer::paint (QPainter *painter,
+    const QStyleOptionGraphicsItem *option,
+    QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    // set proper font and prepare font metrics for text height calculation
+    painter->setFont(mFont);
+
+    QColor col = HbColorScheme::color("qtc_textedit_normal");
+    if(col.isValid())
+        painter->setPen(col);
+    
+    QFontMetricsF metrics(mFont);
+
+    QList<SampleEntry> entries = engine().sampleEntries();
+    int c = 1;
+
+    // CPUs
+    for (int i = const_cast<EngineWrapper&>( engine() ).CPU0PositionInSamples();
+            i < const_cast<EngineWrapper&>( engine() ).CPU0PositionInSamples() +
+                const_cast<EngineWrapper&>( engine() ).AmountOfCPUs(); i++)
+    {
+        // check if data available
+        const SampleEntry &entry = entries.at(i);
+
+        if (entry.sampleCount() == 0)
+            continue;
+
+        const SampleData &sample = entry.sample(0);
+
+        double perc = sample.mSize > 0 ?
+                      100. - 100. * sample.mFree / sample.mSize : 0;
+
+        QString text = tr("%1 %2%").arg(entry.description()).
+                       arg(perc, 0, 'f', 0);
+        painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
+        c++;
+    }
+
+    // RAM and drives
+    for (int i = const_cast<EngineWrapper&>( engine() ).RAMPositionInSamples();
+            i < const_cast<EngineWrapper&>( engine() ).PowerPositionInSamples(); i++)
+    {
+        // check if data available
+        const SampleEntry &entry = entries.at(i);
+
+        if (entry.sampleCount() == 0)
+            continue;
+
+        const SampleData &sample = entry.sample(0);
+
+        if (sample.mSize > 0)
+        {
+            // RAM and Drives
+            QString text = tr("%1 free %L2%3").arg(entry.description()).
+                           arg(sample.mFree).arg(entry.unitShort());
+            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
+            c++;
+
+            text = tr("%1 size %L2%3").arg(entry.description()).
+                   arg(sample.mSize).arg(entry.unitShort());
+            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
+            c++;
+        }
+    }
+    
+    // Power sample
+    // check if data available
+    const SampleEntry &entry = entries.at(const_cast<EngineWrapper&>( engine() ).PowerPositionInSamples());
+
+    if (entry.sampleCount() > 0)
+    {
+        const SampleData &sample = entry.sample(0);
+
+        if (sample.mSize > 0)
+        {
+            QString text = tr("%1 %L2%3").arg(entry.description()).
+                    arg(sample.mSize - sample.mFree).arg(entry.unitShort());
+            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
+            c++;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/datapopup.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = lib
+TARGET = PerfMonDataPopupPlugin
+CONFIG += plugin hb
+
+# directories
+INCLUDEPATH += inc
+DEPENDPATH += inc
+
+HEADERS += inc/perfmondatapopupplugin_p.h
+HEADERS += inc/perfmondatapopupdialog_p.h
+HEADERS += inc/perfmondatapopupwidget_p.h
+
+SOURCES += src/perfmondatapopupplugin.cpp
+SOURCES += src/perfmondatapopupdialog.cpp
+SOURCES += src/perfmondatapopupwidget.cpp
+
+symbian {
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+    TARGET.UID3 = 0x2002E6B0
+
+    hblib.sources = Hb.dll
+    hblib.path = /sys/bin
+    hblib.depends = "(0xEEF9EA38), 1, 0, 0, {\"Hb\"}"
+
+    pluginstub.sources = PerfMonDataPopupPlugin.dll
+    pluginstub.path = /resource/plugins/devicedialogs/
+    DEPLOYMENT += pluginstub
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupdialog_p.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PERFMONDATAPOPUPDIALOG_P_H
+#define PERFMONDATAPOPUPDIALOG_P_H
+
+#include <QObject>
+#include <QVariantMap>
+
+#include <hbdevicedialoginterface.h>
+#include <hbdevicedialog.h>
+#include <hbnotificationdialog.h>
+
+class PerfMonDataPopupWidget;
+
+class PerfMonDataPopupDialog : public HbDialog, public HbDeviceDialogInterface
+{
+    Q_OBJECT
+    Q_PROPERTY(Location location READ location WRITE setLocation)
+    Q_PROPERTY(QStringList lines READ lines WRITE setLines)
+
+    Q_ENUMS(Location)
+
+public:
+    enum Location
+    {
+        LocationTopRight = 0,
+        LocationBottomMiddle
+    };
+
+public:
+    PerfMonDataPopupDialog(const QVariantMap &parameters);
+    virtual ~PerfMonDataPopupDialog();
+
+    bool setDeviceDialogParameters(const QVariantMap &parameters);
+    int deviceDialogError() const;
+    void closeDeviceDialog(bool byClient);
+    HbPopup *deviceDialogWidget() const;
+
+protected:
+//    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+//               QWidget *widget=0);
+
+protected:
+    void hideEvent(QHideEvent *event);
+    void showEvent(QShowEvent *event);
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+
+signals:
+    void deviceDialogClosed();
+    void deviceDialogData(QVariantMap data);
+
+private slots:
+    void reposition();
+
+private:
+    Location location() const;
+    void setLocation(Location location);
+
+    QStringList lines() const;
+    void setLines(const QStringList &lines);
+
+private:
+    Q_DISABLE_COPY(PerfMonDataPopupDialog)
+
+    int mLastError;
+    bool mShowEventReceived;
+
+    Location mLocation;
+
+    PerfMonDataPopupWidget *mWidget;
+};
+
+#endif // PERFMONDATAPOPUPDIALOG_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupplugin_p.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PERFMONDATAPOPUPPLUGIN_P_H
+#define PERFMONDATAPOPUPPLUGIN_P_H
+
+#include <QObject>
+#include <QVariantMap>
+
+#include <hbdevicedialogplugin.h>
+
+class PerfMonDataPopupPluginPrivate;
+
+class PerfMonDataPopupPlugin : public HbDeviceDialogPlugin
+{
+    Q_OBJECT
+
+public:
+    friend class PerfMonDataPopupPluginPrivate;
+
+    PerfMonDataPopupPlugin();
+    ~PerfMonDataPopupPlugin();
+
+    bool accessAllowed(const QString &deviceDialogType,
+        const QVariantMap &parameters, const QVariantMap &securityInfo) const;
+    HbDeviceDialogInterface *createDeviceDialog(const QString &deviceDialogType,
+        const QVariantMap &parameters);
+    bool deviceDialogInfo(const QString &deviceDialogType,
+        const QVariantMap &parameters, DeviceDialogInfo *info) const;
+    QStringList deviceDialogTypes() const;
+    PluginFlags pluginFlags() const;
+    int error() const;
+
+private:
+    Q_DISABLE_COPY(PerfMonDataPopupPlugin)
+    PerfMonDataPopupPluginPrivate *d;
+};
+
+#endif // PERFMONDATAPOPUPPLUGIN_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopuppluginerrors_p.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PERFMONDATAPOPUPPLUGINERRORS_P_H
+#define PERFMONDATAPOPUPPLUGINERRORS_P_H
+
+#include <hbdevicedialog.h>
+
+// No error
+const int NoError = 0;
+// Illegal parameter error
+const int ParameterError = HbDeviceDialog::PluginErrors + 1;
+
+#endif // PERFMONDATAPOPUPPLUGINERRORS_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/inc/perfmondatapopupwidget_p.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PERFMONDATAPOPUPWIDGET_P_H
+#define PERFMONDATAPOPUPWIDGET_P_H
+
+#include <HbWidget>
+
+class PerfMonDataPopupWidget : public HbWidget
+{
+    Q_OBJECT
+    Q_PROPERTY(QStringList lines READ lines WRITE setLines)
+
+public:
+    explicit PerfMonDataPopupWidget(QGraphicsItem *parent = 0);
+
+public:
+    QStringList lines() const;
+    void setLines(const QStringList &lines);
+
+protected:
+    QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0);
+
+private:
+    QStringList mLines;
+
+    QFont mFont;
+
+};
+
+#endif // PERFMONDATAPOPUPWIDGET_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupdialog.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2010 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 <QtDebug>
+#include <QIcon>
+#include <QVariant>
+#include <QList>
+#include <HbMainWindow>
+
+#include "perfmondatapopupdialog_p.h"
+#include "perfmondatapopuppluginerrors_p.h"
+#include "perfmondatapopupwidget_p.h"
+
+// Constructor
+PerfMonDataPopupDialog::PerfMonDataPopupDialog(const QVariantMap &parameters) :
+        mLastError(NoError),
+        mShowEventReceived(false),
+        mLocation(LocationTopRight),
+        mWidget(new PerfMonDataPopupWidget(this))
+{
+    setTimeout(0);
+    setModal(false);
+    setDismissPolicy(HbPopup::NoDismiss);
+    setBackgroundItem(0);
+    setContentWidget(mWidget);
+    setBackgroundFaded(false);
+
+    setDeviceDialogParameters(parameters);
+}
+
+PerfMonDataPopupDialog::~PerfMonDataPopupDialog()
+{
+}
+
+// Set parameters
+bool PerfMonDataPopupDialog::setDeviceDialogParameters(const QVariantMap &parameters)
+{
+    if (parameters.contains("lines"))
+    {
+        QVariant lines = parameters.value("lines");
+        if (!lines.canConvert(QVariant::StringList)) {
+            mLastError = ParameterError;
+            return false;
+        }
+
+        setLines(lines.toStringList());
+    }
+
+    if (parameters.contains("location"))
+    {
+        QVariant location = parameters.value("location");
+        if (!location.canConvert<int>()) {
+            mLastError = ParameterError;
+            return false;
+        }
+
+        if (location.toInt() != LocationTopRight &&
+            location.toInt() != LocationBottomMiddle)
+        {
+            mLastError = ParameterError;
+            return false;
+        }
+
+        setLocation(static_cast<Location>(location.toInt()));
+    }
+    update();
+    return true;
+}
+
+// Get error
+int PerfMonDataPopupDialog::deviceDialogError() const
+{
+    return mLastError;
+}
+
+// Close device dialog
+void PerfMonDataPopupDialog::closeDeviceDialog(bool byClient)
+{
+    Q_UNUSED(byClient);
+    close();
+    // If show event has been received, close is signalled from hide event. If not,
+    // hide event does not come and close is signalled from here.
+    if (!mShowEventReceived) {
+        emit deviceDialogClosed();
+    }
+}
+
+// Return display widget
+HbPopup *PerfMonDataPopupDialog::deviceDialogWidget() const
+{
+    return const_cast<PerfMonDataPopupDialog*>(this);
+}
+
+// Widget is about to hide. Closing effect has ended.
+void PerfMonDataPopupDialog::hideEvent(QHideEvent *event)
+{
+    if (mainWindow()) {
+        disconnect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
+                   this, SLOT(reposition()));
+    }
+    HbPopup::hideEvent(event);
+    emit deviceDialogClosed();
+}
+
+// Widget is about to show
+void PerfMonDataPopupDialog::showEvent(QShowEvent *event)
+{
+    if (mainWindow()) {
+        connect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
+                this, SLOT(reposition()));
+    }
+    reposition();
+    HbPopup::showEvent(event);
+    mShowEventReceived = true;
+}
+
+
+void PerfMonDataPopupDialog::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event);
+
+    QVariantMap data;
+    data["mouseEvent"] = "press";
+    emit deviceDialogData(data);
+}
+
+
+PerfMonDataPopupDialog::Location PerfMonDataPopupDialog::location() const
+{
+    return mLocation;
+}
+
+void PerfMonDataPopupDialog::setLocation(Location location)
+{
+    if (location != mLocation) {
+        mLocation = location;
+        reposition();
+    }
+}
+
+QStringList PerfMonDataPopupDialog::lines() const
+{
+    return mWidget->lines();
+}
+
+void PerfMonDataPopupDialog::setLines(const QStringList &lines)
+{
+    mWidget->setLines(lines);
+}
+
+void PerfMonDataPopupDialog::reposition()
+{
+    if (mainWindow()) {
+        QSize screenSize = HbDeviceProfile::profile(mainWindow()).logicalSize();
+        switch (mLocation) {
+            case LocationTopRight:
+                setPreferredPos(QPointF(screenSize.width(), 0),
+                                HbPopup::TopRightCorner);
+                break;
+
+            case LocationBottomMiddle:
+                setPreferredPos(QPointF(screenSize.width() / 2, screenSize.height()),
+                                HbPopup::BottomEdgeCenter);
+                break;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupplugin.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) 2010 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 <QtPlugin>
+
+#include <hbdevicedialog.h>
+#include "perfmondatapopupplugin_p.h"
+#include "perfmondatapopupdialog_p.h"
+#include "perfmondatapopuppluginerrors_p.h"
+
+Q_EXPORT_PLUGIN2(perfmondatapopupplugin, PerfMonDataPopupPlugin)
+
+// This plugin implements one device dialog type
+static const struct {
+    const char *mTypeString;
+} dialogInfos[] = {
+    {"com.nokia.rnd.perfmondatapopup/1.0"}
+};
+
+class PerfMonDataPopupPluginPrivate
+{
+public:
+    PerfMonDataPopupPluginPrivate() {mError = NoError;}
+
+    int mError;
+};
+
+// Constructor
+PerfMonDataPopupPlugin::PerfMonDataPopupPlugin()
+    : d(new PerfMonDataPopupPluginPrivate)
+{
+}
+
+// Destructor
+PerfMonDataPopupPlugin::~PerfMonDataPopupPlugin()
+{
+    delete d;
+}
+
+// Check if client is allowed to use device dialog widget
+bool PerfMonDataPopupPlugin::accessAllowed(const QString &deviceDialogType,
+    const QVariantMap &parameters, const QVariantMap &securityInfo) const
+{
+    Q_UNUSED(deviceDialogType)
+    Q_UNUSED(parameters)
+    Q_UNUSED(securityInfo)
+
+    // This plugin doesn't perform operations that may compromise security. All clients
+    // are allowed to use.
+    return true;
+}
+
+// Create device dialog widget
+HbDeviceDialogInterface *PerfMonDataPopupPlugin::createDeviceDialog(
+    const QString &deviceDialogType, const QVariantMap &parameters)
+{
+    Q_UNUSED(deviceDialogType)
+    d->mError = NoError;
+
+    HbDeviceDialogInterface *ret(0);
+    QVariantMap params = parameters;
+
+    PerfMonDataPopupDialog *deviceDialog =
+        new PerfMonDataPopupDialog(params);
+    d->mError = deviceDialog->deviceDialogError();
+    if (d->mError != NoError) {
+        delete deviceDialog;
+        deviceDialog = 0;
+    }
+    ret = deviceDialog;
+
+    return ret;
+}
+
+// Return device dialog flags
+bool PerfMonDataPopupPlugin::deviceDialogInfo(const QString &deviceDialogType,
+        const QVariantMap &parameters, DeviceDialogInfo *info) const
+{
+    Q_UNUSED(deviceDialogType);
+    Q_UNUSED(parameters);
+
+    info->group = DeviceNotificationDialogGroup;
+    //info->group = GenericDeviceDialogGroup;
+    info->flags = NoDeviceDialogFlags;
+    info->priority = DefaultPriority;
+
+    return true;
+}
+
+// Return device dialog types this plugin implements
+QStringList PerfMonDataPopupPlugin::deviceDialogTypes() const
+{
+    QStringList types;
+    const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
+    for(int i = 0; i < numTypes; i++) {
+        types.append(dialogInfos[i].mTypeString);
+    }
+    return types;
+}
+
+// Return plugin flags
+HbDeviceDialogPlugin::PluginFlags PerfMonDataPopupPlugin::pluginFlags() const
+{
+    return NoPluginFlags;
+}
+
+// Return last error
+int PerfMonDataPopupPlugin::error() const
+{
+    return d->mError;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/datapopup/src/perfmondatapopupwidget.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2010 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 <QPainter>
+
+#include "perfmondatapopupwidget_p.h"
+
+const qreal popupMargin = 5.;
+
+PerfMonDataPopupWidget::PerfMonDataPopupWidget(QGraphicsItem *parent) :
+    HbWidget(parent)
+{
+    HbFontSpec fontSpec(HbFontSpec::Secondary);
+    mFont = fontSpec.font();
+    mFont.setPixelSize(12);
+}
+
+QStringList PerfMonDataPopupWidget::lines() const
+{
+    return mLines;
+}
+
+void PerfMonDataPopupWidget::setLines(const QStringList &lines)
+{
+    mLines = lines;
+    updateGeometry();
+}
+
+QSizeF PerfMonDataPopupWidget::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
+{
+    if (which == Qt::PreferredSize)
+    {
+        QFontMetricsF metrics(mFont);
+
+        qreal width = 0;
+        foreach (const QString &line, mLines) {
+            width = qMax(width, metrics.width(line));
+        }
+        qreal height = metrics.height() * mLines.length();
+
+        return QSizeF(width + 2 * popupMargin, height + 2 * popupMargin);
+    }
+
+    return HbWidget::sizeHint(which, constraint);
+}
+
+void PerfMonDataPopupWidget::paint(QPainter *painter,
+    const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(widget);
+    Q_UNUSED(option);
+
+    QFontMetricsF metrics(mFont);
+    qreal lineHeight = metrics.height();
+    qreal verticalPos = lineHeight + popupMargin;
+
+    // draw background
+    painter->setBrush(Qt::white);
+    painter->drawRect(option->rect);
+
+    painter->setFont(mFont);
+
+    foreach (const QString &line, mLines) {
+        painter->drawText(QPointF(popupMargin, verticalPos), line);
+        verticalPos += lineHeight;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/win/enginewrapper.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,114 @@
+/*
+* Copyright (c) 2010 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 "enginewrapper.h"
+
+
+// ---------------------------------------------------------------------------
+
+EngineWrapper::EngineWrapper()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+EngineWrapper::~EngineWrapper()
+{
+    finalize();
+}
+
+// ---------------------------------------------------------------------------
+
+bool EngineWrapper::initialize()
+{
+
+    SampleEntry cpu;
+    cpu.mDescription = "CPU";
+    cpu.mDriveNumber = -1;
+    cpu.mGraphColor.setNamedColor("yellow");
+
+    SampleEntry ram;
+    ram.mDescription = "RAM";
+    ram.mUnitShort = "b";
+    ram.mUnitLong = "bytes";
+    ram.mDriveNumber = -1;
+    ram.mGraphColor.setNamedColor("green");
+
+    SampleEntry cdrive;
+    cdrive.mDescription = "C:";
+    cdrive.mUnitShort = "b";
+    cdrive.mUnitLong = "bytes";
+    cdrive.mDriveNumber = 0;
+    cdrive.mGraphColor.setNamedColor("cyan");
+
+    SampleEntry ddrive;
+    ddrive.mDescription = "D:";
+    ddrive.mUnitShort = "b";
+    ddrive.mUnitLong = "bytes";
+    ddrive.mDriveNumber = 0;
+    ddrive.mGraphColor.setNamedColor("blue");
+
+    mEntries << cpu << ram << cdrive << ddrive;
+
+    connect(&mTimer, SIGNAL(timeout()), this, SLOT(update()));
+    mStartTime = QTime::currentTime();
+    mTimer.start(600);
+
+    return true;
+}
+
+// ---------------------------------------------------------------------------
+
+void EngineWrapper::finalize()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+bool EngineWrapper::updateSettings()
+{
+    emit settingsUpdated();
+    return true;
+}
+
+void EngineWrapper::update()
+{
+    // do some updates :)
+    for (int i=0; i<mEntries.length(); i++)
+    {
+        SampleEntry & entry = mEntries[i];
+        if (entry.mSampleData.length() > 0)
+        {
+            SampleData data = entry.mSampleData.at(0);
+            data.mFree += 10000 * (qrand() % 1000 - 500);
+            data.mTimeFromStart = mStartTime.msecsTo(QTime::currentTime()) * 1000;
+            entry.mSampleData.prepend(data);
+        }
+        else
+        {
+            SampleData data = {100000000L, 200000000L, mStartTime.msecsTo(QTime::currentTime()) * 1000};
+            entry.mSampleData.prepend(data);
+        }
+
+        if (entry.mSampleData.length() > 64)
+        {
+            entry.mSampleData.removeLast();
+        }
+    }
+
+    emit samplesUpdated();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/win/enginewrapper.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,270 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef ENGINEWRAPPER_H
+#define ENGINEWRAPPER_H
+
+#include <QObject>
+#include <QColor>
+#include <QList>
+#include <QTime>
+#include <QTimer>
+
+enum SettingThreadPriorityTypes
+{
+    EThreadPriorityTypeMuchLess = 0,
+    EThreadPriorityTypeLess,
+    EThreadPriorityTypeNormal,
+    EThreadPriorityTypeMore,
+    EThreadPriorityTypeMuchMore,
+    EThreadPriorityTypeRealTime,
+    EThreadPriorityTypeAbsoluteVeryLow,
+    EThreadPriorityTypeAbsoluteLow,
+    EThreadPriorityTypeAbsoluteBackground,
+    EThreadPriorityTypeAbsoluteForeground,
+    EThreadPriorityTypeAbsoluteHigh
+};
+
+enum SettingCPUModes
+{
+    ECPUModeNotSet = -1,
+    ECPUModeCPUTime,
+    ECPUModeNOPs
+};
+
+enum SettingDataPopupVisbilities
+{
+    EDataPopupVisbilityAlwaysOn = 0,
+    EDataPopupVisbilityBackgroundOnly,
+    EDataPopupVisbilityAlwaysAlwaysOff
+};
+
+enum SettingDataPopupLocations
+{
+    EDataPopupLocationTopRight = 0,
+    EDataPopupLocationBottomMiddle
+};
+
+enum SettingSources
+{
+    ESourceCPU = 0,
+    ESourceRAM,
+    ESourceC,
+    ESourceD,
+    ESourceE,
+    ESourceF,
+    ESourceG,
+    ESourceH,
+    ESourceI,
+    ESourcesLength // this should be always the last!
+};
+
+enum SettingLoggingMode
+{
+    ELoggingModeRDebug = 0,
+    ELoggingModeLogFile,
+    ELoggingModeRDebugLogFile
+};
+
+
+struct SampleData
+{
+    qint64 mFree;
+    qint64 mSize;
+    qint64 mTimeFromStart;
+};
+
+class SampleEntry
+{
+public:
+    QString description() const { return mDescription; }
+    QString unitShort() const { return mUnitShort; }
+    QString unitLong() const { return mUnitLong; }
+    int driveNumber() const { return mDriveNumber; }
+    QColor graphColor() const { return mGraphColor; }
+
+    int sampleCount() const { return mSampleData.length(); }
+    const SampleData &sample(int index) const { return mSampleData[index]; }
+private:
+    QString mDescription;
+    QString mUnitShort;
+    QString mUnitLong;
+    int mDriveNumber;
+    QColor mGraphColor;
+
+    QList<SampleData> mSampleData;
+
+friend class EngineWrapper;
+};
+
+class PerfMonSources
+{
+public:
+    int count() const { return 9; }
+    int isEnabled (int index) const { return mSources[index]; }
+    void setEnabled(int index, bool enabled) { mSources[index] = enabled; }
+    QList<int> enabledIndexes() const
+    {
+        QList<int> indexes;
+        for(int i=0; i<count(); i++) {
+            if (isEnabled(i))
+                indexes.append(i);
+        }
+        return indexes;
+    }
+    void setEnabledIndexes(const QList<int> &indexes)
+    {
+        for(int i=0; i<count(); i++) {
+            setEnabled(i, indexes.contains(i));
+        }
+    }
+
+PerfMonSources() {
+    memset(mSources, 0, sizeof mSources);
+    mSources[0] = mSources[1] = mSources[2] = true;
+}
+
+private:
+    bool mSources[9];
+};
+
+class PerfMonSettings
+{
+public:
+    int heartBeat() const { return mHeartBeat; }
+    int maxSamples() const { return mMaxSamples; }
+    int priority() const { return mPriority; }
+    int cpuMode() const { return mCPUMode; }
+    bool keepBacklightOn() const { return mKeepBacklightOn; }
+
+    int dataPopupVisibility() const { return mDataPopupVisibility; }
+    int dataPopupLocation() const { return mDataPopupLocation; }
+    PerfMonSources &dataPopupSources() { return mDataPopupSources; }
+    const PerfMonSources &dataPopupSources() const { return mDataPopupSources; }
+
+    int graphVerticalBarPeriod() const { return mGraphsVerticalBarPeriod; }
+    PerfMonSources &graphSources() { return mGraphSources; }
+    const PerfMonSources &graphSources() const { return mGraphSources; }
+
+    int loggingMode() const { return mLoggingMode; }
+    QString loggingFilePath() const { return mLoggingFilePath; }
+    PerfMonSources &loggingSources() { return mLogSources; }
+    const PerfMonSources &loggingSources() const { return mLogSources; }
+
+    bool loggingEnabled() { return mLoggingEnabled; }
+
+
+    void setHeartBeat(int heartBeat) { mHeartBeat = heartBeat; }
+    void setMaxSamples(int maxSamples) { mMaxSamples = maxSamples; }
+    void setPriority(int priority) { mPriority = priority; }
+    void setCpuMode(int cpuMode) { mCPUMode = cpuMode; }
+    void setKeepBacklightOn(bool backlightOn) { mKeepBacklightOn = backlightOn; }
+
+    void setDataPopupVisibility(int visibility) { mDataPopupVisibility = visibility; }
+    void setDataPopupLocation(int location) { mDataPopupLocation = location; }
+
+    void setGraphVerticalBarPeriod(int period) { mGraphsVerticalBarPeriod = period; }
+
+    void setLoggingMode(int mode) { mLoggingMode = mode; }
+    void setLoggingFilePath(const QString& filePath) { mLoggingFilePath = filePath; }
+
+    void setLoggingEnabled(bool enabled) { mLoggingEnabled = enabled; }
+
+private:
+    friend class EngineWrapper;
+
+    PerfMonSettings() : mHeartBeat(600), mMaxSamples(64), mPriority(2), mCPUMode(1),
+        mKeepBacklightOn(true), mDataPopupVisibility(0), mDataPopupLocation(0),
+        mGraphsVerticalBarPeriod(5), mLoggingMode(1), mLoggingFilePath("C:\\data\\perfmon.log"),
+        mLoggingEnabled(true) {}
+
+
+private:
+    int mHeartBeat;
+    int mMaxSamples;
+    int mPriority;
+    int mCPUMode;
+    bool mKeepBacklightOn;
+
+    int mDataPopupVisibility;
+    int mDataPopupLocation;
+    PerfMonSources mDataPopupSources;
+
+    int mGraphsVerticalBarPeriod;
+    PerfMonSources mGraphSources;
+
+    int mLoggingMode;
+    QString mLoggingFilePath;
+    PerfMonSources mLogSources;
+
+    bool mLoggingEnabled;
+};
+
+/**
+ * Mock engine to simulate perfmon engine for non-symbian development.
+ */
+class EngineWrapper : public QObject
+ {
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor
+     */
+    EngineWrapper();
+
+    /**
+     * Destructor
+     */
+    ~EngineWrapper();
+
+public:
+    const QList<SampleEntry>& sampleEntries() const { return mEntries; }
+
+    PerfMonSettings &settings() { return mSettings; }
+    const PerfMonSettings &settings() const { return mSettings; }
+
+    void setLoggingEnabled(bool enabled) { mSettings.setLoggingEnabled(enabled); }
+
+public slots:
+
+    bool updateSettings();
+    bool initialize();
+    void finalize();
+
+signals:
+
+    void samplesUpdated();
+    void settingsUpdated();
+
+private slots:
+
+    void update();
+
+private:
+
+    QList<SampleEntry> mEntries;
+
+    QTimer mTimer;
+
+    QTime mStartTime;
+
+    PerfMonSettings mSettings;
+};
+
+#endif //ENGINEWRAPPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/perfmon/ui/hb/win/win.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2010 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:
+#
+#
+
+win32 {
+    TEMPLATE = subdirs
+
+    SUBDIRS = ../app ../datapopup
+
+    system($$QMAKE_COPY enginewrapper.cpp ..\app\src\enginewrapper.cpp)
+    system($$QMAKE_COPY enginewrapper.h ..\app\inc\enginewrapper.h)
+} else {
+    error("Only Windows supported")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2007 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 <platform_paths.hrh>
+
+#include "bld_generic.inf"
+#include "../ui/avkon/group/bld.inf"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/group/bld_generic.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+PRJ_MMPFILES
+PRJ_EXTENSIONS
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/group/group.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include  \"bld_generic.inf\""
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/piprofilerui.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+TEMPLATE = subdirs
+
+DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
+
+SUBDIRS = group \
+          ui/hb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_S60-30.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_S60-31.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_S60-32.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_S60-50.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_Symbian3.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_Symbian4.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,37 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
+
+; Supports S60 v 3.0 and 5.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
+"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
+"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/sis/PIProfiler_stub.pkg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,33 @@
+;
+; 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: 
+;
+&EN
+
+; Standard SIS file header
+#{"ProfilerGUI"},(0x2001E5AE),1,0,0
+
+; Non-localised vendor name
+:"Nokia Corporation"
+
+; Localised vendor names
+%{"Nokia Corporation"}
+
+; normal stuff:
+""-"!:\sys\bin\PIProfilerUI.exe"
+""-"!:\Resource\Apps\piprofilerui_aif.mif"
+""-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
+""-"!:\Resource\Apps\piprofilerui.rsc"
+""-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
+""-"!:\private\2001E5AE\backup_registration.xml"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/data/piprofilerui.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,962 @@
+/*
+* 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:   
+*
+*/
+
+
+
+
+NAME PIPR
+
+#include <eikon.rh>
+#include <eikon.rsg>
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <avkon.mbg>
+#include <CommonDialogs.hrh>
+#include <CommonDialogs.rh>
+#include <pathconfiguration.hrh>
+
+#include "profiler_gui.hrh"
+#include "profiler_gui_std.h"
+#include <data_caging_paths_strings.hrh>
+#include <appinfo.rh>
+
+
+// ---------------------------------------------------------
+//   
+//    Define the resource file signature 
+//    This resource should be empty.
+//
+// ---------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE { }
+
+// ---------------------------------------------------------
+//   
+//    Default Document Name
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_default_document_name { buf=""; }
+
+// ---------------------------------------------------------
+//   
+//    Define default menu and CBA key.
+//
+// ---------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO { }
+	
+//----------------------------------------------------
+//   
+//    r_profiler_gui_hotkeys
+//
+//----------------------------------------------------
+//
+RESOURCE HOTKEYS r_profiler_gui_hotkeys
+    {
+    control=
+        {
+        HOTKEY { command=EAknCmdExit; key='e'; }
+        };
+    }
+
+
+//----------------------------------------------------
+//    r_profiler_gui_view_main
+//----------------------------------------------------
+//
+RESOURCE AVKON_VIEW r_profiler_gui_view_main
+    {
+    hotkeys=r_profiler_gui_hotkeys;
+    menubar=r_profiler_gui_menubar_view_main;  
+    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
+    }
+
+//----------------------------------------------------
+//    r_profiler_gui_menubar_view_main
+//----------------------------------------------------
+//
+RESOURCE MENU_BAR r_profiler_gui_menubar_view_main
+    {
+    titles=
+        {
+        MENU_TITLE { menu_pane=r_profiler_gui_app_menu; txt="App"; },
+        MENU_TITLE { menu_pane=r_profiler_gui_view_main_menu; txt="Main"; }
+        };
+    }
+
+//----------------------------------------------------
+//    r_profiler_gui_view_main_menu
+//----------------------------------------------------
+//
+
+RESOURCE MENU_PANE r_profiler_gui_view_main_menu
+    {
+    items=
+        {
+        };
+    }
+
+           
+        
+//----------------------------------------------------
+//    r_profiler_gui_app_menu
+//----------------------------------------------------
+//
+RESOURCE MENU_PANE r_profiler_gui_app_menu
+    {
+    items=
+        {
+        MENU_ITEM { command=EProfilerGuiCmdStartAll;cascade = r_profiler_start_submenu; txt="Start"; },
+        MENU_ITEM { command=EProfilerGuiCmdStopAll; txt="Stop profiling"; },
+        MENU_ITEM { command=EProfilerGuiCmdSamplerControl; txt="Sampler control"; cascade=r_profiler_sampler_control_menu; }, 
+        MENU_ITEM { command=EProfilerGuiCmdSettings; txt="Settings"; },
+        MENU_ITEM { command=EProfilerGuiCmdAbout; txt="About"; },
+        MENU_ITEM { command=EAknCmdExit; txt="Exit"; }
+        };
+    }
+
+//----------------------------------------------------
+//    r_profiler_start_submenu
+//----------------------------------------------------
+//
+RESOURCE MENU_PANE r_profiler_start_submenu
+    {
+    items = 
+        {
+        MENU_ITEM 
+            {
+            command = EProfilerGuiCmdStartAll;
+            txt = "Profiling";
+            }
+        };
+    }
+
+//----------------------------------------------------
+//    r_profiler_sampler_control_menu
+//----------------------------------------------------
+//
+RESOURCE MENU_PANE r_profiler_sampler_control_menu
+    {
+    items=
+        {
+        MENU_ITEM { command=EProfilerGuiCmdSamplerEnable; txt="Enable"; },
+        MENU_ITEM { command=EProfilerGuiCmdSamplerDisable; txt="Disable"; },
+        MENU_ITEM { command=EProfilerGuiCmdSamplerSettings; txt="Sampler settings"; },
+        MENU_ITEM { command=EProfilerGuiCmdSamplerInfo; txt="Sampler info"; }
+        };
+    }
+
+
+//----------------------------------------------------
+//    r_profiler_gui_settings_dialog
+//    Dialog for setting list
+//----------------------------------------------------
+//
+RESOURCE DIALOG r_profiler_gui_settings_dialog
+    {
+    flags =
+        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
+        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
+        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
+    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtSettingListBox;
+            id = EProfilerGuiSettingItemList;
+            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
+            control = LISTBOX
+                {
+                flags = EAknListBoxSelectionList;
+                };
+            }
+        };
+    }
+
+// generic resources
+RESOURCE POPUP_SETTING_LIST r_popup_setting_list_editor
+	{
+	}
+RESOURCE AVKON_SETTING_PAGE r_binary_setting_page
+    {   
+    number = EAknSettingPageNoOrdinalDisplayed;
+    type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+    }
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_yesno_binaryselection_texts
+	{
+	setting_texts_resource = r_yesno_binaryselection_text_array;
+	}
+RESOURCE ARRAY r_yesno_binaryselection_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=0; text = "No"; },
+		AVKON_ENUMERATED_TEXT { value=1; text = "Yes"; }
+		};
+	}
+
+
+//
+// resources for plugin name mode selection
+//
+RESOURCE TBUF r_plugin_name_mode_setting_title
+    {
+    buf = "Sampler name length";
+    }
+RESOURCE AVKON_SETTING_PAGE r_plugin_name_mode_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_plugin_name_mode_setting_texts
+	{
+	setting_texts_resource = r_plugin_name_mode_text_array;
+	}
+RESOURCE ARRAY r_plugin_name_mode_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=ESamplerNameShort; text = "Short"; },
+		AVKON_ENUMERATED_TEXT { value=ESamplerNameMedium; text = "Medium"; },
+		AVKON_ENUMERATED_TEXT { value=ESamplerNameLong; text = "Long"; }
+		};
+	}
+
+
+//
+// resources for trace output selection
+//
+RESOURCE TBUF r_trace_output_setting_title
+    {
+    buf = "Output to";
+    }
+RESOURCE AVKON_SETTING_PAGE r_trace_output_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_trace_output_setting_texts
+	{
+	setting_texts_resource = r_trace_output_text_array;
+	}
+RESOURCE ARRAY r_trace_output_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=EOutputToDebugPort; text = "Debug output"; },
+		AVKON_ENUMERATED_TEXT { value=EOutputToFileSystem; text = "File system"; }
+		};
+	}
+
+
+//
+// resources for save_file_prefix selection
+//
+RESOURCE TBUF r_save_file_prefix_setting_title
+    {
+    buf = "File prefix";
+    }
+RESOURCE AVKON_SETTING_PAGE r_save_file_prefix_setting_page
+	{
+	type = EEikCtEdwin;
+	editor_resource_id = r_save_file_prefix_text_editor;
+	}
+
+RESOURCE EDWIN r_save_file_prefix_text_editor
+	{
+	lines = 0;  // expanding to multiple rows
+	maxlength = 63;
+	flags = EEikEdwinNoLineOrParaBreaks;
+	}
+
+//
+// resources for save file drive selection
+//
+RESOURCE TBUF r_save_file_drive_setting_title
+    {
+    buf = "Save file in";
+    }
+RESOURCE AVKON_SETTING_PAGE r_save_file_drive_setting_page
+	{
+	type = EEikCtEdwin;
+	editor_resource_id = r_save_file_drive_text_editor;
+	}
+
+RESOURCE EDWIN r_save_file_drive_text_editor
+	{
+	lines = 0;  // expanding to multiple rows
+	maxlength = 63;	
+	flags = EEikEdwinNoLineOrParaBreaks;
+	}
+
+//
+// resources for trace mode selection
+//
+RESOURCE TBUF r_trace_mode_setting_title
+    {
+    buf = "Trace mode";
+    }
+RESOURCE AVKON_SETTING_PAGE r_trace_mode_setting_page
+	{
+    number = EAknSettingPageNoOrdinalDisplayed; 
+	type = EAknCtPopupSettingList;
+	editor_resource_id = r_popup_setting_list_editor;
+	}
+RESOURCE AVKON_POPUP_SETTING_TEXTS r_trace_mode_setting_texts
+	{
+	setting_texts_resource = r_trace_mode_text_array;
+	}
+RESOURCE ARRAY r_trace_mode_text_array
+	{
+	items =
+		{
+		AVKON_ENUMERATED_TEXT { value=ETraceModeStream; text = "Stream"; },
+		AVKON_ENUMERATED_TEXT { value=ETraceModeBuffer; text = "Memory buffer"; }
+		};
+	}
+
+//
+// resources for timed_sampling_period selection
+//
+RESOURCE TBUF r_timed_sampling_period_setting_title
+    {
+    buf = "Profiling period (sec.)";
+    }
+RESOURCE AVKON_SETTING_PAGE r_timed_sampling_period_setting_page
+    {
+    type = EAknCtIntegerEdwin;
+    editor_resource_id = r_timed_sampling_period_integer_editor;
+    }
+
+RESOURCE AVKON_INTEGER_EDWIN r_timed_sampling_period_integer_editor
+    {
+    maxlength = 6;
+    min = 1;
+    max = 999999;
+    }
+
+
+//----------------------------------------------------
+//    r_profiler_gui_settings_menubar
+//----------------------------------------------------
+//
+
+RESOURCE MENU_BAR r_profiler_gui_settings_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_profiler_gui_settings_menupane;
+            txt = " ";   // dummy
+            }
+        };
+    }
+
+RESOURCE MENU_PANE r_profiler_gui_settings_menupane
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EProfilerGuiCmdSettingsChange;
+            txt = "Change";
+            },
+        MENU_ITEM
+            {
+            command = EProfilerGuiCmdSettingsExit;
+            txt = "Exit";
+            }
+        };
+    }
+
+//----------------------------------------------------
+//    r_profiler_gui_settings_dialog
+//    Dialog for setting list
+//----------------------------------------------------
+//
+RESOURCE DIALOG r_profiler_sampler_settings_dialog
+    {
+    flags =
+        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
+        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
+        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
+    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtSettingListBox;
+            id = EProfilerSamplerSettingItemList;
+            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
+            control = LISTBOX
+                {
+                flags = EAknListBoxSelectionList;
+                };
+            }
+        };
+    }
+
+//----------------------------------------------------
+//    r_profiler_sampler_settings_menubar
+//----------------------------------------------------
+//
+
+RESOURCE MENU_BAR r_profiler_sampler_settings_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_profiler_sampler_settings_menupane;
+            txt = "Sampler settings";
+            }
+        };
+    }
+
+RESOURCE MENU_PANE r_profiler_sampler_settings_menupane
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EProfilerGuiCmdSettingsChange;
+            txt = "Change";
+            },
+        MENU_ITEM
+            {
+            command = EProfilerGuiCmdSettingsExit;
+            txt = "Exit";
+            }
+        };
+    }
+
+  
+// ---------------------------------------------------------
+//   
+//   r_profiler_gui_about_dialog
+//   About dialog - show version and copyright info etc.
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_profiler_gui_about_dialog
+    {
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                label = "About Profiler";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {
+               	message = "Version 2.2.1 - 10th August 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.";
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//   r_sampler_rate_setting_page
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_sampler_rate_setting_page
+    {
+    type = EAknCtIntegerEdwin;
+    editor_resource_id = r_sampler_rate_integer_editor;
+    }
+RESOURCE AVKON_INTEGER_EDWIN r_sampler_rate_integer_editor
+    {
+    maxlength = 6;
+    min = 250;
+    max = 999999;
+    }    
+
+// ---------------------------------------------------------
+//   r_cpu_sampler_rate_setting_page
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_cpu_sampler_rate_setting_page
+    {
+    type = EAknCtIntegerEdwin;
+    editor_resource_id = r_cpu_sampler_rate_integer_editor;
+    }
+RESOURCE AVKON_INTEGER_EDWIN r_cpu_sampler_rate_integer_editor
+    {
+    maxlength = 5;
+    min = 1;
+    max = 10000;
+    } 
+
+// ---------------------------------------------------------
+//   
+//   r_generic_sampler_dlg_line_sample_rate
+//   Empty about dialog - show sampler plugin info in this
+//
+// ---------------------------------------------------------
+//
+RESOURCE DLG_LINE r_generic_sampler_dlg_line_sample_rate
+    {
+    type = EEikCtNumberEditor;
+    prompt = "Sample rate (ms)";
+    id = EProfilerGuiGenericSamplerQuerySampleRate;
+    itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
+    control = NUMBER_EDITOR
+        {
+        min = 1000;    
+        max = 10000;    
+        };
+    }
+
+// ---------------------------------------------------------
+//   
+//   r_profiler_gui_empty_about_dialog
+//   Empty about dialog - show sampler plugin info in this
+//
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_profiler_gui_empty_about_dialog
+    {
+    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
+    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                label = "About";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+                };
+            },
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {
+                message = "";
+                };
+            }
+        };
+    }
+
+
+RESOURCE TBUF r_dummy_setting_title
+    {
+    buf = "";
+    }
+
+RESOURCE TBUF r_sample_rate_setting_title
+    {
+    buf = "Sample rate (ms)";
+    }
+
+RESOURCE TBUF r_item1_setting_title
+    {
+    buf = "Item1";
+    }
+
+RESOURCE TBUF r_item2_setting_title
+    {
+    buf = "Item2";
+    }
+
+RESOURCE TBUF r_item3_setting_title
+    {
+    buf = "Item3";
+    }
+
+RESOURCE TBUF r_item4_setting_title
+    {
+    buf = "Item4";
+    }
+
+RESOURCE TBUF r_item5_setting_title
+    {
+    buf = "Item5";
+    }
+
+RESOURCE TBUF r_item6_setting_title
+    {
+    buf = "Item6";
+    }
+
+RESOURCE AVKON_SETTING_PAGE r_numeric_setting_page
+	{
+	type = EAknCtIntegerEdwin;
+	editor_resource_id = r_numeric_integer_editor;
+	}
+RESOURCE AVKON_INTEGER_EDWIN r_numeric_integer_editor
+	{
+	maxlength = 5;
+	min = 0;
+	max = 10000;
+	}    
+
+//
+// resources for text selection
+//
+RESOURCE AVKON_SETTING_PAGE r_generic_text_setting_page
+	{
+	type = EEikCtEdwin;
+	editor_resource_id = r_generic_text_editor;
+	}
+
+RESOURCE EDWIN r_generic_text_editor
+	{
+	lines = 0;  // expanding to multiple rows
+	maxlength = 63;	
+	flags = EEikEdwinNoLineOrParaBreaks;
+	}
+
+
+// ---------------------------------------------------------
+//   r_general_confirmation_query
+// ---------------------------------------------------------
+//
+
+RESOURCE DIALOG r_general_confirmation_query
+	{
+	flags = EGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_YES_NO;
+	items =
+		{
+		DLG_LINE
+			{
+			type = EAknCtQuery;
+			id = EGeneralQuery;
+			control = AVKON_CONFIRMATION_QUERY
+				{
+				layout = EConfirmationQueryLayout;
+				};
+			}
+		};
+	}
+
+// ---------------------------------------------------------
+//   r_general_text_query
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_general_text_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_DATA_QUERY
+                {
+                layout = EDataLayout;
+                control = EDWIN
+                    {
+                    width = 256;
+                    lines = 3;
+                    maxlength = 256;
+                    };
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//   r_general_text_query
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_general_numeric_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control= AVKON_DATA_QUERY
+                {
+                layout = ENumberLayout;
+                control = AVKON_INTEGER_EDWIN
+                    {
+                    min = -999999;
+                    max = 999999;
+                    };
+                };
+            }
+        };
+    }
+
+
+// ---------------------------------------------------------
+//   r_item_action_query
+// ---------------------------------------------------------
+//
+RESOURCE DIALOG r_item_action_query_enabled
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        AVKON_LIST_QUERY_DLG_LINE
+            {
+            control= AVKON_LIST_QUERY_CONTROL
+                {
+				listtype = EAknCtSinglePopupMenuListBox;
+				listbox = AVKON_LIST_QUERY_LIST
+					{
+					array_id = r_item_action_query_array_enabled;
+					};
+				heading = "Sampler controls";
+			    };
+            }
+        };
+    }
+
+RESOURCE DIALOG r_item_action_query_disabled
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        AVKON_LIST_QUERY_DLG_LINE
+            {
+            control= AVKON_LIST_QUERY_CONTROL
+                {
+				listtype = EAknCtSinglePopupMenuListBox;
+				listbox = AVKON_LIST_QUERY_LIST
+					{
+					array_id = r_item_action_query_array_disabled;
+					};
+				heading = "Sampler controls";
+			    };
+            }
+        };
+    }
+
+RESOURCE DIALOG r_item_action_query_hidden_settings_enabled
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        AVKON_LIST_QUERY_DLG_LINE
+            {
+            control= AVKON_LIST_QUERY_CONTROL
+                {
+                listtype = EAknCtSinglePopupMenuListBox;
+                listbox = AVKON_LIST_QUERY_LIST
+                    {
+                    array_id = r_item_action_query_array_hidden_settings_enabled;
+                    };
+                heading = "Sampler controls";
+                };
+            }
+        };
+    }
+
+RESOURCE DIALOG r_item_action_query_hidden_settings_disabled
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        AVKON_LIST_QUERY_DLG_LINE
+            {
+            control= AVKON_LIST_QUERY_CONTROL
+                {
+                listtype = EAknCtSinglePopupMenuListBox;
+                listbox = AVKON_LIST_QUERY_LIST
+                    {
+                    array_id = r_item_action_query_array_hidden_settings_disabled;
+                    };
+                heading = "Sampler controls";
+                };
+            }
+        };
+    }
+
+RESOURCE DIALOG r_item_action_query_hidden_start_stop
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        AVKON_LIST_QUERY_DLG_LINE
+            {
+            control= AVKON_LIST_QUERY_CONTROL
+                {
+				listtype = EAknCtSinglePopupMenuListBox;
+				listbox = AVKON_LIST_QUERY_LIST
+					{
+					array_id = r_item_action_query_array_hidden_start_stop;
+					};
+				heading = "Sampler controls";
+			    };
+            }
+        };
+    }
+
+RESOURCE ARRAY r_item_action_query_array_disabled
+	{
+	items =
+		{
+		LBUF {txt = "Enable"; },
+		LBUF {txt = "Sampler settings"; },
+		LBUF {txt = "Sampler info"; }
+		};
+	} 	
+
+RESOURCE ARRAY r_item_action_query_array_enabled
+	{
+	items =
+		{
+		LBUF {txt = "Disable"; },
+		LBUF {txt = "Sampler settings"; },
+		LBUF {txt = "Sampler info"; }
+		};
+	} 
+
+RESOURCE ARRAY r_item_action_query_array_hidden_settings_disabled
+    {
+    items =
+        {
+        LBUF {txt = "Enable"; },
+        LBUF {txt = "Sampler info"; }
+        };
+    } 
+
+RESOURCE ARRAY r_item_action_query_array_hidden_settings_enabled
+    {
+    items =
+        {
+        LBUF {txt = "Disable"; },
+        LBUF {txt = "Sampler info"; }
+        };
+    } 
+
+RESOURCE ARRAY r_item_action_query_array_hidden_start_stop
+	{
+	items =
+		{
+		LBUF {txt = "Sampler settings"; },
+		LBUF {txt = "Sampler info"; }
+		};
+	} 
+
+RESOURCE STATUS_PANE_APP_MODEL r_profiler_gui_status_pane
+	{
+	panes = 
+		{
+		SPANE_PANE
+			{
+			id = EEikStatusPaneUidTitle;
+			type = EAknCtTitlePane;
+			resource = r_profiler_gui_title_resource;
+			},
+		SPANE_PANE
+			{
+			id = EEikStatusPaneUidNavi;
+			type = EAknCtNaviPane;
+			resource = r_profiler_gui_navi_text_idle;
+			}
+		};
+	}
+
+RESOURCE TITLE_PANE r_profiler_gui_title_resource
+	{
+	txt = "PI Profiler";
+	}
+
+RESOURCE TBUF r_profiler_gui_navi_text_idle
+	{
+	buf = "Idle";
+	}
+
+RESOURCE TBUF r_profiler_gui_navi_text_initializing
+	{
+	buf = "Initializing...";
+	}
+
+RESOURCE TBUF r_profiler_gui_navi_text_running
+	{
+	buf = "Profiling...";
+	}
+
+RESOURCE TBUF r_profiler_gui_navi_text_stopping
+	{
+	buf = "Stopping...";
+	}
+
+RESOURCE DIALOG r_profiler_gui_conf_query
+	{
+	flags = EAknGeneralQueryFlags;
+	buttons = R_AVKON_SOFTKEYS_YES_NO;
+	items = 
+		{
+		DLG_LINE
+			{
+			type = EAknCtQuery;
+			id = EProfilerGuiViewConfQuery;
+			control = AVKON_CONFIRMATION_QUERY
+				{
+				layout = EConfirmationQueryLayout;
+				label = "Leave profiling on?";
+				};
+			}
+		};
+	}
+
+//   
+//    RESOURCE LOCALISABLE_APP_INFO
+//
+// ---------------------------------------------------------
+//
+RESOURCE LOCALISABLE_APP_INFO r_profiler_gui_localisable_app_info
+    {
+    short_caption = "PI Profiler";
+    caption_and_icon = 
+    CAPTION_AND_ICON_INFO
+        {
+        caption = "PI Profiler";
+
+        number_of_icons = 1;
+
+        // Note for ROM-based apps it is recommended to add the drive letter
+        icon_file = APP_BITMAP_DIR"\\piprofilerui_aif.mif";
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/data/piprofilerui_reg.rss	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* 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 <piprofilerui.rsg>
+#include <appinfo.rh>
+#include <data_caging_paths_strings.hrh>
+
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x2001E5AE
+
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "PIProfilerUI";
+    localisable_resource_file = APP_RESOURCE_DIR"\\PIProfilerUI";
+    localisable_resource_id = R_PROFILER_GUI_LOCALISABLE_APP_INFO;
+    group_name = "RnD Tools";    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/group/backup_registration.xml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+  <passive_backup>
+    <include_directory name="\"/>
+  </passive_backup>
+  <system_backup/>
+  <restore requires_reboot = "no"/>
+</backup_registration>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/group/bld.inf	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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 <platform_paths.hrh>
+
+
+PRJ_EXPORTS
+../group/backup_registration.xml    Z:/private/2001E5AE/backup_registration.xml
+../rom/piprofilerui_avkon.iby		CORE_IBY_EXPORT_PATH(tools,piprofilerui.iby)
+
+PRJ_MMPFILES
+#ifndef SBSV2
+  gnumakefile piprofilerui_icons_aif.mk
+  gnumakefile piprofilerui_extraicons.mk
+#endif
+
+piprofilerui.mmp
+
+
+#ifdef SBSV2
+  PRJ_EXTENSIONS
+  START EXTENSION s60/mifconv
+  OPTION TARGETFILE piprofilerui_aif.mif
+  OPTION SOURCEDIR ../../icons
+  OPTION SOURCES -c8,8 qgn_menu_piprofilerui
+  END
+
+  START EXTENSION s60/mifconv
+  OPTION TARGETFILE piprofilerui_extraicons.mif
+  OPTION HEADERFILE piprofilerui_extraicons.mbg
+  OPTION SOURCEDIR ../../icons
+  OPTION SOURCES -c8,8 qgn_prob_piprofilerui_status_disabled -c8,8 qgn_prob_piprofilerui_status_enabled
+  END
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/group/piprofilerui.mmp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* 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 <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+
+TARGET            PIProfilerUI.exe
+TARGETTYPE        exe
+EPOCSTACKSIZE     0x8000
+EPOCHEAPSIZE      0x10000 0x1000000  // Min 64Kb, Max 16Mb
+
+UID               0x100039CE 0x2001E5AE
+
+VENDORID          VID_DEFAULT
+CAPABILITY        ALL -TCB //swevent networkservices
+SMPSAFE
+
+LANG              SC
+
+START RESOURCE    ../data/piprofilerui.rss
+HEADER
+TARGETPATH        APP_RESOURCE_DIR
+END
+
+START RESOURCE    ../data/piprofilerui_reg.rss
+DEPENDS           piprofilerui.rsg
+TARGETPATH        /private/10003a3f/apps
+END
+
+APP_LAYER_SYSTEMINCLUDE
+USERINCLUDE       ../inc
+SOURCEPATH        ../src
+
+
+SOURCE            profiler_gui_app.cpp
+SOURCE            profiler_gui_document.cpp 
+SOURCE            profiler_gui_appui.cpp
+SOURCE            profiler_gui_model.cpp
+SOURCE            profiler_gui_mainview.cpp 
+SOURCE            profiler_gui_maincontainer.cpp 
+SOURCE            profiler_gui_settingsviewdlg.cpp
+SOURCE            profiler_gui_samplersettingsviewdlg.cpp
+
+
+LIBRARY           euser.lib
+LIBRARY			  eiksrv.lib
+LIBRARY           CommonEngine.lib
+LIBRARY           apparc.lib
+LIBRARY           cone.lib 
+LIBRARY           eikcore.lib
+LIBRARY           eikcoctl.lib
+LIBRARY           eikctl.lib
+LIBRARY           eikdlg.lib  
+LIBRARY           avkon.lib 
+LIBRARY           ws32.lib 
+LIBRARY           apgrfx.lib
+LIBRARY           efsrv.lib
+LIBRARY           bafl.lib
+LIBRARY           gdi.lib
+LIBRARY           aknnotify.lib
+LIBRARY           aknicon.lib
+LIBRARY           aknskins.lib
+LIBRARY           aknskinsrv.lib
+LIBRARY           egul.lib
+LIBRARY           estor.lib
+LIBRARY           flogger.lib
+LIBRARY			  charconv.lib 
+LIBRARY			  sysutil.lib 
+LIBRARY			  platformenv.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/group/piprofilerui_extraicons.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,60 @@
+#
+# 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:   
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=$(EPOCROOT)epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\piprofilerui_extraicons.mif
+
+HEADERDIR=$(EPOCROOT)epoc32\include
+HEADERFILENAME=$(HEADERDIR)\piprofilerui_extraicons.mbg
+
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN :
+	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
+	@if exist $(HEADERFILENAME) erase $(HEADERFILENAME)
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : $(ICONTARGETFILENAME)
+
+$(ICONTARGETFILENAME) (HEADERFILENAME) : ..\..\icons\qgn_prob_piprofilerui_status_disabled.svg ..\..\icons\qgn_prob_piprofilerui_status_enabled.svg
+	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
+		/c8,8 ..\..\icons\qgn_prob_piprofilerui_status_disabled.svg \
+		/c8,8 ..\..\icons\qgn_prob_piprofilerui_status_enabled.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(HEADERFILENAME) && \
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/group/piprofilerui_icons_aif.mk	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,54 @@
+#
+# 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:   
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=$(EPOCROOT)epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\piprofilerui_aif.mif
+
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN :
+	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
+	
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : $(ICONTARGETFILENAME)
+
+$(ICONTARGETFILENAME) : ..\..\icons\qgn_menu_piprofilerui.svg
+	mifconv $(ICONTARGETFILENAME) \
+		/c8,8 ..\..\icons\qgn_menu_piprofilerui.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui.hrh	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILERGUI_HRH
+#define PROFILERGUI_HRH
+
+enum TProfilerCmdSamplerIds
+    {
+    EProfilerGuiCmdSamplerEnable = 1,   // id cannot be 0
+    EProfilerGuiCmdSamplerDisable,
+    EProfilerGuiCmdSamplerSettings,
+    EProfilerGuiCmdSamplerInfo
+    };
+
+enum TSamplerSettingItemIds
+    {
+    EProfilerGuiGenericSamplerQuerySampleRate = 0,
+    EProfilerGuiGenericSamplerQueryItem1,
+    EProfilerGuiGenericSamplerQueryItem2,
+    EProfilerGuiGenericSamplerQueryItem3,
+    EProfilerGuiGenericSamplerQueryItem4,
+    EProfilerGuiGenericSamplerQueryItem5,
+    EProfilerGuiGenericSamplerQueryItem6
+    };
+
+enum TGeneralSettingItemIds
+    {
+    ESettingListItemPluginTraceOutput = 0,
+    ESettingListItemPluginSaveFileDrive,
+    ESettingListItemPluginTraceFilePrefix,
+    ESettingListItemPluginSamplingTime
+    };
+
+enum TProfilerGuiCommandIds
+    {
+    EProfilerGuiCmdStart = 1000,
+    EProfilerGuiCmdStop,
+    EProfilerGuiCmdStartAll,
+    EProfilerGuiCmdStartTimed,
+    EProfilerGuiCmdStopAll,
+    
+    EProfilerGuiCmdSamplerControl,
+    EProfilerGuiCmdSamplerSettingsChange,
+    EProfilerGuiCmdSamplerSettingsExit,
+    
+    EProfilerGuiCmdSettings,
+    EProfilerGuiCmdSettingsChange,
+    EProfilerGuiCmdSettingsExit,
+    EProfilerGuiCmdSettingsBack,
+
+    EProfilerGuiCmdAbout,
+
+    EProfilerGuiViewConfQuery,
+    EProfilerGuiSettingItemList,
+    EProfilerSamplerSettingItemList
+    };
+
+enum TProfilerGuiSettingSamplerNameLength
+	{
+	ESamplerNameShort,
+	ESamplerNameMedium,
+	ESamplerNameLong
+	};
+
+enum TProfilerGuiSettingTraceMode
+	{
+	ETraceModeStream,
+	ETraceModeBuffer
+	};
+
+enum TProfilerGuiSettingOutputMode
+	{
+	EOutputToDebugPort = 0,
+	EOutputToFileSystem
+	};
+
+enum TProfilerGuiSettingSaveFileDrive
+	{
+	ETraceSaveFileDriveC,
+	ETraceSaveFileDriveD,
+	ETraceSaveFileDriveE,
+	ETraceSaveFileDriveF,
+	ETraceSaveFileDriveG,
+	ETraceSaveFileDriveH,
+	ETraceSaveFileDriveI,
+	ETraceSaveFileDriveJ,
+	ETraceSaveFileDriveK,
+	ETraceSaveFileDriveL
+	};
+
+enum TItemActionMenuTypes
+    {
+    EItemActionMenuTypeEnable = 0,
+    EItemActionMenuTypeDisable,
+    EItemActionMenuTypeEditSettings,    
+    EItemActionMenuTypeInfo,    
+    EItemActionMenuTypeStart,	// for future use
+    EItemActionMenuTypeStop	    // for future use
+    };
+
+#endif      // PROFILERGUI_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_app.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_APP_H
+#define PROFILER_GUI_APP_H
+
+
+// INCLUDES
+#include <aknapp.h>
+
+// CONSTANTS
+// UID of the application
+const TUid KUidProfilerGui = { 0x2001E5AE };
+
+// CLASS DECLARATION
+
+/**
+* CProfilerGuiApp application class.
+* Provides factory to create concrete document object.
+* 
+*/
+class CProfilerGuiApp : public CAknApplication
+    {
+    
+    public: // Functions from base classes
+
+    private:
+
+        /**
+        * From CApaApplication, creates CProfilerGuiDocument document object.
+        * @return A pointer to the created document object.
+        */
+        CApaDocument* CreateDocumentL();
+        
+        /**
+        * From CApaApplication, returns application's UID (KUidProfilerGui).
+        * @return The value of KUidProfilerGui.
+        */
+        TUid AppDllUid() const;
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_appui.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_APPUI_H
+#define PROFILER_GUI_APPUI_H
+
+// INCLUDES
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <coeccntx.h>
+#include <aknViewAppUi.h>
+#include <akntabgrp.h>
+#include <aknnavide.h>
+#include "profiler_gui_std.h"
+
+// profiler engine inclusions
+#include <piprofiler/ProfilerConfig.h>
+
+// FORWARD DECLARATIONS
+class CProfilerGuiModel;
+
+// CLASS DECLARATIONS
+
+class CProfilerGuiAppUi : public CAknViewAppUi
+    {
+public: // constructors and destructor
+    void ConstructL();
+    ~CProfilerGuiAppUi();
+    
+    // profiler specific 
+	void StartProfilerL();
+	void StopProfilerL();
+private: // From MEikMenuObserver
+    void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
+
+private:
+    void HandleCommandL(TInt aCommand);
+    virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+    void HandleSystemEventL(const TWsEvent& aEvent);
+    
+    void SaveSettingsL();
+	void LoadSettingsL();
+	TInt RunConfQueryL( const TDesC* aOverrideText ); 
+private: //Data
+    CProfilerGuiModel*              iModel;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_attributes.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_ATTRIBUTES_H
+#define PROFILER_GUI_ATTRIBUTES_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATIONS
+       
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_document.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_DOCUMENT_H
+#define PROFILER_GUI_DOCUMENT_H
+
+// INCLUDES
+#include <AknDoc.h>
+   
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CEikAppUi;
+class CProfilerGuiModel;
+
+
+// CLASS DECLARATION
+
+/**
+*  CProfilerGuiDocument application class.
+*/
+class CProfilerGuiDocument : public CAknDocument
+    {
+    public: // Constructors and destructor
+        static CProfilerGuiDocument* NewL(CEikApplication& aApp);
+        virtual ~CProfilerGuiDocument();
+
+    public: // New functions
+
+    public:	// from CEikDocument
+
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+
+    private:
+
+        /**
+        * EPOC default constructor.
+        */
+        CProfilerGuiDocument(CEikApplication& aApp);
+        void ConstructL();
+
+    private:
+
+        /**
+        * From CEikDocument, create CProfilerGuiAppUi "App UI" object.
+        */
+        CEikAppUi* CreateAppUiL();
+
+    public:
+        inline CProfilerGuiModel* Model() { return iModel; }
+
+    private:
+        CProfilerGuiModel* iModel;
+
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_maincontainer.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_VALUESCONTAINER_H
+#define PROFILER_GUI_VALUESCONTAINER_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <eiklbo.h> 
+#include <aknlists.h> 
+#include <AknInfoPopupNoteController.h> 
+
+// FORWARD DECLARATIONS
+class CProfilerGuiModel;
+class CAknInfoPopupNoteController;
+
+// CLASS DECLARATIONS
+
+class CProfilerGuiMainContainer : public CCoeControl, MCoeControlObserver, MEikListBoxObserver
+    {
+public:
+    void ConstructL(const TRect& aRect);
+    ~CProfilerGuiMainContainer();
+
+private:
+    void SizeChanged();  
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void Draw(const TRect& aRect) const;
+    void HandleResourceChange(TInt aType);
+    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);  // From MEikListBoxObserver
+    void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);  // From MCoeControlObserver
+	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+
+public:
+    const CArrayFix<TInt>* ListBoxSelectionIndexes();
+    TInt ListBoxSelectionIndexesCount();
+    void SetDefaultTitlePaneTextL();
+    TInt CurrentListBoxItemIndex();
+    void SetListBoxTextArrayL(CDesCArray* aTextArray);
+    inline CAknSingleGraphicStyleListBox* ListBox() { return iListBox; }
+    void ShowWriterInfoPopupL(const TDesC& aNote);
+private:
+    CProfilerGuiModel*                              iModel;
+    CAknSingleGraphicStyleListBox*      			iListBox;
+    CAknInfoPopupNoteController*        			iInfoPopup;
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_mainview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_VALUESVIEW_H
+#define PROFILER_GUI_VALUESVIEW_H
+
+// INCLUDES
+#include <aknview.h>
+
+#include "profiler_gui_std.h"
+#include "profiler_gui_model.h"
+
+
+// CONSTANTS
+// UID of view
+const TUid KMainViewUID = {1};
+
+// FORWARD DECLARATIONS
+class CProfilerGuiMainContainer;
+class CProfilerGuiModel;
+class CProfilerEngineStatusChecker;
+class CAknNavigationDecorator;
+
+
+/**
+*  CProfilerGuiMainView view class.
+* 
+*/
+class CProfilerGuiMainView : public CAknView
+    {
+    public: // Constructors and destructor
+        void ConstructL();
+        ~CProfilerGuiMainView();
+
+    public: // Functions from base classes
+        TUid Id() const;
+        void HandleCommandL(TInt aCommand);
+        void HandleClientRectChange();
+        
+        /**
+         * Method for updating the Profiler engine status pane
+         * Called by Model class
+         * 
+         * @param aStatus new status of profiler engine  
+         */
+        void UpdateStatusPaneL( TInt aStatus ); 
+        
+    private: // From MEikMenuObserver
+        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+        
+    private: // From AknView
+        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
+        void DoDeactivate();
+        void HandleStatusPaneSizeChange();
+        void SetupStatusPaneL();
+        void CleanupStatusPaneL();
+		HBufC* GetLabelTextLC(TInt aStatus);
+    private: // Data
+    	CAknNavigationDecorator*			iNaviDecorator;
+        CProfilerGuiMainContainer*        	iContainer;
+        CProfilerGuiModel*                  iModel;
+
+    };
+
+#endif
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_model.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_MODEL_H
+#define PROFILER_GUI_MODEL_H
+
+// SYSTEM INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <apgcli.h>
+#include <gdi.h>
+#include <utf.h>
+#include <e32property.h>    // RProperty
+
+// LOCAL INCLUDES
+#include "profiler_gui_mainview.h"
+#include "profiler_gui.hrh"
+
+// COMMON INCLUDES
+#include <piprofiler/ProfilerConfig.h>
+#include <piprofiler/ProfilerAttributes.h>
+#include <piprofiler/ProfilerEngineStatusChecker.h>
+
+// setting keys (do not change uids of existing keys to maintain compatibility to older versions!)
+const TUid KPSettingPluginNameMode                         = { 0x00 };
+const TUid KPSettingPluginSaveFileDrive                    = { 0x01 };
+const TUid KPSettingPluginTraceOutput                      = { 0x02 };
+const TUid KPSettingPluginSaveFilePrefix                   = { 0x03 };
+const TUid KPSettingPluginTraceMode                        = { 0x04 };
+
+
+// FORWARD DECLARATIONS
+class CProfilerGuiMainView;
+class CProfilerGuiMainContainer;
+class CEikonEnv;
+class TSamplerAttributes;
+class CProfilerEngineStatusChecker;
+class MProfilerStatusObserver;
+
+
+typedef CArrayFixSeg<TSamplerAttributes> CSamplerItemList;
+
+
+
+class CProfilerGuiModel : public CActive, MProfilerStatusObserver
+	{
+private:
+    enum TContainerDrawState
+    	{
+    	EDrawStateInvalid = -1,
+    	EDrawStateMain
+    	};
+ public:
+	static CProfilerGuiModel* NewL();
+	~CProfilerGuiModel();
+	void ActivateModelL();
+	void DeActivateModelL();
+	void SetMainView(CProfilerGuiMainView* aMainView);
+	void UpdateState(TInt aState);
+	TBool GetSelectedItemHasSettings();
+    TBool GetSelectedItemEnabled();
+    TBool GetSelectedItemHidden();
+    TInt EditSelectedSamplerL(TInt index);
+    void SelectedSamplerInfoL(TInt index);
+    void TerminateProfilerL();
+    TBool CheckTraceLocationSanityL(TGeneralAttributes& aAttr, TBool aQuietCheck);
+ private:
+    void RunL();
+	void DoCancel();
+	void LoadPluginsL();	
+    TInt EditSamplerL(TSamplerAttributes& aItem);
+    void SamplerInfoL(TSamplerAttributes& aItem);
+private:
+	CProfilerGuiModel();
+	void ConstructL();
+    TInt LoadGeneralSettingsL();
+
+    void AppendToSamplerItemListL(TSamplerAttributes& aItem);
+    void DisableOrEnableFromSamplerItemListL(TInt aIndex);
+    void DeleteAllSamplerItems();
+    void RefreshViewL(TBool aClearSelection=ETrue);
+    void LaunchProfilerEngineL();
+    void UpdateUIRunningStateL();
+    TInt FindProcessL(RProcess& aProc);
+    
+public:
+    
+    enum TProfilingMode
+        {
+        EProfilingModeNormal = 0,
+        EProfilingModeTimed
+        };
+    
+ 	void StartAllSamplerItemsL(TProfilingMode aProfilingMode = EProfilingModeNormal);
+    void StopAllSamplerItemsL();
+    void DeleteAllSamplerItemsL();
+    void DisableAllSamplerItemsL();
+    void EnableAllSamplerItemsL();
+            
+    TInt SamplerItemCount() const;
+    void ShowItemActionMenuL();
+    void StopSelectedOrHighlightedItemsL();
+    void DisableOrEnableSelectedOrHighlightedItemsL();
+
+    CDesCArray* GenerateListBoxItemTextArrayL();
+	void StartNewSamplerL(TInt aCommand);
+    void AddNewSamplersL(CArrayFixFlat<TSamplerAttributes>& iSamplerAttributes);
+
+    void SaveGeneralSettingsL();
+    void SetMainContainer(CProfilerGuiMainContainer* aContainer);
+    TInt LaunchSettingsDialogL();
+    inline CEikonEnv* EikonEnv() { return iEnv; }
+    inline CProfilerGuiMainContainer* MainContainer() { return iMainContainer; }
+    inline TBool SamplerItemsExists() { return iSamplerItemList->Count() > 0; } 
+    inline TGeneralAttributes const& GeneralSettings() const { return iGeneralAttributes; }
+    
+    TPtrC GetWriterInfoNoteL(const TDesC& aNote);
+    void AttachClient();
+    void RemoveClient();
+
+public:
+    // from MProfilerStatusObserver
+    void NotifyContainerReadyL();
+    void HandleProfilerStatusChange( KProfilerStatus aStatus );
+    void HandleProfilerErrorL( TInt aError );
+        
+private:
+	static const TInt                   iSamplerNameMode = ESamplerNameLong;
+    CProfilerGuiMainContainer*          iMainContainer;
+    CEikonEnv*                          iEnv;
+    TInt                                iDrawState;
+    CSamplerItemList*                   iSamplerItemList;
+    TInt                                iReferenceNumber;
+    CArrayFixFlat<TSamplerAttributes>*	iSamplerAttributes;
+    TGeneralAttributes                  iGeneralAttributes;
+    TBool                               iProfilerStatus;   // Status of Engine before it was launched by this application
+    CProfilerGuiMainView*               iMainView;
+
+    // checkers
+    CProfilerEngineStatusChecker*       iStatusChecker;
+public:
+    TInt							     iState;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_samplersettingsviewdlg.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_SAMPLERSETTINGSVIEWDLG_H
+#define PROFILER_GUI_SAMPLERSETTINGSVIEWDLG_H
+
+//  INCLUDES
+#include <AknDialog.h>
+#include <eiklbo.h>
+#include <AknTabObserver.h> 
+#include <akntabgrp.h>
+#include <aknsettingitemlist.h> 
+#include <akncheckboxsettingpage.h> 
+
+#include "profiler_gui_model.h"
+
+
+//  FORWARD DECLARATIONS
+class CAknSettingItemArray;
+class CAknSettingStyleListBox;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CAknTabGroup; 
+class TProfilerSamplerSettings;
+
+// CONSTANTS
+const TUint KMaxItemCount = 7;
+const TInt KMaxSettingUITextLength = 64;
+
+//  CLASS DEFINITIONS
+
+class CProfilerSamplerSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
+    {
+public:
+    static CProfilerSamplerSettingsViewDlg* NewL(TSamplerAttributes& aSettings);
+    virtual ~CProfilerSamplerSettingsViewDlg();
+
+public: // From MEikListBoxObserver
+    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+
+public: // From MAknTabObserver
+    void TabChangedL(TInt aIndex); 
+
+public: // From CAknDialog
+    void ProcessCommandL(TInt aCommandId);
+
+protected: // From CEikDialog
+    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
+    void PreLayoutDynInitL();
+    TBool OkToExitL(TInt aButtonId);    
+
+private: // New methods
+    void ShowSettingPageL(TBool aCalledFromMenu);
+    void SetVisibilitiesOfSettingItemsL();
+    void UpdateListBoxL();
+    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
+
+private: // Constructors
+    CProfilerSamplerSettingsViewDlg(TSamplerAttributes& aSettings);
+    void ConstructL();        
+    CAknSettingItem* GetSettingItemL(TSettingItem& aItem, TInt aIndex, TInt& aSettingPageResource);
+private: // Data
+    CAknSettingItemArray*               iSettingItemArray;
+    CAknSettingStyleListBox*            iListBox;
+    CAknNavigationControlContainer*     iNaviContainer;
+    TSamplerAttributes&                 iSettings;
+    TInt 								iItemCount;
+    
+    // item bufs for textual settings data 
+    TInt                                iItemBuf[KMaxItemCount];
+    };
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_settingsviewdlg.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_SETTINGSVIEWDLG_H
+#define PROFILER_GUI_SETTINGSVIEWDLG_H
+
+//  INCLUDES
+#include <AknDialog.h>
+#include <eiklbo.h>
+#include <AknTabObserver.h> 
+#include <akntabgrp.h>
+#include <aknsettingitemlist.h> 
+#include <akncheckboxsettingpage.h> 
+
+#include "profiler_gui_model.h"
+
+
+//  FORWARD DECLARATIONS
+class CAknSettingItemArray;
+class CAknSettingStyleListBox;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CAknTabGroup; 
+class TProfilerGuiSettings;
+
+
+//  CLASS DEFINITIONS
+
+class CProfilerGuiSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
+    {
+public:
+    static CProfilerGuiSettingsViewDlg* NewL(TGeneralAttributes& aSettings);
+    virtual ~CProfilerGuiSettingsViewDlg();
+
+public: // From MEikListBoxObserver
+    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+
+public: // From MAknTabObserver
+    void TabChangedL(TInt aIndex); 
+
+public: // From CAknDialog
+    void ProcessCommandL(TInt aCommandId);
+
+protected: // From CEikDialog
+    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
+    void PreLayoutDynInitL();
+    TBool OkToExitL(TInt aButtonId);    
+
+private: // New methods
+    void ShowSettingPageL(TBool aCalledFromMenu);
+    void SetVisibilitiesOfSettingItemsL();
+    void UpdateListBoxL();
+    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
+
+private: // Constructors
+    CProfilerGuiSettingsViewDlg(TGeneralAttributes& aSettings);
+    void ConstructL();        
+
+private: // Data
+    CAknSettingItemArray*               iSettingItemArray;
+    CAknSettingStyleListBox*            iListBox;
+    CAknNavigationControlContainer*     iNaviContainer;
+    TGeneralAttributes&                 iSettings;
+    
+    // temporary member variables
+    TInt                                iTraceOutput;
+    TBuf<64>                            iSaveDrive;
+    TBuf<64>                            iFilePrefix;
+    };
+
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/inc/profiler_gui_std.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef PROFILER_GUI_STD_H
+#define PROFILER_GUI_STD_H
+
+
+
+#endif
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/rom/piprofilerui_avkon.iby	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef __PROFILERGUI_IBY__
+#define __PROFILERGUI_IBY__
+
+S60_APP_EXE(PIProfilerUI)
+S60_APP_AIF_ICONS(PIProfilerUI)
+S60_APP_RESOURCE(PIProfilerUI)
+SCALABLE_IMAGE(APP_BITMAP_DIR, APP_BITMAP_DIR, PIProfilerui_ExtraIcons)
+#ifdef S60_UPGRADABLE_APP_REG_RSC
+  S60_UPGRADABLE_APP_REG_RSC(PIProfilerUI)
+#else
+  S60_APP_AIF_RSC(PIProfilerUI)
+#endif
+
+#endif // __PROFILERGUI_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_app.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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 FILES
+#include "profiler_gui_app.h"
+#include "profiler_gui_document.h"
+#include <piprofiler/ProfilerTraces.h>
+
+#include <eikstart.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CProfilerGuiApp::AppDllUid()
+// Returns application UID
+// ---------------------------------------------------------
+//
+TUid CProfilerGuiApp::AppDllUid() const
+    {
+    return KUidProfilerGui;
+    }
+   
+// ---------------------------------------------------------
+// CProfilerGuiApp::CreateDocumentL()
+// Creates CProfilerGuiDocument object
+// ---------------------------------------------------------
+//
+CApaDocument* CProfilerGuiApp::CreateDocumentL()
+    {
+    return CProfilerGuiDocument::NewL( *this );
+    }
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CProfilerGuiApp;
+    }
+
+
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+
+// End of File  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_appui.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,260 @@
+/*
+* 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 FILES
+#include "profiler_gui_appui.h"
+#include "profiler_gui_mainview.h"
+#include "profiler_gui.hrh"
+#include "profiler_gui_model.h"
+#include "profiler_gui_document.h"
+#include <piprofilerui.rsg>
+#include <piprofiler/ProfilerTraces.h>
+#include <piprofiler/ProfilerSession.h>
+#include <piprofiler/ProfilerConfig.h>
+
+#include <AknWaitDialog.h>
+#include <AknGlobalNote.h>
+#include <avkon.hrh>
+#include <AknQueryDialog.h>
+#include <aknmessagequerydialog.h> 
+#include <pathinfo.h>
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+void CProfilerGuiAppUi::ConstructL()
+    {
+    // set as system application to prevent getting shut down events 
+    iEikonEnv->SetSystem(ETrue);
+    
+    BaseConstructL(EAknEnableSkin);
+    
+    // get model
+    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+	
+	LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - setting main view settings"));
+    
+    CProfilerGuiMainView* mainView = new(ELeave) CProfilerGuiMainView;
+    CleanupStack::PushL(mainView);
+    mainView->ConstructL();
+    AddViewL(mainView);           // transfer ownership to CAknViewAppUi
+    CleanupStack::Pop();          // mainView
+
+	LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - setting default view"));
+
+    SetDefaultViewL(*mainView);
+
+    LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - activating model"));
+
+    // notify the model that everything has been constructed
+    iModel->ActivateModelL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiAppUi::~CProfilerGuiAppUi()
+    {
+    // notify the model that the application is closing 
+    if (iModel)   
+        TRAP_IGNORE(iModel->DeActivateModelL());
+
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    if( aResourceId == R_PROFILER_START_SUBMENU )
+        {
+        CEikMenuPaneItem::SData itemData;
+        _LIT(KMenuText, "Profiling for %d sec.");
+        itemData.iText.Format(KMenuText, iModel->GeneralSettings().iTimedSamplingPeriod);// = _L("Profiling for %d sec.");  // Label text for the menu item
+        itemData.iCommandId = EProfilerGuiCmdStartTimed;    // Command ID for the menu item
+        itemData.iFlags = 0;
+        itemData.iCascadeId = 0;
+        aMenuPane->AddMenuItemL( itemData );
+        }
+    if (aResourceId == R_PROFILER_GUI_APP_MENU)
+        {
+        if(iModel->iState == MProfilerStatusObserver::ERunning)
+        	{
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, ETrue);
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, EFalse);
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, ETrue);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, ETrue);
+        	}
+        else if(iModel->iState == MProfilerStatusObserver::EIdle)
+        	{
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, EFalse);
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, ETrue);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, EFalse);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, EFalse);
+        	}
+        else
+        	{
+        	// if initializing or stopping no start/stop actions allowed 
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, ETrue);
+			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, ETrue);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, ETrue);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, ETrue);
+        	}
+        }
+    
+    if(aResourceId == R_PROFILER_SAMPLER_CONTROL_MENU)
+        {
+        // check if item hidden, i.e. sampler cannot be started/stopped
+        if(!iModel->GetSelectedItemHidden())
+            {
+            // item enabled => dimm the "enable" item, and other way round
+            if(iModel->GetSelectedItemEnabled())
+                {
+                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, ETrue);
+                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, EFalse);
+                }
+            // item enabled => dimm the "enable" item, and other way round
+            else
+                {
+                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, EFalse);
+                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, ETrue);
+                }
+
+            }
+        // item hidden => dimm both enable and disable items
+        else
+            {
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, ETrue);
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, ETrue);
+            }
+        
+        // if sampler item has specific settings to control 
+        if(iModel->GetSelectedItemHasSettings())
+            {
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerSettings, EFalse);
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerSettings, ETrue);
+            }
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CProfilerGuiAppUi::HandleKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
+    {
+    return EKeyWasNotConsumed;
+    }
+
+void CProfilerGuiAppUi::HandleSystemEventL(const TWsEvent& aEvent)
+    {
+    switch (*(TApaSystemEvent*)(aEvent.EventData()))
+        {
+        case EApaSystemEventShutdown:
+            // check if still profiling
+            if( iModel->iState != MProfilerStatusObserver::EIdle )
+                {
+                // stop profiling process
+                iModel->StopAllSamplerItemsL();
+                }
+
+            // terminate profiler engine
+            iModel->TerminateProfilerL();
+            break;
+        default:
+            break;
+        }
+    // call base class implementation
+    CAknAppUi::HandleSystemEventL(aEvent);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiAppUi::HandleCommandL(TInt aCommand)
+    {
+    switch ( aCommand )
+        {
+        case EProfilerGuiCmdSettings:
+            {
+            // check if exit command received
+            if (iModel->LaunchSettingsDialogL() == EAknCmdExit)
+                {
+                // terminate profiler engine...
+                iModel->TerminateProfilerL();
+                
+                // ... and exit
+                Exit();
+                }
+            break;
+            }
+        case EProfilerGuiCmdAbout:
+            {
+	        CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
+            dialog->ExecuteLD(R_PROFILER_GUI_ABOUT_DIALOG);
+            }
+            break;
+            
+        // a normal way to close an application
+        case EAknCmdExit:
+        case EEikCmdExit:
+        case EAknSoftkeyExit: 
+			{
+			// decrease the client reference count in the server:
+			iModel->RemoveClient();
+            // check if still profiling
+            if( iModel->iState != MProfilerStatusObserver::EIdle && 
+                    iModel->iState != MProfilerStatusObserver::EStopping )
+                {
+                // ask user if he wants to leave profiling running in background process 
+                if( this->RunConfQueryL( NULL ) == 0 )
+                    {
+                    // stop profiling process
+                    iModel->StopAllSamplerItemsL();
+
+                    // terminate profiler engine
+                    iModel->TerminateProfilerL();
+                    }
+                }
+            else
+                {
+                // terminate profiler engine
+                iModel->TerminateProfilerL();
+                }
+            
+            Exit();
+ 			}
+            break;
+
+        default:
+            break;      
+        }
+    }
+
+TInt CProfilerGuiAppUi::RunConfQueryL( const TDesC* aOverrideText )
+	{
+	CAknQueryDialog* queryDialog = CAknQueryDialog::NewL();
+	
+	if(aOverrideText)
+		{
+		queryDialog->SetPromptL(*aOverrideText);
+		}
+	return queryDialog->ExecuteLD(R_PROFILER_GUI_CONF_QUERY);
+	}
+
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_document.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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 FILES
+#include "profiler_gui_document.h"
+#include "profiler_gui_appui.h"
+#include "profiler_gui_model.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// constructor
+CProfilerGuiDocument::CProfilerGuiDocument(CEikApplication& aApp)
+: CAknDocument(aApp)    
+    {
+    }
+
+// ----------------------------------------------------
+
+// destructor
+CProfilerGuiDocument::~CProfilerGuiDocument()
+    {
+    delete iModel;
+    }
+
+// ----------------------------------------------------
+
+// EPOC default constructor can leave.
+void CProfilerGuiDocument::ConstructL()
+    {
+    iModel = CProfilerGuiModel::NewL();
+    }
+
+// ----------------------------------------------------
+
+// Two-phased constructor.
+CProfilerGuiDocument* CProfilerGuiDocument::NewL(CEikApplication& aApp)
+    {
+    CProfilerGuiDocument* self = new(ELeave) CProfilerGuiDocument(aApp);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+    }
+    
+// ----------------------------------------------------
+// CProfilerGuiDocument::CreateAppUiL()
+// constructs CProfilerGuiAppUi
+// ----------------------------------------------------
+//
+CEikAppUi* CProfilerGuiDocument::CreateAppUiL()
+    {
+    return new (ELeave) CProfilerGuiAppUi;
+    }
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_maincontainer.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,332 @@
+/*
+* 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 FILES
+#include "profiler_gui_maincontainer.h"
+#include "profiler_gui.hrh"
+#include "profiler_gui_document.h"
+#include "profiler_gui_appui.h"
+#include "profiler_gui_model.h"
+#include <piprofilerui_extraicons.mbg>
+
+#include <aknlists.h>
+#include <eikclb.h>
+#include <eikclbd.h>
+#include <aknconsts.h>
+#include <AknUtils.h>
+#include <aknnotewrappers.h>
+#include <AknIconArray.h> 
+#include <f32file.h>
+#include <AknIconUtils.h>
+#include <AknDef.h>
+#include <akntitle.h>
+#include <eikspane.h> 
+
+_LIT(KExtraIconsPath, "\\resource\\apps\\piprofilerui_extraicons.mif");
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+void CProfilerGuiMainContainer::ConstructL(const TRect& aRect)
+    {
+    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    iModel->SetMainContainer(this);
+
+    CreateWindowL();
+    SetRect(aRect);
+    SetBlank();
+    
+    // init listbox
+    iListBox = new(ELeave) CAknSingleGraphicStyleListBox;
+    iListBox->SetContainerWindowL(*this);
+    iListBox->ConstructL(this, EAknListBoxMarkableList);
+    iListBox->View()->SetListEmptyTextL(_L("No plugins found yet"));
+
+    // if description length longer than screen width, scroll the text
+    iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
+    
+    // create icon array and add marking indicator to it
+    CAknIconArray* iconArray = new(ELeave) CAknIconArray(1);
+    CleanupStack::PushL(iconArray);
+    CFbsBitmap* markBitmap = NULL;
+    CFbsBitmap* markBitmapMask = NULL;
+    
+    TRgb defaultColor;
+    defaultColor = iEikonEnv->Color(EColorControlText);
+
+    AknsUtils::CreateColorIconL(AknsUtils::SkinInstance(),
+            KAknsIIDQgnIndiMarkedAdd,
+            KAknsIIDQsnIconColors,
+            EAknsCIQsnIconColorsCG13,
+            markBitmap,
+            markBitmapMask,
+            AknIconUtils::AvkonIconFileName(),
+            EMbmAvkonQgn_indi_marked_add,
+            EMbmAvkonQgn_indi_marked_add_mask,
+            defaultColor
+            );
+     
+    CGulIcon* markIcon = CGulIcon::NewL(markBitmap, markBitmapMask);
+    iconArray->AppendL(markIcon);                       
+    
+    // append icons from profiler_gui_extraicons.mif
+    TFileName extraIconsPath;
+    extraIconsPath.Copy(KExtraIconsPath);
+    TParsePtrC parse((CEikonEnv::Static()->EikAppUi()->Application())->AppFullName()); // get path where this app is installed
+    extraIconsPath.Insert(0, parse.Drive()); // drive letter
+    
+    CFbsBitmap* redBitmap = NULL;
+    CFbsBitmap* redBitmapMask = NULL;
+    CFbsBitmap* greenBitmap = NULL;
+    CFbsBitmap* greenBitmapMask = NULL;
+    
+    AknIconUtils::CreateIconL(redBitmap, redBitmapMask, extraIconsPath, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_disabled, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_disabled_mask);
+    AknIconUtils::CreateIconL(greenBitmap, greenBitmapMask, extraIconsPath, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_enabled, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_enabled_mask);
+
+    CGulIcon* redIcon = CGulIcon::NewL(redBitmap, redBitmapMask);
+    iconArray->AppendL(redIcon);  
+    
+    CGulIcon* greenIcon = CGulIcon::NewL(greenBitmap, greenBitmapMask);
+    iconArray->AppendL(greenIcon);  
+
+    // set icon array
+    CleanupStack::Pop(); // iconArray
+    iListBox->ItemDrawer()->ColumnData()->SetIconArray(iconArray);
+
+    iListBox->CreateScrollBarFrameL(ETrue);
+    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+    iListBox->SetListBoxObserver(this);
+    
+    // set size of the listbox
+    TSize outputRectSize;
+    AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
+    TRect outputRect(outputRectSize);
+    iListBox->SetRect(outputRect);
+
+    iListBox->ActivateL();    
+    
+    ActivateL();
+    
+    iInfoPopup = CAknInfoPopupNoteController::NewL();
+    iInfoPopup->SetTimePopupInView(5000);
+    iInfoPopup->SetTimeDelayBeforeShow(500);
+    iInfoPopup->SetTextL(_L("TIP: Check also sampler specific settings!")); 
+    iInfoPopup->ShowInfoPopupNote();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiMainContainer::~CProfilerGuiMainContainer()
+    {
+    delete iInfoPopup;
+    
+    if (iListBox)
+        delete iListBox;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::SizeChanged()
+{
+    TSize outputRectSize;
+    AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
+    TRect outputRect(outputRectSize);
+    
+    if (iListBox)
+        iListBox->SetRect(outputRect);
+}
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiMainContainer::CountComponentControls() const
+    {
+    if (iListBox)
+        return 1;
+    else
+        return 0;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CCoeControl* CProfilerGuiMainContainer::ComponentControl(TInt /*aIndex*/) const
+    {
+    if (iListBox)
+        return iListBox;
+    else
+        return NULL;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiMainContainer::CurrentListBoxItemIndex()
+    {
+    if (iListBox)
+        {
+        return iListBox->CurrentItemIndex();
+        }
+    else
+        return KErrNotFound;    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::SetListBoxTextArrayL(CDesCArray* aTextArray)
+    {
+    if (iListBox)
+        {    
+        iListBox->Model()->SetItemTextArray(aTextArray);
+        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
+        iListBox->HandleItemAdditionL();
+        iListBox->UpdateScrollBarsL();
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+const CArrayFix<TInt>* CProfilerGuiMainContainer::ListBoxSelectionIndexes()
+    {
+    if (iListBox)
+        {
+        const CListBoxView::CSelectionIndexArray* indices = iListBox->SelectionIndexes();
+        return static_cast<const CArrayFix<TInt>*>(indices);
+        }
+    else
+        return NULL;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiMainContainer::ListBoxSelectionIndexesCount()
+    {
+    if (iListBox)
+        {
+        return iListBox->SelectionIndexes()->Count();
+        }
+    else
+        return KErrNotFound;
+    }
+                        
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::Draw(const TRect& aRect) const
+    {
+    CWindowGc& gc = SystemGc();
+    gc.Clear(aRect);
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::SetDefaultTitlePaneTextL()
+    {
+    _LIT(KTitleText, "PIProfiler");
+
+    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL( KTitleText );
+    }
+        
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CProfilerGuiMainContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    if(aType != EEventKey)
+        return EKeyWasNotConsumed;
+    
+    if (iListBox && iListBox->Model()->NumberOfItems() > 0)
+        {
+        // handle OK/Enter keys
+        if (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter)
+            {
+            // check if profiler state is idle
+            if(iModel->iState == MProfilerStatusObserver::EIdle)
+                {
+                // show action menu only if state is idle
+                iModel->ShowItemActionMenuL();
+                }
+            }
+        else
+            {
+            return iListBox->OfferKeyEventL(aKeyEvent, aType);
+            }
+        }
+    
+    return EKeyWasNotConsumed;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
+    {
+    switch (aEventType)
+        {
+        case EEventEnterKeyPressed:
+        case EEventItemDoubleClicked:
+            {
+            iModel->ShowItemActionMenuL();
+            }
+            break;
+        default:
+            break;
+        }
+    }
+            
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::HandleResourceChange(TInt aType)
+    {
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        TRect mainPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+        SetRect(mainPaneRect);
+
+        TSize outputRectSize;
+        AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
+        TRect outputRect(outputRectSize);
+        iListBox->SetRect(outputRect);
+        }
+    else
+        {
+        CCoeControl::HandleResourceChange(aType);
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiMainContainer::ShowWriterInfoPopupL(const TDesC& aNote)
+	{
+	if(!iInfoPopup)
+	    {
+	    iInfoPopup = CAknInfoPopupNoteController::NewL();
+	    }
+    // Hide the note. The last note may be visible when creating the second
+	iInfoPopup->HideInfoPopupNote();
+    iInfoPopup->SetTimePopupInView(5000);
+    iInfoPopup->SetTimeDelayBeforeShow(500);
+    iInfoPopup->SetTextL(iModel->GetWriterInfoNoteL(aNote));
+    iInfoPopup->ShowInfoPopupNote();
+	}
+
+
+// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_mainview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,334 @@
+/*
+* 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 FILES
+#include "profiler_gui.hrh"
+#include "profiler_gui_mainview.h"
+#include "profiler_gui_maincontainer.h"
+#include "profiler_gui_document.h" 
+#include "profiler_gui_model.h"
+#include <piprofilerui.rsg>
+
+#include <AknWaitDialog.h>
+#include <AknGlobalNote.h>
+#include <eikenv.h>
+#include <aknViewAppUi.h> 
+#include <akncontext.h>
+#include <StringLoader.h>
+#include <aknnavi.h>
+#include <akntitle.h>
+#include <barsread.h>
+#include <aknnavide.h>
+#include <aknmessagequerydialog.h> 
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CProfilerGuiMainView::ConstructL(const TRect& aRect)
+// EPOC two-phased constructor
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::ConstructL()
+    {
+    BaseConstructL( R_PROFILER_GUI_VIEW_MAIN );
+    
+    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    iNaviDecorator = NULL;
+    iModel->SetMainView(this);
+    }
+
+// ---------------------------------------------------------
+// CProfilerGuiMainView::~CProfilerGuiMainView()
+// ---------------------------------------------------------
+//
+CProfilerGuiMainView::~CProfilerGuiMainView()
+    {
+
+    if(iNaviDecorator)
+    	{
+    	delete iNaviDecorator;
+    	iNaviDecorator = NULL;
+    	}
+    
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    
+    }
+
+// ---------------------------------------------------------
+// TUid CProfilerGuiMainView::Id()
+// ---------------------------------------------------------
+//
+TUid CProfilerGuiMainView::Id() const
+    {
+    return KMainViewUID;
+    }
+
+// ---------------------------------------------------------
+// TUid CProfilerGuiMainView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
+    }
+
+  
+// ---------------------------------------------------------
+// CProfilerGuiMainView::HandleCommandL(TInt aCommand)
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::HandleCommandL(TInt aCommand)
+    {   
+    switch ( aCommand )
+        {
+        // commands from sampler control sub menu 
+        case EProfilerGuiCmdSamplerEnable:
+            {
+            iModel->DisableOrEnableSelectedOrHighlightedItemsL();
+            break;
+            }
+        case EProfilerGuiCmdSamplerDisable:
+            {
+            iModel->DisableOrEnableSelectedOrHighlightedItemsL();
+            break;
+            }
+        case EProfilerGuiCmdSamplerSettings:
+            {
+            // check if sampler settings dialog returned exit command
+            iModel->EditSelectedSamplerL(iContainer->CurrentListBoxItemIndex());
+            break;
+            }
+        case EProfilerGuiCmdSamplerInfo:
+            {
+            iModel->SelectedSamplerInfoL(iContainer->CurrentListBoxItemIndex());
+            break;
+            }
+            
+        case EProfilerGuiCmdStartAll:
+        case EProfilerGuiCmdStartTimed:
+            {
+            // still using the old way of starting all the samplers simultaneously
+            if( iModel->iState != MProfilerStatusObserver::ERunning )
+            	{
+            	// set state as "initializing" for a moment before profiling has started, 
+            	// NOTE: engine changes to "Running" state
+            	iModel->iState = MProfilerStatusObserver::EInitializing;
+                // start the actual sampling process on Profiler Engine 
+            	if( aCommand == EProfilerGuiCmdStartTimed )
+            	    iModel->StartAllSamplerItemsL(CProfilerGuiModel::EProfilingModeTimed);
+            	else
+            	    iModel->StartAllSamplerItemsL();
+            	}
+
+			// prevent the control of sampler specific settings during the trace 
+            iContainer->SetDimmed(ETrue);
+            break;
+            }
+        case EProfilerGuiCmdStopAll:
+            {
+			// check if still profiling
+			if( iModel->iState != MProfilerStatusObserver::EIdle )
+				{
+				// set to stopping mode
+				iModel->iState = MProfilerStatusObserver::EStopping;
+                // stop actual sampling process on Profiler Engine
+				iModel->StopAllSamplerItemsL();
+				}
+            
+			// return the control to sampler specific settings when tracing stopped
+			iContainer->SetDimmed(EFalse);
+
+            break;
+            }
+            
+        default:
+            {
+            AppUi()->HandleCommandL(aCommand);
+            break;
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CProfilerGuiMainView::HandleClientRectChange()
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::HandleClientRectChange()
+    {
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    }
+
+// ---------------------------------------------------------
+// CProfilerGuiMainView::DoActivateL(...)
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::DoActivateL(
+   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8& /*aCustomMessage*/)
+    {
+    // show wait dialog
+    CAknGlobalNote* waitDialog = CAknGlobalNote::NewLC();
+    waitDialog->SetSoftkeys(R_AVKON_SOFTKEYS_EMPTY);
+    TInt dialogId = waitDialog->ShowNoteL(EAknGlobalWaitNote, _L("Initializing samplers"));
+
+    // setup the profiler engine status pane
+    SetupStatusPaneL();
+    
+    // check if container creation succesfull
+    if (!iContainer)
+        {
+        iContainer = new (ELeave) CProfilerGuiMainContainer;
+        iModel->SetMainContainer(iContainer);
+        iContainer->SetMopParent(this);
+        iContainer->ConstructL( ClientRect() );
+        iModel->NotifyContainerReadyL();
+        AppUi()->AddToStackL( *this, iContainer );
+        } 
+    
+	// remove the wait dialog
+	waitDialog->CancelNoteL(dialogId);
+	CleanupStack::PopAndDestroy(); //waitDialog;
+   }
+
+// ---------------------------------------------------------
+// CProfilerGuiMainView::DoDeactivate()
+// ---------------------------------------------------------
+//
+void CProfilerGuiMainView::DoDeactivate()
+    {
+    TRAP_IGNORE(CleanupStatusPaneL());
+    
+    if (iContainer)
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    }
+
+void CProfilerGuiMainView::HandleStatusPaneSizeChange()
+	{
+	CAknView::HandleStatusPaneSizeChange();
+	
+	TInt result;
+	TRAP(result, SetupStatusPaneL());
+	}
+
+
+void CProfilerGuiMainView::SetupStatusPaneL()
+	{
+	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
+	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
+	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
+		{
+		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
+		if(iNaviDecorator)
+			{
+			delete iNaviDecorator;
+			iNaviDecorator = NULL;
+			}
+		
+		// get the initial status label
+		HBufC* labelText = GetLabelTextLC(iModel->iState);
+		iNaviDecorator = naviPane->CreateNavigationLabelL(*labelText);
+		CleanupStack::PopAndDestroy(labelText);
+		
+		naviPane->PushL(*iNaviDecorator);
+		}
+	}
+
+void CProfilerGuiMainView::CleanupStatusPaneL()
+	{
+	// destructor for navi pane, called by destructor
+	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
+	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
+	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
+		{
+		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
+		if(iNaviDecorator)
+			{
+			naviPane->Pop(iNaviDecorator);
+			delete iNaviDecorator;
+			iNaviDecorator = NULL;
+			}
+		}
+	}
+
+HBufC* CProfilerGuiMainView::GetLabelTextLC(TInt aStatus)
+	{
+	// get the predefined status text
+	HBufC* labelText = NULL;
+	switch(aStatus)
+		{
+		case MProfilerStatusObserver::EIdle:
+			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_IDLE);
+			break;
+		case MProfilerStatusObserver::EInitializing:
+			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_INITIALIZING);
+			break;
+		case MProfilerStatusObserver::ERunning:
+			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_RUNNING);
+			break;
+		case MProfilerStatusObserver::EStopping:
+			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_STOPPING);
+			break;
+	     case MProfilerStatusObserver::ERestarting:
+            labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_RUNNING);
+            break;
+	     default:
+	        labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_IDLE); 
+	        break;
+		}
+	return labelText;
+	}
+
+void CProfilerGuiMainView::UpdateStatusPaneL( TInt aStatus )
+	{
+	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
+	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
+	// check if navi pane is correctly initialized
+	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
+		{
+		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
+		if(iNaviDecorator)
+			{
+			delete iNaviDecorator;
+			iNaviDecorator = NULL;
+			}
+		HBufC* labelText;
+
+		// get the right status label text 
+		labelText = GetLabelTextLC(aStatus);
+		iNaviDecorator = naviPane->CreateNavigationLabelL(*labelText);
+		CleanupStack::PopAndDestroy(labelText);
+		
+		naviPane->PushL(*iNaviDecorator);
+		}
+	}
+
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_model.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,1176 @@
+/*
+* 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 FILES
+#include "profiler_gui_samplersettingsviewdlg.h"
+#include "profiler_gui_model.h"
+#include "profiler_gui_app.h"
+#include "profiler_gui_settingsviewdlg.h"
+#include "profiler_gui_maincontainer.h"
+#include "profiler_gui.hrh"
+#include <piprofilerui.rsg>
+
+#include <coeutils.h>
+#include <bautils.h>
+#include <eikenv.h>
+#include <AknQueryDialog.h>
+#include <AknGlobalNote.h>
+#include <aknmessagequerydialog.h> 
+#include <e32math.h> 
+#include <akntitle.h> 
+#include <s32file.h>
+#include <aknnotewrappers.h>
+#include <sysutil.h>
+
+// UIDs
+#include <piprofiler/EngineUIDs.h>
+
+#include <piprofiler/ProfilerTraces.h>
+#include <piprofiler/ProfilerSession.h>
+
+// LITERALS
+_LIT(KAppName, "PI Profiler");
+_LIT(KWarningNote, "NOTE: output changed!\n");
+_LIT(KProfilerEngineExe, "PIProfilerEngine.exe");
+
+// literals for default general setting values
+_LIT8(KTraceOutput, "file_system");
+_LIT8(KTraceDebugOutput, "debug_output");
+_LIT8(KProfilerDefaultDrive, "E:\\data");
+_LIT8(KProfilerDefaultPrefix, "Profiler_#");
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CProfilerGuiModel* CProfilerGuiModel::NewL() 
+	{
+	CProfilerGuiModel* self = new(ELeave) CProfilerGuiModel;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiModel::CProfilerGuiModel() : CActive(EPriorityStandard)
+	{
+	}
+	
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::ConstructL()
+	{
+	// initialize basic settings
+	iDrawState = EDrawStateInvalid;
+	iReferenceNumber = 0;
+	iState = MProfilerStatusObserver::EIdle;
+	
+    iEnv = CEikonEnv::Static();
+
+    // profiler engine specific initialization
+    LaunchProfilerEngineL();
+    
+    // max sampler item list length is 64, i.e. max 64 sampler plugins loaded 
+    iSamplerItemList = new(ELeave) CSamplerItemList(64);
+
+    // initialize attribute arrays
+    iSamplerAttributes = new(ELeave) CArrayFixFlat<TSamplerAttributes>(20); // max sampler count is 20
+    
+    // engine status checker
+    iStatusChecker = CProfilerEngineStatusChecker::NewL();
+    iStatusChecker->SetObserver(this);
+ 	
+	CActiveScheduler::Add(this);
+	}
+
+void CProfilerGuiModel::UpdateUIRunningStateL()
+    {
+    // prevent the control of sampler specific settings during the trace 
+    iMainContainer->SetDimmed(ETrue);
+    
+    // update status pane
+    iMainView->UpdateStatusPaneL(iState);
+
+    // show an info popup showing the logging method
+    iMainContainer->ShowWriterInfoPopupL(KNullDesC);
+    
+    // refresh view
+    RefreshViewL();
+    }
+
+// --------------------------------------------------------------------------------------------
+void CProfilerGuiModel::NotifyContainerReadyL()
+	{
+	// load initial plugins
+    LoadPluginsL();
+    
+    // get the initial state
+    if( iStatusChecker->GetInitialState() == MProfilerStatusObserver::ERunning )
+        {
+        // set model state to restarting and grabbing an existing profiler process
+        iState = MProfilerStatusObserver::ERestarting;
+        
+        // update status pane to correspond the running mode
+        UpdateUIRunningStateL();
+
+        // set model state to running
+        iState = MProfilerStatusObserver::ERunning;
+
+        }
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::ActivateModelL()
+	{
+	// load general settings
+	if( LoadGeneralSettingsL() != KErrNone )
+	    {
+	    LOGTEXT(_L("ProfilerGuiAppUi::ActivateModelL - could not connect profiler engine"));
+	    }
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::DeActivateModelL()
+	{
+	Cancel();
+	
+	// for a faster exit, send the application to background
+    TApaTask selfTask(iEnv->WsSession());
+    selfTask.SetWgId(iEnv->RootWin().Identifier());
+    selfTask.SendToBackground();
+	}
+	
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiModel::~CProfilerGuiModel()
+	{
+    if (iSamplerItemList)
+        {
+        DeleteAllSamplerItems();
+        delete iSamplerItemList;
+        iSamplerItemList = NULL;
+        }
+    
+    if(iStatusChecker)
+        {
+        iStatusChecker->Cancel();
+        delete iStatusChecker;
+        iStatusChecker = NULL;
+        }
+    
+  
+    if(iSamplerAttributes)
+        {
+        iSamplerAttributes->Reset();
+        delete iSamplerAttributes;
+        iSamplerAttributes = NULL;
+        }
+     
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::DoCancel()
+	{
+    
+	}
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::RunL()
+	{
+
+	}
+	
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::SetMainContainer(CProfilerGuiMainContainer* aContainer)
+    {
+    iMainContainer = aContainer;
+    iDrawState = EDrawStateMain;
+    }
+
+void CProfilerGuiModel::UpdateState(TInt aState)
+	{
+	iState = aState;
+	}
+
+TInt CProfilerGuiModel::FindProcessL(RProcess& aProc)
+    {
+    TProcessId engId;
+    TFindProcess procName;
+    procName.Find(_L("PIProfilerEngine.exe*"));
+    TFullName aResult;
+    TFullName aResult2;
+    TInt err(KErrNone);
+
+    // find the first appearance
+    err = procName.Next(aResult);
+    if(err != KErrNone)
+        {
+        // did not find any engine process
+        return err;
+        }
+    else
+        {
+        err = aProc.Open(procName);
+        if(err == KErrNone)
+            {
+            if(aProc.ExitCategory().Length() > 0)
+                {
+                aProc.Close();
+                // process already exited => create a new one
+                return KErrNotFound;
+                }
+            aProc.Close();
+            }
+        }
+    
+//    // check now if a second appearance exists in process list, 
+//    // i.e. engine started from eshell => two engine processes appear in normal case
+//    procName.Next(aResult2);
+//
+//    // check if aResult2 contained the second appearance of profiler engine
+//    if(aResult2.CompareF(aResult) > 0)
+//        {
+//        // other process found, i.e. right process to communicate with, in case started from eshell
+//        err = aProc.Open(procName);
+//        if(err == KErrNone)
+//            {
+//            if(aProc.ExitCategory().Length() > 0)
+//                {
+//                // process already exited => create a new one
+//                return KErrNotFound;
+//                }
+//            aProc.Close();
+//            }
+//        }
+    
+    return err;
+    }
+
+void CProfilerGuiModel::LaunchProfilerEngineL()
+    {
+    LOGTEXT(_L("CProfilerGuiModel::LaunchProfilerEngineL - start"));
+
+    TRequestStatus stat = KRequestPending;
+    RProcess proc;
+    
+    TInt err(KErrNone);
+    
+    // check if process exists
+    err = FindProcessL(proc);
+    
+    // check if already exists and don't start a new eshell profiling
+    if( err == KErrNotFound )
+        {
+        // try create new process
+        err = proc.Create(KProfilerEngineExe, _L(""));
+
+        // check if RProcess::Create() succeeded
+        if( err == KErrNone )
+            {
+            // Trigger rendezvous on the supplied TRequestStatus object
+            proc.Rendezvous(stat); 
+
+            // kick off the engine process
+            proc.Resume();
+            
+            // wait for the constructor to complete 
+            User::WaitForRequest(stat); 
+            
+            // just lose the handle
+            proc.Close();
+            }
+        }
+    
+    // Increase the client reference count in server:
+    AttachClient();    
+    }
+
+//-----------------------------------------------------------------------------
+// CProfilerGuiModel::TerminateProfilerL()
+// Stops Profiler Engine if it has been launched by this launcher. 
+//-----------------------------------------------------------------------------
+
+void CProfilerGuiModel::TerminateProfilerL()
+    {
+    LOGTEXT(_L("CProfilerGuiModel::TerminateProfiler - entry"));
+    
+    // exit profiler engine 
+    RProfiler::ExitProfiler();
+        
+    LOGTEXT(_L("CProfilerGuiModel::TerminateProfiler - exit"));
+    
+    }
+
+void CProfilerGuiModel::AttachClient()
+    {
+    LOGTEXT(_L("CProfilerGuiModel::AttachClient - entry"));
+    
+    // 
+    RProfiler::AttachClient();
+        
+    LOGTEXT(_L("CProfilerGuiModel::AttachClient - exit"));
+    
+    }
+
+void CProfilerGuiModel::RemoveClient()
+    {
+    LOGTEXT(_L("CProfilerGuiModel::RemoveClient - entry"));
+    
+    // 
+    RProfiler::RemoveClient();
+        
+    LOGTEXT(_L("CProfilerGuiModel::RemoveClient - exit"));
+    
+    }
+
+void CProfilerGuiModel::AddNewSamplersL(CArrayFixFlat<TSamplerAttributes>& aAttributes)
+	{
+	TSamplerAttributes item;
+	
+	TInt count(aAttributes.Count());
+
+	// loop the attribute array and insert them into view list
+	for (TInt i(0);i<count;i++)
+		{
+    	// get a TSamplerAttributes from list at a time  
+		item = aAttributes.At(i);
+
+		iReferenceNumber++;
+	
+        // add item to the array
+        AppendToSamplerItemListL(item);
+        
+        // update the listbox
+        RefreshViewL(EFalse);
+        
+        // set item index to the begin	
+        iMainContainer->ListBox()->SetCurrentItemIndexAndDraw(iMainContainer->ListBox()->Model()->NumberOfItems()-1);
+
+		}
+    // refresh again
+    if(iReferenceNumber > 0)
+        {
+        RefreshViewL(ETrue);
+        }
+	}
+
+TBool CProfilerGuiModel::CheckTraceLocationSanityL(TGeneralAttributes& aAttr, TBool aQuietCheck)
+    {
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+
+    TBuf<32> drive;
+    
+    CnvUtfConverter::ConvertToUnicodeFromUtf8(drive, aAttr.iSaveFileDrive);
+
+    TDriveUnit driveUnit = TDriveUnit(drive);
+
+    TBool ret(EFalse);
+
+    // check that the root folder is correct
+    if (drive.Length() > 2 && BaflUtils::CheckFolder(fs, drive.Left(3)) == KErrNone )
+        {
+        // check then if drive has still some space
+        if(!SysUtil::DiskSpaceBelowCriticalLevelL(&fs, 0, driveUnit))
+            {
+            ret = ETrue;
+            }
+        }
+    
+    // check if the sanity check failed
+    if(!ret)
+        {
+        // show an error note
+        if(aQuietCheck == EFalse)
+            {
+            CAknErrorNote* note = new(ELeave) CAknErrorNote();
+            note->ExecuteLD(_L("Invalid path, check settings!"));
+            }
+        }
+    fs.Close();
+    return ret;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiModel::LaunchSettingsDialogL()
+    {
+    // launch the settings dialog
+    TGeneralAttributes newSettings = iGeneralAttributes;
+    TBool quietCheck(EFalse);
+    
+    CProfilerGuiSettingsViewDlg* dlg = CProfilerGuiSettingsViewDlg::NewL(newSettings);
+    TInt returnValue = dlg->ExecuteLD(R_PROFILER_GUI_SETTINGS_DIALOG);
+    
+    // check if exit command => no error note to user
+    if(returnValue == EAknCmdExit)
+        quietCheck = ETrue;
+    
+    // always save settings since the settings dialog does not provide a possibility to cancel
+    iGeneralAttributes.iTraceOutput.Copy(newSettings.iTraceOutput);
+    iGeneralAttributes.iTraceFilePrefix.Copy(newSettings.iTraceFilePrefix);
+    iGeneralAttributes.iTimedSamplingPeriod = newSettings.iTimedSamplingPeriod;
+
+    // check if debug output selected no check of
+    if(newSettings.iTraceOutput.CompareF(KTraceDebugOutput) != 0)
+        {
+        // Check save file drive sanity
+        if(CheckTraceLocationSanityL(newSettings, quietCheck))
+            {
+            // save the new location
+            iGeneralAttributes.iSaveFileDrive.Copy(newSettings.iSaveFileDrive);
+            }
+        }
+    
+    // saves the general settings to profiler engine
+    SaveGeneralSettingsL();   
+    
+    // make sure that the title of the application is correct
+    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL(KAppName);
+    
+    return returnValue;
+    }
+
+
+TPtrC CProfilerGuiModel::GetWriterInfoNoteL(const TDesC& aNote)
+	{
+    TBuf<256> buf;
+    TBuf<128> descBuf;
+    
+    buf.Zero();
+
+    // get active profiler since it 
+    RProfiler::GetActiveWriter(buf);
+    
+	if(iGeneralAttributes.iTraceOutput.CompareF(KTraceOutput) == 0)
+		{
+		if(iState == MProfilerStatusObserver::EInitializing ||
+                iState == MProfilerStatusObserver::ERestarting )
+			{
+			descBuf.Zero();
+			// set the additional note if available
+			buf.Copy(aNote); 
+			RProfiler::GetFileName(descBuf);
+			buf.Append(_L("Writing to "));
+			buf.Append(descBuf);
+			}
+		else if(iState == MProfilerStatusObserver::EIdle ||
+		        iState == MProfilerStatusObserver::EStopping ||
+		        iState == MProfilerStatusObserver::ERunning )
+			{
+			descBuf.Zero();
+            // set the additional note if available
+            buf.Copy(aNote); 
+            RProfiler::GetFileName(descBuf);
+			buf.Append(_L("Wrote trace data to "));
+			buf.Append(descBuf);
+			}
+		else
+		    {
+	          buf.Copy(KNullDesC);
+		    }
+		}
+	else if(iGeneralAttributes.iTraceOutput.CompareF(KTraceDebugOutput) == 0)
+		{
+		if(iState == MProfilerStatusObserver::EInitializing ||
+                iState == MProfilerStatusObserver::ERestarting )
+			{
+			buf.Copy(_L("Writing to debug output..."));
+			}
+		else if( iState == MProfilerStatusObserver::EIdle || 
+	             iState == MProfilerStatusObserver::EStopping ||
+		         iState == MProfilerStatusObserver::ERunning )
+			{
+			buf.Copy(_L("Wrote trace data to debug output"));
+			}
+		else
+		    {
+		    buf.Copy(KNullDesC);
+		    }
+		}
+	else
+	    {
+	    // should not reach this point
+        buf.Copy(KNullDesC);
+	    }
+    
+    return TPtrC(buf);	
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiModel::EditSamplerL(TSamplerAttributes& aItem)
+    {
+    // edit sampler specific settings i.e. attributes
+    TSamplerAttributes& newSettings = aItem;
+    TInt indexToReplace(iMainContainer->CurrentListBoxItemIndex());
+    
+    // create a new settings editor dialog
+    CProfilerSamplerSettingsViewDlg* dlg = CProfilerSamplerSettingsViewDlg::NewL(newSettings);
+    TInt returnValue = dlg->ExecuteLD(R_PROFILER_SAMPLER_SETTINGS_DIALOG);
+    
+    // save settings
+    aItem = newSettings;
+
+    // replace the old attribute container with saved values
+    iSamplerItemList->Delete(indexToReplace);
+    iSamplerItemList->InsertL(indexToReplace, newSettings);
+    
+    // save the settings to sampler item
+    RProfiler::SetSamplerAttributes(newSettings);
+    
+    // make sure that the title of the application is correct
+    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL(KAppName);
+
+    return returnValue;
+    }
+
+
+void CProfilerGuiModel::SamplerInfoL(TSamplerAttributes& aItem)
+    {
+    TBuf<64> header;
+    TBuf<256> info;
+    
+    _LIT(KSamplerStr, "Sampler Info");
+    
+//    CnvUtfConverter::ConvertToUnicodeFromUtf8(header, aItem.iName);
+    
+    header.Append(KSamplerStr);
+
+    CnvUtfConverter::ConvertToUnicodeFromUtf8(info, aItem.iDescription);
+
+    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
+    //dialog->ExecuteLD(info);
+    dialog->PrepareLC( R_PROFILER_GUI_EMPTY_ABOUT_DIALOG );
+    dialog->SetHeaderText(header);
+    dialog->SetMessageTextL(info);
+    dialog->RunLD(); 
+
+    RefreshViewL(EFalse);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::StartAllSamplerItemsL(TProfilingMode aProfilingMode)
+    {
+    TBuf<256> activeWriterDes;
+    TBuf8<256> writer8;
+    
+    iState = MProfilerStatusObserver::EInitializing;
+    
+    RProfiler::TProfilingMode profilingMode = aProfilingMode == EProfilingModeTimed ? RProfiler::EProfilingModeTimed : RProfiler::EProfilingModeNormal;
+    
+    // update status pane to correspond the initializing mode
+    // prevent the control of sampler specific settings during the trace 
+    iMainContainer->SetDimmed(ETrue);
+    
+    // update status pane
+    iMainView->UpdateStatusPaneL(iState);
+    
+    // refresh view
+    RefreshViewL();
+    
+    // try to start profiling process through client-server interface
+    if(RProfiler::StartSampling(profilingMode) == KErrNotFound)
+        {
+        
+        // profiler stopped (e.g. from eshell) and must be restarted 
+        LaunchProfilerEngineL();
+        
+        // set general attributes
+        SaveGeneralSettingsL();
+        
+        // set sampler attributes
+        for(TInt i(0);i<iSamplerAttributes->Count();i++)
+            {
+            // set the attributes for each sampler loaded in the UI
+            RProfiler::SetSamplerAttributes(iSamplerAttributes->At(i));
+            }
+        
+        // try to launch sampling again
+        RProfiler::StartSampling(profilingMode);
+        }
+    
+    // get selected writer
+    RProfiler::GetActiveWriter(activeWriterDes);
+    CnvUtfConverter::ConvertFromUnicodeToUtf8(writer8, activeWriterDes);
+    
+    // check that output mode has not changed for a problem with trace file name
+    // problem cases:
+    // - trace file name and/or path false
+    // - disk full, cannot write to given location
+    // - false drive, e.g. x:
+    if(writer8.CompareF(iGeneralAttributes.iTraceOutput) != 0)
+        {
+        // save change also to general attributes
+        iGeneralAttributes.iTraceOutput.Copy(writer8);
+        // show an info popup showing the logging method
+        iMainContainer->ShowWriterInfoPopupL(KWarningNote);
+        }
+    else
+        {
+        // show an info popup showing the logging method
+        iMainContainer->ShowWriterInfoPopupL(KNullDesC);
+        }
+    
+    // update the view
+    RefreshViewL();    
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::DeleteAllSamplerItemsL()
+    {
+    DeleteAllSamplerItems();
+    
+    RefreshViewL();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::StopAllSamplerItemsL()
+    {
+    // show an info popup showing the logging method
+    iMainContainer->ShowWriterInfoPopupL(KNullDesC);
+    
+    // Stop profiling process through CS session
+    RProfiler::StopSampling();
+    
+    RefreshViewL();
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::RefreshViewL(TBool aClearSelection)
+    {
+    // refresh the main list view
+    if (iMainContainer && iDrawState == EDrawStateMain && iMainContainer->ListBox())
+        {
+        // clear selections if any
+        iMainContainer->ListBox()->ClearSelection();
+        
+        // set item index to 0
+        if (aClearSelection)
+            iMainContainer->ListBox()->SetCurrentItemIndex(0); 
+        
+        // set text items
+        iMainContainer->SetListBoxTextArrayL(GenerateListBoxItemTextArrayL());
+        }
+    }
+        
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::AppendToSamplerItemListL(TSamplerAttributes& aItem)
+    {
+    // append single sampler item into sampler item list
+    if (iSamplerItemList)
+        iSamplerItemList->AppendL( aItem );
+    else
+        User::Leave(KErrNotReady);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::DisableOrEnableFromSamplerItemListL(TInt aIndex)
+    {
+    if (iSamplerItemList)
+        {
+        if (iSamplerItemList->Count() > aIndex && aIndex >= 0)
+            {
+            TSamplerAttributes& attr = iSamplerItemList->At(aIndex);
+            if (attr.iEnabled)
+                {
+                attr.iEnabled = EFalse;
+                }
+            else if (!attr.iEnabled)
+                {
+                attr.iEnabled = ETrue;
+                }
+            // save settings to engine
+            RProfiler::SetSamplerAttributes(attr);
+            }
+        else
+            User::Leave(KErrNotFound);
+        }
+    else
+        {
+        User::Leave(KErrNotReady);
+        }
+
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiModel::SamplerItemCount() const
+    {
+    TInt count(0);
+    
+    if (iSamplerItemList)
+        count = iSamplerItemList->Count();
+    
+    return count;
+    }
+    
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::DeleteAllSamplerItems()
+    {
+    // reset sampler array
+    iSamplerItemList->Reset();    
+    }  
+          
+// --------------------------------------------------------------------------------------------
+
+CDesCArray* CProfilerGuiModel::GenerateListBoxItemTextArrayL()
+    {
+    CDesCArray* textArray = new(ELeave) CDesCArrayFlat(64);
+    CleanupStack::PushL(textArray);
+
+    _LIT(KEntryTemplateRedIcon,   "1\t%S\t\t");
+    _LIT(KEntryTemplateGreenIcon, "2\t%S\t\t");
+    
+    TSamplerAttributes attr;
+    TInt itemCount(SamplerItemCount()); 
+    for (TInt i(0); i<itemCount; i++)
+        {
+        // add description from each entry
+        TBuf<512> textEntry;
+        TBuf<512> description; 
+
+        attr = iSamplerItemList->At(i);
+        
+        description.Copy(attr.iName);
+        
+        if (attr.iEnabled)
+            textEntry.Format(KEntryTemplateGreenIcon, &description);
+        else
+            textEntry.Format(KEntryTemplateRedIcon, &description);
+        
+        textArray->AppendL(textEntry);
+        }    
+    
+    CleanupStack::Pop(); //textArray
+    return textArray;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CProfilerGuiModel::GetSelectedItemEnabled()
+    {
+    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
+    
+    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
+        {
+        return iSamplerItemList->At(currentItemIndex).iEnabled;
+        }
+    return EFalse;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CProfilerGuiModel::GetSelectedItemHasSettings()
+    {
+    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
+    
+    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
+        {
+        if(iSamplerItemList->At(currentItemIndex).iItemCount != 0 || 
+                iSamplerItemList->At(currentItemIndex).iSampleRate != KErrNotFound)
+            {
+            return ETrue;
+            }
+        else
+            {
+            return EFalse;
+            }
+        }
+    return EFalse;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CProfilerGuiModel::GetSelectedItemHidden()
+    {
+    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
+    
+    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
+        {
+        if(iSamplerItemList->At(currentItemIndex).iIsHidden)
+            {
+            return ETrue;
+            }
+        else
+            {
+            return EFalse;
+            }
+        }
+    return EFalse;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiModel::EditSelectedSamplerL(TInt index)
+    {
+    TSamplerAttributes sampler;
+    if(SamplerItemCount() > index && index >= 0)
+        {
+        sampler = iSamplerItemList->At(index);
+        return EditSamplerL(sampler);
+        }
+    return KErrNone;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::SelectedSamplerInfoL(TInt index)
+    {
+    if(SamplerItemCount() > index && index >= 0)
+        {
+        SamplerInfoL(iSamplerItemList->At(index));
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::ShowItemActionMenuL()
+    {
+    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
+    
+    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
+        {
+        // show a query dialog    
+        TInt queryIndex(0);
+        CAknListQueryDialog* listQueryDlg = new(ELeave) CAknListQueryDialog(&queryIndex);
+        TInt resource = 0;
+        TSamplerAttributes sampler = iSamplerItemList->At(currentItemIndex);
+        
+        // check if sampler enabled
+        if(sampler.iEnabled)
+        	{
+        	resource = R_ITEM_ACTION_QUERY_ENABLED;
+            }
+        else
+        	{
+        	resource = R_ITEM_ACTION_QUERY_DISABLED;
+        	}
+        
+        // check if sampler plugin hidden => don't allow starting and stopping of sampling
+        if(sampler.iIsHidden)
+        	{
+        	resource = R_ITEM_ACTION_QUERY_HIDDEN_START_STOP;
+        	}
+        else if(( sampler.iItemCount == 0 && 
+        		sampler.iSampleRate == KErrNotFound ) && 
+        		sampler.iEnabled )
+            {
+            resource = R_ITEM_ACTION_QUERY_HIDDEN_SETTINGS_ENABLED;
+            }
+        else if(( sampler.iItemCount == 0 && 
+                sampler.iSampleRate == KErrNotFound ) && 
+                !sampler.iEnabled )
+            {
+            resource = R_ITEM_ACTION_QUERY_HIDDEN_SETTINGS_DISABLED;
+            }
+        
+        // execute query dialog with the given resource
+        if (listQueryDlg->ExecuteLD(resource))
+            {
+            if(!sampler.iIsHidden)
+            	{
+            	if(sampler.iItemCount != 0 || 
+            	        sampler.iSampleRate != KErrNotFound )
+            	    {
+                    // enable/disable sampler
+                    if (queryIndex == EItemActionMenuTypeEnable)
+                        {
+                        DisableOrEnableSelectedOrHighlightedItemsL();
+                        }
+                    // edit sampler settings
+                    else if (queryIndex == EItemActionMenuTypeEditSettings - 1)
+                        {
+                        EditSamplerL(sampler);
+                        }
+                    // info
+                    else if (queryIndex == EItemActionMenuTypeInfo - 1)
+                        {
+                        SamplerInfoL(sampler);
+                        }
+            	    }
+            	else
+            	    {
+                    // special case, use raw query indexes
+                     if (queryIndex == 0)
+                         {
+                         DisableOrEnableSelectedOrHighlightedItemsL();
+                         }
+                     else if (queryIndex == 1)
+                         {
+                         SamplerInfoL(sampler);
+                         }
+            	    }
+            	}
+            else
+				{
+				if(sampler.iItemCount != 0 || 
+				        sampler.iSampleRate != KErrNotFound)
+					{
+					// special case, use raw query indexes
+					// edit sampler settings
+					if (queryIndex == 0)
+						{
+						EditSamplerL(sampler);
+						}
+					// sampler info
+					else if (queryIndex == 1)
+						{
+						SamplerInfoL(sampler);
+						}
+					}
+				else
+					{
+					// only sampler info available if hidden and no setting items to be set
+					if (queryIndex == 0)
+						{
+						SamplerInfoL(sampler);
+						}
+					
+					}
+				}
+            }
+        }
+    }
+
+void CProfilerGuiModel::DisableOrEnableSelectedOrHighlightedItemsL()
+    {
+    const CArrayFix<TInt>* selectionIndexes = iMainContainer->ListBoxSelectionIndexes();
+
+    // by default use selected items
+    if (selectionIndexes && selectionIndexes->Count() > 0)
+        {
+        TInt ref(0);
+        TKeyArrayFix key(0, ECmpTUint16);
+        TInt index(0);
+
+        for (TInt i=0; i<SamplerItemCount(); i++)
+            {
+            ref = i;
+
+            if (selectionIndexes->Find(ref, key, index) == 0)  
+                {
+                DisableOrEnableFromSamplerItemListL(i);
+                }
+            }
+        
+        RefreshViewL(EFalse);
+        }
+    
+    // or if none selected, use the current item index
+    else
+        {
+        TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
+        
+        if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
+            {
+            DisableOrEnableFromSamplerItemListL(currentItemIndex);
+            
+            RefreshViewL(EFalse);
+            }
+        }  
+    }
+
+void CProfilerGuiModel::LoadPluginsL()
+	{
+    // get samplers from Profiler Engine (client-server session) 
+	// and add the to the samplers list for the first time
+    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - get sampler plugins"));
+    TInt err = RProfiler::GetSamplerAttributes(*iSamplerAttributes);
+    
+    // check if engine provided a list of samplers
+    if( err != KErrNone )
+        {
+        // could not get samplers from engine
+        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - failed to connect engine"));
+        }
+    else
+        {
+        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - adding new samplers into view"));
+        AddNewSamplersL(*iSamplerAttributes);
+        }
+    
+    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - exit"));
+	}
+
+// --------------------------------------------------------------------------------------------
+
+TInt CProfilerGuiModel::LoadGeneralSettingsL()
+    {
+    // local variable for getting saved settings from profiler engine
+    TGeneralAttributes generalAttr;
+    TInt err(KErrNone);
+    
+    // before loading saved settings (from settings file) set the default values 
+    iGeneralAttributes.iTraceOutput.Copy(KTraceOutput);
+    iGeneralAttributes.iTraceFilePrefix.Copy(KProfilerDefaultPrefix);
+    iGeneralAttributes.iSaveFileDrive.Copy(KProfilerDefaultDrive);
+    iGeneralAttributes.iTimedSamplingPeriod = KDefaultTimedSamplingPeriod;
+    
+    // request to 
+    err = RProfiler::GetGeneralAttributes(generalAttr);
+    
+    // check that request succesfull
+    if( err != KErrNone )
+        {
+        // could not connect profiler engine, use 
+        return err;
+        }
+    
+    // check if saved settings different than the default
+    if(generalAttr.iTraceOutput.MatchF(iGeneralAttributes.iTraceOutput) == KErrNotFound)
+        {
+        iGeneralAttributes.iTraceOutput.Copy(generalAttr.iTraceOutput);
+        }
+
+    if(generalAttr.iTraceFilePrefix.MatchF(iGeneralAttributes.iTraceFilePrefix) == KErrNotFound)
+        {
+        iGeneralAttributes.iTraceFilePrefix.Copy(generalAttr.iTraceFilePrefix);
+        }
+
+    if(generalAttr.iSaveFileDrive.MatchF(iGeneralAttributes.iSaveFileDrive) == KErrNotFound)
+        {
+        iGeneralAttributes.iSaveFileDrive.Copy(generalAttr.iSaveFileDrive);
+        }
+    
+    if( generalAttr.iTimedSamplingPeriod > 0)
+        {
+        iGeneralAttributes.iTimedSamplingPeriod = generalAttr.iTimedSamplingPeriod;
+        }
+    
+    return err;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::SaveGeneralSettingsL()
+    {
+    TInt err(KErrNone);
+    
+    // save general attributes to Profiler Engine
+    err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
+    
+    // check if save failed
+    if(err == KErrNotFound)
+        {
+        // profiler stopped (e.g. from eshell) and must be restarted 
+        LaunchProfilerEngineL();
+        
+        err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
+        if(err != KErrNone)
+            {
+            // leave no use to continue
+            User::Leave(err);
+            }
+        }
+    }
+
+void CProfilerGuiModel::SetMainView(CProfilerGuiMainView* aMainView)
+    {
+    iMainView = aMainView;
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiModel::HandleProfilerStatusChange( KProfilerStatus aStatus )
+    {
+    iState = aStatus;
+    if( aStatus == EIdle )
+        {
+        iMainContainer->ShowWriterInfoPopupL(KNullDesC);
+        // set plugin list back to enabled
+        iMainContainer->SetDimmed(EFalse);
+        }
+    TRAP_IGNORE(iMainView->UpdateStatusPaneL(aStatus));
+    }
+
+void CProfilerGuiModel::HandleProfilerErrorL( TInt aError )
+    {
+    TBuf<64> errorMsg;
+    _LIT(KErrorMessage, "Error: ");
+    _LIT(KNoMemory, "Cannot write to file, check settings");
+    
+    errorMsg.Copy(KErrorMessage);
+    // message from pwr sampler
+    if( aError < -1000 )
+        {
+        errorMsg.Append(_L("Stop other power measurement tools!"));
+        }
+    else if( aError == KErrAlreadyExists || aError == 11 )
+        {
+        errorMsg.Append(_L("Close old Profiler before start!"));
+        }
+    else if( aError == KErrNotReady )
+        {
+        errorMsg.Append(_L("Memory card removed, failed to write!"));
+        }
+    else if( aError == KErrPathNotFound )
+        {
+        errorMsg.Append(_L("Given trace data location does not exist"));
+        }
+    else
+        {
+        if( aError == KErrNoMemory || 
+                aError == KErrOverflow || 
+                aError == KErrDirFull || 
+                aError == KErrDiskFull || 
+                aError == KErrNotReady )
+            {
+            errorMsg.Append(KNoMemory);
+            }
+        else
+            {
+            errorMsg.Append(_L("code: "));
+            errorMsg.AppendNum(aError);
+            }
+        }
+    // simply show an error note
+    CAknErrorNote* note = new(ELeave) CAknErrorNote();
+    note->ExecuteLD(errorMsg);
+    
+    // set state idle in all error cases
+    iState = MProfilerStatusObserver::EIdle;
+    
+    // update status pane
+    iMainView->UpdateStatusPaneL(iState);
+    
+    // set plugin list back to enabled
+    iMainContainer->SetDimmed(EFalse);
+    
+    // refresh and set menus etc. in correct state
+    RefreshViewL();
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_samplersettingsviewdlg.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,479 @@
+/*
+* 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 FILES
+#include "profiler_gui_samplersettingsviewdlg.h"
+#include "profiler_gui_model.h"
+#include "profiler_gui.hrh"
+#include "profiler_gui_std.h"
+#include <piprofilerui.rsg>
+
+#include <aknsettingitemlist.h>
+#include <CAknMemorySelectionSettingItem.h> 
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <StringLoader.h>
+#include <aknnotewrappers.h> 
+
+// LITERALS
+_LIT8(KCPUSamplerName, "gpp");
+_LIT(KEmptySettingItem, "");
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CProfilerSamplerSettingsViewDlg* CProfilerSamplerSettingsViewDlg::NewL(TSamplerAttributes& aSettings)
+    {
+    CProfilerSamplerSettingsViewDlg* self = new(ELeave) CProfilerSamplerSettingsViewDlg(aSettings);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerSamplerSettingsViewDlg::~CProfilerSamplerSettingsViewDlg()
+    {
+    // restore default navi pane
+    if(iNaviContainer)
+        iNaviContainer->Pop();
+    
+    if (iSettingItemArray)
+        {
+        iSettingItemArray->ResetAndDestroy();
+        delete iSettingItemArray; 
+        }
+    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerSamplerSettingsViewDlg::CProfilerSamplerSettingsViewDlg(TSamplerAttributes& aSettings) 
+	: 	iSettings(aSettings)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::ConstructL()
+    {
+    // construct a menu bar
+    CAknDialog::ConstructL(R_PROFILER_SAMPLER_SETTINGS_MENUBAR);
+   
+    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+    
+    // set empty navi pane label
+    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+    iNaviContainer->PushDefaultL();
+    
+    TBuf<64> settingsTitle;
+
+    settingsTitle.Zero();
+    settingsTitle.Copy(iSettings.iName);
+    
+    // set title text
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL( settingsTitle );
+
+    iItemCount = iSettings.iItemCount;
+    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
+    {
+    switch (aEventType)
+        {
+        case EEventEnterKeyPressed:
+        case EEventItemDoubleClicked:
+            ShowSettingPageL(EFalse);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
+    {
+    iListBox->SetCurrentItemIndex(0);
+
+    SetVisibilitiesOfSettingItemsL();   
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::ProcessCommandL(TInt aCommandId)
+    {
+    CAknDialog::ProcessCommandL(aCommandId);
+
+    switch (aCommandId)
+        {
+        case EProfilerGuiCmdSettingsChange:
+            ShowSettingPageL(ETrue);
+            break;
+        case EProfilerGuiCmdSettingsExit:
+            TryExitL(EAknCmdExit);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CProfilerSamplerSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+
+    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
+    }    
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::PreLayoutDynInitL()
+    {
+    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EProfilerSamplerSettingItemList) );
+    iListBox->SetMopParent(this);
+    iListBox->CreateScrollBarFrameL(ETrue);
+    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+    iListBox->SetListBoxObserver(this);
+
+    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
+
+    CTextListBoxModel* model = iListBox->Model();
+    model->SetItemTextArray(iSettingItemArray);
+    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+    UpdateListBoxL();    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CProfilerSamplerSettingsViewDlg::OkToExitL(TInt aButtonId)
+    {
+    // save all settings when exiting, only numeric values are needed to saved since copied from TBuf
+    for(TInt i(1);i<iItemCount+1;i++)
+    	{
+    	if(iSettingItemArray->At(i)->IsHidden() == EFalse)
+    	    {
+            switch(i)
+    	        {
+                case 1:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem1.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem1.iValue.Num(iItemBuf[i]);
+                        }
+                    break;
+                    }
+                case 2:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem2.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem2.iValue.Num(iItemBuf[i]);
+                        }
+                    break;
+                    }
+                case 3:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem3.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem3.iValue.Num(iItemBuf[i]);
+                        }
+                    break;
+                    }
+                case 4:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem4.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem4.iValue.Num(iItemBuf[i]);
+                        }
+
+                    break;
+                    }
+                case 5:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem5.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem5.iValue.Num(iItemBuf[i]);
+                        }
+
+                    break;
+                    }
+                case 6:
+                    {
+                    // check if settings value type integer
+                    if(iSettings.iSettingItem6.iType == TSettingItem::ESettingItemTypeInt)
+                        {
+                        iSettings.iSettingItem6.iValue.Num(iItemBuf[i]);
+                        }
+
+                    break;
+                    }
+    	        }
+    	    }
+    	}
+	return CAknDialog::OkToExitL(aButtonId);
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
+    {
+    TInt listIndex = iListBox->CurrentItemIndex();
+    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
+    CAknSettingItem* item = iSettingItemArray->At(realIndex);
+    item->EditItemL(aCalledFromMenu);
+    item->StoreL();
+    SetVisibilitiesOfSettingItemsL();
+    DrawNow();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
+    {
+    if (iSettingItemArray->Count() > 0)
+        {
+        if(iSettings.iSampleRate > 0)
+        	{
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQuerySampleRate])->SetHidden(EFalse);
+        	}
+        else
+        	{
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQuerySampleRate])->SetHidden(ETrue);
+        	}
+        if(iItemCount>0)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem1])->SetHidden(EFalse);
+        if(iItemCount>1)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem2])->SetHidden(EFalse);
+        if(iItemCount>2)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem3])->SetHidden(EFalse);
+        if(iItemCount>3)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem4])->SetHidden(EFalse);
+        if(iItemCount>4)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem5])->SetHidden(EFalse);
+        if(iItemCount>5)
+        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem6])->SetHidden(EFalse);
+
+        iSettingItemArray->RecalculateVisibleIndicesL();
+        iListBox->HandleItemAdditionL();
+        iListBox->UpdateScrollBarsL();
+        }
+    }   
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::UpdateListBoxL()
+    {
+    iSettingItemArray->ResetAndDestroy();
+    
+    // create items
+    TInt ordinal(0);
+    
+    AddSettingItemL(EProfilerGuiGenericSamplerQuerySampleRate,
+					R_SAMPLE_RATE_SETTING_TITLE,
+                    R_SAMPLER_RATE_SETTING_PAGE,
+                    NULL,
+                    ordinal++);    
+    
+    if(iItemCount>0)
+	AddSettingItemL(EProfilerGuiGenericSamplerQueryItem1,
+					R_ITEM1_SETTING_TITLE,
+					NULL,
+					NULL,
+					ordinal++);
+    if(iItemCount>1)
+    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem2,
+					R_ITEM2_SETTING_TITLE,
+					NULL,
+                    NULL,
+                    ordinal++);
+    if(iItemCount>2)
+    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem3,
+					R_ITEM3_SETTING_TITLE,
+					NULL,
+                    NULL,
+                    ordinal++);
+    if(iItemCount>3)
+    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem4,
+					R_ITEM4_SETTING_TITLE,
+					NULL,
+                    NULL,
+                    ordinal++);
+    if(iItemCount>4)
+    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem5,
+					R_ITEM5_SETTING_TITLE,
+					NULL,
+                    NULL,
+                    ordinal++);
+    if(iItemCount>5)
+    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem6,
+					R_ITEM6_SETTING_TITLE,
+					NULL,
+                    NULL,
+                    ordinal++);
+
+    SetVisibilitiesOfSettingItemsL(); 
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CAknSettingItem* CProfilerSamplerSettingsViewDlg::GetSettingItemL(TSettingItem& aItem, TInt aIndex, TInt& aSettingPageResource)
+    {
+    CAknSettingItem* settingItem = NULL;
+    
+    // set default setting page dialog style resource
+    aSettingPageResource = R_GENERIC_TEXT_SETTING_PAGE;
+    
+    // check if setting item type integer
+    if(aItem.iType == TSettingItem::ESettingItemTypeInt)
+        {
+        TLex* lex = new TLex(aItem.iValue);
+        // check if value valid
+        if(lex->Val(iItemBuf[aIndex]) != KErrNone)
+            {
+            // if value not valid set to 0 
+            iItemBuf[aIndex] = 0;
+            }
+        settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aIndex, iItemBuf[aIndex]);
+        aSettingPageResource = R_NUMERIC_SETTING_PAGE;
+        delete lex;
+        return settingItem;
+        }
+    else    // else manipulate as a text setting
+        {
+        settingItem = new(ELeave) CAknTextSettingItem(aIndex, aItem.iValue);
+        settingItem->SetEmptyItemTextL(KEmptySettingItem); 
+        return settingItem;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerSamplerSettingsViewDlg::AddSettingItemL(TInt aId,
+                                                 TInt aTitleResource,
+                                                 TInt aSettingPageResource,
+                                                 TInt aAssociatedResource,
+                                                 TInt aOrdinal)
+    {
+    // create a setting item
+    CAknSettingItem* settingItem = NULL;
+
+    TBuf<KMaxSettingUITextLength> ptr;
+    switch(aId)
+        {
+        case EProfilerGuiGenericSamplerQuerySampleRate:
+            {
+            settingItem = new (ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iSampleRate);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem1:
+            {
+            ptr.Copy(iSettings.iSettingItem1.iUIText);
+            settingItem = GetSettingItemL(iSettings.iSettingItem1, aId, aSettingPageResource);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem2:
+            {
+            ptr.Copy(iSettings.iSettingItem2.iUIText); 
+            settingItem = GetSettingItemL(iSettings.iSettingItem2, aId, aSettingPageResource);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem3:
+            {
+            ptr.Copy(iSettings.iSettingItem3.iUIText);
+            settingItem = GetSettingItemL(iSettings.iSettingItem3, aId, aSettingPageResource);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem4:
+            {
+            ptr.Copy(iSettings.iSettingItem4.iUIText); 
+            settingItem = GetSettingItemL(iSettings.iSettingItem4, aId, aSettingPageResource);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem5:
+            {
+            ptr.Copy(iSettings.iSettingItem5.iUIText);
+            settingItem = GetSettingItemL(iSettings.iSettingItem5, aId, aSettingPageResource);
+            break;
+            }
+        case EProfilerGuiGenericSamplerQueryItem6:
+            {
+            ptr.Copy(iSettings.iSettingItem6.iUIText); 
+            settingItem = GetSettingItemL(iSettings.iSettingItem6, aId, aSettingPageResource);
+            break;
+            }
+		default:
+			{
+			// Id not supported
+			User::Leave(KErrNotSupported);
+			break;
+			}
+        }
+
+    CleanupStack::PushL(settingItem);
+
+    // get title text
+    HBufC* itemTitle;
+    
+    if( ptr.Compare(KNullDesC) == 0 )
+        {
+        itemTitle = StringLoader::LoadLC(aTitleResource);
+        
+        // special case: check if CPU sampler
+        if(iSettings.iShortName.CompareF(KCPUSamplerName) == 0)
+            {
+            // change setting page using different value range, since > 10000 ms rates are too big
+            aSettingPageResource = R_CPU_SAMPLER_RATE_SETTING_PAGE;
+            }
+
+        // construct the setting item
+        settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
+                                EAknCtPopupSettingList, NULL, aAssociatedResource);
+        // append the setting item to settingitem array
+        iSettingItemArray->InsertL(aOrdinal, settingItem);
+
+        CleanupStack::PopAndDestroy(); //itemTitle
+        }
+    else
+        {
+        // construct the setting item
+        settingItem->ConstructL(EFalse, aOrdinal, ptr, NULL, aSettingPageResource,
+                                EAknCtPopupSettingList, NULL, aAssociatedResource);
+
+        // append the setting item to settingitem array
+        iSettingItemArray->InsertL(aOrdinal, settingItem);
+        }
+
+    CleanupStack::Pop(); //settingItem
+    }
+
+// --------------------------------------------------------------------------------------------
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/avkon/src/profiler_gui_settingsviewdlg.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,386 @@
+/*
+* 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 FILES
+#include "profiler_gui_settingsviewdlg.h"
+#include "profiler_gui_model.h"
+#include "profiler_gui.hrh"
+#include "profiler_gui_std.h"
+#include <piprofilerui.rsg>
+
+#include <aknsettingitemlist.h>
+#include <CAknMemorySelectionSettingItem.h> 
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <StringLoader.h>
+#include <aknnotewrappers.h> 
+
+// LITERALS
+_LIT8(KDebugOutput, "debug_output");
+_LIT8(KFileSystem, "file_system");
+_LIT(KEmptySettingItem, "");
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CProfilerGuiSettingsViewDlg* CProfilerGuiSettingsViewDlg::NewL(TGeneralAttributes& aSettings)
+    {
+    CProfilerGuiSettingsViewDlg* self = new(ELeave) CProfilerGuiSettingsViewDlg(aSettings);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiSettingsViewDlg::~CProfilerGuiSettingsViewDlg()
+    {
+    // restore default navi pane
+    if(iNaviContainer)
+        iNaviContainer->Pop();
+    
+    if (iSettingItemArray)
+        {
+        iSettingItemArray->ResetAndDestroy();
+        delete iSettingItemArray; 
+        }
+    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+CProfilerGuiSettingsViewDlg::CProfilerGuiSettingsViewDlg(TGeneralAttributes& aSettings) : iSettings(aSettings)
+    {
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::ConstructL()
+    {
+    // construct a menu bar
+    CAknDialog::ConstructL(R_PROFILER_GUI_SETTINGS_MENUBAR);
+   
+    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+    
+    // set empty navi pane label
+    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+    iNaviContainer->PushDefaultL();
+    
+    // set title text
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    tp->SetTextL( _L("Settings") );
+
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
+    {
+    switch (aEventType)
+        {
+        case EEventEnterKeyPressed:
+        case EEventItemDoubleClicked:
+            ShowSettingPageL(EFalse);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
+    {
+    iListBox->SetCurrentItemIndex(0);
+
+    SetVisibilitiesOfSettingItemsL();   
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::ProcessCommandL(TInt aCommandId)
+    {
+    CAknDialog::ProcessCommandL(aCommandId);
+
+    switch (aCommandId)
+        {
+        case EProfilerGuiCmdSettingsChange:
+            ShowSettingPageL(ETrue);
+            break;
+        case EProfilerGuiCmdSettingsExit:
+            TryExitL(EAknCmdExit);
+            break;
+        default:
+            break;
+        }
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CProfilerGuiSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    /*
+    if (iTabGroup == NULL)
+        {
+        return EKeyWasNotConsumed;
+        }
+        */
+/*
+    TInt active = iTabGroup->ActiveTabIndex();
+    TInt count = iTabGroup->TabCount();
+
+    switch ( aKeyEvent.iCode )
+        {
+        case EKeyLeftArrow:
+            if (active > 0)
+                {
+                active--;
+                iTabGroup->SetActiveTabByIndex(active);
+                TabChangedL(active); 
+                }
+            break;
+        
+        case EKeyRightArrow:
+            if((active + 1) < count)
+                {
+                active++;
+                iTabGroup->SetActiveTabByIndex(active);
+                TabChangedL(active); 
+                }
+            break;
+        }
+*/
+    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
+    }    
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::PreLayoutDynInitL()
+    {
+    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EProfilerGuiSettingItemList) );
+    iListBox->SetMopParent(this);
+    iListBox->CreateScrollBarFrameL(ETrue);
+    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+    iListBox->SetListBoxObserver(this);
+
+    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
+
+    CTextListBoxModel* model = iListBox->Model();
+    model->SetItemTextArray(iSettingItemArray);
+    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+    UpdateListBoxL();    
+    }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CProfilerGuiSettingsViewDlg::OkToExitL(TInt aButtonId)
+    {
+    // save settings to iSettings before exiting
+    
+    // check if trace output target changed
+    if(iTraceOutput == EOutputToDebugPort)
+        {
+        iSettings.iTraceOutput.Copy(KDebugOutput);
+        }
+    else
+        {
+        iSettings.iTraceOutput.Copy(KFileSystem);
+        }
+    
+    // save trace file prefix
+    if(iFilePrefix.CompareF(KNullDesC) != 0)
+        {
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iSettings.iTraceFilePrefix, iFilePrefix);
+        }
+    
+    // save the drive 
+    if(iSaveDrive.CompareF(KNullDesC) != 0)
+        {
+        CnvUtfConverter::ConvertFromUnicodeToUtf8(iSettings.iSaveFileDrive, iSaveDrive);
+        }
+    
+    return CAknDialog::OkToExitL(aButtonId);
+    }
+
+
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
+    {
+    TInt listIndex = iListBox->CurrentItemIndex();
+    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
+    CAknSettingItem* item = iSettingItemArray->At(realIndex);
+    item->EditItemL(aCalledFromMenu);
+    item->StoreL();
+    SetVisibilitiesOfSettingItemsL();
+    DrawNow();
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
+    {
+
+    // check if setting item array contains more than 0 items
+    if (iSettingItemArray->Count() > 0)
+        {
+//        ((*iSettingItemArray)[ESettingListItemPluginNameMode])->SetHidden(ETrue);
+        ((*iSettingItemArray)[ESettingListItemPluginTraceOutput])->SetHidden(EFalse);
+        if(iTraceOutput == EOutputToDebugPort)
+        	{
+        	((*iSettingItemArray)[ESettingListItemPluginSaveFileDrive])->SetHidden(ETrue);
+        	((*iSettingItemArray)[ESettingListItemPluginTraceFilePrefix])->SetHidden(ETrue);
+        	}
+        else 
+        	{
+        	((*iSettingItemArray)[ESettingListItemPluginSaveFileDrive])->SetHidden(EFalse);
+        	((*iSettingItemArray)[ESettingListItemPluginTraceFilePrefix])->SetHidden(EFalse);
+        	}
+//        ((*iSettingItemArray)[ESettingListItemPluginTraceMode])->SetHidden(ETrue);
+
+        iSettingItemArray->RecalculateVisibleIndicesL();
+        iListBox->HandleItemAdditionL();
+        iListBox->UpdateScrollBarsL();
+        }
+    }   
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::UpdateListBoxL()
+    {
+    iSettingItemArray->ResetAndDestroy();
+
+    // create items
+    TInt ordinal(0);
+    
+//    AddSettingItemL(ESettingListItemPluginNameMode,
+//                    R_PLUGIN_NAME_MODE_SETTING_TITLE,
+//                    R_PLUGIN_NAME_MODE_SETTING_PAGE,
+//                    R_PLUGIN_NAME_MODE_SETTING_TEXTS,
+//                    ordinal++);    
+
+    AddSettingItemL(ESettingListItemPluginTraceOutput,
+                    R_TRACE_OUTPUT_SETTING_TITLE,
+                    R_TRACE_OUTPUT_SETTING_PAGE,
+                    R_TRACE_OUTPUT_SETTING_TEXTS,
+                    ordinal++);
+    
+    AddSettingItemL(ESettingListItemPluginSaveFileDrive,
+                    R_SAVE_FILE_DRIVE_SETTING_TITLE,
+                    R_SAVE_FILE_DRIVE_SETTING_PAGE,
+                    NULL, //R_SAVE_FILE_DRIVE_SETTING_TEXTS,
+                    ordinal++);
+
+    AddSettingItemL(ESettingListItemPluginTraceFilePrefix,
+                    R_SAVE_FILE_PREFIX_SETTING_TITLE,
+                    R_SAVE_FILE_PREFIX_SETTING_PAGE,
+                    NULL,
+                    ordinal++);
+    
+    AddSettingItemL(ESettingListItemPluginSamplingTime,
+                    R_TIMED_SAMPLING_PERIOD_SETTING_TITLE,
+                    R_TIMED_SAMPLING_PERIOD_SETTING_PAGE,
+                    NULL,
+                    ordinal++);
+    
+    
+
+//    AddSettingItemL(ESettingListItemPluginTraceMode,
+//                    R_TRACE_MODE_SETTING_TITLE,
+//                    R_TRACE_MODE_SETTING_PAGE,
+//                    R_TRACE_MODE_SETTING_TEXTS,
+//                    ordinal++);
+
+    SetVisibilitiesOfSettingItemsL(); 
+    }
+
+// --------------------------------------------------------------------------------------------
+
+void CProfilerGuiSettingsViewDlg::AddSettingItemL(TInt aId,
+                                                 TInt aTitleResource,
+                                                 TInt aSettingPageResource,
+                                                 TInt aAssociatedResource,
+                                                 TInt aOrdinal)
+    {
+    // create a setting item
+    CAknSettingItem* settingItem = NULL;
+    
+    switch (aId)
+        {
+
+        case ESettingListItemPluginSaveFileDrive:
+            {
+            CnvUtfConverter::ConvertToUnicodeFromUtf8(iSaveDrive, iSettings.iSaveFileDrive);
+            settingItem = new(ELeave) CAknTextSettingItem(aId, iSaveDrive);
+            settingItem->SetEmptyItemTextL(KEmptySettingItem); 
+            break;
+            }
+        case ESettingListItemPluginTraceOutput:
+            if(iSettings.iTraceOutput.MatchF(KDebugOutput) != KErrNotFound)
+                {
+                iTraceOutput = EOutputToDebugPort;
+                }
+            else
+                {
+                iTraceOutput = EOutputToFileSystem;
+                }
+            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iTraceOutput); 
+
+            break;
+
+        case ESettingListItemPluginTraceFilePrefix:
+            {
+            CnvUtfConverter::ConvertToUnicodeFromUtf8(iFilePrefix, iSettings.iTraceFilePrefix);
+            settingItem = new(ELeave) CAknTextSettingItem(aId, iFilePrefix);
+            settingItem->SetEmptyItemTextL(KEmptySettingItem); 
+            break;
+            }
+        case ESettingListItemPluginSamplingTime:
+            {
+            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iTimedSamplingPeriod);
+            break;
+            }
+        default:
+            User::Panic(_L("NotSetItem"), 50);
+            break;
+
+        }
+        
+    CleanupStack::PushL(settingItem);
+
+    // get title text
+    HBufC* itemTitle = StringLoader::LoadLC(aTitleResource);
+
+    // construct the setting item
+    settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
+                            EAknCtPopupSettingList, NULL, aAssociatedResource);
+    
+    // append the setting item to settingitem array
+    iSettingItemArray->InsertL(aOrdinal, settingItem);
+
+    CleanupStack::PopAndDestroy(); //itemTitle
+    CleanupStack::Pop(); //settingItem
+    }
+
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/hb.pro	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2010 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: 
+#
+#
+
+
+TEMPLATE = app
+TARGET = PIProfilerUI
+DEPENDPATH += ./src
+INCLUDEPATH += inc
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+load(hb.prf) 
+symbian:CONFIG -= symbian_i18n 
+
+# Input
+HEADERS += 	./inc/pimainview.h \
+			./inc/piprofilerengineprivate.h \
+			./inc/pluginattributes.h \
+			./inc/notifications.h \
+			./inc/pisettingsview.h \
+			./inc/pimainwindow.h \
+			./inc/generalattributes.h \
+			./inc/piprofilerengine.h
+SOURCES += 	./src/pimainview.cpp \
+			./src/piprofilerengineprivate.cpp \
+			./src/main.cpp \
+			./src/pluginattributes.cpp \
+			./src/notifications.cpp \
+			./src/pisettingsview.cpp \
+			./src/pimainwindow.cpp \
+			./src/piprofilerengine.cpp 
+			
+			
+RESOURCES += piprofiler.qrc
+
+
+symbian: {
+    TARGET.UID2 = 0x100039CE
+    TARGET.UID3 = 0x2001E5AE
+    
+    BLD_INF_RULES.prj_exports += "./rom/piprofilerui_hb.iby \
+    	CORE_IBY_EXPORT_PATH(tools,piprofilerui.iby)"
+    
+	TARGET.CAPABILITY = ALL -TCB
+
+	LIBS += -lcharconv -lbafl -lsysutil -lefsrv
+    
+    ICON = ../icons/qgn_menu_piprofilerui.svg 
+    
+} else {
+    error("Only Symbian supported!")
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/generalattributes.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef GENERALATTRIBUTES_H_
+#define GENERALATTRIBUTES_H_
+/*
+ * 
+ * GeneralAttributes class definition, internal settings format
+ *  
+ */
+class GeneralAttributes
+{
+public:
+    QString mTraceOutput;
+    QString mTraceFilePrefix;
+    QString mSaveFileDrive;
+    int mTimedSamplingPeriod;
+};
+
+#endif /* GENERALATTRIBUTES_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/notifications.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef NOTIFICATIONS_H_
+#define NOTIFICATIONS_H_
+
+#include <QString> 
+
+/**
+ * Notifications class for viewing notification messages.
+ */
+
+class Notifications
+{
+public:
+
+    static void showInformationNote(const QString &text);
+    static void showErrorNote(const QString &text);
+    static void showMessageBox(const QString &text);
+
+private:
+
+};
+
+#endif // NOTIFICATIONS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/pimainview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+
+#ifndef PIMAINVIEW_H
+#define PIMAINVIEW_H
+
+#include <hbview.h>
+#include <hbicon.h>
+
+#include "pluginattributes.h"
+#include "piprofilerengine.h"
+
+class HbAction;
+class HbMainWindow;
+class HbDocumentLoader;
+class HbApplication;
+class HbLabel;
+class HbWidget;
+class HbListWidget;
+class HbListWidgetItem;
+class HbMenu;
+class PISettingsView;
+class PIMainWindow;
+class HbDialog;
+
+class PIMainView: public HbView
+{
+Q_OBJECT
+
+public:
+
+    /**
+     * Constructor
+     */
+    PIMainView();
+
+    /**
+     * Destructor
+     */
+    ~PIMainView();
+
+    /**
+     * Initializes view
+     */
+    void init(PIMainWindow *mainWindow, HbApplication *app, HbDocumentLoader &loader,
+        PIProfilerEngine *engine);
+
+    /**
+     * Sets and updates new plug-in list into main view
+     * @param pluginList List of plug-ins
+     */
+    void setPluginList(QList<PluginAttributes> *pluginList);
+
+private:
+
+    /**
+     * connects signals and slots
+     */
+    void connectSignalsAndSlots(HbApplication* app);
+
+    /**
+     * Loads all UI items from xml file
+     */
+    void loadItemsFromResources(HbDocumentLoader &loader);
+
+    /**
+     * Updates plug-in list according to member variable mPluginList
+     */
+    void updatePlugInLists();
+
+    /**
+     * Gets plug-in attributes for plug-in which UID number is defined in parameter
+     * If plugin for UID if not found, empty pluginattributes variable is returned
+     */
+    PluginAttributes getPluginAttributes(int uid);
+
+    /**
+     * Shows profiling note
+     */
+    void showProfilingNote();
+
+private slots:
+
+    /**
+     * Slot that is called when profiling status is changed.
+     * Method updated text in popup that is shown in the screen
+     */
+    void profilingStatusChanged(ProfilerEngineStatus status, const QString &text = 0,
+        ProfilingMode profilingMode = PI_PROFILINGMODENORMAL, ProfilingOutput output =
+            PI_FILE_OUTPUT);
+
+    /**
+     * shows about popup
+     */
+    void showAboutPopup();
+
+    /**
+     * opens settings view
+     */
+    void openSettingsView();
+
+    /**
+     * Enables or disables plug-in from plug-in list. If parameter is zero, selected 
+     * plug-in from plug-in list is enabled/disabled.
+     */
+    void enableOrDisablePlugin(HbListWidgetItem *widget = 0);
+
+    /**
+     * Shows context menu for list widget
+     */
+    void showContexMenu(HbListWidgetItem *widget, const QPointF &point);
+
+    /**
+     * Opens sampler info for plug-in that is selected.
+     */
+    void openSampleInfo();
+
+    /**
+     * sets context menu pointer to zero
+     */
+
+    void contextMenuClosed();
+
+    /**
+     * Shows profiling-popup and starts profiling
+     */
+    void startProfiling();
+
+    /**
+     * Shows profiling popup and starts profiling
+     */
+    void startTimedProfiling();
+
+    /**
+     * Stops profiling
+     */
+    void stopProfiling();
+
+    /**
+     * Updates "Start timed profiling for xx seconds" text according to settings
+     */
+    void updateTimedProfilingText();
+
+    /**
+     * Exits and leaves profiling on
+     */
+    void exitAndLeaveProfilingOn();
+
+    /**
+     * Opens plug-in specific settings for selected plug-in
+     */
+    void openPluginSpecificSettings();
+private:
+
+    // main application
+    HbApplication *application;
+
+    // main window
+    PIMainWindow *mMainWindow;
+
+    // engine pointer
+    PIProfilerEngine *mEngine;
+
+    // list of plug-ins
+    QList<PluginAttributes> *mPluginList;
+
+    // context menu
+    HbMenu *mContextMenu;
+
+    // Actions
+    HbAction *mActionExit;
+    HbAction *mActionExitAndLeaveProfilingOn;
+    HbAction *mActionAbout;
+    HbAction *mActionStartProfiling;
+    HbAction *mActionStartTimedProfiling;
+    HbAction *mActionSettings;
+    HbAction *mActionStopProfiling;
+
+    // plug-in list widget
+    HbListWidget *mListPlugins;
+
+    // Profiling note
+    HbDialog *mProfilingNote;
+
+    // Icons for enabled and disabled plug-ins
+    HbIcon mIconEnabled;
+    HbIcon mIconDisabled;
+
+};
+
+#endif // PIMAINVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/pimainwindow.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PIPROFILERMAINWINDOW_H_
+#define PIPROFILERMAINWINDOW_H_
+
+// System includes
+#include <qobject.h>
+#include <hbmainwindow.h>
+
+// User includes
+#include "pluginattributes.h"
+
+// Forward declarations
+class PIMainView;
+class PISettingsView;
+class PIProfilerEngine;
+class HbDocumentLoader;
+class HbApplication;
+
+// Class declaration
+class PIMainWindow: public HbMainWindow
+{
+Q_OBJECT
+public:
+
+    // Member functions
+
+    PIMainWindow(PIProfilerEngine* engine, HbDocumentLoader &loader, HbApplication *app);
+    virtual ~PIMainWindow();
+
+signals:
+
+    /**
+     * Signal that is emitted when back button is pressed at settings view
+     */
+    void returnedFromSettings();
+
+public slots:
+
+    /**
+     * Activates main view
+     */
+    void activateMainView();
+
+    /**
+     * Activates settings view
+     */
+    void activateSettingsView(int uid = 0);
+
+    /**
+     * method that is called when back button pressed at settings view
+     */
+    void settingsViewClosed();
+
+    /**
+     * Sets and new plugin list to all views
+     */
+    void setPluginList(QList<PluginAttributes> &pluginList);
+
+private:
+
+    /**
+     * creates and adds main view to window
+     */
+    void addMainView(HbDocumentLoader &loader, HbApplication *app);
+
+    /**
+     * creates and adds settings view to main window
+     */
+    void addSettingsView();
+
+private slots:
+
+private:
+    // data
+
+    // Engine wrapper
+    PIProfilerEngine* mEngine;
+
+    // Main view
+    PIMainView* mMainView;
+
+    // Settings view
+    PISettingsView* mSettingsView;
+
+    // Back Action
+    HbAction *mBackAction;
+
+    // plug-in attributes
+    QList<PluginAttributes> mPluginAttributes;
+
+};
+
+#endif /* PIPROFILERMAINWINDOW_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/piprofilerengine.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PIPROFILEREGINE_H
+#define PIPROFILEREGINE_H
+
+#include <qobject.h>
+#include <qlist.h>
+
+#include "pluginattributes.h"
+
+class PIProfilerEnginePrivate;
+class GeneralAttributes;
+
+enum ProfilerEngineStatus
+{
+    PI_PROFILING = 0, PI_FINISHED_SUCCEFULLY, PI_ERROR
+};
+enum ProfilingMode
+{
+    PI_PROFILINGMODENORMAL = 0, PI_PROFILINGMODETIMED
+};
+enum ProfilingOutput
+{
+    PI_DEBUG_OUTPUT = 0, PI_FILE_OUTPUT
+};
+
+class PIProfilerEngine: public QObject
+{
+Q_OBJECT
+public:
+
+    /**
+     * Constructor
+     */
+    PIProfilerEngine();
+
+    /**
+     * Initilises engine
+     */
+    bool init();
+
+    /**
+     * Destructor
+     */
+    ~PIProfilerEngine();
+
+    /**
+     * Gets PI Profiler general settings
+     */
+    void getGeneralSettings(GeneralAttributes &settings);
+
+    /**
+     * Notifys engine that ui is ready
+     */
+    void notifyUIReady();
+
+    /**
+     * Saves general settings into engine
+     */
+    bool saveGeneralSettings(GeneralAttributes &settings);
+
+    /**
+     * Saves plug-in settings into engine
+     */
+    bool savePluginSettings(const PluginAttributes &pluginAttributes);
+
+    /**
+     * Starts normal profiling
+     */
+    bool startProfiling();
+
+    /**
+     * Starts timed profiling 
+     */
+    bool startTimedProfiling();
+
+    /**
+     * Stops profiling
+     */
+    void stopProfiling();
+
+    /**
+     * gets time limit for timed profiling
+     */
+    int getTimeLimit();
+
+    /**
+     * Sets PI profiler engine to continue running after ui is closed.
+     */
+    void leaveProfilingOnAfterClosing();
+
+    bool checkTraceLocationSanity(QString &location);
+
+signals:
+
+    /**
+     * Signal that is emitted when plug-in list is loaded
+     */
+    void pluginListUpdated(QList<PluginAttributes> &samplerList);
+
+    /**
+     * Signal that is emitted when profiling status is changed
+     */
+    void profilingStatusChanged(ProfilerEngineStatus status, const QString &text = 0,
+        ProfilingMode profilingMode = PI_PROFILINGMODENORMAL, ProfilingOutput output =
+            PI_FILE_OUTPUT);
+
+private:
+
+    // private implementation
+    PIProfilerEnginePrivate *mPrivate;
+
+private:
+    // Friend classes
+
+    friend class PIProfilerEnginePrivate;
+
+};
+
+#endif // PIPROFILEREGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/piprofilerengineprivate.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PIPROFILEREGINEPRIVATE_H
+#define PIPROFILEREGINEPRIVATE_H
+
+#include <e32base.h> 
+#include <piprofiler/ProfilerAttributes.h>
+#include <piprofiler/ProfilerEngineStatusChecker.h> 
+
+class TSamplerAttributes;
+class PIMainView;
+class PluginAttributes;
+class GeneralAttributes;
+class SettingItem;
+class CProfilerEngineStatusChecker;
+class PIProfilerEngine;
+class PIProfilerEnginePrivate: public MProfilerStatusObserver
+{
+
+public:
+
+    enum TProfilingMode
+    {
+        EProfilingModeNormal = 0, EProfilingModeTimed
+    };
+
+    /**
+     * Constructor
+     */
+    PIProfilerEnginePrivate(PIProfilerEngine *aEngine);
+
+    /**
+     * Destructor
+     */
+    ~PIProfilerEnginePrivate();
+
+    /**
+     * Initializesprofiler engine
+     */
+    bool Init();
+
+    /**
+     * Method that is called when UI is ready
+     */
+    void NotifyUIReady();
+
+    /**
+     * Saves plug-in settings into engine
+     */
+    bool SavePluginSettings(const PluginAttributes &pluginAttributes);
+
+    /**
+     * Starts normal profiling
+     */
+    bool StartProfiling();
+
+    /**
+     * Starts timed profiling 
+     */
+    bool StartTimedProfiling();
+
+    /**
+     * Stops profiling
+     */
+    void StopProfiling();
+
+    /**
+     * MProfilerStatusObserver method that is called when profiler engine's status is changed
+     */
+    void HandleProfilerStatusChange(KProfilerStatus aStatus);
+
+    /**
+     * MProfilerStatusObserver method that is called when profiler error is occured.
+     */
+    void HandleProfilerErrorL(TInt aError);
+
+    /**
+     * Gets PI Profiler general settings
+     */
+    void GetGeneralSettings(GeneralAttributes &settings);
+
+    /**
+     * Saves general settings into engine
+     */
+    bool SaveGeneralSettings(GeneralAttributes &settings);
+
+    /**
+     * gets time limit for timed profiling
+     */
+    int GetTimeLimit();
+
+    /**
+     * Sets PI profiler engine to continue running after ui is closed.
+     */
+    void LeaveProfilingOnAfterClosing();
+
+    bool CheckTraceLocationSanity(QString &location);
+
+private:
+
+    /**
+     * Saves general settings into engine
+     */
+    void SaveGeneralSettingsL();
+
+    /**
+     * loads general settings from engine
+     */
+    TInt LoadGeneralSettingsL();
+
+    /**
+     * Starts to profile
+     */
+    void StartAllSamplerItemsL(TProfilingMode aProfilingMode);
+
+    // Converters for symbian to qt and qt to symbian 
+
+    /**
+     * TSamplerAttributes -> SamplerAttributes
+     */
+    static void convertTSamplerAttributesToPluginAttributes(TSamplerAttributes &tSamplerAttributes,
+        PluginAttributes &samplerAttributes);
+
+    /**
+     * TSettingItem -> SettingItem
+     */
+    static void convertTSettingItemToSettingItem(TSettingItem &tSettingItem,
+        SettingItem &settingItem);
+
+    /**
+     * SettingItem -> TSettingItem
+     */
+    static void convertSettingItemToTSettingItem(TSettingItem &tSettingItem,
+        const SettingItem &settingItem);
+
+    /**
+     * TGeneralAttributes -> GeneralAttributes
+     */
+    static void convertTGeneralAttributesToGeneralAttributes(
+        TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes);
+
+    /**
+     * GeneralAttributes -> TGeneralAttributes
+     */
+    static void convertGeneralAttributesToTGeneralAttributes(
+        TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes);
+
+    /**
+     * Launches PI Profiler engine
+     */
+    int LaunchEngineL();
+
+    /**
+     * Terminates PI Profiler engine
+     */
+    void terminateEngine();
+
+    /**
+     * Gets plug-ins from engine
+     */
+    void addNewSamplers(CArrayFixFlat<TSamplerAttributes>& aAttributes);
+
+    /**
+     * Loads plug-ins
+     */
+    void loadPlugins();
+
+    /**
+     * Finds PI Profiler Engine process
+     */
+    TInt FindProcessL(RProcess& aProc);
+
+    /**
+     * Attaches client into PI Profiler engine
+     */
+    void AttachClient();
+
+    /**
+     * Checks trace location sanity
+     */
+    TBool CheckTraceLocationSanityL(TBuf8<KPrefixMaxLength>& aAttr);
+
+private:
+
+    // Should Engine leaved on after ui is closed
+    bool iLeaveProfilingOnAfterClosing;
+
+    // Public part of engine
+    PIProfilerEngine *iPublic;
+
+    // Sampler Attributes
+    CArrayFixFlat<TSamplerAttributes>* iSamplerAttributes;
+
+    // General attributes
+    TGeneralAttributes iGeneralAttributes;
+
+    // Engine status checker
+    CProfilerEngineStatusChecker* iStatusChecker;
+
+};
+
+#endif // PIPROFILEREGINEPRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/pisettingsview.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PISETTINGSVIEW_H
+#define PISETTINGSVIEW_H
+
+#include <hbview.h>
+#include <qlist.h>
+
+#include "generalattributes.h"
+
+class PIProfilerEngine;
+class HbMainWindow;
+class HbDataForm;
+class HbDataFormModel;
+class HbDataFormModelItem;
+class PluginAttributes;
+class SettingItem;
+
+class PISettingsView: public HbView
+{
+Q_OBJECT
+
+public:
+
+    enum OutputMode
+    {
+        OUTPUT_MODE_DEBUG, OUTPUT_MODE_FILE
+    };
+
+    /**
+     * Constructor
+     */
+    PISettingsView(PIProfilerEngine *engine);
+
+    /**
+     * Destructor
+     */
+    ~PISettingsView();
+
+    /**
+     * Reads general settings from data form and returns GeneralAttributes
+     */
+    GeneralAttributes& getGeneralAttributes();
+
+    /**
+     * Reads plug-in specific settings from data form and saves them into mPluginlist
+     */
+    void readPluginSettings();
+
+    /**
+     * Sets plug-in specific settings and creates data form items for them
+     */
+    void setPluginSettings(QList<PluginAttributes> *pluginList);
+
+    /**
+     * Expands one plug-ins settings group. Other groups are collapsed. 
+     */
+    void expandPluginGroup(int uid);
+
+private:
+
+    /**
+     * Creates general settings form items
+     */
+    void createGeneralSettingForms();
+
+    /**
+     * Creates plug-in specific form items
+     */
+    void createPluginSpecificSettings();
+
+    /**
+     * Loads general settings and updates them into form
+     */
+    void loadGeneralSettings();
+
+    /**
+     * Creates one plug-in setting item
+     */
+    HbDataFormModelItem *createPluginSettingItem(const SettingItem *item,
+        HbDataFormModelItem *parentGroup);
+    
+    /**
+     * reads ont plug-in setting value and saves it into qstring value
+     */
+    void readPluginSettingItemValue(HbDataFormModelItem *dataFormItem, SettingItem *settingItem);
+
+private slots:
+
+    /**
+     * Adds text validators into form items
+     */
+    void addTextValidators(const QModelIndex index);
+
+private:
+
+    // engine pointer
+    PIProfilerEngine *mEngine;
+
+    // General settings
+    GeneralAttributes mGeneralAttributes;
+
+    // list of plug-ins
+    QList<PluginAttributes> *mPluginList;
+
+    // setting form
+    HbDataForm *mSettingForm;
+
+    // model class
+    HbDataFormModel *mModel;
+
+    // data form groups
+    HbDataFormModelItem *mGeneralSettingsGroup;
+    HbDataFormModelItem *mPluginSettingsGroup;
+
+    // general setting items
+    HbDataFormModelItem *mOutputItem;
+    HbDataFormModelItem *mFileLocation;
+    HbDataFormModelItem *mPrefix;
+    HbDataFormModelItem *mSamplingPeriod;
+
+    HbDataFormModelItem *testItem;//TODO remove!
+};
+
+#endif // PISETTINGSVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/inc/pluginattributes.h	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef PLUGINATTRIBUTES_H_
+#define PLUGINATTRIBUTES_H_
+
+/*
+ * 
+ * PluginAttributes class definition, internal settings format
+ *  
+ */
+#include <qobject.h>
+#include <qvariant.h>
+#include <qstring.h>
+
+class HbDataFormModelItem;
+
+/*
+ * 
+ * TSettingItem class definition, internal settings format
+ *  
+ */
+class SettingItem
+{
+public:
+    enum
+    {
+        SettingItemTypeInt = 0, SettingItemTypeBool, SettingItemTypeHex, SettingItemTypeText
+    };
+
+public:
+    QString mSettingText;
+    int mType;
+    QString mValue;
+    QString mSettingDescription;
+    QString mUIText;
+};
+
+class PluginAttributes// : public QObject
+{
+    //Q_OBJECT
+public:
+
+    // default constructor
+    PluginAttributes();
+
+    ~PluginAttributes();
+public:
+    int mUid;
+    QString mShortName; // name of the plugin, short name
+    QString mName; // name of the plugin, long name
+    QString mDescription; // plugin description, info about HW/SW dependencies etc.
+    int mSampleRate; // sample rate of the plugin
+    bool mEnabled; // enabled for profiling
+    bool mIsHidden; // hidden, i.e. no start/stop controls
+    int mItemCount; // plugin specific setting item count
+
+
+    // plugin specific settings, plugin implementation dependent
+    SettingItem mSettingItem1;
+    SettingItem mSettingItem2;
+    SettingItem mSettingItem3;
+    SettingItem mSettingItem4;
+    SettingItem mSettingItem5;
+    SettingItem mSettingItem6;
+
+    HbDataFormModelItem *mFormItemSettingItem1;
+    HbDataFormModelItem *mFormItemSettingItem2;
+    HbDataFormModelItem *mFormItemSettingItem3;
+    HbDataFormModelItem *mFormItemSettingItem4;
+    HbDataFormModelItem *mFormItemSettingItem5;
+    HbDataFormModelItem *mFormItemSettingItem6;
+    HbDataFormModelItem *mFormItemSampleRate;
+
+};
+
+#endif /* PLUGINATTRIBUTES_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/pimainview.docml	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="0.9">
+    <object name="actionStartProfiling" type="HbAction">
+        <string name="text" value="Start profiling"/>
+    </object>
+    <object name="actionSettings" type="HbAction">
+        <string name="text" value="Settings"/>
+    </object>
+    <object name="actionAbout" type="HbAction">
+        <string name="text" value="About"/>
+    </object>
+    <object name="actionExit" type="HbAction">
+        <string name="text" value="Exit"/>
+    </object>
+    <object name="actionStartTimedProfiling" type="HbAction">
+        <string name="text" value="Start profiling for 60 seconds"/>
+    </object>
+    <widget name="PIMainView" type="PIMainView">
+        <widget name="viewMenu" role="HbView:menu" type="HbMenu">
+            <string name="HbVkbHost" value=""/>
+            <ref object="actionStartProfiling" role="HbMenu:addAction"/>
+            <ref object="actionStartTimedProfiling" role="HbMenu:addAction"/>
+            <ref object="actionSettings" role="HbMenu:addAction"/>
+            <ref object="actionAbout" role="HbMenu:addAction"/>
+            <ref object="actionExit" role="HbMenu:addAction"/>
+        </widget>
+        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
+            <ref object="actionStartProfiling" role="HbToolBar:addAction"/>
+            <ref object="actionSettings" role="HbToolBar:addAction"/>
+        </widget>
+        <widget name="content" role="HbView:widget" type="HbWidget">
+            <widget name="listPlugins" type="HbListWidget">
+                <sizehint height="32.53731un" type="PREFERRED" width="51.04478un"/>
+                <bool name="visible" value="TRUE"/>
+            </widget>
+            <real name="z" value="0"/>
+            <layout type="anchor">
+                <anchoritem dst="listPlugins" dstEdge="LEFT" spacing="5" src="" srcEdge="LEFT"/>
+                <anchoritem dst="listPlugins" dstEdge="RIGHT" spacing="5" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="listPlugins" dstEdge="TOP" spacing="5" src="" srcEdge="TOP"/>
+                <anchoritem dst="listPlugins" dstEdge="BOTTOM" spacing="5" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+        <string name="title" value="PI Profiler"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
+
+<!-- 
+
+Copyright (c) 2010 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: 
+
+
+  --> 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/piprofiler.qrc	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,29 @@
+<!-- 
+
+Copyright (c) 2010 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: 
+
+
+  --> 
+
+<RCC>
+    <qresource prefix="/xml" >
+        <file alias="pimainview.docml" >pimainview.docml</file>
+    </qresource>
+    <qresource prefix="/gfx" >
+        <file alias="piprofiler.svg">../icons/qgn_menu_piprofilerui.svg</file>
+        <file alias="enabled.svg">../icons/qgn_prob_piprofilerui_status_enabled.svg</file>
+        <file alias="disabled.svg">../icons/qgn_prob_piprofilerui_status_disabled.svg</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/rom/piprofilerui_hb.iby	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef __PROFILERGUI_IBY__
+#define __PROFILERGUI_IBY__
+
+S60_APP_EXE(PIProfilerUI)
+//S60_APP_AIF_ICONS(PIProfilerUI)
+data=ZRESOURCE\apps\PIProfilerUI.mif resource\apps\PIProfilerUI.mif
+data=ZRESOURCE\apps\PIProfilerUI.rsc resource\apps\PIProfilerUI.rsc
+//S60_APP_RESOURCE(PIProfilerUI)
+data=ZPRIVATE\10003a3f\import\apps\PIProfilerUI_reg.rsc private\10003a3f\import\apps\PIProfilerUI_reg.rsc
+
+#endif // __PROFILERGUI_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/main.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2010 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 <hbapplication.h>
+#include <hblabel.h>
+#include <hbmainwindow.h>
+#include <hbdocumentloader.h>
+#include <hbview.h>
+#include "pimainview.h"
+#include "piprofilerengine.h"
+#include "notifications.h"
+#include "pimainwindow.h"
+
+// Create custom document loader to be able to use custom views in XML.
+class PIProfilerDocumentLoader: public HbDocumentLoader
+{
+public:
+    virtual QObject *createObject(const QString& type, const QString &name);
+};
+
+int main(int argc, char *argv[])
+{
+
+    // Create application and document loader.
+    HbApplication app(argc, argv);
+    PIProfilerDocumentLoader loader;
+
+    // Create Engine and initialize it
+    PIProfilerEngine engine;
+    if (!engine.init()) {
+        Notifications::showErrorNote(QString("Unable to start PI Profiler engine"));
+        return EXIT_FAILURE;
+    }
+
+    // create and show main window
+    PIMainWindow mainWindow(&engine, loader, &app);
+    mainWindow.show();
+
+    return app.exec();
+}
+
+QObject *PIProfilerDocumentLoader::createObject(const QString& type, const QString &name)
+{
+    // Main view
+    if (type == PIMainView::staticMetaObject.className()) {
+        QObject *object = new PIMainView;
+        object->setObjectName(name);
+        return object;
+    }
+
+    return HbDocumentLoader::createObject(type, name);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/notifications.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2010 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 <hbmessagebox.h>
+#include <hbpopup.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <hbdialog.h>
+#include <hbaction.h>
+#include <hbtextitem.h>
+
+#include "notifications.h"
+
+// ---------------------------------------------------------------------------
+
+void Notifications::showInformationNote(const QString &text)
+{
+    
+    // Create new dialog 
+     HbDialog *infoNote = new HbDialog();
+     infoNote->setAttribute(Qt::WA_DeleteOnClose);
+
+     // set dismiss policy
+     infoNote->setTimeout(0); //
+
+     // create text item for popup
+     HbTextItem *label = new HbTextItem(text, infoNote);
+     label->setAlignment(Qt::AlignCenter);
+     infoNote->setContentWidget(label);
+     infoNote->setPrimaryAction(new HbAction("Ok"));
+
+     infoNote->show();
+}
+
+// ---------------------------------------------------------------------------
+
+void Notifications::showMessageBox(const QString &text)
+{
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation );
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setTimeout(0);
+    note->setText(text);
+    note->show();
+
+}
+
+// ---------------------------------------------------------------------------
+
+void Notifications::showErrorNote(const QString &text)
+{
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeWarning );
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setTimeout(0);
+    note->setText(text);
+    note->show();
+
+}
+
+// ---------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/pimainview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,564 @@
+/*
+* Copyright (c) 2010 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 <hbdocumentloader.h>
+#include <hbmainwindow.h>
+#include <hbapplication.h>
+#include <hbaction.h>
+#include <qgraphicslayout.h>
+#include <qvariant.h>
+#include <qobject.h>
+#include <qlist.h>
+#include <hbmessagebox.h>
+#include <hblabel.h>
+#include <hbwidget.h>
+#include <qstringlist.h>
+#include <qsignalmapper.h>
+#include <hblistwidget.h>
+#include <hblistwidgetitem.h>
+#include <hbmenu.h>
+#include <hbtoolbar.h>
+#include <hbdialog.h>
+#include <hbprogressdialog.h>
+#include <hbtextitem.h>
+#include <hbindicator.h>
+#include <qdebug.h>
+
+#include "pimainview.h"
+#include "piprofilerengine.h"
+#include "notifications.h"
+#include "pimainwindow.h"
+
+const char *INVALIDCONFIGURATIONFILE = "Invalid configuration file";
+const char *APPLICATIONNAME = "PI Profiler";
+
+// actions that are found from xml
+const char *ACTIONEXIT = "actionExit";
+const char *ACTIONSTARTPROFILING = "actionStartProfiling";
+const char *ACTIONSTARTTIMEDPROFILING = "actionStartTimedProfiling";
+const char *ACTIONSETTINGS = "actionSettings";
+const char *ACTIONABOUT = "actionAbout";
+
+// UI components that are found from xml
+
+const char *LISTWIDGETPLUGINS = "listPlugins";
+const char *TEXTMANDATORYPLUGINS = "Mandatory plug-ins:";
+const char *TEXTOPTIONALPLUGINS = "Optional plug-ins:";
+
+// ---------------------------------------------------------------------------
+
+PIMainView::PIMainView() :
+    application(0), mMainWindow(0), mEngine(0), mPluginList(0), mContextMenu(0), mActionExit(0),
+        mActionExitAndLeaveProfilingOn(0), mActionAbout(0), mActionStartTimedProfiling(0),
+        mActionSettings(0), mActionStopProfiling(0), mListPlugins(0), mProfilingNote(0)
+{
+
+}
+
+// ---------------------------------------------------------------------------
+
+PIMainView::~PIMainView()
+{
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::init(PIMainWindow *mainWindow, HbApplication* app, HbDocumentLoader &loader,
+    PIProfilerEngine *engine)
+{
+
+    application = app;
+    mMainWindow = mainWindow;
+
+    // Load items from xml file
+    loadItemsFromResources(loader);
+
+    // Set list widget items
+    mListPlugins->setClampingStyle(HbScrollArea::BounceBackClamping);
+    mListPlugins->setFrictionEnabled(true);
+
+    // Create stop profiling action
+    mActionStopProfiling = new HbAction("Stop Profiling", this);
+
+    // Create exit and leave profiling on action
+    mActionExitAndLeaveProfilingOn = new HbAction("Close UI\n(Continue profiling)", this);
+
+    mEngine = engine;
+
+    // Connect signals and slots
+    this->connectSignalsAndSlots(app);
+
+    // Create icons
+    mIconDisabled = HbIcon(":/gfx/disabled.svg");
+    mIconEnabled = HbIcon(":/gfx/enabled.svg");
+
+    // update timed profiling text according to settings
+    updateTimedProfilingText();
+}
+
+// ---------------------------------------------------------------------------
+
+
+void PIMainView::connectSignalsAndSlots(HbApplication* app)
+{
+
+    // Menu items:
+    connect(mActionExit, SIGNAL(triggered()), app, SLOT( quit() ));
+    connect(mActionSettings, SIGNAL(triggered()), this, SLOT( openSettingsView() ));
+    connect(mActionAbout, SIGNAL(triggered()), this, SLOT( showAboutPopup() ));
+    connect(mActionStartProfiling, SIGNAL(triggered()), this, SLOT( startProfiling() ));
+    connect(mActionStartTimedProfiling, SIGNAL(triggered()), this, SLOT( startTimedProfiling() ));
+
+    // List widget actions
+    connect(mListPlugins, SIGNAL(activated(HbListWidgetItem*)), this,
+        SLOT(enableOrDisablePlugin(HbListWidgetItem*)));
+    connect(mListPlugins, SIGNAL(longPressed(HbListWidgetItem*, QPointF)), this,
+        SLOT(showContexMenu(HbListWidgetItem*, QPointF)));
+
+    connect(
+        mEngine,
+        SIGNAL(profilingStatusChanged(ProfilerEngineStatus, const QString&, ProfilingMode, ProfilingOutput)),
+        this,
+        SLOT(profilingStatusChanged(ProfilerEngineStatus, const QString&, ProfilingMode, ProfilingOutput)));
+
+    connect(mMainWindow, SIGNAL(returnedFromSettings()), this, SLOT( updateTimedProfilingText() ));
+    connect(mActionExitAndLeaveProfilingOn, SIGNAL(triggered()), this,
+        SLOT( exitAndLeaveProfilingOn() ));
+    connect(mActionStopProfiling, SIGNAL(triggered()), this, SLOT( stopProfiling() ));
+
+}
+
+// ---------------------------------------------------------------------------
+
+
+void PIMainView::loadItemsFromResources(HbDocumentLoader &loader)
+{
+
+    // ACTIONS:
+
+    // Exit
+    QObject *object = loader.findObject(ACTIONEXIT);
+    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
+    this->mActionExit = qobject_cast<HbAction *> (object);
+
+    // About
+    object = loader.findObject(ACTIONABOUT);
+    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
+    this->mActionAbout = qobject_cast<HbAction *> (object);
+
+    // Settings
+    object = loader.findObject(ACTIONSETTINGS);
+    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
+    this->mActionSettings = qobject_cast<HbAction *> (object);
+
+    // Start profiling
+    object = loader.findObject(ACTIONSTARTPROFILING);
+    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
+    this->mActionStartProfiling = qobject_cast<HbAction *> (object);
+
+    // Start timed profiling
+    object = loader.findObject(ACTIONSTARTTIMEDPROFILING);
+    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
+    this->mActionStartTimedProfiling = qobject_cast<HbAction *> (object);
+
+    QGraphicsWidget *widget = loader.findWidget(LISTWIDGETPLUGINS);
+    Q_ASSERT_X((widget != 0), "Launcher", "Invalid launcher.xml file");
+    this->mListPlugins = qobject_cast<HbListWidget *> (widget);
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::showAboutPopup()
+{
+
+    Notifications::showMessageBox("Version 2.2.1 - 10th August 2010. \n"
+            "Copyright © 2010 Nokia Corporation "
+            "and/or its subsidiary(-ies). "
+            "All rights reserved.");
+
+}
+// ---------------------------------------------------------------------------
+
+void PIMainView::setPluginList(QList<PluginAttributes> *pluginList)
+{
+
+    this->mPluginList = pluginList;
+    this->updatePlugInLists();
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::openSettingsView()
+{
+    mMainWindow->activateSettingsView();
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::updatePlugInLists()
+{
+
+    mListPlugins->clear();
+
+    // Create Compulsory and Optional labels into list widget:
+    HbListWidgetItem *compulsory = new HbListWidgetItem();
+    compulsory->setText(TEXTMANDATORYPLUGINS);
+    mListPlugins->addItem(compulsory);
+
+    HbListWidgetItem *optional = new HbListWidgetItem();
+    optional->setText(TEXTOPTIONALPLUGINS);
+    mListPlugins->addItem(optional);
+
+    HbIcon *icon;
+
+    // Go thru pluginlist and add list item for each plug-in into list widget 
+    for (int index = 0; index < mPluginList->size(); index++) {
+        QString plugInName = mPluginList->at(index).mName;
+
+        // get icon for item 
+        if (mPluginList->at(index).mEnabled) {
+            icon = &mIconEnabled;
+        }
+        else {
+            icon = &mIconDisabled;
+        }
+
+        // Create list widget item
+        // TODO ensure that this does not leak memory
+        HbListWidgetItem *newItem = new HbListWidgetItem();
+        newItem->setIcon(*icon);
+        newItem->setText(plugInName);
+        newItem->setData(mPluginList->at(index).mUid);
+
+        // check if plug-in is compulsory or optional
+        if (mPluginList->at(index).mIsHidden) {
+            mListPlugins->insertItem(mListPlugins->row(optional), newItem);
+        }
+        else {
+            mListPlugins->addItem(newItem);
+
+        }
+    }
+
+}
+// ---------------------------------------------------------------------------
+
+void PIMainView::enableOrDisablePlugin(HbListWidgetItem *widget)
+{
+
+    // if widget is not found, set currently highlighted item as widget
+    // (in that case this method is called from context menu)
+    if (widget == 0) {
+        widget = mListPlugins->currentItem();
+    }
+
+    // if this method is called from list widget's activated signal, do nothing
+    // if context menu is open.
+    else {
+        if (mContextMenu != 0) {
+            return;
+        }
+    }
+    bool ok = false;
+    int widgetUid = widget->data().toInt(&ok);
+    if (!ok) {
+        qWarning("PIProfiler: Unable to find plug-in uid");
+        return;
+    }
+
+    // go thru plug-in array and find checked plug-in
+    for (int index = 0; index < mPluginList->size(); index++) {
+
+        if (mPluginList->at(index).mUid == widgetUid) {
+            PluginAttributes pluginAttributes = mPluginList->at(index);
+
+            // if plug-in is hidden it cannot be disabled
+            if (pluginAttributes.mIsHidden) {
+                return;
+            }
+
+            // change enable status and set icon correct
+            if (pluginAttributes.mEnabled) {
+                pluginAttributes.mEnabled = false;
+                widget->setIcon(mIconDisabled);
+            }
+            else {
+                pluginAttributes.mEnabled = true;
+                widget->setIcon(mIconEnabled);
+            }
+
+            // save plug-in settings
+            if (mEngine->savePluginSettings(pluginAttributes)) {
+                mPluginList->replace(index, pluginAttributes);
+            }
+            else {
+                // if saving operation failed, revert icon back
+                if (pluginAttributes.mEnabled) {
+                    widget->setIcon(mIconEnabled);
+                }
+                else {
+                    pluginAttributes.mEnabled = true;
+                    widget->setIcon(mIconDisabled);
+                }
+                Notifications::showErrorNote(
+                    "Error occured while saving settings to Profiler engine.");
+            }
+            break;
+        }
+
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::showContexMenu(HbListWidgetItem *widget, const QPointF &point)
+{
+
+    bool ok = false;
+    int uid = widget->data().toInt(&ok);
+
+    if (!ok) {
+        return;
+    }
+
+    for (int index = 0; index < mPluginList->size(); index++) {
+
+        if (mPluginList->at(index).mUid == uid) {
+
+            // Create Context menu:
+            mContextMenu = new HbMenu();
+            mContextMenu->setPreferredPos(point, HbPopup::TopLeftCorner);
+            mContextMenu->setDismissPolicy(HbPopup::TapOutside);
+            mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
+
+            // Enable/disable plug-in
+            if (!mPluginList->at(index).mIsHidden) {
+                HbAction *enableAction;
+                if (mPluginList->at(index).mEnabled) {
+                    enableAction = mContextMenu->addAction(QString("Disable"));
+                }
+                else {
+                    enableAction = mContextMenu->addAction(QString("Enable"));
+                }
+                connect(enableAction, SIGNAL(triggered()), this, SLOT( enableOrDisablePlugin() ));
+            }
+
+            //FIXME take these into use once expanding and collapsing data form groups works. 
+            // Plug-in specific settings 
+            /*if (mPluginList->at(index).mItemCount != 0 || mPluginList->at(index).mSampleRate != -1) {
+             HbAction *pluginSettingsAction = mContextMenu->addAction(QString(
+             "Plug-in settings"));
+             connect(pluginSettingsAction, SIGNAL(triggered()), this,
+             SLOT(openPluginSpecificSettings()));
+             }*/
+
+            // Plug in info
+            HbAction *infoAction = mContextMenu->addAction(QString("Plug-in info"));
+            connect(infoAction, SIGNAL(triggered()), this, SLOT( openSampleInfo() ));
+
+            connect(mContextMenu, SIGNAL(aboutToClose()), this, SLOT( contextMenuClosed() ));
+            mContextMenu->open(this, SLOT(contextMenuClosed()));
+            break;
+        }
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::openSampleInfo()
+{
+
+    // Show plug-in specific info
+    bool ok = false;
+    int uid = mListPlugins->currentItem()->data().toInt(&ok);
+    if (!ok) {
+        return;
+    }
+    Notifications::showInformationNote(this->getPluginAttributes(uid).mDescription);
+}
+// ---------------------------------------------------------------------------
+
+PluginAttributes PIMainView::getPluginAttributes(int uid)
+{
+    // Get plug-in attributes from the plug-in list based on uid number
+    for (int index = 0; index < mPluginList->size(); index++) {
+        if (mPluginList->at(index).mUid == uid) {
+            return mPluginList->at(index);
+        }
+    }
+    return PluginAttributes();
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::contextMenuClosed()
+{
+    mContextMenu = 0;
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::startProfiling()
+{
+
+    showProfilingNote();
+    if (!mEngine->startProfiling()) {
+        Notifications::showErrorNote("Unable to start profiling");
+        mProfilingNote->close();
+        mProfilingNote = 0;
+    }
+}
+
+// ---------------------------------------------------------------------------
+void PIMainView::startTimedProfiling()
+{
+    showProfilingNote();
+    if (!mEngine->startTimedProfiling()) {
+        Notifications::showErrorNote("Unable to start profiling");
+        mProfilingNote->close();
+        mProfilingNote = 0;
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+
+void PIMainView::stopProfiling()
+{
+    mProfilingNote = 0;
+    mEngine->stopProfiling();
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::profilingStatusChanged(ProfilerEngineStatus status, const QString &text,
+    ProfilingMode profilingMode, ProfilingOutput outputMode)
+{
+
+    if (status == PI_FINISHED_SUCCEFULLY) {
+        // Profiling finished successfully
+
+        // close profiling note
+        if (mProfilingNote != 0) {
+            mProfilingNote->close();
+            mProfilingNote = 0;
+        }
+
+        // Show info text
+        Notifications::showInformationNote(text);
+        return;
+    }
+
+    if (mProfilingNote == 0) {
+        // if profiling note is not yet shown, create it
+        showProfilingNote();
+    }
+
+    if (status == PI_ERROR) {
+        // if errors occured, close profiling note and show error message
+        if (mProfilingNote != 0) {
+            mProfilingNote->close();
+            mProfilingNote = 0;
+        }
+        Notifications::showErrorNote(text);
+    }
+
+    else if (status == PI_PROFILING) {
+        // if profiling is on-going, update info text according to output:
+
+        HbLabel *titleLabel = new HbLabel("Profiling...", mProfilingNote);
+        titleLabel->setAlignment(Qt::AlignCenter);
+
+        HbTextItem *textItem = new HbTextItem(text, mProfilingNote);
+        textItem->setAlignment(Qt::AlignCenter);
+
+        mProfilingNote->setHeadingWidget(titleLabel);
+        mProfilingNote->setContentWidget(textItem);
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::showProfilingNote()
+{
+    // Create new dialog 
+    mProfilingNote = new HbDialog();
+    mProfilingNote->setAttribute(Qt::WA_DeleteOnClose);
+
+    // Make it modal.
+    mProfilingNote->setModal(true);
+
+    // set dismiss policy
+    mProfilingNote->setDismissPolicy(HbPopup::NoDismiss);
+    mProfilingNote->setTimeout(0); //
+    mProfilingNote->setBackgroundFaded(true);
+
+    // create label and text item for popup
+    HbTextItem *titleLabel = new HbTextItem("Profiling...", mProfilingNote);
+    HbTextItem *label = new HbTextItem("Starting to profile", mProfilingNote);
+
+    label->setAlignment(Qt::AlignCenter);
+    titleLabel->setAlignment(Qt::AlignCenter);
+    mProfilingNote->setHeadingWidget(titleLabel);
+    mProfilingNote->setContentWidget(label);
+
+    // set actions
+    mProfilingNote->setPrimaryAction(mActionStopProfiling);
+    mProfilingNote->setSecondaryAction(mActionExitAndLeaveProfilingOn);
+
+    mProfilingNote->open();
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::updateTimedProfilingText()
+{
+    QString text = "Start timed profiling(";
+    QString number;
+    number.setNum(mEngine->getTimeLimit(), 10);
+    text.append(number);
+    text.append("s)");
+    mActionStartTimedProfiling->setText(text);
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIMainView::exitAndLeaveProfilingOn()
+{
+    mEngine->leaveProfilingOnAfterClosing();
+    application->quit();
+}
+// ---------------------------------------------------------------------------
+
+void PIMainView::openPluginSpecificSettings()
+{
+    HbListWidgetItem *listItem = mListPlugins->currentItem();
+    bool ok = false;
+    int uid = listItem->data().toInt(&ok);
+    if (ok) {
+        mMainWindow->activateSettingsView(uid);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/pimainwindow.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,160 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+
+// System include
+#include <QDebug>
+#include <hbaction.h>
+#include <hbdocumentloader.h>
+#include <hbapplication.h>
+#include <hbicon.h>
+#include <hbprogressdialog.h>
+
+// User includes
+#include "pimainwindow.h"
+//#include "mcsendengine.h"
+#include "pimainview.h"
+#include "pisettingsview.h"
+#include "generalattributes.h"
+#include "piprofilerengine.h"
+#include "notifications.h"
+
+// xml definition of view
+const char *PI_MAINVIEW_XML = ":/xml/pimainview.docml";
+
+// name of the application view object in the xml file.
+const char *APPLICATIONVIEW = "PIMainView";
+
+// ViewManager Constructor
+PIMainWindow::PIMainWindow(PIProfilerEngine* engine, HbDocumentLoader &loader, HbApplication *app) :
+    mEngine(engine), mMainView(0), mSettingsView(0), mBackAction(0)
+{
+
+    HbProgressDialog *note = new HbProgressDialog(HbProgressDialog::WaitDialog);
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText("Loading PI Profiler plug-ins...");
+    note->open();
+
+    // Add the views to the main window
+    addMainView(loader, app);
+    addSettingsView();
+
+    // Set main view to be displayed on startup
+    activateMainView();
+
+    connect(mEngine, SIGNAL(pluginListUpdated(QList<PluginAttributes>&)), this,
+        SLOT(setPluginList(QList<PluginAttributes>&)));
+
+    QMetaObject::connectSlotsByName(this);
+
+    mEngine->notifyUIReady();
+
+    note->close();
+
+}
+
+PIMainWindow::~PIMainWindow()
+{
+    if (mMainView != 0) {
+        delete mMainView;
+        mMainView = 0;
+    }
+    if (mSettingsView != 0) {
+        delete mSettingsView;
+        mSettingsView = 0;
+    }
+
+}
+
+// Methods to add views to the main window
+
+void PIMainWindow::addMainView(HbDocumentLoader &loader, HbApplication *app)
+{
+    // Load xml-file
+    bool ok = false;
+    loader.load(PI_MAINVIEW_XML, &ok);
+
+    // Load Application View:
+    QGraphicsWidget *widget = loader.findWidget(APPLICATIONVIEW);
+    Q_ASSERT_X(ok && (widget != 0), "PIProfiler", "Invalid docml file");
+    mMainView = qobject_cast<PIMainView *> (widget);
+
+    mMainView->init(this, app, loader, mEngine);
+
+    // Add view to main window
+    this->addView(mMainView);
+
+}
+
+void PIMainWindow::addSettingsView()
+{
+    mSettingsView = new PISettingsView(mEngine);
+    mBackAction = new HbAction("back", this);
+
+    bool value = connect(mBackAction, SIGNAL(triggered()), this, SLOT(settingsViewClosed()));
+    mSettingsView->setNavigationAction(mBackAction);
+    mSettingsView->navigationAction()->setIcon(HbIcon(":/gfx/enabled.svg"));
+    addView(mSettingsView);
+}
+
+// Slots to handle view change
+void PIMainWindow::activateMainView()
+{
+    setCurrentView(mMainView);
+}
+
+void PIMainWindow::activateSettingsView(int uid)
+{
+    if (uid != 0) {
+        mSettingsView->expandPluginGroup(uid);
+    }
+    setCurrentView(mSettingsView);
+}
+
+void PIMainWindow::settingsViewClosed()
+{
+    if (currentView() == mSettingsView) {
+        bool error = false;
+        if (!mEngine->saveGeneralSettings(mSettingsView->getGeneralAttributes())) {
+            error = true;
+        }
+
+        mSettingsView->readPluginSettings();
+
+        for (int index = 0; index < mPluginAttributes.size(); index++) {
+            if (!mEngine->savePluginSettings(mPluginAttributes.at(index))) {
+                error = true;
+            }
+        }
+
+        if (error) {
+            Notifications::showErrorNote("Unable to save some of the settings into engine");
+        }
+        activateMainView();
+        emit returnedFromSettings();
+    }
+    else {
+        qWarning("Back action is not triggered at the correct view!");
+    }
+}
+
+void PIMainWindow::setPluginList(QList<PluginAttributes> &pluginList)
+{
+    mPluginAttributes = pluginList;
+    mMainView->setPluginList(&mPluginAttributes);
+    mSettingsView->setPluginSettings(&mPluginAttributes);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/piprofilerengine.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2010 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 "piprofilerengine.h"
+#include "piprofilerengineprivate.h"
+
+PIProfilerEngine::PIProfilerEngine()
+{
+
+}
+
+PIProfilerEngine::~PIProfilerEngine()
+{
+    if (mPrivate != 0) {
+        delete mPrivate;
+        mPrivate = 0;
+    }
+}
+
+bool PIProfilerEngine::init()
+{
+    mPrivate = new PIProfilerEnginePrivate(this);
+    return mPrivate->Init();
+}
+
+void PIProfilerEngine::getGeneralSettings(GeneralAttributes &settings)
+{
+    mPrivate->GetGeneralSettings(settings);
+}
+
+void PIProfilerEngine::notifyUIReady()
+{
+    mPrivate->NotifyUIReady();
+}
+
+bool PIProfilerEngine::saveGeneralSettings(GeneralAttributes &settings)
+{
+    return mPrivate->SaveGeneralSettings(settings);
+
+}
+
+bool PIProfilerEngine::savePluginSettings(const PluginAttributes &pluginAttributes)
+{
+    return mPrivate->SavePluginSettings(pluginAttributes);
+}
+
+bool PIProfilerEngine::startProfiling()
+{
+    return mPrivate->StartProfiling();
+}
+bool PIProfilerEngine::startTimedProfiling()
+{
+    return mPrivate->StartTimedProfiling();
+}
+void PIProfilerEngine::stopProfiling()
+{
+    return mPrivate->StopProfiling();
+}
+
+int PIProfilerEngine::getTimeLimit()
+{
+    return mPrivate->GetTimeLimit();
+}
+
+void PIProfilerEngine::leaveProfilingOnAfterClosing()
+{
+    mPrivate->LeaveProfilingOnAfterClosing();
+}
+
+bool PIProfilerEngine::checkTraceLocationSanity(QString &location)
+{
+    mPrivate->CheckTraceLocationSanity(location);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/piprofilerengineprivate.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,678 @@
+/*
+* Copyright (c) 2010 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 <e32std.h>
+#include <qstring.h>
+#include <qlist.h>
+#include <qstringlist.h>
+#include <f32file.h>
+#include <xqconversions.h>
+#include <utf.h>
+#include <bautils.h>
+#include <sysutil.h>
+#include "piprofilerengineprivate.h"
+#include <piprofiler/ProfilerSession.h>
+#include "pluginattributes.h"
+#include "generalattributes.h"
+#include "piprofilerengine.h"
+
+// literals for default general setting values
+_LIT8(KTraceOutput, "file_system");
+_LIT8(KTraceDebugOutput, "debug_output");
+_LIT8(KProfilerDefaultDrive, "E:\\data");
+_LIT8(KProfilerDefaultPrefix, "Profiler_#");
+_LIT(KProfilerEngineExe, "PIProfilerEngine.exe");
+const TInt KProfilerDefaultTimedSamplingPeriod = 60; // Sampling time in seconds  
+
+// ---------------------------------------------------------------------------
+
+PIProfilerEnginePrivate::PIProfilerEnginePrivate(PIProfilerEngine *aEngine) :
+    iPublic(aEngine), iSamplerAttributes(0), iStatusChecker(0), iLeaveProfilingOnAfterClosing(
+        EFalse)
+{
+
+}
+
+// ---------------------------------------------------------------------------
+
+PIProfilerEnginePrivate::~PIProfilerEnginePrivate()
+{
+
+    // remove profiler client
+    RProfiler::RemoveClient();
+    // Terminate engine in case it is running.
+    if (iLeaveProfilingOnAfterClosing == EFalse) {
+        terminateEngine();
+    }
+
+    // delete sampler attributes.
+    if (iSamplerAttributes) {
+        delete iSamplerAttributes;
+        iSamplerAttributes = 0;
+    }
+
+    if (iStatusChecker) {
+        iStatusChecker->Cancel();
+        delete iStatusChecker;
+        iStatusChecker = NULL;
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::Init()
+{
+    TRAPD(error, this->LaunchEngineL());
+    if (error != KErrNone) {
+        return false;
+    }
+
+    // initialize attribute arrays
+
+    TRAP(error, iSamplerAttributes = new (ELeave) CArrayFixFlat<TSamplerAttributes> (20)); // max sampler count is 20
+    if (error != KErrNone) {
+        return false;
+    }
+
+    // engine status checker
+    TRAP(error, iStatusChecker = CProfilerEngineStatusChecker::NewL());
+    if (error != KErrNone) {
+        return false;
+    }    
+
+    iStatusChecker->SetObserver(this);
+
+    TRAP(error, LoadGeneralSettingsL());
+    if (error != KErrNone) {
+        return false;
+    }
+
+    return true;
+}
+
+// ---------------------------------------------------------------------------
+
+
+int PIProfilerEnginePrivate::LaunchEngineL()
+{
+
+    TRequestStatus stat = KRequestPending;
+    RProcess proc;
+
+    TInt err(KErrNone);
+
+    // check if process exists
+    err = FindProcessL(proc);
+
+    // check if already exists and don't start a new eshell profiling
+    if (err == KErrNotFound) {
+        // try create new process
+        err = proc.Create(KProfilerEngineExe, _L(""));
+
+        // check if RProcess::Create() succeeded
+        if (err == KErrNone) {
+            // Trigger rendezvous on the supplied TRequestStatus object
+            proc.Rendezvous(stat);
+
+            // kick off the engine process
+            proc.Resume();
+
+            // wait for the constructor to complete 
+            User::WaitForRequest(stat);
+
+            // just lose the handle
+            proc.Close();
+        }
+    }
+
+    // Increase the client reference count in server:
+    AttachClient();
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::AttachClient()
+{
+    RProfiler::AttachClient();
+}
+// ---------------------------------------------------------------------------
+
+int PIProfilerEnginePrivate::FindProcessL(RProcess& aProc)
+{
+    TProcessId engId;
+    TFindProcess procName;
+    procName.Find(_L("PIProfilerEngine.exe*"));
+    TFullName aResult;
+    TFullName aResult2;
+    TInt err(KErrNone);
+
+    // find the first appearance
+    err = procName.Next(aResult);
+    if (err != KErrNone) {
+        // did not find any engine process
+        return err;
+    }
+    else {
+        err = aProc.Open(procName);
+        if (err == KErrNone) {
+            if (aProc.ExitCategory().Length() > 0) {
+                aProc.Close();
+                // process already exited => create a new one
+                return KErrNotFound;
+            }
+            aProc.Close();
+        }
+    }
+
+    // check now if a second appearance exists in process list, 
+    // i.e. engine started from eshell => two engine processes appear in normal case
+    procName.Next(aResult2);
+
+    // check if aResult2 contained the second appearance of profiler engine
+    if(aResult2.CompareF(aResult) > 0)
+        {
+        // other process found, i.e. right process to communicate with, in case started from eshell
+        err = aProc.Open(procName);
+        if(err == KErrNone)
+            {
+            if(aProc.ExitCategory().Length() > 0)
+                {
+                // process already exited => create a new one
+                return KErrNotFound;
+                }
+            aProc.Close();
+            }
+        }
+
+    return err;
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::terminateEngine()
+{
+    // exit profiler engine 
+    RProfiler::ExitProfiler();
+}
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::NotifyUIReady()
+{
+    // load initial plugins
+    loadPlugins();
+
+    // get the initial state
+    int initialState = iStatusChecker->GetInitialState();
+    if (initialState == ERunning) {
+        HandleProfilerStatusChange(ERunning);
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+
+void PIProfilerEnginePrivate::loadPlugins()
+{
+    // get samplers from Profiler Engine (client-server session) 
+    // and add the to the samplers list for the first time
+    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - get sampler plugins"));
+
+    TInt err = RProfiler::GetSamplerAttributes(*iSamplerAttributes);
+
+    // check if engine provided a list of samplers
+    if (err != KErrNone) {
+        // could not get samplers from engine
+        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - failed to connect engine"));
+    }
+    else {
+        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - adding new samplers into view"));
+        addNewSamplers(*iSamplerAttributes);
+    }LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - exit"));
+}
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::addNewSamplers(CArrayFixFlat<TSamplerAttributes>& aAttributes)
+{
+    TSamplerAttributes item;
+
+    TInt count(aAttributes.Count());
+
+    // loop the attribute array and insert them into view list
+
+    QList<PluginAttributes> samplerList;
+
+    for (TInt i(0); i < count; i++) {
+        // get a TSamplerAttributes from list at a time  
+        item = aAttributes.At(i);
+
+        PluginAttributes samplerAttributes;
+        convertTSamplerAttributesToPluginAttributes(item, samplerAttributes);
+
+        samplerList.append(samplerAttributes);
+    }
+
+    emit iPublic->pluginListUpdated(samplerList);
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::convertTSamplerAttributesToPluginAttributes(
+    TSamplerAttributes &tSamplerAttributes, PluginAttributes &samplerAttributes)
+{
+
+    samplerAttributes.mUid = tSamplerAttributes.iUid;
+    samplerAttributes.mSampleRate = tSamplerAttributes.iSampleRate;
+    samplerAttributes.mEnabled = tSamplerAttributes.iEnabled;
+    samplerAttributes.mIsHidden = tSamplerAttributes.iIsHidden;
+    samplerAttributes.mItemCount = tSamplerAttributes.iItemCount;
+
+    TBuf16<8> temp8;
+    temp8.Copy(tSamplerAttributes.iShortName);
+    samplerAttributes.mShortName = QString((QChar*) temp8.Ptr(), temp8.Length());
+
+    TBuf16<64> temp64;
+    temp64.Copy(tSamplerAttributes.iName);
+    samplerAttributes.mName = QString((QChar*) temp64.Ptr(), temp64.Length());
+
+    TBuf16<256> temp256;
+    temp256.Copy(tSamplerAttributes.iDescription);
+    samplerAttributes.mDescription = QString((QChar*) temp256.Ptr(), temp256.Length());
+
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem1,
+        samplerAttributes.mSettingItem1);
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem2,
+        samplerAttributes.mSettingItem2);
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem3,
+        samplerAttributes.mSettingItem3);
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem4,
+        samplerAttributes.mSettingItem4);
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem5,
+        samplerAttributes.mSettingItem5);
+    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem6,
+        samplerAttributes.mSettingItem6);
+}
+
+// ---------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::SavePluginSettings(const PluginAttributes &samplerAttributes)
+{
+    for (int index = 0; index < iSamplerAttributes->Count(); index++) {
+        if (samplerAttributes.mUid == this->iSamplerAttributes->At(index).iUid) {
+            iSamplerAttributes->At(index).iEnabled = samplerAttributes.mEnabled;
+            iSamplerAttributes->At(index).iSampleRate = samplerAttributes.mSampleRate;
+
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem1,
+                samplerAttributes.mSettingItem1);
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem2,
+                samplerAttributes.mSettingItem2);
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem3,
+                samplerAttributes.mSettingItem3);
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem4,
+                samplerAttributes.mSettingItem4);
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem5,
+                samplerAttributes.mSettingItem5);
+            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem6,
+                samplerAttributes.mSettingItem6);
+
+            TSamplerAttributes attr = iSamplerAttributes->At(index);
+
+            if (RProfiler::SetSamplerAttributes(this->iSamplerAttributes->At(index)) == KErrNone) {
+                return true;
+            }
+            else {
+                return false;
+            }
+        }
+    }
+    return false;
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::StartAllSamplerItemsL(TProfilingMode aProfilingMode)
+{
+    TBuf<256> activeWriterDes;
+    TBuf8<256> writer8;
+
+    //iState = MProfilerStatusObserver::EInitializing;
+
+    RProfiler::TProfilingMode profilingMode = aProfilingMode == EProfilingModeTimed
+        ? RProfiler::EProfilingModeTimed : RProfiler::EProfilingModeNormal;
+
+    // try to start profiling process through client-server interface
+    if (RProfiler::StartSampling(profilingMode) == KErrNotFound) {
+        // profiler stopped (e.g. from eshell) and must be restarted 
+        LaunchEngineL();
+        // try to launch sampling again
+        RProfiler::StartSampling(profilingMode);
+    }
+}
+
+// ---------------------------------------------------------------------------
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::StopProfiling()
+{
+    // Stop profiling process through CS session
+    RProfiler::StopSampling();
+
+}
+
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::HandleProfilerStatusChange(KProfilerStatus aStatus)
+{
+    if (aStatus == EIdle || aStatus == ERunning) {
+
+        if (iGeneralAttributes.iTraceOutput == KTraceOutput) {
+
+            TBuf<256> buf;
+            // get profiler file name 
+            TBool valu = RProfiler::GetFileName(buf);
+
+            QString filename = QString((QChar*) buf.Ptr(), buf.Length());
+
+            // Let ui know that status has changed
+
+            if (aStatus == EIdle) {
+                QString text = QString("Wrote trace data to: \n");
+                text.append(filename);
+                emit iPublic->profilingStatusChanged(PI_FINISHED_SUCCEFULLY, text,
+                    PI_PROFILINGMODENORMAL, PI_FILE_OUTPUT);
+            }
+            else if (aStatus == ERunning) {
+                QString text = QString("Writing trace data to: \n");
+                text.append(filename);
+                emit iPublic->profilingStatusChanged(PI_PROFILING, text, PI_PROFILINGMODENORMAL,
+                    PI_FILE_OUTPUT);
+            }
+        }
+        else {
+            // Let ui know that status has changed
+            if (aStatus == EIdle) {
+                emit iPublic->profilingStatusChanged(PI_FINISHED_SUCCEFULLY, QString(
+                    "Wrote trace data to debug output"), PI_PROFILINGMODENORMAL, PI_DEBUG_OUTPUT);
+            }
+            else if (aStatus == ERunning) {
+                emit iPublic->profilingStatusChanged(PI_PROFILING, QString(
+                    "Writing trace data to debug output"), PI_PROFILINGMODENORMAL, PI_DEBUG_OUTPUT);
+            }
+        }
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::HandleProfilerErrorL(TInt aError)
+{
+    {
+        QString errorMsg = QString("Error: ");
+        QString KNoMemory = QString("Cannot write to file, check settings");
+
+        // message from pwr sampler
+        if (aError < -1000) {
+            errorMsg.append(QString("Stop other power measurement tools!"));
+        }
+        else if (aError == KErrAlreadyExists || aError == 11) {
+            errorMsg.append(QString("Close old Profiler before start!"));
+        }
+        else if (aError == KErrNotReady) {
+            errorMsg.append(QString("Memory card removed, failed to write!"));
+        }
+        else if (aError == KErrPathNotFound) {
+            errorMsg.append(QString("Given trace data location does not exist"));
+        }
+        else {
+            if (aError == KErrNoMemory || aError == KErrOverflow || aError == KErrDirFull || aError
+                == KErrDiskFull || aError == KErrNotReady) {
+                errorMsg.append(KNoMemory);
+            }
+            else {
+                errorMsg.append(QString("code: "));
+                errorMsg.append(aError);
+            }
+        }
+
+        emit iPublic->profilingStatusChanged(PI_ERROR, errorMsg);
+    }
+
+}
+// ---------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::StartProfiling()
+{
+    TRAPD(error, this->StartAllSamplerItemsL(PIProfilerEnginePrivate::EProfilingModeNormal));
+    if (error == KErrNone) {
+        return true;
+    }
+    return false;
+
+}
+
+// ---------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::StartTimedProfiling()
+{
+    TRAPD(error, this->StartAllSamplerItemsL(PIProfilerEnginePrivate::EProfilingModeTimed));
+    if (error == KErrNone) {
+        return true;
+    }
+    return false;
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::convertTGeneralAttributesToGeneralAttributes(
+    TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes)
+{
+    samplerAttributes.mTimedSamplingPeriod = tSamplerAttributes.iTimedSamplingPeriod;
+    int test = tSamplerAttributes.iSaveFileDrive.Length();
+    TBuf16<KPrefixMaxLength> test2;
+    test2.Copy(tSamplerAttributes.iSaveFileDrive);
+    samplerAttributes.mSaveFileDrive = QString((QChar*) test2.Ptr(), test2.Length());
+    test2.Copy(tSamplerAttributes.iTraceFilePrefix);
+    samplerAttributes.mTraceFilePrefix = QString((QChar*) test2.Ptr(), test2.Length());
+    test2.Copy(tSamplerAttributes.iTraceOutput);
+    samplerAttributes.mTraceOutput = QString((QChar*) test2.Ptr(), test2.Length());
+}
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::convertGeneralAttributesToTGeneralAttributes(
+    TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes)
+{
+    tSamplerAttributes.iTimedSamplingPeriod = samplerAttributes.mTimedSamplingPeriod;
+
+    tSamplerAttributes.iTraceOutput.Copy(TBuf<KPrefixMaxLength> (
+        samplerAttributes.mTraceOutput.utf16()));
+    tSamplerAttributes.iSaveFileDrive.Copy(TBuf<KPrefixMaxLength> (
+        samplerAttributes.mSaveFileDrive.utf16()));
+    tSamplerAttributes.iTraceFilePrefix.Copy(TBuf<KPrefixMaxLength> (
+        samplerAttributes.mTraceFilePrefix.utf16()));
+
+}
+// ---------------------------------------------------------------------------
+
+TInt PIProfilerEnginePrivate::LoadGeneralSettingsL()
+{
+    // local variable for getting saved settings from profiler engine
+    TGeneralAttributes generalAttr;
+    TInt err(KErrNone);
+
+    // before loading saved settings (from settings file) set the default values 
+    iGeneralAttributes.iTraceOutput.Copy(KTraceOutput);
+    iGeneralAttributes.iTraceFilePrefix.Copy(KProfilerDefaultPrefix);
+    iGeneralAttributes.iSaveFileDrive.Copy(KProfilerDefaultDrive);
+    iGeneralAttributes.iTimedSamplingPeriod = KProfilerDefaultTimedSamplingPeriod;
+
+    // request to 
+    err = RProfiler::GetGeneralAttributes(generalAttr);
+
+    // check that request succesfull
+    if (err != KErrNone) {
+        // could not connect profiler engine, use 
+        return err;
+    }
+
+    // check if saved settings different than the default
+    if (generalAttr.iTraceOutput.MatchF(iGeneralAttributes.iTraceOutput) == KErrNotFound) {
+        iGeneralAttributes.iTraceOutput.Copy(generalAttr.iTraceOutput);
+    }
+
+    if (generalAttr.iTraceFilePrefix.MatchF(iGeneralAttributes.iTraceFilePrefix) == KErrNotFound) {
+        iGeneralAttributes.iTraceFilePrefix.Copy(generalAttr.iTraceFilePrefix);
+    }
+
+    if (generalAttr.iSaveFileDrive.MatchF(iGeneralAttributes.iSaveFileDrive) == KErrNotFound) {
+        iGeneralAttributes.iSaveFileDrive.Copy(generalAttr.iSaveFileDrive);
+    }
+
+    if (generalAttr.iTimedSamplingPeriod > 0) {
+        iGeneralAttributes.iTimedSamplingPeriod = generalAttr.iTimedSamplingPeriod;
+    }
+
+    return err;
+}
+
+// ---------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::GetGeneralSettings(GeneralAttributes &settings)
+{
+    convertTGeneralAttributesToGeneralAttributes(iGeneralAttributes, settings);
+}
+// ---------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::SaveGeneralSettings(GeneralAttributes &settings)
+{
+    convertGeneralAttributesToTGeneralAttributes(iGeneralAttributes, settings);
+    TRAPD(error, SaveGeneralSettingsL());
+    if (error != KErrNone) {
+        return false;
+    }
+    return true;
+}
+
+// ---------------------------------------------------------------------------
+
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::SaveGeneralSettingsL()
+{
+    TInt err(KErrNone);
+
+    // save general attributes to Profiler Engine
+    err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
+
+    // check if save failed
+    if (err == KErrNotFound) {
+        // profiler stopped (e.g. from eshell) and must be restarted 
+        LaunchEngineL();
+
+        err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
+        if (err != KErrNone) {
+            // leave no use to continue
+            User::Leave(err);
+        }
+    }
+}
+// --------------------------------------------------------------------------------------------
+
+int PIProfilerEnginePrivate::GetTimeLimit()
+{
+    return iGeneralAttributes.iTimedSamplingPeriod;
+}
+
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::convertTSettingItemToSettingItem(TSettingItem &tSettingItem,
+    SettingItem &settingItem)
+{
+
+    settingItem.mType = tSettingItem.iType;
+    settingItem.mSettingDescription = QString((QChar*) tSettingItem.iSettingDescription.Ptr(),
+        tSettingItem.iSettingDescription.Length());
+    settingItem.mSettingText = QString((QChar*) tSettingItem.iSettingText.Ptr(),
+        tSettingItem.iSettingText.Length());
+    settingItem.mUIText = QString((QChar*) tSettingItem.iUIText.Ptr(),
+        tSettingItem.iUIText.Length());
+    settingItem.mValue = QString((QChar*) tSettingItem.iValue.Ptr(), tSettingItem.iValue.Length());
+
+}
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::convertSettingItemToTSettingItem(TSettingItem &tSettingItem,
+    const SettingItem &settingItem)
+{
+    tSettingItem.iType = settingItem.mType;
+    tSettingItem.iSettingDescription.Copy(TBuf<256> (settingItem.mSettingDescription.utf16()));
+    tSettingItem.iSettingText.Copy(TBuf<64> (settingItem.mSettingText.utf16()));
+    tSettingItem.iUIText.Copy(TBuf<64> (settingItem.mUIText.utf16()));
+    tSettingItem.iValue.Copy(TBuf<128> (settingItem.mValue.utf16()));
+
+}
+
+// --------------------------------------------------------------------------------------------
+
+void PIProfilerEnginePrivate::LeaveProfilingOnAfterClosing()
+{
+    iLeaveProfilingOnAfterClosing = ETrue;
+}
+
+// --------------------------------------------------------------------------------------------
+
+bool PIProfilerEnginePrivate::CheckTraceLocationSanity(QString& location)
+{
+    TBool value = EFalse;
+
+    TBuf8<KPrefixMaxLength> fileLocation;
+    fileLocation.Copy(TBuf<KPrefixMaxLength> (location.utf16()));
+    TRAPD(error, value = CheckTraceLocationSanityL(fileLocation));
+    if (error != KErrNone) {
+        return false;
+    }
+    return value;
+}
+
+// --------------------------------------------------------------------------------------------
+
+TBool PIProfilerEnginePrivate::CheckTraceLocationSanityL(TBuf8<KPrefixMaxLength> &aAttr)
+{
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+
+    TBuf<32> drive;
+
+    CnvUtfConverter::ConvertToUnicodeFromUtf8(drive, aAttr);
+
+    TDriveUnit driveUnit = TDriveUnit(drive);
+
+    TBool ret(EFalse);
+
+    // check that the root folder is correct
+    if (drive.Length() > 2 && BaflUtils::CheckFolder(fs, drive.Left(3)) == KErrNone) {
+        // check then if drive has still some space
+        if (!SysUtil::DiskSpaceBelowCriticalLevelL(&fs, 0, driveUnit)) {
+            ret = ETrue;
+        }
+    }
+
+    fs.Close();
+    return ret;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/pisettingsview.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,434 @@
+/*
+ * Copyright (c) 2010 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 <HbMainWindow>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbDataFormViewItem>
+#include <QGraphicsLinearLayout>
+#include <QValidator>
+#include <QIntValidator>
+#include <QModelIndex>
+#include <HbLineEdit>
+#include <HbValidator>
+#include <HbEditorInterface>
+#include <hbabstractitemview.h>
+
+#include "pisettingsview.h"
+#include "pimainview.h"
+#include "notifications.h"
+#include "piprofilerengine.h"
+#include "pluginattributes.h"
+
+const QStringList OUTPUTMODES = (QStringList() << "Debug output" << "File system");
+
+PISettingsView::PISettingsView(PIProfilerEngine *engine) :
+    mEngine(engine), mGeneralAttributes(), mPluginList(0), mSettingForm(0), mModel(0),
+        mGeneralSettingsGroup(0), mPluginSettingsGroup(0), mOutputItem(0), mFileLocation(0),
+        mPrefix(0), mSamplingPeriod(0)
+
+{
+    this->setTitle("Settings");
+
+    //create setting form
+    mSettingForm = new HbDataForm(this);
+
+    //create a model class
+    mModel = new HbDataFormModel(this);
+
+    this->createGeneralSettingForms();
+
+    // Set created model model to form
+    mSettingForm->setModel(mModel);
+
+    // Set widget into view
+    setWidget(mSettingForm);
+
+    // load general settings into data form
+    loadGeneralSettings();
+
+    // Let us know when list is shown
+    connect(mSettingForm, SIGNAL(itemShown(const QModelIndex)), this,
+        SLOT(addTextValidators(const QModelIndex)));
+
+    // Set general group as expanded. 
+    /*HbDataFormViewItem *viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem( 
+        mGeneralSettingsGroup));
+    viewItem->setExpanded(true);*/
+
+}
+
+// ---------------------------------------------------------------------------
+
+PISettingsView::~PISettingsView()
+{
+    if (mSettingForm != 0) {
+        delete mSettingForm;
+        mSettingForm = 0;
+    }
+
+    if (mModel != 0) {
+        delete mModel;
+        mModel = 0;
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::addTextValidators(const QModelIndex index)
+{
+    HbDataFormModelItem *modelItem = mModel->itemFromIndex(index);
+
+    // Check if item is integer text box
+    if (modelItem->contentWidgetData(QString("TextboxType")) == QString("integer")) {
+
+        QString value = modelItem->contentWidgetData(QString("text")).toString();
+        // Create validator that accepts only integer values.
+        HbValidator *validator = new HbValidator(this);
+        validator->addField(new QIntValidator(0, 10000, validator), "1");
+
+        // Line editor widget from form
+        HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *> (mSettingForm->itemByIndex(index));
+        HbWidget *widget = viewItem->dataItemContentWidget();
+        HbLineEdit *editor = static_cast<HbLineEdit *> (widget);
+
+        if (editor != 0) {
+            // Create interface and attach lineEdit to it.
+            HbEditorInterface editInterface(editor);
+            // set editor as phone number editor so that inserting numbers is easier
+            editor->setInputMethodHints(Qt::ImhDigitsOnly);
+            editor->setValidator(validator);
+        }
+        modelItem->setContentWidgetData(QString("text"), value);
+
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::createGeneralSettingForms()
+{
+
+    // Add data into setting model
+
+    // General settings group
+    mGeneralSettingsGroup = mModel->appendDataFormGroup(QString("General settings"),
+        mModel->invisibleRootItem());
+
+    // Output drop down list
+    mOutputItem = mModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,
+        QString("Output to"), mGeneralSettingsGroup);
+    mOutputItem->setContentWidgetData(QString("items"), OUTPUTMODES);
+
+    // Data file location textbox
+    mFileLocation = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
+        "Save file in"), mGeneralSettingsGroup);
+    mFileLocation->setContentWidgetData("maxLength", 64);
+
+    // File name textbox
+    mPrefix = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("File prefix"),
+        mGeneralSettingsGroup);
+    mPrefix->setContentWidgetData("maxLength", 64);
+
+    // Period that used when using timed progfiling
+    mSamplingPeriod = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
+        "Sampling period(s)"), mGeneralSettingsGroup);
+    mSamplingPeriod->setContentWidgetData(QString("TextboxType"), QString("integer"));
+    mSamplingPeriod->setContentWidgetData("maxLength", 64);
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::createPluginSpecificSettings()
+{
+
+    // Create plug-in specific group
+    mPluginSettingsGroup = mModel->appendDataFormGroup(QString("Plug-in specific settings"),
+        mModel->invisibleRootItem());
+
+    if (mPluginList != 0) {
+
+        for (int index = 0; index < mPluginList->size(); index++) {
+
+            // create plug-in specific settings group for each plug-in which has own settings
+            if (mPluginList->at(index).mItemCount > 0 || mPluginList->at(index).mSampleRate != -1) {
+
+                // Create settings group
+                HbDataFormModelItem *mPluginGroup = mModel->appendDataFormGroup(QString(
+                    mPluginList->at(index).mName), mPluginSettingsGroup);
+
+          
+                // get plugin attributes
+                PluginAttributes attributes = mPluginList->at(index);
+
+                // Create sample rate item if it is needed
+                if (attributes.mSampleRate != -1) {
+                    attributes.mFormItemSampleRate = mModel->appendDataFormItem(
+                        HbDataFormModelItem::TextItem, "Sample rate (ms)", mPluginGroup);
+                    attributes.mFormItemSampleRate->setContentWidgetData(QString("TextboxType"), QString(
+                        "integer"));
+
+                    attributes.mFormItemSampleRate->setContentWidgetData("text",
+                        attributes.mSampleRate);
+                }
+
+                // create other setting items
+                attributes.mFormItemSettingItem1 = createPluginSettingItem(
+                    &attributes.mSettingItem1, mPluginGroup);
+                attributes.mFormItemSettingItem2 = createPluginSettingItem(
+                    &attributes.mSettingItem2, mPluginGroup);
+                attributes.mFormItemSettingItem3 = createPluginSettingItem(
+                    &attributes.mSettingItem3, mPluginGroup);
+                attributes.mFormItemSettingItem4 = createPluginSettingItem(
+                    &attributes.mSettingItem4, mPluginGroup);
+                attributes.mFormItemSettingItem5 = createPluginSettingItem(
+                    &attributes.mSettingItem5, mPluginGroup);
+                attributes.mFormItemSettingItem6 = createPluginSettingItem(
+                    &attributes.mSettingItem6, mPluginGroup);
+                mPluginList->replace(index, attributes);
+            }
+        }
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+HbDataFormModelItem *PISettingsView::createPluginSettingItem(const SettingItem *item,
+    HbDataFormModelItem *parentGroup)
+{
+    // create individual plug-in setting item
+
+    HbDataFormModelItem *settingItem = 0;
+    if (item->mSettingText != QString("")) {
+        switch (item->mType) {
+        case SettingItem::SettingItemTypeBool:
+            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,
+                item->mUIText, parentGroup);
+            bool value = false;
+            if (item->mValue == "true") {
+                value = true;
+            }
+            settingItem->setContentWidgetData("tristate", value);
+
+            break;
+        case SettingItem::SettingItemTypeHex:
+            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
+                parentGroup);
+            settingItem->setContentWidgetData("text", item->mValue);
+            settingItem->setContentWidgetData("maxLength", 64);
+
+            break;
+
+        case SettingItem::SettingItemTypeInt:
+            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
+                parentGroup);
+            settingItem->setContentWidgetData("text", item->mValue);
+            settingItem->setContentWidgetData(QString("TextboxType"), QString("integer"));
+            settingItem->setContentWidgetData("maxLength", 64);
+
+            break;
+
+        case SettingItem::SettingItemTypeText:
+            HbDataFormModelItem *settingItem = mModel->appendDataFormItem(
+                HbDataFormModelItem::TextItem, item->mUIText, parentGroup);
+            settingItem->setContentWidgetData("text", item->mValue);
+            settingItem->setContentWidgetData("maxLength", 64);
+
+            break;
+
+        }
+    }
+    return settingItem;
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::loadGeneralSettings()
+{
+    // load general settings from engine
+    mEngine->getGeneralSettings(mGeneralAttributes);
+
+    // set output item correct
+    if (mGeneralAttributes.mTraceOutput == "file_system") {
+        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_FILE);
+    }
+    else {
+        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_DEBUG);
+    }
+
+    mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
+    mPrefix->setContentWidgetData(QString("text"), mGeneralAttributes.mTraceFilePrefix);
+    mSamplingPeriod->setContentWidgetData(QString("text"), mGeneralAttributes.mTimedSamplingPeriod);
+
+}
+
+// ---------------------------------------------------------------------------
+
+GeneralAttributes &PISettingsView::getGeneralAttributes()
+{
+    // Read items from ui elements and save them into mGeneralAttributes
+
+
+    QString fileLocation = mFileLocation->contentWidgetData(QString("text")).toString();
+    if (fileLocation.length() > 0 && mEngine->checkTraceLocationSanity(fileLocation)) {
+        mGeneralAttributes.mSaveFileDrive = fileLocation;
+    }
+    else {
+        Notifications::showErrorNote("Invalid path, check settings!");
+        mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
+    }
+    bool ok = false;
+    mGeneralAttributes.mTimedSamplingPeriod
+        = mSamplingPeriod->contentWidgetData(QString("text")).toInt(&ok);
+
+    if (!ok) {
+        // this should not happen because intvalidator is set into text box
+        qWarning("Unable to convert sampling period to integer");
+
+    }
+    mGeneralAttributes.mTraceFilePrefix = mPrefix->contentWidgetData(QString("text")).toString();
+
+    if (mOutputItem->contentWidgetData(QString("currentIndex")).toInt(&ok) == OUTPUT_MODE_FILE) {
+        mGeneralAttributes.mTraceOutput = QString("file_system");
+    }
+    else {
+        mGeneralAttributes.mTraceOutput = QString("debug_output");
+    }
+
+    return mGeneralAttributes;
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::setPluginSettings(QList<PluginAttributes> *pluginList)
+{
+    mPluginList = pluginList;
+    createPluginSpecificSettings();
+}
+
+// ---------------------------------------------------------------------------
+
+
+void PISettingsView::readPluginSettingItemValue(HbDataFormModelItem *dataFormItem,
+    SettingItem *settingItem)
+{
+    if (settingItem != 0 && dataFormItem != 0) {
+        // check if item type is bool, convert bool to string
+        if (settingItem->mType == SettingItem::SettingItemTypeBool) {
+            bool checkboxValue = true;
+            checkboxValue = dataFormItem->contentWidgetData(QString("tristate")).toBool();
+            
+            if(checkboxValue){
+                settingItem->mValue = QString("true");
+            }
+            else{
+                settingItem->mValue = QString("false");
+            }
+
+        }
+        // otherwise save text straight into settin item
+        else {
+            settingItem->mValue = dataFormItem->contentWidgetData("text").toString();
+        }
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::readPluginSettings()
+{
+    // Read Plug-in setting item and save values into m
+    for (int index = 0; index < mPluginList->size(); index++) {
+
+        PluginAttributes attributes = mPluginList->at(index);
+
+        readPluginSettingItemValue(attributes.mFormItemSettingItem1, &attributes.mSettingItem1);
+        readPluginSettingItemValue(attributes.mFormItemSettingItem2, &attributes.mSettingItem2);
+        readPluginSettingItemValue(attributes.mFormItemSettingItem3, &attributes.mSettingItem3);
+        readPluginSettingItemValue(attributes.mFormItemSettingItem4, &attributes.mSettingItem4);
+        readPluginSettingItemValue(attributes.mFormItemSettingItem5, &attributes.mSettingItem5);
+        readPluginSettingItemValue(attributes.mFormItemSettingItem6, &attributes.mSettingItem6);
+
+        if (attributes.mFormItemSampleRate != 0) {
+            bool ok = false;
+            attributes.mSampleRate
+                = attributes.mFormItemSampleRate->contentWidgetData("text").toInt(&ok);
+            if (!ok) {
+                // this should not happen because intvalidator is set into text box
+                qWarning("Unable to convert sample rate to integer");
+            }
+        }
+
+        mPluginList->replace(index, attributes);
+
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+
+void PISettingsView::expandPluginGroup(int uid)
+{
+
+    // FIXME some of the methods is deprecating fix once new methods available.
+    //collapse all group items
+    /*HbDataFormViewItem *viewItem = 0;
+    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
+    if (viewItem != 0) {
+        viewItem->setExpanded(false);
+    }
+    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mGeneralSettingsGroup));
+    if (viewItem != 0) {
+        viewItem->setExpanded(false);
+    }
+    // Set plugin group as expanded.
+    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
+    if (viewItem != 0) {
+        viewItem->setExpanded(true);
+    }
+    // find group item which has same uid number
+    for (int index = 0; index < mPluginSettingsGroup->childCount(); index++) {
+        HbDataFormModelItem *item = mPluginSettingsGroup->childAt(index);
+        bool ok = false;
+        int groupUid = item->data(HbDataFormModelItem::KeyRole).toInt(&ok);
+        if (ok) {
+            if (uid == groupUid) {
+                // Set group as expanded
+                viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(item));
+                if (viewItem != 0) {
+                    viewItem->setExpanded(true);
+                }
+
+                // scroll view so that group is shown
+                mSettingForm->scrollTo(mModel->indexFromItem(item),
+                    HbAbstractItemView::PositionAtTop);
+                break;
+
+            }
+        }
+
+    }*/
+
+}
+
+// ---------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/hb/src/pluginattributes.cpp	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 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 "pluginattributes.h"
+
+PluginAttributes::PluginAttributes() :
+    mFormItemSettingItem1(0), mFormItemSettingItem2(0), mFormItemSettingItem3(0),
+        mFormItemSettingItem4(0), mFormItemSettingItem5(0), mFormItemSettingItem6(0),
+        mFormItemSampleRate(0)
+{
+
+}
+
+PluginAttributes::~PluginAttributes()
+{
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/icons/qgn_menu_piprofilerui.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   version="1.0"
+   width="100%"
+   height="100%"
+   viewBox="0 0 88 88"
+   id="svg1926">
+  <defs
+     id="defs6909">
+    <linearGradient
+       id="linearGradient3171">
+      <stop
+         style="stop-color:#0000ff;stop-opacity:1"
+         offset="0"
+         id="stop3173" />
+      <stop
+         style="stop-color:#0000ff;stop-opacity:0.59793812"
+         offset="0.78571427"
+         id="stop4140" />
+      <stop
+         style="stop-color:#0000ff;stop-opacity:0"
+         offset="1"
+         id="stop3175" />
+    </linearGradient>
+    <radialGradient
+       cx="8"
+       cy="8"
+       r="7"
+       fx="8"
+       fy="8"
+       id="radialGradient3179"
+       xlink:href="#linearGradient3171"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.152284,0,0,6.152284,-5.2182712,-5.2182709)"
+       spreadMethod="pad" />
+    <linearGradient
+       id="linearGradient14494">
+      <stop
+         style="stop-color:#0000bc;stop-opacity:1"
+         offset="0"
+         id="stop14496" />
+      <stop
+         style="stop-color:#0000bc;stop-opacity:0.71134019"
+         offset="1"
+         id="stop14498" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="matrix(1.00237,0,0,1.019616,-12.79656,94.92987)"
+     id="g14549" />
+  <rect
+     width="86.131981"
+     height="86.131981"
+     x="0.93400985"
+     y="0.93401051"
+     style="opacity:1;fill:url(#radialGradient3179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
+     id="rect2198" />
+  <path
+     d="M 6.4042059,58.204857 L 17.170703,33.524373 L 27.937201,71.207114 L 44.086947,17.374627 L 54.853443,49.674119 L 65.61994,60.440617 L 73.215031,28.141124 L 81.769686,60.440617 L 81.769686,60.440617"
+     style="fill:none;fill-rule:evenodd;stroke:#8fe300;stroke-width:5.38324881;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3181" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_disabled.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   baseProfile="tiny"
+   height="100%"
+   preserveAspectRatio="xMidYMid meet"
+   version="1.0"
+   viewBox="0 0 100 100"
+   width="100%"
+   zoomAndPan="magnify"
+   id="svg157473"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="qgn_prob_piprofilerui_status_disabled.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="T:\BappeaProfiler\piprofiler\piprofilerui\s60ui\icons">
+  <metadata
+     id="metadata157509">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs157507" />
+  <sodipodi:namedview
+     inkscape:window-height="1174"
+     inkscape:window-width="1779"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="7.54"
+     inkscape:cx="58.387496"
+     inkscape:cy="46.88482"
+     inkscape:window-x="137"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg157473" />
+  <path
+     style="fill:#aa0000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.67105264"
+     d="M 4.7745358,23.607427 L 25.464191,6.8965515 L 47.34748,38.594164 L 77.718833,7.8249331 L 94.69496,26.657825 L 61.27321,55.835544 L 88.06366,81.697613 L 64.986737,96.949602 L 45.092838,68.700265 L 21.750663,94.960212 L 3.9787798,74.668435 L 31.962865,52.519894 L 4.7745358,23.607427 z "
+     id="path157511"
+     sodipodi:nodetypes="ccccccccccccc" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfapps/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_enabled.svg	Fri Sep 03 17:11:21 2010 +0300
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="100%"
+   height="100%"
+   viewBox="0 0 100 100"
+   id="svg156363">
+  <defs
+     id="defs156397" />
+  <path
+     d="M 3.5809023,59.018568 L 14.986738,29.310344 L 42.307692,70.689656 L 70.954907,3.8461536 L 95.490716,16.710875 L 44.827586,95.888595 L 3.5809023,59.018568 z "
+     style="fill:#00c024;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.67105264"
+     id="path156428" />
+</svg>
--- a/perfmon/data/perfmon.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,693 +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:  
-*
-*/
-
-
-
-NAME MATT
-
-#include <eikon.rh>
-#include <eikon.rsg>
-#include <avkon.rh>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <CommonDialogs.hrh>
-#include <CommonDialogs.rh>
-#include <pathconfiguration.hrh>
-
-#include "perfmon.hrh"
-#include "perfmon_std.h"
-#include <data_caging_paths_strings.hrh>
-#include <appinfo.rh>
-
-
-// ---------------------------------------------------------
-//   
-//    Define the resource file signature 
-//    This resource should be empty.
-//
-// ---------------------------------------------------------
-//
-RESOURCE RSS_SIGNATURE { }
-
-// ---------------------------------------------------------
-//   
-//    Default Document Name
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_default_document_name { buf=""; }
-
-// ---------------------------------------------------------
-//   
-//    Define default menu and CBA key.
-//
-// ---------------------------------------------------------
-//
-RESOURCE EIK_APP_INFO
-    {
-	status_pane = r_perfmon_status_pane;
-    //menubar = r_perfmon_menubar;
-    //cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
-    }
-
-//----------------------------------------------------
-//    r_perfmon_status_pane
-//----------------------------------------------------
-//   
-RESOURCE STATUS_PANE_APP_MODEL r_perfmon_status_pane
-    {
-	panes=
-		{
-		SPANE_PANE
-			{
-			id = EEikStatusPaneUidNavi;
-			type = EAknCtNaviPane;
-			resource = r_perfmon_navi_decorator;
-			}
-		};
-    }
-    
-//----------------------------------------------------
-//    r_perfmon_navi_decorator
-//----------------------------------------------------
-//
-RESOURCE NAVI_DECORATOR r_perfmon_navi_decorator
-    {
-    type = ENaviDecoratorControlTabGroup;
-    control = TAB_GROUP
-		{
-		tab_width = EAknTabWidthWithTwoTabs;
-		active = 0;
-		tabs = {
-			TAB
-				{
-                id = ETabMainViewValues;
-                txt = "Values";
-                },
-			TAB
-				{
-                id = ETabMainViewGraphs;
-                txt = "Graphs";
-				}
-			};
-		};
-	}
-	
-//----------------------------------------------------
-//   
-//    r_perfmon_hotkeys
-//
-//----------------------------------------------------
-//
-RESOURCE HOTKEYS r_perfmon_hotkeys
-    {
-    control=
-        {
-        HOTKEY { command=EAknCmdExit; key='e'; }
-        };
-    }
-
-
-//----------------------------------------------------
-//    r_perfmon_view_values
-//----------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_perfmon_view_values
-    {
-    hotkeys=r_perfmon_hotkeys;
-    menubar=r_perfmon_menubar_view_values;  
-    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
-    }
-
-//----------------------------------------------------
-//    r_perfmon_menubar_view_values
-//----------------------------------------------------
-//
-RESOURCE MENU_BAR r_perfmon_menubar_view_values
-    {
-    titles=
-        {
-        MENU_TITLE { menu_pane=r_perfmon_app_menu; txt="App"; },
-        MENU_TITLE { menu_pane=r_perfmon_view_values_menu; txt="Values"; }
-        };
-    }
-
-//----------------------------------------------------
-//    r_perfmon_view_values_menu
-//----------------------------------------------------
-//
-
-RESOURCE MENU_PANE r_perfmon_view_values_menu
-    {
-    items=
-        {
-        };
-    }
-
-//----------------------------------------------------
-//    r_perfmon_view_graphs
-//----------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_perfmon_view_graphs
-    {
-    hotkeys=r_perfmon_hotkeys;
-    menubar=r_perfmon_menubar_view_graphs;  
-    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
-    }
-
-//----------------------------------------------------
-//    r_perfmon_menubar_view_graphs
-//----------------------------------------------------
-//
-RESOURCE MENU_BAR r_perfmon_menubar_view_graphs
-    {
-    titles=
-        {
-        MENU_TITLE { menu_pane=r_perfmon_app_menu; txt="App"; },
-        MENU_TITLE { menu_pane=r_perfmon_view_graphs_menu; txt="graphs"; }
-        };
-    }
-
-//----------------------------------------------------
-//    r_perfmon_view_graphs_menu
-//----------------------------------------------------
-//
-
-RESOURCE MENU_PANE r_perfmon_view_graphs_menu
-    {
-    items=
-        {
-        };
-    }
-           
-        
-//----------------------------------------------------
-//    r_perfmon_app_menu
-//----------------------------------------------------
-//
-RESOURCE MENU_PANE r_perfmon_app_menu
-    {
-    items=
-        {
-        MENU_ITEM { command=EPerfMonCmdEnableLogging; txt="Enable Logging"; },
-        MENU_ITEM { command=EPerfMonCmdDisableLogging; txt="Disable Logging"; },
-        MENU_ITEM { command=EPerfMonCmdSettings; txt="Settings"; },
-        MENU_ITEM { command=EPerfMonCmdAbout; txt="About"; },
-        MENU_ITEM { command=EAknCmdExit; txt="Exit"; }
-        };
-    }
-
-//----------------------------------------------------
-//    r_perfmon_settings_dialog
-//    Dialog for setting list
-//----------------------------------------------------
-//
-RESOURCE DIALOG r_perfmon_settings_dialog
-    {
-    flags =
-        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
-        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
-        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
-    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtSettingListBox;
-            id = EPerfMonSettingItemList;
-            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
-            control = LISTBOX
-                {
-                flags = EAknListBoxSelectionList;
-                };
-            }
-        };
-    }
-
-//----------------------------------------------------
-//    r_perfmon_settings_menubar
-//----------------------------------------------------
-//
-
-RESOURCE MENU_BAR r_perfmon_settings_menubar
-    {
-    titles =
-        {
-        MENU_TITLE
-            {
-            menu_pane = r_perfmon_settings_menupane;
-            txt = " ";   // dummy
-            }
-        };
-    }
-
-RESOURCE MENU_PANE r_perfmon_settings_menupane
-    {
-    items =
-        {
-        MENU_ITEM
-            {
-            command = EPerfMonCmdSettingsChange;
-            txt = "Change";
-            },
-        MENU_ITEM
-            {
-            command = EPerfMonCmdSettingsExit;
-            txt = "Exit";
-            }
-        };
-    }
-
-
-//----------------------------------------------------
-//   
-//    Setting item resources
-//
-//----------------------------------------------------
-//
-
-// generic resources
-RESOURCE POPUP_SETTING_LIST r_popup_setting_list_editor
-	{
-	}
-RESOURCE AVKON_SETTING_PAGE r_binary_setting_page
-    {   
-    number = EAknSettingPageNoOrdinalDisplayed;
-    type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-    }
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_yesno_binaryselection_texts
-	{
-	setting_texts_resource = r_yesno_binaryselection_text_array;
-	}
-RESOURCE ARRAY r_yesno_binaryselection_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=0; text = "No"; },
-		AVKON_ENUMERATED_TEXT { value=1; text = "Yes"; }
-		};
-	}
-
-//
-// resources for heartbeat selection
-//
-RESOURCE TBUF r_heartbeat_setting_title
-    {
-    buf = "Heart beat (ms)";
-    }
-RESOURCE AVKON_SETTING_PAGE r_heartbeat_setting_page
-	{
-	type = EAknCtIntegerEdwin;
-	editor_resource_id = r_heartbeat_integer_editor;
-	}
-RESOURCE AVKON_INTEGER_EDWIN r_heartbeat_integer_editor
-	{
-	maxlength = 5;
-	min = 1;
-	max = 99999;
-	}    
-    
-
-//
-// resources for maxsamples selection
-//
-RESOURCE TBUF r_maxsamples_setting_title
-    {
-    buf = "Max samples";
-    }
-RESOURCE AVKON_SETTING_PAGE r_maxsamples_setting_page
-	{
-	type = EAknCtIntegerEdwin;
-	editor_resource_id = r_maxsamples_integer_editor;
-	}
-RESOURCE AVKON_INTEGER_EDWIN r_maxsamples_integer_editor
-	{
-	maxlength = 4;
-	min = 1;
-	max = 9999;
-	} 
-
-
-//
-// resources for priority selection
-//
-RESOURCE TBUF r_priority_setting_title
-    {
-    buf = "Priority";
-    }
-RESOURCE AVKON_SETTING_PAGE r_priority_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_priority_setting_texts
-	{
-	setting_texts_resource = r_priority_text_array;
-	}
-RESOURCE ARRAY r_priority_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMuchLess; text = "Much less"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeLess; text = "Less"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeNormal; text = "Normal"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMore; text = "More"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeMuchMore; text = "Much more"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeRealTime; text = "Real time"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteVeryLow; text = "Abs. very low"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteLow; text = "Abs. low"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteBackground; text = "Abs. background"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteForeground; text = "Abs. foreground"; },
-		AVKON_ENUMERATED_TEXT { value=EThreadPriorityTypeAbsoluteHigh; text = "Abs. high"; }
-		};
-	}
-
-
-//
-// resources for cpumode selection
-//
-RESOURCE TBUF r_cpumode_setting_title
-    {
-    buf = "CPU sampling mode";
-    }
-RESOURCE AVKON_SETTING_PAGE r_cpumode_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_cpumode_setting_texts
-	{
-	setting_texts_resource = r_cpumode_text_array;
-	}
-RESOURCE ARRAY r_cpumode_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=ECPUModeCPUTime; text = "CPU Time"; },
-		AVKON_ENUMERATED_TEXT { value=ECPUModeNOPs; text = "NOPs"; }
-		};
-	}
-
-
-//
-// resources for keepbacklighton selections
-//
-RESOURCE TBUF r_keepbacklighton_setting_title
-    {
-    buf = "Keep backlight on";
-    }
-
-
-//
-// resources for datapopupvisibility selection
-//
-RESOURCE TBUF r_datapopupvisibility_setting_title
-    {
-    buf = "Visibility";
-    }
-RESOURCE AVKON_SETTING_PAGE r_datapopupvisibility_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_datapopupvisibility_setting_texts
-	{
-	setting_texts_resource = r_datapopupvisibility_text_array;
-	}
-RESOURCE ARRAY r_datapopupvisibility_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityAlwaysOn; text = "On"; },
-		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityBackgroundOnly; text = "Backgr. only"; },
-		AVKON_ENUMERATED_TEXT { value=EDataPopupVisbilityAlwaysAlwaysOff; text = "Off"; }
-		};
-	}    
-
-//
-// resources for datapopuplocation selection
-//
-RESOURCE TBUF r_datapopuplocation_setting_title
-    {
-    buf = "Location";
-    }
-RESOURCE AVKON_SETTING_PAGE r_datapopuplocation_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_datapopuplocation_setting_texts
-	{
-	setting_texts_resource = r_datapopuplocation_text_array;
-	}
-RESOURCE ARRAY r_datapopuplocation_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=EDataPopupLocationTopRight; text = "Top right"; },
-		AVKON_ENUMERATED_TEXT { value=EDataPopupLocationBottomMiddle; text = "Bottom middle"; }
-		};
-	}
-
-//
-// resources for sources selection
-//
-RESOURCE TBUF r_sources_setting_title
-    {
-    buf = "Sources";
-    }
-RESOURCE AVKON_SETTING_PAGE r_sources_setting_page
-	{
-	type = EAknSetListBox;
-	editor_resource_id = r_sources_items_listbox;
-	label = "Sources";
-	}	
-RESOURCE LISTBOX r_sources_items_listbox
-	{
-	flags = EAknListBoxMultipleSelection;
-	}	
-
-
-//
-// resources for graphsverticalbar selection
-//
-RESOURCE TBUF r_graphsverticalbar_setting_title
-    {
-    buf = "Vertical bar period (s)";
-    }
-RESOURCE AVKON_SETTING_PAGE r_graphsverticalbar_setting_page
-	{
-	type = EAknCtIntegerEdwin;
-	editor_resource_id = r_graphsverticalbar_integer_editor;
-	}
-RESOURCE AVKON_INTEGER_EDWIN r_graphsverticalbar_integer_editor
-	{
-	maxlength = 3;
-	min = 0;
-	max = 999;
-	} 
-
-
-//
-// resources for loggingmode selection
-//
-RESOURCE TBUF r_loggingmode_setting_title
-    {
-    buf = "Mode";
-    }
-RESOURCE AVKON_SETTING_PAGE r_loggingmode_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_loggingmode_setting_texts
-	{
-	setting_texts_resource = r_loggingmode_text_array;
-	}
-RESOURCE ARRAY r_loggingmode_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=ELoggingModeRDebug; text = "RDebug"; },
-		AVKON_ENUMERATED_TEXT { value=ELoggingModeLogFile; text = "Log file"; },
-		AVKON_ENUMERATED_TEXT { value=ELoggingModeRDebugLogFile; text = "RDebug & log file"; }
-		};
-	}
-
-
-//
-// resources for loggingfilepath selection
-//
-RESOURCE TBUF r_loggingfilepath_setting_title
-    {
-    buf = "Log file path";
-    }
-RESOURCE AVKON_SETTING_PAGE r_loggingfilepath_setting_page
-	{
-	type = EEikCtEdwin;
-	editor_resource_id = r_loggingfilepath_text_editor;
-	}
-
-RESOURCE EDWIN r_loggingfilepath_text_editor
-	{
-	lines = 0;  // expanding to multiple rows
-	maxlength = 63;
-	flags = EEikEdwinNoLineOrParaBreaks;
-	}
-
-  
-// ---------------------------------------------------------
-//   
-//   r_perfmon_about_dialog
-//   About dialog - show version and copyright info etc.
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_perfmon_about_dialog
-    {
-    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtPopupHeadingPane;
-            id = EAknMessageQueryHeaderId;
-            control = AVKON_HEADING
-                {
-                label = "About PerfMon";
-                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
-                };
-            },
-        DLG_LINE
-            {
-            type = EAknCtMessageQuery;
-            id = EAknMessageQueryContentId;
-            control = AVKON_MESSAGE_QUERY
-                {
-                message = "Version 1.0.0 - 6th March 2008. Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.";
-                };
-            }
-        };
-    }
-
-// ---------------------------------------------------------
-//   r_general_confirmation_query
-// ---------------------------------------------------------
-//
-
-RESOURCE DIALOG r_general_confirmation_query
-	{
-	flags = EGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_YES_NO;
-	items =
-		{
-		DLG_LINE
-			{
-			type = EAknCtQuery;
-			id = EGeneralQuery;
-			control = AVKON_CONFIRMATION_QUERY
-				{
-				layout = EConfirmationQueryLayout;
-				};
-			}
-		};
-	}
-
-// ---------------------------------------------------------
-//   r_general_text_query
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_general_text_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_DATA_QUERY
-                {
-                layout = EDataLayout;
-                control = EDWIN
-                    {
-                    width = 256;
-                    lines = 3;
-                    maxlength = 256;
-                    };
-                };
-            }
-        };
-    }
-
-// ---------------------------------------------------------
-//   r_general_numeric_query
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_general_numeric_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control= AVKON_DATA_QUERY
-                {
-                layout = ENumberLayout;
-                control = AVKON_INTEGER_EDWIN
-                    {
-                    min = -999999;
-                    max = 999999;
-                    };
-                };
-            }
-        };
-    }
-
-
-// ---------------------------------------------------------
-//   
-//    RESOURCE LOCALISABLE_APP_INFO
-//
-// ---------------------------------------------------------
-//
-RESOURCE LOCALISABLE_APP_INFO r_perfmon_localisable_app_info
-    {
-    short_caption = "PerfMon";
-    caption_and_icon = 
-    CAPTION_AND_ICON_INFO
-        {
-        caption = "PerfMon";
-
-        number_of_icons = 1;
-
-        // Note for ROM-based apps it is recommended to add the drive letter
-        // icon_file = "z:"APP_BITMAP_DIR"\\myapp_aif.mif";
-        icon_file = APP_BITMAP_DIR"\\perfmon_aif.mif";
-        };
-    }
--- a/perfmon/data/perfmon_reg.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +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 <perfmon.rsg>
-#include <appinfo.rh>
-#include <data_caging_paths_strings.hrh>
-
-
-UID2 KUidAppRegistrationResourceFile
-UID3 0x20011385
-
-
-RESOURCE APP_REGISTRATION_INFO
-    {
-    app_file = "PerfMon";
-    localisable_resource_file = APP_RESOURCE_DIR"\\PerfMon";
-    localisable_resource_id = R_PERFMON_LOCALISABLE_APP_INFO;
-    group_name = "RnD Tools";    
-    }
--- a/perfmon/engine/inc/perfmon.hrh	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +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:  
-*
-*/
-
-
-#ifndef PERFMON_HRH
-#define PERFMON_HRH
-
-enum TPerfMonCommandIds
-    {
-    EPerfMonCmdEnableLogging = 1,
-    EPerfMonCmdDisableLogging,
-    EPerfMonCmdSettings,
-    EPerfMonCmdAbout,
-
-    EPerfMonCmdSettingsChange,
-    EPerfMonCmdSettingsExit,
-    EPerfMonCmdSettingsBack,
-    
-    EPerfMonSettingItemList = 1000
-    };
-
-enum TPerfMonMainViewTabs
-    {
-    ETabMainViewValues = 1,
-    ETabMainViewGraphs    
-    };
-               
-enum TPerfMonSettingListTabs
-    {
-    ETabSettingsGeneral = 0,
-    ETabSettingsDataPopup,    
-    ETabSettingsGraphs,    
-    ETabSettingsLogging    
-    };
-    
-enum TPerfMonSettingListIds
-    {
-    ESettingListItemHeartBeat = 0,
-    ESettingListItemMaxSamples,
-    ESettingListItemPriority,
-    ESettingListItemCPUMode,
-    ESettingListItemKeepBackLightOn,
-
-    ESettingListItemDataPopupVisbility,
-    ESettingListItemDataPopupLocation,
-    ESettingListItemDataPopupSources,
-
-    ESettingListItemGraphsVerticalBarPeriod,
-    ESettingListItemGraphsSources,
-
-    ESettingListItemLoggingMode,
-    ESettingListItemLoggingFilePath,
-    ESettingListItemLoggingSources
-    };
-
-enum TPerfMonSettingThreadPriorityTypes
-    {
-    EThreadPriorityTypeMuchLess = 0,    
-    EThreadPriorityTypeLess,    
-    EThreadPriorityTypeNormal,    
-    EThreadPriorityTypeMore,    
-    EThreadPriorityTypeMuchMore,    
-    EThreadPriorityTypeRealTime,    
-    EThreadPriorityTypeAbsoluteVeryLow,    
-    EThreadPriorityTypeAbsoluteLow,    
-    EThreadPriorityTypeAbsoluteBackground,    
-    EThreadPriorityTypeAbsoluteForeground,    
-    EThreadPriorityTypeAbsoluteHigh
-    };
-
-enum TPerfMonSettingCPUModes
-    {
-    ECPUModeNotSet = -1,
-    ECPUModeCPUTime,
-    ECPUModeNOPs
-    };
-
-enum TPerfMonSettingDataPopupVisbilities
-    {
-    EDataPopupVisbilityAlwaysOn = 0,
-    EDataPopupVisbilityBackgroundOnly,
-    EDataPopupVisbilityAlwaysAlwaysOff
-    };
-
-enum TPerfMonSettingDataPopupLocations
-    {
-    EDataPopupLocationTopRight = 0,
-    EDataPopupLocationBottomMiddle
-    };
-        
-enum TPerfMonSettingSources
-    {
-    ESourceCPU = 0,
-    ESourceRAM,
-    ESourceC,
-    ESourceD,
-    ESourceE,
-    ESourceF,
-    ESourceG,
-    ESourceH,
-    ESourceI,
-    ESourcesLength // this should be always the last!
-    };
-    
-enum TPerfMonSettingLoggingMode
-    {
-    ELoggingModeRDebug = 0,
-    ELoggingModeLogFile,
-    ELoggingModeRDebugLogFile
-    };
-
-#endif      // PERFMON_HRH
--- a/perfmon/engine/inc/perfmon_engine.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +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:  
-*
-*/
-
-
-#ifndef PERFMON_ENGINE_H
-#define PERFMON_ENGINE_H
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <apgcli.h>
-#include <gdi.h>
-
-#include "perfmon.hrh"
-
-
-// setting keys (do not change uids of existing keys to maintain compatibility to older versions!)
-const TUid KPMSettingHeartBeat                              = { 0x00 };
-const TUid KPMSettingMaxSamples                             = { 0x01 };
-const TUid KPMSettingPriority                               = { 0x02 };
-const TUid KPMSettingCPUMode                                = { 0x03 };
-const TUid KPMSettingKeepBackLightOn                        = { 0x04 };
-
-const TUid KPMSettingDataPopupVisbility                     = { 0x05 };
-const TUid KPMSettingDataPopupLocation                      = { 0x06 };
-const TUid KPMSettingDataPopupSources                       = { 0x07 };
-
-const TUid KPMSettingGraphsVerticalBarPeriod                = { 0x08 };
-const TUid KPMSettingGraphsSources                          = { 0x09 };
-
-const TUid KPMSettingLoggingMode                            = { 0x0A };
-const TUid KPMSettingLoggingFilePath                        = { 0x0B };
-const TUid KPMSettingLoggingSources                         = { 0x0C };
-
-// FORWARD DECLARATIONS
-class CPerfMonValuesContainer;
-class CPerfMonGraphsContainer;
-class CPerfMonDataPopupContainer;
-class CEikonEnv;
-class CCoeControl;
-class CDictionaryFileStore;
-
-
-// CLASS DECLARATIONS
-
-
-class TPerfMonSources
-    {
-public:
-    TBool iSrcEnabled[ESourcesLength];
-
-public:
-    inline void SetDefaults1()
-        {
-        iSrcEnabled[ESourceCPU] = ETrue;
-        iSrcEnabled[ESourceRAM] = ETrue;
-        iSrcEnabled[ESourceC]   = ETrue;
-        iSrcEnabled[ESourceD]   = EFalse;
-        iSrcEnabled[ESourceE]   = EFalse;
-        iSrcEnabled[ESourceF]   = EFalse;
-        iSrcEnabled[ESourceG]   = EFalse;
-        iSrcEnabled[ESourceH]   = EFalse;
-        iSrcEnabled[ESourceI]   = EFalse;        
-        }
-    inline void SetDefaults2()
-        {
-        iSrcEnabled[ESourceCPU] = ETrue;
-        iSrcEnabled[ESourceRAM] = ETrue;
-        iSrcEnabled[ESourceC]   = EFalse;
-        iSrcEnabled[ESourceD]   = EFalse;
-        iSrcEnabled[ESourceE]   = EFalse;
-        iSrcEnabled[ESourceF]   = EFalse;
-        iSrcEnabled[ESourceG]   = EFalse;
-        iSrcEnabled[ESourceH]   = EFalse;
-        iSrcEnabled[ESourceI]   = EFalse;        
-        }
-    TInt EnabledSourcesCount()
-        {
-        TInt srcCount(0);
-        
-        for (TInt i=0; i<ESourcesLength; i++)
-            {
-            if (iSrcEnabled[i])
-                srcCount++;
-            }
-        
-        return srcCount;
-        }
-    };
-    
-
-class TPerfMonSettings
-    {
-public:
-    TInt                iHeartBeat;
-    TInt                iMaxSamples;
-    TInt                iPriority;
-    TInt                iCPUMode;
-    TBool               iKeepBacklightOn;
-
-    TInt                iDataPopupVisibility;
-    TInt                iDataPopupLocation;
-    TPerfMonSources     iDataPopupSources;
-
-    TInt                iGraphsVerticalBarPeriod;
-    TPerfMonSources     iGraphsSources;
-
-    TInt                iLoggingMode;
-    TFileName           iLoggingFilePath;
-    TPerfMonSources     iLoggingSources;
-    
-    TBool               iLoggingEnabled;
-    };
-
-
-class TSampleData
-	{
-public:
-    TInt64                          iFree;
-    TInt64                          iSize;
-    TTimeIntervalMicroSeconds       iTimeFromStart;
-	}; 
-
-typedef CArrayFixSeg<TSampleData> CSampleDataArray;
-
-
-class TSampleEntry
-	{
-public:
-    TBuf<16>            iDescription;
-    TBuf<16>            iUnitTypeShort; //eg. b
-    TBuf<16>            iUnitTypeLong;  //eg. bytes
-    TInt                iDriveNumber;   //used only for disk drives
-    TRgb                iGraphColor;
-    CSampleDataArray*   iSampleDataArray;
-	}; 
-	
-typedef CArrayFixSeg<TSampleEntry> CSampleEntryArray;
-
-
-
-class CPerfMonEngine : public CActive
-	{
-public:
-	~CPerfMonEngine();
-	void ActivateEngineL();
-	void DeActivateEngineL();
-    void EnableLogging(TBool aEnable);
-
-private:
-	void RunL();
-	void DoCancel();
-
-protected:
-	CPerfMonEngine();
-	void ConstructL();
-    void LoadSettingsL();
-    void SaveSettingsL();
-    void OpenLogFile(TBool aOpen);
-    void CreateSamplesDataArrayL();
-    void UpdateSamplesDataL();
-    void AppendLatestSamplesToLogsL();
-    void ActivateCPUMonitoringL();
-    TBool OpenHandleToNullThread();
-    void DeActivateCPUMonitoring();
-    TBool CPUTimeSupported();
-    TThreadPriority SettingItemToThreadPriority(TInt aIndex);
-    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue);
-    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TDes& aValue);
-    void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TPerfMonSources& aValue);
-    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TInt& aValue);
-    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TDes& aValue);
-    void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TPerfMonSources& aValue);
-    
-protected:
-    virtual void SendDrawEventToContainersL() = 0;
-    virtual void HandleSettingsChangeL();
-    
-public:
-    inline TPerfMonSettings& Settings() { return iSettings; }
-    inline CEikonEnv* EikonEnv() { return iEnv; }
-    inline RApaLsSession& LsSession() { return iLs; }
-
-    inline CSampleEntryArray* SampleEntryArray() { return iSampleEntryArray; } 
-
-protected:
-    RTimer                          iTimer;
-    CEikonEnv*                      iEnv;
-    TPerfMonSettings                iSettings;
-    RApaLsSession                   iLs;
-    CSampleEntryArray*              iSampleEntryArray;
-    TTime                           iStartTime;
-
-    TInt                            iCurrentCPUMode;
-
-    RThread                         iNullThread;
-    RThread                         iCPULoadThread;
-	TBool                           iCPULoadCalibrating;
-	TInt                            iCPULoadCalibrationCounter;
-	TInt64                          iCPULoadMaxValue;
-	TInt64                          iCPULoadPreviousValue;    
-	TInt64                          iCPULoadCounter;
-    TTime                           iPreviousTime;
-    
-    TBool                           iLogFileInitialized;
-    RFile                           iLogFile;
-    };
- 
-
-#endif
--- a/perfmon/engine/src/perfmon_engine.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,925 +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 FILES
-#include "perfmon_engine.h"
-#include <coeutils.h>
-#include <bautils.h>
-#include <eikenv.h>
-#include <e32hal.h>
-#include <u32std.h>
-#include <s32file.h>
-#include <akntitle.h> 
-#include <eikspane.h>
-#include <aknnotewrappers.h>  
-_LIT(KDefaultLogFilePath, "c:\\data\\PerfMon.log");
-
-const TInt KCalibrationLength = 2;
-const TInt KMinimumSamplesLength = 16;
-const TInt KCPUTimeMultiplier = 1000000; // used to avoid TReal conversions
-
-const TInt KSettingsDrive = EDriveC;
-_LIT(KSettingsFileName, "perfmon_settings.ini");
-
-// --------------------------------------------------------------------------------------------
-
-TInt CPULoadCount(TAny* aInt)
-    {
-    // increase the counter
-    (*(TUint*) aInt)++;
-    return 1;
-    }
-
-TInt CPULoadNOPThread(TAny* aParam)
-    {
-    CTrapCleanup* pC = CTrapCleanup::New();
-    CActiveScheduler* pS = new CActiveScheduler;
-    CActiveScheduler::Install(pS);
-
-    CIdle* idle = CIdle::NewL(CActive::EPriorityLow);
-    TCallBack cb(CPULoadCount, aParam);
-    idle->Start(cb);
-
-    pS->Start();
-
-    delete idle;
-    delete pS;
-    delete pC;
-
-    return 0;
-    }
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CPerfMonEngine::CPerfMonEngine() :
-    CActive(EPriorityUserInput)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::ConstructL()
-    {
-    iCurrentCPUMode = ECPUModeNotSet;
-    iLogFileInitialized = EFalse;
-
-    iEnv = CEikonEnv::Static();
-    User::LeaveIfError(iLs.Connect());
-
-    User::LeaveIfError(iTimer.CreateLocal());
-    CActiveScheduler::Add(this);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::ActivateEngineL()
-    {
-    // load settings
-    TRAP_IGNORE(LoadSettingsL());
-
-    // create data storages for the samples
-    CreateSamplesDataArrayL();
-
-    // set default modes
-    HandleSettingsChangeL();
-
-    // start sampling data immediately (jump to RunL)    
-    iTimer.After(iStatus, 100);
-    SetActive();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::DeActivateEngineL()
-    {
-    Cancel();
-
-    DeActivateCPUMonitoring();
-
-    // close log file
-    OpenLogFile(EFalse);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonEngine::~CPerfMonEngine()
-    {
-    iTimer.Close();
-
-    // clear data storages
-    if (iSampleEntryArray)
-        {
-        for (TInt i = 0; i < iSampleEntryArray->Count(); i++)
-            {
-            delete iSampleEntryArray->At(i).iSampleDataArray;
-            }
-
-        delete iSampleEntryArray;
-        }
-
-    iLs.Close();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::DoCancel()
-    {
-    iTimer.Cancel();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::RunL()
-    {
-    // calculate new values 
-    UpdateSamplesDataL();
-
-    // log changes
-    AppendLatestSamplesToLogsL();
-
-    // redraw views
-    SendDrawEventToContainersL();
-
-    // continue
-    iTimer.After(iStatus, iSettings.iHeartBeat * 1000); // convert from milliseconds to microseconds
-    SetActive();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::HandleSettingsChangeL()
-    {
-    // set priority of the thread
-    RThread().SetPriority(SettingItemToThreadPriority(iSettings.iPriority));
-
-    // init cpu monitor if setting has been changed
-    if (iCurrentCPUMode != iSettings.iCPUMode)
-        {
-        DeActivateCPUMonitoring();
-        ActivateCPUMonitoringL();
-        }
-
-    // close log file
-    OpenLogFile(EFalse);
-
-    // enable log file
-    if (iSettings.iLoggingEnabled && (iSettings.iLoggingMode
-            == ELoggingModeLogFile || iSettings.iLoggingMode
-            == ELoggingModeRDebugLogFile))
-        OpenLogFile(ETrue);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::EnableLogging(TBool aEnable)
-    {
-    if (aEnable)
-        {
-        if (iSettings.iLoggingMode == ELoggingModeLogFile
-                || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
-            OpenLogFile(ETrue);
-
-        iSettings.iLoggingEnabled = ETrue;
-        }
-    else // disable
-        {
-        iSettings.iLoggingEnabled = EFalse;
-        OpenLogFile(EFalse);
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::OpenLogFile(TBool aOpen)
-    {
-    // open log file for writing
-    if (aOpen)
-        {
-        if (!iLogFileInitialized)
-            {
-            TInt err(KErrNone);
-
-            // open the log file for writing
-            if (iLogFile.Open(iEnv->FsSession(), iSettings.iLoggingFilePath,
-                    EFileWrite) != KErrNone)
-                {
-                iEnv->FsSession().MkDirAll(iSettings.iLoggingFilePath);
-                err = iLogFile.Replace(iEnv->FsSession(),
-                        iSettings.iLoggingFilePath, EFileWrite);
-                }
-            else
-                {
-                // file opens correctly, seek to the end
-                TInt fileSize = 0;
-                iLogFile.Size(fileSize);
-                err = iLogFile.Seek(ESeekCurrent, fileSize);
-                }
-
-            if (err == KErrNone)
-                {
-                iLogFileInitialized = ETrue;
-                }
-            else
-                {
-                // show error
-                CAknErrorNote* note = new (ELeave) CAknErrorNote();
-                note->ExecuteLD(_L("Unable to create log file, check settings"));
-                }
-            }
-        }
-
-    // close handle to log file
-    else
-        {
-        if (iLogFileInitialized)
-            {
-            iLogFile.Flush();
-            iLogFile.Close();
-
-            iLogFileInitialized = EFalse;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::ActivateCPUMonitoringL()
-    {
-    // reset counter variables
-    iCPULoadCalibrating = ETrue;
-    iCPULoadCalibrationCounter = 0;
-    iCPULoadMaxValue = 999999999;
-    iCPULoadPreviousValue = 1;
-    iCPULoadCounter = 0;
-
-    // use null thread is cpu time is supported and the setting is on
-    if (CPUTimeSupported() && iSettings.iCPUMode == ECPUModeCPUTime)
-        {
-        // try to open handle to null thread
-        if (OpenHandleToNullThread())
-            {
-            // handle is open, get initial value
-            TTimeIntervalMicroSeconds time;
-            iNullThread.GetCpuTime(time);
-            iCPULoadPreviousValue = time.Int64();
-            iPreviousTime.HomeTime();
-
-            iCurrentCPUMode = ECPUModeCPUTime;
-            return; // cpu time is succesfully in use           
-            }
-        }
-
-    // otherwise use normal sampling with nops    
-    iCurrentCPUMode = ECPUModeNotSet;
-
-    // show a warning if cpu time cannot be taken in use
-    if (iSettings.iCPUMode == ECPUModeCPUTime)
-        {
-        CAknInformationNote* note = new (ELeave) CAknInformationNote();
-        note->ExecuteLD(
-                _L("CPU Time not supported in this system, using NOPs sampling"));
-        }
-
-    // create a thread for CPU load monitoring
-    User::LeaveIfError(iCPULoadThread.Create(_L("PerfMonCPULoad"),
-            CPULoadNOPThread, 0x1000, 0x1000, 0x100000, &iCPULoadCounter));
-    iCPULoadThread.SetPriority(EPriorityAbsoluteVeryLow);
-    iCPULoadThread.Resume();
-
-    iCurrentCPUMode = ECPUModeNOPs; // NOPs taken succesfully in use
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CPerfMonEngine::OpenHandleToNullThread()
-    {
-    // find the kernel process and then the null thread
-    TFindProcess fp(_L("ekern.exe*"));
-
-    TFullName kernelName;
-    if (fp.Next(kernelName) == KErrNone)
-        {
-        // process found, append null thread identifier
-        kernelName.Append(_L("::Null"));
-
-        // find the thread
-        TFindThread ft(kernelName);
-
-        TFullName threadName;
-        if (ft.Next(threadName) == KErrNone)
-            {
-            // open instance to the thread
-            if (iNullThread.Open(threadName) != KErrNone)
-                return EFalse;
-            }
-        }
-
-    // process not found
-    else
-        return EFalse;
-
-    // success!
-    return ETrue;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::DeActivateCPUMonitoring()
-    {
-    if (iCurrentCPUMode == ECPUModeCPUTime)
-        {
-        iNullThread.Close();
-        }
-
-    else if (iCurrentCPUMode == ECPUModeNOPs)
-        {
-        // kill the cpu load thread
-        iCPULoadThread.Kill(0);
-        iCPULoadThread.Close();
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CPerfMonEngine::CPUTimeSupported()
-    {
-    TTimeIntervalMicroSeconds time;
-    TInt err = RThread().GetCpuTime(time);
-
-    if (err == KErrNone && time.Int64() > 0)
-        return ETrue;
-    else
-        return EFalse;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TThreadPriority CPerfMonEngine::SettingItemToThreadPriority(TInt aIndex)
-    {
-    TThreadPriority threadPriority = EPriorityNull;
-
-    switch (aIndex)
-        {
-        case EThreadPriorityTypeMuchLess:
-            {
-            threadPriority = EPriorityMuchLess;
-            break;
-            }
-        case EThreadPriorityTypeLess:
-            {
-            threadPriority = EPriorityLess;
-            break;
-            }
-        case EThreadPriorityTypeNormal:
-            {
-            threadPriority = EPriorityNormal;
-            break;
-            }
-        case EThreadPriorityTypeMore:
-            {
-            threadPriority = EPriorityMore;
-            break;
-            }
-        case EThreadPriorityTypeMuchMore:
-            {
-            threadPriority = EPriorityMuchMore;
-            break;
-            }
-        case EThreadPriorityTypeRealTime:
-            {
-            threadPriority = EPriorityRealTime;
-            break;
-            }
-        case EThreadPriorityTypeAbsoluteVeryLow:
-            {
-            threadPriority = EPriorityAbsoluteVeryLow;
-            break;
-            }
-        case EThreadPriorityTypeAbsoluteLow:
-            {
-            threadPriority = EPriorityAbsoluteLow;
-            break;
-            }
-        case EThreadPriorityTypeAbsoluteBackground:
-            {
-            threadPriority = EPriorityAbsoluteBackground;
-            break;
-            }
-        case EThreadPriorityTypeAbsoluteForeground:
-            {
-            threadPriority = EPriorityAbsoluteForeground;
-            break;
-            }
-        case EThreadPriorityTypeAbsoluteHigh:
-            {
-            threadPriority = EPriorityAbsoluteHigh;
-            break;
-            }
-
-        default:
-            {
-            User::Panic(_L("Wrong tp index"), 276);
-            break;
-            }
-        }
-
-    return threadPriority;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::CreateSamplesDataArrayL()
-    {
-    TInt
-            maxSamples =
-                    iSettings.iMaxSamples >= KMinimumSamplesLength ? iSettings.iMaxSamples
-                            : KMinimumSamplesLength;
-
-    // create the data structure to store all samples
-    iSampleEntryArray = new (ELeave) CSampleEntryArray(16);
-
-    // add all source entries
-    for (TInt i = 0; i < ESourcesLength; i++)
-        {
-        TSampleEntry newSampleEntry;
-
-        if (i == ESourceCPU)
-            {
-            newSampleEntry.iDescription.Copy(_L("CPU"));
-            newSampleEntry.iUnitTypeShort.Copy(KNullDesC);
-            newSampleEntry.iUnitTypeLong.Copy(KNullDesC);
-            newSampleEntry.iDriveNumber = -1;
-            newSampleEntry.iGraphColor = KRgbYellow;
-            }
-
-        else if (i == ESourceRAM)
-            {
-            newSampleEntry.iDescription.Copy(_L("RAM"));
-            newSampleEntry.iUnitTypeShort.Copy(_L("b"));
-            newSampleEntry.iUnitTypeLong.Copy(_L("bytes"));
-            newSampleEntry.iDriveNumber = -1;
-            newSampleEntry.iGraphColor = KRgbGreen;
-            }
-
-        else //drives
-            {
-            TChar driveLetter = 'C' + i - ESourceC; // C is the first drive
-
-            newSampleEntry.iDescription.Append(driveLetter);
-            newSampleEntry.iDescription.Append(_L(":"));
-            newSampleEntry.iUnitTypeShort.Copy(_L("b"));
-            newSampleEntry.iUnitTypeLong.Copy(_L("bytes"));
-
-            iEnv->FsSession().CharToDrive(driveLetter,
-                    newSampleEntry.iDriveNumber);
-
-            newSampleEntry.iGraphColor = KRgbCyan;
-            newSampleEntry.iGraphColor.SetGreen(255 - (i - ESourceC) * 30);
-            newSampleEntry.iGraphColor.SetRed(i * 30);
-            }
-
-        newSampleEntry.iSampleDataArray = new (ELeave) CSampleDataArray(
-                maxSamples);
-
-        iSampleEntryArray->AppendL(newSampleEntry);
-        }
-
-    // save current time as start time
-    iStartTime.HomeTime();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::UpdateSamplesDataL()
-    {
-    // reset inactivity timers
-    if (iSettings.iKeepBacklightOn)
-        User::ResetInactivityTime();
-
-    // get current time
-    TTime currentTime;
-    currentTime.HomeTime();
-
-    // calculate time difference
-    TTimeIntervalMicroSeconds timeDeltaFromPreviousSample =
-            currentTime.MicroSecondsFrom(iPreviousTime);
-
-    // remember current time as previous
-    iPreviousTime = currentTime;
-
-    // get CPU
-    TInt64 cpuLoadDelta(0);
-    TInt64 cpuLoadFree(0);
-    TInt64 cpuLoadSize(0);
-    TInt64 currentCPUValue(0);
-
-    if (iCurrentCPUMode == ECPUModeCPUTime || iCurrentCPUMode == ECPUModeNOPs)
-        {
-        if (iCurrentCPUMode == ECPUModeCPUTime)
-            {
-            TTimeIntervalMicroSeconds time;
-            iNullThread.GetCpuTime(time);
-            currentCPUValue = time.Int64();
-            }
-        else if (iCurrentCPUMode == ECPUModeNOPs)
-            {
-            currentCPUValue = iCPULoadCounter;
-            }
-
-        // get delta and store the previous value
-        cpuLoadDelta = currentCPUValue - iCPULoadPreviousValue;
-        iCPULoadPreviousValue = currentCPUValue;
-
-        // velocity = distance / time
-        cpuLoadFree = cpuLoadDelta * KCPUTimeMultiplier
-                / timeDeltaFromPreviousSample.Int64();
-
-        // detect maximum value
-        if (cpuLoadFree > iCPULoadMaxValue)
-            iCPULoadMaxValue = cpuLoadFree;
-
-        // check calibration status      
-        if (iCPULoadCalibrating)
-            {
-            iCPULoadCalibrationCounter++;
-            cpuLoadSize = cpuLoadFree;
-
-            // check if need to calibrate anymore
-            if (iCPULoadCalibrationCounter > KCalibrationLength)
-                {
-                iCPULoadCalibrating = EFalse;
-
-                // from the samples, get the minimum value, and let it be the max value 
-                for (TInt i = 0; i
-                        < iSampleEntryArray->At(0).iSampleDataArray->Count(); i++)
-                    {
-                    TInt64 newCPULoadMaxValue = iCPULoadMaxValue;
-
-                    if (iSampleEntryArray->At(0).iSampleDataArray->At(i).iFree
-                            < newCPULoadMaxValue)
-                        {
-                        newCPULoadMaxValue
-                                = iSampleEntryArray->At(0).iSampleDataArray->At(
-                                        i).iFree;
-                        }
-
-                    iCPULoadMaxValue = newCPULoadMaxValue;
-                    }
-
-                // adjust priority of the poller thread
-                if (iCurrentCPUMode == ECPUModeNOPs)
-                    {
-                    iCPULoadThread.SetPriority(EPriorityAbsoluteVeryLow);
-                    }
-                }
-
-            }
-        else
-            {
-            cpuLoadSize = iCPULoadMaxValue;
-            }
-        }
-
-    // save cpu sample data    
-    TSampleData cpuSample;
-    cpuSample.iFree = cpuLoadFree;
-    cpuSample.iSize = cpuLoadSize;
-    cpuSample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
-
-    iSampleEntryArray->At(0).iSampleDataArray->InsertL(0, cpuSample);
-
-    // get ram memory
-    TMemoryInfoV1Buf ramMemory;
-    UserHal::MemoryInfo(ramMemory);
-
-    TSampleData memorySample;
-    memorySample.iFree = ramMemory().iFreeRamInBytes;
-    memorySample.iSize = ramMemory().iMaxFreeRamInBytes;
-    memorySample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
-
-    iSampleEntryArray->At(1).iSampleDataArray->InsertL(0, memorySample);
-
-    // all drives
-    for (TInt i = 2; i < iSampleEntryArray->Count(); i++)
-        {
-        TSampleData driveSample;
-
-        // get volume info from RFs
-        TVolumeInfo volumeInfo;
-        if (iEnv->FsSession().Volume(volumeInfo,
-                iSampleEntryArray->At(i).iDriveNumber) == KErrNone)
-            {
-            driveSample.iFree = volumeInfo.iFree;
-            driveSample.iSize = volumeInfo.iSize;
-            }
-        else
-            {
-            driveSample.iFree = 0;
-            driveSample.iSize = 0;
-            }
-
-        driveSample.iTimeFromStart = currentTime.MicroSecondsFrom(iStartTime);
-
-        iSampleEntryArray->At(i).iSampleDataArray->InsertL(0, driveSample);
-        }
-
-    // compress sample data arrays to save memory
-    TInt curLength(iSampleEntryArray->At(0).iSampleDataArray->Count());
-
-    TInt
-            maxSamples =
-                    iSettings.iMaxSamples >= KMinimumSamplesLength ? iSettings.iMaxSamples
-                            : KMinimumSamplesLength;
-
-    if (curLength > maxSamples && curLength % 5 == 0)
-        {
-        for (TInt i = 0; i < iSampleEntryArray->Count(); i++)
-            {
-            iSampleEntryArray->At(i).iSampleDataArray->ResizeL(maxSamples); // looses old samples
-            iSampleEntryArray->At(i).iSampleDataArray->Compress();
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::AppendLatestSamplesToLogsL()
-    {
-    if (iSettings.iLoggingEnabled && SampleEntryArray())
-        {
-        // loop all sources
-        for (TInt i = 0; i < SampleEntryArray()->Count(); i++)
-            {
-            // check if this setting has been enabled and it has some data
-            if (iSettings.iLoggingSources.iSrcEnabled[i]
-                    && SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
-                {
-                // get current sample
-                TSampleData& currentSample =
-                        SampleEntryArray()->At(i).iSampleDataArray->At(0);
-
-                TBuf<128> buf;
-                buf.Append(_L("PERFMON;"));
-                buf.Append(SampleEntryArray()->At(i).iDescription);
-                buf.Append(_L(";"));
-                buf.AppendNum(currentSample.iTimeFromStart.Int64());
-                buf.Append(_L(";"));
-                buf.AppendNum(currentSample.iFree);
-                buf.Append(_L(";"));
-                buf.AppendNum(currentSample.iSize);
-
-                // print to RDebug
-                if (iSettings.iLoggingMode == ELoggingModeRDebug
-                        || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
-                    {
-                    RDebug::Print(buf);
-                    }
-
-                // print to log file
-                if (iSettings.iLoggingMode == ELoggingModeLogFile
-                        || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
-                    {
-                    buf.Append(_L("\r\n"));
-
-                    TBuf8<128> buf8;
-                    buf8.Copy(buf);
-
-                    iLogFile.Write(buf8);
-                    }
-                }
-            }
-        }
-    }
-
-void CPerfMonEngine::LoadSettingsL()
-    {
-    // set defaults
-    iSettings.iHeartBeat = 600;
-    iSettings.iMaxSamples = 64;
-    iSettings.iPriority = EThreadPriorityTypeNormal;
-    iSettings.iCPUMode = ECPUModeCPUTime;
-    iSettings.iKeepBacklightOn = ETrue;
-
-    iSettings.iDataPopupVisibility = EDataPopupVisbilityAlwaysOn;
-    // TODO: remove the next line once data popup is working
-    iSettings.iDataPopupVisibility = EDataPopupVisbilityAlwaysAlwaysOff;
-    iSettings.iDataPopupLocation = EDataPopupLocationTopRight;
-    iSettings.iDataPopupSources.SetDefaults1();
-
-    iSettings.iGraphsVerticalBarPeriod = 5;
-    iSettings.iGraphsSources.SetDefaults2();
-
-    iSettings.iLoggingMode = ELoggingModeRDebug;
-    iSettings.iLoggingFilePath.Copy(KDefaultLogFilePath);
-    iSettings.iLoggingSources.SetDefaults2();
-
-    iSettings.iLoggingEnabled = EFalse;
-
-    // make sure that the private path of this app in c-drive exists
-    iEnv->FsSession().CreatePrivatePath(KSettingsDrive); // c:\\private\\20011385\\
-    
-    // handle settings always in the private directory 
-    if (iEnv->FsSession().SetSessionToPrivate(KSettingsDrive) == KErrNone)
-        {
-        const TUid KUidPerfMon =
-            {
-            0x20011385
-            };
-        // open or create a dictionary file store
-        CDictionaryFileStore* settingsStore = CDictionaryFileStore::OpenLC(
-                iEnv->FsSession(), KSettingsFileName, KUidPerfMon);
-
-        LoadDFSValueL(settingsStore, KPMSettingHeartBeat, iSettings.iHeartBeat);
-        LoadDFSValueL(settingsStore, KPMSettingMaxSamples,
-                iSettings.iMaxSamples);
-        LoadDFSValueL(settingsStore, KPMSettingPriority, iSettings.iPriority);
-        
-        LoadDFSValueL(settingsStore, KPMSettingCPUMode, iSettings.iCPUMode);
-        
-        LoadDFSValueL(settingsStore, KPMSettingKeepBackLightOn,
-                iSettings.iKeepBacklightOn);
-
-        LoadDFSValueL(settingsStore, KPMSettingDataPopupVisbility,
-                iSettings.iDataPopupVisibility);
-        LoadDFSValueL(settingsStore, KPMSettingDataPopupLocation,
-                iSettings.iDataPopupLocation);
-        LoadDFSValueL(settingsStore, KPMSettingDataPopupSources,
-                iSettings.iDataPopupSources);
-
-        LoadDFSValueL(settingsStore, KPMSettingGraphsVerticalBarPeriod,
-                iSettings.iGraphsVerticalBarPeriod);
-        LoadDFSValueL(settingsStore, KPMSettingGraphsSources,
-                iSettings.iGraphsSources);
-
-        LoadDFSValueL(settingsStore, KPMSettingLoggingMode,
-                iSettings.iLoggingMode);
-        LoadDFSValueL(settingsStore, KPMSettingLoggingFilePath,
-                iSettings.iLoggingFilePath);
-        LoadDFSValueL(settingsStore, KPMSettingLoggingSources,
-                iSettings.iLoggingSources);
-
-        CleanupStack::PopAndDestroy(); // settingsStore         
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonEngine::SaveSettingsL()
-    {
-    // handle settings always in c:\\private\\20011385\\
-    if (iEnv->FsSession().SetSessionToPrivate( KSettingsDrive ) == KErrNone)
-        {
-        // delete existing store to make sure that it is clean and not eg corrupted
-        if (BaflUtils::FileExists(iEnv->FsSession(), KSettingsFileName))
-            {
-            iEnv->FsSession().Delete(KSettingsFileName);
-            }
-
-        const TUid KUidPerfMon =
-            {
-            0x20011385
-            };
-        // create a dictionary file store
-        CDictionaryFileStore* settingsStore = CDictionaryFileStore::OpenLC(
-                iEnv->FsSession(), KSettingsFileName, KUidPerfMon);
-
-        SaveDFSValueL(settingsStore, KPMSettingHeartBeat, iSettings.iHeartBeat);
-        SaveDFSValueL(settingsStore, KPMSettingMaxSamples,
-                iSettings.iMaxSamples);
-        SaveDFSValueL(settingsStore, KPMSettingPriority, iSettings.iPriority);
-        SaveDFSValueL(settingsStore, KPMSettingCPUMode, iSettings.iCPUMode);
-        SaveDFSValueL(settingsStore, KPMSettingKeepBackLightOn,
-                iSettings.iKeepBacklightOn);
-
-        SaveDFSValueL(settingsStore, KPMSettingDataPopupVisbility,
-                iSettings.iDataPopupVisibility);
-        SaveDFSValueL(settingsStore, KPMSettingDataPopupLocation,
-                iSettings.iDataPopupLocation);
-        SaveDFSValueL(settingsStore, KPMSettingDataPopupSources,
-                iSettings.iDataPopupSources);
-
-        SaveDFSValueL(settingsStore, KPMSettingGraphsVerticalBarPeriod,
-                iSettings.iGraphsVerticalBarPeriod);
-        SaveDFSValueL(settingsStore, KPMSettingGraphsSources,
-                iSettings.iGraphsSources);
-
-        SaveDFSValueL(settingsStore, KPMSettingLoggingMode,
-                iSettings.iLoggingMode);
-        SaveDFSValueL(settingsStore, KPMSettingLoggingFilePath,
-                iSettings.iLoggingFilePath);
-        SaveDFSValueL(settingsStore, KPMSettingLoggingSources,
-                iSettings.iLoggingSources);
-
-        settingsStore->CommitL();
-        CleanupStack::PopAndDestroy(); // settingsStore             
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, TInt& aValue)
-    {
-    if (aDicFS->IsPresentL(aUid))
-        {
-        RDictionaryReadStream in;
-        in.OpenLC(*aDicFS, aUid);
-        aValue = in.ReadInt16L();
-        CleanupStack::PopAndDestroy(); // in        
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, TDes& aValue)
-    {
-    if (aDicFS->IsPresentL(aUid))
-        {
-        RDictionaryReadStream in;
-        in.OpenLC(*aDicFS, aUid);
-        TInt bufLength = in.ReadInt16L(); // get length of descriptor
-        in.ReadL(aValue, bufLength); // get the descriptor itself
-        CleanupStack::PopAndDestroy(); // in
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, TPerfMonSources& aValue)
-    {
-    if (aDicFS->IsPresentL(aUid))
-        {
-        RDictionaryReadStream in;
-        in.OpenLC(*aDicFS, aUid);
-        TInt bufLength = in.ReadInt16L(); // get length of the array
-
-        if (bufLength < 0 || bufLength > ESourcesLength) // check for validaty
-            User::Leave(KErrNotSupported);
-
-        for (TInt i = 0; i < bufLength; i++) // get all items
-            aValue.iSrcEnabled[i] = in.ReadInt16L();
-
-        CleanupStack::PopAndDestroy(); // in
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, const TInt& aValue)
-    {
-    RDictionaryWriteStream out;
-    out.AssignLC(*aDicFS, aUid);
-    out.WriteInt16L(aValue);
-    out.CommitL();
-    CleanupStack::PopAndDestroy(); // out
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, const TDes& aValue)
-    {
-    RDictionaryWriteStream out;
-    out.AssignLC(*aDicFS, aUid);
-    out.WriteInt16L(aValue.Length()); // write length of the descriptor
-    out.WriteL(aValue, aValue.Length()); // write the descriptor itself
-    out.CommitL();
-    CleanupStack::PopAndDestroy(); // out
-    }
-
-// ---------------------------------------------------------------------------
-
-void CPerfMonEngine::SaveDFSValueL(CDictionaryFileStore* aDicFS,
-        const TUid& aUid, const TPerfMonSources& aValue)
-    {
-    RDictionaryWriteStream out;
-    out.AssignLC(*aDicFS, aUid);
-
-    out.WriteInt16L(ESourcesLength); // write length of the array
-
-    for (TInt i = 0; i < ESourcesLength; i++) // write all items
-        out.WriteInt16L(aValue.iSrcEnabled[i]);
-
-    out.CommitL();
-    CleanupStack::PopAndDestroy(); // out
-    }
-
-// ---------------------------------------------------------------------------
-
-// End of File
--- a/perfmon/envpatcher/EnvPatcher.pl	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +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:
-# Environment Patcher - Patches older S60 SDKs for supporting
-# tricks in newer platforms
-#
-
-
-require v5.6.1;	
-
-use File::Copy;
-use strict;
-
-# check amount of commandline options is valid
-if (@ARGV != 1)
-{
-    print "Usage: EnvPatcher <EPOCROOT>\n";
-    exit 1;
-}
-
-
-# get epocroot and convert, convert \ -> /
-(my $epocroot = $ARGV[0]) =~ s{\\}{/}g;
-
-# remove any trailing forward slashes
-$epocroot =~ s/\/$//;
-
-
-# create variables for paths
-my $e32toolsdir = $epocroot."/epoc32/tools";
-my $e32includedir = $epocroot."/epoc32/include";
-my $e32includeoemdir = $e32includedir."/oem";
-my $platformpathspath = $e32includedir."/platform_paths.hrh";
-my $domainplatformpathspath = $e32includedir."/domain/osextensions/platform_paths.hrh";
-my $mmppmpath = $e32toolsdir."/mmp.pm";
-my $pathutlpmpath = $e32toolsdir."/pathutl.pm";
-my $prepfilepmpath = $e32toolsdir."/prepfile.pm";
-
-# variables for hacked content
-my $dependshack = "\t\t\tif (/^DEPENDS\$/o) {\r\n\t\t\t\tnext LINE;  # Ignore DEPENDS keyword, not needed by ABLD\r\n\t\t\t}\r\n";
-my $smpsafehack = "\t\tif (/^SMPSAFE\$/o) {\r\n\t\t\tnext LINE;  # Ignore SMPSAFE keyword, not needed by older environments\r\n\t\t}\r\n";
-my $forwardslashhack = "\t\t# EnvPatcher forwardslash hack begins\r\n\t\t\$_=~s{/}{\\\\}g;   # convert all forward slashes to backslashes\r\n\t\t# EnvPatcher forwardslash hack ends\r\n\r\n";
-my $coreibyexportsupport = "\r\n// Following definition is used for exporting tools and stubs IBY files to\r\n// Core image.\r\n#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/##exported\r\n";
-
-
-# check epoc32\tools exists
-unless (-d $e32toolsdir)
-{
-    print "$e32toolsdir not found, please check valid epocroot has been given!\n";
-    exit 1;
-}
-
-# check epoc32\include exists
-unless (-d $e32includedir)
-{
-    print "$e32includedir not found, please check valid epocroot has been given!\n";
-    exit 1;
-}
-
-
-# create epoc32\include\oem if it does not exist
-unless (-d $e32includeoemdir)
-{
-    mkdir $e32includeoemdir or die;
-    print "Missing directory $e32includeoemdir created succesfully.\n";
-}
-
-
-# check if epoc32\include\domain\osextensions\platform_paths.hrh exists
-if (-e $domainplatformpathspath)
-{
-    # show an error if the file does not have any platform macros
-    unless (string_exists_in_file($domainplatformpathspath, "OS_LAYER_SYSTEMINCLUDE"))
-    {
-        print "ERROR: $domainplatformpathspath does not have SF macros.\n";
-        print "Please check your environment, if you have S60 3.2 OEM or newer, please get the latest version!\n";
-        exit 2;
-    }
-}
-
-
-# check if epoc32\include\platform_paths.hrh exists
-if (-e $platformpathspath)
-{
-    print "$platformpathspath already exists, not checking it.\n";    
-}
-else
-{
-    # create the file missing file
-    create_default_platform_paths_hrh();
-    print "Missing file $platformpathspath created succesfully.\n";    
-}
-
-
-# check if CORE_IBY_EXPORT_PATH macro exist in the platform_paths.hrh
-unless (string_exists_in_file($platformpathspath, "CORE_IBY_EXPORT_PATH"))
-{
-    # read content of the platform_paths.hrh
-    my @filecontent = read_file_to_array($platformpathspath);  
-
-    my $match_found = 0;
-    my $i = 0;
-    my $match_found_pos = 0;
-    
-    # find the position where the include guards start (this should be a safe position)
-    foreach (@filecontent)
-    {
-        if ($_ =~ /#define PLATFORM_PATHS_HRH/)
-        {
-            $match_found = 1;
-            $match_found_pos = $i;
-            last;
-        } 
-
-        $i++;
-    }
-    
-    if ($match_found)
-    {
-        # insert the patched content to the file
-        splice(@filecontent, $match_found_pos+1, 0, $coreibyexportsupport);
-        
-        # write the modified array to the file
-        write_file_from_array($platformpathspath, @filecontent);
-    
-        print "Platform_paths.hrh updated to support CORE_IBY_EXPORT_PATH macro.\n";
-    }
-    else
-    {
-        print "WARNING: $platformpathspath is corrupted or not supported!\n";    
-    }
-}
- 
-    
-# check if epoc32\tools\mmp.pm exists
-if (-e $mmppmpath)
-{
-    # check if DEPENDS keyword already exists in the file
-    if (string_exists_in_file($mmppmpath, "DEPENDS"))
-    {
-        print "The SDK can already handle DEPENDS keyword in a MMP file.\n";        
-    }
-    else
-    {
-        # read content of the mmp.pm file
-        my @filecontent = read_file_to_array($mmppmpath);
-        
-        my $match_found = 0;
-        my $i = 0;
-        my $match_found_pos = 0;
-        
-        # loop through the array to find the correct place
-        foreach (@filecontent)
-        {
-            if ($_ =~ /Unrecognised Resource Keyword/)
-            {
-                $match_found = 1;
-                $match_found_pos = $i;
-                last;
-            } 
-
-            $i++;
-        }
-        
-        if ($match_found)
-        {
-            # insert the patched content to the file
-            splice(@filecontent, $match_found_pos-1, 0, $dependshack);
-            
-            # write the modified array to the file
-            write_file_from_array($mmppmpath, @filecontent);
-        
-            print "Mmp.pm patched with DEPENDS keyword hack.\n";
-        }
-        else
-        {
-            print "ERROR: Unable to find correct place from $mmppmpath for patching!\n";
-            print "Your SDK environment probably is not supported by this script!\n";
-            exit(2);    
-        }
-    }
-
-    # check if SMPSAFE keyword already exists in the file
-    if (string_exists_in_file($mmppmpath, "SMPSAFE"))
-    {
-        print "The SDK can already handle SMPSAFE keyword in a MMP file.\n";        
-    }
-    else
-    {
-        # read content of the mmp.pm file
-        my @filecontent = read_file_to_array($mmppmpath);
-        
-        my $match_found = 0;
-        my $i = 0;
-        my $match_found_pos = 0;
-        
-        # loop through the array to find the correct place
-        foreach (@filecontent)
-        {
-            if ($_ =~ /Unrecognised Keyword/)
-            {
-                $match_found = 1;
-                $match_found_pos = $i;
-                last;
-            } 
-
-            $i++;
-        }
-        
-        if ($match_found)
-        {
-            # insert the patched content to the file
-            splice(@filecontent, $match_found_pos, 0, $smpsafehack);
-            
-            # write the modified array to the file
-            write_file_from_array($mmppmpath, @filecontent);
-        
-            print "Mmp.pm patched with SMPSAFE keyword hack.\n";
-        }
-        else
-        {
-            print "ERROR: Unable to find correct place from $mmppmpath for patching!\n";
-            print "Your SDK environment probably is not supported by this script!\n";
-            exit(2);    
-        }
-    }
-}
-else
-{
-    print "WARNING: $mmppmpath not found, this environment is not supported!\n";
-}
-
-
-# check if epoc32\tools\pathutl.pm exists
-if (-e $pathutlpmpath)
-{
-    # check if "sub Path_Norm" already exists in the pathutil.pm file
-    # if it does not exists, then we need to patch prepfile.pm
-    if (string_exists_in_file($pathutlpmpath, "sub Path_Norm"))
-    {
-        print "The SDK is non Symbian OS 9.1, no need to add forward slash hack.\n";        
-    }
-    else
-    {
-        # check if prepfile.pm has already been patched
-        if (string_exists_in_file($prepfilepmpath, "EnvPatcher forwardslash hack"))
-        {        
-            print "The SDK has already been patched with forwardslash hack.\n";         
-        }
-        else
-        {    
-            # read content of the prepfile.pm file
-            my @filecontent = read_file_to_array($prepfilepmpath);  
-    
-            my $match_found = 0;
-            my $i = 0;
-            my $match_found_pos = 0;
-            
-            # loop through the array to find the correct place
-            foreach (@filecontent)
-            {
-                if ($_ =~ /# skip blank lines/)
-                {
-                    $match_found = 1;
-                    $match_found_pos = $i;
-                    last;
-                } 
-    
-                $i++;
-            }
-            
-            if ($match_found)
-            {
-                # insert the patched content to the file
-                splice(@filecontent, $match_found_pos+6, 0, $forwardslashhack);
-                
-                # write the modified array to the file
-                write_file_from_array($prepfilepmpath, @filecontent);
-            
-                print "Prepfile.pm patched with forward slash hack.\n";
-            }
-            else
-            {
-                print "ERROR: Unable to find correct place from $prepfilepmpath for patching!\n";
-                print "Your SDK environment probably is not supported by this script!\n";
-                exit(2);    
-            }
-        }
-    }    
-}
-else
-{
-    print "WARNING: $pathutlpmpath not found, this environment is not supported!\n";
-}
- 
- 
- 
-# checks if string exists in the file    
-sub string_exists_in_file
-{
-    my $filepath = $_[0];
-    my $findstring = $_[1];
-    my $match_found = 0;     
-
-    open(FILE, "<", $filepath) or die "Failed to open $filepath for reading!";
-
-    # loop through the file for occurances
-    while (<FILE>)
-    {
-        if ($_ =~ /$findstring/)
-        {
-            $match_found = 1;
-            last;
-        } 
-    }
-
-    close FILE;
-    
-    return $match_found;
-}
-
-
-# reads lines from a file to an array    
-sub read_file_to_array
-{
-    my $filepath = $_[0];
-
-    open(FILE, "<", $filepath) or die "Failed to open $filepath for reading!";
-    my @data = <FILE>;
-    close FILE;
-    
-    return(@data);
-}
-
-
-# writes lines from an array to a file
-sub write_file_from_array
-{
-    my ($filepath, @data) = @_;
-    
-    # take a backup of the file
-    copy ($filepath, $filepath."EnvPatcher") or die "Cannot take backup of $filepath to $filepath.EnvPatcher";
-        
-    open(FILE, ">", $filepath) or die "Failed to open $filepath for writing!";
-
-    # write the array to file
-    foreach my $line (@data)
-    {
-        print FILE "$line";
-    }
-
-    close FILE;
-}
-
-sub create_default_platform_paths_hrh
-{
-    # the file does not exist, so create the missing file
-    open(FILE, ">", $platformpathspath) or die "Failed to open $platformpathspath for writing!\n";
-    
-    print FILE <<ENDOFTHEFILE;
-#ifndef PLATFORM_PATHS_HRH
-#define PLATFORM_PATHS_HRH
-
-/**
-* ---------------------------------------
-* Location, where the applications layer specific public headers should be exported
-* See usage on top of this hrh-file.
-* ---------------------------------------
-*/
-#define APP_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
-#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the applications layer specific platform headers should be exported
-* See usage on top of this hrh-file.
-* ---------------------------------------
-*/
-#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
-#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the middleware layer specific public headers should be exported
-* See usage on top of this hrh-file.
-* ---------------------------------------
-*/
-#define MW_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
-#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the middleware layer specific platform headers should be exported
-* ---------------------------------------
-*/
-#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
-#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the os layer specific public headers should be exported
-* ---------------------------------------
-*/
-#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) /epoc32/include/##exported
-#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the os specific platform headers should be exported
-* ---------------------------------------
-*/
-#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) /epoc32/include/##exported
-#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/##exported
-
-/**
-* ---------------------------------------
-* Location, where the  cenrep excel sheets should be exported
-* Deprecated: should no longer be used. Kept for compability.
-* ---------------------------------------
-*/
-#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
-
-/**
-* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
-* used in the mmp-files that are part of the applications-layer. It includes all 
-* the needed directories from the /epoc32/include, that are valid ones for the 
-* application-layer components. 
-*
-* Applications layer is the last one in the list, since most likely the most of 
-* the headers come from middleware or os-layer  => thus they are first.
-*/
-#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
- 
-/**
-* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
-* used in the mmp-files that are part of the middleware-layer. It includes all 
-* the needed directories from the /epoc32/include, that are valid ones for the 
-* middleware-layer components. 
-*/
-#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
-
-/**
-* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
-* used in the mmp-files that are part of the  osextensions-layer. It includes all
-* the needed directories from the /epoc32/include, that are valid ones for the
-* os-layer components. 
-*/
-#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include /epoc32/include/oem
-
-
-// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
-// used.
-#define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
-
-/**
-* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
-* used in the mmp-files that are part of the os-layer. This is intended 
-* to be only used by those components which need to use in their mmp-file either
-* kern_ext.mmh or nkern_ext.mmh. Reason is that those
-* 2 files already contain the /epoc32/include  as system include path.
-* 
-*/
-#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include/oem
-
-
-// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
-// has to be used.
-#define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
-
-/**
-****************************************************************************
-* Definitions that also define the paths to the layer specific source directories.
-****************************************************************************
-*/
-/**
-* The below 3 macros define the paths to the layer-specific source dirs.
-* See usage on top of this hrh-file, these are used the same way as 
-* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
-* Deprecated: is not allowed to be using in Symbian Foundation
-*/
-#define APP_LAYER_SOURCE_PATH(rest)    /s60/app/##rest
-#define MW_LAYER_SOURCE_PATH(rest)     /s60/mw/##rest
-#define OSEXT_LAYER_SOURCE_PATH(rest)  /s60/osext/##rest
-
-/**
-****************************************************************************
-* Definitions to export IBY files to different folders where they will be taken 
-* to ROM image
-****************************************************************************
-*/
-// Following definition is used for exporting tools and stubs IBY files to 
-// Core image.
-#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/##exported
-
-/**
-* ---------------------------------------
-* Macros for Configuration tool migration. 
-* The below macros define the location under epoc32, where the confml 
-* (Configuration Markup Language) and crml (Central Repository Markup Language) 
-* files should be exported.
-* ---------------------------------------
-*/
-#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
-#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
-#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
-#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
-
-#define APP_LAYER_CONFML(exported) 	                CONFML_EXPORT_PATH(exported,s60)
-#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
-#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
-#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
-                                                    
-#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
-#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
-#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
-#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
-       
-// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
-#define OSEXT_LAYER_CONFML(exported)                CONFML_EXPORT_PATH(exported,s60)
-#define OSEXT_LAYER_CRML(exported)                  CRML_EXPORT_PATH(exported,s60)
-#define OSEXT_LAYER_GCFML(exported)                 GCFML_EXPORT_PATH(exported,s60)
-#define OSEXT_LAYER_CONFML_CONFIG(exported)         CONFML_CONFIG_EXPORT_PATH(exported,s60)
-#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
-#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
-#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
-#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
-
-#endif  // end of PLATFORM_PATHS_HRH
-
-ENDOFTHEFILE
-
-    close FILE;    
-}
--- a/perfmon/envpatcher/ReadMe.txt	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-Environment Patcher v1.0.1
-==========================
-
-Updated: 12th November 2009
-
-
-Introduction:
--------------
-This tool can be used to patch your S60 SDK environment so that the tricks and
-macros introduced in the latest SDKs can be used in a public SDK and older
-OEM releases.
-
-This tool can perform the following tasks:
-- Adds support for forward slashes in paths in bld.inf/.mmp files in S60 3.0 
-- Removes an unncessary warning about DEPENDS and SMPSAFE resource keywords in
-  an .mmp file
-- Creates a missing epoc32\include\platform_paths.hrh file for supporting
-  platform macros introduced since S60 3.2 OEM and Symbian Foundation releases
-- Modifies epoc32\include\platform_paths.hrh for missing macros   
-- Creates a missing epoc32\include\oem directory to suppress a possible warning
-
-
-Usage:
-------
-EnvPatcher.pl <EPOCROOT>
-
-Where EPOCROOT is the path to the root of the SDK, for example:
-  EnvPatcher.pl c:\Symbian\9.1\S60_3rd_MR
-  EnvPatcher.pl z:\
-
-
-Requirements:
--------------
-- S60 SDK (public or OEM), version 3.0 or newer
-- Perl 5.6.1 or newer
-
-
-
-
-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".
--- a/perfmon/group/ReleaseNotes_PerfMon.txt	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-===============================================================================
-
-RELEASE NOTES - PERFORMANCE MONITOR v1.1.1
-RELEASED 21st May 2010 
-
-SUPPORTS S60 5.2+
-
-===============================================================================
-
-Product Description:
-====================
-PerfMon is an S60 UI application that you can use to monitor and log CPU load
-in a device. You can also use it to monitor and log the consumption of memory
-(RAM and disk drives) in a device. 
-
-Main Features:
-==============
-- Three different monitor views for CPU load, RAM and disk usage:
-  - Values
-  - Graphs
-  - Popup (always on top) 
-- Supports CPU load sampling via a null thread CPU counter or with NOPs
-- Source selections for graphs, popup and logging
-- Heartbeat and thread priority configurable via settings
-- Logging to RDebug and/or to a file
-
-===============================================================================
-
-What's New in v1.1.1
-====================
-- Improved Orbit UI
-- Error corrections
-
-===============================================================================
-
-Installation Notes:
-===================
-PerfMon is typically preinstalled on ROM. If not, it can be added to the
-ROM with the .iby file. Alternatively, the .sis file can be found under the
-sis-directory, but the user need to sign it with their own developer
-certificate. In Nokia R&D environment, you can use directly the R&D-signed .sis
-file under the internal\sis directory.
-
-When signing with own developer certificate, the following capabilities are
-needed:
-  WriteDeviceData
-  
-When builing PerfMon against S60 3.0 or 3.1, you may need to patch your SDK
-environment first with some fixes. For more information, please refer to the
-instructions under the "envpatcher" directory.  
-
-===============================================================================
-
-System Requirements:
-====================
-Basic Requirements:
-- Any S60 3.x device or emulator environment
-
-===============================================================================
-
-Compatibility Issues:
-=====================
-N/A
-
-===============================================================================
-
-Known Issues:
-=============
-N/A
-
-===============================================================================
-
-Version History:
-================
-
-Version 1.0.0 - 6th March 2008
-------------------------------
-- Initial version
- 
-===============================================================================
-
-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".
-
--- a/perfmon/group/backup_registration.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<backup_registration>
-  <passive_backup>
-    <include_directory name="\"/>
-  </passive_backup>
-  <system_backup/>
-  <restore requires_reboot = "no"/>
-</backup_registration>
--- a/perfmon/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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 <platform_paths.hrh>
-
-prj_platforms
-
-WINSCW GCCE ARMV5 ARMV6
-
-#include "bld_generic.inf"
-
-#include "../ui/avkon/group/bld.inf"
-
-prj_mmpfiles
-
-prj_extensions
\ No newline at end of file
--- a/perfmon/group/bld_generic.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2010 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 <platform_paths.hrh>
-
-PRJ_EXPORTS
-../group/backup_registration.xml    Z:/private/20011385/backup_registration.xml
-../rom/perfmon.iby CORE_IBY_EXPORT_PATH(tools,perfmon.iby)
-
-PRJ_MMPFILES
-#if defined(__SERIES60_30__) || defined(__SERIES60_31__) || defined(__S60_32__)
-  gnumakefile perfmon_icons_aif.mk
-
-  #ifdef MARM
-  gnumakefile perfmon_stub_sis.mk
-  #endif
-#endif
-
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-  PRJ_EXTENSIONS
-  START EXTENSION s60/mifconv
-  OPTION TARGETFILE perfmon_aif.mif
-  OPTION SOURCEDIR ../icons
-  OPTION SOURCES -c8,8 qgn_menu_perfmon
-  END
-
-  #ifdef MARM
-  START EXTENSION app-services/buildstubsis
-  OPTION SRCDIR ../sis
-  OPTION SISNAME PerfMon_stub
-  END
-  #endif  
-#endif
--- a/perfmon/group/group.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include \"bld_generic.inf\""
-BLD_INF_RULES.prj_exports += "../rom/perfmon_datapopup.iby CORE_IBY_EXPORT_PATH(tools,perfmon_datapopup.iby)"
\ No newline at end of file
--- a/perfmon/group/perfmon_icons_aif.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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:  
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
-else
-ZDIR=\epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\perfmon_aif.mif
-
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN :
-	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-RESOURCE : $(ICONTARGETFILENAME)
-
-$(ICONTARGETFILENAME) : ..\icons\qgn_menu_perfmon.svg
-	mifconv $(ICONTARGETFILENAME) \
-		/c8,8 ..\icons\qgn_menu_perfmon.svg
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/perfmon/group/perfmon_stub_sis.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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:  
-#
-
-
-TARGETDIR=$(EPOCROOT)EPOC32\Data\Z\System\Install
-
-SISNAME=PerfMon_stub
-PKGNAME=PerfMon_stub
-
-$(TARGETDIR) :
-	@perl -S emkdir.pl "$(TARGETDIR)"
-
-do_nothing :
-	rem do_nothing
-
-SISFILE=$(TARGETDIR)\$(SISNAME).sis
-
-$(SISFILE) : ..\sis\$(PKGNAME).pkg
-	makesis -s $? $@ 
-
-
-
-MAKMAKE : do_nothing
-
-RESOURCE : do_nothing
-
-SAVESPACE : do_nothing
-
-BLD : do_nothing
-
-FREEZE : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-FINAL : $(TARGETDIR) $(SISFILE)
-
-CLEAN : 
-	@if exist $(SISFILE) erase $(SISFILE)
-
-RELEASABLES : 
-	@echo $(SISFILE)
--- a/perfmon/icons/qgn_menu_perfmon.svg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="100%"
-   height="100%"
-   viewBox="0 0 87.999512 88.000488"
-   id="svg76799">
-  <defs
-     id="defs76881" />
-  <path
-     d="M 9.0713171,59.555059 L 9.0713171,59.555059 L 29.815483,31.95446 L 53.905481,46.690373 L 77.99548,28.212006"
-     style="fill:none;fill-opacity:0.46710528;stroke:#0000ff;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path4569" />
-  <path
-     d="M 9.5317326,73.333448 L 30.06138,52.248151 L 53.681509,63.493643 L 77.30164,60.213707"
-     style="fill:none;fill-opacity:0.46710528;stroke:#ff0000;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path4571" />
-  <g
-     transform="matrix(0.1348839,0,0,0.1348839,12.762244,-36.73138)"
-     style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-     id="g2303">
-    <path
-       d="M 114.897,303.361 C 139.482,303.361 151.775,322.648 151.775,361.221 C 151.775,380.714 148.599,395.205 142.247,404.695 C 135.895,414.184 126.778,418.928 114.897,418.928 C 90.3641,418.928 78.0977,399.692 78.0977,361.221 C 78.0977,341.728 81.2737,327.211 87.6258,317.671 C 93.9779,308.131 103.068,303.361 114.897,303.361 z M 114.897,407.51 C 122.356,407.51 127.988,403.897 131.794,396.671 C 135.6,389.445 137.503,377.628 137.503,361.221 C 137.503,349.804 136.667,340.816 134.995,334.259 C 133.323,327.701 130.803,322.815 127.434,319.6 C 124.066,316.386 119.836,314.779 114.744,314.779 C 107.287,314.779 101.68,318.456 97.9254,325.811 C 94.1705,333.165 92.293,344.968 92.293,361.221 C 92.293,372.485 93.1418,381.409 94.8395,387.992 C 96.5372,394.576 99.0573,399.474 102.4,402.689 C 105.743,405.903 109.908,407.51 114.897,407.51 z "
-       transform="translate(-33.85833,40)"
-       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-       id="path2305" />
-    <path
-       d="M 218.098,417 L 204.211,417 L 204.211,328.51 C 197.268,335.093 187.984,340.674 176.361,345.251 L 176.361,331.828 C 192.357,324.165 203.261,314.676 209.072,303.361 L 218.098,303.361 L 218.098,417 z "
-       transform="translate(-33.85833,40)"
-       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-       id="path2307" />
-    <path
-       d="M 290.593,303.361 C 315.178,303.361 327.471,322.648 327.471,361.221 C 327.471,380.714 324.295,395.205 317.943,404.695 C 311.591,414.184 302.474,418.928 290.593,418.928 C 266.06,418.928 253.794,399.692 253.794,361.221 C 253.794,341.728 256.97,327.211 263.322,317.671 C 269.674,308.131 278.764,303.361 290.593,303.361 z M 290.593,407.51 C 298.052,407.51 303.684,403.897 307.49,396.671 C 311.296,389.445 313.199,377.628 313.199,361.221 C 313.199,349.804 312.363,340.816 310.691,334.259 C 309.019,327.701 306.499,322.815 303.13,319.6 C 299.762,316.386 295.532,314.779 290.44,314.779 C 282.983,314.779 277.376,318.456 273.621,325.811 C 269.866,333.165 267.989,344.968 267.989,361.221 C 267.989,372.485 268.838,381.409 270.535,387.992 C 272.233,394.576 274.753,399.474 278.096,402.689 C 281.439,405.903 285.604,407.51 290.593,407.51 z "
-       transform="translate(-33.85833,40)"
-       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-       id="path2309" />
-    <path
-       d="M 393.794,417 L 379.907,417 L 379.907,328.51 C 372.964,335.093 363.68,340.674 352.057,345.251 L 352.057,331.828 C 368.053,324.165 378.957,314.676 384.768,303.361 L 393.794,303.361 L 393.794,417 z "
-       transform="translate(-33.85833,40)"
-       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-       id="path2311" />
-    <path
-       d="M 466.289,303.361 C 490.874,303.361 503.167,322.648 503.167,361.221 C 503.167,380.714 499.991,395.205 493.639,404.695 C 487.287,414.184 478.17,418.928 466.289,418.928 C 441.756,418.928 429.49,399.692 429.49,361.221 C 429.49,341.728 432.666,327.211 439.018,317.671 C 445.37,308.131 454.46,303.361 466.289,303.361 z M 466.289,407.51 C 473.748,407.51 479.38,403.897 483.186,396.671 C 486.992,389.445 488.895,377.628 488.895,361.221 C 488.895,349.804 488.059,340.816 486.387,334.259 C 484.715,327.701 482.195,322.815 478.826,319.6 C 475.458,316.386 471.228,314.779 466.136,314.779 C 458.679,314.779 453.072,318.456 449.317,325.811 C 445.562,333.165 443.685,344.968 443.685,361.221 C 443.685,372.485 444.534,381.409 446.231,387.992 C 447.929,394.576 450.449,399.474 453.792,402.689 C 457.135,405.903 461.3,407.51 466.289,407.51 z "
-       transform="translate(-33.85833,40)"
-       style="fill:#00a300;fill-opacity:1;stroke:none;stroke-opacity:1"
-       id="path2313" />
-  </g>
-</svg>
--- a/perfmon/perfmon.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
-
-SUBDIRS = group \
-          ui/hb/datapopup \
-          ui/hb/app
--- a/perfmon/rom/perfmon.iby	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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:  
-*
-*/
-
-
-#ifndef __PERFMON_IBY__
-#define __PERFMON_IBY__
-
-S60_APP_EXE(PerfMon)
-S60_APP_AIF_ICONS(PerfMon)
-S60_APP_RESOURCE(PerfMon)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,PerfMon)
-data=ZPRIVATE\10003a3f\import\APPS\PerfMon_reg.RSC Private\10003a3f\import\Apps\PerfMon_reg.rsc
-
-data=ZPRIVATE\20011385\backup_registration.xml        	private\20011385\backup_registration.xml
-data=ZSYSTEM\Install\PerfMon_stub.sis                   \system\install\PerfMon_stub.sis
-
-#endif // __PERFMON_IBY__
--- a/perfmon/rom/perfmon_datapopup.iby	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +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:  
-*
-*/
-
-
-#ifndef __PERFMON_DATAPOPUP_IBY__
-#define __PERFMON_DATAPOPUP_IBY__
-
-file=ABI_DIR\BUILD_DIR\PerfMonDataPopupPlugin.dll       SHARED_LIB_DIR\PerfMonDataPopupPlugin.dll
-data=DATAZ_\PRIVATE\20011385\PerfMonDataPopupPlugin.qtplugin PRIVATE\20011385\PerfMonDataPopupPlugin.qtplugin
-
-#endif // __PERFMON_DATAPOPUP_IBY__
--- a/perfmon/sis/PerfMon_S60-30.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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:
-;
-
-
-; Language - standard language definitions
-&EN
-
-; Standard SIS file header
-#{"PerfMon"},(0x20011385),1,0,0,TYPE=SA
-
-; Supports S60 v 3.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\UREL\PerfMon.exe"-"!:\sys\bin\PerfMon.exe"
-"\epoc32\data\z\Resource\apps\PerfMon_aif.mif"-"!:\Resource\Apps\PerfMon_aif.mif"
-"\epoc32\data\z\Resource\apps\PerfMon.rsc"-"!:\Resource\Apps\PerfMon.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\PerfMon_reg.rsc"-"!:\private\10003a3f\import\apps\PerfMon_reg.rsc"
-"..\group\backup_registration.xml"-"!:\private\20011385\backup_registration.xml"
Binary file perfmon/sis/PerfMon_S60-30.sis has changed
--- a/perfmon/sis/PerfMon_stub.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +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:
-;
-
-
-; Language - standard language definitions
-&EN
-
-; Standard SIS file header
-#{"PerfMon"},(0x20011385),1,0,0
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-""-"z:\sys\bin\PerfMon.exe"
-""-"z:\Resource\Apps\PerfMon_aif.mif"
-""-"z:\Resource\Apps\PerfMon.rsc"
-""-"z:\private\10003a3f\import\apps\PerfMon_reg.rsc"
-""-"z:\private\20011385\backup_registration.xml"
-
--- a/perfmon/ui/avkon/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +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 <platform_paths.hrh>
-
-PRJ_MMPFILES
-perfmon.mmp
--- a/perfmon/ui/avkon/group/perfmon.mmp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +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 <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-
-TARGET            PerfMon.exe
-TARGETTYPE        exe
-EPOCSTACKSIZE     0x5000
-EPOCHEAPSIZE      0x10000 0x1000000  // Min 64Kb, Max 16Mb
-
-UID               0x100039CE 0x20011385
-
-VENDORID          VID_DEFAULT
-CAPABILITY        WriteDeviceData
-
-SMPSAFE
-
-LANG              SC
-
-
-START RESOURCE    ../../../data/perfmon.rss
-HEADER
-TARGETPATH        APP_RESOURCE_DIR
-END
-
-START RESOURCE    ../../../data/perfmon_reg.rss
-DEPENDS           perfmon.rsg
-TARGETPATH        /private/10003a3f/apps
-END
-
-APP_LAYER_SYSTEMINCLUDE
-USERINCLUDE       ../inc
-SOURCEPATH        ../src
-
-SOURCE            perfmon_app.cpp
-SOURCE            perfmon_document.cpp 
-SOURCE            perfmon_appui.cpp
-SOURCE            perfmon_model.cpp
-SOURCE            perfmon_valuesview.cpp 
-SOURCE            perfmon_valuescontainer.cpp 
-SOURCE            perfmon_graphsview.cpp 
-SOURCE            perfmon_graphscontainer.cpp 
-SOURCE            perfmon_settingsviewdlg.cpp
-SOURCE            perfmon_datapopupcontainer.cpp 
-
-USERINCLUDE       ../../../engine/inc
-SOURCEPATH        ../../../engine/src
-SOURCE            perfmon_engine.cpp
-
-LIBRARY           euser.lib
-LIBRARY           commonengine.lib
-LIBRARY           apparc.lib
-LIBRARY           cone.lib 
-LIBRARY           eikcore.lib
-LIBRARY           eikcoctl.lib
-LIBRARY           eikdlg.lib  
-LIBRARY           avkon.lib 
-LIBRARY           ws32.lib 
-LIBRARY           apgrfx.lib
-LIBRARY           efsrv.lib
-LIBRARY           bafl.lib
-LIBRARY           gdi.lib
-LIBRARY           estor.lib
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_app.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +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:  
-*
-*/
-
-
-#ifndef PERFMON_APP_H
-#define PERFMON_APP_H
-
-
-// INCLUDES
-#include <aknapp.h>
-
-// CONSTANTS
-// UID of the application
-const TUid KUidPerfMon = { 0x20011385 };
-
-// CLASS DECLARATION
-
-/**
-* CPerfMonApp application class.
-* Provides factory to create concrete document object.
-* 
-*/
-class CPerfMonApp : public CAknApplication
-    {
-    
-    public: // Functions from base classes
-        /**
-        * From CApaApplication, overridden to enable INI file support.
-        * @return A pointer to the dictionary store
-        */
-    CDictionaryStore* OpenIniFileLC(RFs& aFs) const;
-    private:
-
-        /**
-        * From CApaApplication, creates CPerfMonDocument document object.
-        * @return A pointer to the created document object.
-        */
-        CApaDocument* CreateDocumentL();
-        
-        /**
-        * From CApaApplication, returns application's UID (KUidPerfMon).
-        * @return The value of KUidPerfMon.
-        */
-        TUid AppDllUid() const;
-    };
-
-#endif
-
-// End of File
-
--- a/perfmon/ui/avkon/inc/perfmon_appui.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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:  
-*
-*/
-
-
-#ifndef PERFMON_APPUI_H
-#define PERFMON_APPUI_H
-
-// INCLUDES
-#include <eikapp.h>
-#include <eikdoc.h>
-#include <e32std.h>
-#include <coeccntx.h>
-#include <aknViewAppUi.h>
-#include <akntabgrp.h>
-#include <aknnavide.h>
-#include "perfmon_std.h"
-
-// FORWARD DECLARATIONS
-class CPerfMonModel;
-class CAknNavigationControlContainer;
-class CAknTabGroup;
-class CAknNavigationDecorator;
-
-
-// CLASS DECLARATIONS
-
-class CPerfMonAppUi : public CAknViewAppUi
-    {
-    public: // // Constructors and destructor
-
-        void ConstructL();
-
-        ~CPerfMonAppUi();
-        
-    public: // New functions
-
-    private:
-        // From MEikMenuObserver
-        void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
-
-    private:
-        void HandleForegroundEventL(TBool aForeground); 
-
-        void HandleCommandL(TInt aCommand);
-
-        void HandleResourceChangeL(TInt aType);
-
-        virtual TKeyResponse HandleKeyEventL(
-            const TKeyEvent& aKeyEvent,TEventCode aType);
-
-    private: //Data
-        CPerfMonModel*                  iModel;
-        CAknNavigationControlContainer* iNaviPane;
-        CAknTabGroup*                   iTabGroup;
-        CAknNavigationDecorator*        iDecoratedTabGroup;
-    };
-
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_datapopupcontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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:  
-*
-*/
-
-
-#ifndef PERFMON_DATAPOPUPCONTAINER_H
-#define PERFMON_DATAPOPUPCONTAINER_H
-
-// INCLUDES
-#include <coecntrl.h>
-
-#include "perfmon_drawcallback.h"
-
-
-// FORWARD DECLARATIONS
-class CPerfMonModel;
-
-
-// CLASS DECLARATIONS
-
-class CPerfMonDataPopupContainer : public CCoeControl, public MDrawUpdateCallback
-    {
-public:
-    void ConstructL(const TRect& aRect);
-    ~CPerfMonDataPopupContainer();
-
-protected:
-    void Draw(const TRect& aRect) const;
-    virtual void SizeChanged();    
-
-public:
-    void SetPositionAndSize();
-    void UpdateVisibility(TBool aForeground=ETrue);
-
-public: // from MDrawUpdateCallback
-    void DrawUpdate();
-
-private:
-    CPerfMonModel*                      iModel;
-    RWindowGroup                        iWindowGroup;
-    const CFont*                        iFont; 
-    TInt                                iFontSize;
-    };
-    
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_document.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +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:  
-*
-*/
-
-
-#ifndef PERFMON_DOCUMENT_H
-#define PERFMON_DOCUMENT_H
-
-// INCLUDES
-#include <AknDoc.h>
-   
-// CONSTANTS
-
-// FORWARD DECLARATIONS
-class CEikAppUi;
-class CPerfMonModel;
-
-
-// CLASS DECLARATION
-
-/**
-*  CPerfMonDocument application class.
-*/
-class CPerfMonDocument : public CAknDocument
-    {
-    public: // Constructors and destructor
-        static CPerfMonDocument* NewL(CEikApplication& aApp);
-        virtual ~CPerfMonDocument();
-
-    public: // New functions
-
-    public:	// from CEikDocument
-	    CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
-    protected:  // New functions
-
-    protected:  // Functions from base classes
-
-    private:
-
-        /**
-        * EPOC default constructor.
-        */
-        CPerfMonDocument(CEikApplication& aApp);
-        void ConstructL();
-
-    private:
-
-        /**
-        * From CEikDocument, create CPerfMonAppUi "App UI" object.
-        */
-        CEikAppUi* CreateAppUiL();
-
-    public:
-        inline CPerfMonModel* Model() { return iModel; }
-
-    private:
-        CPerfMonModel* iModel;
-
-    };
-
-#endif
-
-// End of File
-
--- a/perfmon/ui/avkon/inc/perfmon_drawcallback.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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:  
-*
-*/
-
-
-#ifndef PERFMON_DRAWCALLBACK_H
-#define PERFMON_DRAWCALLBACK_H
-
-class MDrawUpdateCallback
-    {
-public:
-    virtual void DrawUpdate() = 0;    
-    };
-
-#endif
-
-// End of File
-
--- a/perfmon/ui/avkon/inc/perfmon_graphscontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +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:  
-*
-*/
-
-
-#ifndef PERFMON_GRAPHSCONTAINER_H
-#define PERFMON_GRAPHSCONTAINER_H
-
-// INCLUDES
-#include <coecntrl.h>
-
-#include "perfmon_drawcallback.h"
-
-
-// FORWARD DECLARATIONS
-class CPerfMonModel;
-
-
-// CLASS DECLARATIONS
-
-class CPerfMonGraphsContainer : public CCoeControl, public MDrawUpdateCallback
-    {
-public:
-    void ConstructL(const TRect& aRect);
-    ~CPerfMonGraphsContainer();
-
-private:
-    void Draw(const TRect& aRect) const;
-    void HandleResourceChange(TInt aType);
-
-public:
-	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/);
-
-public: // from MDrawUpdateCallback
-    void DrawUpdate();
-
-private:
-    CPerfMonModel*                      iModel;
-    const CFont*                        iFont;
-    };
-    
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_graphsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +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:  
-*
-*/
-
-
-#ifndef PERFMON_GRAPHSVIEW_H
-#define PERFMON_GRAPHSVIEW_H
-
-// INCLUDES
-#include <aknview.h>
-
-#include "perfmon_std.h"
-
-
-
-// CONSTANTS
-// UID of view
-const TUid KGraphsViewUID = {2};
-
-
-// FORWARD DECLARATIONS
-class CPerfMonGraphsContainer;
-class CPerfMonModel;
-
-
-// CLASS DECLARATION
-
-/**
-*  CPerfMonGraphsView view class.
-* 
-*/
-class CPerfMonGraphsView : public CAknView
-    {
-    public: // Constructors and destructor
-        void ConstructL();
-        ~CPerfMonGraphsView();
-
-    public: // Functions from base classes
-        TUid Id() const;
-        void HandleCommandL(TInt aCommand);
-        void HandleClientRectChange();
-
-    private: // From MEikMenuObserver
-        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-
-    private: // From AknView
-        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
-        void DoDeactivate();
-
-    private: // Data
-        CPerfMonGraphsContainer*        iContainer;
-        CPerfMonModel*                  iModel;
-    };
-
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_model.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +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:  
-*
-*/
-
-
-#ifndef PERFMON_MODEL_H
-#define PERFMON_MODEL_H
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <apgcli.h>
-#include <gdi.h>
-
-#include "perfmon_engine.h"
-
-// FORWARD DECLARATIONS
-class CPerfMonValuesContainer;
-class CPerfMonGraphsContainer;
-class CPerfMonDataPopupContainer;
-
-class CPerfMonModel : public CPerfMonEngine
-	{
-private:
-    enum TContainerDrawState
-    	{
-    	EDrawStateInvalid = -1,
-    	EDrawStateValues,
-    	EDrawStateGraphs
-    	};
-
-public:
-	static CPerfMonModel* NewL();
-	void ActivateModelL();
-	void DeActivateModelL();
-
-private:
-	void ConstructL();
-	void SendDrawEventToContainersL();
-	void HandleSettingsChangeL();
-    
-public:
-    void SetValuesContainer(CPerfMonValuesContainer* aValuesContainer);
-    void SetGraphsContainer(CPerfMonGraphsContainer* aGraphsContainer);
-    TInt LaunchSettingsDialogL();
-
-    inline CPerfMonValuesContainer*     ValuesContainer()       { return iValuesContainer; }
-    inline CPerfMonGraphsContainer*     GraphsContainer()       { return iGraphsContainer; }
-    inline CPerfMonDataPopupContainer*  DataPopupContainer()    { return iDataPopupContainer; } 
-
-private:
-    CPerfMonValuesContainer*        iValuesContainer;
-    CPerfMonGraphsContainer*        iGraphsContainer;
-    CPerfMonDataPopupContainer*     iDataPopupContainer;
-    TInt                            iDrawState;
-    };
- 
-
-#endif
--- a/perfmon/ui/avkon/inc/perfmon_settingsviewdlg.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +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:  
-*
-*/
-
-
-#ifndef PERFMON_SETTINGSVIEWDLG_H
-#define PERFMON_SETTINGSVIEWDLG_H
-
-//  INCLUDES
-#include <AknDialog.h>
-#include <eiklbo.h>
-#include <AknTabObserver.h> 
-#include <akntabgrp.h>
-#include <aknsettingitemlist.h> 
-#include <akncheckboxsettingpage.h> 
-
-#include "perfmon_model.h"
-
-
-//  FORWARD DECLARATIONS
-class CAknSettingItemArray;
-class CAknSettingStyleListBox;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-class CAknTabGroup; 
-class TPerfMonSettings;
-class CSelectionItemList;
-
-
-//  CLASS DEFINITIONS
-
-class CPerfMonSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
-    {
-public:
-    static CPerfMonSettingsViewDlg* NewL(TPerfMonSettings& aSettings);
-    virtual ~CPerfMonSettingsViewDlg();
-
-public: // From MEikListBoxObserver
-    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
-
-public: // From MAknTabObserver
-    void TabChangedL(TInt aIndex); 
-
-public: // From CAknDialog
-    void ProcessCommandL(TInt aCommandId);
-
-protected: // From CEikDialog
-    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
-    void PreLayoutDynInitL();
-    TBool OkToExitL(TInt aButtonId);    
-
-private: // New methods
-    void ShowSettingPageL(TBool aCalledFromMenu);
-    void SetVisibilitiesOfSettingItemsL();
-    void UpdateListBoxL();
-    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
-
-private: // Constructors
-    CPerfMonSettingsViewDlg(TPerfMonSettings& aSettings);
-    void ConstructL();        
-
-private: // Data
-    CAknSettingItemArray*               iSettingItemArray;
-    CAknSettingStyleListBox*            iListBox;
-    CAknNavigationControlContainer*     iNaviContainer;
-    CAknNavigationDecorator*            iDecoratedTabGroup;
-    CAknTabGroup*                       iTabGroup;
-    TPerfMonSettings&               iSettings;
-    };
-
-
-class CSourceSelectionCheckBoxSettingItem : public CAknSettingItem
-    {
-public:
-    CSourceSelectionCheckBoxSettingItem( TInt aIdentifier, TPerfMonSources& aMemoryInUse );
-	virtual ~CSourceSelectionCheckBoxSettingItem();
-
-protected:
-	void CompleteConstructionL();
-	void StoreL();
-	void LoadL();
-	const TDesC& SettingTextL();
-	void EditItemL( TBool aCalledFromMenu );
-    void HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType );
-
-private:
-    void AddNewItemToArrayL(const TDesC& aLabel); 
-
-private:
-    CSelectionItemList*     iItemArray;
-    HBufC*                  iSettingText;
-    TPerfMonSources&        iExternalSources;
-    };
-
-
-class CSourceSelectionCheckBoxSettingPage : public CAknCheckBoxSettingPage
-	{
-	public:
-        CSourceSelectionCheckBoxSettingPage( TInt aResourceID, CSelectionItemList* aItemArray );
-	public:		// New functions
-		void UpdateCba();
-	};
-	
-
-#endif
-
-// End of File
-
--- a/perfmon/ui/avkon/inc/perfmon_std.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +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:  
-*
-*/
-
-
-#ifndef PERFMON_STD_H
-#define PERFMON_STD_H
-
-
-
-#endif
-
-// End of File
-
--- a/perfmon/ui/avkon/inc/perfmon_valuescontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +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:  
-*
-*/
-
-
-#ifndef PERFMON_VALUESCONTAINER_H
-#define PERFMON_VALUESCONTAINER_H
-
-// INCLUDES
-#include <coecntrl.h>
-
-#include "perfmon_drawcallback.h"
-
-
-// FORWARD DECLARATIONS
-class CPerfMonModel;
-
-
-// CLASS DECLARATIONS
-
-class CPerfMonValuesContainer : public CCoeControl, public MDrawUpdateCallback
-    {
-public:
-    void ConstructL(const TRect& aRect);
-    ~CPerfMonValuesContainer();
-
-private:
-    void Draw(const TRect& aRect) const;
-    void HandleResourceChange(TInt aType);
-
-public:
-	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/);
-
-public: // from MDrawUpdateCallback
-    void DrawUpdate();
-    
-private:
-    CPerfMonModel*                      iModel;
-    const CFont*                        iFont; 
-    };
-    
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/inc/perfmon_valuesview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +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:  
-*
-*/
-
-
-#ifndef PERFMON_VALUESVIEW_H
-#define PERFMON_VALUESVIEW_H
-
-// INCLUDES
-#include <aknview.h>
-
-#include "perfmon_std.h"
-
-
-
-// CONSTANTS
-// UID of view
-const TUid KValuesViewUID = {1};
-
-
-// FORWARD DECLARATIONS
-class CPerfMonValuesContainer;
-class CPerfMonModel;
-
-
-// CLASS DECLARATION
-
-/**
-*  CPerfMonValuesView view class.
-* 
-*/
-class CPerfMonValuesView : public CAknView
-    {
-    public: // Constructors and destructor
-        void ConstructL();
-        ~CPerfMonValuesView();
-
-    public: // Functions from base classes
-        TUid Id() const;
-        void HandleCommandL(TInt aCommand);
-        void HandleClientRectChange();
-
-    private: // From MEikMenuObserver
-        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-
-    private: // From AknView
-        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
-        void DoDeactivate();
-
-    private: // Data
-        CPerfMonValuesContainer*        iContainer;
-        CPerfMonModel*                  iModel;
-    };
-
-#endif
-
-// End of File
--- a/perfmon/ui/avkon/src/perfmon_app.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +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 FILES
-#include "perfmon_app.h"
-#include "perfmon_document.h"
-
-#include <eikstart.h>
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CPerfMonApp::AppDllUid()
-// Returns application UID
-// ---------------------------------------------------------
-//
-TUid CPerfMonApp::AppDllUid() const
-    {
-    return KUidPerfMon;
-    }
-
-// ---------------------------------------------------------
-// CDictionaryStore* CPerfMonApp::OpenIniFileLC(RFs& aFs) const
-// overrides CAknApplication::OpenIniFileLC to enable INI file support
-// ---------------------------------------------------------
-//
-CDictionaryStore* CPerfMonApp::OpenIniFileLC(RFs& aFs) const
-    {
-    return CEikApplication::OpenIniFileLC(aFs);
-    }
-   
-// ---------------------------------------------------------
-// CPerfMonApp::CreateDocumentL()
-// Creates CPerfMonDocument object
-// ---------------------------------------------------------
-//
-CApaDocument* CPerfMonApp::CreateDocumentL()
-    {
-    return CPerfMonDocument::NewL( *this );
-    }
-
-// ================= OTHER EXPORTED FUNCTIONS ==============
-
-LOCAL_C CApaApplication* NewApplication()
-    {
-    return new CPerfMonApp;
-    }
-
-
-GLDEF_C TInt E32Main()
-    {
-    return EikStart::RunApplication(NewApplication);
-    }
-   
-
-// End of File  
-
--- a/perfmon/ui/avkon/src/perfmon_appui.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +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 FILES
-#include "perfmon_appui.h"
-#include "perfmon_valuesview.h"
-#include "perfmon_graphsview.h"
-#include "perfmon_datapopupcontainer.h"
-#include "perfmon.hrh"
-#include "perfmon_model.h"
-#include "perfmon_document.h"
-#include <perfmon.rsg>
-
-#include <avkon.hrh>
-#include <AknQueryDialog.h>
-#include <aknmessagequerydialog.h> 
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonAppUi::ConstructL()
-    {
-    // disable window server priority control for this application
-    iEikonEnv->WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
-
-    // set as system application to prevent getting shut down events 
-    iEikonEnv->SetSystem(ETrue);
-    
-    BaseConstructL(EAknEnableSkin);
-
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-
-    // Show tabs for main views from resources
-    CEikStatusPane* sp = StatusPane();
-
-    // Fetch pointer to the default navi pane control
-    iNaviPane = (CAknNavigationControlContainer*)sp->ControlL( 
-        TUid::Uid(EEikStatusPaneUidNavi));
-
-    // Tabgroup has been read from resource and it were pushed to the navi pane. 
-    // Get pointer to the navigation decorator with the ResourceDecorator() function. 
-    // Application owns the decorator and it has responsibility to delete the object.
-    iDecoratedTabGroup = iNaviPane->ResourceDecorator();
-    if (iDecoratedTabGroup)
-        {
-        iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
-        }
-        
-    CPerfMonValuesView* valuesView = new(ELeave) CPerfMonValuesView;
-    CleanupStack::PushL(valuesView);
-    valuesView->ConstructL();
-    AddViewL(valuesView);           // transfer ownership to CAknViewAppUi
-    CleanupStack::Pop();            // valuesView
-
-    CPerfMonGraphsView* graphsView = new(ELeave) CPerfMonGraphsView;
-    CleanupStack::PushL(graphsView);
-    graphsView->ConstructL();
-    AddViewL(graphsView);           // transfer ownership to CAknViewAppUi
-    CleanupStack::Pop();            // graphsView
-    
-    // set the default view
-    SetDefaultViewL(*valuesView);
-
-    // notify the model that everything has been constructed
-    iModel->ActivateModelL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonAppUi::~CPerfMonAppUi()
-    {
-    // notify the model that the application is closing
-    if (iModel)    
-        TRAP_IGNORE(iModel->DeActivateModelL());
-    
-    delete iDecoratedTabGroup;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    if (aResourceId == R_PERFMON_APP_MENU)
-        {
-        aMenuPane->SetItemDimmed(EPerfMonCmdEnableLogging, iModel->Settings().iLoggingEnabled);
-        aMenuPane->SetItemDimmed(EPerfMonCmdDisableLogging, !iModel->Settings().iLoggingEnabled);
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CPerfMonAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/)
-    {
-    if ( iTabGroup == NULL )
-        {
-        return EKeyWasNotConsumed;
-        }
-
-    TInt active = iTabGroup->ActiveTabIndex();
-    TInt count = iTabGroup->TabCount();
-
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyLeftArrow:
-            if (active > 0)
-                {
-                active--;
-                iTabGroup->SetActiveTabByIndex( active );
-                ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active)));
-                }
-            break;
-        case EKeyRightArrow:
-            if((active + 1) < count)
-                {
-                active++;
-                iTabGroup->SetActiveTabByIndex( active );
-                ActivateLocalViewL(TUid::Uid(iTabGroup->TabIdFromIndex(active)));
-                }
-            break;
-        default:
-            return EKeyWasNotConsumed;
-        }
-
-    return EKeyWasConsumed;
-    }
-
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonAppUi::HandleCommandL(TInt aCommand)
-    {
-    switch ( aCommand )
-        {
-        case EPerfMonCmdEnableLogging:
-            {
-            iModel->EnableLogging(ETrue);
-            break;
-            }
-
-        case EPerfMonCmdDisableLogging:
-            {
-            iModel->EnableLogging(EFalse);
-            break;
-            }
-                        
-        case EPerfMonCmdSettings:
-            {
-            if (iModel->LaunchSettingsDialogL() == EAknCmdExit)
-                Exit();
-            break;
-            }
-
-        case EPerfMonCmdAbout:
-            {
-	        CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
-            dialog->ExecuteLD(R_PERFMON_ABOUT_DIALOG);
-            }
-            break;
-            
-        // a normal way to close an application
-        case EAknCmdExit:
-        case EEikCmdExit:
-        case EAknSoftkeyExit: 
-			{
-            Exit();
-			}
-            break;
-
-        default:
-            break;      
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonAppUi::HandleForegroundEventL(TBool aForeground)
-    {
-    // handle visibility of the data popup container
-    if (iModel && iModel->DataPopupContainer())
-        {
-        iModel->DataPopupContainer()->UpdateVisibility(aForeground);
-        }
-    
-    // call the base class
-    CAknAppUi::HandleForegroundEventL(aForeground); 
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonAppUi::HandleResourceChangeL(TInt aType)
-    {
-    CAknAppUi::HandleResourceChangeL(aType);
-
-    // update size of the data popup container (implemented here because data popup container
-    // does not get HandleResourceChangeL events)
-    if (aType == KEikDynamicLayoutVariantSwitch)
-        {
-        if (iModel)
-            {
-            if (iModel->DataPopupContainer())
-                {
-                iModel->DataPopupContainer()->SetPositionAndSize();
-                }
-            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-// End of File  
--- a/perfmon/ui/avkon/src/perfmon_datapopupcontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +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 FILES
-#include "perfmon_datapopupcontainer.h"
-#include "perfmon.hrh"
-#include "perfmon_document.h"
-#include "perfmon_appui.h"
-#include "perfmon_model.h"
-
-#include <AknUtils.h>
-
-_LIT(KPercentageFormat,"%S %d%%");
-_LIT(KFreeFormat,"%S free %S%S");
-
-const TInt KLeftMargin = 2;
- 
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-void CPerfMonDataPopupContainer::ConstructL(const TRect& /*aRect*/)
-    {
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    iFont = LatinPlain12();
-    iFontSize = iFont->FontMaxHeight();
- 
-    // set windowgroup so that it always on top and does not receive focus
-    iWindowGroup = RWindowGroup(iCoeEnv->WsSession());
-    User::LeaveIfError(iWindowGroup.Construct((TUint32)&iWindowGroup));
-    iWindowGroup.SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
-    iWindowGroup.EnableReceiptOfFocus(EFalse);
-    
-    CreateWindowL(&iWindowGroup);
-    //SetRect(aRect);
-    SetPositionAndSize();
-    SetBlank();
-
-    ActivateL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonDataPopupContainer::~CPerfMonDataPopupContainer()
-    {
-    iWindowGroup.Close();    
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonDataPopupContainer::Draw(const TRect& aRect) const
-    {
-    CWindowGc& gc = SystemGc();
-    gc.SetBrushColor(KRgbWhite);
-    gc.Clear(aRect);
-    
-    // check if sample array has been constructed
-    if (iModel->SampleEntryArray())
-        {
-        // init font
-        gc.SetPenColor(KRgbBlack);
-        gc.UseFont( iFont );
-        
-        // draw a rect around the popup
-        gc.DrawRect(aRect);
-        
-        TInt posCounter(1);
-        
-        for (TInt i=0; i<iModel->SampleEntryArray()->Count(); i++)
-            {
-            // check if this setting has been enabled and it has some data
-            if (iModel->Settings().iDataPopupSources.iSrcEnabled[i] && iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
-                {
-                TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);    
-                TBuf<32> buf;
-
-                // for CPU draw %, other amount of free memory
-                if (i == ESourceCPU)
-                    {
-                    buf.Format(KPercentageFormat, &iModel->SampleEntryArray()->At(i).iDescription, currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
-                    gc.DrawText(buf, TPoint(KLeftMargin, iFontSize*posCounter));
-                    }
-                else
-                    {
-                    TBuf<32> freeBuf;
-                    freeBuf.AppendNum(currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
-
-                    TBuf<32> buf;
-                    buf.Format(KFreeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &freeBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
-                    gc.DrawText(buf, TPoint(KLeftMargin, iFontSize*posCounter));                    
-                    }    
-                
-                posCounter++;
-                }
-            }
-            
-        gc.DiscardFont();        
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonDataPopupContainer::SizeChanged()
-    {
-    DrawNow();
-    }   
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonDataPopupContainer::SetPositionAndSize()
-    {
-    CWsScreenDevice* screenDevice = iEikonEnv->ScreenDevice();
-
-    // top right
-    if (iModel->Settings().iDataPopupLocation == EDataPopupLocationTopRight)
-        {
-        // screen orientation is landscape with softkeys on right
-        if (AknLayoutUtils::CbaLocation()==AknLayoutUtils::EAknCbaLocationRight)
-            {
-            SetRect(
-                TRect(
-                    screenDevice->SizeInPixels().iWidth-102-15,
-                    0,
-                    screenDevice->SizeInPixels().iWidth-15,
-                    iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize + 3
-                    ));
-            }
-
-        // any other orientation
-        else
-            {
-            SetRect(
-                TRect(
-                    screenDevice->SizeInPixels().iWidth-102,
-                    0,
-                    screenDevice->SizeInPixels().iWidth,
-                    iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize + 3
-                    ));
-            }        
-        }
-
-    // bottom middle
-    else if (iModel->Settings().iDataPopupLocation == EDataPopupLocationBottomMiddle)
-        {
-        SetRect(
-            TRect(
-                screenDevice->SizeInPixels().iWidth/2-102/2,
-                screenDevice->SizeInPixels().iHeight - iModel->Settings().iDataPopupSources.EnabledSourcesCount()*iFontSize - 3,
-                screenDevice->SizeInPixels().iWidth/2+102/2,
-                screenDevice->SizeInPixels().iHeight
-                ));
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonDataPopupContainer::UpdateVisibility(TBool aForeground)
-    {
-    // application has been brought to foregound
-    if (aForeground)
-        {
-        if (iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityAlwaysOn)
-            {
-            MakeVisible(ETrue);
-            }
-        else
-            {
-            MakeVisible(EFalse);
-            }    
-        }
-    
-    // application has been sent to background
-    else
-        {
-        if (iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityAlwaysOn
-            || iModel->Settings().iDataPopupVisibility==EDataPopupVisbilityBackgroundOnly)
-            {
-            MakeVisible(ETrue);
-            }
-        else
-            {
-            MakeVisible(EFalse);
-            }              
-        }    
-    }
-            
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonDataPopupContainer::DrawUpdate()
-    {
-    DrawDeferred(); 
-    }
-    
-// --------------------------------------------------------------------------------------------
-       
-// End of File  
--- a/perfmon/ui/avkon/src/perfmon_document.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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 FILES
-#include "perfmon_document.h"
-#include "perfmon_appui.h"
-#include "perfmon_model.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// constructor
-CPerfMonDocument::CPerfMonDocument(CEikApplication& aApp)
-: CAknDocument(aApp)    
-    {
-    }
-
-// ----------------------------------------------------
-
-// destructor
-CPerfMonDocument::~CPerfMonDocument()
-    {
-    delete iModel;
-    }
-
-// ----------------------------------------------------
-
-// EPOC default constructor can leave.
-void CPerfMonDocument::ConstructL()
-    {
-    iModel = CPerfMonModel::NewL();
-    }
-
-// ----------------------------------------------------
-
-// Two-phased constructor.
-CPerfMonDocument* CPerfMonDocument::NewL(CEikApplication& aApp)
-    {
-    CPerfMonDocument* self = new(ELeave) CPerfMonDocument(aApp);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-    
-// ----------------------------------------------------
-// CPerfMonDocument::CreateAppUiL()
-// constructs CPerfMonAppUi
-// ----------------------------------------------------
-//
-CEikAppUi* CPerfMonDocument::CreateAppUiL()
-    {
-    return new (ELeave) CPerfMonAppUi;
-    }
-
-// ----------------------------------------------------
-// CPerfMonDocument::OpenFileL
-// Overrides CAknDocument::OpenFileL to support document file
-// ----------------------------------------------------
-//
-CFileStore* CPerfMonDocument::OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs)
-    {
-    return CEikDocument::OpenFileL(aDoOpen, aFilename, aFs);
-    }
-
-// ----------------------------------------------------
-
-// End of File  
--- a/perfmon/ui/avkon/src/perfmon_graphscontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +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 FILES
-#include "perfmon_graphscontainer.h"
-#include "perfmon.hrh"
-#include "perfmon_document.h"
-#include "perfmon_appui.h"
-#include "perfmon_model.h"
-
-#include <AknUtils.h>
-
-const TInt KAmountOfMicroSecondsFitsScreen = 20 * 1000000;
-#define KRgbCustomGrey TRgb(0x808080)
-
-_LIT(K100p, "100%"); 
-_LIT(K50p, "50%"); 
-_LIT(K0p, "0%"); 
-
-_LIT(KPercentageFormat,"%S %d%%");
-
-const TInt KMicroToSecondMultiplier = 1000000;
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-void CPerfMonGraphsContainer::ConstructL(const TRect& aRect)
-    {
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    //iFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont);
-    iFont = LatinBold12();
-
-    CreateWindowL();
-    SetRect(aRect);
-    SetBlank();
-
-    ActivateL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonGraphsContainer::~CPerfMonGraphsContainer()
-    {
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonGraphsContainer::Draw(const TRect& aRect) const
-    {
-    // draw black background
-    CWindowGc& gc = SystemGc();
-    gc.SetBrushColor(KRgbBlack);
-    gc.Clear(aRect);
-    
-    // activate font and get size
-    gc.UseFont(iFont);
-    TUint fontSize = iFont->FontMaxHeight();
-    //TInt fontBaseOffset = iFont->DescentInPixels();
-    
-
-    // calculate time factor
-    TReal scaleFactor = (TReal) aRect.Width() / (TReal) KAmountOfMicroSecondsFitsScreen;
-
-    // calculate area height which is used to draw the grpahs
-    TInt drawAreaHeight = aRect.Height() - fontSize - fontSize;
-        
-    
-    // check if sample array has been constructed
-    if (iModel->SampleEntryArray())
-        {
-        
-        // draw vertical time lines first
-        TInt verticalBarPeriodInSecs = iModel->Settings().iGraphsVerticalBarPeriod;
-        
-        if (verticalBarPeriodInSecs >= 1 && iModel->SampleEntryArray()->At(0).iSampleDataArray->Count() > 0)
-            {
-            // get time from the first sample
-            TSampleData& firstSample = iModel->SampleEntryArray()->At(0).iSampleDataArray->At(0);
-            TInt64 currentMicroSeconds = firstSample.iTimeFromStart.Int64();
-            
-            // calculate amount of microseconds exceeding value by using the modulo operator
-            TInt remainderInMicroSeconds = currentMicroSeconds % (verticalBarPeriodInSecs * 1000000); 
-            
-            // calculate first x pos
-            TInt vbarXpos = aRect.Width() - (remainderInMicroSeconds * scaleFactor);
-            
-            // calculate the amount in seconds
-            TInt barSeconds = (currentMicroSeconds - remainderInMicroSeconds) / KMicroToSecondMultiplier;
-
-            
-            // continue drawing periodically the vertical lines
-            while (vbarXpos >= 0 && barSeconds >= 0)
-                {
-                // draw vertical line    
-                gc.SetPenColor(KRgbDarkRed);
-                gc.DrawLine(TPoint(vbarXpos,fontSize+1), TPoint(vbarXpos,aRect.Height()-fontSize));
-                
-                // draw seconds value
-                gc.SetPenColor(KRgbCustomGrey);
-                TBuf<16> secsBuf;
-                secsBuf.AppendNum(barSeconds);    
-                secsBuf.Append(_L("s"));
-                gc.DrawText(secsBuf, TPoint(vbarXpos-(iFont->TextWidthInPixels(secsBuf)/2), aRect.Height()));    
-
-                // calculate new position
-                vbarXpos -= verticalBarPeriodInSecs * 1000000 * scaleFactor;
-                barSeconds -= verticalBarPeriodInSecs;
-                }
-            }
-        
-        // draw the basic grid
-        gc.SetPenColor(KRgbCustomGrey);
-    
-        gc.DrawLine(TPoint(0,fontSize), TPoint(aRect.Width(),fontSize));  // upper line
-        gc.DrawText(K100p, TPoint(0,fontSize));
-    
-        gc.DrawLine(TPoint(0,aRect.Height()/2), TPoint(aRect.Width(),aRect.Height()/2));  // mid line
-        gc.DrawText(K50p, TPoint(0,aRect.Height()/2));
-    
-        gc.DrawLine(TPoint(0,aRect.Height()-fontSize), TPoint(aRect.Width(),aRect.Height()-fontSize));  // bottom line
-        gc.DrawText(K0p, TPoint(0,aRect.Height()-fontSize));
-
-        TInt c(0);
-            
-        // draw graphs for each sampled type
-        for (TInt i=0; i<iModel->SampleEntryArray()->Count(); i++)
-            {
-            // check if this setting has been enabled and it has some data
-            if (iModel->Settings().iGraphsSources.iSrcEnabled[i] && iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
-                {
-                // set pen color for the graph
-                gc.SetPenColor(iModel->SampleEntryArray()->At(i).iGraphColor);
-                
-                // remember the position where drawing started
-                /*TReal*/TInt currentXPos(aRect.Width()); // start drawing from right            
-                /*TReal*/TInt currentYPos(0);
-                
-                // draw samples
-                for (TInt j=0; j<iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() - 1; j++)
-                    {
-                    TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(j);
-                    TSampleData& previousSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(j+1);
-                    
-                    // calculate X position for previous (j+1)
-                    /*TReal*/TInt previousXPos = currentXPos -
-                        ( (Abs(previousSample.iTimeFromStart.Int64() - currentSample.iTimeFromStart.Int64())) * scaleFactor );
-                    
-
-                    // calculate initial Y position
-                    if (j==0)
-                        {
-                        currentYPos = currentSample.iSize > 0 ? (TReal)(currentSample.iFree) / (TReal)currentSample.iSize * drawAreaHeight + fontSize : aRect.Height()-fontSize;
-                        }
-
-                    // calculate Y position for previous (j+1)
-                    /*TReal*/TInt previousYPos = previousSample.iSize > 0 ? (TReal)(previousSample.iFree) / (TReal)previousSample.iSize * drawAreaHeight + fontSize : aRect.Height()-fontSize; 
-                    
-                    
-                    // draw a line between the previous and current
-                    gc.DrawLine(TPoint((TInt)previousXPos,(TInt)previousYPos), TPoint((TInt)currentXPos,(TInt)currentYPos));
-                    
-                    
-                    // draw current value in %
-                    if (j==0) // draw the value of first sample
-                        {
-                        TBuf<16> buf;
-                        buf.Format(KPercentageFormat, &iModel->SampleEntryArray()->At(i).iDescription, currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
-      
-                        gc.DrawText(buf, TPoint(0,fontSize+fontSize+c*fontSize));
-                        c++;                    
-                        }
-                    
-                    
-                    // stop drawing if we have run out of space
-                    if (previousXPos < 0)
-                        break;
-                    
-                    // remeber previous values
-                    currentXPos = previousXPos;
-                    currentYPos = previousYPos;
-                    }
-                }
-            }
-        }
-
-    gc.DiscardFont();        
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CPerfMonGraphsContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonGraphsContainer::HandleResourceChange(TInt aType)
-    {
-    if (aType == KEikDynamicLayoutVariantSwitch)
-        {
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-        SetRect(mainPaneRect);
-        }
-    else
-        CCoeControl::HandleResourceChange(aType);    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonGraphsContainer::DrawUpdate()
-    {
-    DrawDeferred();    
-    }
-    
-// --------------------------------------------------------------------------------------------
-            
-// End of File  
--- a/perfmon/ui/avkon/src/perfmon_graphsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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 FILES
-#include "perfmon.hrh"
-#include "perfmon_graphsview.h"
-#include "perfmon_graphscontainer.h"
-#include "perfmon_document.h" 
-#include "perfmon_model.h"
-#include <perfmon.rsg>
-
-#include <eikenv.h>
-#include <aknViewAppUi.h> 
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CPerfMonGraphsView::ConstructL(const TRect& aRect)
-// EPOC two-phased constructor
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::ConstructL()
-    {
-    BaseConstructL( R_PERFMON_VIEW_GRAPHS );
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    }
-
-// ---------------------------------------------------------
-// CPerfMonGraphsView::~CPerfMonGraphsView()
-// ---------------------------------------------------------
-//
-CPerfMonGraphsView::~CPerfMonGraphsView()
-    {
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-// ---------------------------------------------------------
-// TUid CPerfMonGraphsView::Id()
-// ---------------------------------------------------------
-//
-TUid CPerfMonGraphsView::Id() const
-    {
-    return KGraphsViewUID;
-    }
-
-// ---------------------------------------------------------
-// TUid CPerfMonGraphsView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
-    }
-
-  
-// ---------------------------------------------------------
-// CPerfMonGraphsView::HandleCommandL(TInt aCommand)
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::HandleCommandL(TInt aCommand)
-    {   
-/*
-    switch ( aCommand )
-        {
-        case EPerfMonCmdFileBack:
-            {
-            iModel->FileUtils()->MoveUpOneLevelL();
-            break;
-            }
-
-        default:
-            {
-*/
-            AppUi()->HandleCommandL( aCommand );
-/*
-            break;
-            }
-        }
-*/
-    }
-
-// ---------------------------------------------------------
-// CPerfMonGraphsView::HandleClientRectChange()
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::HandleClientRectChange()
-    {
-    if ( iContainer )
-        {
-        iContainer->SetRect( ClientRect() );
-        }
-    }
-
-// ---------------------------------------------------------
-// CPerfMonGraphsView::DoActivateL(...)
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::DoActivateL(
-   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
-   const TDesC8& /*aCustomMessage*/)
-    {
-    if (!iContainer)
-        {
-        iContainer = new (ELeave) CPerfMonGraphsContainer;
-        iModel->SetGraphsContainer(iContainer);
-        iContainer->SetMopParent(this);
-        iContainer->ConstructL( ClientRect() );
-        AppUi()->AddToStackL( *this, iContainer );
-        } 
-   }
-
-// ---------------------------------------------------------
-// CPerfMonGraphsView::DoDeactivate()
-// ---------------------------------------------------------
-//
-void CPerfMonGraphsView::DoDeactivate()
-    {
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-// End of File
--- a/perfmon/ui/avkon/src/perfmon_model.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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 FILES
-
-#include "perfmon_model.h"
-#include "perfmon_app.h"
-#include "perfmon_settingsviewdlg.h"
-#include "perfmon.hrh"
-#include "perfmon_valuescontainer.h"
-#include "perfmon_graphscontainer.h"
-#include "perfmon_datapopupcontainer.h"
-#include <perfmon.rsg>
-
-#include <coeutils.h>
-#include <bautils.h>
-#include <eikenv.h>
-#include <e32hal.h>
-#include <u32std.h>
-#include <s32file.h>
-#include <akntitle.h> 
-#include <eikspane.h>
-#include <aknnotewrappers.h>  
-
-_LIT(KAppName, "PerfMon");
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CPerfMonModel* CPerfMonModel::NewL()
-	{
-	CPerfMonModel* self = new(ELeave) CPerfMonModel;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop();
-	return self;
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::ConstructL()
-	{
-	iDrawState = EDrawStateInvalid;
-	CPerfMonEngine::ConstructL();
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::ActivateModelL()
-	{
-	// initialize the data popup container in top-right corner
-	iDataPopupContainer = new(ELeave) CPerfMonDataPopupContainer;
-	iDataPopupContainer->ConstructL(TRect(0,0,1,1));
-    
-	ActivateEngineL();
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::DeActivateModelL()
-	{
-	DeActivateEngineL();
-	
-	if (iDataPopupContainer)
-		{
-		delete iDataPopupContainer;
-		iDataPopupContainer = NULL;
-		}
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::SetValuesContainer(CPerfMonValuesContainer* aContainer)
-    {
-    iValuesContainer = aContainer;
-    iDrawState = EDrawStateValues;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::SetGraphsContainer(CPerfMonGraphsContainer* aContainer)
-    {
-    iGraphsContainer = aContainer;
-    iDrawState = EDrawStateGraphs;
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonModel::SendDrawEventToContainersL()
-    {
-    if (iDrawState == EDrawStateValues && iValuesContainer)
-        iValuesContainer->DrawUpdate();
-    else if (iDrawState == EDrawStateGraphs && iGraphsContainer)
-        iGraphsContainer->DrawUpdate();
-           
-    if (iDataPopupContainer)
-        iDataPopupContainer->DrawUpdate();
-    }
-
-void CPerfMonModel::HandleSettingsChangeL()
-    {
-    // set visibility and location of the data popup
-    iDataPopupContainer->UpdateVisibility();
-    iDataPopupContainer->SetPositionAndSize();
-    CPerfMonEngine::HandleSettingsChangeL();
-    }
-            
-// --------------------------------------------------------------------------------------------
-
-TInt CPerfMonModel::LaunchSettingsDialogL()
-    {
-    // launch the settings dialog
-    TPerfMonSettings newSettings = iSettings;
-    
-    CPerfMonSettingsViewDlg* dlg = CPerfMonSettingsViewDlg::NewL(newSettings);
-    TInt returnValue = dlg->ExecuteLD(R_PERFMON_SETTINGS_DIALOG);
-    
-    // always save settings since the settings dialog does not provide a possibility to cancel
-    iSettings = newSettings;
-    SaveSettingsL();
-    HandleSettingsChangeL();
-
-    // make sure that the title of the application is correct
-    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL(KAppName);
-    
-    return returnValue;
-    }
-	
-// ---------------------------------------------------------------------------
-    
-// End of File
--- a/perfmon/ui/avkon/src/perfmon_settingsviewdlg.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,681 +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 FILES
-#include "perfmon_settingsviewdlg.h"
-#include "perfmon_model.h"
-#include "perfmon.hrh"
-#include "perfmon_std.h"
-#include <perfmon.rsg>
-
-#include <aknsettingitemlist.h>
-#include <CAknMemorySelectionSettingItem.h> 
-#include <aknlists.h>
-#include <akntitle.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h> 
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CPerfMonSettingsViewDlg* CPerfMonSettingsViewDlg::NewL(TPerfMonSettings& aSettings)
-    {
-    CPerfMonSettingsViewDlg* self = new(ELeave) CPerfMonSettingsViewDlg(aSettings);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonSettingsViewDlg::~CPerfMonSettingsViewDlg()
-    {
-    // restore default navi pane by popping the tab group from stack
-    if (iNaviContainer)
-        iNaviContainer->Pop();
-    
-    if (iSettingItemArray)
-        {
-        iSettingItemArray->ResetAndDestroy();
-        delete iSettingItemArray; 
-        }
-    
-    delete iDecoratedTabGroup;   
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonSettingsViewDlg::CPerfMonSettingsViewDlg(TPerfMonSettings& aSettings) : iSettings(aSettings)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::ConstructL()
-    {
-    // construct a menu bar
-    CAknDialog::ConstructL(R_PERFMON_SETTINGS_MENUBAR);
-
-    // get pointer to status pane   
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    
-    // set title text
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL( _L("Settings") );
-    
-    // create a new tab group
-    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
-    iDecoratedTabGroup = iNaviContainer->CreateTabGroupL(this);
-    iTabGroup = static_cast<CAknTabGroup*>(iDecoratedTabGroup->DecoratedControl());
-    iTabGroup->SetTabFixedWidthL(KTabWidthWithTwoLongTabs); 
-    
-    // add tabs
-    iTabGroup->AddTabL(ETabSettingsGeneral, _L("General"));
-    iTabGroup->AddTabL(ETabSettingsDataPopup, _L("Data popup"));
-    iTabGroup->AddTabL(ETabSettingsGraphs, _L("Graphs"));
-    iTabGroup->AddTabL(ETabSettingsLogging, _L("Logging"));
-    iTabGroup->SetActiveTabByIndex(ETabSettingsGeneral);
-    
-    // add new tab group to stack
-    iNaviContainer->PushL( *iDecoratedTabGroup );
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-            ShowSettingPageL(EFalse);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
-    {
-    iListBox->SetCurrentItemIndex(0);
-
-    SetVisibilitiesOfSettingItemsL();   
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::ProcessCommandL(TInt aCommandId)
-    {
-    CAknDialog::ProcessCommandL(aCommandId);
-
-    switch (aCommandId)
-        {
-        case EPerfMonCmdSettingsChange:
-            ShowSettingPageL(ETrue);
-            break;
-        case EPerfMonCmdSettingsExit:
-            TryExitL(EAknCmdExit);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CPerfMonSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    if (iTabGroup == NULL)
-        {
-        return EKeyWasNotConsumed;
-        }
-
-    TInt active = iTabGroup->ActiveTabIndex();
-    TInt count = iTabGroup->TabCount();
-
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyLeftArrow:
-            if (active > 0)
-                {
-                active--;
-                iTabGroup->SetActiveTabByIndex(active);
-                TabChangedL(active); 
-                }
-            break;
-        
-        case EKeyRightArrow:
-            if((active + 1) < count)
-                {
-                active++;
-                iTabGroup->SetActiveTabByIndex(active);
-                TabChangedL(active); 
-                }
-            break;
-        }
-
-    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
-    }    
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::PreLayoutDynInitL()
-    {
-    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EPerfMonSettingItemList) );
-    iListBox->SetMopParent(this);
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    iListBox->SetListBoxObserver(this);
-
-    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
-
-    CTextListBoxModel* model = iListBox->Model();
-    model->SetItemTextArray(iSettingItemArray);
-    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
-
-    UpdateListBoxL();    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CPerfMonSettingsViewDlg::OkToExitL(TInt aButtonId)
-    {
-    return CAknDialog::OkToExitL(aButtonId);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
-    {
-    TInt listIndex = iListBox->CurrentItemIndex();
-    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
-    CAknSettingItem* item = iSettingItemArray->At(realIndex);
-    item->EditItemL(aCalledFromMenu);
-    item->StoreL();
-    SetVisibilitiesOfSettingItemsL();
-    DrawNow();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
-    {
-    if (iSettingItemArray->Count() > 0)
-        {
-        switch (iTabGroup->ActiveTabIndex())
-            {
-            case ETabSettingsGeneral:
-                {
-                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(EFalse);
-
-                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
-
-                break;
-                }
-            
-            case ETabSettingsDataPopup:
-                {
-                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(EFalse);
-
-                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
-
-                break;
-                }
-
-            case ETabSettingsGraphs:
-                {
-                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(EFalse);
-                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(EFalse);
-
-                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(ETrue);
-
-                break;
-                }
-
-            case ETabSettingsLogging:
-                {
-                ((*iSettingItemArray)[ESettingListItemHeartBeat])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemMaxSamples])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemPriority])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemCPUMode])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemKeepBackLightOn])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemDataPopupVisbility])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupLocation])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemDataPopupSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemGraphsVerticalBarPeriod])->SetHidden(ETrue);
-                ((*iSettingItemArray)[ESettingListItemGraphsSources])->SetHidden(ETrue);
-
-                ((*iSettingItemArray)[ESettingListItemLoggingMode])->SetHidden(EFalse);
-                
-                if (iSettings.iLoggingMode == ELoggingModeLogFile || iSettings.iLoggingMode == ELoggingModeRDebugLogFile)
-                    ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(EFalse);
-                else
-                    ((*iSettingItemArray)[ESettingListItemLoggingFilePath])->SetHidden(ETrue);
-                
-                ((*iSettingItemArray)[ESettingListItemLoggingSources])->SetHidden(EFalse);
-
-                break;
-                }                
-
-            default:
-                User::Panic(_L("TabIOOB"), 50);
-                break;
-            }
-
-        iSettingItemArray->RecalculateVisibleIndicesL();
-        iListBox->HandleItemAdditionL();
-        iListBox->UpdateScrollBarsL();
-        }
-    }   
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::UpdateListBoxL()
-    {
-    iSettingItemArray->ResetAndDestroy();
-
-    // create items
-    TInt ordinal(0);
-
-    AddSettingItemL(ESettingListItemHeartBeat,
-                    R_HEARTBEAT_SETTING_TITLE,
-                    R_HEARTBEAT_SETTING_PAGE,
-                    NULL,
-                    ordinal++);    
-    
-    AddSettingItemL(ESettingListItemMaxSamples,
-                    R_MAXSAMPLES_SETTING_TITLE,
-                    R_MAXSAMPLES_SETTING_PAGE,
-                    NULL,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemPriority,
-                    R_PRIORITY_SETTING_TITLE,
-                    R_PRIORITY_SETTING_PAGE,
-                    R_PRIORITY_SETTING_TEXTS,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemCPUMode,
-                    R_CPUMODE_SETTING_TITLE,
-                    R_CPUMODE_SETTING_PAGE,
-                    R_CPUMODE_SETTING_TEXTS,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemKeepBackLightOn,
-                    R_KEEPBACKLIGHTON_SETTING_TITLE,
-                    R_BINARY_SETTING_PAGE,
-                    R_YESNO_BINARYSELECTION_TEXTS,
-                    ordinal++);
-//
-    AddSettingItemL(ESettingListItemDataPopupVisbility,
-                    R_DATAPOPUPVISIBILITY_SETTING_TITLE,
-                    R_DATAPOPUPVISIBILITY_SETTING_PAGE,
-                    R_DATAPOPUPVISIBILITY_SETTING_TEXTS,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemDataPopupLocation,
-                    R_DATAPOPUPLOCATION_SETTING_TITLE,
-                    R_DATAPOPUPLOCATION_SETTING_PAGE,
-                    R_DATAPOPUPLOCATION_SETTING_TEXTS,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemDataPopupSources,
-                    R_SOURCES_SETTING_TITLE,
-                    R_SOURCES_SETTING_PAGE,
-                    NULL,
-                    ordinal++);                    
-//
-    AddSettingItemL(ESettingListItemGraphsVerticalBarPeriod,
-                    R_GRAPHSVERTICALBAR_SETTING_TITLE,
-                    R_GRAPHSVERTICALBAR_SETTING_PAGE,
-                    NULL,
-                    ordinal++);
-    
-    AddSettingItemL(ESettingListItemGraphsSources,
-                    R_SOURCES_SETTING_TITLE,
-                    R_SOURCES_SETTING_PAGE,
-                    NULL,
-                    ordinal++);                    
-//
-    AddSettingItemL(ESettingListItemLoggingMode,
-                    R_LOGGINGMODE_SETTING_TITLE,
-                    R_LOGGINGMODE_SETTING_PAGE,
-                    R_LOGGINGMODE_SETTING_TEXTS,
-                    ordinal++);
-
-     AddSettingItemL(ESettingListItemLoggingFilePath,
-                    R_LOGGINGFILEPATH_SETTING_TITLE,
-                    R_LOGGINGFILEPATH_SETTING_PAGE,
-                    NULL,
-                    ordinal++);
-    
-    AddSettingItemL(ESettingListItemLoggingSources,
-                    R_SOURCES_SETTING_TITLE,
-                    R_SOURCES_SETTING_PAGE,
-                    NULL,
-                    ordinal++);                    
-                                                             
-    SetVisibilitiesOfSettingItemsL(); 
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonSettingsViewDlg::AddSettingItemL(TInt aId,
-                                                 TInt aTitleResource,
-                                                 TInt aSettingPageResource,
-                                                 TInt aAssociatedResource,
-                                                 TInt aOrdinal)
-    {
-    // create a setting item
-    CAknSettingItem* settingItem = NULL;
-    
-    switch (aId)
-        {
-        case ESettingListItemHeartBeat:
-            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iHeartBeat);
-            break;
-
-        case ESettingListItemMaxSamples:
-            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iMaxSamples);
-            break;
-
-        case ESettingListItemPriority:
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iPriority);
-            break;
-
-        case ESettingListItemCPUMode:
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iCPUMode);
-            break;
-
-        case ESettingListItemKeepBackLightOn:
-            settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iKeepBacklightOn);
-            break;
-
-        case ESettingListItemDataPopupVisbility:
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iDataPopupVisibility);
-            break;
-
-        case ESettingListItemDataPopupLocation:
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iDataPopupLocation);
-            break;
-
-        case ESettingListItemDataPopupSources:
-            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iDataPopupSources);
-            break;
-
-        case ESettingListItemGraphsVerticalBarPeriod:
-            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iGraphsVerticalBarPeriod);
-            break;
-
-        case ESettingListItemGraphsSources:
-            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iGraphsSources);
-            break;
-
-        case ESettingListItemLoggingMode:
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iLoggingMode);
-            break;
-
-        case ESettingListItemLoggingFilePath:
-            settingItem = new(ELeave) CAknTextSettingItem(aId, iSettings.iLoggingFilePath);
-            break;
-
-        case ESettingListItemLoggingSources:
-            settingItem = new(ELeave) CSourceSelectionCheckBoxSettingItem(aId, iSettings.iLoggingSources);
-            break;
-
-        default:
-            User::Panic(_L("NotSetItem"), 50);
-            break;
-        }
-        
-    CleanupStack::PushL(settingItem);
-
-    // get title text
-    HBufC* itemTitle = StringLoader::LoadLC(aTitleResource);
-
-    // construct the setting item
-    settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
-                            EAknCtPopupSettingList, NULL, aAssociatedResource);
-
-    // append the setting item to settingitem array
-    iSettingItemArray->InsertL(aOrdinal, settingItem);
-
-    CleanupStack::PopAndDestroy(); //itemTitle
-    CleanupStack::Pop(); //settingItem
-    }
-
-
-// --------------------------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-	
-CSourceSelectionCheckBoxSettingItem::CSourceSelectionCheckBoxSettingItem( TInt aIdentifier, TPerfMonSources& aMemoryInUse ): 
-	CAknSettingItem(aIdentifier), iExternalSources( aMemoryInUse ) 
-	{
-	}	
-
-CSourceSelectionCheckBoxSettingItem::~CSourceSelectionCheckBoxSettingItem()
-	{
-	delete iSettingText;
-
-    if( iItemArray )
-        {
-        iItemArray->ResetAndDestroy();
-        delete iItemArray;
-        }
-	}
-
-void CSourceSelectionCheckBoxSettingItem::AddNewItemToArrayL(const TDesC& aLabel)
-	{
-	TBuf<64> buf;
-	buf.Copy(aLabel);
-	
-    CSelectableItem* item = new(ELeave) CSelectableItem(buf, EFalse);
-    CleanupStack::PushL(item);
-    item->ConstructL();
-    iItemArray->AppendL(item); // Ownership is transferred
-    CleanupStack::Pop(); // item	
-	}
-	
-void CSourceSelectionCheckBoxSettingItem::CompleteConstructionL()
-	{
-    SetEmptyItemTextL(_L("Nothing selected"));
-
-    iItemArray = new(ELeave) CSelectionItemList(16);
-    AddNewItemToArrayL(_L("CPU"));
-    AddNewItemToArrayL(_L("RAM"));
-    AddNewItemToArrayL(_L("C:"));
-    AddNewItemToArrayL(_L("D:"));
-    AddNewItemToArrayL(_L("E:"));
-    AddNewItemToArrayL(_L("F:"));
-    AddNewItemToArrayL(_L("G:"));
-    AddNewItemToArrayL(_L("H:"));
-    AddNewItemToArrayL(_L("I:"));
-
-	__ASSERT_ALWAYS(ESourcesLength==iItemArray->Count(), User::Panic(_L("Src.mismatch"),443));
-    }
-
-// transfer settings to the variables defined in the constructor    	
-void CSourceSelectionCheckBoxSettingItem::StoreL()
-	{
-	for (TInt i=0; i<ESourcesLength; i++)
-	    {
-        iExternalSources.iSrcEnabled[i] = iItemArray->At(i)->SelectionStatus();
-	    }
-	}
-
-// load settings from the variables defined in the constructor to our internal variables
-void CSourceSelectionCheckBoxSettingItem::LoadL()
-	{
-	for (TInt i=0; i<ESourcesLength; i++)
-	    {
-        iItemArray->At(i)->SetSelectionStatus( iExternalSources.iSrcEnabled[i] );
-	    }
-	}
-
-// returns the text shown in the setting item list
-const TDesC& CSourceSelectionCheckBoxSettingItem::SettingTextL()
-	{
-    TBuf<32> settingText;
-
-    if (iItemArray->At(ESourceCPU)->SelectionStatus())
-        settingText.Append(_L("CPU "));
-    if (iItemArray->At(ESourceRAM)->SelectionStatus())
-        settingText.Append(_L("RAM "));
-    if (iItemArray->At(ESourceC)->SelectionStatus())
-        settingText.Append(_L("C: "));
-    if (iItemArray->At(ESourceD)->SelectionStatus())
-        settingText.Append(_L("D: "));
-    if (iItemArray->At(ESourceE)->SelectionStatus())
-        settingText.Append(_L("E: "));
-    if (iItemArray->At(ESourceF)->SelectionStatus())
-        settingText.Append(_L("F: "));
-    if (iItemArray->At(ESourceG)->SelectionStatus())
-        settingText.Append(_L("G: "));
-    if (iItemArray->At(ESourceH)->SelectionStatus())
-        settingText.Append(_L("H: "));
-    if (iItemArray->At(ESourceI)->SelectionStatus())
-        settingText.Append(_L("I: "));
-    settingText.TrimAll();
-
-    if (iSettingText)
-        {
-        delete iSettingText;
-        iSettingText = NULL;
-        }
-
-    iSettingText = HBufC::NewL(settingText.Length());
-    iSettingText->Des().Copy(settingText);
-
-	if ( iSettingText->Length() > 0 )
-		return *iSettingText;
-	else
-		return EmptyItemText();
-	}
-
-
-// launches the setting page
-void CSourceSelectionCheckBoxSettingItem::EditItemL(TBool /*aCalledFromMenu*/)
-	{
-	CSourceSelectionCheckBoxSettingPage* dlg = new(ELeave) CSourceSelectionCheckBoxSettingPage(SettingPageResourceId(), iItemArray);
-
-	SetSettingPage( dlg );
-	SettingPage()->SetSettingPageObserver(this);
-
-	SettingPage()->ExecuteLD(CAknSettingPage::EUpdateWhenChanged);
-	SetSettingPage(0); // it is deleted now
-	}
-
-
-// handles setting page events
-void CSourceSelectionCheckBoxSettingItem::HandleSettingPageEventL( CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType )
-    {
-    switch( aEventType )
-        {
-        case EEventSettingCancelled:
-            {
-            // If setting is cancelled, load old values
-            LoadL();
-            break;
-            }
-        case EEventSettingChanged:
-            {
-            // If setting has changed, update CBA visibility
-            static_cast<CSourceSelectionCheckBoxSettingPage*>( aSettingPage )->UpdateCba();
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    CAknSettingItem::HandleSettingPageEventL( aSettingPage, aEventType );
-    }
-
-// --------------------------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-
-CSourceSelectionCheckBoxSettingPage::CSourceSelectionCheckBoxSettingPage(TInt aResourceID, CSelectionItemList* aItemArray )
-    : CAknCheckBoxSettingPage( aResourceID, aItemArray )
-	{
-	}
-
-void CSourceSelectionCheckBoxSettingPage::UpdateCba()
-	{
-	// Cache the pointer to button group container
-	CEikButtonGroupContainer* cba = Cba();
-	// Left softkey should be visible if there are items selected,
-	// i.e. the selection index array has items.
-	TBool visible( ListBoxControl()->View()->SelectionIndexes()->Count() > 0 );
-	// Resolve left softkey command id
-	TInt leftId( cba->ButtonGroup()->CommandId( 0 ) );
-	// Check if left softkey visibility has changed
-	if( visible != cba->IsCommandVisible( leftId ) )
-		{
-		// Left softkey visibility has changed, update it
-		cba->MakeCommandVisible( leftId, visible );
-		}
-	}
-
-// --------------------------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-    
-// End of File
--- a/perfmon/ui/avkon/src/perfmon_valuescontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +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 FILES
-#include "perfmon_valuescontainer.h"
-#include "perfmon.hrh"
-#include "perfmon_document.h"
-#include "perfmon_appui.h"
-#include "perfmon_model.h"
-
-#include <AknUtils.h>
-
-_LIT(KPercentageFormat,"%S %d%%");
-_LIT(KFreeFormat,"%S free %S%S"); 
-_LIT(KSizeFormat,"%S size %S%S"); 
-
-const TInt KLeftMargin = 2;
-
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-void CPerfMonValuesContainer::ConstructL(const TRect& aRect)
-    {
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    iFont = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont);
- 
-    CreateWindowL();
-    SetRect(aRect);
-    SetBlank();
-
-    ActivateL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CPerfMonValuesContainer::~CPerfMonValuesContainer()
-    {
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonValuesContainer::Draw(const TRect& aRect) const
-    {
-    CWindowGc& gc = SystemGc();
-    gc.SetBrushColor(KRgbWhite);
-    gc.Clear(aRect);
-    
-    // check if sample array has been constructed
-    if (iModel->SampleEntryArray())
-        {
-        // init font
-        gc.SetPenColor(KRgbBlack);
-        gc.UseFont( iFont );
-        TUint separator = iFont->HeightInPixels()-2;
-
-        TInt c(1);
-
-        // draw all entries
-        for (TInt i=0; i<iModel->SampleEntryArray()->Count(); i++)
-            {
-            // check if data available
-            if (iModel->SampleEntryArray()->At(i).iSampleDataArray->Count() > 0)
-                {
-                TSampleData& currentSample = iModel->SampleEntryArray()->At(i).iSampleDataArray->At(0);
-                
-                if (i == ESourceCPU) // for CPU draw %
-                    {
-                    TBuf<16> buf;
-                    buf.Format(KPercentageFormat, &iModel->SampleEntryArray()->At(i).iDescription, currentSample.iSize > 0 ? TInt( (1 - ((TReal)(currentSample.iFree) / (TReal)currentSample.iSize)) * 100) : 0 );
-                    gc.DrawText(buf, TPoint(KLeftMargin,separator*c));
-                    c++;
-                    }
-                
-                else if (currentSample.iSize > 0) // ram+drives, ignore absent drives
-                    {
-                    TBuf<32> amountBuf;
-                    amountBuf.AppendNum(currentSample.iFree, TRealFormat(KDefaultRealWidth, 0));
-        
-                    TBuf<32> buf;
-                    buf.Format(KFreeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &amountBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
-                    gc.DrawText(buf, TPoint(KLeftMargin,separator*c));
-                    c++;
-                    
-                    amountBuf.Copy(KNullDesC);
-                    amountBuf.AppendNum(currentSample.iSize, TRealFormat(KDefaultRealWidth, 0));
-        
-                    buf.Format(KSizeFormat, &iModel->SampleEntryArray()->At(i).iDescription, &amountBuf, &iModel->SampleEntryArray()->At(i).iUnitTypeShort);
-                    gc.DrawText(buf, TPoint(KLeftMargin,separator*c));
-                    c++;            
-                    }                    
-                }
-            }
-           
-        gc.DiscardFont();        
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CPerfMonValuesContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonValuesContainer::HandleResourceChange(TInt aType)
-    {
-    if (aType == KEikDynamicLayoutVariantSwitch)
-        {
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-        SetRect(mainPaneRect);
-        }
-    else
-        CCoeControl::HandleResourceChange(aType);    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CPerfMonValuesContainer::DrawUpdate()
-    {
-    DrawDeferred(); 
-    }
-    
-// --------------------------------------------------------------------------------------------
-       
-// End of File  
--- a/perfmon/ui/avkon/src/perfmon_valuesview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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 FILES
-#include "perfmon.hrh"
-#include "perfmon_valuesview.h"
-#include "perfmon_valuescontainer.h"
-#include "perfmon_document.h" 
-#include "perfmon_model.h"
-#include <perfmon.rsg>
-
-#include <eikenv.h>
-#include <aknViewAppUi.h> 
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CPerfMonValuesView::ConstructL(const TRect& aRect)
-// EPOC two-phased constructor
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::ConstructL()
-    {
-    BaseConstructL( R_PERFMON_VIEW_VALUES );
-    iModel = static_cast<CPerfMonDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    }
-
-// ---------------------------------------------------------
-// CPerfMonValuesView::~CPerfMonValuesView()
-// ---------------------------------------------------------
-//
-CPerfMonValuesView::~CPerfMonValuesView()
-    {
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-// ---------------------------------------------------------
-// TUid CPerfMonValuesView::Id()
-// ---------------------------------------------------------
-//
-TUid CPerfMonValuesView::Id() const
-    {
-    return KValuesViewUID;
-    }
-
-// ---------------------------------------------------------
-// TUid CPerfMonValuesView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
-    }
-
-  
-// ---------------------------------------------------------
-// CPerfMonValuesView::HandleCommandL(TInt aCommand)
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::HandleCommandL(TInt aCommand)
-    {   
-/*
-    switch ( aCommand )
-        {
-        case EPerfMonCmdFileBack:
-            {
-            iModel->FileUtils()->MoveUpOneLevelL();
-            break;
-            }
-
-        default:
-            {
-*/
-            AppUi()->HandleCommandL( aCommand );
-/*
-            break;
-            }
-        }
-*/
-    }
-
-// ---------------------------------------------------------
-// CPerfMonValuesView::HandleClientRectChange()
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::HandleClientRectChange()
-    {
-    if ( iContainer )
-        {
-        iContainer->SetRect( ClientRect() );
-        }
-    }
-
-// ---------------------------------------------------------
-// CPerfMonValuesView::DoActivateL(...)
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::DoActivateL(
-   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
-   const TDesC8& /*aCustomMessage*/)
-    {
-    if (!iContainer)
-        {
-        iContainer = new (ELeave) CPerfMonValuesContainer;
-        iModel->SetValuesContainer(iContainer);
-        iContainer->SetMopParent(this);
-        iContainer->ConstructL( ClientRect() );
-        AppUi()->AddToStackL( *this, iContainer );
-        } 
-   }
-
-// ---------------------------------------------------------
-// CPerfMonValuesView::DoDeactivate()
-// ---------------------------------------------------------
-//
-void CPerfMonValuesView::DoDeactivate()
-    {
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-// End of File
--- a/perfmon/ui/hb/app/app.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = app
-TARGET = PerfMon
-DEPENDPATH += .
-INCLUDEPATH += inc
-
-load(hb.prf)
-symbian:CONFIG -= symbian_i18n
-
-HEADERS += inc/application.h \
-    inc/mainwindow.h \
-    inc/mainview.h \
-    inc/datacontainer.h \
-    inc/valuedatacontainer.h \
-    inc/graphdatacontainer.h \
-    inc/settingsview.h \
-    inc/datapopup.h \
-    inc/enginewrapper.h
-
-SOURCES += src/main.cpp \
-    src/application.cpp \
-    src/mainwindow.cpp \
-    src/mainview.cpp \
-    src/valuedatacontainer.cpp \
-    src/graphdatacontainer.cpp \
-    src/settingsview.cpp \
-    src/datapopup.cpp \
-    src/enginewrapper.cpp
-
-RESOURCES +=
-
-symbian: {
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
-    INCLUDEPATH += ../../../engine/inc
-    HEADERS += ../../../engine/inc/perfmon_engine.h
-
-    SOURCES += ../../../engine/src/perfmon_engine.cpp
-
-    LIBS += -lestor \
-        -lbafl \
-        -lefsrv \
-        -lavkon \
-        -lapparc \
-        -lapgrfx \
-        -lgdi \
-        -lcone
-
-    TARGET.CAPABILITY = WriteDeviceData
-
-    TARGET.UID2 = 0x100039CE
-    TARGET.UID3 = 0x20011385
-    TARGET.SID = 0x20011385
-    TARGET.VID = 0x101FB657 // Nokia
-
-    TARGET.EPOCHEAPSIZE = 0x10000 0x2000000  // Min 64Kb, Max 32Mb
-
-    ICON = ../../../icons/qgn_menu_perfmon.svg
-
-    RSS_RULES += "group_name = \"RnD Tools\"";
-}
--- a/perfmon/ui/hb/app/inc/application.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef APPLICATION_H
-#define APPLICATION_H
-
-#include <HbApplication>
-
-
-class QSymbianEvent;
-
-class Application : public HbApplication
-{
-    Q_OBJECT
-
-public:
-    Application(int &argc, char *argv[]);
-
-signals:
-    void foregroundEvent(bool foreground);
-
-protected:
-#ifdef Q_OS_SYMBIAN
-    bool symbianEventFilter(const QSymbianEvent * event);
-#endif
-};
-
-#endif // APPLICATION_H
--- a/perfmon/ui/hb/app/inc/datacontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef DATACONTAINER_H
-#define DATACONTAINER_H
-
-#include <hbwidget.h>
-#include <enginewrapper.h>
-
-class DataContainer : public HbWidget
-{
-    Q_OBJECT
-
-public:
-    DataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0) :
-            HbWidget(parent),
-            mEngine(engine)
-    {
-    }
-
-    void hideContainer()
-        {
-        disconnect(&mEngine, SIGNAL(samplesUpdated()), this, SLOT(samplesUpdated()));
-        hide();
-        }
-    
-    void showContainer()
-        {
-        connect(&mEngine, SIGNAL(samplesUpdated()),this, SLOT(samplesUpdated()));
-        show();
-        }
-    
-    inline const EngineWrapper& engine() const { return mEngine; }
-
-public slots:
-    virtual void samplesUpdated()
-    {
-    update();
-    }
-
-private:
-    const EngineWrapper& mEngine;
-};
-
-#endif // DATACONTAINER_H
--- a/perfmon/ui/hb/app/inc/datapopup.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef DATAPOPUP_H
-#define DATAPOPUP_H
-
-#include <HbDeviceDialog>
-#include <QFont>
-
-class EngineWrapper;
-
-class DataPopup : public HbDeviceDialog
-{
-    Q_OBJECT
-
-public:
-    DataPopup(EngineWrapper &engine);
-
-public slots:
-    void show();
-    void hide();
-    void updateSamples();
-    void updateSettings();
-    void updateVisibility(bool foreground);
-
-signals:
-    void clicked();
-
-private slots:
-    void triggerAction(QVariantMap data);
-
-private:
-    QVariantMap collectParams() const;
-    void updateData();
-
-private:
-    EngineWrapper &mEngine;
-
-    bool mPopupCreated;
-
-    bool mPopupVisible;
-};
-
-#endif // DATAPOPUP_H
--- a/perfmon/ui/hb/app/inc/enginewrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef ENGINEWRAPPER_H
-#define ENGINEWRAPPER_H
-
-#include "perfmon_engine.h"
-
-#include <QObject>
-#include <QColor>
-#include <QList>
-#include <QVariant>
-
-struct SampleData
-{
-    qint64 mFree;
-    qint64 mSize;
-    qint64 mTimeFromStart;
-};
-
-class SampleEntry
-{
-public:
-    SampleEntry(const TSampleEntry& sampleEntry) : mEntry(&sampleEntry) {}
-
-    QString description() const { return QString((QChar*)mEntry->iDescription.Ptr(), mEntry->iDescription.Length()); }
-    QString unitShort() const { return QString((QChar*)mEntry->iUnitTypeShort.Ptr(), mEntry->iUnitTypeShort.Length()); }
-    QString unitLong() const { return QString((QChar*)mEntry->iUnitTypeLong.Ptr(), mEntry->iUnitTypeLong.Length()); }
-    int driveNumber() const { return mEntry->iDriveNumber; }
-    QColor graphColor() const { return QColor(mEntry->iGraphColor.Red(), mEntry->iGraphColor.Green(), mEntry->iGraphColor.Blue()); }
-
-    int sampleCount() const { return mEntry->iSampleDataArray->Count(); }
-    inline const SampleData& sample(int index) const { return reinterpret_cast<SampleData&>(mEntry->iSampleDataArray->At(index)); }
-private:
-    const TSampleEntry *mEntry;
-
-friend class EngineWrapper;
-};
-
-class PerfMonSources
-{
-public:
-    int count() const { return ESourcesLength; }
-    int isEnabled (int index) const { return mSources.iSrcEnabled[index]; }
-    void setEnabled(int index, bool enabled) { mSources.iSrcEnabled[index] = enabled; }
-    QList<QVariant> enabledIndexes() const {
-        QList<QVariant> indexes;
-        for(int i=0; i<count(); i++) {
-            if (isEnabled(i))
-                indexes.append(i);
-        }
-        return indexes;
-    }
-    void setEnabledIndexes(const QList<QVariant> &indexes)
-    {
-        for (int i=0; i<count(); i++) {
-            setEnabled(i, false);
-        }
-        foreach (const QVariant& index, indexes) {
-        	setEnabled(index.toInt(), true);
-        }
-    }
-
-private:
-    PerfMonSources(TPerfMonSources &sources) : mSources(sources) {}
-    friend class PerfMonSettings;
-
-private:
-    TPerfMonSources &mSources;
-};
-
-class PerfMonSettings
-{
-public:
-    int heartBeat() const { return mSettings.iHeartBeat; }
-    int maxSamples() const { return mSettings.iMaxSamples; }
-    int priority() const { return mSettings.iPriority; }
-    int cpuMode() const { return mSettings.iCPUMode; }
-    bool keepBacklightOn() const { return mSettings.iKeepBacklightOn; }
-
-    int dataPopupVisibility() const { return mSettings.iDataPopupVisibility; }
-    int dataPopupLocation() const { return mSettings.iDataPopupLocation; }
-    PerfMonSources &dataPopupSources() { return mDataPopupSources; }
-    const PerfMonSources &dataPopupSources() const { return mDataPopupSources; }
-
-    int graphVerticalBarPeriod() const { return mSettings.iGraphsVerticalBarPeriod; }
-    PerfMonSources &graphSources() { return mGraphSources; }
-    const PerfMonSources &graphSources() const { return mGraphSources; }
-
-    int loggingMode() const { return mSettings.iLoggingMode; }
-    QString loggingFilePath() const {
-        return QString((QChar*)mSettings.iLoggingFilePath.Ptr(),
-                       mSettings.iLoggingFilePath.Length());
-    }
-    PerfMonSources &loggingSources() { return mLogSources; }
-    const PerfMonSources &loggingSources() const { return mLogSources; }
-
-    bool loggingEnabled() { return mSettings.iLoggingEnabled; }
-
-
-    void setHeartBeat(int heartBeat) { mSettings.iHeartBeat = heartBeat; }
-    void setMaxSamples(int maxSamples) { mSettings.iMaxSamples = maxSamples; }
-    void setPriority(int priority) { mSettings.iPriority = priority; }
-    void setCpuMode(int cpuMode) { mSettings.iCPUMode = cpuMode; }
-    void setKeepBacklightOn(bool backlightOn) const { mSettings.iKeepBacklightOn = backlightOn; }
-
-    void setDataPopupVisibility(int visibility) { mSettings.iDataPopupVisibility = visibility; }
-    void setDataPopupLocation(int location) { mSettings.iDataPopupLocation = location; }
-
-    void setGraphVerticalBarPeriod(int period) { mSettings.iGraphsVerticalBarPeriod = period; }
-
-    void setLoggingMode(int mode) { mSettings.iLoggingMode = mode; }
-    void setLoggingFilePath(const QString& filePath) { mSettings.iLoggingFilePath = filePath.utf16(); }
-
-private:
-    // only EngineWrapper can create Settings instance
-    PerfMonSettings(TPerfMonSettings &settings) :
-            mSettings(settings),
-            mDataPopupSources(settings.iDataPopupSources),
-            mGraphSources(settings.iGraphsSources),
-            mLogSources(settings.iLoggingSources)
-    {}
-    friend class EngineWrapper;
-
-private:
-    TPerfMonSettings &mSettings;
-    PerfMonSources mDataPopupSources;
-    PerfMonSources mGraphSources;
-    PerfMonSources mLogSources;
-};
-
-/**
- * class that is used for communicating between Symbian and Qt code.
- */
-class EngineWrapper : public QObject, public CPerfMonEngine
- {
-    Q_OBJECT
-
-public:
-
-    /**
-     * Constructor
-     */
-    EngineWrapper();
-
-    /**
-     * Destructor
-     */
-    ~EngineWrapper();
-
-public:
-    const QList<SampleEntry>& sampleEntries() const { return mEntries; }
-
-    PerfMonSettings &settings() { return mSettings; }
-    const PerfMonSettings &settings() const { return mSettings; }
-
-public slots:
-
-    bool updateSettings();
-    bool initialize();
-    void finalize();
-    void setLoggingEnabled(bool enabled);
-
-signals:
-
-    void samplesUpdated();
-    void settingsUpdated();
-
-protected:
-    void SendDrawEventToContainersL();
-
-private:
-    QList<SampleEntry> mEntries;
-
-    void createSampleEntriesArray();
-
-    PerfMonSettings mSettings;
-};
-
-#endif //ENGINEWRAPPER_H
--- a/perfmon/ui/hb/app/inc/graphdatacontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef GRAPHDATACONTAINER_H
-#define GRAPHDATACONTAINER_H
-
-#include "datacontainer.h"
-
-#include <QFont>
-
-class GraphDataContainer : public DataContainer
-{
-    Q_OBJECT
-public:
-    GraphDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
-
-protected:
-    void paint (QPainter *painter,
-                const QStyleOptionGraphicsItem *option,
-                QWidget *widget = 0);
-
-private:
-    QFont mFont;
-};
-
-#endif // GRAPHDATACONTAINER_H
--- a/perfmon/ui/hb/app/inc/mainview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef MAINVIEW_H
-#define MAINVIEW_H
-
-#include <hbview.h>
-
-#include "valuedatacontainer.h"
-#include "graphdatacontainer.h"
-
-class HbAction;
-class EngineWrapper;
-
-class MainView : public HbView
-{
-    Q_OBJECT
-
-public:
-    MainView(EngineWrapper &engine);
-    ~MainView();
-
-private:
-    void createMenu();
-
-public slots:
-    void showValues();
-    void showGraphs();
-    void toggleLogging();
-    void showAbout();
-
-signals:
-    void settingsCommandInvoked();
-
-private:
-    void updateLoggingAction();
-
-private:
-    EngineWrapper &mEngine;
-
-    ValueDataContainer *mValueDataContainer;
-    GraphDataContainer *mGraphDataContainer;
-
-    HbAction *mValuesAction;
-    HbAction *mGraphAction;
-    HbAction *mSwitchViewAction;
-    HbAction *mLoggingAction;
-};
-
-#endif // MAINVIEW_H
--- a/perfmon/ui/hb/app/inc/mainwindow.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <HbMainWindow>
-
-class EngineWrapper;
-class MainView;
-class SettingsView;
-
-class MainWindow : public HbMainWindow
-{
-    Q_OBJECT
-public:
-    MainWindow(EngineWrapper &engine, QWidget *parent = 0);
-
-public slots:
-    void showMainView();
-    void showSettings();
-
-private:
-    void clearViews();
-
-private:
-    EngineWrapper &mEngine;
-    MainView* mMainView;
-    SettingsView* mSettingsView;
-};
-
-#endif // MAINWINDOW_H
--- a/perfmon/ui/hb/app/inc/popupdatacontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef POPUPDATACONTAINER_H
-#define POPUPDATACONTAINER_H
-
-#include "datacontainer.h"
-
-#include <QFont>
-
-class PopupDataContainer : public DataContainer
-{
-    Q_OBJECT
-public:
-    PopupDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
-
-public slots:
-    virtual void samplesUpdated();
-
-protected:
-    void paint (QPainter *painter,
-                const QStyleOptionGraphicsItem *option,
-                QWidget *widget = 0);
-
-private:
-    QFont mFont;
-};
-
-#endif // POPUPDATACONTAINER_H
--- a/perfmon/ui/hb/app/inc/settingsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef SETTINGSVIEW_H
-#define SETTINGSVIEW_H
-
-#include <hbview.h>
-
-class HbDataForm;
-class HbDataFormModel;
-class HbDataFormModelItem;
-
-class EngineWrapper;
-class PerfMonSettings;
-class PerfMonSources;
-
-class SettingsView : public HbView
-{
-    Q_OBJECT
-
-signals:
-    void finished(bool ok);
-
-public:
-    SettingsView(EngineWrapper &engine);
-
-private slots:
-    void dataItemDisplayed(const QModelIndex &index);
-    void logModeChanged(int index);
-    void accept();
-    void reject();
-
-private:
-    void createModel(HbDataFormModel &model);
-    void load(const PerfMonSettings& settings);
-    void save(PerfMonSettings& settings);
-    void createLogFilePathItem();
-    void removeLogFilePathItem();
-    
-private:
-    EngineWrapper &mEngine;
-    HbDataForm *mSettingsForm;
-    HbDataFormModel *mModel;
-
-    HbDataFormModelItem* mHeartBeatItem;
-    HbDataFormModelItem* mMaxSamplesItem;
-    HbDataFormModelItem* mPriorityItem;
-    HbDataFormModelItem* mCpuSamplingItem;
-    HbDataFormModelItem* mKeepBacklightItem;
-    HbDataFormModelItem* mPopupVisibilityItem;
-    HbDataFormModelItem* mPopupLocationItem;
-    HbDataFormModelItem* mPopupSourcesItem;
-    HbDataFormModelItem* mVerticalBarPeriodItem;
-    HbDataFormModelItem* mGraphSourcesItem;
-
-    HbDataFormModelItem* mLogPage;
-    HbDataFormModelItem* mLogModeItem;
-    HbDataFormModelItem* mLogFilePathItem;
-    HbDataFormModelItem* mLogSourcesItem;
-    
-    QString mLogFilePath;
-};
-
-#endif // SETTINGSVIEW_H
--- a/perfmon/ui/hb/app/inc/valuedatacontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef VALUEDATACONTAINER_H
-#define VALUEDATACONTAINER_H
-
-#include "datacontainer.h"
-
-#include <QFont>
-
-class ValueDataContainer : public DataContainer
-{
-    Q_OBJECT
-public:
-    ValueDataContainer(const EngineWrapper& engine, QGraphicsItem *parent = 0);
-
-protected:
-    void paint (QPainter *painter,
-                const QStyleOptionGraphicsItem *option,
-                QWidget *widget = 0);
-
-private:
-    QFont mFont;
-};
-
-#endif // VALUEDATACONTAINER_H
--- a/perfmon/ui/hb/app/src/application.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +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 <QSymbianEvent>
-
-#include "application.h"
-
-#ifdef Q_OS_SYMBIAN
-#include <w32std.h>
-
-#endif
-
-Application::Application(int &argc, char *argv[]) :
-        HbApplication(argc, argv)
-{
-}
-
-#ifdef Q_OS_SYMBIAN
-bool Application::symbianEventFilter(const QSymbianEvent * event)
-{
-    if (event->type() == QSymbianEvent::WindowServerEvent)
-    {
-        const TWsEvent *aEvent = event->windowServerEvent();
-
-        if (aEvent->Type() == EEventFocusLost) {
-            emit foregroundEvent(false);
-        }
-
-        if (aEvent->Type() == EEventFocusGained) {
-            emit foregroundEvent(true);
-        }
-    }
-    return HbApplication::symbianEventFilter(event);
-}
-#endif
--- a/perfmon/ui/hb/app/src/datapopup.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
-* Copyright (c) 2010 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 <HbView>
-#include <HbEvent>
-#include <QFontMetrics>
-
-#include "datapopup.h"
-#include "enginewrapper.h"
-#include "popupdatacontainer.h"
-
-DataPopup::DataPopup(EngineWrapper &engine) :
-        mEngine(engine),
-        mPopupCreated(false),
-        mPopupVisible(false)
-{
-    connect(&mEngine, SIGNAL(samplesUpdated()), this, SLOT(updateSamples()));
-    connect(&mEngine, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
-    connect(this, SIGNAL(dataReceived(QVariantMap)), this, SLOT(triggerAction(QVariantMap)));
-}
-
-void DataPopup::show()
-{
-    mPopupVisible = true;
-    if (!mPopupCreated &&
-        mEngine.sampleEntries().length() &&
-        mEngine.settings().dataPopupSources().enabledIndexes().length())
-    {
-        bool anyData = false;
-        foreach (QVariant index, mEngine.settings().dataPopupSources().enabledIndexes())
-            anyData = anyData || mEngine.sampleEntries().at(index.toInt()).sampleCount();
-
-        if (anyData) {
-            mPopupCreated = HbDeviceDialog::show("com.nokia.rnd.perfmondatapopup/1.0",
-                                                 collectParams());
-        }
-    }
-}
-
-void DataPopup::hide()
-{
-    mPopupVisible = false;
-    if (mPopupCreated) {
-        mPopupCreated = !cancel();
-    }
-}
-
-void DataPopup::updateSamples()
-{
-    updateData();
-}
-
-void DataPopup::updateSettings()
-{
-    // mEngine.settings().dataPopupVisibility can only be changed from
-    // main window, so we may assume the window is in foreground
-    updateVisibility(true);
-    updateData();
-}
-
-void DataPopup::updateVisibility(bool foreground)
-{
-    if (mEngine.settings().dataPopupVisibility() == EDataPopupVisbilityAlwaysOn ||
-        (mEngine.settings().dataPopupVisibility() == EDataPopupVisbilityBackgroundOnly && !foreground)) {
-
-        show();
-    } else {
-        hide();
-    }
-}
-
-void DataPopup::triggerAction(QVariantMap data)
-{
-    if (data.contains("mouseEvent") && data["mouseEvent"].toString() == "press") {
-        emit clicked();
-
-        // data popup was clicked, move it to other position
-        mEngine.settings().setDataPopupLocation(
-                EDataPopupLocationBottomMiddle - mEngine.settings().dataPopupLocation());
-        mEngine.updateSettings();
-    }
-}
-
-QVariantMap DataPopup::collectParams() const
-{
-    QVariantMap result;
-
-    // add location param
-    result["location"] = mEngine.settings().dataPopupLocation();
-
-    // add lines param
-    QStringList lines;
-    QList<SampleEntry> entries = mEngine.sampleEntries();
-    for (int i=0; i<entries.length(); i++)
-    {
-        if (mEngine.settings().dataPopupSources().isEnabled(i) &&
-            entries.at(i).sampleCount() > 0)
-        {
-            const SampleEntry &entry = entries.at(i);
-            const SampleData &sample = entry.sample(0);
-
-            if (i == ESourceCPU)
-            {
-                // CPU
-                double perc = sample.mSize > 0 ?
-                              100. - 100. * sample.mFree / sample.mSize : 0;
-
-
-                QString text = tr("%1 %2%").arg(entry.description()).
-                               arg(perc, 0, 'f', 0);
-                lines.append(text);
-            }
-            else
-            {
-                // RAM and Drives
-                QString text = tr("%1 free %L2%3").arg(entry.description()).
-                               arg(sample.mFree).arg(entry.unitShort());
-                lines.append(text);
-            }
-        }
-    }
-    result["lines"] = lines;
-
-    return result;
-}
-
-void DataPopup::updateData()
-{
-    if (!mPopupVisible)
-        return;
-
-    if (!mPopupCreated) {
-        show();
-    } else {
-        HbDeviceDialog::update(collectParams());
-    }
-}
--- a/perfmon/ui/hb/app/src/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
-* Copyright (c) 2010 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 <e32def.h>
-#include <e32cmn.h>
-
-#include "enginewrapper.h"
-
-
-// ---------------------------------------------------------------------------
-
-EngineWrapper::EngineWrapper() : mSettings(iSettings)
-{
-}
-
-// ---------------------------------------------------------------------------
-
-EngineWrapper::~EngineWrapper()
-{
-    finalize();
-}
-
-// ---------------------------------------------------------------------------
-
-bool EngineWrapper::initialize()
-{
-    TInt err = KErrNone;
-
-    TRAP(err, ConstructL());
-    if (err != KErrNone)
-        return false;
-
-    TRAP(err, ActivateEngineL());
-    if (err != KErrNone)
-        return false;
-
-    createSampleEntriesArray();
-
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-void EngineWrapper::createSampleEntriesArray()
-{
-    for (TInt i=0; i < iSampleEntryArray->Count(); i++)
-    {
-        mEntries.append(iSampleEntryArray->At(i));
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-void EngineWrapper::finalize()
-{
-    TRAP_IGNORE(DeActivateEngineL());
-}
-
-// ---------------------------------------------------------------------------
-
-bool EngineWrapper::updateSettings()
-{
-    TInt err = KErrNone;
-
-    TRAP(err, SaveSettingsL());
-    if (err != KErrNone)
-        return false;
-
-    TRAP(err, HandleSettingsChangeL());
-    if (err != KErrNone)
-        return false;
-
-    emit settingsUpdated();
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-void EngineWrapper::setLoggingEnabled(bool enabled)
-{
-    EnableLogging(enabled);    
-}
-
-// ---------------------------------------------------------------------------
-
-void EngineWrapper::SendDrawEventToContainersL()
-{
-    emit samplesUpdated();
-}
-
-// ---------------------------------------------------------------------------
--- a/perfmon/ui/hb/app/src/graphdatacontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
-* Copyright (c) 2010 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 "graphdatacontainer.h"
-#include "enginewrapper.h"
-
-#include <QPainter>
-#include <QFontMetrics>
-
-const int amountOfMicroSecondsFitsScreen = 20 * 1000000;
-const int microToSecondMultiplier = 1000000;
-
-GraphDataContainer::GraphDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
-    DataContainer(engine, parent)
-{
-    HbFontSpec spec(HbFontSpec::Secondary);
-    mFont = spec.font();
-    mFont.setPixelSize(12);
-}
-
-void GraphDataContainer::paint (QPainter *painter,
-    const QStyleOptionGraphicsItem *option,
-    QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    // set proper font and prepare font metrics for text width / height calculation
-    painter->setFont(mFont);
-    QFontMetricsF metrics(mFont);
-
-    // fill background with black color
-    painter->fillRect(rect(), Qt::black);
-
-    // calculate time factor
-    qreal scaleFactor = rect().width() / (qreal) amountOfMicroSecondsFitsScreen;
-
-    // calculate area height which is used to draw the grpahs
-    qreal drawAreaHeight = rect().height() - 2 * metrics.height();
-
-
-    const QList<SampleEntry> sampleEntries = engine().sampleEntries();
-
-    // check if sample array has been constructed
-    if (sampleEntries.length())
-    {
-        // draw vertical time lines first
-        int verticalBarPeriodInSecs = engine().settings().graphVerticalBarPeriod();
-
-        if (verticalBarPeriodInSecs >= 1 && sampleEntries.first().sampleCount() > 0)
-        {
-            // get time from the first sample
-            const SampleData& firstSample = sampleEntries.first().sample(0);
-            qint64 currentMicroSeconds = firstSample.mTimeFromStart;
-
-            // calculate amount of microseconds exceeding value by using the modulo operator
-            int remainderInMicroSeconds = currentMicroSeconds % (verticalBarPeriodInSecs * 1000000);
-
-            // calculate first x pos
-            qreal vbarXpos = rect().width() - (remainderInMicroSeconds * scaleFactor);
-
-            // calculate the amount in seconds
-            int barSeconds = (currentMicroSeconds - remainderInMicroSeconds) / microToSecondMultiplier;
-
-            // continue drawing periodically the vertical lines
-            while (vbarXpos >= 0 && barSeconds >= 0)
-            {
-                // draw vertical line
-                painter->setPen(Qt::darkRed);
-                painter->drawLine(QPointF(vbarXpos, metrics.height() + 1),
-                                  QPointF(vbarXpos, rect().height() - metrics.height()));
-
-                // draw seconds value
-                painter->setPen(Qt::darkGray);
-                QString secsText = QString("%1s").arg(barSeconds);
-                QPointF secsPos(vbarXpos - metrics.width(secsText) / 2,
-                                rect().height());
-                painter->drawText(secsPos, secsText);
-
-                // calculate new position
-                vbarXpos -= verticalBarPeriodInSecs * 1000000 * scaleFactor;
-                barSeconds -= verticalBarPeriodInSecs;
-            }
-        }
-
-        // draw the basic grid
-        painter->setPen(Qt::darkGray);
-
-        qreal axisY = metrics.height();
-        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // upper line
-        painter->drawText(QPointF(0, axisY), tr("100%"));
-
-        axisY = rect().height() / 2;
-        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // mid line
-        painter->drawText(QPointF(0, axisY), tr("50%"));
-
-        axisY = rect().height() - metrics.height();
-        painter->drawLine(QPointF(0, axisY), QPointF(rect().width(), axisY)); // bottom line
-        painter->drawText(QPointF(0, axisY), tr("0%"));
-
-        int c = 0;
-        // draw graphs for each sampled type
-        for (int i=0; i<sampleEntries.length(); i++)
-        {
-            // check if this setting has been enabled and it has some data
-            if (engine().settings().graphSources().isEnabled(i) &&
-                sampleEntries.at(i).sampleCount() > 0)
-            {
-                // set pen color for the graph
-                painter->setPen(sampleEntries.at(i).graphColor());
-
-                // remember the position where drawing started
-                qreal currentXPos(rect().width()); // start drawing from right
-                qreal currentYPos(0.);
-
-                // draw samples
-                for (int j=0; j<sampleEntries.at(i).sampleCount()-1; j++)
-                {
-                    const SampleData& currentSample = sampleEntries.at(i).sample(j);
-                    const SampleData& previousSample = sampleEntries.at(i).sample(j+1);
-
-                    // calculate X position for previous (j+1)
-                    qreal previousXPos = currentXPos -
-                        qAbs(previousSample.mTimeFromStart - currentSample.mTimeFromStart) * scaleFactor;
-
-
-                    // calculate initial Y position
-                    if (j==0)
-                    {
-                        currentYPos = currentSample.mSize > 0 ?
-                            drawAreaHeight * currentSample.mFree / currentSample.mSize + metrics.height() :
-                            rect().height() - metrics.height();
-                    }
-
-                    // calculate Y position for previous (j+1)
-                    qreal previousYPos = previousSample.mSize > 0 ?
-                        drawAreaHeight * previousSample.mFree / previousSample.mSize + metrics.height() :
-                        rect().height() - metrics.height();
-
-
-                    // draw a line between the previous and current
-                    painter->drawLine(QPointF(previousXPos, previousYPos),
-                                      QPointF(currentXPos, currentYPos));
-
-                    // draw current value in %
-                    if (j==0) // draw the value of first sample
-                    {
-                        qreal perc = currentSample.mSize > 0 ?
-                                     100. - 100. * currentSample.mFree / currentSample.mSize : 0;
-                        QString percText = QString ("%1 %2%").
-                                           arg(sampleEntries.at(i).description()).
-                                           arg(perc, 0, 'f', 0);
-
-                        painter->drawText(QPointF(0, metrics.height() * (c + 2)),
-                                          percText);
-                        c++;
-                    }
-
-
-                    // stop drawing if we have run out of space
-                    if (previousXPos < 0)
-                        break;
-
-                    // remeber previous values
-                    currentXPos = previousXPos;
-                    currentYPos = previousYPos;
-                }
-
-
-            }
-        }
-
-    }
-}
--- a/perfmon/ui/hb/app/src/main.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QMessageBox>
-
-#include "application.h"
-#include "enginewrapper.h"
-#include "mainwindow.h"
-#include "datapopup.h"
-
-int main(int argc, char *argv[])
-{
-    Application app(argc, argv);
-	
-    EngineWrapper engine;
-    if (!engine.initialize())
-    {
-        QMessageBox::critical(0, QObject::tr("Error"), QObject::tr("Unable to initialize engine. Application will now quit."));
-        return 1;
-    }
-
-    MainWindow window(engine);
-	window.show();
-
-//    DataPopup dataPopup(engine);
-
-//    QObject::connect(&app, SIGNAL(foregroundEvent(bool)),
-//                     &dataPopup, SLOT(updateVisibility(bool)));
-
-    // TODO: pass false if run in background
-//    dataPopup.updateVisibility(true);
-
-    return app.exec();
-}
--- a/perfmon/ui/hb/app/src/mainview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QActionGroup>
-#include <HbApplication>
-#include <HbMenu>
-#include <HbToolBar>
-#include <HbAction>
-#include <HbMessageBox>
-#include <HbLabel>
-
-#include "mainview.h"
-#include "enginewrapper.h"
-
-
-// ---------------------------------------------------------------------------
-
-MainView::MainView(EngineWrapper &engine) :
-    mEngine(engine),
-    mValueDataContainer(0),
-    mGraphDataContainer(0)
-{
-    setTitle(tr("Perf. Monitor"));
-    mValueDataContainer = new ValueDataContainer(mEngine, this); 
-    mGraphDataContainer = new GraphDataContainer(mEngine, this);
-    createMenu();
-    showValues();
-}
-
-// ---------------------------------------------------------------------------
-
-MainView::~MainView()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-void MainView::createMenu()
-{
-    HbMenu *menu = this->menu();
-    HbToolBar *toolbar = this->toolBar();
-
-    if (menu && toolbar) {
-        mSwitchViewAction = new HbAction(toolbar);
-        toolbar->addAction(mSwitchViewAction);
-
-        QActionGroup *viewGroup = new QActionGroup(this);
-        HbMenu *viewSubmenu = menu->addMenu(tr("View"));
-        mValuesAction = viewSubmenu->addAction(tr("Values"), this, SLOT(showValues()));
-        mValuesAction->setCheckable(true);
-        mValuesAction->setChecked(true);
-        viewGroup->addAction(mValuesAction);
-
-        mGraphAction = viewSubmenu->addAction(tr("Graphs"), this, SLOT(showGraphs()));
-        mGraphAction->setCheckable(true);
-        viewGroup->addAction(mGraphAction);
-
-        mLoggingAction = menu->addAction(QString(), this, SLOT(toggleLogging()));
-        toolbar->addAction(mLoggingAction);
-        updateLoggingAction();
-
-        menu->addAction(tr("Settings..."), this, SIGNAL(settingsCommandInvoked()));
-        menu->addAction(tr("About..."), this, SLOT(showAbout()));
-        menu->addAction(tr("Exit"), qApp, SLOT(quit()));
-
-    }
-}
-
-void MainView::showValues()
-{
-    // remove old widget & take ownership
-    takeWidget();
-    mGraphDataContainer->hideContainer();
-    mValueDataContainer->showContainer(); 
-    // set new widget
-    this->setWidget(mValueDataContainer);
-    
-    mValuesAction->setChecked(true);
-
-    mSwitchViewAction->setText(tr("View Graphs"));
-    disconnect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showValues()));
-    connect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showGraphs()));
-}
-
-void MainView::showGraphs()
-{
-    // remove old widget & take ownership
-    takeWidget();
-    mValueDataContainer->hideContainer();    
-    mGraphDataContainer->showContainer();
-    // set new widget
-    this->setWidget(mGraphDataContainer);
-
-    mGraphAction->setChecked(true);
-
-    mSwitchViewAction->setText(tr("View Values"));
-    disconnect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showGraphs()));
-    connect(mSwitchViewAction, SIGNAL(triggered(bool)), this, SLOT(showValues()));
-}
-
-void MainView::updateLoggingAction()
-{
-    mLoggingAction->setText(mEngine.settings().loggingEnabled() ?
-                            tr("Stop Logging") :
-                            tr("Start Logging"));
-}
-
-void MainView::toggleLogging()
-{
-    mEngine.setLoggingEnabled(!mEngine.settings().loggingEnabled());
-    updateLoggingAction();
-}
-
-void MainView::showAbout()
-{
-    HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-    messageBox->setText("Version 1.1.1 - 21st May 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.");
-    HbLabel *header = new HbLabel("About PerfMon", messageBox);
-    messageBox->setHeadingWidget(header);
-    messageBox->setAttribute(Qt::WA_DeleteOnClose);
-    messageBox->setTimeout(HbPopup::NoTimeout);
-    messageBox->open();
-}
--- a/perfmon/ui/hb/app/src/mainwindow.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2010 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 <HbAction>
-
-#include "mainwindow.h"
-
-#include "enginewrapper.h"
-#include "mainview.h"
-#include "settingsview.h"
-
-MainWindow::MainWindow(EngineWrapper &engine, QWidget *parent)
-    : HbMainWindow(parent)
-    , mEngine(engine)
-{
-    mMainView = new MainView(mEngine);
-    connect(mMainView, SIGNAL(settingsCommandInvoked()), this, SLOT(showSettings()));
-
-    addView(mMainView);
-    
-    mSettingsView = new SettingsView(mEngine);
-    connect(mSettingsView, SIGNAL(finished(bool)), this, SLOT(showMainView()));
-    
-    HbAction *action = new HbAction(Hb::BackNaviAction, mSettingsView);        
-    connect(action, SIGNAL(triggered()), mSettingsView, SLOT(reject()));
-    mSettingsView->setNavigationAction(action);
-
-    addView(mSettingsView);
-    
-    showMainView();
-}
-
-void MainWindow::showMainView()
-{
-    setCurrentView( mMainView );
-}
-
-void MainWindow::showSettings()
-{
-    setCurrentView( mSettingsView );
-}
--- a/perfmon/ui/hb/app/src/popupdatacontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2010 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 "popupdatacontainer.h"
-#include "enginewrapper.h"
-
-#include <QGraphicsLinearLayout>
-#include <HbLabel>
-#include <QPainter>
-
-const int leftMargin = 2;
-
-PopupDataContainer::PopupDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
-    DataContainer(engine, parent)
-{
-    connect(&engine, SIGNAL(samplesUpdated()), this, SLOT(samplesUpdated()));
-
-    HbFontSpec spec(HbFontSpec::Secondary);
-    mFont = spec.font();
-    mFont.setPixelSize(12);
-    
-}
-
-void PopupDataContainer::samplesUpdated()
-{
-    update();
-}
-
-void PopupDataContainer::paint (QPainter *painter,
-    const QStyleOptionGraphicsItem *option,
-    QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    // set proper font and prepare font metrics for text height calculation
-    painter->setFont(mFont);
-    QFontMetricsF metrics(mFont);
-
-    QList<SampleEntry> entries = engine().sampleEntries();
-    qreal verticalPos = metrics.height();
-
-    for (int i=0; i<entries.length(); i++)
-    {
-        if (engine().settings().dataPopupSources().isEnabled(i) &&
-            entries.at(i).sampleCount() > 0)
-        {
-            const SampleEntry &entry = entries.at(i);
-            const SampleData &sample = entry.sample(0);
-
-            if (i == ESourceCPU)
-            {
-                // CPU
-                double perc = sample.mSize > 0 ?
-                              100. - 100. * sample.mFree / sample.mSize : 0;
-
-
-                QString text = tr("%1 %2%").arg(entry.description()).
-                               arg(perc, 0, 'f', 2);
-                painter->drawText(QPointF(leftMargin, verticalPos), text);
-            }
-            else
-            {
-                // RAM and Drives
-                QString text = tr("%1 free %L2%3").arg(entry.description()).
-                               arg(sample.mFree).arg(entry.unitShort());
-                painter->drawText(QPointF(leftMargin, verticalPos), text);
-            }
-
-            verticalPos += metrics.height();
-        }
-    }
-}
--- a/perfmon/ui/hb/app/src/settingsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
-* Copyright (c) 2010 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 "settingsview.h"
-
-#include <HbAction>
-#include <HbToolBar>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormModelItem>
-#include <HbDataFormViewItem>
-#include <HbLineEdit>
-#include <HbPushButton>
-
-#include "enginewrapper.h"
-
-const QStringList PRIORITY_ITEMS = QStringList() << SettingsView::tr("Much less") <<
-    SettingsView::tr("Less") << SettingsView::tr("Normal") <<
-    SettingsView::tr("More") << SettingsView::tr("Much more") <<
-    SettingsView::tr("Real time") << SettingsView::tr("Abs. very low") <<
-    SettingsView::tr("Abs. low") << SettingsView::tr("Abs background") <<
-    SettingsView::tr("Abs. foreground") << SettingsView::tr("Abs high");
-
-const QStringList CPU_SAMPLING = QStringList() << SettingsView::tr("CPU Time") <<
-    SettingsView::tr("NOPs");
-
-const QStringList POPUP_LOCATION = QStringList() << SettingsView::tr("Top right") <<
-    SettingsView::tr("Bottom middle");
-
-const QStringList POPUP_VISIBILITY = QStringList() << SettingsView::tr("On") <<
-    SettingsView::tr("Backgr. only") << SettingsView::tr("Off");
-
-const QStringList SOURCES = QStringList() << SettingsView::tr("CPU") <<
-    SettingsView::tr("Ram") << SettingsView::tr("C:") << SettingsView::tr("D:") <<
-    SettingsView::tr("E:") << SettingsView::tr("F:") << SettingsView::tr("G:") <<
-    SettingsView::tr("H:") << SettingsView::tr("I:");
-
-const QStringList LOG_MODES = QStringList() << SettingsView::tr("RDebug") <<
-    SettingsView::tr("Log file") << SettingsView::tr("RDebug & log file");
-
-
-SettingsView::SettingsView(EngineWrapper &engine)
-    : mEngine(engine), mLogFilePathItem(0)
-{
-    setTitle(tr("Settings"));
-
-    //create toolbar showing launch popup
-    HbToolBar *toolBar = this->toolBar();
-    HbAction *actionOk = new HbAction(tr("Ok"), toolBar);
-    HbAction *actionCancel = new HbAction(tr("Cancel"), toolBar);
-    
-    toolBar->addAction(actionOk);
-    toolBar->addAction(actionCancel);
-
-    //create setting form
-    mSettingsForm = new HbDataForm();
-
-    //create a model class
-    mModel = new HbDataFormModel(this);
-    createModel(*mModel);
-    load(engine.settings());
-
-    connect(mSettingsForm, SIGNAL(itemShown(const QModelIndex)),
-            this, SLOT(dataItemDisplayed(const QModelIndex)));
-
-    // Set created model to form
-    mSettingsForm->setModel(mModel);
-    setWidget(mSettingsForm);
-
-
-    connect(actionOk, SIGNAL(triggered()), this, SLOT(accept()));
-    connect(actionCancel, SIGNAL(triggered()), this, SLOT(reject()));
-    connect(this, SIGNAL(aboutToClose()), this, SLOT(accept()));
-
-}
-
-void SettingsView::createModel(HbDataFormModel &model)
-{
-    // General page
-    HbDataFormModelItem *generalPage = model.appendDataFormPage(tr("General"));
-
-    mHeartBeatItem = model.appendDataFormItem(
-            HbDataFormModelItem::TextItem, tr("Heart beat (ms)"), generalPage);
-    mHeartBeatItem->setContentWidgetData("maximum", 99999);
-    mHeartBeatItem->setContentWidgetData("minimum", 0);
-    mHeartBeatItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
-
-    mMaxSamplesItem = model.appendDataFormItem(
-            HbDataFormModelItem::TextItem, tr("Max samples"), generalPage);
-    mMaxSamplesItem->setContentWidgetData("maximum", 9999);
-    mMaxSamplesItem->setContentWidgetData("minimum", 0);
-    mMaxSamplesItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
-
-    mPriorityItem = model.appendDataFormItem(
-            HbDataFormModelItem::RadioButtonListItem, tr("Priority"), generalPage);
-    mPriorityItem->setContentWidgetData("items", PRIORITY_ITEMS);
-
-    mCpuSamplingItem = model.appendDataFormItem(
-            HbDataFormModelItem::RadioButtonListItem, tr("CPU sampling mode"), generalPage);
-    mCpuSamplingItem->setContentWidgetData("items", CPU_SAMPLING);
-    
-    mKeepBacklightItem = model.appendDataFormItem(
-            HbDataFormModelItem::CheckBoxItem, tr("Backlight"), generalPage);
-    mKeepBacklightItem->setContentWidgetData("text", tr("Keep backlight on"));
-
-    // Data popup page
-    HbDataFormModelItem *dataPopupPage = model.appendDataFormPage(tr("Data popup"));
-
-    mPopupVisibilityItem = model.appendDataFormItem(
-            HbDataFormModelItem::RadioButtonListItem, tr("Visibility"),
-            dataPopupPage);
-    mPopupVisibilityItem->setContentWidgetData("items", POPUP_VISIBILITY);
-
-    mPopupLocationItem = model.appendDataFormItem(
-            HbDataFormModelItem::RadioButtonListItem, tr("Location"), dataPopupPage);
-    mPopupLocationItem->setContentWidgetData("items", POPUP_LOCATION);
-
-    mPopupSourcesItem = model.appendDataFormItem(
-            HbDataFormModelItem::MultiselectionItem, tr("Sources"), dataPopupPage);
-    mPopupSourcesItem->setContentWidgetData("items", SOURCES);
-
-    // Graphs page
-    HbDataFormModelItem *graphsPage = model.appendDataFormPage(tr("Graphs"));
-
-    mVerticalBarPeriodItem = model.appendDataFormItem(
-            HbDataFormModelItem::TextItem, tr("Vertical bar period (s)"), graphsPage);
-    mVerticalBarPeriodItem->setContentWidgetData("maximum", 999);
-    mVerticalBarPeriodItem->setContentWidgetData("minimum", 0);
-    mVerticalBarPeriodItem->setContentWidgetData("inputMethodHints", Qt::ImhDigitsOnly);
-
-    mGraphSourcesItem = model.appendDataFormItem(
-            HbDataFormModelItem::MultiselectionItem, tr("Sources"), graphsPage);
-    mGraphSourcesItem->setContentWidgetData("items", SOURCES);
-
-    // Logging page
-    mLogPage = model.appendDataFormPage(tr("Logging"));
-
-    mLogModeItem = model.appendDataFormItem(
-            HbDataFormModelItem::RadioButtonListItem, tr("Mode"), mLogPage);
-    mLogModeItem->setContentWidgetData("items", LOG_MODES);
-    mSettingsForm->addConnection(mLogModeItem, SIGNAL(itemSelected(int)),
-                                 this, SLOT(logModeChanged(int)));
-
-    mLogSourcesItem = model.appendDataFormItem(
-            HbDataFormModelItem::MultiselectionItem, tr("Sources"), mLogPage);
-    mLogSourcesItem->setContentWidgetData("items", SOURCES);
-}
-
-void SettingsView::load(const PerfMonSettings& settings)
-{
-    mHeartBeatItem->setContentWidgetData("text", settings.heartBeat());
-    mMaxSamplesItem->setContentWidgetData("text", settings.maxSamples());
-    mPriorityItem->setContentWidgetData("selected", settings.priority());
-    mCpuSamplingItem->setContentWidgetData("selected", settings.cpuMode());
-    mKeepBacklightItem->setContentWidgetData("checkState", settings.keepBacklightOn() ? Qt::Checked : Qt::Unchecked);
-
-    mPopupVisibilityItem->setContentWidgetData("selected", settings.dataPopupVisibility());
-    mPopupLocationItem->setContentWidgetData("selected", settings.dataPopupLocation());
-    mPopupSourcesItem->setContentWidgetData("selectedItems",
-            qVariantFromValue(settings.dataPopupSources().enabledIndexes()));
-
-    mVerticalBarPeriodItem->setContentWidgetData("text", settings.graphVerticalBarPeriod());
-    mGraphSourcesItem->setContentWidgetData("selectedItems",
-            qVariantFromValue(settings.graphSources().enabledIndexes()));
-
-    mLogModeItem->setContentWidgetData("selected", settings.loggingMode());
-    mLogFilePath = settings.loggingFilePath();
-    if (settings.loggingMode() > ELoggingModeRDebug)
-    	createLogFilePathItem();
-    mLogSourcesItem->setContentWidgetData("selectedItems",
-            qVariantFromValue(settings.loggingSources().enabledIndexes()));
-}
-
-void SettingsView::save(PerfMonSettings& settings)
-{
-    settings.setHeartBeat(mHeartBeatItem->contentWidgetData("text").toInt());
-    settings.setMaxSamples(mMaxSamplesItem->contentWidgetData("text").toInt());
-    settings.setPriority(mPriorityItem->contentWidgetData("selected").toInt());
-    settings.setCpuMode(mCpuSamplingItem->contentWidgetData("selected").toInt());
-    settings.setKeepBacklightOn(mKeepBacklightItem->contentWidgetData("checkState").toInt() == Qt::Checked);
-
-    settings.setDataPopupVisibility(mPopupVisibilityItem->contentWidgetData("selected").toInt());
-    settings.setDataPopupLocation(mPopupLocationItem->contentWidgetData("selected").toInt());
-    settings.dataPopupSources().setEnabledIndexes(
-            qVariantValue<QList<QVariant> >(mPopupSourcesItem->contentWidgetData("selectedItems")));
-
-    settings.setGraphVerticalBarPeriod(mVerticalBarPeriodItem->contentWidgetData("text").toInt());
-    settings.graphSources().setEnabledIndexes(
-            qVariantValue<QList<QVariant> >(mGraphSourcesItem->contentWidgetData("selectedItems")));
-
-    settings.setLoggingMode(mLogModeItem->contentWidgetData("selected").toInt());
-    
-    if (mLogFilePathItem)
-    	settings.setLoggingFilePath(mLogFilePathItem->contentWidgetData("text").toString());
-    settings.loggingSources().setEnabledIndexes(
-            qVariantValue<QList<QVariant> >(mLogSourcesItem->contentWidgetData("selectedItems")));
-}
-
-void SettingsView::dataItemDisplayed(const QModelIndex &index)
-{
-    HbDataFormModelItem* modelItem = mModel->itemFromIndex(index);
-    HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>(mSettingsForm->itemByIndex(index));
-    HbWidget *dataContentWidget = viewItem->dataItemContentWidget();
-
-    // set input method hint for edits
-    // TODO: remove once setContentWidgetData works with inputMethodHints
-    if (modelItem == mHeartBeatItem ||
-        modelItem == mMaxSamplesItem ||
-        modelItem == mVerticalBarPeriodItem)
-    {
-        HbLineEdit *edit = static_cast<HbLineEdit*>(dataContentWidget);
-        edit->setInputMethodHints(Qt::ImhDigitsOnly);
-    }
-}
-
-void SettingsView::logModeChanged(int index)
-{
-    if (index == ELoggingModeRDebug && mLogFilePathItem) {
-        removeLogFilePathItem();
-    }
-    else if (index != ELoggingModeRDebug && !mLogFilePathItem) {
-		createLogFilePathItem();
-    }
-}
-
-void SettingsView::createLogFilePathItem()
-{
-	mLogFilePathItem = mModel->insertDataFormItem(mLogPage->indexOf(mLogModeItem) + 1,
-			HbDataFormModelItem::TextItem, tr("Log file path"), mLogPage);
-	mLogFilePathItem->setContentWidgetData("text", mLogFilePath);
-}
-
-void SettingsView::removeLogFilePathItem()
-{
-	// we need to store current text so that it is not lost when 
-	// user hides and then displays "Log file path" item again.
-	mLogFilePath = mLogFilePathItem->contentWidgetData("text").toString();
-	mModel->removeItem(mLogFilePathItem);
-	mLogFilePathItem = 0;
-}
-
-void SettingsView::accept()
-{
-    save(mEngine.settings());
-    mEngine.updateSettings();
-    emit finished(true);
-}
-
-void SettingsView::reject()
-{
-    emit finished(false);
-}
--- a/perfmon/ui/hb/app/src/valuedatacontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2010 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 "valuedatacontainer.h"
-#include "enginewrapper.h"
-
-#include <QGraphicsLinearLayout>
-#include <QPalette>
-#include <QPainter>
-#include <HbColorScheme>
-
-const int leftMargin = 2;
-
-ValueDataContainer::ValueDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
-    DataContainer(engine, parent)
-{
-    HbFontSpec spec(HbFontSpec::Secondary);
-    mFont = spec.font();
-}
-
-void ValueDataContainer::paint (QPainter *painter,
-    const QStyleOptionGraphicsItem *option,
-    QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    // set proper font and prepare font metrics for text height calculation
-    painter->setFont(mFont);
-
-    QColor col = HbColorScheme::color("qtc_textedit_normal");
-    if(col.isValid())
-        painter->setPen(col);
-    
-    QFontMetricsF metrics(mFont);
-
-    QList<SampleEntry> entries = engine().sampleEntries();
-    int c = 1;
-
-    for (int i=0; i<entries.length(); i++)
-    {
-        const SampleEntry &entry = entries.at(i);
-
-        if (entry.sampleCount() == 0)
-            continue;
-
-        const SampleData &sample = entry.sample(0);
-
-        if (i == 0)
-        {
-            // CPU
-            double perc = sample.mSize > 0 ?
-                          100. - 100. * sample.mFree / sample.mSize : 0;
-
-
-            QString text = tr("%1 %2%").arg(entry.description()).
-                           arg(perc, 0, 'f', 0);
-            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
-            c++;
-        }
-        else if (sample.mSize > 0)
-        {
-            // RAM and Drives
-            QString text = tr("%1 free %L2%3").arg(entry.description()).
-                           arg(sample.mFree).arg(entry.unitShort());
-            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
-            c++;
-
-            text = tr("%1 size %L2%3").arg(entry.description()).
-                   arg(sample.mSize).arg(entry.unitShort());
-            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
-            c++;
-        }
-    }
-}
--- a/perfmon/ui/hb/datapopup/datapopup.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = lib
-TARGET = PerfMonDataPopupPlugin
-CONFIG += plugin hb
-
-# directories
-INCLUDEPATH += inc
-DEPENDPATH += inc
-
-HEADERS += inc/perfmondatapopupplugin_p.h
-HEADERS += inc/perfmondatapopupdialog_p.h
-HEADERS += inc/perfmondatapopupwidget_p.h
-
-SOURCES += src/perfmondatapopupplugin.cpp
-SOURCES += src/perfmondatapopupdialog.cpp
-SOURCES += src/perfmondatapopupwidget.cpp
-
-symbian {
-		INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-    TARGET.EPOCALLOWDLLDATA = 1
-    TARGET.CAPABILITY = CAP_GENERAL_DLL
-    TARGET.UID3 = 0x2002E6B0
-
-    hblib.sources = Hb.dll
-    hblib.path = \sys\bin
-    hblib.depends = "(0xEEF9EA38), 1, 0, 0, {\"Hb\"}"
-
-    pluginstub.sources = PerfMonDataPopupPlugin.dll
-    pluginstub.path = /private/20011385
-    DEPLOYMENT += pluginstub
-}
\ No newline at end of file
--- a/perfmon/ui/hb/datapopup/inc/perfmondatapopupdialog_p.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PERFMONDATAPOPUPDIALOG_P_H
-#define PERFMONDATAPOPUPDIALOG_P_H
-
-#include <QObject>
-#include <QVariantMap>
-
-#include <hbdevicedialoginterface.h>
-#include <hbdevicedialog.h>
-#include <hbnotificationdialog.h>
-
-class PerfMonDataPopupWidget;
-
-class PerfMonDataPopupDialog : public HbDialog, public HbDeviceDialogInterface
-{
-    Q_OBJECT
-    Q_PROPERTY(Location location READ location WRITE setLocation)
-    Q_PROPERTY(QStringList lines READ lines WRITE setLines)
-
-    Q_ENUMS(Location)
-
-public:
-    enum Location
-    {
-        LocationTopRight = 0,
-        LocationBottomMiddle
-    };
-
-public:
-    PerfMonDataPopupDialog(const QVariantMap &parameters);
-    virtual ~PerfMonDataPopupDialog();
-
-    bool setDeviceDialogParameters(const QVariantMap &parameters);
-    int deviceDialogError() const;
-    void closeDeviceDialog(bool byClient);
-    HbPopup *deviceDialogWidget() const;
-
-protected:
-//    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
-//               QWidget *widget=0);
-
-protected:
-    void hideEvent(QHideEvent *event);
-    void showEvent(QShowEvent *event);
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-
-signals:
-    void deviceDialogClosed();
-    void deviceDialogData(QVariantMap data);
-
-private slots:
-    void reposition();
-
-private:
-    Location location() const;
-    void setLocation(Location location);
-
-    QStringList lines() const;
-    void setLines(const QStringList &lines);
-
-private:
-    Q_DISABLE_COPY(PerfMonDataPopupDialog)
-
-    int mLastError;
-    bool mShowEventReceived;
-
-    Location mLocation;
-
-    PerfMonDataPopupWidget *mWidget;
-};
-
-#endif // PERFMONDATAPOPUPDIALOG_P_H
--- a/perfmon/ui/hb/datapopup/inc/perfmondatapopupplugin_p.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PERFMONDATAPOPUPPLUGIN_P_H
-#define PERFMONDATAPOPUPPLUGIN_P_H
-
-#include <QObject>
-#include <QVariantMap>
-
-#include <hbdevicedialogplugin.h>
-
-class PerfMonDataPopupPluginPrivate;
-
-class PerfMonDataPopupPlugin : public HbDeviceDialogPlugin
-{
-    Q_OBJECT
-
-public:
-    friend class PerfMonDataPopupPluginPrivate;
-
-    PerfMonDataPopupPlugin();
-    ~PerfMonDataPopupPlugin();
-
-    bool accessAllowed(const QString &deviceDialogType,
-        const QVariantMap &parameters, const QVariantMap &securityInfo) const;
-    HbDeviceDialogInterface *createDeviceDialog(const QString &deviceDialogType,
-        const QVariantMap &parameters);
-    bool deviceDialogInfo(const QString &deviceDialogType,
-        const QVariantMap &parameters, DeviceDialogInfo *info) const;
-    QStringList deviceDialogTypes() const;
-    PluginFlags pluginFlags() const;
-    int error() const;
-
-private:
-    Q_DISABLE_COPY(PerfMonDataPopupPlugin)
-    PerfMonDataPopupPluginPrivate *d;
-};
-
-#endif // PERFMONDATAPOPUPPLUGIN_P_H
--- a/perfmon/ui/hb/datapopup/inc/perfmondatapopuppluginerrors_p.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PERFMONDATAPOPUPPLUGINERRORS_P_H
-#define PERFMONDATAPOPUPPLUGINERRORS_P_H
-
-#include <hbdevicedialog.h>
-
-// No error
-const int NoError = 0;
-// Illegal parameter error
-const int ParameterError = HbDeviceDialog::PluginErrors + 1;
-
-#endif // PERFMONDATAPOPUPPLUGINERRORS_P_H
--- a/perfmon/ui/hb/datapopup/inc/perfmondatapopupwidget_p.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PERFMONDATAPOPUPWIDGET_P_H
-#define PERFMONDATAPOPUPWIDGET_P_H
-
-#include <HbWidget>
-
-class PerfMonDataPopupWidget : public HbWidget
-{
-    Q_OBJECT
-    Q_PROPERTY(QStringList lines READ lines WRITE setLines)
-
-public:
-    explicit PerfMonDataPopupWidget(QGraphicsItem *parent = 0);
-
-public:
-    QStringList lines() const;
-    void setLines(const QStringList &lines);
-
-protected:
-    QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0);
-
-private:
-    QStringList mLines;
-
-    QFont mFont;
-
-};
-
-#endif // PERFMONDATAPOPUPWIDGET_P_H
--- a/perfmon/ui/hb/datapopup/src/perfmondatapopupdialog.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QtDebug>
-#include <QIcon>
-#include <QVariant>
-#include <QList>
-#include <HbMainWindow>
-
-#include "perfmondatapopupdialog_p.h"
-#include "perfmondatapopuppluginerrors_p.h"
-#include "perfmondatapopupwidget_p.h"
-
-// Constructor
-PerfMonDataPopupDialog::PerfMonDataPopupDialog(const QVariantMap &parameters) :
-        mLastError(NoError),
-        mShowEventReceived(false),
-        mLocation(LocationTopRight),
-        mWidget(new PerfMonDataPopupWidget(this))
-{
-    setTimeout(0);
-    setModal(false);
-    setDismissPolicy(HbPopup::NoDismiss);
-    setBackgroundItem(0);
-    setContentWidget(mWidget);
-
-    setDeviceDialogParameters(parameters);
-}
-
-PerfMonDataPopupDialog::~PerfMonDataPopupDialog()
-{
-}
-
-// Set parameters
-bool PerfMonDataPopupDialog::setDeviceDialogParameters(const QVariantMap &parameters)
-{
-    if (parameters.contains("lines"))
-    {
-        QVariant lines = parameters.value("lines");
-        if (!lines.canConvert(QVariant::StringList)) {
-            mLastError = ParameterError;
-            return false;
-        }
-
-        setLines(lines.toStringList());
-    }
-
-    if (parameters.contains("location"))
-    {
-        QVariant location = parameters.value("location");
-        if (!location.canConvert<int>()) {
-            mLastError = ParameterError;
-            return false;
-        }
-
-        if (location.toInt() != LocationTopRight &&
-            location.toInt() != LocationBottomMiddle)
-        {
-            mLastError = ParameterError;
-            return false;
-        }
-
-        setLocation(static_cast<Location>(location.toInt()));
-    }
-    return true;
-}
-
-// Get error
-int PerfMonDataPopupDialog::deviceDialogError() const
-{
-    return mLastError;
-}
-
-// Close device dialog
-void PerfMonDataPopupDialog::closeDeviceDialog(bool byClient)
-{
-    Q_UNUSED(byClient);
-    close();
-    // If show event has been received, close is signalled from hide event. If not,
-    // hide event does not come and close is signalled from here.
-    if (!mShowEventReceived) {
-        emit deviceDialogClosed();
-    }
-}
-
-// Return display widget
-HbPopup *PerfMonDataPopupDialog::deviceDialogWidget() const
-{
-    return const_cast<PerfMonDataPopupDialog*>(this);
-}
-
-// Widget is about to hide. Closing effect has ended.
-void PerfMonDataPopupDialog::hideEvent(QHideEvent *event)
-{
-    if (mainWindow()) {
-        disconnect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
-                   this, SLOT(reposition()));
-    }
-    HbPopup::hideEvent(event);
-    emit deviceDialogClosed();
-}
-
-// Widget is about to show
-void PerfMonDataPopupDialog::showEvent(QShowEvent *event)
-{
-    if (mainWindow()) {
-        connect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
-                this, SLOT(reposition()));
-    }
-    reposition();
-    HbPopup::showEvent(event);
-    mShowEventReceived = true;
-}
-
-
-void PerfMonDataPopupDialog::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-
-    QVariantMap data;
-    data["mouseEvent"] = "press";
-    emit deviceDialogData(data);
-}
-
-
-PerfMonDataPopupDialog::Location PerfMonDataPopupDialog::location() const
-{
-    return mLocation;
-}
-
-void PerfMonDataPopupDialog::setLocation(Location location)
-{
-    if (location != mLocation) {
-        mLocation = location;
-        reposition();
-    }
-}
-
-QStringList PerfMonDataPopupDialog::lines() const
-{
-    return mWidget->lines();
-}
-
-void PerfMonDataPopupDialog::setLines(const QStringList &lines)
-{
-    mWidget->setLines(lines);
-}
-
-void PerfMonDataPopupDialog::reposition()
-{
-    if (mainWindow()) {
-        QSize screenSize = HbDeviceProfile::profile(mainWindow()).logicalSize();
-        switch (mLocation) {
-            case LocationTopRight:
-                setPreferredPos(QPointF(screenSize.width(), 0),
-                                HbPopup::TopRightCorner);
-                break;
-
-            case LocationBottomMiddle:
-                setPreferredPos(QPointF(screenSize.width() / 2, screenSize.height()),
-                                HbPopup::BottomEdgeCenter);
-                break;
-        }
-    }
-}
--- a/perfmon/ui/hb/datapopup/src/perfmondatapopupplugin.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QtPlugin>
-
-#include <hbdevicedialog.h>
-#include "perfmondatapopupplugin_p.h"
-#include "perfmondatapopupdialog_p.h"
-#include "perfmondatapopuppluginerrors_p.h"
-
-Q_EXPORT_PLUGIN2(perfmondatapopupplugin, PerfMonDataPopupPlugin)
-
-// This plugin implements one device dialog type
-static const struct {
-    const char *mTypeString;
-} dialogInfos[] = {
-    {"com.nokia.rnd.perfmondatapopup/1.0"}
-};
-
-class PerfMonDataPopupPluginPrivate
-{
-public:
-    PerfMonDataPopupPluginPrivate() {mError = NoError;}
-
-    int mError;
-};
-
-// Constructor
-PerfMonDataPopupPlugin::PerfMonDataPopupPlugin()
-    : d(new PerfMonDataPopupPluginPrivate)
-{
-}
-
-// Destructor
-PerfMonDataPopupPlugin::~PerfMonDataPopupPlugin()
-{
-    delete d;
-}
-
-// Check if client is allowed to use device dialog widget
-bool PerfMonDataPopupPlugin::accessAllowed(const QString &deviceDialogType,
-    const QVariantMap &parameters, const QVariantMap &securityInfo) const
-{
-    Q_UNUSED(deviceDialogType)
-    Q_UNUSED(parameters)
-    Q_UNUSED(securityInfo)
-
-    // This plugin doesn't perform operations that may compromise security. All clients
-    // are allowed to use.
-    return true;
-}
-
-// Create device dialog widget
-HbDeviceDialogInterface *PerfMonDataPopupPlugin::createDeviceDialog(
-    const QString &deviceDialogType, const QVariantMap &parameters)
-{
-    Q_UNUSED(deviceDialogType)
-    d->mError = NoError;
-
-    HbDeviceDialogInterface *ret(0);
-    QVariantMap params = parameters;
-
-    PerfMonDataPopupDialog *deviceDialog =
-        new PerfMonDataPopupDialog(params);
-    d->mError = deviceDialog->deviceDialogError();
-    if (d->mError != NoError) {
-        delete deviceDialog;
-        deviceDialog = 0;
-    }
-    ret = deviceDialog;
-
-    return ret;
-}
-
-// Return device dialog flags
-bool PerfMonDataPopupPlugin::deviceDialogInfo(const QString &deviceDialogType,
-        const QVariantMap &parameters, DeviceDialogInfo *info) const
-{
-    Q_UNUSED(deviceDialogType);
-    Q_UNUSED(parameters);
-
-    info->group = DeviceNotificationDialogGroup;
-    info->flags = NoDeviceDialogFlags;
-    info->priority = DefaultPriority;
-
-    return true;
-}
-
-// Return device dialog types this plugin implements
-QStringList PerfMonDataPopupPlugin::deviceDialogTypes() const
-{
-    QStringList types;
-    const int numTypes = sizeof(dialogInfos) / sizeof(dialogInfos[0]);
-    for(int i = 0; i < numTypes; i++) {
-        types.append(dialogInfos[i].mTypeString);
-    }
-    return types;
-}
-
-// Return plugin flags
-HbDeviceDialogPlugin::PluginFlags PerfMonDataPopupPlugin::pluginFlags() const
-{
-    return NoPluginFlags;
-}
-
-// Return last error
-int PerfMonDataPopupPlugin::error() const
-{
-    return d->mError;
-}
--- a/perfmon/ui/hb/datapopup/src/perfmondatapopupwidget.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2010 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 <QPainter>
-
-#include "perfmondatapopupwidget_p.h"
-
-const qreal popupMargin = 5.;
-
-PerfMonDataPopupWidget::PerfMonDataPopupWidget(QGraphicsItem *parent) :
-    HbWidget(parent)
-{
-    HbFontSpec fontSpec(HbFontSpec::Secondary);
-    mFont = fontSpec.font();
-    mFont.setPixelSize(12);
-}
-
-QStringList PerfMonDataPopupWidget::lines() const
-{
-    return mLines;
-}
-
-void PerfMonDataPopupWidget::setLines(const QStringList &lines)
-{
-    mLines = lines;
-    updateGeometry();
-}
-
-QSizeF PerfMonDataPopupWidget::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
-{
-    if (which == Qt::PreferredSize)
-    {
-        QFontMetricsF metrics(mFont);
-
-        qreal width = 0;
-        foreach (const QString &line, mLines) {
-            width = qMax(width, metrics.width(line));
-        }
-        qreal height = metrics.height() * mLines.length();
-
-        return QSizeF(width + 2 * popupMargin, height + 2 * popupMargin);
-    }
-
-    return HbWidget::sizeHint(which, constraint);
-}
-
-void PerfMonDataPopupWidget::paint(QPainter *painter,
-    const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(widget);
-    Q_UNUSED(option);
-
-    QFontMetricsF metrics(mFont);
-    qreal lineHeight = metrics.height();
-    qreal verticalPos = lineHeight + popupMargin;
-
-    // draw background
-    painter->setBrush(Qt::white);
-    painter->drawRect(option->rect);
-
-    painter->setFont(mFont);
-
-    foreach (const QString &line, mLines) {
-        painter->drawText(QPointF(popupMargin, verticalPos), line);
-        verticalPos += lineHeight;
-    }
-
-}
--- a/perfmon/ui/hb/win/enginewrapper.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* Copyright (c) 2010 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 "enginewrapper.h"
-
-
-// ---------------------------------------------------------------------------
-
-EngineWrapper::EngineWrapper()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-EngineWrapper::~EngineWrapper()
-{
-    finalize();
-}
-
-// ---------------------------------------------------------------------------
-
-bool EngineWrapper::initialize()
-{
-
-    SampleEntry cpu;
-    cpu.mDescription = "CPU";
-    cpu.mDriveNumber = -1;
-    cpu.mGraphColor.setNamedColor("yellow");
-
-    SampleEntry ram;
-    ram.mDescription = "RAM";
-    ram.mUnitShort = "b";
-    ram.mUnitLong = "bytes";
-    ram.mDriveNumber = -1;
-    ram.mGraphColor.setNamedColor("green");
-
-    SampleEntry cdrive;
-    cdrive.mDescription = "C:";
-    cdrive.mUnitShort = "b";
-    cdrive.mUnitLong = "bytes";
-    cdrive.mDriveNumber = 0;
-    cdrive.mGraphColor.setNamedColor("cyan");
-
-    SampleEntry ddrive;
-    ddrive.mDescription = "D:";
-    ddrive.mUnitShort = "b";
-    ddrive.mUnitLong = "bytes";
-    ddrive.mDriveNumber = 0;
-    ddrive.mGraphColor.setNamedColor("blue");
-
-    mEntries << cpu << ram << cdrive << ddrive;
-
-    connect(&mTimer, SIGNAL(timeout()), this, SLOT(update()));
-    mStartTime = QTime::currentTime();
-    mTimer.start(600);
-
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-void EngineWrapper::finalize()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-bool EngineWrapper::updateSettings()
-{
-    emit settingsUpdated();
-    return true;
-}
-
-void EngineWrapper::update()
-{
-    // do some updates :)
-    for (int i=0; i<mEntries.length(); i++)
-    {
-        SampleEntry & entry = mEntries[i];
-        if (entry.mSampleData.length() > 0)
-        {
-            SampleData data = entry.mSampleData.at(0);
-            data.mFree += 10000 * (qrand() % 1000 - 500);
-            data.mTimeFromStart = mStartTime.msecsTo(QTime::currentTime()) * 1000;
-            entry.mSampleData.prepend(data);
-        }
-        else
-        {
-            SampleData data = {100000000L, 200000000L, mStartTime.msecsTo(QTime::currentTime()) * 1000};
-            entry.mSampleData.prepend(data);
-        }
-
-        if (entry.mSampleData.length() > 64)
-        {
-            entry.mSampleData.removeLast();
-        }
-    }
-
-    emit samplesUpdated();
-}
--- a/perfmon/ui/hb/win/enginewrapper.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
-
-#ifndef ENGINEWRAPPER_H
-#define ENGINEWRAPPER_H
-
-#include <QObject>
-#include <QColor>
-#include <QList>
-#include <QTime>
-#include <QTimer>
-
-enum SettingThreadPriorityTypes
-{
-    EThreadPriorityTypeMuchLess = 0,
-    EThreadPriorityTypeLess,
-    EThreadPriorityTypeNormal,
-    EThreadPriorityTypeMore,
-    EThreadPriorityTypeMuchMore,
-    EThreadPriorityTypeRealTime,
-    EThreadPriorityTypeAbsoluteVeryLow,
-    EThreadPriorityTypeAbsoluteLow,
-    EThreadPriorityTypeAbsoluteBackground,
-    EThreadPriorityTypeAbsoluteForeground,
-    EThreadPriorityTypeAbsoluteHigh
-};
-
-enum SettingCPUModes
-{
-    ECPUModeNotSet = -1,
-    ECPUModeCPUTime,
-    ECPUModeNOPs
-};
-
-enum SettingDataPopupVisbilities
-{
-    EDataPopupVisbilityAlwaysOn = 0,
-    EDataPopupVisbilityBackgroundOnly,
-    EDataPopupVisbilityAlwaysAlwaysOff
-};
-
-enum SettingDataPopupLocations
-{
-    EDataPopupLocationTopRight = 0,
-    EDataPopupLocationBottomMiddle
-};
-
-enum SettingSources
-{
-    ESourceCPU = 0,
-    ESourceRAM,
-    ESourceC,
-    ESourceD,
-    ESourceE,
-    ESourceF,
-    ESourceG,
-    ESourceH,
-    ESourceI,
-    ESourcesLength // this should be always the last!
-};
-
-enum SettingLoggingMode
-{
-    ELoggingModeRDebug = 0,
-    ELoggingModeLogFile,
-    ELoggingModeRDebugLogFile
-};
-
-
-struct SampleData
-{
-    qint64 mFree;
-    qint64 mSize;
-    qint64 mTimeFromStart;
-};
-
-class SampleEntry
-{
-public:
-    QString description() const { return mDescription; }
-    QString unitShort() const { return mUnitShort; }
-    QString unitLong() const { return mUnitLong; }
-    int driveNumber() const { return mDriveNumber; }
-    QColor graphColor() const { return mGraphColor; }
-
-    int sampleCount() const { return mSampleData.length(); }
-    const SampleData &sample(int index) const { return mSampleData[index]; }
-private:
-    QString mDescription;
-    QString mUnitShort;
-    QString mUnitLong;
-    int mDriveNumber;
-    QColor mGraphColor;
-
-    QList<SampleData> mSampleData;
-
-friend class EngineWrapper;
-};
-
-class PerfMonSources
-{
-public:
-    int count() const { return 9; }
-    int isEnabled (int index) const { return mSources[index]; }
-    void setEnabled(int index, bool enabled) { mSources[index] = enabled; }
-    QList<int> enabledIndexes() const
-    {
-        QList<int> indexes;
-        for(int i=0; i<count(); i++) {
-            if (isEnabled(i))
-                indexes.append(i);
-        }
-        return indexes;
-    }
-    void setEnabledIndexes(const QList<int> &indexes)
-    {
-        for(int i=0; i<count(); i++) {
-            setEnabled(i, indexes.contains(i));
-        }
-    }
-
-PerfMonSources() {
-    memset(mSources, 0, sizeof mSources);
-    mSources[0] = mSources[1] = mSources[2] = true;
-}
-
-private:
-    bool mSources[9];
-};
-
-class PerfMonSettings
-{
-public:
-    int heartBeat() const { return mHeartBeat; }
-    int maxSamples() const { return mMaxSamples; }
-    int priority() const { return mPriority; }
-    int cpuMode() const { return mCPUMode; }
-    bool keepBacklightOn() const { return mKeepBacklightOn; }
-
-    int dataPopupVisibility() const { return mDataPopupVisibility; }
-    int dataPopupLocation() const { return mDataPopupLocation; }
-    PerfMonSources &dataPopupSources() { return mDataPopupSources; }
-    const PerfMonSources &dataPopupSources() const { return mDataPopupSources; }
-
-    int graphVerticalBarPeriod() const { return mGraphsVerticalBarPeriod; }
-    PerfMonSources &graphSources() { return mGraphSources; }
-    const PerfMonSources &graphSources() const { return mGraphSources; }
-
-    int loggingMode() const { return mLoggingMode; }
-    QString loggingFilePath() const { return mLoggingFilePath; }
-    PerfMonSources &loggingSources() { return mLogSources; }
-    const PerfMonSources &loggingSources() const { return mLogSources; }
-
-    bool loggingEnabled() { return mLoggingEnabled; }
-
-
-    void setHeartBeat(int heartBeat) { mHeartBeat = heartBeat; }
-    void setMaxSamples(int maxSamples) { mMaxSamples = maxSamples; }
-    void setPriority(int priority) { mPriority = priority; }
-    void setCpuMode(int cpuMode) { mCPUMode = cpuMode; }
-    void setKeepBacklightOn(bool backlightOn) { mKeepBacklightOn = backlightOn; }
-
-    void setDataPopupVisibility(int visibility) { mDataPopupVisibility = visibility; }
-    void setDataPopupLocation(int location) { mDataPopupLocation = location; }
-
-    void setGraphVerticalBarPeriod(int period) { mGraphsVerticalBarPeriod = period; }
-
-    void setLoggingMode(int mode) { mLoggingMode = mode; }
-    void setLoggingFilePath(const QString& filePath) { mLoggingFilePath = filePath; }
-
-    void setLoggingEnabled(bool enabled) { mLoggingEnabled = enabled; }
-
-private:
-    friend class EngineWrapper;
-
-    PerfMonSettings() : mHeartBeat(600), mMaxSamples(64), mPriority(2), mCPUMode(1),
-        mKeepBacklightOn(true), mDataPopupVisibility(0), mDataPopupLocation(0),
-        mGraphsVerticalBarPeriod(5), mLoggingMode(1), mLoggingFilePath("C:\\data\\perfmon.log"),
-        mLoggingEnabled(true) {}
-
-
-private:
-    int mHeartBeat;
-    int mMaxSamples;
-    int mPriority;
-    int mCPUMode;
-    bool mKeepBacklightOn;
-
-    int mDataPopupVisibility;
-    int mDataPopupLocation;
-    PerfMonSources mDataPopupSources;
-
-    int mGraphsVerticalBarPeriod;
-    PerfMonSources mGraphSources;
-
-    int mLoggingMode;
-    QString mLoggingFilePath;
-    PerfMonSources mLogSources;
-
-    bool mLoggingEnabled;
-};
-
-/**
- * Mock engine to simulate perfmon engine for non-symbian development.
- */
-class EngineWrapper : public QObject
- {
-    Q_OBJECT
-
-public:
-
-    /**
-     * Constructor
-     */
-    EngineWrapper();
-
-    /**
-     * Destructor
-     */
-    ~EngineWrapper();
-
-public:
-    const QList<SampleEntry>& sampleEntries() const { return mEntries; }
-
-    PerfMonSettings &settings() { return mSettings; }
-    const PerfMonSettings &settings() const { return mSettings; }
-
-    void setLoggingEnabled(bool enabled) { mSettings.setLoggingEnabled(enabled); }
-
-public slots:
-
-    bool updateSettings();
-    bool initialize();
-    void finalize();
-
-signals:
-
-    void samplesUpdated();
-    void settingsUpdated();
-
-private slots:
-
-    void update();
-
-private:
-
-    QList<SampleEntry> mEntries;
-
-    QTimer mTimer;
-
-    QTime mStartTime;
-
-    PerfMonSettings mSettings;
-};
-
-#endif //ENGINEWRAPPER_H
--- a/perfmon/ui/hb/win/win.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2010 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:
-#
-#
-
-win32 {
-    TEMPLATE = subdirs
-
-    SUBDIRS = ../app ../datapopup
-
-    system($$QMAKE_COPY enginewrapper.cpp ..\app\src\enginewrapper.cpp)
-    system($$QMAKE_COPY enginewrapper.h ..\app\inc\enginewrapper.h)
-} else {
-    error("Only Windows supported")
-}
--- a/piprofilerui/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2007 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 <platform_paths.hrh>
-
-#include "bld_generic.inf"
-#include "../ui/avkon/group/bld.inf"
-
-
-
--- a/piprofilerui/group/bld_generic.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-PRJ_MMPFILES
-PRJ_EXTENSIONS
-
--- a/piprofilerui/group/group.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-BLD_INF_RULES.prj_platforms += "$${LITERAL_HASH}include  \"bld_generic.inf\""
-
--- a/piprofilerui/piprofilerui.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-TEMPLATE = subdirs
-
-DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT QT_NO_DEBUG
-
-SUBDIRS = group \
-          ui/hb
--- a/piprofilerui/sis/PIProfiler_S60-30.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_S60-31.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_S60-32.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_S60-50.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_Symbian3.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_Symbian4.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"PIProfilerUI"},(0x2001E5AE),2,2,01,TYPE=SA, RU
-
-; Supports S60 v 3.0 and 5.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-"\epoc32\RELEASE\armv5\urel\PIProfilerUI.exe"-"!:\sys\bin\PIProfilerUI.exe"
-"\epoc32\data\z\Resource\apps\piprofilerui_aif.mif"-"!:\Resource\Apps\piprofilerui_aif.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui_ExtraIcons.mif"-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-"\epoc32\data\z\Resource\apps\piprofilerui.rsc"-"!:\Resource\Apps\piprofilerui.rsc"
-"\epoc32\data\z\PRIVATE\10003A3F\APPS\piprofilerui_reg.rsc"-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-"..\ui\avkon\group\backup_registration.xml"-"!:\private\2001E5AE\backup_registration.xml"
-
--- a/piprofilerui/sis/PIProfiler_stub.pkg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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: 
-;
-&EN
-
-; Standard SIS file header
-#{"ProfilerGUI"},(0x2001E5AE),1,0,0
-
-; Non-localised vendor name
-:"Nokia Corporation"
-
-; Localised vendor names
-%{"Nokia Corporation"}
-
-; normal stuff:
-""-"!:\sys\bin\PIProfilerUI.exe"
-""-"!:\Resource\Apps\piprofilerui_aif.mif"
-""-"!:\Resource\Apps\piprofilerui_ExtraIcons.mif"
-""-"!:\Resource\Apps\piprofilerui.rsc"
-""-"!:\private\10003a3f\import\apps\piprofilerui_reg.rsc"
-""-"!:\private\2001E5AE\backup_registration.xml"
--- a/piprofilerui/ui/avkon/data/piprofilerui.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,962 +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:   
-*
-*/
-
-
-
-
-NAME PIPR
-
-#include <eikon.rh>
-#include <eikon.rsg>
-#include <avkon.rh>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <CommonDialogs.hrh>
-#include <CommonDialogs.rh>
-#include <pathconfiguration.hrh>
-
-#include "profiler_gui.hrh"
-#include "profiler_gui_std.h"
-#include <data_caging_paths_strings.hrh>
-#include <appinfo.rh>
-
-
-// ---------------------------------------------------------
-//   
-//    Define the resource file signature 
-//    This resource should be empty.
-//
-// ---------------------------------------------------------
-//
-RESOURCE RSS_SIGNATURE { }
-
-// ---------------------------------------------------------
-//   
-//    Default Document Name
-//
-// ---------------------------------------------------------
-//
-RESOURCE TBUF r_default_document_name { buf=""; }
-
-// ---------------------------------------------------------
-//   
-//    Define default menu and CBA key.
-//
-// ---------------------------------------------------------
-//
-RESOURCE EIK_APP_INFO { }
-	
-//----------------------------------------------------
-//   
-//    r_profiler_gui_hotkeys
-//
-//----------------------------------------------------
-//
-RESOURCE HOTKEYS r_profiler_gui_hotkeys
-    {
-    control=
-        {
-        HOTKEY { command=EAknCmdExit; key='e'; }
-        };
-    }
-
-
-//----------------------------------------------------
-//    r_profiler_gui_view_main
-//----------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_profiler_gui_view_main
-    {
-    hotkeys=r_profiler_gui_hotkeys;
-    menubar=r_profiler_gui_menubar_view_main;  
-    cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;    
-    }
-
-//----------------------------------------------------
-//    r_profiler_gui_menubar_view_main
-//----------------------------------------------------
-//
-RESOURCE MENU_BAR r_profiler_gui_menubar_view_main
-    {
-    titles=
-        {
-        MENU_TITLE { menu_pane=r_profiler_gui_app_menu; txt="App"; },
-        MENU_TITLE { menu_pane=r_profiler_gui_view_main_menu; txt="Main"; }
-        };
-    }
-
-//----------------------------------------------------
-//    r_profiler_gui_view_main_menu
-//----------------------------------------------------
-//
-
-RESOURCE MENU_PANE r_profiler_gui_view_main_menu
-    {
-    items=
-        {
-        };
-    }
-
-           
-        
-//----------------------------------------------------
-//    r_profiler_gui_app_menu
-//----------------------------------------------------
-//
-RESOURCE MENU_PANE r_profiler_gui_app_menu
-    {
-    items=
-        {
-        MENU_ITEM { command=EProfilerGuiCmdStartAll;cascade = r_profiler_start_submenu; txt="Start"; },
-        MENU_ITEM { command=EProfilerGuiCmdStopAll; txt="Stop profiling"; },
-        MENU_ITEM { command=EProfilerGuiCmdSamplerControl; txt="Sampler control"; cascade=r_profiler_sampler_control_menu; }, 
-        MENU_ITEM { command=EProfilerGuiCmdSettings; txt="Settings"; },
-        MENU_ITEM { command=EProfilerGuiCmdAbout; txt="About"; },
-        MENU_ITEM { command=EAknCmdExit; txt="Exit"; }
-        };
-    }
-
-//----------------------------------------------------
-//    r_profiler_start_submenu
-//----------------------------------------------------
-//
-RESOURCE MENU_PANE r_profiler_start_submenu
-    {
-    items = 
-        {
-        MENU_ITEM 
-            {
-            command = EProfilerGuiCmdStartAll;
-            txt = "Profiling";
-            }
-        };
-    }
-
-//----------------------------------------------------
-//    r_profiler_sampler_control_menu
-//----------------------------------------------------
-//
-RESOURCE MENU_PANE r_profiler_sampler_control_menu
-    {
-    items=
-        {
-        MENU_ITEM { command=EProfilerGuiCmdSamplerEnable; txt="Enable"; },
-        MENU_ITEM { command=EProfilerGuiCmdSamplerDisable; txt="Disable"; },
-        MENU_ITEM { command=EProfilerGuiCmdSamplerSettings; txt="Sampler settings"; },
-        MENU_ITEM { command=EProfilerGuiCmdSamplerInfo; txt="Sampler info"; }
-        };
-    }
-
-
-//----------------------------------------------------
-//    r_profiler_gui_settings_dialog
-//    Dialog for setting list
-//----------------------------------------------------
-//
-RESOURCE DIALOG r_profiler_gui_settings_dialog
-    {
-    flags =
-        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
-        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
-        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
-    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtSettingListBox;
-            id = EProfilerGuiSettingItemList;
-            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
-            control = LISTBOX
-                {
-                flags = EAknListBoxSelectionList;
-                };
-            }
-        };
-    }
-
-// generic resources
-RESOURCE POPUP_SETTING_LIST r_popup_setting_list_editor
-	{
-	}
-RESOURCE AVKON_SETTING_PAGE r_binary_setting_page
-    {   
-    number = EAknSettingPageNoOrdinalDisplayed;
-    type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-    }
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_yesno_binaryselection_texts
-	{
-	setting_texts_resource = r_yesno_binaryselection_text_array;
-	}
-RESOURCE ARRAY r_yesno_binaryselection_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=0; text = "No"; },
-		AVKON_ENUMERATED_TEXT { value=1; text = "Yes"; }
-		};
-	}
-
-
-//
-// resources for plugin name mode selection
-//
-RESOURCE TBUF r_plugin_name_mode_setting_title
-    {
-    buf = "Sampler name length";
-    }
-RESOURCE AVKON_SETTING_PAGE r_plugin_name_mode_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_plugin_name_mode_setting_texts
-	{
-	setting_texts_resource = r_plugin_name_mode_text_array;
-	}
-RESOURCE ARRAY r_plugin_name_mode_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=ESamplerNameShort; text = "Short"; },
-		AVKON_ENUMERATED_TEXT { value=ESamplerNameMedium; text = "Medium"; },
-		AVKON_ENUMERATED_TEXT { value=ESamplerNameLong; text = "Long"; }
-		};
-	}
-
-
-//
-// resources for trace output selection
-//
-RESOURCE TBUF r_trace_output_setting_title
-    {
-    buf = "Output to";
-    }
-RESOURCE AVKON_SETTING_PAGE r_trace_output_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_trace_output_setting_texts
-	{
-	setting_texts_resource = r_trace_output_text_array;
-	}
-RESOURCE ARRAY r_trace_output_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=EOutputToDebugPort; text = "Debug output"; },
-		AVKON_ENUMERATED_TEXT { value=EOutputToFileSystem; text = "File system"; }
-		};
-	}
-
-
-//
-// resources for save_file_prefix selection
-//
-RESOURCE TBUF r_save_file_prefix_setting_title
-    {
-    buf = "File prefix";
-    }
-RESOURCE AVKON_SETTING_PAGE r_save_file_prefix_setting_page
-	{
-	type = EEikCtEdwin;
-	editor_resource_id = r_save_file_prefix_text_editor;
-	}
-
-RESOURCE EDWIN r_save_file_prefix_text_editor
-	{
-	lines = 0;  // expanding to multiple rows
-	maxlength = 63;
-	flags = EEikEdwinNoLineOrParaBreaks;
-	}
-
-//
-// resources for save file drive selection
-//
-RESOURCE TBUF r_save_file_drive_setting_title
-    {
-    buf = "Save file in";
-    }
-RESOURCE AVKON_SETTING_PAGE r_save_file_drive_setting_page
-	{
-	type = EEikCtEdwin;
-	editor_resource_id = r_save_file_drive_text_editor;
-	}
-
-RESOURCE EDWIN r_save_file_drive_text_editor
-	{
-	lines = 0;  // expanding to multiple rows
-	maxlength = 63;	
-	flags = EEikEdwinNoLineOrParaBreaks;
-	}
-
-//
-// resources for trace mode selection
-//
-RESOURCE TBUF r_trace_mode_setting_title
-    {
-    buf = "Trace mode";
-    }
-RESOURCE AVKON_SETTING_PAGE r_trace_mode_setting_page
-	{
-    number = EAknSettingPageNoOrdinalDisplayed; 
-	type = EAknCtPopupSettingList;
-	editor_resource_id = r_popup_setting_list_editor;
-	}
-RESOURCE AVKON_POPUP_SETTING_TEXTS r_trace_mode_setting_texts
-	{
-	setting_texts_resource = r_trace_mode_text_array;
-	}
-RESOURCE ARRAY r_trace_mode_text_array
-	{
-	items =
-		{
-		AVKON_ENUMERATED_TEXT { value=ETraceModeStream; text = "Stream"; },
-		AVKON_ENUMERATED_TEXT { value=ETraceModeBuffer; text = "Memory buffer"; }
-		};
-	}
-
-//
-// resources for timed_sampling_period selection
-//
-RESOURCE TBUF r_timed_sampling_period_setting_title
-    {
-    buf = "Profiling period (sec.)";
-    }
-RESOURCE AVKON_SETTING_PAGE r_timed_sampling_period_setting_page
-    {
-    type = EAknCtIntegerEdwin;
-    editor_resource_id = r_timed_sampling_period_integer_editor;
-    }
-
-RESOURCE AVKON_INTEGER_EDWIN r_timed_sampling_period_integer_editor
-    {
-    maxlength = 6;
-    min = 1;
-    max = 999999;
-    }
-
-
-//----------------------------------------------------
-//    r_profiler_gui_settings_menubar
-//----------------------------------------------------
-//
-
-RESOURCE MENU_BAR r_profiler_gui_settings_menubar
-    {
-    titles =
-        {
-        MENU_TITLE
-            {
-            menu_pane = r_profiler_gui_settings_menupane;
-            txt = " ";   // dummy
-            }
-        };
-    }
-
-RESOURCE MENU_PANE r_profiler_gui_settings_menupane
-    {
-    items =
-        {
-        MENU_ITEM
-            {
-            command = EProfilerGuiCmdSettingsChange;
-            txt = "Change";
-            },
-        MENU_ITEM
-            {
-            command = EProfilerGuiCmdSettingsExit;
-            txt = "Exit";
-            }
-        };
-    }
-
-//----------------------------------------------------
-//    r_profiler_gui_settings_dialog
-//    Dialog for setting list
-//----------------------------------------------------
-//
-RESOURCE DIALOG r_profiler_sampler_settings_dialog
-    {
-    flags =
-        EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
-        EEikDialogFlagButtonsRight | EEikDialogFlagCbaButtons |
-        EEikDialogFlagWait | EEikDialogFlagNoTitleBar;
-    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtSettingListBox;
-            id = EProfilerSamplerSettingItemList;
-            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
-            control = LISTBOX
-                {
-                flags = EAknListBoxSelectionList;
-                };
-            }
-        };
-    }
-
-//----------------------------------------------------
-//    r_profiler_sampler_settings_menubar
-//----------------------------------------------------
-//
-
-RESOURCE MENU_BAR r_profiler_sampler_settings_menubar
-    {
-    titles =
-        {
-        MENU_TITLE
-            {
-            menu_pane = r_profiler_sampler_settings_menupane;
-            txt = "Sampler settings";
-            }
-        };
-    }
-
-RESOURCE MENU_PANE r_profiler_sampler_settings_menupane
-    {
-    items =
-        {
-        MENU_ITEM
-            {
-            command = EProfilerGuiCmdSettingsChange;
-            txt = "Change";
-            },
-        MENU_ITEM
-            {
-            command = EProfilerGuiCmdSettingsExit;
-            txt = "Exit";
-            }
-        };
-    }
-
-  
-// ---------------------------------------------------------
-//   
-//   r_profiler_gui_about_dialog
-//   About dialog - show version and copyright info etc.
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_profiler_gui_about_dialog
-    {
-    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtPopupHeadingPane;
-            id = EAknMessageQueryHeaderId;
-            control = AVKON_HEADING
-                {
-                label = "About Profiler";
-                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
-                };
-            },
-        DLG_LINE
-            {
-            type = EAknCtMessageQuery;
-            id = EAknMessageQueryContentId;
-            control = AVKON_MESSAGE_QUERY
-                {
-               	message = "Version 2.2.1 - 10th August 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.";
-                };
-            }
-        };
-    }
-
-// ---------------------------------------------------------
-//   r_sampler_rate_setting_page
-// ---------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_sampler_rate_setting_page
-    {
-    type = EAknCtIntegerEdwin;
-    editor_resource_id = r_sampler_rate_integer_editor;
-    }
-RESOURCE AVKON_INTEGER_EDWIN r_sampler_rate_integer_editor
-    {
-    maxlength = 6;
-    min = 250;
-    max = 999999;
-    }    
-
-// ---------------------------------------------------------
-//   r_cpu_sampler_rate_setting_page
-// ---------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_cpu_sampler_rate_setting_page
-    {
-    type = EAknCtIntegerEdwin;
-    editor_resource_id = r_cpu_sampler_rate_integer_editor;
-    }
-RESOURCE AVKON_INTEGER_EDWIN r_cpu_sampler_rate_integer_editor
-    {
-    maxlength = 5;
-    min = 1;
-    max = 10000;
-    } 
-
-// ---------------------------------------------------------
-//   
-//   r_generic_sampler_dlg_line_sample_rate
-//   Empty about dialog - show sampler plugin info in this
-//
-// ---------------------------------------------------------
-//
-RESOURCE DLG_LINE r_generic_sampler_dlg_line_sample_rate
-    {
-    type = EEikCtNumberEditor;
-    prompt = "Sample rate (ms)";
-    id = EProfilerGuiGenericSamplerQuerySampleRate;
-    itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
-    control = NUMBER_EDITOR
-        {
-        min = 1000;    
-        max = 10000;    
-        };
-    }
-
-// ---------------------------------------------------------
-//   
-//   r_profiler_gui_empty_about_dialog
-//   Empty about dialog - show sampler plugin info in this
-//
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_profiler_gui_empty_about_dialog
-    {
-    flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtPopupHeadingPane;
-            id = EAknMessageQueryHeaderId;
-            control = AVKON_HEADING
-                {
-                label = "About";
-                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
-                };
-            },
-        DLG_LINE
-            {
-            type = EAknCtMessageQuery;
-            id = EAknMessageQueryContentId;
-            control = AVKON_MESSAGE_QUERY
-                {
-                message = "";
-                };
-            }
-        };
-    }
-
-
-RESOURCE TBUF r_dummy_setting_title
-    {
-    buf = "";
-    }
-
-RESOURCE TBUF r_sample_rate_setting_title
-    {
-    buf = "Sample rate (ms)";
-    }
-
-RESOURCE TBUF r_item1_setting_title
-    {
-    buf = "Item1";
-    }
-
-RESOURCE TBUF r_item2_setting_title
-    {
-    buf = "Item2";
-    }
-
-RESOURCE TBUF r_item3_setting_title
-    {
-    buf = "Item3";
-    }
-
-RESOURCE TBUF r_item4_setting_title
-    {
-    buf = "Item4";
-    }
-
-RESOURCE TBUF r_item5_setting_title
-    {
-    buf = "Item5";
-    }
-
-RESOURCE TBUF r_item6_setting_title
-    {
-    buf = "Item6";
-    }
-
-RESOURCE AVKON_SETTING_PAGE r_numeric_setting_page
-	{
-	type = EAknCtIntegerEdwin;
-	editor_resource_id = r_numeric_integer_editor;
-	}
-RESOURCE AVKON_INTEGER_EDWIN r_numeric_integer_editor
-	{
-	maxlength = 5;
-	min = 0;
-	max = 10000;
-	}    
-
-//
-// resources for text selection
-//
-RESOURCE AVKON_SETTING_PAGE r_generic_text_setting_page
-	{
-	type = EEikCtEdwin;
-	editor_resource_id = r_generic_text_editor;
-	}
-
-RESOURCE EDWIN r_generic_text_editor
-	{
-	lines = 0;  // expanding to multiple rows
-	maxlength = 63;	
-	flags = EEikEdwinNoLineOrParaBreaks;
-	}
-
-
-// ---------------------------------------------------------
-//   r_general_confirmation_query
-// ---------------------------------------------------------
-//
-
-RESOURCE DIALOG r_general_confirmation_query
-	{
-	flags = EGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_YES_NO;
-	items =
-		{
-		DLG_LINE
-			{
-			type = EAknCtQuery;
-			id = EGeneralQuery;
-			control = AVKON_CONFIRMATION_QUERY
-				{
-				layout = EConfirmationQueryLayout;
-				};
-			}
-		};
-	}
-
-// ---------------------------------------------------------
-//   r_general_text_query
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_general_text_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_DATA_QUERY
-                {
-                layout = EDataLayout;
-                control = EDWIN
-                    {
-                    width = 256;
-                    lines = 3;
-                    maxlength = 256;
-                    };
-                };
-            }
-        };
-    }
-
-// ---------------------------------------------------------
-//   r_general_text_query
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_general_numeric_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control= AVKON_DATA_QUERY
-                {
-                layout = ENumberLayout;
-                control = AVKON_INTEGER_EDWIN
-                    {
-                    min = -999999;
-                    max = 999999;
-                    };
-                };
-            }
-        };
-    }
-
-
-// ---------------------------------------------------------
-//   r_item_action_query
-// ---------------------------------------------------------
-//
-RESOURCE DIALOG r_item_action_query_enabled
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control= AVKON_LIST_QUERY_CONTROL
-                {
-				listtype = EAknCtSinglePopupMenuListBox;
-				listbox = AVKON_LIST_QUERY_LIST
-					{
-					array_id = r_item_action_query_array_enabled;
-					};
-				heading = "Sampler controls";
-			    };
-            }
-        };
-    }
-
-RESOURCE DIALOG r_item_action_query_disabled
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control= AVKON_LIST_QUERY_CONTROL
-                {
-				listtype = EAknCtSinglePopupMenuListBox;
-				listbox = AVKON_LIST_QUERY_LIST
-					{
-					array_id = r_item_action_query_array_disabled;
-					};
-				heading = "Sampler controls";
-			    };
-            }
-        };
-    }
-
-RESOURCE DIALOG r_item_action_query_hidden_settings_enabled
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control= AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtSinglePopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    array_id = r_item_action_query_array_hidden_settings_enabled;
-                    };
-                heading = "Sampler controls";
-                };
-            }
-        };
-    }
-
-RESOURCE DIALOG r_item_action_query_hidden_settings_disabled
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control= AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtSinglePopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    array_id = r_item_action_query_array_hidden_settings_disabled;
-                    };
-                heading = "Sampler controls";
-                };
-            }
-        };
-    }
-
-RESOURCE DIALOG r_item_action_query_hidden_start_stop
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control= AVKON_LIST_QUERY_CONTROL
-                {
-				listtype = EAknCtSinglePopupMenuListBox;
-				listbox = AVKON_LIST_QUERY_LIST
-					{
-					array_id = r_item_action_query_array_hidden_start_stop;
-					};
-				heading = "Sampler controls";
-			    };
-            }
-        };
-    }
-
-RESOURCE ARRAY r_item_action_query_array_disabled
-	{
-	items =
-		{
-		LBUF {txt = "Enable"; },
-		LBUF {txt = "Sampler settings"; },
-		LBUF {txt = "Sampler info"; }
-		};
-	} 	
-
-RESOURCE ARRAY r_item_action_query_array_enabled
-	{
-	items =
-		{
-		LBUF {txt = "Disable"; },
-		LBUF {txt = "Sampler settings"; },
-		LBUF {txt = "Sampler info"; }
-		};
-	} 
-
-RESOURCE ARRAY r_item_action_query_array_hidden_settings_disabled
-    {
-    items =
-        {
-        LBUF {txt = "Enable"; },
-        LBUF {txt = "Sampler info"; }
-        };
-    } 
-
-RESOURCE ARRAY r_item_action_query_array_hidden_settings_enabled
-    {
-    items =
-        {
-        LBUF {txt = "Disable"; },
-        LBUF {txt = "Sampler info"; }
-        };
-    } 
-
-RESOURCE ARRAY r_item_action_query_array_hidden_start_stop
-	{
-	items =
-		{
-		LBUF {txt = "Sampler settings"; },
-		LBUF {txt = "Sampler info"; }
-		};
-	} 
-
-RESOURCE STATUS_PANE_APP_MODEL r_profiler_gui_status_pane
-	{
-	panes = 
-		{
-		SPANE_PANE
-			{
-			id = EEikStatusPaneUidTitle;
-			type = EAknCtTitlePane;
-			resource = r_profiler_gui_title_resource;
-			},
-		SPANE_PANE
-			{
-			id = EEikStatusPaneUidNavi;
-			type = EAknCtNaviPane;
-			resource = r_profiler_gui_navi_text_idle;
-			}
-		};
-	}
-
-RESOURCE TITLE_PANE r_profiler_gui_title_resource
-	{
-	txt = "PI Profiler";
-	}
-
-RESOURCE TBUF r_profiler_gui_navi_text_idle
-	{
-	buf = "Idle";
-	}
-
-RESOURCE TBUF r_profiler_gui_navi_text_initializing
-	{
-	buf = "Initializing...";
-	}
-
-RESOURCE TBUF r_profiler_gui_navi_text_running
-	{
-	buf = "Profiling...";
-	}
-
-RESOURCE TBUF r_profiler_gui_navi_text_stopping
-	{
-	buf = "Stopping...";
-	}
-
-RESOURCE DIALOG r_profiler_gui_conf_query
-	{
-	flags = EAknGeneralQueryFlags;
-	buttons = R_AVKON_SOFTKEYS_YES_NO;
-	items = 
-		{
-		DLG_LINE
-			{
-			type = EAknCtQuery;
-			id = EProfilerGuiViewConfQuery;
-			control = AVKON_CONFIRMATION_QUERY
-				{
-				layout = EConfirmationQueryLayout;
-				label = "Leave profiling on?";
-				};
-			}
-		};
-	}
-
-//   
-//    RESOURCE LOCALISABLE_APP_INFO
-//
-// ---------------------------------------------------------
-//
-RESOURCE LOCALISABLE_APP_INFO r_profiler_gui_localisable_app_info
-    {
-    short_caption = "PI Profiler";
-    caption_and_icon = 
-    CAPTION_AND_ICON_INFO
-        {
-        caption = "PI Profiler";
-
-        number_of_icons = 1;
-
-        // Note for ROM-based apps it is recommended to add the drive letter
-        icon_file = APP_BITMAP_DIR"\\piprofilerui_aif.mif";
-        };
-    }
--- a/piprofilerui/ui/avkon/data/piprofilerui_reg.rss	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +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 <piprofilerui.rsg>
-#include <appinfo.rh>
-#include <data_caging_paths_strings.hrh>
-
-
-UID2 KUidAppRegistrationResourceFile
-UID3 0x2001E5AE
-
-
-RESOURCE APP_REGISTRATION_INFO
-    {
-    app_file = "PIProfilerUI";
-    localisable_resource_file = APP_RESOURCE_DIR"\\PIProfilerUI";
-    localisable_resource_id = R_PROFILER_GUI_LOCALISABLE_APP_INFO;
-    group_name = "RnD Tools";    
-    }
--- a/piprofilerui/ui/avkon/group/backup_registration.xml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<backup_registration>
-  <passive_backup>
-    <include_directory name="\"/>
-  </passive_backup>
-  <system_backup/>
-  <restore requires_reboot = "no"/>
-</backup_registration>
--- a/piprofilerui/ui/avkon/group/bld.inf	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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 <platform_paths.hrh>
-
-
-PRJ_EXPORTS
-../group/backup_registration.xml    Z:/private/2001E5AE/backup_registration.xml
-../rom/piprofilerui_avkon.iby		CORE_IBY_EXPORT_PATH(tools,piprofilerui.iby)
-
-PRJ_MMPFILES
-#ifndef SBSV2
-  gnumakefile piprofilerui_icons_aif.mk
-  gnumakefile piprofilerui_extraicons.mk
-#endif
-
-piprofilerui.mmp
-
-
-#ifdef SBSV2
-  PRJ_EXTENSIONS
-  START EXTENSION s60/mifconv
-  OPTION TARGETFILE piprofilerui_aif.mif
-  OPTION SOURCEDIR ../../icons
-  OPTION SOURCES -c8,8 qgn_menu_piprofilerui
-  END
-
-  START EXTENSION s60/mifconv
-  OPTION TARGETFILE piprofilerui_extraicons.mif
-  OPTION HEADERFILE piprofilerui_extraicons.mbg
-  OPTION SOURCEDIR ../../icons
-  OPTION SOURCES -c8,8 qgn_prob_piprofilerui_status_disabled -c8,8 qgn_prob_piprofilerui_status_enabled
-  END
-#endif
--- a/piprofilerui/ui/avkon/group/piprofilerui.mmp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +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 <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-
-TARGET            PIProfilerUI.exe
-TARGETTYPE        exe
-EPOCSTACKSIZE     0x8000
-EPOCHEAPSIZE      0x10000 0x1000000  // Min 64Kb, Max 16Mb
-
-UID               0x100039CE 0x2001E5AE
-
-VENDORID          VID_DEFAULT
-CAPABILITY        ALL -TCB //swevent networkservices
-SMPSAFE
-
-LANG              SC
-
-START RESOURCE    ../data/piprofilerui.rss
-HEADER
-TARGETPATH        APP_RESOURCE_DIR
-END
-
-START RESOURCE    ../data/piprofilerui_reg.rss
-DEPENDS           piprofilerui.rsg
-TARGETPATH        /private/10003a3f/apps
-END
-
-APP_LAYER_SYSTEMINCLUDE
-USERINCLUDE       ../inc
-SOURCEPATH        ../src
-
-
-SOURCE            profiler_gui_app.cpp
-SOURCE            profiler_gui_document.cpp 
-SOURCE            profiler_gui_appui.cpp
-SOURCE            profiler_gui_model.cpp
-SOURCE            profiler_gui_mainview.cpp 
-SOURCE            profiler_gui_maincontainer.cpp 
-SOURCE            profiler_gui_settingsviewdlg.cpp
-SOURCE            profiler_gui_samplersettingsviewdlg.cpp
-
-
-LIBRARY           euser.lib
-LIBRARY			  eiksrv.lib
-LIBRARY           CommonEngine.lib
-LIBRARY           apparc.lib
-LIBRARY           cone.lib 
-LIBRARY           eikcore.lib
-LIBRARY           eikcoctl.lib
-LIBRARY           eikctl.lib
-LIBRARY           eikdlg.lib  
-LIBRARY           avkon.lib 
-LIBRARY           ws32.lib 
-LIBRARY           apgrfx.lib
-LIBRARY           efsrv.lib
-LIBRARY           bafl.lib
-LIBRARY           gdi.lib
-LIBRARY           aknnotify.lib
-LIBRARY           aknicon.lib
-LIBRARY           aknskins.lib
-LIBRARY           aknskinsrv.lib
-LIBRARY           egul.lib
-LIBRARY           estor.lib
-LIBRARY           flogger.lib
-LIBRARY			  charconv.lib 
-LIBRARY			  sysutil.lib 
-LIBRARY			  platformenv.lib
--- a/piprofilerui/ui/avkon/group/piprofilerui_extraicons.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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:   
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\z
-else
-ZDIR=$(EPOCROOT)epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\piprofilerui_extraicons.mif
-
-HEADERDIR=$(EPOCROOT)epoc32\include
-HEADERFILENAME=$(HEADERDIR)\piprofilerui_extraicons.mbg
-
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN :
-	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
-	@if exist $(HEADERFILENAME) erase $(HEADERFILENAME)
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-RESOURCE : $(ICONTARGETFILENAME)
-
-$(ICONTARGETFILENAME) (HEADERFILENAME) : ..\..\icons\qgn_prob_piprofilerui_status_disabled.svg ..\..\icons\qgn_prob_piprofilerui_status_enabled.svg
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
-		/c8,8 ..\..\icons\qgn_prob_piprofilerui_status_disabled.svg \
-		/c8,8 ..\..\icons\qgn_prob_piprofilerui_status_enabled.svg
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME) && \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/piprofilerui/ui/avkon/group/piprofilerui_icons_aif.mk	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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:   
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\z
-else
-ZDIR=$(EPOCROOT)epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\piprofilerui_aif.mif
-
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN :
-	@if exist $(ICONTARGETFILENAME) erase $(ICONTARGETFILENAME)
-	
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-RESOURCE : $(ICONTARGETFILENAME)
-
-$(ICONTARGETFILENAME) : ..\..\icons\qgn_menu_piprofilerui.svg
-	mifconv $(ICONTARGETFILENAME) \
-		/c8,8 ..\..\icons\qgn_menu_piprofilerui.svg
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/piprofilerui/ui/avkon/inc/profiler_gui.hrh	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +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:   
-*
-*/
-
-
-
-#ifndef PROFILERGUI_HRH
-#define PROFILERGUI_HRH
-
-enum TProfilerCmdSamplerIds
-    {
-    EProfilerGuiCmdSamplerEnable = 1,   // id cannot be 0
-    EProfilerGuiCmdSamplerDisable,
-    EProfilerGuiCmdSamplerSettings,
-    EProfilerGuiCmdSamplerInfo
-    };
-
-enum TSamplerSettingItemIds
-    {
-    EProfilerGuiGenericSamplerQuerySampleRate = 0,
-    EProfilerGuiGenericSamplerQueryItem1,
-    EProfilerGuiGenericSamplerQueryItem2,
-    EProfilerGuiGenericSamplerQueryItem3,
-    EProfilerGuiGenericSamplerQueryItem4,
-    EProfilerGuiGenericSamplerQueryItem5,
-    EProfilerGuiGenericSamplerQueryItem6
-    };
-
-enum TGeneralSettingItemIds
-    {
-    ESettingListItemPluginTraceOutput = 0,
-    ESettingListItemPluginSaveFileDrive,
-    ESettingListItemPluginTraceFilePrefix,
-    ESettingListItemPluginSamplingTime
-    };
-
-enum TProfilerGuiCommandIds
-    {
-    EProfilerGuiCmdStart = 1000,
-    EProfilerGuiCmdStop,
-    EProfilerGuiCmdStartAll,
-    EProfilerGuiCmdStartTimed,
-    EProfilerGuiCmdStopAll,
-    
-    EProfilerGuiCmdSamplerControl,
-    EProfilerGuiCmdSamplerSettingsChange,
-    EProfilerGuiCmdSamplerSettingsExit,
-    
-    EProfilerGuiCmdSettings,
-    EProfilerGuiCmdSettingsChange,
-    EProfilerGuiCmdSettingsExit,
-    EProfilerGuiCmdSettingsBack,
-
-    EProfilerGuiCmdAbout,
-
-    EProfilerGuiViewConfQuery,
-    EProfilerGuiSettingItemList,
-    EProfilerSamplerSettingItemList
-    };
-
-enum TProfilerGuiSettingSamplerNameLength
-	{
-	ESamplerNameShort,
-	ESamplerNameMedium,
-	ESamplerNameLong
-	};
-
-enum TProfilerGuiSettingTraceMode
-	{
-	ETraceModeStream,
-	ETraceModeBuffer
-	};
-
-enum TProfilerGuiSettingOutputMode
-	{
-	EOutputToDebugPort = 0,
-	EOutputToFileSystem
-	};
-
-enum TProfilerGuiSettingSaveFileDrive
-	{
-	ETraceSaveFileDriveC,
-	ETraceSaveFileDriveD,
-	ETraceSaveFileDriveE,
-	ETraceSaveFileDriveF,
-	ETraceSaveFileDriveG,
-	ETraceSaveFileDriveH,
-	ETraceSaveFileDriveI,
-	ETraceSaveFileDriveJ,
-	ETraceSaveFileDriveK,
-	ETraceSaveFileDriveL
-	};
-
-enum TItemActionMenuTypes
-    {
-    EItemActionMenuTypeEnable = 0,
-    EItemActionMenuTypeDisable,
-    EItemActionMenuTypeEditSettings,    
-    EItemActionMenuTypeInfo,    
-    EItemActionMenuTypeStart,	// for future use
-    EItemActionMenuTypeStop	    // for future use
-    };
-
-#endif      // PROFILERGUI_HRH
--- a/piprofilerui/ui/avkon/inc/profiler_gui_app.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_APP_H
-#define PROFILER_GUI_APP_H
-
-
-// INCLUDES
-#include <aknapp.h>
-
-// CONSTANTS
-// UID of the application
-const TUid KUidProfilerGui = { 0x2001E5AE };
-
-// CLASS DECLARATION
-
-/**
-* CProfilerGuiApp application class.
-* Provides factory to create concrete document object.
-* 
-*/
-class CProfilerGuiApp : public CAknApplication
-    {
-    
-    public: // Functions from base classes
-
-    private:
-
-        /**
-        * From CApaApplication, creates CProfilerGuiDocument document object.
-        * @return A pointer to the created document object.
-        */
-        CApaDocument* CreateDocumentL();
-        
-        /**
-        * From CApaApplication, returns application's UID (KUidProfilerGui).
-        * @return The value of KUidProfilerGui.
-        */
-        TUid AppDllUid() const;
-    };
-
-#endif
-
-// End of File
-
--- a/piprofilerui/ui/avkon/inc/profiler_gui_appui.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_APPUI_H
-#define PROFILER_GUI_APPUI_H
-
-// INCLUDES
-#include <eikapp.h>
-#include <eikdoc.h>
-#include <e32std.h>
-#include <coeccntx.h>
-#include <aknViewAppUi.h>
-#include <akntabgrp.h>
-#include <aknnavide.h>
-#include "profiler_gui_std.h"
-
-// profiler engine inclusions
-#include <piprofiler/ProfilerConfig.h>
-
-// FORWARD DECLARATIONS
-class CProfilerGuiModel;
-
-// CLASS DECLARATIONS
-
-class CProfilerGuiAppUi : public CAknViewAppUi
-    {
-public: // constructors and destructor
-    void ConstructL();
-    ~CProfilerGuiAppUi();
-    
-    // profiler specific 
-	void StartProfilerL();
-	void StopProfilerL();
-private: // From MEikMenuObserver
-    void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
-
-private:
-    void HandleCommandL(TInt aCommand);
-    virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
-    void HandleSystemEventL(const TWsEvent& aEvent);
-    
-    void SaveSettingsL();
-	void LoadSettingsL();
-	TInt RunConfQueryL( const TDesC* aOverrideText ); 
-private: //Data
-    CProfilerGuiModel*              iModel;
-    };
-
-#endif
-
-// End of File
--- a/piprofilerui/ui/avkon/inc/profiler_gui_attributes.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_ATTRIBUTES_H
-#define PROFILER_GUI_ATTRIBUTES_H
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-
-// CONSTANTS
-
-// FORWARD DECLARATIONS
-
-// CLASS DECLARATIONS
-       
-#endif
--- a/piprofilerui/ui/avkon/inc/profiler_gui_document.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_DOCUMENT_H
-#define PROFILER_GUI_DOCUMENT_H
-
-// INCLUDES
-#include <AknDoc.h>
-   
-// CONSTANTS
-
-// FORWARD DECLARATIONS
-class CEikAppUi;
-class CProfilerGuiModel;
-
-
-// CLASS DECLARATION
-
-/**
-*  CProfilerGuiDocument application class.
-*/
-class CProfilerGuiDocument : public CAknDocument
-    {
-    public: // Constructors and destructor
-        static CProfilerGuiDocument* NewL(CEikApplication& aApp);
-        virtual ~CProfilerGuiDocument();
-
-    public: // New functions
-
-    public:	// from CEikDocument
-
-    protected:  // New functions
-
-    protected:  // Functions from base classes
-
-    private:
-
-        /**
-        * EPOC default constructor.
-        */
-        CProfilerGuiDocument(CEikApplication& aApp);
-        void ConstructL();
-
-    private:
-
-        /**
-        * From CEikDocument, create CProfilerGuiAppUi "App UI" object.
-        */
-        CEikAppUi* CreateAppUiL();
-
-    public:
-        inline CProfilerGuiModel* Model() { return iModel; }
-
-    private:
-        CProfilerGuiModel* iModel;
-
-    };
-
-#endif
-
-// End of File
-
--- a/piprofilerui/ui/avkon/inc/profiler_gui_maincontainer.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_VALUESCONTAINER_H
-#define PROFILER_GUI_VALUESCONTAINER_H
-
-// INCLUDES
-#include <coecntrl.h>
-#include <eiklbo.h> 
-#include <aknlists.h> 
-#include <AknInfoPopupNoteController.h> 
-
-// FORWARD DECLARATIONS
-class CProfilerGuiModel;
-class CAknInfoPopupNoteController;
-
-// CLASS DECLARATIONS
-
-class CProfilerGuiMainContainer : public CCoeControl, MCoeControlObserver, MEikListBoxObserver
-    {
-public:
-    void ConstructL(const TRect& aRect);
-    ~CProfilerGuiMainContainer();
-
-private:
-    void SizeChanged();  
-    TInt CountComponentControls() const;
-    CCoeControl* ComponentControl(TInt aIndex) const;
-    void Draw(const TRect& aRect) const;
-    void HandleResourceChange(TInt aType);
-    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);  // From MEikListBoxObserver
-    void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);  // From MCoeControlObserver
-	TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
-
-public:
-    const CArrayFix<TInt>* ListBoxSelectionIndexes();
-    TInt ListBoxSelectionIndexesCount();
-    void SetDefaultTitlePaneTextL();
-    TInt CurrentListBoxItemIndex();
-    void SetListBoxTextArrayL(CDesCArray* aTextArray);
-    inline CAknSingleGraphicStyleListBox* ListBox() { return iListBox; }
-    void ShowWriterInfoPopupL(const TDesC& aNote);
-private:
-    CProfilerGuiModel*                              iModel;
-    CAknSingleGraphicStyleListBox*      			iListBox;
-    CAknInfoPopupNoteController*        			iInfoPopup;
-    };
-
-#endif
-
-// End of File
--- a/piprofilerui/ui/avkon/inc/profiler_gui_mainview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_VALUESVIEW_H
-#define PROFILER_GUI_VALUESVIEW_H
-
-// INCLUDES
-#include <aknview.h>
-
-#include "profiler_gui_std.h"
-#include "profiler_gui_model.h"
-
-
-// CONSTANTS
-// UID of view
-const TUid KMainViewUID = {1};
-
-// FORWARD DECLARATIONS
-class CProfilerGuiMainContainer;
-class CProfilerGuiModel;
-class CProfilerEngineStatusChecker;
-class CAknNavigationDecorator;
-
-
-/**
-*  CProfilerGuiMainView view class.
-* 
-*/
-class CProfilerGuiMainView : public CAknView
-    {
-    public: // Constructors and destructor
-        void ConstructL();
-        ~CProfilerGuiMainView();
-
-    public: // Functions from base classes
-        TUid Id() const;
-        void HandleCommandL(TInt aCommand);
-        void HandleClientRectChange();
-        
-        /**
-         * Method for updating the Profiler engine status pane
-         * Called by Model class
-         * 
-         * @param aStatus new status of profiler engine  
-         */
-        void UpdateStatusPaneL( TInt aStatus ); 
-        
-    private: // From MEikMenuObserver
-        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-        
-    private: // From AknView
-        void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
-        void DoDeactivate();
-        void HandleStatusPaneSizeChange();
-        void SetupStatusPaneL();
-        void CleanupStatusPaneL();
-		HBufC* GetLabelTextLC(TInt aStatus);
-    private: // Data
-    	CAknNavigationDecorator*			iNaviDecorator;
-        CProfilerGuiMainContainer*        	iContainer;
-        CProfilerGuiModel*                  iModel;
-
-    };
-
-#endif
-
-// End of File
--- a/piprofilerui/ui/avkon/inc/profiler_gui_model.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_MODEL_H
-#define PROFILER_GUI_MODEL_H
-
-// SYSTEM INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <apgcli.h>
-#include <gdi.h>
-#include <utf.h>
-#include <e32property.h>    // RProperty
-
-// LOCAL INCLUDES
-#include "profiler_gui_mainview.h"
-#include "profiler_gui.hrh"
-
-// COMMON INCLUDES
-#include <piprofiler/ProfilerConfig.h>
-#include <piprofiler/ProfilerAttributes.h>
-#include <piprofiler/ProfilerEngineStatusChecker.h>
-
-// setting keys (do not change uids of existing keys to maintain compatibility to older versions!)
-const TUid KPSettingPluginNameMode                         = { 0x00 };
-const TUid KPSettingPluginSaveFileDrive                    = { 0x01 };
-const TUid KPSettingPluginTraceOutput                      = { 0x02 };
-const TUid KPSettingPluginSaveFilePrefix                   = { 0x03 };
-const TUid KPSettingPluginTraceMode                        = { 0x04 };
-
-
-// FORWARD DECLARATIONS
-class CProfilerGuiMainView;
-class CProfilerGuiMainContainer;
-class CEikonEnv;
-class TSamplerAttributes;
-class CProfilerEngineStatusChecker;
-class MProfilerStatusObserver;
-
-
-typedef CArrayFixSeg<TSamplerAttributes> CSamplerItemList;
-
-
-
-class CProfilerGuiModel : public CActive, MProfilerStatusObserver
-	{
-private:
-    enum TContainerDrawState
-    	{
-    	EDrawStateInvalid = -1,
-    	EDrawStateMain
-    	};
- public:
-	static CProfilerGuiModel* NewL();
-	~CProfilerGuiModel();
-	void ActivateModelL();
-	void DeActivateModelL();
-	void SetMainView(CProfilerGuiMainView* aMainView);
-	void UpdateState(TInt aState);
-	TBool GetSelectedItemHasSettings();
-    TBool GetSelectedItemEnabled();
-    TBool GetSelectedItemHidden();
-    TInt EditSelectedSamplerL(TInt index);
-    void SelectedSamplerInfoL(TInt index);
-    void TerminateProfilerL();
-    TBool CheckTraceLocationSanityL(TGeneralAttributes& aAttr, TBool aQuietCheck);
- private:
-    void RunL();
-	void DoCancel();
-	void LoadPluginsL();	
-    TInt EditSamplerL(TSamplerAttributes& aItem);
-    void SamplerInfoL(TSamplerAttributes& aItem);
-private:
-	CProfilerGuiModel();
-	void ConstructL();
-    TInt LoadGeneralSettingsL();
-
-    void AppendToSamplerItemListL(TSamplerAttributes& aItem);
-    void DisableOrEnableFromSamplerItemListL(TInt aIndex);
-    void DeleteAllSamplerItems();
-    void RefreshViewL(TBool aClearSelection=ETrue);
-    void LaunchProfilerEngineL();
-    void UpdateUIRunningStateL();
-    TInt FindProcessL(RProcess& aProc);
-    
-public:
-    
-    enum TProfilingMode
-        {
-        EProfilingModeNormal = 0,
-        EProfilingModeTimed
-        };
-    
- 	void StartAllSamplerItemsL(TProfilingMode aProfilingMode = EProfilingModeNormal);
-    void StopAllSamplerItemsL();
-    void DeleteAllSamplerItemsL();
-    void DisableAllSamplerItemsL();
-    void EnableAllSamplerItemsL();
-            
-    TInt SamplerItemCount() const;
-    void ShowItemActionMenuL();
-    void StopSelectedOrHighlightedItemsL();
-    void DisableOrEnableSelectedOrHighlightedItemsL();
-
-    CDesCArray* GenerateListBoxItemTextArrayL();
-	void StartNewSamplerL(TInt aCommand);
-    void AddNewSamplersL(CArrayFixFlat<TSamplerAttributes>& iSamplerAttributes);
-
-    void SaveGeneralSettingsL();
-    void SetMainContainer(CProfilerGuiMainContainer* aContainer);
-    TInt LaunchSettingsDialogL();
-    inline CEikonEnv* EikonEnv() { return iEnv; }
-    inline CProfilerGuiMainContainer* MainContainer() { return iMainContainer; }
-    inline TBool SamplerItemsExists() { return iSamplerItemList->Count() > 0; } 
-    inline TGeneralAttributes const& GeneralSettings() const { return iGeneralAttributes; }
-    
-    TPtrC GetWriterInfoNoteL(const TDesC& aNote);
-    void AttachClient();
-    void RemoveClient();
-
-public:
-    // from MProfilerStatusObserver
-    void NotifyContainerReadyL();
-    void HandleProfilerStatusChange( KProfilerStatus aStatus );
-    void HandleProfilerErrorL( TInt aError );
-        
-private:
-	static const TInt                   iSamplerNameMode = ESamplerNameLong;
-    CProfilerGuiMainContainer*          iMainContainer;
-    CEikonEnv*                          iEnv;
-    TInt                                iDrawState;
-    CSamplerItemList*                   iSamplerItemList;
-    TInt                                iReferenceNumber;
-    CArrayFixFlat<TSamplerAttributes>*	iSamplerAttributes;
-    TGeneralAttributes                  iGeneralAttributes;
-    TBool                               iProfilerStatus;   // Status of Engine before it was launched by this application
-    CProfilerGuiMainView*               iMainView;
-
-    // checkers
-    CProfilerEngineStatusChecker*       iStatusChecker;
-public:
-    TInt							     iState;
-    };
-
-#endif
--- a/piprofilerui/ui/avkon/inc/profiler_gui_samplersettingsviewdlg.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_SAMPLERSETTINGSVIEWDLG_H
-#define PROFILER_GUI_SAMPLERSETTINGSVIEWDLG_H
-
-//  INCLUDES
-#include <AknDialog.h>
-#include <eiklbo.h>
-#include <AknTabObserver.h> 
-#include <akntabgrp.h>
-#include <aknsettingitemlist.h> 
-#include <akncheckboxsettingpage.h> 
-
-#include "profiler_gui_model.h"
-
-
-//  FORWARD DECLARATIONS
-class CAknSettingItemArray;
-class CAknSettingStyleListBox;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-class CAknTabGroup; 
-class TProfilerSamplerSettings;
-
-// CONSTANTS
-const TUint KMaxItemCount = 7;
-const TInt KMaxSettingUITextLength = 64;
-
-//  CLASS DEFINITIONS
-
-class CProfilerSamplerSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
-    {
-public:
-    static CProfilerSamplerSettingsViewDlg* NewL(TSamplerAttributes& aSettings);
-    virtual ~CProfilerSamplerSettingsViewDlg();
-
-public: // From MEikListBoxObserver
-    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
-
-public: // From MAknTabObserver
-    void TabChangedL(TInt aIndex); 
-
-public: // From CAknDialog
-    void ProcessCommandL(TInt aCommandId);
-
-protected: // From CEikDialog
-    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
-    void PreLayoutDynInitL();
-    TBool OkToExitL(TInt aButtonId);    
-
-private: // New methods
-    void ShowSettingPageL(TBool aCalledFromMenu);
-    void SetVisibilitiesOfSettingItemsL();
-    void UpdateListBoxL();
-    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
-
-private: // Constructors
-    CProfilerSamplerSettingsViewDlg(TSamplerAttributes& aSettings);
-    void ConstructL();        
-    CAknSettingItem* GetSettingItemL(TSettingItem& aItem, TInt aIndex, TInt& aSettingPageResource);
-private: // Data
-    CAknSettingItemArray*               iSettingItemArray;
-    CAknSettingStyleListBox*            iListBox;
-    CAknNavigationControlContainer*     iNaviContainer;
-    TSamplerAttributes&                 iSettings;
-    TInt 								iItemCount;
-    
-    // item bufs for textual settings data 
-    TInt                                iItemBuf[KMaxItemCount];
-    };
-
-#endif
-
-// End of File
-
--- a/piprofilerui/ui/avkon/inc/profiler_gui_settingsviewdlg.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_SETTINGSVIEWDLG_H
-#define PROFILER_GUI_SETTINGSVIEWDLG_H
-
-//  INCLUDES
-#include <AknDialog.h>
-#include <eiklbo.h>
-#include <AknTabObserver.h> 
-#include <akntabgrp.h>
-#include <aknsettingitemlist.h> 
-#include <akncheckboxsettingpage.h> 
-
-#include "profiler_gui_model.h"
-
-
-//  FORWARD DECLARATIONS
-class CAknSettingItemArray;
-class CAknSettingStyleListBox;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-class CAknTabGroup; 
-class TProfilerGuiSettings;
-
-
-//  CLASS DEFINITIONS
-
-class CProfilerGuiSettingsViewDlg : public CAknDialog, public MEikListBoxObserver, public MAknTabObserver
-    {
-public:
-    static CProfilerGuiSettingsViewDlg* NewL(TGeneralAttributes& aSettings);
-    virtual ~CProfilerGuiSettingsViewDlg();
-
-public: // From MEikListBoxObserver
-    void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
-
-public: // From MAknTabObserver
-    void TabChangedL(TInt aIndex); 
-
-public: // From CAknDialog
-    void ProcessCommandL(TInt aCommandId);
-
-protected: // From CEikDialog
-    TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType);
-    void PreLayoutDynInitL();
-    TBool OkToExitL(TInt aButtonId);    
-
-private: // New methods
-    void ShowSettingPageL(TBool aCalledFromMenu);
-    void SetVisibilitiesOfSettingItemsL();
-    void UpdateListBoxL();
-    void AddSettingItemL(TInt aId, TInt aTitleResource, TInt aSettingPageResource, TInt aAssociatedResource, TInt aOrdinal);
-
-private: // Constructors
-    CProfilerGuiSettingsViewDlg(TGeneralAttributes& aSettings);
-    void ConstructL();        
-
-private: // Data
-    CAknSettingItemArray*               iSettingItemArray;
-    CAknSettingStyleListBox*            iListBox;
-    CAknNavigationControlContainer*     iNaviContainer;
-    TGeneralAttributes&                 iSettings;
-    
-    // temporary member variables
-    TInt                                iTraceOutput;
-    TBuf<64>                            iSaveDrive;
-    TBuf<64>                            iFilePrefix;
-    };
-
-
-#endif
-
-// End of File
-
--- a/piprofilerui/ui/avkon/inc/profiler_gui_std.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +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:   
-*
-*/
-
-
-
-#ifndef PROFILER_GUI_STD_H
-#define PROFILER_GUI_STD_H
-
-
-
-#endif
-
-// End of File
-
--- a/piprofilerui/ui/avkon/rom/piprofilerui_avkon.iby	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +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:   
-*
-*/
-
-
-
-#ifndef __PROFILERGUI_IBY__
-#define __PROFILERGUI_IBY__
-
-S60_APP_EXE(PIProfilerUI)
-S60_APP_AIF_ICONS(PIProfilerUI)
-S60_APP_RESOURCE(PIProfilerUI)
-SCALABLE_IMAGE(APP_BITMAP_DIR, APP_BITMAP_DIR, PIProfilerui_ExtraIcons)
-#ifdef S60_UPGRADABLE_APP_REG_RSC
-  S60_UPGRADABLE_APP_REG_RSC(PIProfilerUI)
-#else
-  S60_APP_AIF_RSC(PIProfilerUI)
-#endif
-
-#endif // __PROFILERGUI_IBY__
--- a/piprofilerui/ui/avkon/src/profiler_gui_app.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +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 FILES
-#include "profiler_gui_app.h"
-#include "profiler_gui_document.h"
-#include <piprofiler/ProfilerTraces.h>
-
-#include <eikstart.h>
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CProfilerGuiApp::AppDllUid()
-// Returns application UID
-// ---------------------------------------------------------
-//
-TUid CProfilerGuiApp::AppDllUid() const
-    {
-    return KUidProfilerGui;
-    }
-   
-// ---------------------------------------------------------
-// CProfilerGuiApp::CreateDocumentL()
-// Creates CProfilerGuiDocument object
-// ---------------------------------------------------------
-//
-CApaDocument* CProfilerGuiApp::CreateDocumentL()
-    {
-    return CProfilerGuiDocument::NewL( *this );
-    }
-
-// ================= OTHER EXPORTED FUNCTIONS ==============
-
-LOCAL_C CApaApplication* NewApplication()
-    {
-    return new CProfilerGuiApp;
-    }
-
-
-GLDEF_C TInt E32Main()
-    {
-    return EikStart::RunApplication(NewApplication);
-    }
-
-// End of File  
-
--- a/piprofilerui/ui/avkon/src/profiler_gui_appui.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +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 FILES
-#include "profiler_gui_appui.h"
-#include "profiler_gui_mainview.h"
-#include "profiler_gui.hrh"
-#include "profiler_gui_model.h"
-#include "profiler_gui_document.h"
-#include <piprofilerui.rsg>
-#include <piprofiler/ProfilerTraces.h>
-#include <piprofiler/ProfilerSession.h>
-#include <piprofiler/ProfilerConfig.h>
-
-#include <AknWaitDialog.h>
-#include <AknGlobalNote.h>
-#include <avkon.hrh>
-#include <AknQueryDialog.h>
-#include <aknmessagequerydialog.h> 
-#include <pathinfo.h>
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-void CProfilerGuiAppUi::ConstructL()
-    {
-    // set as system application to prevent getting shut down events 
-    iEikonEnv->SetSystem(ETrue);
-    
-    BaseConstructL(EAknEnableSkin);
-    
-    // get model
-    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-	
-	LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - setting main view settings"));
-    
-    CProfilerGuiMainView* mainView = new(ELeave) CProfilerGuiMainView;
-    CleanupStack::PushL(mainView);
-    mainView->ConstructL();
-    AddViewL(mainView);           // transfer ownership to CAknViewAppUi
-    CleanupStack::Pop();          // mainView
-
-	LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - setting default view"));
-
-    SetDefaultViewL(*mainView);
-
-    LOGTEXT(_L("ProfilerGuiAppUi::ConstructL - activating model"));
-
-    // notify the model that everything has been constructed
-    iModel->ActivateModelL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiAppUi::~CProfilerGuiAppUi()
-    {
-    // notify the model that the application is closing 
-    if (iModel)   
-        TRAP_IGNORE(iModel->DeActivateModelL());
-
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    if( aResourceId == R_PROFILER_START_SUBMENU )
-        {
-        CEikMenuPaneItem::SData itemData;
-        _LIT(KMenuText, "Profiling for %d sec.");
-        itemData.iText.Format(KMenuText, iModel->GeneralSettings().iTimedSamplingPeriod);// = _L("Profiling for %d sec.");  // Label text for the menu item
-        itemData.iCommandId = EProfilerGuiCmdStartTimed;    // Command ID for the menu item
-        itemData.iFlags = 0;
-        itemData.iCascadeId = 0;
-        aMenuPane->AddMenuItemL( itemData );
-        }
-    if (aResourceId == R_PROFILER_GUI_APP_MENU)
-        {
-        if(iModel->iState == MProfilerStatusObserver::ERunning)
-        	{
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, ETrue);
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, EFalse);
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, ETrue);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, ETrue);
-        	}
-        else if(iModel->iState == MProfilerStatusObserver::EIdle)
-        	{
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, EFalse);
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, ETrue);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, EFalse);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, EFalse);
-        	}
-        else
-        	{
-        	// if initializing or stopping no start/stop actions allowed 
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStartAll, ETrue);
-			aMenuPane->SetItemDimmed(EProfilerGuiCmdStopAll, ETrue);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerControl, ETrue);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSettings, ETrue);
-        	}
-        }
-    
-    if(aResourceId == R_PROFILER_SAMPLER_CONTROL_MENU)
-        {
-        // check if item hidden, i.e. sampler cannot be started/stopped
-        if(!iModel->GetSelectedItemHidden())
-            {
-            // item enabled => dimm the "enable" item, and other way round
-            if(iModel->GetSelectedItemEnabled())
-                {
-                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, ETrue);
-                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, EFalse);
-                }
-            // item enabled => dimm the "enable" item, and other way round
-            else
-                {
-                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, EFalse);
-                aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, ETrue);
-                }
-
-            }
-        // item hidden => dimm both enable and disable items
-        else
-            {
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerEnable, ETrue);
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerDisable, ETrue);
-            }
-        
-        // if sampler item has specific settings to control 
-        if(iModel->GetSelectedItemHasSettings())
-            {
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerSettings, EFalse);
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed(EProfilerGuiCmdSamplerSettings, ETrue);
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CProfilerGuiAppUi::HandleKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/)
-    {
-    return EKeyWasNotConsumed;
-    }
-
-void CProfilerGuiAppUi::HandleSystemEventL(const TWsEvent& aEvent)
-    {
-    switch (*(TApaSystemEvent*)(aEvent.EventData()))
-        {
-        case EApaSystemEventShutdown:
-            // check if still profiling
-            if( iModel->iState != MProfilerStatusObserver::EIdle )
-                {
-                // stop profiling process
-                iModel->StopAllSamplerItemsL();
-                }
-
-            // terminate profiler engine
-            iModel->TerminateProfilerL();
-            break;
-        default:
-            break;
-        }
-    // call base class implementation
-    CAknAppUi::HandleSystemEventL(aEvent);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiAppUi::HandleCommandL(TInt aCommand)
-    {
-    switch ( aCommand )
-        {
-        case EProfilerGuiCmdSettings:
-            {
-            // check if exit command received
-            if (iModel->LaunchSettingsDialogL() == EAknCmdExit)
-                {
-                // terminate profiler engine...
-                iModel->TerminateProfilerL();
-                
-                // ... and exit
-                Exit();
-                }
-            break;
-            }
-        case EProfilerGuiCmdAbout:
-            {
-	        CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
-            dialog->ExecuteLD(R_PROFILER_GUI_ABOUT_DIALOG);
-            }
-            break;
-            
-        // a normal way to close an application
-        case EAknCmdExit:
-        case EEikCmdExit:
-        case EAknSoftkeyExit: 
-			{
-			// decrease the client reference count in the server:
-			iModel->RemoveClient();
-            // check if still profiling
-            if( iModel->iState != MProfilerStatusObserver::EIdle && 
-                    iModel->iState != MProfilerStatusObserver::EStopping )
-                {
-                // ask user if he wants to leave profiling running in background process 
-                if( this->RunConfQueryL( NULL ) == 0 )
-                    {
-                    // stop profiling process
-                    iModel->StopAllSamplerItemsL();
-
-                    // terminate profiler engine
-                    iModel->TerminateProfilerL();
-                    }
-                }
-            else
-                {
-                // terminate profiler engine
-                iModel->TerminateProfilerL();
-                }
-            
-            Exit();
- 			}
-            break;
-
-        default:
-            break;      
-        }
-    }
-
-TInt CProfilerGuiAppUi::RunConfQueryL( const TDesC* aOverrideText )
-	{
-	CAknQueryDialog* queryDialog = CAknQueryDialog::NewL();
-	
-	if(aOverrideText)
-		{
-		queryDialog->SetPromptL(*aOverrideText);
-		}
-	return queryDialog->ExecuteLD(R_PROFILER_GUI_CONF_QUERY);
-	}
-
-
-// End of File  
--- a/piprofilerui/ui/avkon/src/profiler_gui_document.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +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 FILES
-#include "profiler_gui_document.h"
-#include "profiler_gui_appui.h"
-#include "profiler_gui_model.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// constructor
-CProfilerGuiDocument::CProfilerGuiDocument(CEikApplication& aApp)
-: CAknDocument(aApp)    
-    {
-    }
-
-// ----------------------------------------------------
-
-// destructor
-CProfilerGuiDocument::~CProfilerGuiDocument()
-    {
-    delete iModel;
-    }
-
-// ----------------------------------------------------
-
-// EPOC default constructor can leave.
-void CProfilerGuiDocument::ConstructL()
-    {
-    iModel = CProfilerGuiModel::NewL();
-    }
-
-// ----------------------------------------------------
-
-// Two-phased constructor.
-CProfilerGuiDocument* CProfilerGuiDocument::NewL(CEikApplication& aApp)
-    {
-    CProfilerGuiDocument* self = new(ELeave) CProfilerGuiDocument(aApp);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-    
-// ----------------------------------------------------
-// CProfilerGuiDocument::CreateAppUiL()
-// constructs CProfilerGuiAppUi
-// ----------------------------------------------------
-//
-CEikAppUi* CProfilerGuiDocument::CreateAppUiL()
-    {
-    return new (ELeave) CProfilerGuiAppUi;
-    }
-
-// End of File  
--- a/piprofilerui/ui/avkon/src/profiler_gui_maincontainer.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +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 FILES
-#include "profiler_gui_maincontainer.h"
-#include "profiler_gui.hrh"
-#include "profiler_gui_document.h"
-#include "profiler_gui_appui.h"
-#include "profiler_gui_model.h"
-#include <piprofilerui_extraicons.mbg>
-
-#include <aknlists.h>
-#include <eikclb.h>
-#include <eikclbd.h>
-#include <aknconsts.h>
-#include <AknUtils.h>
-#include <aknnotewrappers.h>
-#include <AknIconArray.h> 
-#include <f32file.h>
-#include <AknIconUtils.h>
-#include <AknDef.h>
-#include <akntitle.h>
-#include <eikspane.h> 
-
-_LIT(KExtraIconsPath, "\\resource\\apps\\piprofilerui_extraicons.mif");
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-void CProfilerGuiMainContainer::ConstructL(const TRect& aRect)
-    {
-    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    iModel->SetMainContainer(this);
-
-    CreateWindowL();
-    SetRect(aRect);
-    SetBlank();
-    
-    // init listbox
-    iListBox = new(ELeave) CAknSingleGraphicStyleListBox;
-    iListBox->SetContainerWindowL(*this);
-    iListBox->ConstructL(this, EAknListBoxMarkableList);
-    iListBox->View()->SetListEmptyTextL(_L("No plugins found yet"));
-
-    // if description length longer than screen width, scroll the text
-    iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
-    
-    // create icon array and add marking indicator to it
-    CAknIconArray* iconArray = new(ELeave) CAknIconArray(1);
-    CleanupStack::PushL(iconArray);
-    CFbsBitmap* markBitmap = NULL;
-    CFbsBitmap* markBitmapMask = NULL;
-    
-    TRgb defaultColor;
-    defaultColor = iEikonEnv->Color(EColorControlText);
-
-    AknsUtils::CreateColorIconL(AknsUtils::SkinInstance(),
-            KAknsIIDQgnIndiMarkedAdd,
-            KAknsIIDQsnIconColors,
-            EAknsCIQsnIconColorsCG13,
-            markBitmap,
-            markBitmapMask,
-            AknIconUtils::AvkonIconFileName(),
-            EMbmAvkonQgn_indi_marked_add,
-            EMbmAvkonQgn_indi_marked_add_mask,
-            defaultColor
-            );
-     
-    CGulIcon* markIcon = CGulIcon::NewL(markBitmap, markBitmapMask);
-    iconArray->AppendL(markIcon);                       
-    
-    // append icons from profiler_gui_extraicons.mif
-    TFileName extraIconsPath;
-    extraIconsPath.Copy(KExtraIconsPath);
-    TParsePtrC parse((CEikonEnv::Static()->EikAppUi()->Application())->AppFullName()); // get path where this app is installed
-    extraIconsPath.Insert(0, parse.Drive()); // drive letter
-    
-    CFbsBitmap* redBitmap = NULL;
-    CFbsBitmap* redBitmapMask = NULL;
-    CFbsBitmap* greenBitmap = NULL;
-    CFbsBitmap* greenBitmapMask = NULL;
-    
-    AknIconUtils::CreateIconL(redBitmap, redBitmapMask, extraIconsPath, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_disabled, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_disabled_mask);
-    AknIconUtils::CreateIconL(greenBitmap, greenBitmapMask, extraIconsPath, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_enabled, EMbmPiprofilerui_extraiconsQgn_prob_piprofilerui_status_enabled_mask);
-
-    CGulIcon* redIcon = CGulIcon::NewL(redBitmap, redBitmapMask);
-    iconArray->AppendL(redIcon);  
-    
-    CGulIcon* greenIcon = CGulIcon::NewL(greenBitmap, greenBitmapMask);
-    iconArray->AppendL(greenIcon);  
-
-    // set icon array
-    CleanupStack::Pop(); // iconArray
-    iListBox->ItemDrawer()->ColumnData()->SetIconArray(iconArray);
-
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    iListBox->SetListBoxObserver(this);
-    
-    // set size of the listbox
-    TSize outputRectSize;
-    AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
-    TRect outputRect(outputRectSize);
-    iListBox->SetRect(outputRect);
-
-    iListBox->ActivateL();    
-    
-    ActivateL();
-    
-    iInfoPopup = CAknInfoPopupNoteController::NewL();
-    iInfoPopup->SetTimePopupInView(5000);
-    iInfoPopup->SetTimeDelayBeforeShow(500);
-    iInfoPopup->SetTextL(_L("TIP: Check also sampler specific settings!")); 
-    iInfoPopup->ShowInfoPopupNote();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiMainContainer::~CProfilerGuiMainContainer()
-    {
-    delete iInfoPopup;
-    
-    if (iListBox)
-        delete iListBox;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::SizeChanged()
-{
-    TSize outputRectSize;
-    AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
-    TRect outputRect(outputRectSize);
-    
-    if (iListBox)
-        iListBox->SetRect(outputRect);
-}
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiMainContainer::CountComponentControls() const
-    {
-    if (iListBox)
-        return 1;
-    else
-        return 0;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CCoeControl* CProfilerGuiMainContainer::ComponentControl(TInt /*aIndex*/) const
-    {
-    if (iListBox)
-        return iListBox;
-    else
-        return NULL;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiMainContainer::CurrentListBoxItemIndex()
-    {
-    if (iListBox)
-        {
-        return iListBox->CurrentItemIndex();
-        }
-    else
-        return KErrNotFound;    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::SetListBoxTextArrayL(CDesCArray* aTextArray)
-    {
-    if (iListBox)
-        {    
-        iListBox->Model()->SetItemTextArray(aTextArray);
-        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-        iListBox->HandleItemAdditionL();
-        iListBox->UpdateScrollBarsL();
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-const CArrayFix<TInt>* CProfilerGuiMainContainer::ListBoxSelectionIndexes()
-    {
-    if (iListBox)
-        {
-        const CListBoxView::CSelectionIndexArray* indices = iListBox->SelectionIndexes();
-        return static_cast<const CArrayFix<TInt>*>(indices);
-        }
-    else
-        return NULL;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiMainContainer::ListBoxSelectionIndexesCount()
-    {
-    if (iListBox)
-        {
-        return iListBox->SelectionIndexes()->Count();
-        }
-    else
-        return KErrNotFound;
-    }
-                        
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::Draw(const TRect& aRect) const
-    {
-    CWindowGc& gc = SystemGc();
-    gc.Clear(aRect);
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::SetDefaultTitlePaneTextL()
-    {
-    _LIT(KTitleText, "PIProfiler");
-
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL( KTitleText );
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CProfilerGuiMainContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    if(aType != EEventKey)
-        return EKeyWasNotConsumed;
-    
-    if (iListBox && iListBox->Model()->NumberOfItems() > 0)
-        {
-        // handle OK/Enter keys
-        if (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter)
-            {
-            // check if profiler state is idle
-            if(iModel->iState == MProfilerStatusObserver::EIdle)
-                {
-                // show action menu only if state is idle
-                iModel->ShowItemActionMenuL();
-                }
-            }
-        else
-            {
-            return iListBox->OfferKeyEventL(aKeyEvent, aType);
-            }
-        }
-    
-    return EKeyWasNotConsumed;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-            {
-            iModel->ShowItemActionMenuL();
-            }
-            break;
-        default:
-            break;
-        }
-    }
-            
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::HandleResourceChange(TInt aType)
-    {
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-        SetRect(mainPaneRect);
-
-        TSize outputRectSize;
-        AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize);
-        TRect outputRect(outputRectSize);
-        iListBox->SetRect(outputRect);
-        }
-    else
-        {
-        CCoeControl::HandleResourceChange(aType);
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiMainContainer::ShowWriterInfoPopupL(const TDesC& aNote)
-	{
-	if(!iInfoPopup)
-	    {
-	    iInfoPopup = CAknInfoPopupNoteController::NewL();
-	    }
-    // Hide the note. The last note may be visible when creating the second
-	iInfoPopup->HideInfoPopupNote();
-    iInfoPopup->SetTimePopupInView(5000);
-    iInfoPopup->SetTimeDelayBeforeShow(500);
-    iInfoPopup->SetTextL(iModel->GetWriterInfoNoteL(aNote));
-    iInfoPopup->ShowInfoPopupNote();
-	}
-
-
-// End of File  
--- a/piprofilerui/ui/avkon/src/profiler_gui_mainview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,334 +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 FILES
-#include "profiler_gui.hrh"
-#include "profiler_gui_mainview.h"
-#include "profiler_gui_maincontainer.h"
-#include "profiler_gui_document.h" 
-#include "profiler_gui_model.h"
-#include <piprofilerui.rsg>
-
-#include <AknWaitDialog.h>
-#include <AknGlobalNote.h>
-#include <eikenv.h>
-#include <aknViewAppUi.h> 
-#include <akncontext.h>
-#include <StringLoader.h>
-#include <aknnavi.h>
-#include <akntitle.h>
-#include <barsread.h>
-#include <aknnavide.h>
-#include <aknmessagequerydialog.h> 
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CProfilerGuiMainView::ConstructL(const TRect& aRect)
-// EPOC two-phased constructor
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::ConstructL()
-    {
-    BaseConstructL( R_PROFILER_GUI_VIEW_MAIN );
-    
-    iModel = static_cast<CProfilerGuiDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    iNaviDecorator = NULL;
-    iModel->SetMainView(this);
-    }
-
-// ---------------------------------------------------------
-// CProfilerGuiMainView::~CProfilerGuiMainView()
-// ---------------------------------------------------------
-//
-CProfilerGuiMainView::~CProfilerGuiMainView()
-    {
-
-    if(iNaviDecorator)
-    	{
-    	delete iNaviDecorator;
-    	iNaviDecorator = NULL;
-    	}
-    
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    
-    }
-
-// ---------------------------------------------------------
-// TUid CProfilerGuiMainView::Id()
-// ---------------------------------------------------------
-//
-TUid CProfilerGuiMainView::Id() const
-    {
-    return KMainViewUID;
-    }
-
-// ---------------------------------------------------------
-// TUid CProfilerGuiMainView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
-    {
-    AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
-    }
-
-  
-// ---------------------------------------------------------
-// CProfilerGuiMainView::HandleCommandL(TInt aCommand)
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::HandleCommandL(TInt aCommand)
-    {   
-    switch ( aCommand )
-        {
-        // commands from sampler control sub menu 
-        case EProfilerGuiCmdSamplerEnable:
-            {
-            iModel->DisableOrEnableSelectedOrHighlightedItemsL();
-            break;
-            }
-        case EProfilerGuiCmdSamplerDisable:
-            {
-            iModel->DisableOrEnableSelectedOrHighlightedItemsL();
-            break;
-            }
-        case EProfilerGuiCmdSamplerSettings:
-            {
-            // check if sampler settings dialog returned exit command
-            iModel->EditSelectedSamplerL(iContainer->CurrentListBoxItemIndex());
-            break;
-            }
-        case EProfilerGuiCmdSamplerInfo:
-            {
-            iModel->SelectedSamplerInfoL(iContainer->CurrentListBoxItemIndex());
-            break;
-            }
-            
-        case EProfilerGuiCmdStartAll:
-        case EProfilerGuiCmdStartTimed:
-            {
-            // still using the old way of starting all the samplers simultaneously
-            if( iModel->iState != MProfilerStatusObserver::ERunning )
-            	{
-            	// set state as "initializing" for a moment before profiling has started, 
-            	// NOTE: engine changes to "Running" state
-            	iModel->iState = MProfilerStatusObserver::EInitializing;
-                // start the actual sampling process on Profiler Engine 
-            	if( aCommand == EProfilerGuiCmdStartTimed )
-            	    iModel->StartAllSamplerItemsL(CProfilerGuiModel::EProfilingModeTimed);
-            	else
-            	    iModel->StartAllSamplerItemsL();
-            	}
-
-			// prevent the control of sampler specific settings during the trace 
-            iContainer->SetDimmed(ETrue);
-            break;
-            }
-        case EProfilerGuiCmdStopAll:
-            {
-			// check if still profiling
-			if( iModel->iState != MProfilerStatusObserver::EIdle )
-				{
-				// set to stopping mode
-				iModel->iState = MProfilerStatusObserver::EStopping;
-                // stop actual sampling process on Profiler Engine
-				iModel->StopAllSamplerItemsL();
-				}
-            
-			// return the control to sampler specific settings when tracing stopped
-			iContainer->SetDimmed(EFalse);
-
-            break;
-            }
-            
-        default:
-            {
-            AppUi()->HandleCommandL(aCommand);
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CProfilerGuiMainView::HandleClientRectChange()
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::HandleClientRectChange()
-    {
-    if ( iContainer )
-        {
-        iContainer->SetRect( ClientRect() );
-        }
-    }
-
-// ---------------------------------------------------------
-// CProfilerGuiMainView::DoActivateL(...)
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::DoActivateL(
-   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
-   const TDesC8& /*aCustomMessage*/)
-    {
-    // show wait dialog
-    CAknGlobalNote* waitDialog = CAknGlobalNote::NewLC();
-    waitDialog->SetSoftkeys(R_AVKON_SOFTKEYS_EMPTY);
-    TInt dialogId = waitDialog->ShowNoteL(EAknGlobalWaitNote, _L("Initializing samplers"));
-
-    // setup the profiler engine status pane
-    SetupStatusPaneL();
-    
-    // check if container creation succesfull
-    if (!iContainer)
-        {
-        iContainer = new (ELeave) CProfilerGuiMainContainer;
-        iModel->SetMainContainer(iContainer);
-        iContainer->SetMopParent(this);
-        iContainer->ConstructL( ClientRect() );
-        iModel->NotifyContainerReadyL();
-        AppUi()->AddToStackL( *this, iContainer );
-        } 
-    
-	// remove the wait dialog
-	waitDialog->CancelNoteL(dialogId);
-	CleanupStack::PopAndDestroy(); //waitDialog;
-   }
-
-// ---------------------------------------------------------
-// CProfilerGuiMainView::DoDeactivate()
-// ---------------------------------------------------------
-//
-void CProfilerGuiMainView::DoDeactivate()
-    {
-    TRAP_IGNORE(CleanupStatusPaneL());
-    
-    if (iContainer)
-        {
-        AppUi()->RemoveFromViewStack( *this, iContainer );
-        delete iContainer;
-        iContainer = NULL;
-        }
-    }
-
-void CProfilerGuiMainView::HandleStatusPaneSizeChange()
-	{
-	CAknView::HandleStatusPaneSizeChange();
-	
-	TInt result;
-	TRAP(result, SetupStatusPaneL());
-	}
-
-
-void CProfilerGuiMainView::SetupStatusPaneL()
-	{
-	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
-	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
-	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
-		{
-		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
-		if(iNaviDecorator)
-			{
-			delete iNaviDecorator;
-			iNaviDecorator = NULL;
-			}
-		
-		// get the initial status label
-		HBufC* labelText = GetLabelTextLC(iModel->iState);
-		iNaviDecorator = naviPane->CreateNavigationLabelL(*labelText);
-		CleanupStack::PopAndDestroy(labelText);
-		
-		naviPane->PushL(*iNaviDecorator);
-		}
-	}
-
-void CProfilerGuiMainView::CleanupStatusPaneL()
-	{
-	// destructor for navi pane, called by destructor
-	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
-	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
-	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
-		{
-		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
-		if(iNaviDecorator)
-			{
-			naviPane->Pop(iNaviDecorator);
-			delete iNaviDecorator;
-			iNaviDecorator = NULL;
-			}
-		}
-	}
-
-HBufC* CProfilerGuiMainView::GetLabelTextLC(TInt aStatus)
-	{
-	// get the predefined status text
-	HBufC* labelText = NULL;
-	switch(aStatus)
-		{
-		case MProfilerStatusObserver::EIdle:
-			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_IDLE);
-			break;
-		case MProfilerStatusObserver::EInitializing:
-			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_INITIALIZING);
-			break;
-		case MProfilerStatusObserver::ERunning:
-			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_RUNNING);
-			break;
-		case MProfilerStatusObserver::EStopping:
-			labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_STOPPING);
-			break;
-	     case MProfilerStatusObserver::ERestarting:
-            labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_RUNNING);
-            break;
-	     default:
-	        labelText = StringLoader::LoadLC(R_PROFILER_GUI_NAVI_TEXT_IDLE); 
-	        break;
-		}
-	return labelText;
-	}
-
-void CProfilerGuiMainView::UpdateStatusPaneL( TInt aStatus )
-	{
-	TUid naviPaneUid = TUid::Uid(EEikStatusPaneUidNavi);
-	CEikStatusPaneBase::TPaneCapabilities subPaneNavi = StatusPane()->PaneCapabilities(naviPaneUid);
-	// check if navi pane is correctly initialized
-	if(subPaneNavi.IsPresent() && subPaneNavi.IsAppOwned())
-		{
-		CAknNavigationControlContainer* naviPane = static_cast<CAknNavigationControlContainer*> (StatusPane()->ControlL(naviPaneUid));
-		if(iNaviDecorator)
-			{
-			delete iNaviDecorator;
-			iNaviDecorator = NULL;
-			}
-		HBufC* labelText;
-
-		// get the right status label text 
-		labelText = GetLabelTextLC(aStatus);
-		iNaviDecorator = naviPane->CreateNavigationLabelL(*labelText);
-		CleanupStack::PopAndDestroy(labelText);
-		
-		naviPane->PushL(*iNaviDecorator);
-		}
-	}
-
-
-// End of File
--- a/piprofilerui/ui/avkon/src/profiler_gui_model.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1176 +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 FILES
-#include "profiler_gui_samplersettingsviewdlg.h"
-#include "profiler_gui_model.h"
-#include "profiler_gui_app.h"
-#include "profiler_gui_settingsviewdlg.h"
-#include "profiler_gui_maincontainer.h"
-#include "profiler_gui.hrh"
-#include <piprofilerui.rsg>
-
-#include <coeutils.h>
-#include <bautils.h>
-#include <eikenv.h>
-#include <AknQueryDialog.h>
-#include <AknGlobalNote.h>
-#include <aknmessagequerydialog.h> 
-#include <e32math.h> 
-#include <akntitle.h> 
-#include <s32file.h>
-#include <aknnotewrappers.h>
-#include <sysutil.h>
-
-// UIDs
-#include <piprofiler/EngineUIDs.h>
-
-#include <piprofiler/ProfilerTraces.h>
-#include <piprofiler/ProfilerSession.h>
-
-// LITERALS
-_LIT(KAppName, "PI Profiler");
-_LIT(KWarningNote, "NOTE: output changed!\n");
-_LIT(KProfilerEngineExe, "PIProfilerEngine.exe");
-
-// literals for default general setting values
-_LIT8(KTraceOutput, "file_system");
-_LIT8(KTraceDebugOutput, "debug_output");
-_LIT8(KProfilerDefaultDrive, "E:\\data");
-_LIT8(KProfilerDefaultPrefix, "Profiler_#");
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CProfilerGuiModel* CProfilerGuiModel::NewL() 
-	{
-	CProfilerGuiModel* self = new(ELeave) CProfilerGuiModel;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop();
-	return self;
-	}
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiModel::CProfilerGuiModel() : CActive(EPriorityStandard)
-	{
-	}
-	
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::ConstructL()
-	{
-	// initialize basic settings
-	iDrawState = EDrawStateInvalid;
-	iReferenceNumber = 0;
-	iState = MProfilerStatusObserver::EIdle;
-	
-    iEnv = CEikonEnv::Static();
-
-    // profiler engine specific initialization
-    LaunchProfilerEngineL();
-    
-    // max sampler item list length is 64, i.e. max 64 sampler plugins loaded 
-    iSamplerItemList = new(ELeave) CSamplerItemList(64);
-
-    // initialize attribute arrays
-    iSamplerAttributes = new(ELeave) CArrayFixFlat<TSamplerAttributes>(20); // max sampler count is 20
-    
-    // engine status checker
-    iStatusChecker = CProfilerEngineStatusChecker::NewL();
-    iStatusChecker->SetObserver(this);
- 	
-	CActiveScheduler::Add(this);
-	}
-
-void CProfilerGuiModel::UpdateUIRunningStateL()
-    {
-    // prevent the control of sampler specific settings during the trace 
-    iMainContainer->SetDimmed(ETrue);
-    
-    // update status pane
-    iMainView->UpdateStatusPaneL(iState);
-
-    // show an info popup showing the logging method
-    iMainContainer->ShowWriterInfoPopupL(KNullDesC);
-    
-    // refresh view
-    RefreshViewL();
-    }
-
-// --------------------------------------------------------------------------------------------
-void CProfilerGuiModel::NotifyContainerReadyL()
-	{
-	// load initial plugins
-    LoadPluginsL();
-    
-    // get the initial state
-    if( iStatusChecker->GetInitialState() == MProfilerStatusObserver::ERunning )
-        {
-        // set model state to restarting and grabbing an existing profiler process
-        iState = MProfilerStatusObserver::ERestarting;
-        
-        // update status pane to correspond the running mode
-        UpdateUIRunningStateL();
-
-        // set model state to running
-        iState = MProfilerStatusObserver::ERunning;
-
-        }
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::ActivateModelL()
-	{
-	// load general settings
-	if( LoadGeneralSettingsL() != KErrNone )
-	    {
-	    LOGTEXT(_L("ProfilerGuiAppUi::ActivateModelL - could not connect profiler engine"));
-	    }
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::DeActivateModelL()
-	{
-	Cancel();
-	
-	// for a faster exit, send the application to background
-    TApaTask selfTask(iEnv->WsSession());
-    selfTask.SetWgId(iEnv->RootWin().Identifier());
-    selfTask.SendToBackground();
-	}
-	
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiModel::~CProfilerGuiModel()
-	{
-    if (iSamplerItemList)
-        {
-        DeleteAllSamplerItems();
-        delete iSamplerItemList;
-        iSamplerItemList = NULL;
-        }
-    
-    if(iStatusChecker)
-        {
-        iStatusChecker->Cancel();
-        delete iStatusChecker;
-        iStatusChecker = NULL;
-        }
-    
-  
-    if(iSamplerAttributes)
-        {
-        iSamplerAttributes->Reset();
-        delete iSamplerAttributes;
-        iSamplerAttributes = NULL;
-        }
-     
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::DoCancel()
-	{
-    
-	}
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::RunL()
-	{
-
-	}
-	
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::SetMainContainer(CProfilerGuiMainContainer* aContainer)
-    {
-    iMainContainer = aContainer;
-    iDrawState = EDrawStateMain;
-    }
-
-void CProfilerGuiModel::UpdateState(TInt aState)
-	{
-	iState = aState;
-	}
-
-TInt CProfilerGuiModel::FindProcessL(RProcess& aProc)
-    {
-    TProcessId engId;
-    TFindProcess procName;
-    procName.Find(_L("PIProfilerEngine.exe*"));
-    TFullName aResult;
-    TFullName aResult2;
-    TInt err(KErrNone);
-
-    // find the first appearance
-    err = procName.Next(aResult);
-    if(err != KErrNone)
-        {
-        // did not find any engine process
-        return err;
-        }
-    else
-        {
-        err = aProc.Open(procName);
-        if(err == KErrNone)
-            {
-            if(aProc.ExitCategory().Length() > 0)
-                {
-                aProc.Close();
-                // process already exited => create a new one
-                return KErrNotFound;
-                }
-            aProc.Close();
-            }
-        }
-    
-//    // check now if a second appearance exists in process list, 
-//    // i.e. engine started from eshell => two engine processes appear in normal case
-//    procName.Next(aResult2);
-//
-//    // check if aResult2 contained the second appearance of profiler engine
-//    if(aResult2.CompareF(aResult) > 0)
-//        {
-//        // other process found, i.e. right process to communicate with, in case started from eshell
-//        err = aProc.Open(procName);
-//        if(err == KErrNone)
-//            {
-//            if(aProc.ExitCategory().Length() > 0)
-//                {
-//                // process already exited => create a new one
-//                return KErrNotFound;
-//                }
-//            aProc.Close();
-//            }
-//        }
-    
-    return err;
-    }
-
-void CProfilerGuiModel::LaunchProfilerEngineL()
-    {
-    LOGTEXT(_L("CProfilerGuiModel::LaunchProfilerEngineL - start"));
-
-    TRequestStatus stat = KRequestPending;
-    RProcess proc;
-    
-    TInt err(KErrNone);
-    
-    // check if process exists
-    err = FindProcessL(proc);
-    
-    // check if already exists and don't start a new eshell profiling
-    if( err == KErrNotFound )
-        {
-        // try create new process
-        err = proc.Create(KProfilerEngineExe, _L(""));
-
-        // check if RProcess::Create() succeeded
-        if( err == KErrNone )
-            {
-            // Trigger rendezvous on the supplied TRequestStatus object
-            proc.Rendezvous(stat); 
-
-            // kick off the engine process
-            proc.Resume();
-            
-            // wait for the constructor to complete 
-            User::WaitForRequest(stat); 
-            
-            // just lose the handle
-            proc.Close();
-            }
-        }
-    
-    // Increase the client reference count in server:
-    AttachClient();    
-    }
-
-//-----------------------------------------------------------------------------
-// CProfilerGuiModel::TerminateProfilerL()
-// Stops Profiler Engine if it has been launched by this launcher. 
-//-----------------------------------------------------------------------------
-
-void CProfilerGuiModel::TerminateProfilerL()
-    {
-    LOGTEXT(_L("CProfilerGuiModel::TerminateProfiler - entry"));
-    
-    // exit profiler engine 
-    RProfiler::ExitProfiler();
-        
-    LOGTEXT(_L("CProfilerGuiModel::TerminateProfiler - exit"));
-    
-    }
-
-void CProfilerGuiModel::AttachClient()
-    {
-    LOGTEXT(_L("CProfilerGuiModel::AttachClient - entry"));
-    
-    // 
-    RProfiler::AttachClient();
-        
-    LOGTEXT(_L("CProfilerGuiModel::AttachClient - exit"));
-    
-    }
-
-void CProfilerGuiModel::RemoveClient()
-    {
-    LOGTEXT(_L("CProfilerGuiModel::RemoveClient - entry"));
-    
-    // 
-    RProfiler::RemoveClient();
-        
-    LOGTEXT(_L("CProfilerGuiModel::RemoveClient - exit"));
-    
-    }
-
-void CProfilerGuiModel::AddNewSamplersL(CArrayFixFlat<TSamplerAttributes>& aAttributes)
-	{
-	TSamplerAttributes item;
-	
-	TInt count(aAttributes.Count());
-
-	// loop the attribute array and insert them into view list
-	for (TInt i(0);i<count;i++)
-		{
-    	// get a TSamplerAttributes from list at a time  
-		item = aAttributes.At(i);
-
-		iReferenceNumber++;
-	
-        // add item to the array
-        AppendToSamplerItemListL(item);
-        
-        // update the listbox
-        RefreshViewL(EFalse);
-        
-        // set item index to the begin	
-        iMainContainer->ListBox()->SetCurrentItemIndexAndDraw(iMainContainer->ListBox()->Model()->NumberOfItems()-1);
-
-		}
-    // refresh again
-    if(iReferenceNumber > 0)
-        {
-        RefreshViewL(ETrue);
-        }
-	}
-
-TBool CProfilerGuiModel::CheckTraceLocationSanityL(TGeneralAttributes& aAttr, TBool aQuietCheck)
-    {
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-
-    TBuf<32> drive;
-    
-    CnvUtfConverter::ConvertToUnicodeFromUtf8(drive, aAttr.iSaveFileDrive);
-
-    TDriveUnit driveUnit = TDriveUnit(drive);
-
-    TBool ret(EFalse);
-
-    // check that the root folder is correct
-    if (drive.Length() > 2 && BaflUtils::CheckFolder(fs, drive.Left(3)) == KErrNone )
-        {
-        // check then if drive has still some space
-        if(!SysUtil::DiskSpaceBelowCriticalLevelL(&fs, 0, driveUnit))
-            {
-            ret = ETrue;
-            }
-        }
-    
-    // check if the sanity check failed
-    if(!ret)
-        {
-        // show an error note
-        if(aQuietCheck == EFalse)
-            {
-            CAknErrorNote* note = new(ELeave) CAknErrorNote();
-            note->ExecuteLD(_L("Invalid path, check settings!"));
-            }
-        }
-    fs.Close();
-    return ret;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiModel::LaunchSettingsDialogL()
-    {
-    // launch the settings dialog
-    TGeneralAttributes newSettings = iGeneralAttributes;
-    TBool quietCheck(EFalse);
-    
-    CProfilerGuiSettingsViewDlg* dlg = CProfilerGuiSettingsViewDlg::NewL(newSettings);
-    TInt returnValue = dlg->ExecuteLD(R_PROFILER_GUI_SETTINGS_DIALOG);
-    
-    // check if exit command => no error note to user
-    if(returnValue == EAknCmdExit)
-        quietCheck = ETrue;
-    
-    // always save settings since the settings dialog does not provide a possibility to cancel
-    iGeneralAttributes.iTraceOutput.Copy(newSettings.iTraceOutput);
-    iGeneralAttributes.iTraceFilePrefix.Copy(newSettings.iTraceFilePrefix);
-    iGeneralAttributes.iTimedSamplingPeriod = newSettings.iTimedSamplingPeriod;
-
-    // check if debug output selected no check of
-    if(newSettings.iTraceOutput.CompareF(KTraceDebugOutput) != 0)
-        {
-        // Check save file drive sanity
-        if(CheckTraceLocationSanityL(newSettings, quietCheck))
-            {
-            // save the new location
-            iGeneralAttributes.iSaveFileDrive.Copy(newSettings.iSaveFileDrive);
-            }
-        }
-    
-    // saves the general settings to profiler engine
-    SaveGeneralSettingsL();   
-    
-    // make sure that the title of the application is correct
-    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL(KAppName);
-    
-    return returnValue;
-    }
-
-
-TPtrC CProfilerGuiModel::GetWriterInfoNoteL(const TDesC& aNote)
-	{
-    TBuf<256> buf;
-    TBuf<128> descBuf;
-    
-    buf.Zero();
-
-    // get active profiler since it 
-    RProfiler::GetActiveWriter(buf);
-    
-	if(iGeneralAttributes.iTraceOutput.CompareF(KTraceOutput) == 0)
-		{
-		if(iState == MProfilerStatusObserver::EInitializing ||
-                iState == MProfilerStatusObserver::ERestarting )
-			{
-			descBuf.Zero();
-			// set the additional note if available
-			buf.Copy(aNote); 
-			RProfiler::GetFileName(descBuf);
-			buf.Append(_L("Writing to "));
-			buf.Append(descBuf);
-			}
-		else if(iState == MProfilerStatusObserver::EIdle ||
-		        iState == MProfilerStatusObserver::EStopping ||
-		        iState == MProfilerStatusObserver::ERunning )
-			{
-			descBuf.Zero();
-            // set the additional note if available
-            buf.Copy(aNote); 
-            RProfiler::GetFileName(descBuf);
-			buf.Append(_L("Wrote trace data to "));
-			buf.Append(descBuf);
-			}
-		else
-		    {
-	          buf.Copy(KNullDesC);
-		    }
-		}
-	else if(iGeneralAttributes.iTraceOutput.CompareF(KTraceDebugOutput) == 0)
-		{
-		if(iState == MProfilerStatusObserver::EInitializing ||
-                iState == MProfilerStatusObserver::ERestarting )
-			{
-			buf.Copy(_L("Writing to debug output..."));
-			}
-		else if( iState == MProfilerStatusObserver::EIdle || 
-	             iState == MProfilerStatusObserver::EStopping ||
-		         iState == MProfilerStatusObserver::ERunning )
-			{
-			buf.Copy(_L("Wrote trace data to debug output"));
-			}
-		else
-		    {
-		    buf.Copy(KNullDesC);
-		    }
-		}
-	else
-	    {
-	    // should not reach this point
-        buf.Copy(KNullDesC);
-	    }
-    
-    return TPtrC(buf);	
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiModel::EditSamplerL(TSamplerAttributes& aItem)
-    {
-    // edit sampler specific settings i.e. attributes
-    TSamplerAttributes& newSettings = aItem;
-    TInt indexToReplace(iMainContainer->CurrentListBoxItemIndex());
-    
-    // create a new settings editor dialog
-    CProfilerSamplerSettingsViewDlg* dlg = CProfilerSamplerSettingsViewDlg::NewL(newSettings);
-    TInt returnValue = dlg->ExecuteLD(R_PROFILER_SAMPLER_SETTINGS_DIALOG);
-    
-    // save settings
-    aItem = newSettings;
-
-    // replace the old attribute container with saved values
-    iSamplerItemList->Delete(indexToReplace);
-    iSamplerItemList->InsertL(indexToReplace, newSettings);
-    
-    // save the settings to sampler item
-    RProfiler::SetSamplerAttributes(newSettings);
-    
-    // make sure that the title of the application is correct
-    CEikStatusPane* sp = iEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL(KAppName);
-
-    return returnValue;
-    }
-
-
-void CProfilerGuiModel::SamplerInfoL(TSamplerAttributes& aItem)
-    {
-    TBuf<64> header;
-    TBuf<256> info;
-    
-    _LIT(KSamplerStr, "Sampler Info");
-    
-//    CnvUtfConverter::ConvertToUnicodeFromUtf8(header, aItem.iName);
-    
-    header.Append(KSamplerStr);
-
-    CnvUtfConverter::ConvertToUnicodeFromUtf8(info, aItem.iDescription);
-
-    CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
-    //dialog->ExecuteLD(info);
-    dialog->PrepareLC( R_PROFILER_GUI_EMPTY_ABOUT_DIALOG );
-    dialog->SetHeaderText(header);
-    dialog->SetMessageTextL(info);
-    dialog->RunLD(); 
-
-    RefreshViewL(EFalse);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::StartAllSamplerItemsL(TProfilingMode aProfilingMode)
-    {
-    TBuf<256> activeWriterDes;
-    TBuf8<256> writer8;
-    
-    iState = MProfilerStatusObserver::EInitializing;
-    
-    RProfiler::TProfilingMode profilingMode = aProfilingMode == EProfilingModeTimed ? RProfiler::EProfilingModeTimed : RProfiler::EProfilingModeNormal;
-    
-    // update status pane to correspond the initializing mode
-    // prevent the control of sampler specific settings during the trace 
-    iMainContainer->SetDimmed(ETrue);
-    
-    // update status pane
-    iMainView->UpdateStatusPaneL(iState);
-    
-    // refresh view
-    RefreshViewL();
-    
-    // try to start profiling process through client-server interface
-    if(RProfiler::StartSampling(profilingMode) == KErrNotFound)
-        {
-        
-        // profiler stopped (e.g. from eshell) and must be restarted 
-        LaunchProfilerEngineL();
-        
-        // set general attributes
-        SaveGeneralSettingsL();
-        
-        // set sampler attributes
-        for(TInt i(0);i<iSamplerAttributes->Count();i++)
-            {
-            // set the attributes for each sampler loaded in the UI
-            RProfiler::SetSamplerAttributes(iSamplerAttributes->At(i));
-            }
-        
-        // try to launch sampling again
-        RProfiler::StartSampling(profilingMode);
-        }
-    
-    // get selected writer
-    RProfiler::GetActiveWriter(activeWriterDes);
-    CnvUtfConverter::ConvertFromUnicodeToUtf8(writer8, activeWriterDes);
-    
-    // check that output mode has not changed for a problem with trace file name
-    // problem cases:
-    // - trace file name and/or path false
-    // - disk full, cannot write to given location
-    // - false drive, e.g. x:
-    if(writer8.CompareF(iGeneralAttributes.iTraceOutput) != 0)
-        {
-        // save change also to general attributes
-        iGeneralAttributes.iTraceOutput.Copy(writer8);
-        // show an info popup showing the logging method
-        iMainContainer->ShowWriterInfoPopupL(KWarningNote);
-        }
-    else
-        {
-        // show an info popup showing the logging method
-        iMainContainer->ShowWriterInfoPopupL(KNullDesC);
-        }
-    
-    // update the view
-    RefreshViewL();    
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::DeleteAllSamplerItemsL()
-    {
-    DeleteAllSamplerItems();
-    
-    RefreshViewL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::StopAllSamplerItemsL()
-    {
-    // show an info popup showing the logging method
-    iMainContainer->ShowWriterInfoPopupL(KNullDesC);
-    
-    // Stop profiling process through CS session
-    RProfiler::StopSampling();
-    
-    RefreshViewL();
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::RefreshViewL(TBool aClearSelection)
-    {
-    // refresh the main list view
-    if (iMainContainer && iDrawState == EDrawStateMain && iMainContainer->ListBox())
-        {
-        // clear selections if any
-        iMainContainer->ListBox()->ClearSelection();
-        
-        // set item index to 0
-        if (aClearSelection)
-            iMainContainer->ListBox()->SetCurrentItemIndex(0); 
-        
-        // set text items
-        iMainContainer->SetListBoxTextArrayL(GenerateListBoxItemTextArrayL());
-        }
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::AppendToSamplerItemListL(TSamplerAttributes& aItem)
-    {
-    // append single sampler item into sampler item list
-    if (iSamplerItemList)
-        iSamplerItemList->AppendL( aItem );
-    else
-        User::Leave(KErrNotReady);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::DisableOrEnableFromSamplerItemListL(TInt aIndex)
-    {
-    if (iSamplerItemList)
-        {
-        if (iSamplerItemList->Count() > aIndex && aIndex >= 0)
-            {
-            TSamplerAttributes& attr = iSamplerItemList->At(aIndex);
-            if (attr.iEnabled)
-                {
-                attr.iEnabled = EFalse;
-                }
-            else if (!attr.iEnabled)
-                {
-                attr.iEnabled = ETrue;
-                }
-            // save settings to engine
-            RProfiler::SetSamplerAttributes(attr);
-            }
-        else
-            User::Leave(KErrNotFound);
-        }
-    else
-        {
-        User::Leave(KErrNotReady);
-        }
-
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiModel::SamplerItemCount() const
-    {
-    TInt count(0);
-    
-    if (iSamplerItemList)
-        count = iSamplerItemList->Count();
-    
-    return count;
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::DeleteAllSamplerItems()
-    {
-    // reset sampler array
-    iSamplerItemList->Reset();    
-    }  
-          
-// --------------------------------------------------------------------------------------------
-
-CDesCArray* CProfilerGuiModel::GenerateListBoxItemTextArrayL()
-    {
-    CDesCArray* textArray = new(ELeave) CDesCArrayFlat(64);
-    CleanupStack::PushL(textArray);
-
-    _LIT(KEntryTemplateRedIcon,   "1\t%S\t\t");
-    _LIT(KEntryTemplateGreenIcon, "2\t%S\t\t");
-    
-    TSamplerAttributes attr;
-    TInt itemCount(SamplerItemCount()); 
-    for (TInt i(0); i<itemCount; i++)
-        {
-        // add description from each entry
-        TBuf<512> textEntry;
-        TBuf<512> description; 
-
-        attr = iSamplerItemList->At(i);
-        
-        description.Copy(attr.iName);
-        
-        if (attr.iEnabled)
-            textEntry.Format(KEntryTemplateGreenIcon, &description);
-        else
-            textEntry.Format(KEntryTemplateRedIcon, &description);
-        
-        textArray->AppendL(textEntry);
-        }    
-    
-    CleanupStack::Pop(); //textArray
-    return textArray;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CProfilerGuiModel::GetSelectedItemEnabled()
-    {
-    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
-    
-    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
-        {
-        return iSamplerItemList->At(currentItemIndex).iEnabled;
-        }
-    return EFalse;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CProfilerGuiModel::GetSelectedItemHasSettings()
-    {
-    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
-    
-    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
-        {
-        if(iSamplerItemList->At(currentItemIndex).iItemCount != 0 || 
-                iSamplerItemList->At(currentItemIndex).iSampleRate != KErrNotFound)
-            {
-            return ETrue;
-            }
-        else
-            {
-            return EFalse;
-            }
-        }
-    return EFalse;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CProfilerGuiModel::GetSelectedItemHidden()
-    {
-    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
-    
-    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
-        {
-        if(iSamplerItemList->At(currentItemIndex).iIsHidden)
-            {
-            return ETrue;
-            }
-        else
-            {
-            return EFalse;
-            }
-        }
-    return EFalse;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiModel::EditSelectedSamplerL(TInt index)
-    {
-    TSamplerAttributes sampler;
-    if(SamplerItemCount() > index && index >= 0)
-        {
-        sampler = iSamplerItemList->At(index);
-        return EditSamplerL(sampler);
-        }
-    return KErrNone;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::SelectedSamplerInfoL(TInt index)
-    {
-    if(SamplerItemCount() > index && index >= 0)
-        {
-        SamplerInfoL(iSamplerItemList->At(index));
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::ShowItemActionMenuL()
-    {
-    TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
-    
-    if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
-        {
-        // show a query dialog    
-        TInt queryIndex(0);
-        CAknListQueryDialog* listQueryDlg = new(ELeave) CAknListQueryDialog(&queryIndex);
-        TInt resource = 0;
-        TSamplerAttributes sampler = iSamplerItemList->At(currentItemIndex);
-        
-        // check if sampler enabled
-        if(sampler.iEnabled)
-        	{
-        	resource = R_ITEM_ACTION_QUERY_ENABLED;
-            }
-        else
-        	{
-        	resource = R_ITEM_ACTION_QUERY_DISABLED;
-        	}
-        
-        // check if sampler plugin hidden => don't allow starting and stopping of sampling
-        if(sampler.iIsHidden)
-        	{
-        	resource = R_ITEM_ACTION_QUERY_HIDDEN_START_STOP;
-        	}
-        else if(( sampler.iItemCount == 0 && 
-        		sampler.iSampleRate == KErrNotFound ) && 
-        		sampler.iEnabled )
-            {
-            resource = R_ITEM_ACTION_QUERY_HIDDEN_SETTINGS_ENABLED;
-            }
-        else if(( sampler.iItemCount == 0 && 
-                sampler.iSampleRate == KErrNotFound ) && 
-                !sampler.iEnabled )
-            {
-            resource = R_ITEM_ACTION_QUERY_HIDDEN_SETTINGS_DISABLED;
-            }
-        
-        // execute query dialog with the given resource
-        if (listQueryDlg->ExecuteLD(resource))
-            {
-            if(!sampler.iIsHidden)
-            	{
-            	if(sampler.iItemCount != 0 || 
-            	        sampler.iSampleRate != KErrNotFound )
-            	    {
-                    // enable/disable sampler
-                    if (queryIndex == EItemActionMenuTypeEnable)
-                        {
-                        DisableOrEnableSelectedOrHighlightedItemsL();
-                        }
-                    // edit sampler settings
-                    else if (queryIndex == EItemActionMenuTypeEditSettings - 1)
-                        {
-                        EditSamplerL(sampler);
-                        }
-                    // info
-                    else if (queryIndex == EItemActionMenuTypeInfo - 1)
-                        {
-                        SamplerInfoL(sampler);
-                        }
-            	    }
-            	else
-            	    {
-                    // special case, use raw query indexes
-                     if (queryIndex == 0)
-                         {
-                         DisableOrEnableSelectedOrHighlightedItemsL();
-                         }
-                     else if (queryIndex == 1)
-                         {
-                         SamplerInfoL(sampler);
-                         }
-            	    }
-            	}
-            else
-				{
-				if(sampler.iItemCount != 0 || 
-				        sampler.iSampleRate != KErrNotFound)
-					{
-					// special case, use raw query indexes
-					// edit sampler settings
-					if (queryIndex == 0)
-						{
-						EditSamplerL(sampler);
-						}
-					// sampler info
-					else if (queryIndex == 1)
-						{
-						SamplerInfoL(sampler);
-						}
-					}
-				else
-					{
-					// only sampler info available if hidden and no setting items to be set
-					if (queryIndex == 0)
-						{
-						SamplerInfoL(sampler);
-						}
-					
-					}
-				}
-            }
-        }
-    }
-
-void CProfilerGuiModel::DisableOrEnableSelectedOrHighlightedItemsL()
-    {
-    const CArrayFix<TInt>* selectionIndexes = iMainContainer->ListBoxSelectionIndexes();
-
-    // by default use selected items
-    if (selectionIndexes && selectionIndexes->Count() > 0)
-        {
-        TInt ref(0);
-        TKeyArrayFix key(0, ECmpTUint16);
-        TInt index(0);
-
-        for (TInt i=0; i<SamplerItemCount(); i++)
-            {
-            ref = i;
-
-            if (selectionIndexes->Find(ref, key, index) == 0)  
-                {
-                DisableOrEnableFromSamplerItemListL(i);
-                }
-            }
-        
-        RefreshViewL(EFalse);
-        }
-    
-    // or if none selected, use the current item index
-    else
-        {
-        TInt currentItemIndex = iMainContainer->CurrentListBoxItemIndex();
-        
-        if (SamplerItemCount() > currentItemIndex && currentItemIndex >= 0)
-            {
-            DisableOrEnableFromSamplerItemListL(currentItemIndex);
-            
-            RefreshViewL(EFalse);
-            }
-        }  
-    }
-
-void CProfilerGuiModel::LoadPluginsL()
-	{
-    // get samplers from Profiler Engine (client-server session) 
-	// and add the to the samplers list for the first time
-    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - get sampler plugins"));
-    TInt err = RProfiler::GetSamplerAttributes(*iSamplerAttributes);
-    
-    // check if engine provided a list of samplers
-    if( err != KErrNone )
-        {
-        // could not get samplers from engine
-        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - failed to connect engine"));
-        }
-    else
-        {
-        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - adding new samplers into view"));
-        AddNewSamplersL(*iSamplerAttributes);
-        }
-    
-    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - exit"));
-	}
-
-// --------------------------------------------------------------------------------------------
-
-TInt CProfilerGuiModel::LoadGeneralSettingsL()
-    {
-    // local variable for getting saved settings from profiler engine
-    TGeneralAttributes generalAttr;
-    TInt err(KErrNone);
-    
-    // before loading saved settings (from settings file) set the default values 
-    iGeneralAttributes.iTraceOutput.Copy(KTraceOutput);
-    iGeneralAttributes.iTraceFilePrefix.Copy(KProfilerDefaultPrefix);
-    iGeneralAttributes.iSaveFileDrive.Copy(KProfilerDefaultDrive);
-    iGeneralAttributes.iTimedSamplingPeriod = KDefaultTimedSamplingPeriod;
-    
-    // request to 
-    err = RProfiler::GetGeneralAttributes(generalAttr);
-    
-    // check that request succesfull
-    if( err != KErrNone )
-        {
-        // could not connect profiler engine, use 
-        return err;
-        }
-    
-    // check if saved settings different than the default
-    if(generalAttr.iTraceOutput.MatchF(iGeneralAttributes.iTraceOutput) == KErrNotFound)
-        {
-        iGeneralAttributes.iTraceOutput.Copy(generalAttr.iTraceOutput);
-        }
-
-    if(generalAttr.iTraceFilePrefix.MatchF(iGeneralAttributes.iTraceFilePrefix) == KErrNotFound)
-        {
-        iGeneralAttributes.iTraceFilePrefix.Copy(generalAttr.iTraceFilePrefix);
-        }
-
-    if(generalAttr.iSaveFileDrive.MatchF(iGeneralAttributes.iSaveFileDrive) == KErrNotFound)
-        {
-        iGeneralAttributes.iSaveFileDrive.Copy(generalAttr.iSaveFileDrive);
-        }
-    
-    if( generalAttr.iTimedSamplingPeriod > 0)
-        {
-        iGeneralAttributes.iTimedSamplingPeriod = generalAttr.iTimedSamplingPeriod;
-        }
-    
-    return err;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::SaveGeneralSettingsL()
-    {
-    TInt err(KErrNone);
-    
-    // save general attributes to Profiler Engine
-    err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
-    
-    // check if save failed
-    if(err == KErrNotFound)
-        {
-        // profiler stopped (e.g. from eshell) and must be restarted 
-        LaunchProfilerEngineL();
-        
-        err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
-        if(err != KErrNone)
-            {
-            // leave no use to continue
-            User::Leave(err);
-            }
-        }
-    }
-
-void CProfilerGuiModel::SetMainView(CProfilerGuiMainView* aMainView)
-    {
-    iMainView = aMainView;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiModel::HandleProfilerStatusChange( KProfilerStatus aStatus )
-    {
-    iState = aStatus;
-    if( aStatus == EIdle )
-        {
-        iMainContainer->ShowWriterInfoPopupL(KNullDesC);
-        // set plugin list back to enabled
-        iMainContainer->SetDimmed(EFalse);
-        }
-    TRAP_IGNORE(iMainView->UpdateStatusPaneL(aStatus));
-    }
-
-void CProfilerGuiModel::HandleProfilerErrorL( TInt aError )
-    {
-    TBuf<64> errorMsg;
-    _LIT(KErrorMessage, "Error: ");
-    _LIT(KNoMemory, "Cannot write to file, check settings");
-    
-    errorMsg.Copy(KErrorMessage);
-    // message from pwr sampler
-    if( aError < -1000 )
-        {
-        errorMsg.Append(_L("Stop other power measurement tools!"));
-        }
-    else if( aError == KErrAlreadyExists || aError == 11 )
-        {
-        errorMsg.Append(_L("Close old Profiler before start!"));
-        }
-    else if( aError == KErrNotReady )
-        {
-        errorMsg.Append(_L("Memory card removed, failed to write!"));
-        }
-    else if( aError == KErrPathNotFound )
-        {
-        errorMsg.Append(_L("Given trace data location does not exist"));
-        }
-    else
-        {
-        if( aError == KErrNoMemory || 
-                aError == KErrOverflow || 
-                aError == KErrDirFull || 
-                aError == KErrDiskFull || 
-                aError == KErrNotReady )
-            {
-            errorMsg.Append(KNoMemory);
-            }
-        else
-            {
-            errorMsg.Append(_L("code: "));
-            errorMsg.AppendNum(aError);
-            }
-        }
-    // simply show an error note
-    CAknErrorNote* note = new(ELeave) CAknErrorNote();
-    note->ExecuteLD(errorMsg);
-    
-    // set state idle in all error cases
-    iState = MProfilerStatusObserver::EIdle;
-    
-    // update status pane
-    iMainView->UpdateStatusPaneL(iState);
-    
-    // set plugin list back to enabled
-    iMainContainer->SetDimmed(EFalse);
-    
-    // refresh and set menus etc. in correct state
-    RefreshViewL();
-    }
-
-// End of File
--- a/piprofilerui/ui/avkon/src/profiler_gui_samplersettingsviewdlg.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,479 +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 FILES
-#include "profiler_gui_samplersettingsviewdlg.h"
-#include "profiler_gui_model.h"
-#include "profiler_gui.hrh"
-#include "profiler_gui_std.h"
-#include <piprofilerui.rsg>
-
-#include <aknsettingitemlist.h>
-#include <CAknMemorySelectionSettingItem.h> 
-#include <aknlists.h>
-#include <akntitle.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h> 
-
-// LITERALS
-_LIT8(KCPUSamplerName, "gpp");
-_LIT(KEmptySettingItem, "");
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CProfilerSamplerSettingsViewDlg* CProfilerSamplerSettingsViewDlg::NewL(TSamplerAttributes& aSettings)
-    {
-    CProfilerSamplerSettingsViewDlg* self = new(ELeave) CProfilerSamplerSettingsViewDlg(aSettings);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerSamplerSettingsViewDlg::~CProfilerSamplerSettingsViewDlg()
-    {
-    // restore default navi pane
-    if(iNaviContainer)
-        iNaviContainer->Pop();
-    
-    if (iSettingItemArray)
-        {
-        iSettingItemArray->ResetAndDestroy();
-        delete iSettingItemArray; 
-        }
-    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerSamplerSettingsViewDlg::CProfilerSamplerSettingsViewDlg(TSamplerAttributes& aSettings) 
-	: 	iSettings(aSettings)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::ConstructL()
-    {
-    // construct a menu bar
-    CAknDialog::ConstructL(R_PROFILER_SAMPLER_SETTINGS_MENUBAR);
-   
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    
-    // set empty navi pane label
-    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
-    iNaviContainer->PushDefaultL();
-    
-    TBuf<64> settingsTitle;
-
-    settingsTitle.Zero();
-    settingsTitle.Copy(iSettings.iName);
-    
-    // set title text
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL( settingsTitle );
-
-    iItemCount = iSettings.iItemCount;
-    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-            ShowSettingPageL(EFalse);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
-    {
-    iListBox->SetCurrentItemIndex(0);
-
-    SetVisibilitiesOfSettingItemsL();   
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::ProcessCommandL(TInt aCommandId)
-    {
-    CAknDialog::ProcessCommandL(aCommandId);
-
-    switch (aCommandId)
-        {
-        case EProfilerGuiCmdSettingsChange:
-            ShowSettingPageL(ETrue);
-            break;
-        case EProfilerGuiCmdSettingsExit:
-            TryExitL(EAknCmdExit);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CProfilerSamplerSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-
-    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
-    }    
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::PreLayoutDynInitL()
-    {
-    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EProfilerSamplerSettingItemList) );
-    iListBox->SetMopParent(this);
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    iListBox->SetListBoxObserver(this);
-
-    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
-
-    CTextListBoxModel* model = iListBox->Model();
-    model->SetItemTextArray(iSettingItemArray);
-    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
-
-    UpdateListBoxL();    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CProfilerSamplerSettingsViewDlg::OkToExitL(TInt aButtonId)
-    {
-    // save all settings when exiting, only numeric values are needed to saved since copied from TBuf
-    for(TInt i(1);i<iItemCount+1;i++)
-    	{
-    	if(iSettingItemArray->At(i)->IsHidden() == EFalse)
-    	    {
-            switch(i)
-    	        {
-                case 1:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem1.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem1.iValue.Num(iItemBuf[i]);
-                        }
-                    break;
-                    }
-                case 2:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem2.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem2.iValue.Num(iItemBuf[i]);
-                        }
-                    break;
-                    }
-                case 3:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem3.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem3.iValue.Num(iItemBuf[i]);
-                        }
-                    break;
-                    }
-                case 4:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem4.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem4.iValue.Num(iItemBuf[i]);
-                        }
-
-                    break;
-                    }
-                case 5:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem5.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem5.iValue.Num(iItemBuf[i]);
-                        }
-
-                    break;
-                    }
-                case 6:
-                    {
-                    // check if settings value type integer
-                    if(iSettings.iSettingItem6.iType == TSettingItem::ESettingItemTypeInt)
-                        {
-                        iSettings.iSettingItem6.iValue.Num(iItemBuf[i]);
-                        }
-
-                    break;
-                    }
-    	        }
-    	    }
-    	}
-	return CAknDialog::OkToExitL(aButtonId);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
-    {
-    TInt listIndex = iListBox->CurrentItemIndex();
-    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
-    CAknSettingItem* item = iSettingItemArray->At(realIndex);
-    item->EditItemL(aCalledFromMenu);
-    item->StoreL();
-    SetVisibilitiesOfSettingItemsL();
-    DrawNow();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
-    {
-    if (iSettingItemArray->Count() > 0)
-        {
-        if(iSettings.iSampleRate > 0)
-        	{
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQuerySampleRate])->SetHidden(EFalse);
-        	}
-        else
-        	{
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQuerySampleRate])->SetHidden(ETrue);
-        	}
-        if(iItemCount>0)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem1])->SetHidden(EFalse);
-        if(iItemCount>1)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem2])->SetHidden(EFalse);
-        if(iItemCount>2)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem3])->SetHidden(EFalse);
-        if(iItemCount>3)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem4])->SetHidden(EFalse);
-        if(iItemCount>4)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem5])->SetHidden(EFalse);
-        if(iItemCount>5)
-        	((*iSettingItemArray)[EProfilerGuiGenericSamplerQueryItem6])->SetHidden(EFalse);
-
-        iSettingItemArray->RecalculateVisibleIndicesL();
-        iListBox->HandleItemAdditionL();
-        iListBox->UpdateScrollBarsL();
-        }
-    }   
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::UpdateListBoxL()
-    {
-    iSettingItemArray->ResetAndDestroy();
-    
-    // create items
-    TInt ordinal(0);
-    
-    AddSettingItemL(EProfilerGuiGenericSamplerQuerySampleRate,
-					R_SAMPLE_RATE_SETTING_TITLE,
-                    R_SAMPLER_RATE_SETTING_PAGE,
-                    NULL,
-                    ordinal++);    
-    
-    if(iItemCount>0)
-	AddSettingItemL(EProfilerGuiGenericSamplerQueryItem1,
-					R_ITEM1_SETTING_TITLE,
-					NULL,
-					NULL,
-					ordinal++);
-    if(iItemCount>1)
-    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem2,
-					R_ITEM2_SETTING_TITLE,
-					NULL,
-                    NULL,
-                    ordinal++);
-    if(iItemCount>2)
-    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem3,
-					R_ITEM3_SETTING_TITLE,
-					NULL,
-                    NULL,
-                    ordinal++);
-    if(iItemCount>3)
-    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem4,
-					R_ITEM4_SETTING_TITLE,
-					NULL,
-                    NULL,
-                    ordinal++);
-    if(iItemCount>4)
-    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem5,
-					R_ITEM5_SETTING_TITLE,
-					NULL,
-                    NULL,
-                    ordinal++);
-    if(iItemCount>5)
-    AddSettingItemL(EProfilerGuiGenericSamplerQueryItem6,
-					R_ITEM6_SETTING_TITLE,
-					NULL,
-                    NULL,
-                    ordinal++);
-
-    SetVisibilitiesOfSettingItemsL(); 
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CAknSettingItem* CProfilerSamplerSettingsViewDlg::GetSettingItemL(TSettingItem& aItem, TInt aIndex, TInt& aSettingPageResource)
-    {
-    CAknSettingItem* settingItem = NULL;
-    
-    // set default setting page dialog style resource
-    aSettingPageResource = R_GENERIC_TEXT_SETTING_PAGE;
-    
-    // check if setting item type integer
-    if(aItem.iType == TSettingItem::ESettingItemTypeInt)
-        {
-        TLex* lex = new TLex(aItem.iValue);
-        // check if value valid
-        if(lex->Val(iItemBuf[aIndex]) != KErrNone)
-            {
-            // if value not valid set to 0 
-            iItemBuf[aIndex] = 0;
-            }
-        settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aIndex, iItemBuf[aIndex]);
-        aSettingPageResource = R_NUMERIC_SETTING_PAGE;
-        delete lex;
-        return settingItem;
-        }
-    else    // else manipulate as a text setting
-        {
-        settingItem = new(ELeave) CAknTextSettingItem(aIndex, aItem.iValue);
-        settingItem->SetEmptyItemTextL(KEmptySettingItem); 
-        return settingItem;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerSamplerSettingsViewDlg::AddSettingItemL(TInt aId,
-                                                 TInt aTitleResource,
-                                                 TInt aSettingPageResource,
-                                                 TInt aAssociatedResource,
-                                                 TInt aOrdinal)
-    {
-    // create a setting item
-    CAknSettingItem* settingItem = NULL;
-
-    TBuf<KMaxSettingUITextLength> ptr;
-    switch(aId)
-        {
-        case EProfilerGuiGenericSamplerQuerySampleRate:
-            {
-            settingItem = new (ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iSampleRate);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem1:
-            {
-            ptr.Copy(iSettings.iSettingItem1.iUIText);
-            settingItem = GetSettingItemL(iSettings.iSettingItem1, aId, aSettingPageResource);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem2:
-            {
-            ptr.Copy(iSettings.iSettingItem2.iUIText); 
-            settingItem = GetSettingItemL(iSettings.iSettingItem2, aId, aSettingPageResource);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem3:
-            {
-            ptr.Copy(iSettings.iSettingItem3.iUIText);
-            settingItem = GetSettingItemL(iSettings.iSettingItem3, aId, aSettingPageResource);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem4:
-            {
-            ptr.Copy(iSettings.iSettingItem4.iUIText); 
-            settingItem = GetSettingItemL(iSettings.iSettingItem4, aId, aSettingPageResource);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem5:
-            {
-            ptr.Copy(iSettings.iSettingItem5.iUIText);
-            settingItem = GetSettingItemL(iSettings.iSettingItem5, aId, aSettingPageResource);
-            break;
-            }
-        case EProfilerGuiGenericSamplerQueryItem6:
-            {
-            ptr.Copy(iSettings.iSettingItem6.iUIText); 
-            settingItem = GetSettingItemL(iSettings.iSettingItem6, aId, aSettingPageResource);
-            break;
-            }
-		default:
-			{
-			// Id not supported
-			User::Leave(KErrNotSupported);
-			break;
-			}
-        }
-
-    CleanupStack::PushL(settingItem);
-
-    // get title text
-    HBufC* itemTitle;
-    
-    if( ptr.Compare(KNullDesC) == 0 )
-        {
-        itemTitle = StringLoader::LoadLC(aTitleResource);
-        
-        // special case: check if CPU sampler
-        if(iSettings.iShortName.CompareF(KCPUSamplerName) == 0)
-            {
-            // change setting page using different value range, since > 10000 ms rates are too big
-            aSettingPageResource = R_CPU_SAMPLER_RATE_SETTING_PAGE;
-            }
-
-        // construct the setting item
-        settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
-                                EAknCtPopupSettingList, NULL, aAssociatedResource);
-        // append the setting item to settingitem array
-        iSettingItemArray->InsertL(aOrdinal, settingItem);
-
-        CleanupStack::PopAndDestroy(); //itemTitle
-        }
-    else
-        {
-        // construct the setting item
-        settingItem->ConstructL(EFalse, aOrdinal, ptr, NULL, aSettingPageResource,
-                                EAknCtPopupSettingList, NULL, aAssociatedResource);
-
-        // append the setting item to settingitem array
-        iSettingItemArray->InsertL(aOrdinal, settingItem);
-        }
-
-    CleanupStack::Pop(); //settingItem
-    }
-
-// --------------------------------------------------------------------------------------------
-// End of File
-
--- a/piprofilerui/ui/avkon/src/profiler_gui_settingsviewdlg.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,386 +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 FILES
-#include "profiler_gui_settingsviewdlg.h"
-#include "profiler_gui_model.h"
-#include "profiler_gui.hrh"
-#include "profiler_gui_std.h"
-#include <piprofilerui.rsg>
-
-#include <aknsettingitemlist.h>
-#include <CAknMemorySelectionSettingItem.h> 
-#include <aknlists.h>
-#include <akntitle.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h> 
-
-// LITERALS
-_LIT8(KDebugOutput, "debug_output");
-_LIT8(KFileSystem, "file_system");
-_LIT(KEmptySettingItem, "");
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-CProfilerGuiSettingsViewDlg* CProfilerGuiSettingsViewDlg::NewL(TGeneralAttributes& aSettings)
-    {
-    CProfilerGuiSettingsViewDlg* self = new(ELeave) CProfilerGuiSettingsViewDlg(aSettings);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiSettingsViewDlg::~CProfilerGuiSettingsViewDlg()
-    {
-    // restore default navi pane
-    if(iNaviContainer)
-        iNaviContainer->Pop();
-    
-    if (iSettingItemArray)
-        {
-        iSettingItemArray->ResetAndDestroy();
-        delete iSettingItemArray; 
-        }
-    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CProfilerGuiSettingsViewDlg::CProfilerGuiSettingsViewDlg(TGeneralAttributes& aSettings) : iSettings(aSettings)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::ConstructL()
-    {
-    // construct a menu bar
-    CAknDialog::ConstructL(R_PROFILER_GUI_SETTINGS_MENUBAR);
-   
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    
-    // set empty navi pane label
-    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
-    iNaviContainer->PushDefaultL();
-    
-    // set title text
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL( _L("Settings") );
-
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-            ShowSettingPageL(EFalse);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::TabChangedL(TInt /*aIndex*/)
-    {
-    iListBox->SetCurrentItemIndex(0);
-
-    SetVisibilitiesOfSettingItemsL();   
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::ProcessCommandL(TInt aCommandId)
-    {
-    CAknDialog::ProcessCommandL(aCommandId);
-
-    switch (aCommandId)
-        {
-        case EProfilerGuiCmdSettingsChange:
-            ShowSettingPageL(ETrue);
-            break;
-        case EProfilerGuiCmdSettingsExit:
-            TryExitL(EAknCmdExit);
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CProfilerGuiSettingsViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    /*
-    if (iTabGroup == NULL)
-        {
-        return EKeyWasNotConsumed;
-        }
-        */
-/*
-    TInt active = iTabGroup->ActiveTabIndex();
-    TInt count = iTabGroup->TabCount();
-
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyLeftArrow:
-            if (active > 0)
-                {
-                active--;
-                iTabGroup->SetActiveTabByIndex(active);
-                TabChangedL(active); 
-                }
-            break;
-        
-        case EKeyRightArrow:
-            if((active + 1) < count)
-                {
-                active++;
-                iTabGroup->SetActiveTabByIndex(active);
-                TabChangedL(active); 
-                }
-            break;
-        }
-*/
-    return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
-    }    
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::PreLayoutDynInitL()
-    {
-    iListBox = static_cast<CAknSettingStyleListBox*>( Control(EProfilerGuiSettingItemList) );
-    iListBox->SetMopParent(this);
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    iListBox->SetListBoxObserver(this);
-
-    iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
-
-    CTextListBoxModel* model = iListBox->Model();
-    model->SetItemTextArray(iSettingItemArray);
-    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
-
-    UpdateListBoxL();    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CProfilerGuiSettingsViewDlg::OkToExitL(TInt aButtonId)
-    {
-    // save settings to iSettings before exiting
-    
-    // check if trace output target changed
-    if(iTraceOutput == EOutputToDebugPort)
-        {
-        iSettings.iTraceOutput.Copy(KDebugOutput);
-        }
-    else
-        {
-        iSettings.iTraceOutput.Copy(KFileSystem);
-        }
-    
-    // save trace file prefix
-    if(iFilePrefix.CompareF(KNullDesC) != 0)
-        {
-        CnvUtfConverter::ConvertFromUnicodeToUtf8(iSettings.iTraceFilePrefix, iFilePrefix);
-        }
-    
-    // save the drive 
-    if(iSaveDrive.CompareF(KNullDesC) != 0)
-        {
-        CnvUtfConverter::ConvertFromUnicodeToUtf8(iSettings.iSaveFileDrive, iSaveDrive);
-        }
-    
-    return CAknDialog::OkToExitL(aButtonId);
-    }
-
-
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
-    {
-    TInt listIndex = iListBox->CurrentItemIndex();
-    TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
-    CAknSettingItem* item = iSettingItemArray->At(realIndex);
-    item->EditItemL(aCalledFromMenu);
-    item->StoreL();
-    SetVisibilitiesOfSettingItemsL();
-    DrawNow();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::SetVisibilitiesOfSettingItemsL()
-    {
-
-    // check if setting item array contains more than 0 items
-    if (iSettingItemArray->Count() > 0)
-        {
-//        ((*iSettingItemArray)[ESettingListItemPluginNameMode])->SetHidden(ETrue);
-        ((*iSettingItemArray)[ESettingListItemPluginTraceOutput])->SetHidden(EFalse);
-        if(iTraceOutput == EOutputToDebugPort)
-        	{
-        	((*iSettingItemArray)[ESettingListItemPluginSaveFileDrive])->SetHidden(ETrue);
-        	((*iSettingItemArray)[ESettingListItemPluginTraceFilePrefix])->SetHidden(ETrue);
-        	}
-        else 
-        	{
-        	((*iSettingItemArray)[ESettingListItemPluginSaveFileDrive])->SetHidden(EFalse);
-        	((*iSettingItemArray)[ESettingListItemPluginTraceFilePrefix])->SetHidden(EFalse);
-        	}
-//        ((*iSettingItemArray)[ESettingListItemPluginTraceMode])->SetHidden(ETrue);
-
-        iSettingItemArray->RecalculateVisibleIndicesL();
-        iListBox->HandleItemAdditionL();
-        iListBox->UpdateScrollBarsL();
-        }
-    }   
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::UpdateListBoxL()
-    {
-    iSettingItemArray->ResetAndDestroy();
-
-    // create items
-    TInt ordinal(0);
-    
-//    AddSettingItemL(ESettingListItemPluginNameMode,
-//                    R_PLUGIN_NAME_MODE_SETTING_TITLE,
-//                    R_PLUGIN_NAME_MODE_SETTING_PAGE,
-//                    R_PLUGIN_NAME_MODE_SETTING_TEXTS,
-//                    ordinal++);    
-
-    AddSettingItemL(ESettingListItemPluginTraceOutput,
-                    R_TRACE_OUTPUT_SETTING_TITLE,
-                    R_TRACE_OUTPUT_SETTING_PAGE,
-                    R_TRACE_OUTPUT_SETTING_TEXTS,
-                    ordinal++);
-    
-    AddSettingItemL(ESettingListItemPluginSaveFileDrive,
-                    R_SAVE_FILE_DRIVE_SETTING_TITLE,
-                    R_SAVE_FILE_DRIVE_SETTING_PAGE,
-                    NULL, //R_SAVE_FILE_DRIVE_SETTING_TEXTS,
-                    ordinal++);
-
-    AddSettingItemL(ESettingListItemPluginTraceFilePrefix,
-                    R_SAVE_FILE_PREFIX_SETTING_TITLE,
-                    R_SAVE_FILE_PREFIX_SETTING_PAGE,
-                    NULL,
-                    ordinal++);
-    
-    AddSettingItemL(ESettingListItemPluginSamplingTime,
-                    R_TIMED_SAMPLING_PERIOD_SETTING_TITLE,
-                    R_TIMED_SAMPLING_PERIOD_SETTING_PAGE,
-                    NULL,
-                    ordinal++);
-    
-    
-
-//    AddSettingItemL(ESettingListItemPluginTraceMode,
-//                    R_TRACE_MODE_SETTING_TITLE,
-//                    R_TRACE_MODE_SETTING_PAGE,
-//                    R_TRACE_MODE_SETTING_TEXTS,
-//                    ordinal++);
-
-    SetVisibilitiesOfSettingItemsL(); 
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CProfilerGuiSettingsViewDlg::AddSettingItemL(TInt aId,
-                                                 TInt aTitleResource,
-                                                 TInt aSettingPageResource,
-                                                 TInt aAssociatedResource,
-                                                 TInt aOrdinal)
-    {
-    // create a setting item
-    CAknSettingItem* settingItem = NULL;
-    
-    switch (aId)
-        {
-
-        case ESettingListItemPluginSaveFileDrive:
-            {
-            CnvUtfConverter::ConvertToUnicodeFromUtf8(iSaveDrive, iSettings.iSaveFileDrive);
-            settingItem = new(ELeave) CAknTextSettingItem(aId, iSaveDrive);
-            settingItem->SetEmptyItemTextL(KEmptySettingItem); 
-            break;
-            }
-        case ESettingListItemPluginTraceOutput:
-            if(iSettings.iTraceOutput.MatchF(KDebugOutput) != KErrNotFound)
-                {
-                iTraceOutput = EOutputToDebugPort;
-                }
-            else
-                {
-                iTraceOutput = EOutputToFileSystem;
-                }
-            settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iTraceOutput); 
-
-            break;
-
-        case ESettingListItemPluginTraceFilePrefix:
-            {
-            CnvUtfConverter::ConvertToUnicodeFromUtf8(iFilePrefix, iSettings.iTraceFilePrefix);
-            settingItem = new(ELeave) CAknTextSettingItem(aId, iFilePrefix);
-            settingItem->SetEmptyItemTextL(KEmptySettingItem); 
-            break;
-            }
-        case ESettingListItemPluginSamplingTime:
-            {
-            settingItem = new(ELeave) CAknIntegerEdwinSettingItem(aId, iSettings.iTimedSamplingPeriod);
-            break;
-            }
-        default:
-            User::Panic(_L("NotSetItem"), 50);
-            break;
-
-        }
-        
-    CleanupStack::PushL(settingItem);
-
-    // get title text
-    HBufC* itemTitle = StringLoader::LoadLC(aTitleResource);
-
-    // construct the setting item
-    settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
-                            EAknCtPopupSettingList, NULL, aAssociatedResource);
-    
-    // append the setting item to settingitem array
-    iSettingItemArray->InsertL(aOrdinal, settingItem);
-
-    CleanupStack::PopAndDestroy(); //itemTitle
-    CleanupStack::Pop(); //settingItem
-    }
-
-// End of File
-
--- a/piprofilerui/ui/hb/hb.pro	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-#
-# Copyright (c) 2010 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: 
-#
-#
-
-
-TEMPLATE = app
-TARGET = PIProfilerUI
-DEPENDPATH += ./src
-INCLUDEPATH += inc
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-load(hb.prf) 
-symbian:CONFIG -= symbian_i18n 
-
-# Input
-HEADERS += 	./inc/pimainview.h \
-			./inc/piprofilerengineprivate.h \
-			./inc/pluginattributes.h \
-			./inc/notifications.h \
-			./inc/pisettingsview.h \
-			./inc/pimainwindow.h \
-			./inc/generalattributes.h \
-			./inc/piprofilerengine.h
-SOURCES += 	./src/pimainview.cpp \
-			./src/piprofilerengineprivate.cpp \
-			./src/main.cpp \
-			./src/pluginattributes.cpp \
-			./src/notifications.cpp \
-			./src/pisettingsview.cpp \
-			./src/pimainwindow.cpp \
-			./src/piprofilerengine.cpp 
-			
-			
-RESOURCES += piprofiler.qrc
-
-
-symbian: {
-    TARGET.UID2 = 0x100039CE
-    TARGET.UID3 = 0x2001E5AE
-    
-    BLD_INF_RULES.prj_exports += "./rom/piprofilerui_hb.iby \
-    	CORE_IBY_EXPORT_PATH(tools,piprofilerui.iby)"
-    
-	TARGET.CAPABILITY = ALL -TCB
-
-	LIBS += -lcharconv -lbafl -lsysutil -lefsrv
-    
-    ICON = ../icons/qgn_menu_piprofilerui.svg 
-    
-} else {
-    error("Only Symbian supported!")
-}
\ No newline at end of file
--- a/piprofilerui/ui/hb/inc/generalattributes.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef GENERALATTRIBUTES_H_
-#define GENERALATTRIBUTES_H_
-/*
- * 
- * GeneralAttributes class definition, internal settings format
- *  
- */
-class GeneralAttributes
-{
-public:
-    QString mTraceOutput;
-    QString mTraceFilePrefix;
-    QString mSaveFileDrive;
-    int mTimedSamplingPeriod;
-};
-
-#endif /* GENERALATTRIBUTES_H_ */
--- a/piprofilerui/ui/hb/inc/notifications.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef NOTIFICATIONS_H_
-#define NOTIFICATIONS_H_
-
-#include <QString> 
-
-/**
- * Notifications class for viewing notification messages.
- */
-
-class Notifications
-{
-public:
-
-    static void showInformationNote(const QString &text);
-    static void showErrorNote(const QString &text);
-    static void showMessageBox(const QString &text);
-
-private:
-
-};
-
-#endif // NOTIFICATIONS_H_
--- a/piprofilerui/ui/hb/inc/pimainview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,206 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-
-#ifndef PIMAINVIEW_H
-#define PIMAINVIEW_H
-
-#include <hbview.h>
-#include <hbicon.h>
-
-#include "pluginattributes.h"
-#include "piprofilerengine.h"
-
-class HbAction;
-class HbMainWindow;
-class HbDocumentLoader;
-class HbApplication;
-class HbLabel;
-class HbWidget;
-class HbListWidget;
-class HbListWidgetItem;
-class HbMenu;
-class PISettingsView;
-class PIMainWindow;
-class HbDialog;
-
-class PIMainView: public HbView
-{
-Q_OBJECT
-
-public:
-
-    /**
-     * Constructor
-     */
-    PIMainView();
-
-    /**
-     * Destructor
-     */
-    ~PIMainView();
-
-    /**
-     * Initializes view
-     */
-    void init(PIMainWindow *mainWindow, HbApplication *app, HbDocumentLoader &loader,
-        PIProfilerEngine *engine);
-
-    /**
-     * Sets and updates new plug-in list into main view
-     * @param pluginList List of plug-ins
-     */
-    void setPluginList(QList<PluginAttributes> *pluginList);
-
-private:
-
-    /**
-     * connects signals and slots
-     */
-    void connectSignalsAndSlots(HbApplication* app);
-
-    /**
-     * Loads all UI items from xml file
-     */
-    void loadItemsFromResources(HbDocumentLoader &loader);
-
-    /**
-     * Updates plug-in list according to member variable mPluginList
-     */
-    void updatePlugInLists();
-
-    /**
-     * Gets plug-in attributes for plug-in which UID number is defined in parameter
-     * If plugin for UID if not found, empty pluginattributes variable is returned
-     */
-    PluginAttributes getPluginAttributes(int uid);
-
-    /**
-     * Shows profiling note
-     */
-    void showProfilingNote();
-
-private slots:
-
-    /**
-     * Slot that is called when profiling status is changed.
-     * Method updated text in popup that is shown in the screen
-     */
-    void profilingStatusChanged(ProfilerEngineStatus status, const QString &text = 0,
-        ProfilingMode profilingMode = PI_PROFILINGMODENORMAL, ProfilingOutput output =
-            PI_FILE_OUTPUT);
-
-    /**
-     * shows about popup
-     */
-    void showAboutPopup();
-
-    /**
-     * opens settings view
-     */
-    void openSettingsView();
-
-    /**
-     * Enables or disables plug-in from plug-in list. If parameter is zero, selected 
-     * plug-in from plug-in list is enabled/disabled.
-     */
-    void enableOrDisablePlugin(HbListWidgetItem *widget = 0);
-
-    /**
-     * Shows context menu for list widget
-     */
-    void showContexMenu(HbListWidgetItem *widget, const QPointF &point);
-
-    /**
-     * Opens sampler info for plug-in that is selected.
-     */
-    void openSampleInfo();
-
-    /**
-     * sets context menu pointer to zero
-     */
-
-    void contextMenuClosed();
-
-    /**
-     * Shows profiling-popup and starts profiling
-     */
-    void startProfiling();
-
-    /**
-     * Shows profiling popup and starts profiling
-     */
-    void startTimedProfiling();
-
-    /**
-     * Stops profiling
-     */
-    void stopProfiling();
-
-    /**
-     * Updates "Start timed profiling for xx seconds" text according to settings
-     */
-    void updateTimedProfilingText();
-
-    /**
-     * Exits and leaves profiling on
-     */
-    void exitAndLeaveProfilingOn();
-
-    /**
-     * Opens plug-in specific settings for selected plug-in
-     */
-    void openPluginSpecificSettings();
-private:
-
-    // main application
-    HbApplication *application;
-
-    // main window
-    PIMainWindow *mMainWindow;
-
-    // engine pointer
-    PIProfilerEngine *mEngine;
-
-    // list of plug-ins
-    QList<PluginAttributes> *mPluginList;
-
-    // context menu
-    HbMenu *mContextMenu;
-
-    // Actions
-    HbAction *mActionExit;
-    HbAction *mActionExitAndLeaveProfilingOn;
-    HbAction *mActionAbout;
-    HbAction *mActionStartProfiling;
-    HbAction *mActionStartTimedProfiling;
-    HbAction *mActionSettings;
-    HbAction *mActionStopProfiling;
-
-    // plug-in list widget
-    HbListWidget *mListPlugins;
-
-    // Profiling note
-    HbDialog *mProfilingNote;
-
-    // Icons for enabled and disabled plug-ins
-    HbIcon mIconEnabled;
-    HbIcon mIconDisabled;
-
-};
-
-#endif // PIMAINVIEW_H
--- a/piprofilerui/ui/hb/inc/pimainwindow.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PIPROFILERMAINWINDOW_H_
-#define PIPROFILERMAINWINDOW_H_
-
-// System includes
-#include <qobject.h>
-#include <hbmainwindow.h>
-
-// User includes
-#include "pluginattributes.h"
-
-// Forward declarations
-class PIMainView;
-class PISettingsView;
-class PIProfilerEngine;
-class HbDocumentLoader;
-class HbApplication;
-
-// Class declaration
-class PIMainWindow: public HbMainWindow
-{
-Q_OBJECT
-public:
-
-    // Member functions
-
-    PIMainWindow(PIProfilerEngine* engine, HbDocumentLoader &loader, HbApplication *app);
-    virtual ~PIMainWindow();
-
-signals:
-
-    /**
-     * Signal that is emitted when back button is pressed at settings view
-     */
-    void returnedFromSettings();
-
-public slots:
-
-    /**
-     * Activates main view
-     */
-    void activateMainView();
-
-    /**
-     * Activates settings view
-     */
-    void activateSettingsView(int uid = 0);
-
-    /**
-     * method that is called when back button pressed at settings view
-     */
-    void settingsViewClosed();
-
-    /**
-     * Sets and new plugin list to all views
-     */
-    void setPluginList(QList<PluginAttributes> &pluginList);
-
-private:
-
-    /**
-     * creates and adds main view to window
-     */
-    void addMainView(HbDocumentLoader &loader, HbApplication *app);
-
-    /**
-     * creates and adds settings view to main window
-     */
-    void addSettingsView();
-
-private slots:
-
-private:
-    // data
-
-    // Engine wrapper
-    PIProfilerEngine* mEngine;
-
-    // Main view
-    PIMainView* mMainView;
-
-    // Settings view
-    PISettingsView* mSettingsView;
-
-    // Back Action
-    HbAction *mBackAction;
-
-    // plug-in attributes
-    QList<PluginAttributes> mPluginAttributes;
-
-};
-
-#endif /* PIPROFILERMAINWINDOW_H_ */
--- a/piprofilerui/ui/hb/inc/piprofilerengine.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PIPROFILEREGINE_H
-#define PIPROFILEREGINE_H
-
-#include <qobject.h>
-#include <qlist.h>
-
-#include "pluginattributes.h"
-
-class PIProfilerEnginePrivate;
-class GeneralAttributes;
-
-enum ProfilerEngineStatus
-{
-    PI_PROFILING = 0, PI_FINISHED_SUCCEFULLY, PI_ERROR
-};
-enum ProfilingMode
-{
-    PI_PROFILINGMODENORMAL = 0, PI_PROFILINGMODETIMED
-};
-enum ProfilingOutput
-{
-    PI_DEBUG_OUTPUT = 0, PI_FILE_OUTPUT
-};
-
-class PIProfilerEngine: public QObject
-{
-Q_OBJECT
-public:
-
-    /**
-     * Constructor
-     */
-    PIProfilerEngine();
-
-    /**
-     * Initilises engine
-     */
-    bool init();
-
-    /**
-     * Destructor
-     */
-    ~PIProfilerEngine();
-
-    /**
-     * Gets PI Profiler general settings
-     */
-    void getGeneralSettings(GeneralAttributes &settings);
-
-    /**
-     * Notifys engine that ui is ready
-     */
-    void notifyUIReady();
-
-    /**
-     * Saves general settings into engine
-     */
-    bool saveGeneralSettings(GeneralAttributes &settings);
-
-    /**
-     * Saves plug-in settings into engine
-     */
-    bool savePluginSettings(const PluginAttributes &pluginAttributes);
-
-    /**
-     * Starts normal profiling
-     */
-    bool startProfiling();
-
-    /**
-     * Starts timed profiling 
-     */
-    bool startTimedProfiling();
-
-    /**
-     * Stops profiling
-     */
-    void stopProfiling();
-
-    /**
-     * gets time limit for timed profiling
-     */
-    int getTimeLimit();
-
-    /**
-     * Sets PI profiler engine to continue running after ui is closed.
-     */
-    void leaveProfilingOnAfterClosing();
-
-    bool checkTraceLocationSanity(QString &location);
-
-signals:
-
-    /**
-     * Signal that is emitted when plug-in list is loaded
-     */
-    void pluginListUpdated(QList<PluginAttributes> &samplerList);
-
-    /**
-     * Signal that is emitted when profiling status is changed
-     */
-    void profilingStatusChanged(ProfilerEngineStatus status, const QString &text = 0,
-        ProfilingMode profilingMode = PI_PROFILINGMODENORMAL, ProfilingOutput output =
-            PI_FILE_OUTPUT);
-
-private:
-
-    // private implementation
-    PIProfilerEnginePrivate *mPrivate;
-
-private:
-    // Friend classes
-
-    friend class PIProfilerEnginePrivate;
-
-};
-
-#endif // PIPROFILEREGINE_H
--- a/piprofilerui/ui/hb/inc/piprofilerengineprivate.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PIPROFILEREGINEPRIVATE_H
-#define PIPROFILEREGINEPRIVATE_H
-
-#include <e32base.h> 
-#include <piprofiler/ProfilerAttributes.h>
-#include <piprofiler/ProfilerEngineStatusChecker.h> 
-
-class TSamplerAttributes;
-class PIMainView;
-class PluginAttributes;
-class GeneralAttributes;
-class SettingItem;
-class CProfilerEngineStatusChecker;
-class PIProfilerEngine;
-class PIProfilerEnginePrivate: public MProfilerStatusObserver
-{
-
-public:
-
-    enum TProfilingMode
-    {
-        EProfilingModeNormal = 0, EProfilingModeTimed
-    };
-
-    /**
-     * Constructor
-     */
-    PIProfilerEnginePrivate(PIProfilerEngine *aEngine);
-
-    /**
-     * Destructor
-     */
-    ~PIProfilerEnginePrivate();
-
-    /**
-     * Initializesprofiler engine
-     */
-    bool Init();
-
-    /**
-     * Method that is called when UI is ready
-     */
-    void NotifyUIReady();
-
-    /**
-     * Saves plug-in settings into engine
-     */
-    bool SavePluginSettings(const PluginAttributes &pluginAttributes);
-
-    /**
-     * Starts normal profiling
-     */
-    bool StartProfiling();
-
-    /**
-     * Starts timed profiling 
-     */
-    bool StartTimedProfiling();
-
-    /**
-     * Stops profiling
-     */
-    void StopProfiling();
-
-    /**
-     * MProfilerStatusObserver method that is called when profiler engine's status is changed
-     */
-    void HandleProfilerStatusChange(KProfilerStatus aStatus);
-
-    /**
-     * MProfilerStatusObserver method that is called when profiler error is occured.
-     */
-    void HandleProfilerErrorL(TInt aError);
-
-    /**
-     * Gets PI Profiler general settings
-     */
-    void GetGeneralSettings(GeneralAttributes &settings);
-
-    /**
-     * Saves general settings into engine
-     */
-    bool SaveGeneralSettings(GeneralAttributes &settings);
-
-    /**
-     * gets time limit for timed profiling
-     */
-    int GetTimeLimit();
-
-    /**
-     * Sets PI profiler engine to continue running after ui is closed.
-     */
-    void LeaveProfilingOnAfterClosing();
-
-    bool CheckTraceLocationSanity(QString &location);
-
-private:
-
-    /**
-     * Saves general settings into engine
-     */
-    void SaveGeneralSettingsL();
-
-    /**
-     * loads general settings from engine
-     */
-    TInt LoadGeneralSettingsL();
-
-    /**
-     * Starts to profile
-     */
-    void StartAllSamplerItemsL(TProfilingMode aProfilingMode);
-
-    // Converters for symbian to qt and qt to symbian 
-
-    /**
-     * TSamplerAttributes -> SamplerAttributes
-     */
-    static void convertTSamplerAttributesToPluginAttributes(TSamplerAttributes &tSamplerAttributes,
-        PluginAttributes &samplerAttributes);
-
-    /**
-     * TSettingItem -> SettingItem
-     */
-    static void convertTSettingItemToSettingItem(TSettingItem &tSettingItem,
-        SettingItem &settingItem);
-
-    /**
-     * SettingItem -> TSettingItem
-     */
-    static void convertSettingItemToTSettingItem(TSettingItem &tSettingItem,
-        const SettingItem &settingItem);
-
-    /**
-     * TGeneralAttributes -> GeneralAttributes
-     */
-    static void convertTGeneralAttributesToGeneralAttributes(
-        TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes);
-
-    /**
-     * GeneralAttributes -> TGeneralAttributes
-     */
-    static void convertGeneralAttributesToTGeneralAttributes(
-        TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes);
-
-    /**
-     * Launches PI Profiler engine
-     */
-    int LaunchEngineL();
-
-    /**
-     * Terminates PI Profiler engine
-     */
-    void terminateEngine();
-
-    /**
-     * Gets plug-ins from engine
-     */
-    void addNewSamplers(CArrayFixFlat<TSamplerAttributes>& aAttributes);
-
-    /**
-     * Loads plug-ins
-     */
-    void loadPlugins();
-
-    /**
-     * Finds PI Profiler Engine process
-     */
-    TInt FindProcessL(RProcess& aProc);
-
-    /**
-     * Attaches client into PI Profiler engine
-     */
-    void AttachClient();
-
-    /**
-     * Checks trace location sanity
-     */
-    TBool CheckTraceLocationSanityL(TBuf8<KPrefixMaxLength>& aAttr);
-
-private:
-
-    // Should Engine leaved on after ui is closed
-    bool iLeaveProfilingOnAfterClosing;
-
-    // Public part of engine
-    PIProfilerEngine *iPublic;
-
-    // Sampler Attributes
-    CArrayFixFlat<TSamplerAttributes>* iSamplerAttributes;
-
-    // General attributes
-    TGeneralAttributes iGeneralAttributes;
-
-    // Engine status checker
-    CProfilerEngineStatusChecker* iStatusChecker;
-
-};
-
-#endif // PIPROFILEREGINEPRIVATE_H
--- a/piprofilerui/ui/hb/inc/pisettingsview.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PISETTINGSVIEW_H
-#define PISETTINGSVIEW_H
-
-#include <hbview.h>
-#include <qlist.h>
-
-#include "generalattributes.h"
-
-class PIProfilerEngine;
-class HbMainWindow;
-class HbDataForm;
-class HbDataFormModel;
-class HbDataFormModelItem;
-class PluginAttributes;
-class SettingItem;
-
-class PISettingsView: public HbView
-{
-Q_OBJECT
-
-public:
-
-    enum OutputMode
-    {
-        OUTPUT_MODE_DEBUG, OUTPUT_MODE_FILE
-    };
-
-    /**
-     * Constructor
-     */
-    PISettingsView(PIProfilerEngine *engine);
-
-    /**
-     * Destructor
-     */
-    ~PISettingsView();
-
-    /**
-     * Reads general settings from data form and returns GeneralAttributes
-     */
-    GeneralAttributes& getGeneralAttributes();
-
-    /**
-     * Reads plug-in specific settings from data form and saves them into mPluginlist
-     */
-    void readPluginSettings();
-
-    /**
-     * Sets plug-in specific settings and creates data form items for them
-     */
-    void setPluginSettings(QList<PluginAttributes> *pluginList);
-
-    /**
-     * Expands one plug-ins settings group. Other groups are collapsed. 
-     */
-    void expandPluginGroup(int uid);
-
-private:
-
-    /**
-     * Creates general settings form items
-     */
-    void createGeneralSettingForms();
-
-    /**
-     * Creates plug-in specific form items
-     */
-    void createPluginSpecificSettings();
-
-    /**
-     * Loads general settings and updates them into form
-     */
-    void loadGeneralSettings();
-
-    /**
-     * Creates one plug-in setting item
-     */
-    HbDataFormModelItem *createPluginSettingItem(const SettingItem *item,
-        HbDataFormModelItem *parentGroup);
-    
-    /**
-     * reads ont plug-in setting value and saves it into qstring value
-     */
-    void readPluginSettingItemValue(HbDataFormModelItem *dataFormItem, SettingItem *settingItem);
-
-private slots:
-
-    /**
-     * Adds text validators into form items
-     */
-    void addTextValidators(const QModelIndex index);
-
-private:
-
-    // engine pointer
-    PIProfilerEngine *mEngine;
-
-    // General settings
-    GeneralAttributes mGeneralAttributes;
-
-    // list of plug-ins
-    QList<PluginAttributes> *mPluginList;
-
-    // setting form
-    HbDataForm *mSettingForm;
-
-    // model class
-    HbDataFormModel *mModel;
-
-    // data form groups
-    HbDataFormModelItem *mGeneralSettingsGroup;
-    HbDataFormModelItem *mPluginSettingsGroup;
-
-    // general setting items
-    HbDataFormModelItem *mOutputItem;
-    HbDataFormModelItem *mFileLocation;
-    HbDataFormModelItem *mPrefix;
-    HbDataFormModelItem *mSamplingPeriod;
-
-    HbDataFormModelItem *testItem;//TODO remove!
-};
-
-#endif // PISETTINGSVIEW_H
--- a/piprofilerui/ui/hb/inc/pluginattributes.h	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-#ifndef PLUGINATTRIBUTES_H_
-#define PLUGINATTRIBUTES_H_
-
-/*
- * 
- * PluginAttributes class definition, internal settings format
- *  
- */
-#include <qobject.h>
-#include <qvariant.h>
-#include <qstring.h>
-
-class HbDataFormModelItem;
-
-/*
- * 
- * TSettingItem class definition, internal settings format
- *  
- */
-class SettingItem
-{
-public:
-    enum
-    {
-        SettingItemTypeInt = 0, SettingItemTypeBool, SettingItemTypeHex, SettingItemTypeText
-    };
-
-public:
-    QString mSettingText;
-    int mType;
-    QString mValue;
-    QString mSettingDescription;
-    QString mUIText;
-};
-
-class PluginAttributes// : public QObject
-{
-    //Q_OBJECT
-public:
-
-    // default constructor
-    PluginAttributes();
-
-    ~PluginAttributes();
-public:
-    int mUid;
-    QString mShortName; // name of the plugin, short name
-    QString mName; // name of the plugin, long name
-    QString mDescription; // plugin description, info about HW/SW dependencies etc.
-    int mSampleRate; // sample rate of the plugin
-    bool mEnabled; // enabled for profiling
-    bool mIsHidden; // hidden, i.e. no start/stop controls
-    int mItemCount; // plugin specific setting item count
-
-
-    // plugin specific settings, plugin implementation dependent
-    SettingItem mSettingItem1;
-    SettingItem mSettingItem2;
-    SettingItem mSettingItem3;
-    SettingItem mSettingItem4;
-    SettingItem mSettingItem5;
-    SettingItem mSettingItem6;
-
-    HbDataFormModelItem *mFormItemSettingItem1;
-    HbDataFormModelItem *mFormItemSettingItem2;
-    HbDataFormModelItem *mFormItemSettingItem3;
-    HbDataFormModelItem *mFormItemSettingItem4;
-    HbDataFormModelItem *mFormItemSettingItem5;
-    HbDataFormModelItem *mFormItemSettingItem6;
-    HbDataFormModelItem *mFormItemSampleRate;
-
-};
-
-#endif /* PLUGINATTRIBUTES_H_ */
--- a/piprofilerui/ui/hb/pimainview.docml	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.9">
-    <object name="actionStartProfiling" type="HbAction">
-        <string name="text" value="Start profiling"/>
-    </object>
-    <object name="actionSettings" type="HbAction">
-        <string name="text" value="Settings"/>
-    </object>
-    <object name="actionAbout" type="HbAction">
-        <string name="text" value="About"/>
-    </object>
-    <object name="actionExit" type="HbAction">
-        <string name="text" value="Exit"/>
-    </object>
-    <object name="actionStartTimedProfiling" type="HbAction">
-        <string name="text" value="Start profiling for 60 seconds"/>
-    </object>
-    <widget name="PIMainView" type="PIMainView">
-        <widget name="viewMenu" role="HbView:menu" type="HbMenu">
-            <string name="HbVkbHost" value=""/>
-            <ref object="actionStartProfiling" role="HbMenu:addAction"/>
-            <ref object="actionStartTimedProfiling" role="HbMenu:addAction"/>
-            <ref object="actionSettings" role="HbMenu:addAction"/>
-            <ref object="actionAbout" role="HbMenu:addAction"/>
-            <ref object="actionExit" role="HbMenu:addAction"/>
-        </widget>
-        <widget name="viewToolbar" role="HbView:toolBar" type="HbToolBar">
-            <ref object="actionStartProfiling" role="HbToolBar:addAction"/>
-            <ref object="actionSettings" role="HbToolBar:addAction"/>
-        </widget>
-        <widget name="content" role="HbView:widget" type="HbWidget">
-            <widget name="listPlugins" type="HbListWidget">
-                <sizehint height="32.53731un" type="PREFERRED" width="51.04478un"/>
-                <bool name="visible" value="TRUE"/>
-            </widget>
-            <real name="z" value="0"/>
-            <layout type="anchor">
-                <anchoritem dst="listPlugins" dstEdge="LEFT" spacing="5" src="" srcEdge="LEFT"/>
-                <anchoritem dst="listPlugins" dstEdge="RIGHT" spacing="5" src="" srcEdge="RIGHT"/>
-                <anchoritem dst="listPlugins" dstEdge="TOP" spacing="5" src="" srcEdge="TOP"/>
-                <anchoritem dst="listPlugins" dstEdge="BOTTOM" spacing="5" src="" srcEdge="BOTTOM"/>
-            </layout>
-        </widget>
-        <string name="title" value="PI Profiler"/>
-    </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
-        <uistate name="Common ui state" sections="#common"/>
-    </metadata>
-</hbdocument>
-
-<!-- 
-
-Copyright (c) 2010 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: 
-
-
-  --> 
\ No newline at end of file
--- a/piprofilerui/ui/hb/piprofiler.qrc	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<!-- 
-
-Copyright (c) 2010 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: 
-
-
-  --> 
-
-<RCC>
-    <qresource prefix="/xml" >
-        <file alias="pimainview.docml" >pimainview.docml</file>
-    </qresource>
-    <qresource prefix="/gfx" >
-        <file alias="piprofiler.svg">../icons/qgn_menu_piprofilerui.svg</file>
-        <file alias="enabled.svg">../icons/qgn_prob_piprofilerui_status_enabled.svg</file>
-        <file alias="disabled.svg">../icons/qgn_prob_piprofilerui_status_disabled.svg</file>
-    </qresource>
-</RCC>
--- a/piprofilerui/ui/hb/rom/piprofilerui_hb.iby	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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:   
-*
-*/
-
-
-
-#ifndef __PROFILERGUI_IBY__
-#define __PROFILERGUI_IBY__
-
-S60_APP_EXE(PIProfilerUI)
-//S60_APP_AIF_ICONS(PIProfilerUI)
-data=ZRESOURCE\apps\PIProfilerUI.mif resource\apps\PIProfilerUI.mif
-data=ZRESOURCE\apps\PIProfilerUI.rsc resource\apps\PIProfilerUI.rsc
-//S60_APP_RESOURCE(PIProfilerUI)
-data=ZPRIVATE\10003a3f\import\apps\PIProfilerUI_reg.rsc private\10003a3f\import\apps\PIProfilerUI_reg.rsc
-
-#endif // __PROFILERGUI_IBY__
--- a/piprofilerui/ui/hb/src/main.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
-* Copyright (c) 2010 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 <hbapplication.h>
-#include <hblabel.h>
-#include <hbmainwindow.h>
-#include <hbdocumentloader.h>
-#include <hbview.h>
-#include "pimainview.h"
-#include "piprofilerengine.h"
-#include "notifications.h"
-#include "pimainwindow.h"
-
-// Create custom document loader to be able to use custom views in XML.
-class PIProfilerDocumentLoader: public HbDocumentLoader
-{
-public:
-    virtual QObject *createObject(const QString& type, const QString &name);
-};
-
-int main(int argc, char *argv[])
-{
-
-    // Create application and document loader.
-    HbApplication app(argc, argv);
-    PIProfilerDocumentLoader loader;
-
-    // Create Engine and initialize it
-    PIProfilerEngine engine;
-    if (!engine.init()) {
-        Notifications::showErrorNote(QString("Unable to start PI Profiler engine"));
-        return EXIT_FAILURE;
-    }
-
-    // create and show main window
-    PIMainWindow mainWindow(&engine, loader, &app);
-    mainWindow.show();
-
-    return app.exec();
-}
-
-QObject *PIProfilerDocumentLoader::createObject(const QString& type, const QString &name)
-{
-    // Main view
-    if (type == PIMainView::staticMetaObject.className()) {
-        QObject *object = new PIMainView;
-        object->setObjectName(name);
-        return object;
-    }
-
-    return HbDocumentLoader::createObject(type, name);
-}
-
--- a/piprofilerui/ui/hb/src/notifications.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
-* Copyright (c) 2010 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 <hbmessagebox.h>
-#include <hbpopup.h>
-#include <hbaction.h>
-#include <hblabel.h>
-#include <hbdialog.h>
-#include <hbaction.h>
-#include <hbtextitem.h>
-
-#include "notifications.h"
-
-// ---------------------------------------------------------------------------
-
-void Notifications::showInformationNote(const QString &text)
-{
-    
-    // Create new dialog 
-     HbDialog *infoNote = new HbDialog();
-     infoNote->setAttribute(Qt::WA_DeleteOnClose);
-
-     // set dismiss policy
-     infoNote->setTimeout(0); //
-
-     // create text item for popup
-     HbTextItem *label = new HbTextItem(text, infoNote);
-     label->setAlignment(Qt::AlignCenter);
-     infoNote->setContentWidget(label);
-     infoNote->setPrimaryAction(new HbAction("Ok"));
-
-     infoNote->show();
-}
-
-// ---------------------------------------------------------------------------
-
-void Notifications::showMessageBox(const QString &text)
-{
-    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation );
-    note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setTimeout(0);
-    note->setText(text);
-    note->show();
-
-}
-
-// ---------------------------------------------------------------------------
-
-void Notifications::showErrorNote(const QString &text)
-{
-    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeWarning );
-    note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setTimeout(0);
-    note->setText(text);
-    note->show();
-
-}
-
-// ---------------------------------------------------------------------------
--- a/piprofilerui/ui/hb/src/pimainview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,564 +0,0 @@
-/*
-* Copyright (c) 2010 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 <hbdocumentloader.h>
-#include <hbmainwindow.h>
-#include <hbapplication.h>
-#include <hbaction.h>
-#include <qgraphicslayout.h>
-#include <qvariant.h>
-#include <qobject.h>
-#include <qlist.h>
-#include <hbmessagebox.h>
-#include <hblabel.h>
-#include <hbwidget.h>
-#include <qstringlist.h>
-#include <qsignalmapper.h>
-#include <hblistwidget.h>
-#include <hblistwidgetitem.h>
-#include <hbmenu.h>
-#include <hbtoolbar.h>
-#include <hbdialog.h>
-#include <hbprogressdialog.h>
-#include <hbtextitem.h>
-#include <hbindicator.h>
-#include <qdebug.h>
-
-#include "pimainview.h"
-#include "piprofilerengine.h"
-#include "notifications.h"
-#include "pimainwindow.h"
-
-const char *INVALIDCONFIGURATIONFILE = "Invalid configuration file";
-const char *APPLICATIONNAME = "PI Profiler";
-
-// actions that are found from xml
-const char *ACTIONEXIT = "actionExit";
-const char *ACTIONSTARTPROFILING = "actionStartProfiling";
-const char *ACTIONSTARTTIMEDPROFILING = "actionStartTimedProfiling";
-const char *ACTIONSETTINGS = "actionSettings";
-const char *ACTIONABOUT = "actionAbout";
-
-// UI components that are found from xml
-
-const char *LISTWIDGETPLUGINS = "listPlugins";
-const char *TEXTMANDATORYPLUGINS = "Mandatory plug-ins:";
-const char *TEXTOPTIONALPLUGINS = "Optional plug-ins:";
-
-// ---------------------------------------------------------------------------
-
-PIMainView::PIMainView() :
-    application(0), mMainWindow(0), mEngine(0), mPluginList(0), mContextMenu(0), mActionExit(0),
-        mActionExitAndLeaveProfilingOn(0), mActionAbout(0), mActionStartTimedProfiling(0),
-        mActionSettings(0), mActionStopProfiling(0), mListPlugins(0), mProfilingNote(0)
-{
-
-}
-
-// ---------------------------------------------------------------------------
-
-PIMainView::~PIMainView()
-{
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::init(PIMainWindow *mainWindow, HbApplication* app, HbDocumentLoader &loader,
-    PIProfilerEngine *engine)
-{
-
-    application = app;
-    mMainWindow = mainWindow;
-
-    // Load items from xml file
-    loadItemsFromResources(loader);
-
-    // Set list widget items
-    mListPlugins->setClampingStyle(HbScrollArea::BounceBackClamping);
-    mListPlugins->setFrictionEnabled(true);
-
-    // Create stop profiling action
-    mActionStopProfiling = new HbAction("Stop Profiling", this);
-
-    // Create exit and leave profiling on action
-    mActionExitAndLeaveProfilingOn = new HbAction("Close UI\n(Continue profiling)", this);
-
-    mEngine = engine;
-
-    // Connect signals and slots
-    this->connectSignalsAndSlots(app);
-
-    // Create icons
-    mIconDisabled = HbIcon(":/gfx/disabled.svg");
-    mIconEnabled = HbIcon(":/gfx/enabled.svg");
-
-    // update timed profiling text according to settings
-    updateTimedProfilingText();
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PIMainView::connectSignalsAndSlots(HbApplication* app)
-{
-
-    // Menu items:
-    connect(mActionExit, SIGNAL(triggered()), app, SLOT( quit() ));
-    connect(mActionSettings, SIGNAL(triggered()), this, SLOT( openSettingsView() ));
-    connect(mActionAbout, SIGNAL(triggered()), this, SLOT( showAboutPopup() ));
-    connect(mActionStartProfiling, SIGNAL(triggered()), this, SLOT( startProfiling() ));
-    connect(mActionStartTimedProfiling, SIGNAL(triggered()), this, SLOT( startTimedProfiling() ));
-
-    // List widget actions
-    connect(mListPlugins, SIGNAL(activated(HbListWidgetItem*)), this,
-        SLOT(enableOrDisablePlugin(HbListWidgetItem*)));
-    connect(mListPlugins, SIGNAL(longPressed(HbListWidgetItem*, QPointF)), this,
-        SLOT(showContexMenu(HbListWidgetItem*, QPointF)));
-
-    connect(
-        mEngine,
-        SIGNAL(profilingStatusChanged(ProfilerEngineStatus, const QString&, ProfilingMode, ProfilingOutput)),
-        this,
-        SLOT(profilingStatusChanged(ProfilerEngineStatus, const QString&, ProfilingMode, ProfilingOutput)));
-
-    connect(mMainWindow, SIGNAL(returnedFromSettings()), this, SLOT( updateTimedProfilingText() ));
-    connect(mActionExitAndLeaveProfilingOn, SIGNAL(triggered()), this,
-        SLOT( exitAndLeaveProfilingOn() ));
-    connect(mActionStopProfiling, SIGNAL(triggered()), this, SLOT( stopProfiling() ));
-
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PIMainView::loadItemsFromResources(HbDocumentLoader &loader)
-{
-
-    // ACTIONS:
-
-    // Exit
-    QObject *object = loader.findObject(ACTIONEXIT);
-    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
-    this->mActionExit = qobject_cast<HbAction *> (object);
-
-    // About
-    object = loader.findObject(ACTIONABOUT);
-    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
-    this->mActionAbout = qobject_cast<HbAction *> (object);
-
-    // Settings
-    object = loader.findObject(ACTIONSETTINGS);
-    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
-    this->mActionSettings = qobject_cast<HbAction *> (object);
-
-    // Start profiling
-    object = loader.findObject(ACTIONSTARTPROFILING);
-    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
-    this->mActionStartProfiling = qobject_cast<HbAction *> (object);
-
-    // Start timed profiling
-    object = loader.findObject(ACTIONSTARTTIMEDPROFILING);
-    Q_ASSERT_X((object != 0), APPLICATIONNAME, INVALIDCONFIGURATIONFILE);
-    this->mActionStartTimedProfiling = qobject_cast<HbAction *> (object);
-
-    QGraphicsWidget *widget = loader.findWidget(LISTWIDGETPLUGINS);
-    Q_ASSERT_X((widget != 0), "Launcher", "Invalid launcher.xml file");
-    this->mListPlugins = qobject_cast<HbListWidget *> (widget);
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::showAboutPopup()
-{
-
-    Notifications::showMessageBox("Version 2.2.1 - 10th August 2010. \n"
-            "Copyright © 2010 Nokia Corporation "
-            "and/or its subsidiary(-ies). "
-            "All rights reserved.");
-
-}
-// ---------------------------------------------------------------------------
-
-void PIMainView::setPluginList(QList<PluginAttributes> *pluginList)
-{
-
-    this->mPluginList = pluginList;
-    this->updatePlugInLists();
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::openSettingsView()
-{
-    mMainWindow->activateSettingsView();
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::updatePlugInLists()
-{
-
-    mListPlugins->clear();
-
-    // Create Compulsory and Optional labels into list widget:
-    HbListWidgetItem *compulsory = new HbListWidgetItem();
-    compulsory->setText(TEXTMANDATORYPLUGINS);
-    mListPlugins->addItem(compulsory);
-
-    HbListWidgetItem *optional = new HbListWidgetItem();
-    optional->setText(TEXTOPTIONALPLUGINS);
-    mListPlugins->addItem(optional);
-
-    HbIcon *icon;
-
-    // Go thru pluginlist and add list item for each plug-in into list widget 
-    for (int index = 0; index < mPluginList->size(); index++) {
-        QString plugInName = mPluginList->at(index).mName;
-
-        // get icon for item 
-        if (mPluginList->at(index).mEnabled) {
-            icon = &mIconEnabled;
-        }
-        else {
-            icon = &mIconDisabled;
-        }
-
-        // Create list widget item
-        // TODO ensure that this does not leak memory
-        HbListWidgetItem *newItem = new HbListWidgetItem();
-        newItem->setIcon(*icon);
-        newItem->setText(plugInName);
-        newItem->setData(mPluginList->at(index).mUid);
-
-        // check if plug-in is compulsory or optional
-        if (mPluginList->at(index).mIsHidden) {
-            mListPlugins->insertItem(mListPlugins->row(optional), newItem);
-        }
-        else {
-            mListPlugins->addItem(newItem);
-
-        }
-    }
-
-}
-// ---------------------------------------------------------------------------
-
-void PIMainView::enableOrDisablePlugin(HbListWidgetItem *widget)
-{
-
-    // if widget is not found, set currently highlighted item as widget
-    // (in that case this method is called from context menu)
-    if (widget == 0) {
-        widget = mListPlugins->currentItem();
-    }
-
-    // if this method is called from list widget's activated signal, do nothing
-    // if context menu is open.
-    else {
-        if (mContextMenu != 0) {
-            return;
-        }
-    }
-    bool ok = false;
-    int widgetUid = widget->data().toInt(&ok);
-    if (!ok) {
-        qWarning("PIProfiler: Unable to find plug-in uid");
-        return;
-    }
-
-    // go thru plug-in array and find checked plug-in
-    for (int index = 0; index < mPluginList->size(); index++) {
-
-        if (mPluginList->at(index).mUid == widgetUid) {
-            PluginAttributes pluginAttributes = mPluginList->at(index);
-
-            // if plug-in is hidden it cannot be disabled
-            if (pluginAttributes.mIsHidden) {
-                return;
-            }
-
-            // change enable status and set icon correct
-            if (pluginAttributes.mEnabled) {
-                pluginAttributes.mEnabled = false;
-                widget->setIcon(mIconDisabled);
-            }
-            else {
-                pluginAttributes.mEnabled = true;
-                widget->setIcon(mIconEnabled);
-            }
-
-            // save plug-in settings
-            if (mEngine->savePluginSettings(pluginAttributes)) {
-                mPluginList->replace(index, pluginAttributes);
-            }
-            else {
-                // if saving operation failed, revert icon back
-                if (pluginAttributes.mEnabled) {
-                    widget->setIcon(mIconEnabled);
-                }
-                else {
-                    pluginAttributes.mEnabled = true;
-                    widget->setIcon(mIconDisabled);
-                }
-                Notifications::showErrorNote(
-                    "Error occured while saving settings to Profiler engine.");
-            }
-            break;
-        }
-
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::showContexMenu(HbListWidgetItem *widget, const QPointF &point)
-{
-
-    bool ok = false;
-    int uid = widget->data().toInt(&ok);
-
-    if (!ok) {
-        return;
-    }
-
-    for (int index = 0; index < mPluginList->size(); index++) {
-
-        if (mPluginList->at(index).mUid == uid) {
-
-            // Create Context menu:
-            mContextMenu = new HbMenu();
-            mContextMenu->setPreferredPos(point, HbPopup::TopLeftCorner);
-            mContextMenu->setDismissPolicy(HbPopup::TapOutside);
-            mContextMenu->setAttribute(Qt::WA_DeleteOnClose);
-
-            // Enable/disable plug-in
-            if (!mPluginList->at(index).mIsHidden) {
-                HbAction *enableAction;
-                if (mPluginList->at(index).mEnabled) {
-                    enableAction = mContextMenu->addAction(QString("Disable"));
-                }
-                else {
-                    enableAction = mContextMenu->addAction(QString("Enable"));
-                }
-                connect(enableAction, SIGNAL(triggered()), this, SLOT( enableOrDisablePlugin() ));
-            }
-
-            //FIXME take these into use once expanding and collapsing data form groups works. 
-            // Plug-in specific settings 
-            /*if (mPluginList->at(index).mItemCount != 0 || mPluginList->at(index).mSampleRate != -1) {
-             HbAction *pluginSettingsAction = mContextMenu->addAction(QString(
-             "Plug-in settings"));
-             connect(pluginSettingsAction, SIGNAL(triggered()), this,
-             SLOT(openPluginSpecificSettings()));
-             }*/
-
-            // Plug in info
-            HbAction *infoAction = mContextMenu->addAction(QString("Plug-in info"));
-            connect(infoAction, SIGNAL(triggered()), this, SLOT( openSampleInfo() ));
-
-            connect(mContextMenu, SIGNAL(aboutToClose()), this, SLOT( contextMenuClosed() ));
-            mContextMenu->open(this, SLOT(contextMenuClosed()));
-            break;
-        }
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::openSampleInfo()
-{
-
-    // Show plug-in specific info
-    bool ok = false;
-    int uid = mListPlugins->currentItem()->data().toInt(&ok);
-    if (!ok) {
-        return;
-    }
-    Notifications::showInformationNote(this->getPluginAttributes(uid).mDescription);
-}
-// ---------------------------------------------------------------------------
-
-PluginAttributes PIMainView::getPluginAttributes(int uid)
-{
-    // Get plug-in attributes from the plug-in list based on uid number
-    for (int index = 0; index < mPluginList->size(); index++) {
-        if (mPluginList->at(index).mUid == uid) {
-            return mPluginList->at(index);
-        }
-    }
-    return PluginAttributes();
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::contextMenuClosed()
-{
-    mContextMenu = 0;
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::startProfiling()
-{
-
-    showProfilingNote();
-    if (!mEngine->startProfiling()) {
-        Notifications::showErrorNote("Unable to start profiling");
-        mProfilingNote->close();
-        mProfilingNote = 0;
-    }
-}
-
-// ---------------------------------------------------------------------------
-void PIMainView::startTimedProfiling()
-{
-    showProfilingNote();
-    if (!mEngine->startTimedProfiling()) {
-        Notifications::showErrorNote("Unable to start profiling");
-        mProfilingNote->close();
-        mProfilingNote = 0;
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PIMainView::stopProfiling()
-{
-    mProfilingNote = 0;
-    mEngine->stopProfiling();
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::profilingStatusChanged(ProfilerEngineStatus status, const QString &text,
-    ProfilingMode profilingMode, ProfilingOutput outputMode)
-{
-
-    if (status == PI_FINISHED_SUCCEFULLY) {
-        // Profiling finished successfully
-
-        // close profiling note
-        if (mProfilingNote != 0) {
-            mProfilingNote->close();
-            mProfilingNote = 0;
-        }
-
-        // Show info text
-        Notifications::showInformationNote(text);
-        return;
-    }
-
-    if (mProfilingNote == 0) {
-        // if profiling note is not yet shown, create it
-        showProfilingNote();
-    }
-
-    if (status == PI_ERROR) {
-        // if errors occured, close profiling note and show error message
-        if (mProfilingNote != 0) {
-            mProfilingNote->close();
-            mProfilingNote = 0;
-        }
-        Notifications::showErrorNote(text);
-    }
-
-    else if (status == PI_PROFILING) {
-        // if profiling is on-going, update info text according to output:
-
-        HbLabel *titleLabel = new HbLabel("Profiling...", mProfilingNote);
-        titleLabel->setAlignment(Qt::AlignCenter);
-
-        HbTextItem *textItem = new HbTextItem(text, mProfilingNote);
-        textItem->setAlignment(Qt::AlignCenter);
-
-        mProfilingNote->setHeadingWidget(titleLabel);
-        mProfilingNote->setContentWidget(textItem);
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::showProfilingNote()
-{
-    // Create new dialog 
-    mProfilingNote = new HbDialog();
-    mProfilingNote->setAttribute(Qt::WA_DeleteOnClose);
-
-    // Make it modal.
-    mProfilingNote->setModal(true);
-
-    // set dismiss policy
-    mProfilingNote->setDismissPolicy(HbPopup::NoDismiss);
-    mProfilingNote->setTimeout(0); //
-    mProfilingNote->setBackgroundFaded(true);
-
-    // create label and text item for popup
-    HbTextItem *titleLabel = new HbTextItem("Profiling...", mProfilingNote);
-    HbTextItem *label = new HbTextItem("Starting to profile", mProfilingNote);
-
-    label->setAlignment(Qt::AlignCenter);
-    titleLabel->setAlignment(Qt::AlignCenter);
-    mProfilingNote->setHeadingWidget(titleLabel);
-    mProfilingNote->setContentWidget(label);
-
-    // set actions
-    mProfilingNote->setPrimaryAction(mActionStopProfiling);
-    mProfilingNote->setSecondaryAction(mActionExitAndLeaveProfilingOn);
-
-    mProfilingNote->open();
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::updateTimedProfilingText()
-{
-    QString text = "Start timed profiling(";
-    QString number;
-    number.setNum(mEngine->getTimeLimit(), 10);
-    text.append(number);
-    text.append("s)");
-    mActionStartTimedProfiling->setText(text);
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIMainView::exitAndLeaveProfilingOn()
-{
-    mEngine->leaveProfilingOnAfterClosing();
-    application->quit();
-}
-// ---------------------------------------------------------------------------
-
-void PIMainView::openPluginSpecificSettings()
-{
-    HbListWidgetItem *listItem = mListPlugins->currentItem();
-    bool ok = false;
-    int uid = listItem->data().toInt(&ok);
-    if (ok) {
-        mMainWindow->activateSettingsView(uid);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
--- a/piprofilerui/ui/hb/src/pimainwindow.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
-* Copyright (c) 2010 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: 
-*
-*/
-
-
-// System include
-#include <QDebug>
-#include <hbaction.h>
-#include <hbdocumentloader.h>
-#include <hbapplication.h>
-#include <hbicon.h>
-#include <hbprogressdialog.h>
-
-// User includes
-#include "pimainwindow.h"
-//#include "mcsendengine.h"
-#include "pimainview.h"
-#include "pisettingsview.h"
-#include "generalattributes.h"
-#include "piprofilerengine.h"
-#include "notifications.h"
-
-// xml definition of view
-const char *PI_MAINVIEW_XML = ":/xml/pimainview.docml";
-
-// name of the application view object in the xml file.
-const char *APPLICATIONVIEW = "PIMainView";
-
-// ViewManager Constructor
-PIMainWindow::PIMainWindow(PIProfilerEngine* engine, HbDocumentLoader &loader, HbApplication *app) :
-    mEngine(engine), mMainView(0), mSettingsView(0), mBackAction(0)
-{
-
-    HbProgressDialog *note = new HbProgressDialog(HbProgressDialog::WaitDialog);
-    note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setText("Loading PI Profiler plug-ins...");
-    note->open();
-
-    // Add the views to the main window
-    addMainView(loader, app);
-    addSettingsView();
-
-    // Set main view to be displayed on startup
-    activateMainView();
-
-    connect(mEngine, SIGNAL(pluginListUpdated(QList<PluginAttributes>&)), this,
-        SLOT(setPluginList(QList<PluginAttributes>&)));
-
-    QMetaObject::connectSlotsByName(this);
-
-    mEngine->notifyUIReady();
-
-    note->close();
-
-}
-
-PIMainWindow::~PIMainWindow()
-{
-    if (mMainView != 0) {
-        delete mMainView;
-        mMainView = 0;
-    }
-    if (mSettingsView != 0) {
-        delete mSettingsView;
-        mSettingsView = 0;
-    }
-
-}
-
-// Methods to add views to the main window
-
-void PIMainWindow::addMainView(HbDocumentLoader &loader, HbApplication *app)
-{
-    // Load xml-file
-    bool ok = false;
-    loader.load(PI_MAINVIEW_XML, &ok);
-
-    // Load Application View:
-    QGraphicsWidget *widget = loader.findWidget(APPLICATIONVIEW);
-    Q_ASSERT_X(ok && (widget != 0), "PIProfiler", "Invalid docml file");
-    mMainView = qobject_cast<PIMainView *> (widget);
-
-    mMainView->init(this, app, loader, mEngine);
-
-    // Add view to main window
-    this->addView(mMainView);
-
-}
-
-void PIMainWindow::addSettingsView()
-{
-    mSettingsView = new PISettingsView(mEngine);
-    mBackAction = new HbAction("back", this);
-
-    bool value = connect(mBackAction, SIGNAL(triggered()), this, SLOT(settingsViewClosed()));
-    mSettingsView->setNavigationAction(mBackAction);
-    mSettingsView->navigationAction()->setIcon(HbIcon(":/gfx/enabled.svg"));
-    addView(mSettingsView);
-}
-
-// Slots to handle view change
-void PIMainWindow::activateMainView()
-{
-    setCurrentView(mMainView);
-}
-
-void PIMainWindow::activateSettingsView(int uid)
-{
-    if (uid != 0) {
-        mSettingsView->expandPluginGroup(uid);
-    }
-    setCurrentView(mSettingsView);
-}
-
-void PIMainWindow::settingsViewClosed()
-{
-    if (currentView() == mSettingsView) {
-        bool error = false;
-        if (!mEngine->saveGeneralSettings(mSettingsView->getGeneralAttributes())) {
-            error = true;
-        }
-
-        mSettingsView->readPluginSettings();
-
-        for (int index = 0; index < mPluginAttributes.size(); index++) {
-            if (!mEngine->savePluginSettings(mPluginAttributes.at(index))) {
-                error = true;
-            }
-        }
-
-        if (error) {
-            Notifications::showErrorNote("Unable to save some of the settings into engine");
-        }
-        activateMainView();
-        emit returnedFromSettings();
-    }
-    else {
-        qWarning("Back action is not triggered at the correct view!");
-    }
-}
-
-void PIMainWindow::setPluginList(QList<PluginAttributes> &pluginList)
-{
-    mPluginAttributes = pluginList;
-    mMainView->setPluginList(&mPluginAttributes);
-    mSettingsView->setPluginSettings(&mPluginAttributes);
-}
--- a/piprofilerui/ui/hb/src/piprofilerengine.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2010 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 "piprofilerengine.h"
-#include "piprofilerengineprivate.h"
-
-PIProfilerEngine::PIProfilerEngine()
-{
-
-}
-
-PIProfilerEngine::~PIProfilerEngine()
-{
-    if (mPrivate != 0) {
-        delete mPrivate;
-        mPrivate = 0;
-    }
-}
-
-bool PIProfilerEngine::init()
-{
-    mPrivate = new PIProfilerEnginePrivate(this);
-    return mPrivate->Init();
-}
-
-void PIProfilerEngine::getGeneralSettings(GeneralAttributes &settings)
-{
-    mPrivate->GetGeneralSettings(settings);
-}
-
-void PIProfilerEngine::notifyUIReady()
-{
-    mPrivate->NotifyUIReady();
-}
-
-bool PIProfilerEngine::saveGeneralSettings(GeneralAttributes &settings)
-{
-    return mPrivate->SaveGeneralSettings(settings);
-
-}
-
-bool PIProfilerEngine::savePluginSettings(const PluginAttributes &pluginAttributes)
-{
-    return mPrivate->SavePluginSettings(pluginAttributes);
-}
-
-bool PIProfilerEngine::startProfiling()
-{
-    return mPrivate->StartProfiling();
-}
-bool PIProfilerEngine::startTimedProfiling()
-{
-    return mPrivate->StartTimedProfiling();
-}
-void PIProfilerEngine::stopProfiling()
-{
-    return mPrivate->StopProfiling();
-}
-
-int PIProfilerEngine::getTimeLimit()
-{
-    return mPrivate->GetTimeLimit();
-}
-
-void PIProfilerEngine::leaveProfilingOnAfterClosing()
-{
-    mPrivate->LeaveProfilingOnAfterClosing();
-}
-
-bool PIProfilerEngine::checkTraceLocationSanity(QString &location)
-{
-    mPrivate->CheckTraceLocationSanity(location);
-}
--- a/piprofilerui/ui/hb/src/piprofilerengineprivate.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,678 +0,0 @@
-/*
-* Copyright (c) 2010 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 <e32std.h>
-#include <qstring.h>
-#include <qlist.h>
-#include <qstringlist.h>
-#include <f32file.h>
-#include <xqconversions.h>
-#include <utf.h>
-#include <bautils.h>
-#include <sysutil.h>
-#include "piprofilerengineprivate.h"
-#include <piprofiler/ProfilerSession.h>
-#include "pluginattributes.h"
-#include "generalattributes.h"
-#include "piprofilerengine.h"
-
-// literals for default general setting values
-_LIT8(KTraceOutput, "file_system");
-_LIT8(KTraceDebugOutput, "debug_output");
-_LIT8(KProfilerDefaultDrive, "E:\\data");
-_LIT8(KProfilerDefaultPrefix, "Profiler_#");
-_LIT(KProfilerEngineExe, "PIProfilerEngine.exe");
-const TInt KProfilerDefaultTimedSamplingPeriod = 60; // Sampling time in seconds  
-
-// ---------------------------------------------------------------------------
-
-PIProfilerEnginePrivate::PIProfilerEnginePrivate(PIProfilerEngine *aEngine) :
-    iPublic(aEngine), iSamplerAttributes(0), iStatusChecker(0), iLeaveProfilingOnAfterClosing(
-        EFalse)
-{
-
-}
-
-// ---------------------------------------------------------------------------
-
-PIProfilerEnginePrivate::~PIProfilerEnginePrivate()
-{
-
-    // remove profiler client
-    RProfiler::RemoveClient();
-    // Terminate engine in case it is running.
-    if (iLeaveProfilingOnAfterClosing == EFalse) {
-        terminateEngine();
-    }
-
-    // delete sampler attributes.
-    if (iSamplerAttributes) {
-        delete iSamplerAttributes;
-        iSamplerAttributes = 0;
-    }
-
-    if (iStatusChecker) {
-        iStatusChecker->Cancel();
-        delete iStatusChecker;
-        iStatusChecker = NULL;
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::Init()
-{
-    TRAPD(error, this->LaunchEngineL());
-    if (error != KErrNone) {
-        return false;
-    }
-
-    // initialize attribute arrays
-
-    TRAP(error, iSamplerAttributes = new (ELeave) CArrayFixFlat<TSamplerAttributes> (20)); // max sampler count is 20
-    if (error != KErrNone) {
-        return false;
-    }
-
-    // engine status checker
-    TRAP(error, iStatusChecker = CProfilerEngineStatusChecker::NewL());
-    if (error != KErrNone) {
-        return false;
-    }    
-
-    iStatusChecker->SetObserver(this);
-
-    TRAP(error, LoadGeneralSettingsL());
-    if (error != KErrNone) {
-        return false;
-    }
-
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-
-int PIProfilerEnginePrivate::LaunchEngineL()
-{
-
-    TRequestStatus stat = KRequestPending;
-    RProcess proc;
-
-    TInt err(KErrNone);
-
-    // check if process exists
-    err = FindProcessL(proc);
-
-    // check if already exists and don't start a new eshell profiling
-    if (err == KErrNotFound) {
-        // try create new process
-        err = proc.Create(KProfilerEngineExe, _L(""));
-
-        // check if RProcess::Create() succeeded
-        if (err == KErrNone) {
-            // Trigger rendezvous on the supplied TRequestStatus object
-            proc.Rendezvous(stat);
-
-            // kick off the engine process
-            proc.Resume();
-
-            // wait for the constructor to complete 
-            User::WaitForRequest(stat);
-
-            // just lose the handle
-            proc.Close();
-        }
-    }
-
-    // Increase the client reference count in server:
-    AttachClient();
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::AttachClient()
-{
-    RProfiler::AttachClient();
-}
-// ---------------------------------------------------------------------------
-
-int PIProfilerEnginePrivate::FindProcessL(RProcess& aProc)
-{
-    TProcessId engId;
-    TFindProcess procName;
-    procName.Find(_L("PIProfilerEngine.exe*"));
-    TFullName aResult;
-    TFullName aResult2;
-    TInt err(KErrNone);
-
-    // find the first appearance
-    err = procName.Next(aResult);
-    if (err != KErrNone) {
-        // did not find any engine process
-        return err;
-    }
-    else {
-        err = aProc.Open(procName);
-        if (err == KErrNone) {
-            if (aProc.ExitCategory().Length() > 0) {
-                aProc.Close();
-                // process already exited => create a new one
-                return KErrNotFound;
-            }
-            aProc.Close();
-        }
-    }
-
-    // check now if a second appearance exists in process list, 
-    // i.e. engine started from eshell => two engine processes appear in normal case
-    procName.Next(aResult2);
-
-    // check if aResult2 contained the second appearance of profiler engine
-    if(aResult2.CompareF(aResult) > 0)
-        {
-        // other process found, i.e. right process to communicate with, in case started from eshell
-        err = aProc.Open(procName);
-        if(err == KErrNone)
-            {
-            if(aProc.ExitCategory().Length() > 0)
-                {
-                // process already exited => create a new one
-                return KErrNotFound;
-                }
-            aProc.Close();
-            }
-        }
-
-    return err;
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::terminateEngine()
-{
-    // exit profiler engine 
-    RProfiler::ExitProfiler();
-}
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::NotifyUIReady()
-{
-    // load initial plugins
-    loadPlugins();
-
-    // get the initial state
-    int initialState = iStatusChecker->GetInitialState();
-    if (initialState == ERunning) {
-        HandleProfilerStatusChange(ERunning);
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PIProfilerEnginePrivate::loadPlugins()
-{
-    // get samplers from Profiler Engine (client-server session) 
-    // and add the to the samplers list for the first time
-    LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - get sampler plugins"));
-
-    TInt err = RProfiler::GetSamplerAttributes(*iSamplerAttributes);
-
-    // check if engine provided a list of samplers
-    if (err != KErrNone) {
-        // could not get samplers from engine
-        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - failed to connect engine"));
-    }
-    else {
-        LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - adding new samplers into view"));
-        addNewSamplers(*iSamplerAttributes);
-    }LOGTEXT(_L("CProfilerGuiModel::LoadPlugins - exit"));
-}
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::addNewSamplers(CArrayFixFlat<TSamplerAttributes>& aAttributes)
-{
-    TSamplerAttributes item;
-
-    TInt count(aAttributes.Count());
-
-    // loop the attribute array and insert them into view list
-
-    QList<PluginAttributes> samplerList;
-
-    for (TInt i(0); i < count; i++) {
-        // get a TSamplerAttributes from list at a time  
-        item = aAttributes.At(i);
-
-        PluginAttributes samplerAttributes;
-        convertTSamplerAttributesToPluginAttributes(item, samplerAttributes);
-
-        samplerList.append(samplerAttributes);
-    }
-
-    emit iPublic->pluginListUpdated(samplerList);
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::convertTSamplerAttributesToPluginAttributes(
-    TSamplerAttributes &tSamplerAttributes, PluginAttributes &samplerAttributes)
-{
-
-    samplerAttributes.mUid = tSamplerAttributes.iUid;
-    samplerAttributes.mSampleRate = tSamplerAttributes.iSampleRate;
-    samplerAttributes.mEnabled = tSamplerAttributes.iEnabled;
-    samplerAttributes.mIsHidden = tSamplerAttributes.iIsHidden;
-    samplerAttributes.mItemCount = tSamplerAttributes.iItemCount;
-
-    TBuf16<8> temp8;
-    temp8.Copy(tSamplerAttributes.iShortName);
-    samplerAttributes.mShortName = QString((QChar*) temp8.Ptr(), temp8.Length());
-
-    TBuf16<64> temp64;
-    temp64.Copy(tSamplerAttributes.iName);
-    samplerAttributes.mName = QString((QChar*) temp64.Ptr(), temp64.Length());
-
-    TBuf16<256> temp256;
-    temp256.Copy(tSamplerAttributes.iDescription);
-    samplerAttributes.mDescription = QString((QChar*) temp256.Ptr(), temp256.Length());
-
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem1,
-        samplerAttributes.mSettingItem1);
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem2,
-        samplerAttributes.mSettingItem2);
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem3,
-        samplerAttributes.mSettingItem3);
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem4,
-        samplerAttributes.mSettingItem4);
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem5,
-        samplerAttributes.mSettingItem5);
-    convertTSettingItemToSettingItem(tSamplerAttributes.iSettingItem6,
-        samplerAttributes.mSettingItem6);
-}
-
-// ---------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::SavePluginSettings(const PluginAttributes &samplerAttributes)
-{
-    for (int index = 0; index < iSamplerAttributes->Count(); index++) {
-        if (samplerAttributes.mUid == this->iSamplerAttributes->At(index).iUid) {
-            iSamplerAttributes->At(index).iEnabled = samplerAttributes.mEnabled;
-            iSamplerAttributes->At(index).iSampleRate = samplerAttributes.mSampleRate;
-
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem1,
-                samplerAttributes.mSettingItem1);
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem2,
-                samplerAttributes.mSettingItem2);
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem3,
-                samplerAttributes.mSettingItem3);
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem4,
-                samplerAttributes.mSettingItem4);
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem5,
-                samplerAttributes.mSettingItem5);
-            convertSettingItemToTSettingItem(this->iSamplerAttributes->At(index).iSettingItem6,
-                samplerAttributes.mSettingItem6);
-
-            TSamplerAttributes attr = iSamplerAttributes->At(index);
-
-            if (RProfiler::SetSamplerAttributes(this->iSamplerAttributes->At(index)) == KErrNone) {
-                return true;
-            }
-            else {
-                return false;
-            }
-        }
-    }
-    return false;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::StartAllSamplerItemsL(TProfilingMode aProfilingMode)
-{
-    TBuf<256> activeWriterDes;
-    TBuf8<256> writer8;
-
-    //iState = MProfilerStatusObserver::EInitializing;
-
-    RProfiler::TProfilingMode profilingMode = aProfilingMode == EProfilingModeTimed
-        ? RProfiler::EProfilingModeTimed : RProfiler::EProfilingModeNormal;
-
-    // try to start profiling process through client-server interface
-    if (RProfiler::StartSampling(profilingMode) == KErrNotFound) {
-        // profiler stopped (e.g. from eshell) and must be restarted 
-        LaunchEngineL();
-        // try to launch sampling again
-        RProfiler::StartSampling(profilingMode);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::StopProfiling()
-{
-    // Stop profiling process through CS session
-    RProfiler::StopSampling();
-
-}
-
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::HandleProfilerStatusChange(KProfilerStatus aStatus)
-{
-    if (aStatus == EIdle || aStatus == ERunning) {
-
-        if (iGeneralAttributes.iTraceOutput == KTraceOutput) {
-
-            TBuf<256> buf;
-            // get profiler file name 
-            TBool valu = RProfiler::GetFileName(buf);
-
-            QString filename = QString((QChar*) buf.Ptr(), buf.Length());
-
-            // Let ui know that status has changed
-
-            if (aStatus == EIdle) {
-                QString text = QString("Wrote trace data to: \n");
-                text.append(filename);
-                emit iPublic->profilingStatusChanged(PI_FINISHED_SUCCEFULLY, text,
-                    PI_PROFILINGMODENORMAL, PI_FILE_OUTPUT);
-            }
-            else if (aStatus == ERunning) {
-                QString text = QString("Writing trace data to: \n");
-                text.append(filename);
-                emit iPublic->profilingStatusChanged(PI_PROFILING, text, PI_PROFILINGMODENORMAL,
-                    PI_FILE_OUTPUT);
-            }
-        }
-        else {
-            // Let ui know that status has changed
-            if (aStatus == EIdle) {
-                emit iPublic->profilingStatusChanged(PI_FINISHED_SUCCEFULLY, QString(
-                    "Wrote trace data to debug output"), PI_PROFILINGMODENORMAL, PI_DEBUG_OUTPUT);
-            }
-            else if (aStatus == ERunning) {
-                emit iPublic->profilingStatusChanged(PI_PROFILING, QString(
-                    "Writing trace data to debug output"), PI_PROFILINGMODENORMAL, PI_DEBUG_OUTPUT);
-            }
-        }
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::HandleProfilerErrorL(TInt aError)
-{
-    {
-        QString errorMsg = QString("Error: ");
-        QString KNoMemory = QString("Cannot write to file, check settings");
-
-        // message from pwr sampler
-        if (aError < -1000) {
-            errorMsg.append(QString("Stop other power measurement tools!"));
-        }
-        else if (aError == KErrAlreadyExists || aError == 11) {
-            errorMsg.append(QString("Close old Profiler before start!"));
-        }
-        else if (aError == KErrNotReady) {
-            errorMsg.append(QString("Memory card removed, failed to write!"));
-        }
-        else if (aError == KErrPathNotFound) {
-            errorMsg.append(QString("Given trace data location does not exist"));
-        }
-        else {
-            if (aError == KErrNoMemory || aError == KErrOverflow || aError == KErrDirFull || aError
-                == KErrDiskFull || aError == KErrNotReady) {
-                errorMsg.append(KNoMemory);
-            }
-            else {
-                errorMsg.append(QString("code: "));
-                errorMsg.append(aError);
-            }
-        }
-
-        emit iPublic->profilingStatusChanged(PI_ERROR, errorMsg);
-    }
-
-}
-// ---------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::StartProfiling()
-{
-    TRAPD(error, this->StartAllSamplerItemsL(PIProfilerEnginePrivate::EProfilingModeNormal));
-    if (error == KErrNone) {
-        return true;
-    }
-    return false;
-
-}
-
-// ---------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::StartTimedProfiling()
-{
-    TRAPD(error, this->StartAllSamplerItemsL(PIProfilerEnginePrivate::EProfilingModeTimed));
-    if (error == KErrNone) {
-        return true;
-    }
-    return false;
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::convertTGeneralAttributesToGeneralAttributes(
-    TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes)
-{
-    samplerAttributes.mTimedSamplingPeriod = tSamplerAttributes.iTimedSamplingPeriod;
-    int test = tSamplerAttributes.iSaveFileDrive.Length();
-    TBuf16<KPrefixMaxLength> test2;
-    test2.Copy(tSamplerAttributes.iSaveFileDrive);
-    samplerAttributes.mSaveFileDrive = QString((QChar*) test2.Ptr(), test2.Length());
-    test2.Copy(tSamplerAttributes.iTraceFilePrefix);
-    samplerAttributes.mTraceFilePrefix = QString((QChar*) test2.Ptr(), test2.Length());
-    test2.Copy(tSamplerAttributes.iTraceOutput);
-    samplerAttributes.mTraceOutput = QString((QChar*) test2.Ptr(), test2.Length());
-}
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::convertGeneralAttributesToTGeneralAttributes(
-    TGeneralAttributes &tSamplerAttributes, GeneralAttributes &samplerAttributes)
-{
-    tSamplerAttributes.iTimedSamplingPeriod = samplerAttributes.mTimedSamplingPeriod;
-
-    tSamplerAttributes.iTraceOutput.Copy(TBuf<KPrefixMaxLength> (
-        samplerAttributes.mTraceOutput.utf16()));
-    tSamplerAttributes.iSaveFileDrive.Copy(TBuf<KPrefixMaxLength> (
-        samplerAttributes.mSaveFileDrive.utf16()));
-    tSamplerAttributes.iTraceFilePrefix.Copy(TBuf<KPrefixMaxLength> (
-        samplerAttributes.mTraceFilePrefix.utf16()));
-
-}
-// ---------------------------------------------------------------------------
-
-TInt PIProfilerEnginePrivate::LoadGeneralSettingsL()
-{
-    // local variable for getting saved settings from profiler engine
-    TGeneralAttributes generalAttr;
-    TInt err(KErrNone);
-
-    // before loading saved settings (from settings file) set the default values 
-    iGeneralAttributes.iTraceOutput.Copy(KTraceOutput);
-    iGeneralAttributes.iTraceFilePrefix.Copy(KProfilerDefaultPrefix);
-    iGeneralAttributes.iSaveFileDrive.Copy(KProfilerDefaultDrive);
-    iGeneralAttributes.iTimedSamplingPeriod = KProfilerDefaultTimedSamplingPeriod;
-
-    // request to 
-    err = RProfiler::GetGeneralAttributes(generalAttr);
-
-    // check that request succesfull
-    if (err != KErrNone) {
-        // could not connect profiler engine, use 
-        return err;
-    }
-
-    // check if saved settings different than the default
-    if (generalAttr.iTraceOutput.MatchF(iGeneralAttributes.iTraceOutput) == KErrNotFound) {
-        iGeneralAttributes.iTraceOutput.Copy(generalAttr.iTraceOutput);
-    }
-
-    if (generalAttr.iTraceFilePrefix.MatchF(iGeneralAttributes.iTraceFilePrefix) == KErrNotFound) {
-        iGeneralAttributes.iTraceFilePrefix.Copy(generalAttr.iTraceFilePrefix);
-    }
-
-    if (generalAttr.iSaveFileDrive.MatchF(iGeneralAttributes.iSaveFileDrive) == KErrNotFound) {
-        iGeneralAttributes.iSaveFileDrive.Copy(generalAttr.iSaveFileDrive);
-    }
-
-    if (generalAttr.iTimedSamplingPeriod > 0) {
-        iGeneralAttributes.iTimedSamplingPeriod = generalAttr.iTimedSamplingPeriod;
-    }
-
-    return err;
-}
-
-// ---------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::GetGeneralSettings(GeneralAttributes &settings)
-{
-    convertTGeneralAttributesToGeneralAttributes(iGeneralAttributes, settings);
-}
-// ---------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::SaveGeneralSettings(GeneralAttributes &settings)
-{
-    convertGeneralAttributesToTGeneralAttributes(iGeneralAttributes, settings);
-    TRAPD(error, SaveGeneralSettingsL());
-    if (error != KErrNone) {
-        return false;
-    }
-    return true;
-}
-
-// ---------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::SaveGeneralSettingsL()
-{
-    TInt err(KErrNone);
-
-    // save general attributes to Profiler Engine
-    err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
-
-    // check if save failed
-    if (err == KErrNotFound) {
-        // profiler stopped (e.g. from eshell) and must be restarted 
-        LaunchEngineL();
-
-        err = RProfiler::SetGeneralAttributes(iGeneralAttributes);
-        if (err != KErrNone) {
-            // leave no use to continue
-            User::Leave(err);
-        }
-    }
-}
-// --------------------------------------------------------------------------------------------
-
-int PIProfilerEnginePrivate::GetTimeLimit()
-{
-    return iGeneralAttributes.iTimedSamplingPeriod;
-}
-
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::convertTSettingItemToSettingItem(TSettingItem &tSettingItem,
-    SettingItem &settingItem)
-{
-
-    settingItem.mType = tSettingItem.iType;
-    settingItem.mSettingDescription = QString((QChar*) tSettingItem.iSettingDescription.Ptr(),
-        tSettingItem.iSettingDescription.Length());
-    settingItem.mSettingText = QString((QChar*) tSettingItem.iSettingText.Ptr(),
-        tSettingItem.iSettingText.Length());
-    settingItem.mUIText = QString((QChar*) tSettingItem.iUIText.Ptr(),
-        tSettingItem.iUIText.Length());
-    settingItem.mValue = QString((QChar*) tSettingItem.iValue.Ptr(), tSettingItem.iValue.Length());
-
-}
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::convertSettingItemToTSettingItem(TSettingItem &tSettingItem,
-    const SettingItem &settingItem)
-{
-    tSettingItem.iType = settingItem.mType;
-    tSettingItem.iSettingDescription.Copy(TBuf<256> (settingItem.mSettingDescription.utf16()));
-    tSettingItem.iSettingText.Copy(TBuf<64> (settingItem.mSettingText.utf16()));
-    tSettingItem.iUIText.Copy(TBuf<64> (settingItem.mUIText.utf16()));
-    tSettingItem.iValue.Copy(TBuf<128> (settingItem.mValue.utf16()));
-
-}
-
-// --------------------------------------------------------------------------------------------
-
-void PIProfilerEnginePrivate::LeaveProfilingOnAfterClosing()
-{
-    iLeaveProfilingOnAfterClosing = ETrue;
-}
-
-// --------------------------------------------------------------------------------------------
-
-bool PIProfilerEnginePrivate::CheckTraceLocationSanity(QString& location)
-{
-    TBool value = EFalse;
-
-    TBuf8<KPrefixMaxLength> fileLocation;
-    fileLocation.Copy(TBuf<KPrefixMaxLength> (location.utf16()));
-    TRAPD(error, value = CheckTraceLocationSanityL(fileLocation));
-    if (error != KErrNone) {
-        return false;
-    }
-    return value;
-}
-
-// --------------------------------------------------------------------------------------------
-
-TBool PIProfilerEnginePrivate::CheckTraceLocationSanityL(TBuf8<KPrefixMaxLength> &aAttr)
-{
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-
-    TBuf<32> drive;
-
-    CnvUtfConverter::ConvertToUnicodeFromUtf8(drive, aAttr);
-
-    TDriveUnit driveUnit = TDriveUnit(drive);
-
-    TBool ret(EFalse);
-
-    // check that the root folder is correct
-    if (drive.Length() > 2 && BaflUtils::CheckFolder(fs, drive.Left(3)) == KErrNone) {
-        // check then if drive has still some space
-        if (!SysUtil::DiskSpaceBelowCriticalLevelL(&fs, 0, driveUnit)) {
-            ret = ETrue;
-        }
-    }
-
-    fs.Close();
-    return ret;
-}
--- a/piprofilerui/ui/hb/src/pisettingsview.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-/*
- * Copyright (c) 2010 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 <HbMainWindow>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormModelItem>
-#include <HbDataFormViewItem>
-#include <QGraphicsLinearLayout>
-#include <QValidator>
-#include <QIntValidator>
-#include <QModelIndex>
-#include <HbLineEdit>
-#include <HbValidator>
-#include <HbEditorInterface>
-#include <hbabstractitemview.h>
-
-#include "pisettingsview.h"
-#include "pimainview.h"
-#include "notifications.h"
-#include "piprofilerengine.h"
-#include "pluginattributes.h"
-
-const QStringList OUTPUTMODES = (QStringList() << "Debug output" << "File system");
-
-PISettingsView::PISettingsView(PIProfilerEngine *engine) :
-    mEngine(engine), mGeneralAttributes(), mPluginList(0), mSettingForm(0), mModel(0),
-        mGeneralSettingsGroup(0), mPluginSettingsGroup(0), mOutputItem(0), mFileLocation(0),
-        mPrefix(0), mSamplingPeriod(0)
-
-{
-    this->setTitle("Settings");
-
-    //create setting form
-    mSettingForm = new HbDataForm(this);
-
-    //create a model class
-    mModel = new HbDataFormModel(this);
-
-    this->createGeneralSettingForms();
-
-    // Set created model model to form
-    mSettingForm->setModel(mModel);
-
-    // Set widget into view
-    setWidget(mSettingForm);
-
-    // load general settings into data form
-    loadGeneralSettings();
-
-    // Let us know when list is shown
-    connect(mSettingForm, SIGNAL(itemShown(const QModelIndex)), this,
-        SLOT(addTextValidators(const QModelIndex)));
-
-    // Set general group as expanded. 
-    /*HbDataFormViewItem *viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem( 
-        mGeneralSettingsGroup));
-    viewItem->setExpanded(true);*/
-
-}
-
-// ---------------------------------------------------------------------------
-
-PISettingsView::~PISettingsView()
-{
-    if (mSettingForm != 0) {
-        delete mSettingForm;
-        mSettingForm = 0;
-    }
-
-    if (mModel != 0) {
-        delete mModel;
-        mModel = 0;
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::addTextValidators(const QModelIndex index)
-{
-    HbDataFormModelItem *modelItem = mModel->itemFromIndex(index);
-
-    // Check if item is integer text box
-    if (modelItem->contentWidgetData(QString("TextboxType")) == QString("integer")) {
-
-        QString value = modelItem->contentWidgetData(QString("text")).toString();
-        // Create validator that accepts only integer values.
-        HbValidator *validator = new HbValidator(this);
-        validator->addField(new QIntValidator(0, 10000, validator), "1");
-
-        // Line editor widget from form
-        HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *> (mSettingForm->itemByIndex(index));
-        HbWidget *widget = viewItem->dataItemContentWidget();
-        HbLineEdit *editor = static_cast<HbLineEdit *> (widget);
-
-        if (editor != 0) {
-            // Create interface and attach lineEdit to it.
-            HbEditorInterface editInterface(editor);
-            // set editor as phone number editor so that inserting numbers is easier
-            editor->setInputMethodHints(Qt::ImhDigitsOnly);
-            editor->setValidator(validator);
-        }
-        modelItem->setContentWidgetData(QString("text"), value);
-
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::createGeneralSettingForms()
-{
-
-    // Add data into setting model
-
-    // General settings group
-    mGeneralSettingsGroup = mModel->appendDataFormGroup(QString("General settings"),
-        mModel->invisibleRootItem());
-
-    // Output drop down list
-    mOutputItem = mModel->appendDataFormItem(HbDataFormModelItem::ComboBoxItem,
-        QString("Output to"), mGeneralSettingsGroup);
-    mOutputItem->setContentWidgetData(QString("items"), OUTPUTMODES);
-
-    // Data file location textbox
-    mFileLocation = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
-        "Save file in"), mGeneralSettingsGroup);
-    mFileLocation->setContentWidgetData("maxLength", 64);
-
-    // File name textbox
-    mPrefix = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString("File prefix"),
-        mGeneralSettingsGroup);
-    mPrefix->setContentWidgetData("maxLength", 64);
-
-    // Period that used when using timed progfiling
-    mSamplingPeriod = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, QString(
-        "Sampling period(s)"), mGeneralSettingsGroup);
-    mSamplingPeriod->setContentWidgetData(QString("TextboxType"), QString("integer"));
-    mSamplingPeriod->setContentWidgetData("maxLength", 64);
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::createPluginSpecificSettings()
-{
-
-    // Create plug-in specific group
-    mPluginSettingsGroup = mModel->appendDataFormGroup(QString("Plug-in specific settings"),
-        mModel->invisibleRootItem());
-
-    if (mPluginList != 0) {
-
-        for (int index = 0; index < mPluginList->size(); index++) {
-
-            // create plug-in specific settings group for each plug-in which has own settings
-            if (mPluginList->at(index).mItemCount > 0 || mPluginList->at(index).mSampleRate != -1) {
-
-                // Create settings group
-                HbDataFormModelItem *mPluginGroup = mModel->appendDataFormGroup(QString(
-                    mPluginList->at(index).mName), mPluginSettingsGroup);
-
-          
-                // get plugin attributes
-                PluginAttributes attributes = mPluginList->at(index);
-
-                // Create sample rate item if it is needed
-                if (attributes.mSampleRate != -1) {
-                    attributes.mFormItemSampleRate = mModel->appendDataFormItem(
-                        HbDataFormModelItem::TextItem, "Sample rate (ms)", mPluginGroup);
-                    attributes.mFormItemSampleRate->setContentWidgetData(QString("TextboxType"), QString(
-                        "integer"));
-
-                    attributes.mFormItemSampleRate->setContentWidgetData("text",
-                        attributes.mSampleRate);
-                }
-
-                // create other setting items
-                attributes.mFormItemSettingItem1 = createPluginSettingItem(
-                    &attributes.mSettingItem1, mPluginGroup);
-                attributes.mFormItemSettingItem2 = createPluginSettingItem(
-                    &attributes.mSettingItem2, mPluginGroup);
-                attributes.mFormItemSettingItem3 = createPluginSettingItem(
-                    &attributes.mSettingItem3, mPluginGroup);
-                attributes.mFormItemSettingItem4 = createPluginSettingItem(
-                    &attributes.mSettingItem4, mPluginGroup);
-                attributes.mFormItemSettingItem5 = createPluginSettingItem(
-                    &attributes.mSettingItem5, mPluginGroup);
-                attributes.mFormItemSettingItem6 = createPluginSettingItem(
-                    &attributes.mSettingItem6, mPluginGroup);
-                mPluginList->replace(index, attributes);
-            }
-        }
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-HbDataFormModelItem *PISettingsView::createPluginSettingItem(const SettingItem *item,
-    HbDataFormModelItem *parentGroup)
-{
-    // create individual plug-in setting item
-
-    HbDataFormModelItem *settingItem = 0;
-    if (item->mSettingText != QString("")) {
-        switch (item->mType) {
-        case SettingItem::SettingItemTypeBool:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,
-                item->mUIText, parentGroup);
-            bool value = false;
-            if (item->mValue == "true") {
-                value = true;
-            }
-            settingItem->setContentWidgetData("tristate", value);
-
-            break;
-        case SettingItem::SettingItemTypeHex:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
-                parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        case SettingItem::SettingItemTypeInt:
-            settingItem = mModel->appendDataFormItem(HbDataFormModelItem::TextItem, item->mUIText,
-                parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData(QString("TextboxType"), QString("integer"));
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        case SettingItem::SettingItemTypeText:
-            HbDataFormModelItem *settingItem = mModel->appendDataFormItem(
-                HbDataFormModelItem::TextItem, item->mUIText, parentGroup);
-            settingItem->setContentWidgetData("text", item->mValue);
-            settingItem->setContentWidgetData("maxLength", 64);
-
-            break;
-
-        }
-    }
-    return settingItem;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::loadGeneralSettings()
-{
-    // load general settings from engine
-    mEngine->getGeneralSettings(mGeneralAttributes);
-
-    // set output item correct
-    if (mGeneralAttributes.mTraceOutput == "file_system") {
-        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_FILE);
-    }
-    else {
-        mOutputItem->setContentWidgetData(QString("currentIndex"), OUTPUT_MODE_DEBUG);
-    }
-
-    mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
-    mPrefix->setContentWidgetData(QString("text"), mGeneralAttributes.mTraceFilePrefix);
-    mSamplingPeriod->setContentWidgetData(QString("text"), mGeneralAttributes.mTimedSamplingPeriod);
-
-}
-
-// ---------------------------------------------------------------------------
-
-GeneralAttributes &PISettingsView::getGeneralAttributes()
-{
-    // Read items from ui elements and save them into mGeneralAttributes
-
-
-    QString fileLocation = mFileLocation->contentWidgetData(QString("text")).toString();
-    if (fileLocation.length() > 0 && mEngine->checkTraceLocationSanity(fileLocation)) {
-        mGeneralAttributes.mSaveFileDrive = fileLocation;
-    }
-    else {
-        Notifications::showErrorNote("Invalid path, check settings!");
-        mFileLocation->setContentWidgetData(QString("text"), mGeneralAttributes.mSaveFileDrive);
-    }
-    bool ok = false;
-    mGeneralAttributes.mTimedSamplingPeriod
-        = mSamplingPeriod->contentWidgetData(QString("text")).toInt(&ok);
-
-    if (!ok) {
-        // this should not happen because intvalidator is set into text box
-        qWarning("Unable to convert sampling period to integer");
-
-    }
-    mGeneralAttributes.mTraceFilePrefix = mPrefix->contentWidgetData(QString("text")).toString();
-
-    if (mOutputItem->contentWidgetData(QString("currentIndex")).toInt(&ok) == OUTPUT_MODE_FILE) {
-        mGeneralAttributes.mTraceOutput = QString("file_system");
-    }
-    else {
-        mGeneralAttributes.mTraceOutput = QString("debug_output");
-    }
-
-    return mGeneralAttributes;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::setPluginSettings(QList<PluginAttributes> *pluginList)
-{
-    mPluginList = pluginList;
-    createPluginSpecificSettings();
-}
-
-// ---------------------------------------------------------------------------
-
-
-void PISettingsView::readPluginSettingItemValue(HbDataFormModelItem *dataFormItem,
-    SettingItem *settingItem)
-{
-    if (settingItem != 0 && dataFormItem != 0) {
-        // check if item type is bool, convert bool to string
-        if (settingItem->mType == SettingItem::SettingItemTypeBool) {
-            bool checkboxValue = true;
-            checkboxValue = dataFormItem->contentWidgetData(QString("tristate")).toBool();
-            
-            if(checkboxValue){
-                settingItem->mValue = QString("true");
-            }
-            else{
-                settingItem->mValue = QString("false");
-            }
-
-        }
-        // otherwise save text straight into settin item
-        else {
-            settingItem->mValue = dataFormItem->contentWidgetData("text").toString();
-        }
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::readPluginSettings()
-{
-    // Read Plug-in setting item and save values into m
-    for (int index = 0; index < mPluginList->size(); index++) {
-
-        PluginAttributes attributes = mPluginList->at(index);
-
-        readPluginSettingItemValue(attributes.mFormItemSettingItem1, &attributes.mSettingItem1);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem2, &attributes.mSettingItem2);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem3, &attributes.mSettingItem3);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem4, &attributes.mSettingItem4);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem5, &attributes.mSettingItem5);
-        readPluginSettingItemValue(attributes.mFormItemSettingItem6, &attributes.mSettingItem6);
-
-        if (attributes.mFormItemSampleRate != 0) {
-            bool ok = false;
-            attributes.mSampleRate
-                = attributes.mFormItemSampleRate->contentWidgetData("text").toInt(&ok);
-            if (!ok) {
-                // this should not happen because intvalidator is set into text box
-                qWarning("Unable to convert sample rate to integer");
-            }
-        }
-
-        mPluginList->replace(index, attributes);
-
-    }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void PISettingsView::expandPluginGroup(int uid)
-{
-
-    // FIXME some of the methods is deprecating fix once new methods available.
-    //collapse all group items
-    /*HbDataFormViewItem *viewItem = 0;
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(false);
-    }
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mGeneralSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(false);
-    }
-    // Set plugin group as expanded.
-    viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(mPluginSettingsGroup));
-    if (viewItem != 0) {
-        viewItem->setExpanded(true);
-    }
-    // find group item which has same uid number
-    for (int index = 0; index < mPluginSettingsGroup->childCount(); index++) {
-        HbDataFormModelItem *item = mPluginSettingsGroup->childAt(index);
-        bool ok = false;
-        int groupUid = item->data(HbDataFormModelItem::KeyRole).toInt(&ok);
-        if (ok) {
-            if (uid == groupUid) {
-                // Set group as expanded
-                viewItem = mSettingForm->dataFormViewItem(mModel->indexFromItem(item));
-                if (viewItem != 0) {
-                    viewItem->setExpanded(true);
-                }
-
-                // scroll view so that group is shown
-                mSettingForm->scrollTo(mModel->indexFromItem(item),
-                    HbAbstractItemView::PositionAtTop);
-                break;
-
-            }
-        }
-
-    }*/
-
-}
-
-// ---------------------------------------------------------------------------
--- a/piprofilerui/ui/hb/src/pluginattributes.cpp	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2010 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 "pluginattributes.h"
-
-PluginAttributes::PluginAttributes() :
-    mFormItemSettingItem1(0), mFormItemSettingItem2(0), mFormItemSettingItem3(0),
-        mFormItemSettingItem4(0), mFormItemSettingItem5(0), mFormItemSettingItem6(0),
-        mFormItemSampleRate(0)
-{
-
-}
-
-PluginAttributes::~PluginAttributes()
-{
-
-}
--- a/piprofilerui/ui/icons/qgn_menu_piprofilerui.svg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   version="1.0"
-   width="100%"
-   height="100%"
-   viewBox="0 0 88 88"
-   id="svg1926">
-  <defs
-     id="defs6909">
-    <linearGradient
-       id="linearGradient3171">
-      <stop
-         style="stop-color:#0000ff;stop-opacity:1"
-         offset="0"
-         id="stop3173" />
-      <stop
-         style="stop-color:#0000ff;stop-opacity:0.59793812"
-         offset="0.78571427"
-         id="stop4140" />
-      <stop
-         style="stop-color:#0000ff;stop-opacity:0"
-         offset="1"
-         id="stop3175" />
-    </linearGradient>
-    <radialGradient
-       cx="8"
-       cy="8"
-       r="7"
-       fx="8"
-       fy="8"
-       id="radialGradient3179"
-       xlink:href="#linearGradient3171"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(6.152284,0,0,6.152284,-5.2182712,-5.2182709)"
-       spreadMethod="pad" />
-    <linearGradient
-       id="linearGradient14494">
-      <stop
-         style="stop-color:#0000bc;stop-opacity:1"
-         offset="0"
-         id="stop14496" />
-      <stop
-         style="stop-color:#0000bc;stop-opacity:0.71134019"
-         offset="1"
-         id="stop14498" />
-    </linearGradient>
-  </defs>
-  <g
-     transform="matrix(1.00237,0,0,1.019616,-12.79656,94.92987)"
-     id="g14549" />
-  <rect
-     width="86.131981"
-     height="86.131981"
-     x="0.93400985"
-     y="0.93401051"
-     style="opacity:1;fill:url(#radialGradient3179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
-     id="rect2198" />
-  <path
-     d="M 6.4042059,58.204857 L 17.170703,33.524373 L 27.937201,71.207114 L 44.086947,17.374627 L 54.853443,49.674119 L 65.61994,60.440617 L 73.215031,28.141124 L 81.769686,60.440617 L 81.769686,60.440617"
-     style="fill:none;fill-rule:evenodd;stroke:#8fe300;stroke-width:5.38324881;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path3181" />
-</svg>
--- a/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_disabled.svg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   baseProfile="tiny"
-   height="100%"
-   preserveAspectRatio="xMidYMid meet"
-   version="1.0"
-   viewBox="0 0 100 100"
-   width="100%"
-   zoomAndPan="magnify"
-   id="svg157473"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docname="qgn_prob_piprofilerui_status_disabled.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:docbase="T:\BappeaProfiler\piprofiler\piprofilerui\s60ui\icons">
-  <metadata
-     id="metadata157509">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs157507" />
-  <sodipodi:namedview
-     inkscape:window-height="1174"
-     inkscape:window-width="1779"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="7.54"
-     inkscape:cx="58.387496"
-     inkscape:cy="46.88482"
-     inkscape:window-x="137"
-     inkscape:window-y="-4"
-     inkscape:current-layer="svg157473" />
-  <path
-     style="fill:#aa0000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.67105264"
-     d="M 4.7745358,23.607427 L 25.464191,6.8965515 L 47.34748,38.594164 L 77.718833,7.8249331 L 94.69496,26.657825 L 61.27321,55.835544 L 88.06366,81.697613 L 64.986737,96.949602 L 45.092838,68.700265 L 21.750663,94.960212 L 3.9787798,74.668435 L 31.962865,52.519894 L 4.7745358,23.607427 z "
-     id="path157511"
-     sodipodi:nodetypes="ccccccccccccc" />
-</svg>
--- a/piprofilerui/ui/icons/qgn_prob_piprofilerui_status_enabled.svg	Mon Aug 23 15:50:54 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="100%"
-   height="100%"
-   viewBox="0 0 100 100"
-   id="svg156363">
-  <defs
-     id="defs156397" />
-  <path
-     d="M 3.5809023,59.018568 L 14.986738,29.310344 L 42.307692,70.689656 L 70.954907,3.8461536 L 95.490716,16.710875 L 44.827586,95.888595 L 3.5809023,59.018568 z "
-     style="fill:#00c024;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.67105264"
-     id="path156428" />
-</svg>