perfapps/piprofilerui/ui/avkon/inc/profiler_gui_model.h
author hgs
Fri, 03 Sep 2010 17:11:21 +0300
changeset 51 b048e15729d6
parent 26 piprofilerui/ui/avkon/inc/profiler_gui_model.h@41ebde60981f
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef PROFILER_GUI_MODEL_H
hgs
parents:
diff changeset
    21
#define PROFILER_GUI_MODEL_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// SYSTEM INCLUDES
hgs
parents:
diff changeset
    24
#include <e32std.h>
hgs
parents:
diff changeset
    25
#include <e32base.h>
hgs
parents:
diff changeset
    26
#include <apgcli.h>
hgs
parents:
diff changeset
    27
#include <gdi.h>
hgs
parents:
diff changeset
    28
#include <utf.h>
hgs
parents:
diff changeset
    29
#include <e32property.h>    // RProperty
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// LOCAL INCLUDES
hgs
parents:
diff changeset
    32
#include "profiler_gui_mainview.h"
hgs
parents:
diff changeset
    33
#include "profiler_gui.hrh"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
// COMMON INCLUDES
hgs
parents:
diff changeset
    36
#include <piprofiler/ProfilerConfig.h>
hgs
parents:
diff changeset
    37
#include <piprofiler/ProfilerAttributes.h>
hgs
parents:
diff changeset
    38
#include <piprofiler/ProfilerEngineStatusChecker.h>
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
// setting keys (do not change uids of existing keys to maintain compatibility to older versions!)
hgs
parents:
diff changeset
    41
const TUid KPSettingPluginNameMode                         = { 0x00 };
hgs
parents:
diff changeset
    42
const TUid KPSettingPluginSaveFileDrive                    = { 0x01 };
hgs
parents:
diff changeset
    43
const TUid KPSettingPluginTraceOutput                      = { 0x02 };
hgs
parents:
diff changeset
    44
const TUid KPSettingPluginSaveFilePrefix                   = { 0x03 };
hgs
parents:
diff changeset
    45
const TUid KPSettingPluginTraceMode                        = { 0x04 };
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    49
class CProfilerGuiMainView;
hgs
parents:
diff changeset
    50
class CProfilerGuiMainContainer;
hgs
parents:
diff changeset
    51
class CEikonEnv;
hgs
parents:
diff changeset
    52
class TSamplerAttributes;
hgs
parents:
diff changeset
    53
class CProfilerEngineStatusChecker;
hgs
parents:
diff changeset
    54
class MProfilerStatusObserver;
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
typedef CArrayFixSeg<TSamplerAttributes> CSamplerItemList;
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
class CProfilerGuiModel : public CActive, MProfilerStatusObserver
hgs
parents:
diff changeset
    62
	{
hgs
parents:
diff changeset
    63
private:
hgs
parents:
diff changeset
    64
    enum TContainerDrawState
hgs
parents:
diff changeset
    65
    	{
hgs
parents:
diff changeset
    66
    	EDrawStateInvalid = -1,
hgs
parents:
diff changeset
    67
    	EDrawStateMain
hgs
parents:
diff changeset
    68
    	};
hgs
parents:
diff changeset
    69
 public:
hgs
parents:
diff changeset
    70
	static CProfilerGuiModel* NewL();
hgs
parents:
diff changeset
    71
	~CProfilerGuiModel();
hgs
parents:
diff changeset
    72
	void ActivateModelL();
hgs
parents:
diff changeset
    73
	void DeActivateModelL();
hgs
parents:
diff changeset
    74
	void SetMainView(CProfilerGuiMainView* aMainView);
hgs
parents:
diff changeset
    75
	void UpdateState(TInt aState);
hgs
parents:
diff changeset
    76
	TBool GetSelectedItemHasSettings();
hgs
parents:
diff changeset
    77
    TBool GetSelectedItemEnabled();
hgs
parents:
diff changeset
    78
    TBool GetSelectedItemHidden();
hgs
parents:
diff changeset
    79
    TInt EditSelectedSamplerL(TInt index);
hgs
parents:
diff changeset
    80
    void SelectedSamplerInfoL(TInt index);
hgs
parents:
diff changeset
    81
    void TerminateProfilerL();
hgs
parents:
diff changeset
    82
    TBool CheckTraceLocationSanityL(TGeneralAttributes& aAttr, TBool aQuietCheck);
hgs
parents:
diff changeset
    83
 private:
hgs
parents:
diff changeset
    84
    void RunL();
hgs
parents:
diff changeset
    85
	void DoCancel();
hgs
parents:
diff changeset
    86
	void LoadPluginsL();	
hgs
parents:
diff changeset
    87
    TInt EditSamplerL(TSamplerAttributes& aItem);
hgs
parents:
diff changeset
    88
    void SamplerInfoL(TSamplerAttributes& aItem);
hgs
parents:
diff changeset
    89
private:
hgs
parents:
diff changeset
    90
	CProfilerGuiModel();
hgs
parents:
diff changeset
    91
	void ConstructL();
hgs
parents:
diff changeset
    92
    TInt LoadGeneralSettingsL();
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
    void AppendToSamplerItemListL(TSamplerAttributes& aItem);
hgs
parents:
diff changeset
    95
    void DisableOrEnableFromSamplerItemListL(TInt aIndex);
hgs
parents:
diff changeset
    96
    void DeleteAllSamplerItems();
hgs
parents:
diff changeset
    97
    void RefreshViewL(TBool aClearSelection=ETrue);
hgs
parents:
diff changeset
    98
    void LaunchProfilerEngineL();
hgs
parents:
diff changeset
    99
    void UpdateUIRunningStateL();
hgs
parents:
diff changeset
   100
    TInt FindProcessL(RProcess& aProc);
hgs
parents:
diff changeset
   101
    
hgs
parents:
diff changeset
   102
public:
hgs
parents:
diff changeset
   103
    
hgs
parents:
diff changeset
   104
    enum TProfilingMode
hgs
parents:
diff changeset
   105
        {
hgs
parents:
diff changeset
   106
        EProfilingModeNormal = 0,
hgs
parents:
diff changeset
   107
        EProfilingModeTimed
hgs
parents:
diff changeset
   108
        };
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
 	void StartAllSamplerItemsL(TProfilingMode aProfilingMode = EProfilingModeNormal);
hgs
parents:
diff changeset
   111
    void StopAllSamplerItemsL();
hgs
parents:
diff changeset
   112
    void DeleteAllSamplerItemsL();
hgs
parents:
diff changeset
   113
    void DisableAllSamplerItemsL();
hgs
parents:
diff changeset
   114
    void EnableAllSamplerItemsL();
hgs
parents:
diff changeset
   115
            
hgs
parents:
diff changeset
   116
    TInt SamplerItemCount() const;
hgs
parents:
diff changeset
   117
    void ShowItemActionMenuL();
hgs
parents:
diff changeset
   118
    void StopSelectedOrHighlightedItemsL();
hgs
parents:
diff changeset
   119
    void DisableOrEnableSelectedOrHighlightedItemsL();
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    CDesCArray* GenerateListBoxItemTextArrayL();
hgs
parents:
diff changeset
   122
	void StartNewSamplerL(TInt aCommand);
hgs
parents:
diff changeset
   123
    void AddNewSamplersL(CArrayFixFlat<TSamplerAttributes>& iSamplerAttributes);
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    void SaveGeneralSettingsL();
hgs
parents:
diff changeset
   126
    void SetMainContainer(CProfilerGuiMainContainer* aContainer);
hgs
parents:
diff changeset
   127
    TInt LaunchSettingsDialogL();
hgs
parents:
diff changeset
   128
    inline CEikonEnv* EikonEnv() { return iEnv; }
hgs
parents:
diff changeset
   129
    inline CProfilerGuiMainContainer* MainContainer() { return iMainContainer; }
hgs
parents:
diff changeset
   130
    inline TBool SamplerItemsExists() { return iSamplerItemList->Count() > 0; } 
hgs
parents:
diff changeset
   131
    inline TGeneralAttributes const& GeneralSettings() const { return iGeneralAttributes; }
hgs
parents:
diff changeset
   132
    
hgs
parents:
diff changeset
   133
    TPtrC GetWriterInfoNoteL(const TDesC& aNote);
hgs
parents:
diff changeset
   134
    void AttachClient();
hgs
parents:
diff changeset
   135
    void RemoveClient();
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
public:
hgs
parents:
diff changeset
   138
    // from MProfilerStatusObserver
hgs
parents:
diff changeset
   139
    void NotifyContainerReadyL();
hgs
parents:
diff changeset
   140
    void HandleProfilerStatusChange( KProfilerStatus aStatus );
hgs
parents:
diff changeset
   141
    void HandleProfilerErrorL( TInt aError );
hgs
parents:
diff changeset
   142
        
hgs
parents:
diff changeset
   143
private:
hgs
parents:
diff changeset
   144
	static const TInt                   iSamplerNameMode = ESamplerNameLong;
hgs
parents:
diff changeset
   145
    CProfilerGuiMainContainer*          iMainContainer;
hgs
parents:
diff changeset
   146
    CEikonEnv*                          iEnv;
hgs
parents:
diff changeset
   147
    TInt                                iDrawState;
hgs
parents:
diff changeset
   148
    CSamplerItemList*                   iSamplerItemList;
hgs
parents:
diff changeset
   149
    TInt                                iReferenceNumber;
hgs
parents:
diff changeset
   150
    CArrayFixFlat<TSamplerAttributes>*	iSamplerAttributes;
hgs
parents:
diff changeset
   151
    TGeneralAttributes                  iGeneralAttributes;
hgs
parents:
diff changeset
   152
    TBool                               iProfilerStatus;   // Status of Engine before it was launched by this application
hgs
parents:
diff changeset
   153
    CProfilerGuiMainView*               iMainView;
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
    // checkers
hgs
parents:
diff changeset
   156
    CProfilerEngineStatusChecker*       iStatusChecker;
hgs
parents:
diff changeset
   157
public:
hgs
parents:
diff changeset
   158
    TInt							     iState;
hgs
parents:
diff changeset
   159
    };
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
#endif