VirtualBox

source: vbox/trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h@ 7235

Last change on this file since 7235 was 7235, checked in by vboxsync, 17 years ago

Use the new resource system of qt4. Most of the icons should be there again.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 22.0 KB
Line 
1/** @file
2 *
3 * VBox frontends: Qt GUI ("VirtualBox"):
4 * VBoxGlobal class declaration
5 */
6
7/*
8 * Copyright (C) 2006-2007 innotek GmbH
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
19#ifndef __VBoxGlobal_h__
20#define __VBoxGlobal_h__
21
22#include "COMDefs.h"
23
24#include "VBoxGlobalSettings.h"
25
26#include <qapplication.h>
27#include <qpixmap.h>
28#include <qicon.h>
29#include <qcolor.h>
30#include <quuid.h>
31#include <qthread.h>
32#include <q3popupmenu.h>
33#include <qtooltip.h>
34
35#include <q3ptrvector.h>
36#include <q3valuevector.h>
37#include <q3valuelist.h>
38#include <q3dict.h>
39#include <q3intdict.h>
40//Added by qt3to4:
41#include <QLabel>
42#include <QEvent>
43
44class QAction;
45class QLabel;
46class QToolButton;
47
48// Auxiliary types
49////////////////////////////////////////////////////////////////////////////////
50
51/** Simple media descriptor type. */
52struct VBoxMedia
53{
54 enum Status { Unknown, Ok, Error, Inaccessible };
55
56 VBoxMedia() : type (VBoxDefs::InvalidType), status (Ok) {}
57
58 VBoxMedia (const CUnknown &d, VBoxDefs::DiskType t, Status s)
59 : disk (d), type (t), status (s) {}
60
61 CUnknown disk;
62 VBoxDefs::DiskType type;
63 Status status;
64};
65
66typedef Q3ValueList <VBoxMedia> VBoxMediaList;
67
68// VirtualBox callback events
69////////////////////////////////////////////////////////////////////////////////
70
71class VBoxMachineStateChangeEvent : public QEvent
72{
73public:
74 VBoxMachineStateChangeEvent (const QUuid &aId, KMachineState aState)
75 : QEvent ((QEvent::Type) VBoxDefs::MachineStateChangeEventType)
76 , id (aId), state (aState)
77 {}
78
79 const QUuid id;
80 const KMachineState state;
81};
82
83class VBoxMachineDataChangeEvent : public QEvent
84{
85public:
86 VBoxMachineDataChangeEvent (const QUuid &aId)
87 : QEvent ((QEvent::Type) VBoxDefs::MachineDataChangeEventType)
88 , id (aId)
89 {}
90
91 const QUuid id;
92};
93
94class VBoxMachineRegisteredEvent : public QEvent
95{
96public:
97 VBoxMachineRegisteredEvent (const QUuid &aId, bool aRegistered)
98 : QEvent ((QEvent::Type) VBoxDefs::MachineRegisteredEventType)
99 , id (aId), registered (aRegistered)
100 {}
101
102 const QUuid id;
103 const bool registered;
104};
105
106class VBoxSessionStateChangeEvent : public QEvent
107{
108public:
109 VBoxSessionStateChangeEvent (const QUuid &aId, KSessionState aState)
110 : QEvent ((QEvent::Type) VBoxDefs::SessionStateChangeEventType)
111 , id (aId), state (aState)
112 {}
113
114 const QUuid id;
115 const KSessionState state;
116};
117
118class VBoxSnapshotEvent : public QEvent
119{
120public:
121
122 enum What { Taken, Discarded, Changed };
123
124 VBoxSnapshotEvent (const QUuid &aMachineId, const QUuid &aSnapshotId,
125 What aWhat)
126 : QEvent ((QEvent::Type) VBoxDefs::SnapshotEventType)
127 , what (aWhat)
128 , machineId (aMachineId), snapshotId (aSnapshotId)
129 {}
130
131 const What what;
132
133 const QUuid machineId;
134 const QUuid snapshotId;
135};
136
137class VBoxCanShowRegDlgEvent : public QEvent
138{
139public:
140 VBoxCanShowRegDlgEvent (bool aCanShow)
141 : QEvent ((QEvent::Type) VBoxDefs::CanShowRegDlgEventType)
142 , mCanShow (aCanShow)
143 {}
144
145 const bool mCanShow;
146};
147
148// VBoxGlobal
149////////////////////////////////////////////////////////////////////////////////
150
151class VBoxSelectorWnd;
152class VBoxConsoleWnd;
153class VBoxRegistrationDlg;
154
155class VBoxGlobal : public QObject
156{
157 Q_OBJECT
158
159public:
160
161 static VBoxGlobal &instance();
162
163 bool isValid() { return mValid; }
164
165 QString versionString() { return verString; }
166
167 CVirtualBox virtualBox() const { return mVBox; }
168
169 const VBoxGlobalSettings &settings() const { return gset; }
170 bool setSettings (const VBoxGlobalSettings &gs);
171
172 VBoxSelectorWnd &selectorWnd();
173 VBoxConsoleWnd &consoleWnd();
174
175 bool isVMConsoleProcess() const { return !vmUuid.isNull(); }
176 QUuid managedVMUuid() const { return vmUuid; }
177
178 VBoxDefs::RenderMode vmRenderMode() const { return vm_render_mode; }
179 const char *vmRenderModeStr() const { return vm_render_mode_str; }
180
181#ifdef VBOX_WITH_DEBUGGER_GUI
182 bool isDebuggerEnabled() const { return dbg_enabled; }
183 bool isDebuggerVisibleAtStartup() const { return dbg_visible_at_startup; }
184#endif
185
186 /* VBox enum to/from string/icon/color convertors */
187
188 QStringList vmGuestOSTypeDescriptions() const;
189 CGuestOSType vmGuestOSType (int aIndex) const;
190 int vmGuestOSTypeIndex (const QString &aId) const;
191 QPixmap vmGuestOSTypeIcon (const QString &aId) const;
192 QString vmGuestOSTypeDescription (const QString &aId) const;
193
194 QPixmap toIcon (KMachineState s) const
195 {
196 QPixmap *pm = mStateIcons [s];
197 AssertMsg (pm, ("Icon for VM state %d must be defined", s));
198 return pm ? *pm : QPixmap();
199 }
200
201 const QColor &toColor (KMachineState s) const
202 {
203 static const QColor none;
204 AssertMsg (vm_state_color [s], ("No color for %d", s));
205 return vm_state_color [s] ? *vm_state_color [s] : none;
206 }
207
208 QString toString (KMachineState s) const
209 {
210 AssertMsg (!machineStates [s].isNull(), ("No text for %d", s));
211 return machineStates [s];
212 }
213
214 QString toString (KSessionState s) const
215 {
216 AssertMsg (!sessionStates [s].isNull(), ("No text for %d", s));
217 return sessionStates [s];
218 }
219
220 QString toString (KDiskControllerType t) const
221 {
222 AssertMsg (!diskControllerTypes [t].isNull(), ("No text for %d", t));
223 return diskControllerTypes [t];
224 }
225
226 QString toString (KHardDiskType t) const
227 {
228 AssertMsg (!diskTypes [t].isNull(), ("No text for %d", t));
229 return diskTypes [t];
230 }
231
232 QString toString (KHardDiskStorageType t) const
233 {
234 AssertMsg (!diskStorageTypes [t].isNull(), ("No text for %d", t));
235 return diskStorageTypes [t];
236 }
237
238 QString toString (KVRDPAuthType t) const
239 {
240 AssertMsg (!vrdpAuthTypes [t].isNull(), ("No text for %d", t));
241 return vrdpAuthTypes [t];
242 }
243
244 QString toString (KPortMode t) const
245 {
246 AssertMsg (!portModeTypes [t].isNull(), ("No text for %d", t));
247 return portModeTypes [t];
248 }
249
250 QString toString (KUSBDeviceFilterAction t) const
251 {
252 AssertMsg (!usbFilterActionTypes [t].isNull(), ("No text for %d", t));
253 return usbFilterActionTypes [t];
254 }
255
256 QString toString (KClipboardMode t) const
257 {
258 AssertMsg (!clipboardTypes [t].isNull(), ("No text for %d", t));
259 return clipboardTypes [t];
260 }
261
262 KClipboardMode toClipboardModeType (const QString &s) const
263 {
264 QStringVector::const_iterator it =
265 qFind (clipboardTypes.begin(), clipboardTypes.end(), s);
266 AssertMsg (it != clipboardTypes.end(), ("No value for {%s}", s.latin1()));
267 return KClipboardMode (it - clipboardTypes.begin());
268 }
269
270 QString toString (KIDEControllerType t) const
271 {
272 AssertMsg (!ideControllerTypes [t].isNull(), ("No text for %d", t));
273 return ideControllerTypes [t];
274 }
275
276 KIDEControllerType toIDEControllerType (const QString &s) const
277 {
278 QStringVector::const_iterator it =
279 qFind (ideControllerTypes.begin(), ideControllerTypes.end(), s);
280 AssertMsg (it != ideControllerTypes.end(), ("No value for {%s}", s.latin1()));
281 return KIDEControllerType (it - ideControllerTypes.begin());
282 }
283
284 KVRDPAuthType toVRDPAuthType (const QString &s) const
285 {
286 QStringVector::const_iterator it =
287 qFind (vrdpAuthTypes.begin(), vrdpAuthTypes.end(), s);
288 AssertMsg (it != vrdpAuthTypes.end(), ("No value for {%s}", s.latin1()));
289 return KVRDPAuthType (it - vrdpAuthTypes.begin());
290 }
291
292 KPortMode toPortMode (const QString &s) const
293 {
294 QStringVector::const_iterator it =
295 qFind (portModeTypes.begin(), portModeTypes.end(), s);
296 AssertMsg (it != portModeTypes.end(), ("No value for {%s}", s.latin1()));
297 return KPortMode (it - portModeTypes.begin());
298 }
299
300 KUSBDeviceFilterAction toUSBDevFilterAction (const QString &s) const
301 {
302 QStringVector::const_iterator it =
303 qFind (usbFilterActionTypes.begin(), usbFilterActionTypes.end(), s);
304 AssertMsg (it != usbFilterActionTypes.end(), ("No value for {%s}", s.latin1()));
305 return KUSBDeviceFilterAction (it - usbFilterActionTypes.begin());
306 }
307
308 /**
309 * Similar to toString (KHardDiskType), but returns 'Differencing'
310 * for normal hard disks that have a parent hard disk.
311 */
312 QString hardDiskTypeString (const CHardDisk &aHD) const
313 {
314 if (!aHD.GetParent().isNull())
315 {
316 Assert (aHD.GetType() == KHardDiskType_Normal);
317 return tr ("Differencing", "hard disk");
318 }
319 return toString (aHD.GetType());
320 }
321
322 QString toString (KDiskControllerType t, LONG d) const;
323
324 QString toString (KDeviceType t) const
325 {
326 AssertMsg (!deviceTypes [t].isNull(), ("No text for %d", t));
327 return deviceTypes [t];
328 }
329
330 KDeviceType toDeviceType (const QString &s) const
331 {
332 QStringVector::const_iterator it =
333 qFind (deviceTypes.begin(), deviceTypes.end(), s);
334 AssertMsg (it != deviceTypes.end(), ("No value for {%s}", s.latin1()));
335 return KDeviceType (it - deviceTypes.begin());
336 }
337
338 QStringList deviceTypeStrings() const;
339
340 QString toString (KAudioDriverType t) const
341 {
342 AssertMsg (!audioDriverTypes [t].isNull(), ("No text for %d", t));
343 return audioDriverTypes [t];
344 }
345
346 KAudioDriverType toAudioDriverType (const QString &s) const
347 {
348 QStringVector::const_iterator it =
349 qFind (audioDriverTypes.begin(), audioDriverTypes.end(), s);
350 AssertMsg (it != audioDriverTypes.end(), ("No value for {%s}", s.latin1()));
351 return KAudioDriverType (it - audioDriverTypes.begin());
352 }
353
354 QString toString (KAudioControllerType t) const
355 {
356 AssertMsg (!audioControllerTypes [t].isNull(), ("No text for %d", t));
357 return audioControllerTypes [t];
358 }
359
360 KAudioControllerType toAudioControllerType (const QString &s) const
361 {
362 QStringVector::const_iterator it =
363 qFind (audioControllerTypes.begin(), audioControllerTypes.end(), s);
364 AssertMsg (it != audioControllerTypes.end(), ("No value for {%s}", s.latin1()));
365 return KAudioControllerType (it - audioControllerTypes.begin());
366 }
367
368 QString toString (KNetworkAdapterType t) const
369 {
370 AssertMsg (!networkAdapterTypes [t].isNull(), ("No text for %d", t));
371 return networkAdapterTypes [t];
372 }
373
374 KNetworkAdapterType toNetworkAdapterType (const QString &s) const
375 {
376 QStringVector::const_iterator it =
377 qFind (networkAdapterTypes.begin(), networkAdapterTypes.end(), s);
378 AssertMsg (it != networkAdapterTypes.end(), ("No value for {%s}", s.latin1()));
379 return KNetworkAdapterType (it - networkAdapterTypes.begin());
380 }
381
382 QString toString (KNetworkAttachmentType t) const
383 {
384 AssertMsg (!networkAttachmentTypes [t].isNull(), ("No text for %d", t));
385 return networkAttachmentTypes [t];
386 }
387
388 KNetworkAttachmentType toNetworkAttachmentType (const QString &s) const
389 {
390 QStringVector::const_iterator it =
391 qFind (networkAttachmentTypes.begin(), networkAttachmentTypes.end(), s);
392 AssertMsg (it != networkAttachmentTypes.end(), ("No value for {%s}", s.latin1()));
393 return KNetworkAttachmentType (it - networkAttachmentTypes.begin());
394 }
395
396 QString toString (KUSBDeviceState aState) const
397 {
398 AssertMsg (!USBDeviceStates [aState].isNull(), ("No text for %d", aState));
399 return USBDeviceStates [aState];
400 }
401
402 QStringList COMPortNames() const;
403 QString toCOMPortName (ulong aIRQ, ulong aIOBase) const;
404 bool toCOMPortNumbers (const QString &aName, ulong &aIRQ, ulong &aIOBase) const;
405
406 QStringList LPTPortNames() const;
407 QString toLPTPortName (ulong aIRQ, ulong aIOBase) const;
408 bool toLPTPortNumbers (const QString &aName, ulong &aIRQ, ulong &aIOBase) const;
409
410 QPixmap snapshotIcon (bool online) const
411 {
412 return online ? mOnlineSnapshotIcon : mOfflineSnapshotIcon;
413 }
414
415 /* details generators */
416
417 QString details (const CHardDisk &aHD, bool aPredict = false,
418 bool aDoRefresh = true);
419
420 QString details (const CUSBDevice &aDevice) const;
421 QString toolTip (const CUSBDevice &aDevice) const;
422
423 QString prepareFileNameForHTML (const QString &fn) const;
424
425 QString detailsReport (const CMachine &m, bool isNewVM, bool withLinks,
426 bool aDoRefresh = true);
427
428 /* VirtualBox helpers */
429
430#ifdef Q_WS_X11
431 bool showVirtualBoxLicense();
432#endif
433
434 CSession openSession (const QUuid &aId, bool aExisting = false);
435
436 /** Shortcut to openSession (aId, true). */
437 CSession openExistingSession (const QUuid &aId) { return openSession (aId, true); }
438
439 bool startMachine (const QUuid &id);
440
441 void startEnumeratingMedia();
442
443 /**
444 * Returns a list of all currently registered media. This list is used
445 * to globally track the accessiblity state of all media on a dedicated
446 * thread. This the list is initially empty (before the first enumeration
447 * process is started using #startEnumeratingMedia()).
448 */
449 const VBoxMediaList &currentMediaList() const { return media_list; }
450
451 /** Returns true if the media enumeration is in progress. */
452 bool isMediaEnumerationStarted() const { return media_enum_thread != NULL; }
453
454 void addMedia (const VBoxMedia &);
455 void updateMedia (const VBoxMedia &);
456 void removeMedia (VBoxDefs::DiskType, const QUuid &);
457
458 bool findMedia (const CUnknown &, VBoxMedia &) const;
459
460 /* various helpers */
461
462 QString languageName() const;
463 QString languageCountry() const;
464 QString languageNameEnglish() const;
465 QString languageCountryEnglish() const;
466 QString languageTranslators() const;
467
468 void languageChange();
469
470 /** @internal made public for internal purposes */
471 void cleanup();
472
473 /* public static stuff */
474
475 static bool isDOSType (const QString &aOSTypeId);
476
477 static void adoptLabelPixmap (QLabel *);
478
479 static QString languageId();
480 static void loadLanguage (const QString &aLangId = QString::null);
481
482 static QIcon iconSet (const QString &aNormal,
483 const QString &aDisabled = "",
484 const QString &aActive = "");
485 static QIcon iconSetEx (const QString &aNormal, const QString &aSmallNormal,
486 const QString &aDisabled = "", const QString &aSmallDisabled = "",
487 const QString &aActive = "", const QString &aSmallActive = "");
488
489 static void setTextLabel (QToolButton *aToolButton, const QString &aTextLabel);
490
491 static QRect normalizeGeometry (const QRect &aRect, const QRect &aBoundRect,
492 bool aCanResize = true);
493
494 static void centerWidget (QWidget *aWidget, QWidget *aRelative,
495 bool aCanResize = true);
496
497 static QChar decimalSep();
498 static QString sizeRegexp();
499
500 static Q_UINT64 parseSize (const QString &);
501 static QString formatSize (Q_UINT64, int aMode = 0);
502
503 static QString highlight (const QString &aStr, bool aToolTip = false);
504
505 static QString systemLanguageId();
506
507 static QString getExistingDirectory (const QString &aDir, QWidget *aParent,
508 const char *aName = 0,
509 const QString &aCaption = QString::null,
510 bool aDirOnly = TRUE,
511 bool resolveSymlinks = TRUE);
512
513 static QString getOpenFileName (const QString &, const QString &, QWidget*,
514 const char*, const QString &,
515 QString *defaultFilter = 0,
516 bool resolveSymLinks = true);
517
518 static QString getFirstExistingDir (const QString &);
519
520 static bool activateWindow (WId aWId, bool aSwitchDesktop = true);
521
522 static QString removeAccelMark (const QString &aText);
523
524 static QWidget *findWidget (QWidget *aParent, const char *aName,
525 const char *aClassName = NULL,
526 bool aRecursive = false);
527
528signals:
529
530 /**
531 * Emitted at the beginning of the enumeration process started
532 * by #startEnumeratingMedia().
533 */
534 void mediaEnumStarted();
535
536 /**
537 * Emitted when a new media item from the list has updated
538 * its accessibility state.
539 */
540 void mediaEnumerated (const VBoxMedia &aMedia, int aIndex);
541
542 /**
543 * Emitted at the end of the enumeration process started
544 * by #startEnumeratingMedia(). The @a aList argument is passed for
545 * convenience, it is exactly the same as returned by #currentMediaList().
546 */
547 void mediaEnumFinished (const VBoxMediaList &aList);
548
549 /** Emitted when a new media is added using #addMedia(). */
550 void mediaAdded (const VBoxMedia &);
551
552 /** Emitted when the media is updated using #updateMedia(). */
553 void mediaUpdated (const VBoxMedia &);
554
555 /** Emitted when the media is removed using #removeMedia(). */
556 void mediaRemoved (VBoxDefs::DiskType, const QUuid &);
557
558 /* signals emitted when the VirtualBox callback is called by the server
559 * (not that currently these signals are emitted only when the application
560 * is the in the VM selector mode) */
561
562 void machineStateChanged (const VBoxMachineStateChangeEvent &e);
563 void machineDataChanged (const VBoxMachineDataChangeEvent &e);
564 void machineRegistered (const VBoxMachineRegisteredEvent &e);
565 void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
566 void snapshotChanged (const VBoxSnapshotEvent &e);
567
568 void canShowRegDlg (bool aCanShow);
569
570public slots:
571
572 bool openURL (const QString &aURL);
573
574 void showRegistrationDialog (bool aForce = true);
575
576protected:
577
578 bool event (QEvent *e);
579 bool eventFilter (QObject *, QEvent *);
580
581private:
582
583 VBoxGlobal();
584 ~VBoxGlobal() {}
585
586 void init();
587
588 bool mValid;
589
590 CVirtualBox mVBox;
591
592 VBoxGlobalSettings gset;
593
594 VBoxSelectorWnd *mSelectorWnd;
595 VBoxConsoleWnd *mConsoleWnd;
596
597#ifdef VBOX_WITH_REGISTRATION
598 VBoxRegistrationDlg *mRegDlg;
599#endif
600
601 QUuid vmUuid;
602
603 QThread *media_enum_thread;
604 VBoxMediaList media_list;
605
606 VBoxDefs::RenderMode vm_render_mode;
607 const char * vm_render_mode_str;
608
609#ifdef VBOX_WITH_DEBUGGER_GUI
610 bool dbg_enabled;
611 bool dbg_visible_at_startup;
612#endif
613
614#if defined (Q_WS_WIN32)
615 DWORD dwHTMLHelpCookie;
616#endif
617
618 CVirtualBoxCallback callback;
619
620 typedef Q3ValueVector <QString> QStringVector;
621
622 QString verString;
623
624 Q3ValueVector <CGuestOSType> vm_os_types;
625 Q3Dict <QPixmap> vm_os_type_icons;
626 Q3PtrVector <QColor> vm_state_color;
627
628 Q3IntDict <QPixmap> mStateIcons;
629 QPixmap mOfflineSnapshotIcon, mOnlineSnapshotIcon;
630
631 QStringVector machineStates;
632 QStringVector sessionStates;
633 QStringVector deviceTypes;
634 QStringVector diskControllerTypes;
635 QStringVector diskTypes;
636 QStringVector diskStorageTypes;
637 QStringVector vrdpAuthTypes;
638 QStringVector portModeTypes;
639 QStringVector usbFilterActionTypes;
640 QStringVector diskControllerDevices;
641 QStringVector audioDriverTypes;
642 QStringVector audioControllerTypes;
643 QStringVector networkAdapterTypes;
644 QStringVector networkAttachmentTypes;
645 QStringVector clipboardTypes;
646 QStringVector ideControllerTypes;
647 QStringVector USBDeviceStates;
648
649 QString mUserDefinedPortName;
650
651 mutable bool detailReportTemplatesReady;
652
653 friend VBoxGlobal &vboxGlobal();
654 friend class VBoxCallback;
655};
656
657inline VBoxGlobal &vboxGlobal() { return VBoxGlobal::instance(); }
658
659// Helper classes
660////////////////////////////////////////////////////////////////////////////////
661
662/**
663 * Generic asyncronous event.
664 *
665 * This abstract class is intended to provide a conveinent way to execute
666 * code on the main GUI thread asynchronously to the calling party. This is
667 * done by putting necessary actions to the #handle() function in a subclass
668 * and then posting an instance of the subclass using #post(). The instance
669 * must be allocated on the heap using the <tt>new</tt> operation and will be
670 * automatically deleted after processing. Note that if you don't call #post()
671 * on the created instance, you have to delete it yourself.
672 */
673class VBoxAsyncEvent : public QEvent
674{
675public:
676
677 VBoxAsyncEvent() : QEvent ((QEvent::Type) VBoxDefs::AsyncEventType) {}
678
679 /**
680 * Worker function. Gets executed on the GUI thread when the posted event
681 * is processed by the main event loop.
682 */
683 virtual void handle() = 0;
684
685 /**
686 * Posts this event to the main event loop.
687 * The caller loses ownership of this object after this method returns
688 * and must not delete the object.
689 */
690 void post()
691 {
692 QApplication::postEvent (&vboxGlobal(), this);
693 }
694};
695
696/**
697 * USB Popup Menu class.
698 * This class provides the list of USB devices attached to the host.
699 */
700class VBoxUSBMenu : public Q3PopupMenu
701{
702 Q_OBJECT
703
704public:
705
706 enum { USBDevicesMenuNoDevicesId = 1 };
707
708 VBoxUSBMenu (QWidget *);
709
710 const CUSBDevice& getUSB (int);
711
712 void setConsole (const CConsole &);
713
714private slots:
715
716 void processAboutToShow();
717
718 void processHighlighted (int);
719
720private:
721
722 QMap <int, CUSBDevice> mUSBDevicesMap;
723 CConsole mConsole;
724};
725
726
727/**
728 * Enable/Disable Menu class.
729 * This class provides enable/disable menu items.
730 */
731class VBoxSwitchMenu : public Q3PopupMenu
732{
733 Q_OBJECT
734
735public:
736
737 VBoxSwitchMenu (QWidget *, QAction *, bool aInverted = false);
738
739 void setToolTip (const QString &);
740
741private slots:
742
743 void processAboutToShow();
744
745 void processActivated (int);
746
747private:
748
749 QAction *mAction;
750 QString mTip;
751 bool mInverted;
752};
753
754#endif /* __VBoxGlobal_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