VirtualBox

source: vbox/trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSelectorWnd.h@ 14449

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

Fe/Qt4: Systray:

  • Added ability to disable systray menu using the "guiFeatures" -> "noSystrayMenu" property (GUI entry not implemented yet).
  • Added state icons to VM sub menu entries (instead of OS icons).
  • Changed VM sub menus only having basic commands for now (start/show, pause/resume, delete).
  • Fixed showing the selector window using the systray menu (force to front).
  • Misc small bugfixes / code cleanup.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.6 KB
Line 
1/** @file
2 *
3 * VBox frontends: Qt GUI ("VirtualBox"):
4 * VBoxSelectorWnd class declaration
5 */
6
7/*
8 * Copyright (C) 2006-2008 Sun Microsystems, Inc.
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 *
18 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19 * Clara, CA 95054 USA or visit http://www.sun.com if you need
20 * additional information or have any questions.
21 */
22
23#ifndef __VBoxSelectorWnd_h__
24#define __VBoxSelectorWnd_h__
25
26#include "COMDefs.h"
27
28#include "QIWithRetranslateUI.h"
29
30#include "VBoxGlobal.h"
31#include "VBoxProblemReporter.h"
32
33/* Qt includes */
34#include <QMainWindow>
35#ifdef VBOX_GUI_WITH_SYSTRAY
36 #include <QSystemTrayIcon>
37#endif
38
39class VBoxSnapshotsWgt;
40class VBoxVMDetailsView;
41class VBoxVMDescriptionPage;
42class VBoxVMLogViewer;
43class VBoxVMListView;
44class VBoxVMModel;
45class VBoxVMItem;
46class VBoxTrayIcon;
47
48class QTabWidget;
49class QListView;
50class QEvent;
51
52class VBoxSelectorWnd : public QIWithRetranslateUI2 <QMainWindow>
53{
54 Q_OBJECT;
55
56public:
57
58 VBoxSelectorWnd (VBoxSelectorWnd **aSelf,
59 QWidget* aParent = 0,
60 Qt::WindowFlags aFlags = Qt::Window);
61 virtual ~VBoxSelectorWnd();
62
63 bool startMachine (const QUuid &aId);
64
65signals:
66
67 void closing();
68
69public slots:
70
71 void fileMediaMgr();
72 void fileSettings();
73 void fileExit();
74
75 void vmNew();
76 void vmSettings (const QString &aCategory = QString::null,
77 const QString &aControl = QString::null,
78 const QUuid & = QUuid_null);
79 void vmDelete (const QUuid & = QUuid_null);
80 void vmStart (const QUuid & = QUuid_null);
81 void vmDiscard (const QUuid & = QUuid_null);
82 void vmPause (bool, const QUuid & = QUuid_null);
83 void vmRefresh (const QUuid & = QUuid_null);
84 void vmShowLogs (const QUuid & = QUuid_null);
85
86 void refreshVMList();
87 void refreshVMItem (const QUuid &aID, bool aDetails,
88 bool aSnapshots,
89 bool aDescription);
90
91 void showContextMenu (const QPoint &aPoint);
92
93#ifdef VBOX_GUI_WITH_SYSTRAY
94 void trayIconActivated (QSystemTrayIcon::ActivationReason aReason);
95 void showWindow();
96#endif
97
98protected:
99
100 /* Events */
101 bool event (QEvent *aEvent);
102 void closeEvent (QCloseEvent *aEvent);
103#if defined (Q_WS_MAC) && (QT_VERSION < 0x040402)
104 bool eventFilter (QObject *aObject, QEvent *aEvent);
105#endif /* defined (Q_WS_MAC) && (QT_VERSION < 0x040402) */
106
107 void retranslateUi();
108
109private slots:
110
111 void vmListViewCurrentChanged (bool aRefreshDetails = true,
112 bool aRefreshSnapshots = true,
113 bool aRefreshDescription = true);
114
115 void mediumEnumStarted();
116 void mediumEnumFinished (const VBoxMediaList &);
117
118 /* VirtualBox callback events we're interested in */
119
120 void machineStateChanged (const VBoxMachineStateChangeEvent &e);
121 void machineDataChanged (const VBoxMachineDataChangeEvent &e);
122 void machineRegistered (const VBoxMachineRegisteredEvent &e);
123 void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
124 void snapshotChanged (const VBoxSnapshotEvent &e);
125
126private:
127
128 /* Main menus */
129 QMenu *mFileMenu;
130 QMenu *mVMMenu;
131 QMenu *mHelpMenu;
132
133 /* VM list context menu */
134 QMenu *mVMCtxtMenu;
135
136 /* Actions */
137 QAction *fileMediaMgrAction;
138 QAction *fileSettingsAction;
139 QAction *fileExitAction;
140 QAction *vmNewAction;
141 QAction *vmConfigAction;
142 QAction *vmDeleteAction;
143 QAction *vmStartAction;
144 QAction *vmDiscardAction;
145 QAction *vmPauseAction;
146 QAction *vmRefreshAction;
147 QAction *vmShowLogsAction;
148
149 VBoxHelpActions mHelpActions;
150
151#ifdef VBOX_GUI_WITH_SYSTRAY
152 /* The systray icon */
153 VBoxTrayIcon *mTrayIcon;
154#endif
155
156 /* The vm list view/model */
157 VBoxVMListView *mVMListView;
158 VBoxVMModel *mVMModel;
159
160 /* The right information widgets */
161 QTabWidget *vmTabWidget;
162 VBoxVMDetailsView *vmDetailsView;
163 VBoxSnapshotsWgt *vmSnapshotsWgt;
164 VBoxVMDescriptionPage *vmDescriptionPage;
165
166 QPoint normal_pos;
167 QSize normal_size;
168
169 bool doneInaccessibleWarningOnce : 1;
170};
171
172#ifdef VBOX_GUI_WITH_SYSTRAY
173
174Q_DECLARE_METATYPE(QUuid);
175
176class VBoxTrayIcon : public QSystemTrayIcon
177{
178 Q_OBJECT;
179
180public:
181
182 VBoxTrayIcon (VBoxSelectorWnd* aParent, VBoxVMModel* aVMModel);
183 virtual ~VBoxTrayIcon ();
184
185 void refresh ();
186 void retranslateUi ();
187
188protected:
189
190 VBoxVMItem* GetItem (QObject* aObject);
191
192signals:
193
194public slots:
195
196
197private slots:
198
199 void showSubMenu();
200 void hideSubMenu ();
201
202 void vmSettings();
203 void vmDelete();
204 void vmStart();
205 void vmDiscard();
206 void vmPause(bool aPause);
207 void vmRefresh();
208 void vmShowLogs();
209
210private:
211
212 bool mActive; /* Is systray menu active/available? */
213
214 /* The vm list model */
215 VBoxVMModel *mVMModel;
216
217 VBoxSelectorWnd* mParent;
218 QMenu *mTrayIconMenu;
219
220 QAction *mShowSelectorAction;
221 QAction *mExitSelectorAction;
222 QAction *mVmConfigAction;
223 QAction *mVmDeleteAction;
224 QAction *mVmStartAction;
225 QAction *mVmDiscardAction;
226 QAction *mVmPauseAction;
227 QAction *mVmRefreshAction;
228 QAction *mVmShowLogsAction;
229};
230
231#endif // VBOX_GUI_WITH_SYSTRAY
232
233#endif // __VBoxSelectorWnd_h__
Note: See TracBrowser for help on using the repository browser.

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