VirtualBox

source: vbox/trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h@ 51447

Last change on this file since 51447 was 51447, checked in by vboxsync, 11 years ago

FE/Qt: 6660: Advanced extra-data management framework: Unifying Network Manager related stuff.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 11.8 KB
Line 
1/** @file
2 * VBox Qt GUI - UIExtraDataManager class declaration.
3 */
4
5/*
6 * Copyright (C) 2010-2014 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 */
16
17#ifndef ___UIExtraDataManager_h___
18#define ___UIExtraDataManager_h___
19
20/* Qt includes: */
21#include <QObject>
22#include <QMap>
23
24/* GUI includes: */
25#include "UIExtraDataDefs.h"
26
27/* COM includes: */
28#include "CEventListener.h"
29
30/* Forward declarations: */
31class UIExtraDataEventHandler;
32
33/* Type definitions: */
34typedef QMap<QString, QString> ExtraDataMap;
35
36/** Singleton QObject extension
37 * providing GUI with corresponding extra-data values,
38 * and notifying it whenever any of those values changed. */
39class UIExtraDataManager : public QObject
40{
41 Q_OBJECT;
42
43 /** Extra-data Manager constructor. */
44 UIExtraDataManager();
45 /** Extra-data Manager destructor. */
46 ~UIExtraDataManager();
47
48signals:
49
50 /** Notifies about GUI language change. */
51 void sigLanguageChange(QString strLanguage);
52
53 /** Notifies about Selector UI keyboard shortcut change. */
54 void sigSelectorUIShortcutChange();
55 /** Notifies about Runtime UI keyboard shortcut change. */
56 void sigRuntimeUIShortcutChange();
57
58 /** Notifies about HID LED sync state change. */
59 void sigHIDLedsSyncStateChange(bool fEnabled);
60
61#ifdef RT_OS_DARWIN
62 /** Mac OS X: Notifies about 'presentation mode' status change. */
63 void sigPresentationModeChange(bool fEnabled);
64 /** Mac OS X: Notifies about 'dock icon' appearance change. */
65 void sigDockIconAppearanceChange(bool fEnabled);
66#endif /* RT_OS_DARWIN */
67
68public:
69
70 /** Static Extra-data Manager instance/constructor. */
71 static UIExtraDataManager* instance();
72 /** Static Extra-data Manager destructor. */
73 static void destroy();
74
75 /** Returns version for which user wants to prevent BETA warning. */
76 QString preventBETAwarningForVersion() const;
77
78#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
79 /** Returns whether we should allow Application Update. */
80 bool shouldWeAllowApplicationUpdate() const;
81 /** Returns last Application Update date. */
82 QString applicationUpdateData() const;
83 /** Defines last Application Update date as @a strValue. */
84 void setApplicationUpdateData(const QString &strValue);
85 /** Returns Application Update check counter. */
86 qulonglong applicationUpdateCheckCounter() const;
87 /** Increments Application Update check counter. */
88 void incrementApplicationUpdateCheckCounter();
89#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
90
91 /** Returns recent hard-drive folder. */
92 QString recentFolderForHardDrives() const;
93 /** Returns recent optical-disk folder. */
94 QString recentFolderForOpticalDisks() const;
95 /** Returns recent floppy-disk folder. */
96 QString recentFolderForFloppyDisks() const;
97 /** Defines recent hard-drive folder as @a strValue. */
98 void setRecentFolderForHardDrives(const QString &strValue);
99 /** Defines recent optical-disk folder as @a strValue. */
100 void setRecentFolderForOpticalDisks(const QString &strValue);
101 /** Defines recent floppy-disk folder as @a strValue. */
102 void setRecentFolderForFloppyDisks(const QString &strValue);
103
104 /** Returns recent hard-drive list. */
105 QStringList recentListOfHardDrives() const;
106 /** Returns recent optical-disk list. */
107 QStringList recentListOfOpticalDisks() const;
108 /** Returns recent floppy-disk list. */
109 QStringList recentListOfFloppyDisks() const;
110 /** Defines recent hard-drive list as @a value. */
111 void setRecentListOfHardDrives(const QStringList &value);
112 /** Defines recent optical-disk list as @a value. */
113 void setRecentListOfOpticalDisks(const QStringList &value);
114 /** Defines recent floppy-disk list as @a value. */
115 void setRecentListOfFloppyDisks(const QStringList &value);
116
117 /** Returns list of the supressed messages for the Message/Popup center frameworks. */
118 QStringList suppressedMessages() const;
119 /** Defines list of the supressed messages for the Message/Popup center frameworks as @a value. */
120 void setSuppressedMessages(const QStringList &value);
121
122 /** Returns list of the messages for the Message/Popup center frameworks with inverted check-box state. */
123 QStringList messagesWithInvertedOption() const;
124
125 /** Returns mode (basic/expert) for wizard of @a type. */
126 WizardMode modeForWizard(WizardType type);
127 /** Defines @a mode (basic/expert) for wizard of @a type. */
128 void setModeForWizard(WizardType type, WizardMode mode);
129
130 /** Returns render-mode for machine with passed @a strId. */
131 RenderMode renderMode(const QString &strId) const;
132
133 /** Returns whether this machine started for the first time. */
134 bool isFirstRun(const QString &strId) const;
135 /** Defines whether this machine started for the first time. */
136 void setFirstRun(bool fIsFirstRun, const QString &strId);
137
138 /** Returns whether we should show machine. */
139 bool shouldWeShowMachine(const QString &strID) const;
140 /** Returns whether we should show machine details. */
141 bool shouldWeShowMachineDetails(const QString &strID) const;
142
143 /** Returns whether we should allow machine reconfiguration. */
144 bool shouldWeAllowMachineReconfiguration(const QString &strID) const;
145 /** Returns whether we should allow machine snapshot operations. */
146 bool shouldWeAllowMachineSnapshotOperations(const QString &strID) const;
147
148 /** Returns whether we should automatically mount/unmount guest-screens. */
149 bool shouldWeAutoMountGuestScreens(const QString &strID) const;
150
151 /** Returns restricted Runtime UI menu types. */
152 RuntimeMenuType restrictedRuntimeMenuTypes(const QString &strID) const;
153#ifdef Q_WS_MAC
154 /** Mac OS X: Returns restricted Runtime UI action types for Application menu. */
155 RuntimeMenuApplicationActionType restrictedRuntimeMenuApplicationActionTypes(const QString &strID) const;
156#endif /* Q_WS_MAC */
157 /** Returns restricted Runtime UI action types for Machine menu. */
158 RuntimeMenuMachineActionType restrictedRuntimeMenuMachineActionTypes(const QString &strID) const;
159 /** Returns restricted Runtime UI action types for View menu. */
160 RuntimeMenuViewActionType restrictedRuntimeMenuViewActionTypes(const QString &strID) const;
161 /** Returns restricted Runtime UI action types for Devices menu. */
162 RuntimeMenuDevicesActionType restrictedRuntimeMenuDevicesActionTypes(const QString &strID) const;
163#ifdef VBOX_WITH_DEBUGGER_GUI
164 /** Returns restricted Runtime UI action types for Debugger menu. */
165 RuntimeMenuDebuggerActionType restrictedRuntimeMenuDebuggerActionTypes(const QString &strID) const;
166#endif /* VBOX_WITH_DEBUGGER_GUI */
167 /** Returns restricted Runtime UI action types for Help menu. */
168 RuntimeMenuHelpActionType restrictedRuntimeMenuHelpActionTypes(const QString &strID) const;
169
170 /** Returns restricted Runtime UI visual-state types. */
171 UIVisualStateType restrictedVisualStateTypes(const QString &strID) const;
172
173 /** Returns default machine close action. */
174 MachineCloseAction defaultMachineCloseAction(const QString &strID) const;
175 /** Returns restricted machine close actions. */
176 MachineCloseAction restrictedMachineCloseActions(const QString &strID) const;
177
178 /** Returns restricted Runtime UI status-bar indicators. */
179 QList<IndicatorType> restrictedStatusBarIndicators(const QString &strID) const;
180
181 /** Returns global settings pages. */
182 QList<GlobalSettingsPageType> restrictedGlobalSettingsPages() const;
183 /** Returns machine settings pages. */
184 QList<MachineSettingsPageType> restrictedMachineSettingsPages(const QString &strID) const;
185
186#ifndef Q_WS_MAC
187 /** Except Mac OS X: Returns redefined machine-window icon names. */
188 QStringList machineWindowIconNames(const QString &strID) const;
189 /** Except Mac OS X: Returns redefined machine-window name postfix. */
190 QString machineWindowNamePostfix(const QString &strID) const;
191#endif /* !Q_WS_MAC */
192
193 /** Returns redefined guru-meditation handler type. */
194 GuruMeditationHandlerType guruMeditationHandlerType(const QString &strID) const;
195
196 /** Returns Runtime UI HiDPI optimization type. */
197 HiDPIOptimizationType hiDPIOptimizationType(const QString &strID) const;
198
199private slots:
200
201 /** Handles 'extra-data change' event: */
202 void sltExtraDataChange(QString strMachineID, QString strKey, QString strValue);
203
204private:
205
206 /** Prepare Extra-data Manager. */
207 void prepare();
208 /** Prepare global extra-data map. */
209 void prepareGlobalExtraDataMap();
210 /** Prepare extra-data event-handler. */
211 void prepareExtraDataEventHandler();
212 /** Prepare Main event-listener. */
213 void prepareMainEventListener();
214
215 /** Cleanup Extra-data Manager. */
216 void cleanup();
217 /** Cleanup Main event-listener. */
218 void cleanupMainEventListener();
219 // /** Cleanup extra-data event-handler. */
220 // void cleanupExtraDataEventHandler();
221 // /** Cleanup extra-data map. */
222 // void cleanupExtraDataMap();
223
224 /** Hot-load machine extra-data map. */
225 void hotloadMachineExtraDataMap(const QString &strID) const;
226
227 /** Determines whether feature corresponding to passed @a strKey is allowed.
228 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
229 bool isFeatureAllowed(const QString &strKey, const QString &strID = m_sstrGlobalID) const;
230 /** Determines whether feature corresponding to passed @a strKey is restricted.
231 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
232 bool isFeatureRestricted(const QString &strKey, const QString &strID = m_sstrGlobalID) const;
233
234 /** Translates bool flag into 'allowed' value. */
235 QString toFeatureAllowed(bool fAllowed);
236 /** Translates bool flag into 'restricted' value. */
237 QString toFeatureRestricted(bool fRestricted);
238
239 /** Returns extra-data value corresponding to passed @a strKey as QString.
240 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
241 QString extraDataString(const QString &strKey, const QString &strID = m_sstrGlobalID) const;
242 /** Defines extra-data value corresponding to passed @a strKey as strValue.
243 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
244 void setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID = m_sstrGlobalID);
245
246 /** Returns extra-data value corresponding to passed @a strKey as QStringList.
247 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
248 QStringList extraDataStringList(const QString &strKey, const QString &strID = m_sstrGlobalID) const;
249 /** Defines extra-data value corresponding to passed @a strKey as strValue.
250 * If valid @a strID is set => applies to machine extra-data, otherwise => to global one. */
251 void setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID = m_sstrGlobalID);
252
253 /** Singleton Extra-data Manager instance. */
254 static UIExtraDataManager *m_pInstance;
255
256 /** Global extra-data ID. */
257 static QString m_sstrGlobalID;
258
259 /** Main event-listener instance. */
260 CEventListener m_listener;
261 /** Extra-data event-handler instance. */
262 UIExtraDataEventHandler *m_pHandler;
263
264 /** Extra-data map. */
265 mutable QMap<QString, ExtraDataMap> m_data;
266};
267
268/** Singleton Extra-data Manager 'official' name. */
269#define gEDataManager UIExtraDataManager::instance()
270
271#endif /* !___UIExtraDataManager_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