VirtualBox

source: vbox/trunk/src/VBox/Debugger/VBoxDbgStatsQt.h@ 71257

Last change on this file since 71257 was 69500, checked in by vboxsync, 7 years ago

*: scm --update-copyright-year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.7 KB
Line 
1/* $Id: VBoxDbgStatsQt.h 69500 2017-10-28 15:14:05Z vboxsync $ */
2/** @file
3 * VBox Debugger GUI - Statistics.
4 */
5
6/*
7 * Copyright (C) 2006-2017 Oracle Corporation
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
18#ifndef ___Debugger_VBoxDbgStats_h
19#define ___Debugger_VBoxDbgStats_h
20
21#include "VBoxDbgBase.h"
22
23#include <QTreeView>
24#include <QTimer>
25#include <QComboBox>
26#include <QMenu>
27
28class VBoxDbgStats;
29class VBoxDbgStatsModel;
30
31/** Pointer to a statistics sample. */
32typedef struct DBGGUISTATSNODE *PDBGGUISTATSNODE;
33/** Pointer to a const statistics sample. */
34typedef struct DBGGUISTATSNODE const *PCDBGGUISTATSNODE;
35
36
37/**
38 * The VM statistics tree view.
39 *
40 * A tree representation of the STAM statistics.
41 */
42class VBoxDbgStatsView : public QTreeView, public VBoxDbgBase
43{
44 Q_OBJECT;
45
46public:
47 /**
48 * Creates a VM statistics list view widget.
49 *
50 * @param a_pDbgGui Pointer to the debugger gui object.
51 * @param a_pModel The model. Will take ownership of this and delete it together
52 * with the view later
53 * @param a_pParent Parent widget.
54 */
55 VBoxDbgStatsView(VBoxDbgGui *a_pDbgGui, VBoxDbgStatsModel *a_pModel, VBoxDbgStats *a_pParent = NULL);
56
57 /** Destructor. */
58 virtual ~VBoxDbgStatsView();
59
60 /**
61 * Updates the view with current information from STAM.
62 * This will indirectly update the m_PatStr.
63 *
64 * @param rPatStr Selection pattern. NULL means everything, see STAM for further details.
65 */
66 void updateStats(const QString &rPatStr);
67
68 /**
69 * Resets the stats items matching the specified pattern.
70 * This pattern doesn't have to be the one used for update, thus m_PatStr isn't updated.
71 *
72 * @param rPatStr Selection pattern. NULL means everything, see STAM for further details.
73 */
74 void resetStats(const QString &rPatStr);
75
76 /**
77 * Resizes the columns to fit the content.
78 */
79 void resizeColumnsToContent();
80
81protected:
82 /**
83 * Expands or collapses a sub-tree.
84 *
85 * @param a_rIndex The root of the sub-tree.
86 * @param a_fExpanded Expand/collapse.
87 */
88 void setSubTreeExpanded(QModelIndex const &a_rIndex, bool a_fExpanded);
89
90 /**
91 * Popup context menu.
92 *
93 * @param a_pEvt The event.
94 */
95 virtual void contextMenuEvent(QContextMenuEvent *a_pEvt);
96
97protected slots:
98 /**
99 * Slot for handling the view/header context menu.
100 * @param a_rPos The mouse location.
101 */
102 void headerContextMenuRequested(const QPoint &a_rPos);
103
104 /** @name Action signal slots.
105 * @{ */
106 void actExpand();
107 void actCollapse();
108 void actRefresh();
109 void actReset();
110 void actCopy();
111 void actToLog();
112 void actToRelLog();
113 void actAdjColumns();
114 /** @} */
115
116
117protected:
118 /** Pointer to the data model. */
119 VBoxDbgStatsModel *m_pModel;
120 /** The current selection pattern. */
121 QString m_PatStr;
122 /** The parent widget. */
123 VBoxDbgStats *m_pParent;
124
125 /** Leaf item menu. */
126 QMenu *m_pLeafMenu;
127 /** Branch item menu. */
128 QMenu *m_pBranchMenu;
129 /** View menu. */
130 QMenu *m_pViewMenu;
131
132 /** The menu that's currently being executed. */
133 QMenu *m_pCurMenu;
134 /** The current index relating to the context menu.
135 * Considered invalid if m_pCurMenu is NULL. */
136 QModelIndex m_CurIndex;
137
138 /** Expand Tree action. */
139 QAction *m_pExpandAct;
140 /** Collapse Tree action. */
141 QAction *m_pCollapseAct;
142 /** Refresh Tree action. */
143 QAction *m_pRefreshAct;
144 /** Reset Tree action. */
145 QAction *m_pResetAct;
146 /** Copy (to clipboard) action. */
147 QAction *m_pCopyAct;
148 /** To Log action. */
149 QAction *m_pToLogAct;
150 /** To Release Log action. */
151 QAction *m_pToRelLogAct;
152 /** Adjust the columns. */
153 QAction *m_pAdjColumns;
154#if 0
155 /** Save Tree (to file) action. */
156 QAction *m_SaveFileAct;
157 /** Load Tree (from file) action. */
158 QAction *m_LoadFileAct;
159 /** Take Snapshot action. */
160 QAction *m_TakeSnapshotAct;
161 /** Load Snapshot action. */
162 QAction *m_LoadSnapshotAct;
163 /** Diff With Snapshot action. */
164 QAction *m_DiffSnapshotAct;
165#endif
166};
167
168
169
170/**
171 * The VM statistics window.
172 *
173 * This class displays the statistics of a VM. The UI contains
174 * a entry field for the selection pattern, a refresh interval
175 * spinbutton, and the tree view with the statistics.
176 */
177class VBoxDbgStats : public VBoxDbgBaseWindow
178{
179 Q_OBJECT;
180
181public:
182 /**
183 * Creates a VM statistics list view widget.
184 *
185 * @param a_pDbgGui Pointer to the debugger gui object.
186 * @param pszPat Initial selection pattern. NULL means everything. (See STAM for details.)
187 * @param uRefreshRate The refresh rate. 0 means not to refresh and is the default.
188 * @param pParent Parent widget.
189 */
190 VBoxDbgStats(VBoxDbgGui *a_pDbgGui, const char *pszPat = NULL, unsigned uRefreshRate= 0, QWidget *pParent = NULL);
191
192 /** Destructor. */
193 virtual ~VBoxDbgStats();
194
195protected:
196 /**
197 * Destroy the widget on close.
198 *
199 * @param a_pCloseEvt The close event.
200 */
201 virtual void closeEvent(QCloseEvent *a_pCloseEvt);
202
203 /**
204 * Event filter for various purposes.
205 *
206 * @param pWatched The object event came to.
207 * @param pEvent The event being handled.
208 */
209 virtual bool eventFilter(QObject *pWatched, QEvent *pEvent);
210
211protected slots:
212 /** Apply the activated combobox pattern. */
213 void apply(const QString &Str);
214 /** The "All" button was pressed. */
215 void applyAll();
216 /** Refresh the data on timer tick and pattern changed. */
217 void refresh();
218 /**
219 * Set the refresh rate.
220 *
221 * @param iRefresh The refresh interval in seconds.
222 */
223 void setRefresh(int iRefresh);
224
225 /**
226 * Change the focus to the pattern combo box.
227 */
228 void actFocusToPat();
229
230protected:
231
232 /** The current selection pattern. */
233 QString m_PatStr;
234 /** The pattern combo box. */
235 QComboBox *m_pPatCB;
236 /** The refresh rate in seconds.
237 * 0 means not to refresh. */
238 unsigned m_uRefreshRate;
239 /** The refresh timer .*/
240 QTimer *m_pTimer;
241 /** The tree view widget. */
242 VBoxDbgStatsView *m_pView;
243
244 /** Move to pattern field action. */
245 QAction *m_pFocusToPat;
246};
247
248
249#endif
250
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