VirtualBox

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

Last change on this file since 100594 was 98103, checked in by vboxsync, 23 months ago

Copyright year updates by scm.

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