VirtualBox

source: vbox/trunk/src/VBox/Debugger/VBoxDbgStatsQt4.h@ 12559

Last change on this file since 12559 was 12478, checked in by vboxsync, 16 years ago

Debugger: kind of getting somewhere...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.0 KB
Line 
1/* $Id: VBoxDbgStatsQt4.h 12478 2008-09-16 03:12:57Z vboxsync $ */
2/** @file
3 * VBox Debugger GUI - Statistics.
4 */
5
6/*
7 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 * Clara, CA 95054 USA or visit http://www.sun.com if you need
19 * additional information or have any questions.
20 */
21
22#ifndef ___Debugger_VBoxDbgStats_h
23#define ___Debugger_VBoxDbgStats_h
24
25#include "VBoxDbgBase.h"
26
27#include <QTreeView>
28#include <QTimer>
29#include <QComboBox>
30#include <QMenu>
31
32class VBoxDbgStats;
33class VBoxDbgStatsModel;
34
35/** Pointer to a statistics sample. */
36typedef struct DBGGUISTATSNODE *PDBGGUISTATSNODE;
37/** Pointer to a const statistics sample. */
38typedef struct DBGGUISTATSNODE const *PCDBGGUISTATSNODE;
39
40
41/**
42 * The VM statistics tree view.
43 *
44 * A tree represenation of the STAM statistics.
45 */
46class VBoxDbgStatsView : public QTreeView, public VBoxDbgBase
47{
48 Q_OBJECT;
49
50public:
51 /**
52 * Creates a VM statistics list view widget.
53 *
54 * @param a_pVM The VM which STAM data is being viewed.
55 * @param a_pModel The model. Will take ownership of this and delete it together
56 * with the view later
57 * @param a_pParent Parent widget.
58 */
59 VBoxDbgStatsView(PVM a_pVM, VBoxDbgStatsModel *a_pModel, VBoxDbgStats *a_pParent = NULL);
60
61 /** Destructor. */
62 virtual ~VBoxDbgStatsView();
63
64 /**
65 * Updates the view with current information from STAM.
66 * This will indirectly update the m_PatStr.
67 *
68 * @param rPatStr Selection pattern. NULL means everything, see STAM for further details.
69 */
70 void update(const QString &rPatStr);
71
72 /**
73 * Resets the stats items matching the specified pattern.
74 * This pattern doesn't have to be the one used for update, thus m_PatStr isn't updated.
75 *
76 * @param rPatStr Selection pattern. NULL means everything, see STAM for further details.
77 */
78 void reset(const QString &rPatStr);
79
80private:
81 /**
82 * Callback function for the STAMR3Enum() made by update().
83 *
84 * @returns 0 (i.e. never halt enumeration).
85 *
86 * @param pszName The name of the sample.
87 * @param enmType The type.
88 * @param pvSample Pointer to the data. enmType indicates the format of this data.
89 * @param enmUnit The unit.
90 * @param enmVisibility The visibility.
91 * @param pszDesc The description.
92 * @param pvUser Pointer to the VBoxDbgStatsView object.
93 */
94//later: static DECLCALLBACK(int) updateCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,
95//later: STAMVISIBILITY enmVisibility, const char *pszDesc, void *pvUser);
96
97protected:
98 /**
99 * Creates / finds the path to the specified stats item and makes is visible.
100 *
101 * @returns Parent node.
102 * @param pszName Path to a stats item.
103 */
104// VBoxDbgStatsItem *createPath(const char *pszName);
105
106protected slots:
107//later: /** Context menu. */
108//later: void contextMenuReq(QListViewItem *pItem, const QPoint &rPoint, int iColumn);
109//later: /** Leaf context. */
110//later: void leafMenuActivated(int iId);
111//later: /** Branch context. */
112//later: void branchMenuActivated(int iId);
113//later: /** View context. */
114//later: void viewMenuActivated(int iId);
115
116protected:
117 typedef enum { eRefresh = 1, eReset, eExpand, eCollaps, eCopy, eLog, eLogRel } MenuId;
118
119protected:
120 /** Pointer to the data model. */
121 VBoxDbgStatsModel *m_pModel;
122 /** The current selection pattern. */
123 QString m_PatStr;
124 /** The parent widget. */
125 VBoxDbgStats *m_pParent;
126 /** Leaf item menu. */
127 QMenu *m_pLeafMenu;
128 /** Branch item menu. */
129 QMenu *m_pBranchMenu;
130 /** View menu. */
131 QMenu *m_pViewMenu;
132 /** The pointer to the node which is the current focus of a context menu. */
133 PDBGGUISTATSNODE m_pContextNode;
134};
135
136
137
138/**
139 * The VM statistics window.
140 *
141 * This class displays the statistics of a VM. The UI contains
142 * a entry field for the selection pattern, a refresh interval
143 * spinbutton, and the tree view with the statistics.
144 */
145class VBoxDbgStats :
146#ifdef VBOXDBG_USE_QT4
147 public QWidget,
148#else
149 public QVBox,
150#endif
151 public VBoxDbgBase
152{
153 Q_OBJECT;
154
155public:
156 /**
157 * Creates a VM statistics list view widget.
158 *
159 * @param pVM The VM this is hooked up to.
160 * @param pszPat Initial selection pattern. NULL means everything. (See STAM for details.)
161 * @param uRefreshRate The refresh rate. 0 means not to refresh and is the default.
162 * @param pParent Parent widget.
163 */
164 VBoxDbgStats(PVM pVM, const char *pszPat = NULL, unsigned uRefreshRate= 0, QWidget *pParent = NULL);
165
166 /** Destructor. */
167 virtual ~VBoxDbgStats();
168
169protected slots:
170 /** Apply the activated combobox pattern. */
171 void apply(const QString &Str);
172 /** The "All" button was pressed. */
173 void applyAll();
174 /** Refresh the data on timer tick and pattern changed. */
175 void refresh();
176 /**
177 * Set the refresh rate.
178 *
179 * @param iRefresh The refresh interval in seconds.
180 */
181 void setRefresh(int iRefresh);
182
183protected:
184
185 /** The current selection pattern. */
186 QString m_PatStr;
187 /** The pattern combo box. */
188 QComboBox *m_pPatCB;
189 /** The refresh rate in seconds.
190 * 0 means not to refresh. */
191 unsigned m_uRefreshRate;
192 /** The refresh timer .*/
193 QTimer *m_pTimer;
194 /** The tree view widget. */
195 VBoxDbgStatsView *m_pView;
196};
197
198
199#endif
200
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette