VirtualBox

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

Last change on this file since 81816 was 77412, checked in by vboxsync, 6 years ago

VBoxDbg: Moved the title management to the VBoxDbgBaseWindow class, combining the approaches in the console and statistics windows.

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