VirtualBox

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

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

FE/Qt: bugref:9241: Merge UIToolsType, ToolTypeGlobal and ToolTypeMachine into one enum UIToolType; Rename UIToolsClass to UIToolClass.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 36.7 KB
Line 
1/* $Id: UIExtraDataManager.h 75016 2018-10-23 19:42:38Z vboxsync $ */
2/** @file
3 * VBox Qt GUI - UIExtraDataManager class declaration.
4 */
5
6/*
7 * Copyright (C) 2010-2018 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 ___UIExtraDataManager_h___
19#define ___UIExtraDataManager_h___
20
21/* Qt includes: */
22#include <QMap>
23#include <QObject>
24#include <QSize>
25#include <QUuid>
26#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
27# include <QPointer>
28#endif
29
30/* GUI includes: */
31#include "UIExtraDataDefs.h"
32
33/* Forward declarations: */
34class UIExtraDataEventHandler;
35#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
36class UIExtraDataManagerWindow;
37#endif
38
39/** Defines the map of extra data values. The index is an extra-data key. */
40typedef QMap<QString, QString> ExtraDataMap;
41/** Defines the map of extra data maps. */
42typedef QMap<QUuid, ExtraDataMap> MapOfExtraDataMaps;
43
44/** Singleton QObject extension
45 * providing GUI with corresponding extra-data values,
46 * and notifying it whenever any of those values changed. */
47class SHARED_LIBRARY_STUFF UIExtraDataManager : public QObject
48{
49 Q_OBJECT;
50
51 /** Extra-data Manager constructor. */
52 UIExtraDataManager();
53 /** Extra-data Manager destructor. */
54 ~UIExtraDataManager();
55
56signals:
57
58 /** Notifies about extra-data map acknowledging. */
59 void sigExtraDataMapAcknowledging(const QUuid &uID);
60
61 /** Notifies about extra-data change. */
62 void sigExtraDataChange(const QUuid &uID, const QString &strKey, const QString &strValue);
63
64 /** Notifies about GUI language change. */
65 void sigLanguageChange(QString strLanguage);
66
67 /** Notifies about Selector UI keyboard shortcut change. */
68 void sigSelectorUIShortcutChange();
69 /** Notifies about Runtime UI keyboard shortcut change. */
70 void sigRuntimeUIShortcutChange();
71 /** Notifies about Runtime UI host-key combination change. */
72 void sigRuntimeUIHostKeyCombinationChange();
73
74 /** Notifies about menu-bar configuration change. */
75 void sigMenuBarConfigurationChange(const QUuid &uMachineID);
76 /** Notifies about status-bar configuration change. */
77 void sigStatusBarConfigurationChange(const QUuid &uMachineID);
78
79 /** Notifies about HID LEDs synchronization state change. */
80 void sigHidLedsSyncStateChange(bool fEnabled);
81
82 /** Notifies about the scale-factor change. */
83 void sigScaleFactorChange(const QUuid &uMachineID);
84
85 /** Notifies about the scaling optimization type change. */
86 void sigScalingOptimizationTypeChange(const QUuid &uMachineID);
87
88#ifdef VBOX_WS_MAC
89 /** Notifies about the HiDPI optimization type change. */
90 void sigHiDPIOptimizationTypeChange(const QUuid &uMachineID);
91
92 /** Mac OS X: Notifies about 'dock icon' appearance change. */
93 void sigDockIconAppearanceChange(bool fEnabled);
94 /** Mac OS X: Notifies about 'dock icon overlay' appearance change. */
95 void sigDockIconOverlayAppearanceChange(bool fEnabled);
96#endif /* VBOX_WS_MAC */
97
98public:
99
100 /** Global extra-data ID. */
101 static const QUuid GlobalID;
102
103 /** Static Extra-data Manager instance/constructor. */
104 static UIExtraDataManager* instance();
105 /** Static Extra-data Manager destructor. */
106 static void destroy();
107
108#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
109 /** Static show and raise API. */
110 static void openWindow(QWidget *pCenterWidget);
111#endif
112
113 /** @name Base
114 * @{ */
115 /** Returns whether Extra-data Manager cached the map with passed @a uID. */
116 bool contains(const QUuid &uID) const { return m_data.contains(uID); }
117 /** Returns read-only extra-data map for passed @a uID. */
118 const ExtraDataMap map(const QUuid &uID) const { return m_data.value(uID); }
119
120 /** Hot-load machine extra-data map. */
121 void hotloadMachineExtraDataMap(const QUuid &uID);
122
123 /** Returns extra-data value corresponding to passed @a strKey as QString.
124 * If valid @a uID is set => applies to machine extra-data, otherwise => to global one. */
125 QString extraDataString(const QString &strKey, const QUuid &uID = GlobalID);
126 /** Defines extra-data value corresponding to passed @a strKey as strValue.
127 * If valid @a uID is set => applies to machine extra-data, otherwise => to global one. */
128 void setExtraDataString(const QString &strKey, const QString &strValue, const QUuid &uID = GlobalID);
129
130 /** Returns extra-data value corresponding to passed @a strKey as QStringList.
131 * If valid @a uID is set => applies to machine extra-data, otherwise => to global one. */
132 QStringList extraDataStringList(const QString &strKey, const QUuid &uID = GlobalID);
133 /** Defines extra-data value corresponding to passed @a strKey as value.
134 * If valid @a uID is set => applies to machine extra-data, otherwise => to global one. */
135 void setExtraDataStringList(const QString &strKey, const QStringList &value, const QUuid &uID = GlobalID);
136 /** @} */
137
138 /** @name General
139 * @{ */
140 /** Returns event handling type. */
141 EventHandlingType eventHandlingType();
142 /** @} */
143
144 /** @name Messaging
145 * @{ */
146 /** Returns the list of supressed messages for the Message/Popup center frameworks. */
147 QStringList suppressedMessages(const QUuid &uID = GlobalID);
148 /** Defines the @a list of supressed messages for the Message/Popup center frameworks. */
149 void setSuppressedMessages(const QStringList &list);
150
151 /** Returns the list of messages for the Message/Popup center frameworks with inverted check-box state. */
152 QStringList messagesWithInvertedOption();
153
154#if !defined(VBOX_BLEEDING_EDGE) && !defined(DEBUG)
155 /** Returns version for which user wants to prevent BETA build warning. */
156 QString preventBetaBuildWarningForVersion();
157#endif
158 /** @} */
159
160#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
161 /** @name Application Update
162 * @{ */
163 /** Returns whether Application Update functionality enabled. */
164 bool applicationUpdateEnabled();
165
166 /** Returns Application Update data. */
167 QString applicationUpdateData();
168 /** Defines Application Update data as @a strValue. */
169 void setApplicationUpdateData(const QString &strValue);
170
171 /** Returns Application Update check counter. */
172 qulonglong applicationUpdateCheckCounter();
173 /** Increments Application Update check counter. */
174 void incrementApplicationUpdateCheckCounter();
175 /** @} */
176#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
177
178 /** @name Progress
179 * @{ */
180 /** Returns whether legacy progress handling method is requested. */
181 bool legacyProgressHandlingRequested();
182 /** @} */
183
184 /** @name Settings
185 * @{ */
186 /** Returns whether GUI @a enmFeature is enabled. */
187 bool guiFeatureEnabled(GUIFeatureType enmFeature);
188
189 /** Returns restricted global settings pages. */
190 QList<GlobalSettingsPageType> restrictedGlobalSettingsPages();
191 /** Returns restricted machine settings pages. */
192 QList<MachineSettingsPageType> restrictedMachineSettingsPages(const QUuid &uID);
193 /** @} */
194
195 /** @name Settings: General
196 * @{ */
197 /** Returns whether the host screen-saver should be disabled. */
198 bool hostScreenSaverDisabled();
199 /** Defines whether the host screen-saver should be @a fDisabled. */
200 void setHostScreenSaverDisabled(bool fDisabled);
201 /** @} */
202
203 /** @name Settings: Language
204 * @{ */
205 /** Returns the GUI language ID. */
206 QString languageId();
207 /** Defines the GUI @a strLanguageId. */
208 void setLanguageId(const QString &strLanguageId);
209 /** @} */
210
211 /** @name Settings: Display
212 * @{ */
213 /** Returns maximum guest-screen resolution policy. */
214 MaxGuestResolutionPolicy maxGuestResolutionPolicy();
215 /** Defines maximum guest-screen resolution @a enmPolicy or @a resolution itself for Fixed policy. */
216 void setMaxGuestScreenResolution(MaxGuestResolutionPolicy enmPolicy, const QSize resolution = QSize());
217 /** Returns maximum guest-screen resolution for fixed policy. */
218 QSize maxGuestResolutionForPolicyFixed();
219 /** Defines maximum guest-screen @a resolution for fixed policy. */
220 void setMaxGuestResolutionForPolicyFixed(const QSize &resolution);
221
222 /** Returns whether hovered machine-window should be activated. */
223 bool activateHoveredMachineWindow();
224 /** Defines whether hovered machine-window should be @a fActivated. */
225 void setActivateHoveredMachineWindow(bool fActivate);
226 /** @} */
227
228 /** @name Settings: Keyboard
229 * @{ */
230 /** Returns the Runtime UI host-key combination. */
231 QString hostKeyCombination();
232 /** Defines the Runtime UI host-key combination. */
233 void setHostKeyCombination(const QString &strHostCombo);
234
235 /** Returns shortcut overrides for shortcut-pool with @a strPoolExtraDataID. */
236 QStringList shortcutOverrides(const QString &strPoolExtraDataID);
237
238 /** Returns whether the Runtime UI auto-capture is enabled. */
239 bool autoCaptureEnabled();
240 /** Defines whether the Runtime UI auto-capture is @a fEnabled. */
241 void setAutoCaptureEnabled(bool fEnabled);
242
243 /** Returns the Runtime UI remapped scan codes. */
244 QString remappedScanCodes();
245 /** @} */
246
247 /** @name Settings: Proxy
248 * @{ */
249 /** Returns VBox proxy settings. */
250 QString proxySettings();
251 /** Defines VBox proxy @a strSettings. */
252 void setProxySettings(const QString &strSettings);
253 /** @} */
254
255 /** @name Settings: Storage
256 * @{ */
257 /** Returns recent folder for hard-drives. */
258 QString recentFolderForHardDrives();
259 /** Returns recent folder for optical-disks. */
260 QString recentFolderForOpticalDisks();
261 /** Returns recent folder for floppy-disks. */
262 QString recentFolderForFloppyDisks();
263 /** Returns recent folder for VISO creation content. */
264 QString recentFolderForVISOContent();
265 /** Defines recent folder for hard-drives as @a strValue. */
266 void setRecentFolderForHardDrives(const QString &strValue);
267 /** Defines recent folder for optical-disk as @a strValue. */
268 void setRecentFolderForOpticalDisks(const QString &strValue);
269 /** Defines recent folder for floppy-disk as @a strValue. */
270 void setRecentFolderForFloppyDisks(const QString &strValue);
271 /** Defines recent folder for VISO creation content as @a strValue. */
272 void setRecentFolderForVISOContent(const QString &strValue);
273
274 /** Returns the list of recently used hard-drives. */
275 QStringList recentListOfHardDrives();
276 /** Returns the list of recently used optical-disk. */
277 QStringList recentListOfOpticalDisks();
278 /** Returns the list of recently used floppy-disk. */
279 QStringList recentListOfFloppyDisks();
280 /** Defines the list of recently used hard-drives as @a value. */
281 void setRecentListOfHardDrives(const QStringList &value);
282 /** Defines the list of recently used optical-disks as @a value. */
283 void setRecentListOfOpticalDisks(const QStringList &value);
284 /** Defines the list of recently used floppy-disks as @a value. */
285 void setRecentListOfFloppyDisks(const QStringList &value);
286 /** @} */
287
288 /** @name VirtualBox Manager
289 * @{ */
290 /** Returns selector-window geometry using @a pWidget as the hint. */
291 QRect selectorWindowGeometry(QWidget *pWidget);
292 /** Returns whether selector-window should be maximized. */
293 bool selectorWindowShouldBeMaximized();
294 /** Defines selector-window @a geometry and @a fMaximized state. */
295 void setSelectorWindowGeometry(const QRect &geometry, bool fMaximized);
296
297 /** Returns selector-window splitter hints. */
298 QList<int> selectorWindowSplitterHints();
299 /** Defines selector-window splitter @a hints. */
300 void setSelectorWindowSplitterHints(const QList<int> &hints);
301
302 /** Returns whether selector-window tool-bar visible. */
303 bool selectorWindowToolBarVisible();
304 /** Defines whether selector-window tool-bar @a fVisible. */
305 void setSelectorWindowToolBarVisible(bool fVisible);
306
307 /** Returns whether selector-window tool-bar text visible. */
308 bool selectorWindowToolBarTextVisible();
309 /** Defines whether selector-window tool-bar text @a fVisible. */
310 void setSelectorWindowToolBarTextVisible(bool fVisible);
311
312 /** Returns last selected tool set of VirtualBox Manager. */
313 QString toolsPaneLastItemsChosen();
314 /** Defines last selected tool @a strSet of VirtualBox Manager. */
315 void setToolsPaneLastItemsChosen(const QString &strSet);
316
317 /** Returns whether selector-window status-bar visible. */
318 bool selectorWindowStatusBarVisible();
319 /** Defines whether selector-window status-bar @a fVisible. */
320 void setSelectorWindowStatusBarVisible(bool fVisible);
321
322 /** Clears all the existing selector-window chooser-pane' group definitions. */
323 void clearSelectorWindowGroupsDefinitions();
324 /** Returns selector-window chooser-pane' groups definitions for passed @a strGroupID. */
325 QStringList selectorWindowGroupsDefinitions(const QString &strGroupID);
326 /** Defines selector-window chooser-pane' groups @a definitions for passed @a strGroupID. */
327 void setSelectorWindowGroupsDefinitions(const QString &strGroupID, const QStringList &definitions);
328
329 /** Returns last-item ID of the item chosen in selector-window chooser-pane. */
330 QString selectorWindowLastItemChosen();
331 /** Defines @a lastItemID of the item chosen in selector-window chooser-pane. */
332 void setSelectorWindowLastItemChosen(const QString &strItemID);
333
334 /** Returns selector-window details-pane' elements. */
335 QMap<DetailsElementType, bool> selectorWindowDetailsElements();
336 /** Defines selector-window details-pane' @a elements. */
337 void setSelectorWindowDetailsElements(const QMap<DetailsElementType, bool> &elements);
338
339 /** Returns selector-window details-pane' preview update interval. */
340 PreviewUpdateIntervalType selectorWindowPreviewUpdateInterval();
341 /** Defines selector-window details-pane' preview update @a interval. */
342 void setSelectorWindowPreviewUpdateInterval(PreviewUpdateIntervalType interval);
343 /** @} */
344
345 /** @name Snapshot Manager
346 * @{ */
347 /** Returns whether Snapshot Manager details expanded. */
348 bool snapshotManagerDetailsExpanded();
349 /** Defines whether Snapshot Manager details @a fExpanded. */
350 void setSnapshotManagerDetailsExpanded(bool fExpanded);
351 /** @} */
352
353 /** @name Virtual Media Manager
354 * @{ */
355 /** Returns whether Virtual Media Manager details expanded. */
356 bool virtualMediaManagerDetailsExpanded();
357 /** Defines whether Virtual Media Manager details @a fExpanded. */
358 void setVirtualMediaManagerDetailsExpanded(bool fExpanded);
359 /** @} */
360
361 /** @name Host Network Manager
362 * @{ */
363 /** Returns whether Host Network Manager details expanded. */
364 bool hostNetworkManagerDetailsExpanded();
365 /** Defines whether Host Network Manager details @a fExpanded. */
366 void setHostNetworkManagerDetailsExpanded(bool fExpanded);
367 /** @} */
368
369 /** @name Cloud Profile Manager
370 * @{ */
371 /** Returns whether Cloud Profile Manager details expanded. */
372 bool cloudProfileManagerDetailsExpanded();
373 /** Defines whether Cloud Profile Manager details @a fExpanded. */
374 void setCloudProfileManagerDetailsExpanded(bool fExpanded);
375 /** @} */
376
377 /** @name Wizards
378 * @{ */
379 /** Returns mode for wizard of passed @a type. */
380 WizardMode modeForWizardType(WizardType type);
381 /** Defines @a mode for wizard of passed @a type. */
382 void setModeForWizardType(WizardType type, WizardMode mode);
383 /** @} */
384
385 /** @name Virtual Machine
386 * @{ */
387 /** Returns whether machine should be shown in selector-window chooser-pane. */
388 bool showMachineInSelectorChooser(const QUuid &uID);
389 /** Returns whether machine should be shown in selector-window details-pane. */
390 bool showMachineInSelectorDetails(const QUuid &uID);
391
392 /** Returns whether machine reconfiguration enabled. */
393 bool machineReconfigurationEnabled(const QUuid &uID);
394 /** Returns whether machine snapshot operations enabled. */
395 bool machineSnapshotOperationsEnabled(const QUuid &uID);
396
397 /** Returns whether this machine is first time started. */
398 bool machineFirstTimeStarted(const QUuid &uID);
399 /** Returns whether this machine is fFirstTimeStarted. */
400 void setMachineFirstTimeStarted(bool fFirstTimeStarted, const QUuid &uID);
401
402 /** Except Mac OS X: Returns redefined machine-window icon names. */
403 QStringList machineWindowIconNames(const QUuid &uID);
404#ifndef VBOX_WS_MAC
405 /** Except Mac OS X: Returns redefined machine-window name postfix. */
406 QString machineWindowNamePostfix(const QUuid &uID);
407#endif
408
409 /** Returns geometry for machine-window with @a uScreenIndex in @a visualStateType. */
410 QRect machineWindowGeometry(UIVisualStateType visualStateType, ulong uScreenIndex, const QUuid &uID);
411 /** Returns whether machine-window with @a uScreenIndex in @a visualStateType should be maximized. */
412 bool machineWindowShouldBeMaximized(UIVisualStateType visualStateType, ulong uScreenIndex, const QUuid &uID);
413 /** Defines @a geometry and @a fMaximized state for machine-window with @a uScreenIndex in @a visualStateType. */
414 void setMachineWindowGeometry(UIVisualStateType visualStateType, ulong uScreenIndex, const QRect &geometry, bool fMaximized, const QUuid &uID);
415
416#ifndef VBOX_WS_MAC
417 /** Returns whether Runtime UI menu-bar is enabled. */
418 bool menuBarEnabled(const QUuid &uID);
419 /** Defines whether Runtime UI menu-bar is @a fEnabled. */
420 void setMenuBarEnabled(bool fEnabled, const QUuid &uID);
421#endif /* !VBOX_WS_MAC */
422
423 /** Returns whether Runtime UI menu-bar context-menu is enabled. */
424 bool menuBarContextMenuEnabled(const QUuid &uID);
425 /** Defines whether Runtime UI menu-bar context-menu is @a fEnabled. */
426 void setMenuBarContextMenuEnabled(bool fEnabled, const QUuid &uID);
427
428 /** Returns restricted Runtime UI menu types. */
429 UIExtraDataMetaDefs::MenuType restrictedRuntimeMenuTypes(const QUuid &uID);
430 /** Defines restricted Runtime UI menu types. */
431 void setRestrictedRuntimeMenuTypes(UIExtraDataMetaDefs::MenuType types, const QUuid &uID);
432
433 /** Returns restricted Runtime UI action types for Application menu. */
434 UIExtraDataMetaDefs::MenuApplicationActionType restrictedRuntimeMenuApplicationActionTypes(const QUuid &uID);
435 /** Defines restricted Runtime UI action types for Application menu. */
436 void setRestrictedRuntimeMenuApplicationActionTypes(UIExtraDataMetaDefs::MenuApplicationActionType types, const QUuid &uID);
437
438 /** Returns restricted Runtime UI action types for Machine menu. */
439 UIExtraDataMetaDefs::RuntimeMenuMachineActionType restrictedRuntimeMenuMachineActionTypes(const QUuid &uID);
440 /** Defines restricted Runtime UI action types for Machine menu. */
441 void setRestrictedRuntimeMenuMachineActionTypes(UIExtraDataMetaDefs::RuntimeMenuMachineActionType types, const QUuid &uID);
442
443 /** Returns restricted Runtime UI action types for View menu. */
444 UIExtraDataMetaDefs::RuntimeMenuViewActionType restrictedRuntimeMenuViewActionTypes(const QUuid &uID);
445 /** Defines restricted Runtime UI action types for View menu. */
446 void setRestrictedRuntimeMenuViewActionTypes(UIExtraDataMetaDefs::RuntimeMenuViewActionType types, const QUuid &uID);
447
448 /** Returns restricted Runtime UI action types for Input menu. */
449 UIExtraDataMetaDefs::RuntimeMenuInputActionType restrictedRuntimeMenuInputActionTypes(const QUuid &uID);
450 /** Defines restricted Runtime UI action types for Input menu. */
451 void setRestrictedRuntimeMenuInputActionTypes(UIExtraDataMetaDefs::RuntimeMenuInputActionType types, const QUuid &uID);
452
453 /** Returns restricted Runtime UI action types for Devices menu. */
454 UIExtraDataMetaDefs::RuntimeMenuDevicesActionType restrictedRuntimeMenuDevicesActionTypes(const QUuid &uID);
455 /** Defines restricted Runtime UI action types for Devices menu. */
456 void setRestrictedRuntimeMenuDevicesActionTypes(UIExtraDataMetaDefs::RuntimeMenuDevicesActionType types, const QUuid &uID);
457
458#ifdef VBOX_WITH_DEBUGGER_GUI
459 /** Returns restricted Runtime UI action types for Debugger menu. */
460 UIExtraDataMetaDefs::RuntimeMenuDebuggerActionType restrictedRuntimeMenuDebuggerActionTypes(const QUuid &uID);
461 /** Defines restricted Runtime UI action types for Debugger menu. */
462 void setRestrictedRuntimeMenuDebuggerActionTypes(UIExtraDataMetaDefs::RuntimeMenuDebuggerActionType types, const QUuid &uID);
463#endif /* VBOX_WITH_DEBUGGER_GUI */
464
465#ifdef VBOX_WS_MAC
466 /** Mac OS X: Returns restricted Runtime UI action types for Window menu. */
467 UIExtraDataMetaDefs::MenuWindowActionType restrictedRuntimeMenuWindowActionTypes(const QUuid &uID);
468 /** Mac OS X: Defines restricted Runtime UI action types for Window menu. */
469 void setRestrictedRuntimeMenuWindowActionTypes(UIExtraDataMetaDefs::MenuWindowActionType types, const QUuid &uID);
470#endif /* VBOX_WS_MAC */
471
472 /** Returns restricted Runtime UI action types for Help menu. */
473 UIExtraDataMetaDefs::MenuHelpActionType restrictedRuntimeMenuHelpActionTypes(const QUuid &uID);
474 /** Defines restricted Runtime UI action types for Help menu. */
475 void setRestrictedRuntimeMenuHelpActionTypes(UIExtraDataMetaDefs::MenuHelpActionType types, const QUuid &uID);
476
477 /** Returns restricted Runtime UI visual-states. */
478 UIVisualStateType restrictedVisualStates(const QUuid &uID);
479
480 /** Returns requested Runtime UI visual-state. */
481 UIVisualStateType requestedVisualState(const QUuid &uID);
482 /** Defines requested Runtime UI visual-state as @a visualState. */
483 void setRequestedVisualState(UIVisualStateType visualState, const QUuid &uID);
484
485#ifdef VBOX_WS_X11
486 /** Returns whether legacy full-screen mode is requested. */
487 bool legacyFullscreenModeRequested();
488
489 /** Returns whether internal machine-window name should be unique. */
490 bool distinguishMachineWindowGroups(const QUuid &uID);
491 /** Defines whether internal machine-window name should be unique. */
492 void setDistinguishMachineWindowGroups(const QUuid &uID, bool fEnabled);
493#endif /* VBOX_WS_X11 */
494
495 /** Returns whether guest-screen auto-resize according machine-window size is enabled. */
496 bool guestScreenAutoResizeEnabled(const QUuid &uID);
497 /** Defines whether guest-screen auto-resize according machine-window size is @a fEnabled. */
498 void setGuestScreenAutoResizeEnabled(bool fEnabled, const QUuid &uID);
499
500 /** Returns last guest-screen visibility status for screen with @a uScreenIndex. */
501 bool lastGuestScreenVisibilityStatus(ulong uScreenIndex, const QUuid &uID);
502 /** Defines whether last guest-screen visibility status was @a fEnabled for screen with @a uScreenIndex. */
503 void setLastGuestScreenVisibilityStatus(ulong uScreenIndex, bool fEnabled, const QUuid &uID);
504
505 /** Returns last guest-screen size-hint for screen with @a uScreenIndex. */
506 QSize lastGuestScreenSizeHint(ulong uScreenIndex, const QUuid &uID);
507 /** Defines last guest-screen @a sizeHint for screen with @a uScreenIndex. */
508 void setLastGuestScreenSizeHint(ulong uScreenIndex, const QSize &sizeHint, const QUuid &uID);
509
510 /** Returns host-screen index corresponding to passed guest-screen @a iGuestScreenIndex. */
511 int hostScreenForPassedGuestScreen(int iGuestScreenIndex, const QUuid &uID);
512 /** Defines @a iHostScreenIndex corresponding to passed guest-screen @a iGuestScreenIndex. */
513 void setHostScreenForPassedGuestScreen(int iGuestScreenIndex, int iHostScreenIndex, const QUuid &uID);
514
515 /** Returns whether automatic mounting/unmounting of guest-screens enabled. */
516 bool autoMountGuestScreensEnabled(const QUuid &uID);
517
518#ifdef VBOX_WITH_VIDEOHWACCEL
519 /** Returns whether 2D acceleration should use linear sretch. */
520 bool useLinearStretch(const QUuid &uID);
521 /** Returns whether 2D acceleration should use YV12 pixel format. */
522 bool usePixelFormatYV12(const QUuid &uID);
523 /** Returns whether 2D acceleration should use UYVY pixel format. */
524 bool usePixelFormatUYVY(const QUuid &uID);
525 /** Returns whether 2D acceleration should use YUY2 pixel format. */
526 bool usePixelFormatYUY2(const QUuid &uID);
527 /** Returns whether 2D acceleration should use AYUV pixel format. */
528 bool usePixelFormatAYUV(const QUuid &uID);
529#endif /* VBOX_WITH_VIDEOHWACCEL */
530
531#ifndef VBOX_WS_MAC
532 /** Returns whether mini-toolbar is enabled for full and seamless screens. */
533 bool miniToolbarEnabled(const QUuid &uID);
534 /** Defines whether mini-toolbar is @a fEnabled for full and seamless screens. */
535 void setMiniToolbarEnabled(bool fEnabled, const QUuid &uID);
536
537 /** Returns whether mini-toolbar should auto-hide itself. */
538 bool autoHideMiniToolbar(const QUuid &uID);
539 /** Defines whether mini-toolbar should @a fAutoHide itself. */
540 void setAutoHideMiniToolbar(bool fAutoHide, const QUuid &uID);
541
542 /** Returns mini-toolbar alignment. */
543 Qt::AlignmentFlag miniToolbarAlignment(const QUuid &uID);
544 /** Returns mini-toolbar @a alignment. */
545 void setMiniToolbarAlignment(Qt::AlignmentFlag alignment, const QUuid &uID);
546#endif /* VBOX_WS_MAC */
547
548 /** Returns whether Runtime UI status-bar is enabled. */
549 bool statusBarEnabled(const QUuid &uID);
550 /** Defines whether Runtime UI status-bar is @a fEnabled. */
551 void setStatusBarEnabled(bool fEnabled, const QUuid &uID);
552
553 /** Returns whether Runtime UI status-bar context-menu is enabled. */
554 bool statusBarContextMenuEnabled(const QUuid &uID);
555 /** Defines whether Runtime UI status-bar context-menu is @a fEnabled. */
556 void setStatusBarContextMenuEnabled(bool fEnabled, const QUuid &uID);
557
558 /** Returns restricted Runtime UI status-bar indicator list. */
559 QList<IndicatorType> restrictedStatusBarIndicators(const QUuid &uID);
560 /** Defines restricted Runtime UI status-bar indicator @a list. */
561 void setRestrictedStatusBarIndicators(const QList<IndicatorType> &list, const QUuid &uID);
562
563 /** Returns Runtime UI status-bar indicator order list. */
564 QList<IndicatorType> statusBarIndicatorOrder(const QUuid &uID);
565 /** Defines Runtime UI status-bar indicator order @a list. */
566 void setStatusBarIndicatorOrder(const QList<IndicatorType> &list, const QUuid &uID);
567
568#ifdef VBOX_WS_MAC
569 /** Mac OS X: Returns whether Dock icon should be updated at runtime. */
570 bool realtimeDockIconUpdateEnabled(const QUuid &uID);
571 /** Mac OS X: Defines whether Dock icon update should be fEnabled at runtime. */
572 void setRealtimeDockIconUpdateEnabled(bool fEnabled, const QUuid &uID);
573
574 /** Mac OS X: Returns guest-screen which Dock icon should reflect at runtime. */
575 int realtimeDockIconUpdateMonitor(const QUuid &uID);
576 /** Mac OS X: Defines guest-screen @a iIndex which Dock icon should reflect at runtime. */
577 void setRealtimeDockIconUpdateMonitor(int iIndex, const QUuid &uID);
578
579 /** Mac OS X: Returns whether Dock icon overlay is disabled. */
580 bool dockIconDisableOverlay(const QUuid &uID);
581 /** Mac OS X: Defines whether Dock icon overlay is @a fDisabled. */
582 void setDockIconDisableOverlay(bool fDisabled, const QUuid &uID);
583#endif /* VBOX_WS_MAC */
584
585 /** Returns whether machine should pass CAD to guest. */
586 bool passCADtoGuest(const QUuid &uID);
587
588 /** Returns the mouse-capture policy. */
589 MouseCapturePolicy mouseCapturePolicy(const QUuid &uID);
590
591 /** Returns redefined guru-meditation handler type. */
592 GuruMeditationHandlerType guruMeditationHandlerType(const QUuid &uID);
593
594 /** Returns whether machine should perform HID LEDs synchronization. */
595 bool hidLedsSyncState(const QUuid &uID);
596
597 /** Returns the scale-factor. */
598 double scaleFactor(const QUuid &uID, const int uScreenIndex);
599 QList<double> scaleFactors(const QUuid &uID);
600 /** Saves the @a dScaleFactor for the monitor with @a uScreenIndex. If the existing scale factor
601 * list (from extra data) does not have scale factors for the screens with ids in [0, uScreenIndex)
602 * the this function appends a default scale factor for said screens.*/
603 void setScaleFactor(double dScaleFactor, const QUuid &uID, const int uScreenIndex);
604 /** Replaces the scale factor list of the machine with @a uID with @a scaleFactors. */
605 void setScaleFactors(const QList<double> &scaleFactors, const QUuid &uID);
606
607 /** Returns the scaling optimization type. */
608 ScalingOptimizationType scalingOptimizationType(const QUuid &uID);
609 /** @} */
610
611 /** @name Virtual Machine: Information dialog
612 * @{ */
613 /** Returns information-window geometry using @a pWidget and @a pParentWidget as hints. */
614 QRect informationWindowGeometry(QWidget *pWidget, QWidget *pParentWidget, const QUuid &uID);
615 /** Returns whether information-window should be maximized or not. */
616 bool informationWindowShouldBeMaximized(const QUuid &uID);
617 /** Defines information-window @a geometry and @a fMaximized state. */
618 void setInformationWindowGeometry(const QRect &geometry, bool fMaximized, const QUuid &uID);
619
620 /** Returns information-window elements. */
621 QMap<InformationElementType, bool> informationWindowElements();
622 /** Defines information-window @a elements. */
623 void setInformationWindowElements(const QMap<InformationElementType, bool> &elements);
624 void setGuestSessionManagerTabSplitterHints(const QList<int> &hints);
625 void setGuestFileManagerTabSplitterHints(const QList<int> &hints);
626 QList<int> guestSessionManagerTabSplitterHints();
627 QList<int> guestFileManagerTabSplitterHints();
628 /** @} */
629
630 /** @name Virtual Machine: Close dialog
631 * @{ */
632 /** Returns default machine close action. */
633 MachineCloseAction defaultMachineCloseAction(const QUuid &uID);
634 /** Returns restricted machine close actions. */
635 MachineCloseAction restrictedMachineCloseActions(const QUuid &uID);
636
637 /** Returns last machine close action. */
638 MachineCloseAction lastMachineCloseAction(const QUuid &uID);
639 /** Defines last @a machineCloseAction. */
640 void setLastMachineCloseAction(MachineCloseAction machineCloseAction, const QUuid &uID);
641
642 /** Returns machine close hook script name as simple string. */
643 QString machineCloseHookScript(const QUuid &uID);
644 /** @} */
645
646#ifdef VBOX_WITH_DEBUGGER_GUI
647 /** @name Virtual Machine: Debug UI
648 * @{ */
649 /** Returns debug flag value for passed @a strDebugFlagKey. */
650 QString debugFlagValue(const QString &strDebugFlagKey);
651 /** @} */
652#endif /* VBOX_WITH_DEBUGGER_GUI */
653
654#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
655 /** @name VirtualBox: Extra-data Manager window
656 * @{ */
657 /** Returns Extra-data Manager geometry using @a pWidget as hint. */
658 QRect extraDataManagerGeometry(QWidget *pWidget);
659 /** Returns whether Extra-data Manager should be maximized or not. */
660 bool extraDataManagerShouldBeMaximized();
661 /** Defines Extra-data Manager @a geometry and @a fMaximized state. */
662 void setExtraDataManagerGeometry(const QRect &geometry, bool fMaximized);
663
664 /** Returns Extra-data Manager splitter hints using @a pWidget as hint. */
665 QList<int> extraDataManagerSplitterHints(QWidget *pWidget);
666 /** Defines Extra-data Manager splitter @a hints. */
667 void setExtraDataManagerSplitterHints(const QList<int> &hints);
668 /** @} */
669#endif /* VBOX_GUI_WITH_EXTRADATA_MANAGER_UI */
670
671 /** @name Virtual Machine: Log Viewer dialog
672 * @{ */
673 /** Returns log-window geometry using @a pWidget and @a defaultGeometry as hints. */
674 QRect logWindowGeometry(QWidget *pWidget, const QRect &defaultGeometry);
675 /** Returns whether log-window should be maximized or not. */
676 bool logWindowShouldBeMaximized();
677 /** Defines log-window @a geometry and @a fMaximized state. */
678 void setLogWindowGeometry(const QRect &geometry, bool fMaximized);
679 /** @} */
680
681 /** @name Virtual Machine: Log Viewer widget settings
682 * @{ */
683 void setLogViweverSettings(const QFont &font, bool wrapLines, bool showLineNumbers);
684 /** Returns log-viewer line wrapping flag. */
685 bool logViewerWrapLines();
686 /** Returns log-viewer show line numbers flag. */
687 bool logViewerShowLineNumbers();
688 /** Tries to find system font by searching by family and style strings within the font database. */
689 QFont logViewerFont();
690 /** @} */
691
692private slots:
693
694 /** Handles 'extra-data change' event: */
695 void sltExtraDataChange(const QUuid &uMachineID, const QString &strKey, const QString &strValue);
696
697private:
698
699 /** Prepare Extra-data Manager. */
700 void prepare();
701 /** Prepare global extra-data map. */
702 void prepareGlobalExtraDataMap();
703 /** Prepare extra-data event-handler. */
704 void prepareExtraDataEventHandler();
705#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
706 // /** Prepare window. */
707 // void prepareWindow();
708
709 /** Cleanup window. */
710 void cleanupWindow();
711#endif /* VBOX_GUI_WITH_EXTRADATA_MANAGER_UI */
712 /** Cleanup extra-data event-handler. */
713 void cleanupExtraDataEventHandler();
714 // /** Cleanup extra-data map. */
715 // void cleanupExtraDataMap();
716 /** Cleanup Extra-data Manager. */
717 void cleanup();
718
719#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
720 /** Open window. */
721 void open(QWidget *pCenterWidget);
722#endif
723
724 /** Retrieves an extra-data key from both machine and global sources.
725 *
726 * If @a uID isn't #GlobalID, this will first check the extra-data associated
727 * with the machine given by @a uID then fallback on the global extra-data.
728 *
729 * @returns String value if found, null string if not.
730 * @param strKey The extra-data key to get.
731 * @param uID Machine UUID or #GlobalID.
732 * @param strValue Where to return the value when found. */
733 QString extraDataStringUnion(const QString &strKey, const QUuid &uID);
734 /** Determines whether feature corresponding to passed @a strKey is allowed.
735 * If valid @a uID is set => applies to machine and global extra-data,
736 * otherwise => only to global one. */
737 bool isFeatureAllowed(const QString &strKey, const QUuid &uID = GlobalID);
738 /** Determines whether feature corresponding to passed @a strKey is restricted.
739 * If valid @a uID is set => applies to machine and global extra-data,
740 * otherwise => only to global one. */
741 bool isFeatureRestricted(const QString &strKey, const QUuid &uID = GlobalID);
742
743 /** Translates bool flag into QString value. */
744 QString toFeatureState(bool fState);
745 /** Translates bool flag into 'allowed' value. */
746 QString toFeatureAllowed(bool fAllowed);
747 /** Translates bool flag into 'restricted' value. */
748 QString toFeatureRestricted(bool fRestricted);
749
750 /** Returns string consisting of @a strBase appended with @a uScreenIndex for the *non-primary* screen-index.
751 * If @a fSameRuleForPrimary is 'true' same rule will be used for *primary* screen-index. Used for storing per-screen extra-data. */
752 static QString extraDataKeyPerScreen(const QString &strBase, ulong uScreenIndex, bool fSameRuleForPrimary = false);
753
754 /** Holds the singleton instance. */
755 static UIExtraDataManager *s_pInstance;
756
757 /** Holds extra-data event-handler instance. */
758 UIExtraDataEventHandler *m_pHandler;
759
760 /** Holds extra-data map instance. */
761 MapOfExtraDataMaps m_data;
762
763#ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
764 /** Holds Extra-data Manager window instance. */
765 QPointer<UIExtraDataManagerWindow> m_pWindow;
766#endif
767};
768
769/** Singleton Extra-data Manager 'official' name. */
770#define gEDataManager UIExtraDataManager::instance()
771
772#endif /* !___UIExtraDataManager_h___ */
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