VBoxGlobal.h revision df30dbdfdbce7bc58d1a71d98772953017bc3269
4f372d1b10414884e2526724169d6027468ea473gryzor/** @file
4f372d1b10414884e2526724169d6027468ea473gryzor *
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * VBox frontends: Qt GUI ("VirtualBox"):
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * VBoxGlobal class declaration
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd */
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor/*
4f372d1b10414884e2526724169d6027468ea473gryzor * Copyright (C) 2006-2007 innotek GmbH
4f372d1b10414884e2526724169d6027468ea473gryzor *
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc * This file is part of VirtualBox Open Source Edition (OSE), as
4f372d1b10414884e2526724169d6027468ea473gryzor * available from http://www.virtualbox.org. This file is free software;
4f372d1b10414884e2526724169d6027468ea473gryzor * you can redistribute it and/or modify it under the terms of the GNU
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * General Public License (GPL) as published by the Free Software
2e545ce2450a9953665f701bb05350f0d3f26275nd * Foundation, in version 2 as it comes in the "COPYING" file of the
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4f372d1b10414884e2526724169d6027468ea473gryzor */
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor#ifndef __VBoxGlobal_h__
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen#define __VBoxGlobal_h__
3f08db06526d6901aa08c110b5bc7dde6bc39905nd
4f372d1b10414884e2526724169d6027468ea473gryzor#include "COMDefs.h"
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor#include "VBoxGlobalSettings.h"
3f08db06526d6901aa08c110b5bc7dde6bc39905nd
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qapplication.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qpixmap.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qiconset.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qcolor.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <quuid.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qthread.h>
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung#include <qpopupmenu.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qtooltip.h>
0bd1ddab48139fbbe68f4e257fe669dc19f58fe9rbowen
0bd1ddab48139fbbe68f4e257fe669dc19f58fe9rbowen#include <qptrvector.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qvaluevector.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qvaluelist.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qdict.h>
4f372d1b10414884e2526724169d6027468ea473gryzor#include <qintdict.h>
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzorclass QAction;
4f372d1b10414884e2526724169d6027468ea473gryzorclass QLabel;
4f372d1b10414884e2526724169d6027468ea473gryzorclass QToolButton;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor// Auxiliary types
4f372d1b10414884e2526724169d6027468ea473gryzor////////////////////////////////////////////////////////////////////////////////
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar/** Simple media descriptor type. */
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarstruct VBoxMedia
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar enum Status { Unknown, Ok, Error, Inaccessible };
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
4f372d1b10414884e2526724169d6027468ea473gryzor VBoxMedia() : type (VBoxDefs::InvalidType), status (Ok) {}
0237f43ab925775250e266e479d0a337ff374a4btakashi
4f372d1b10414884e2526724169d6027468ea473gryzor VBoxMedia (const CUnknown &d, VBoxDefs::DiskType t, Status s)
4f372d1b10414884e2526724169d6027468ea473gryzor : disk (d), type (t), status (s) {}
4f372d1b10414884e2526724169d6027468ea473gryzor
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd CUnknown disk;
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd VBoxDefs::DiskType type;
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd Status status;
4f372d1b10414884e2526724169d6027468ea473gryzor};
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzortypedef QValueList <VBoxMedia> VBoxMediaList;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
4f372d1b10414884e2526724169d6027468ea473gryzor// VirtualBox callback events
4f372d1b10414884e2526724169d6027468ea473gryzor////////////////////////////////////////////////////////////////////////////////
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh
4f372d1b10414884e2526724169d6027468ea473gryzorclass VBoxMachineStateChangeEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxMachineStateChangeEvent (const QUuid &aId, KMachineState aState)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::MachineStateChangeEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , id (aId), state (aState)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid id;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const KMachineState state;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxMachineDataChangeEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxMachineDataChangeEvent (const QUuid &aId)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::MachineDataChangeEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , id (aId)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid id;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxMachineRegisteredEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxMachineRegisteredEvent (const QUuid &aId, bool aRegistered)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::MachineRegisteredEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , id (aId), registered (aRegistered)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid id;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const bool registered;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxSessionStateChangeEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxSessionStateChangeEvent (const QUuid &aId, KSessionState aState)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::SessionStateChangeEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , id (aId), state (aState)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid id;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const KSessionState state;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxSnapshotEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar enum What { Taken, Discarded, Changed };
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxSnapshotEvent (const QUuid &aMachineId, const QUuid &aSnapshotId,
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar What aWhat)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::SnapshotEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , what (aWhat)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , machineId (aMachineId), snapshotId (aSnapshotId)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const What what;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid machineId;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QUuid snapshotId;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxCanShowRegDlgEvent : public QEvent
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxCanShowRegDlgEvent (bool aCanShow)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar : QEvent ((QEvent::Type) VBoxDefs::CanShowRegDlgEventType)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar , mCanShow (aCanShow)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {}
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const bool mCanShow;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar};
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar// VBoxGlobal
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar////////////////////////////////////////////////////////////////////////////////
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxSelectorWnd;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxConsoleWnd;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxRegistrationDlg;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarclass VBoxGlobal : public QObject
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar{
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar Q_OBJECT
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coarpublic:
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar static VBoxGlobal &instance();
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar bool isValid() { return mValid; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QString versionString() { return verString; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar CVirtualBox virtualBox() const { return mVBox; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const VBoxGlobalSettings &settings() const { return gset; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar bool setSettings (const VBoxGlobalSettings &gs);
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxSelectorWnd &selectorWnd();
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxConsoleWnd &consoleWnd();
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar bool isVMConsoleProcess() const { return !vmUuid.isNull(); }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QUuid managedVMUuid() const { return vmUuid; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar VBoxDefs::RenderMode vmRenderMode() const { return vm_render_mode; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const char *vmRenderModeStr() const { return vm_render_mode_str; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar#ifdef VBOX_WITH_DEBUGGER_GUI
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar bool isDebuggerEnabled() const { return dbg_enabled; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar bool isDebuggerVisibleAtStartup() const { return dbg_visible_at_startup; }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar#endif
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar /* VBox enum to/from string/icon/color convertors */
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QStringList vmGuestOSTypeDescriptions() const;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar CGuestOSType vmGuestOSType (int aIndex) const;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar int vmGuestOSTypeIndex (const QString &aId) const;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QPixmap vmGuestOSTypeIcon (const QString &aId) const;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QString vmGuestOSTypeDescription (const QString &aId) const;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QPixmap toIcon (KMachineState s) const
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QPixmap *pm = mStateIcons [s];
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar AssertMsg (pm, ("Icon for VM state %d must be defined", s));
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar return pm ? *pm : QPixmap();
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar const QColor &toColor (KMachineState s) const
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar static const QColor none;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar AssertMsg (vm_state_color [s], ("No color for %d", s));
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar return vm_state_color [s] ? *vm_state_color [s] : none;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar }
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar QString toString (KMachineState s) const
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar {
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar AssertMsg (!machineStates [s].isNull(), ("No text for %d", s));
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar return machineStates [s];
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar }
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KSessionState s) const
0237f43ab925775250e266e479d0a337ff374a4btakashi {
0237f43ab925775250e266e479d0a337ff374a4btakashi AssertMsg (!sessionStates [s].isNull(), ("No text for %d", s));
0237f43ab925775250e266e479d0a337ff374a4btakashi return sessionStates [s];
0237f43ab925775250e266e479d0a337ff374a4btakashi }
0237f43ab925775250e266e479d0a337ff374a4btakashi
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KStorageBus t) const
0237f43ab925775250e266e479d0a337ff374a4btakashi {
0237f43ab925775250e266e479d0a337ff374a4btakashi AssertMsg (!storageBuses [t].isNull(), ("No text for %d", t));
0237f43ab925775250e266e479d0a337ff374a4btakashi return storageBuses [t];
0237f43ab925775250e266e479d0a337ff374a4btakashi }
0237f43ab925775250e266e479d0a337ff374a4btakashi
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KStorageBus t, LONG c) const;
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KStorageBus t, LONG c, LONG d) const;
0237f43ab925775250e266e479d0a337ff374a4btakashi
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KHardDiskType t) const
0237f43ab925775250e266e479d0a337ff374a4btakashi {
0237f43ab925775250e266e479d0a337ff374a4btakashi AssertMsg (!diskTypes [t].isNull(), ("No text for %d", t));
0237f43ab925775250e266e479d0a337ff374a4btakashi return diskTypes [t];
0237f43ab925775250e266e479d0a337ff374a4btakashi }
0237f43ab925775250e266e479d0a337ff374a4btakashi
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KHardDiskStorageType t) const
0237f43ab925775250e266e479d0a337ff374a4btakashi {
0237f43ab925775250e266e479d0a337ff374a4btakashi AssertMsg (!diskStorageTypes [t].isNull(), ("No text for %d", t));
0237f43ab925775250e266e479d0a337ff374a4btakashi return diskStorageTypes [t];
0237f43ab925775250e266e479d0a337ff374a4btakashi }
0237f43ab925775250e266e479d0a337ff374a4btakashi
0237f43ab925775250e266e479d0a337ff374a4btakashi QString toString (KVRDPAuthType t) const
0237f43ab925775250e266e479d0a337ff374a4btakashi {
0237f43ab925775250e266e479d0a337ff374a4btakashi AssertMsg (!vrdpAuthTypes [t].isNull(), ("No text for %d", t));
0237f43ab925775250e266e479d0a337ff374a4btakashi return vrdpAuthTypes [t];
0237f43ab925775250e266e479d0a337ff374a4btakashi }
0237f43ab925775250e266e479d0a337ff374a4btakashi
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KPortMode t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis AssertMsg (!portModeTypes [t].isNull(), ("No text for %d", t));
4f372d1b10414884e2526724169d6027468ea473gryzor return portModeTypes [t];
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KUSBDeviceFilterAction t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (!usbFilterActionTypes [t].isNull(), ("No text for %d", t));
4f372d1b10414884e2526724169d6027468ea473gryzor return usbFilterActionTypes [t];
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KClipboardMode t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (!clipboardTypes [t].isNull(), ("No text for %d", t));
4f372d1b10414884e2526724169d6027468ea473gryzor return clipboardTypes [t];
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis KClipboardMode toClipboardModeType (const QString &s) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor QStringVector::const_iterator it =
4f372d1b10414884e2526724169d6027468ea473gryzor qFind (clipboardTypes.begin(), clipboardTypes.end(), s);
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (it != clipboardTypes.end(), ("No value for {%s}", s.latin1()));
4f372d1b10414884e2526724169d6027468ea473gryzor return KClipboardMode (it - clipboardTypes.begin());
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KIDEControllerType t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (!ideControllerTypes [t].isNull(), ("No text for %d", t));
4f372d1b10414884e2526724169d6027468ea473gryzor return ideControllerTypes [t];
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor KIDEControllerType toIDEControllerType (const QString &s) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor QStringVector::const_iterator it =
4f372d1b10414884e2526724169d6027468ea473gryzor qFind (ideControllerTypes.begin(), ideControllerTypes.end(), s);
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (it != ideControllerTypes.end(), ("No value for {%s}", s.latin1()));
4f372d1b10414884e2526724169d6027468ea473gryzor return KIDEControllerType (it - ideControllerTypes.begin());
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor KVRDPAuthType toVRDPAuthType (const QString &s) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor QStringVector::const_iterator it =
4f372d1b10414884e2526724169d6027468ea473gryzor qFind (vrdpAuthTypes.begin(), vrdpAuthTypes.end(), s);
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (it != vrdpAuthTypes.end(), ("No value for {%s}", s.latin1()));
4f372d1b10414884e2526724169d6027468ea473gryzor return KVRDPAuthType (it - vrdpAuthTypes.begin());
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor KPortMode toPortMode (const QString &s) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor QStringVector::const_iterator it =
4f372d1b10414884e2526724169d6027468ea473gryzor qFind (portModeTypes.begin(), portModeTypes.end(), s);
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (it != portModeTypes.end(), ("No value for {%s}", s.latin1()));
4aa603e6448b99f9371397d439795c91a93637eand return KPortMode (it - portModeTypes.begin());
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen }
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen
4aa603e6448b99f9371397d439795c91a93637eand KUSBDeviceFilterAction toUSBDevFilterAction (const QString &s) const
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen {
4f372d1b10414884e2526724169d6027468ea473gryzor QStringVector::const_iterator it =
4f372d1b10414884e2526724169d6027468ea473gryzor qFind (usbFilterActionTypes.begin(), usbFilterActionTypes.end(), s);
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (it != usbFilterActionTypes.end(), ("No value for {%s}", s.latin1()));
4f372d1b10414884e2526724169d6027468ea473gryzor return KUSBDeviceFilterAction (it - usbFilterActionTypes.begin());
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor /**
4f372d1b10414884e2526724169d6027468ea473gryzor * Similar to toString (KHardDiskType), but returns 'Differencing'
4f372d1b10414884e2526724169d6027468ea473gryzor * for normal hard disks that have a parent hard disk.
4f372d1b10414884e2526724169d6027468ea473gryzor */
4f372d1b10414884e2526724169d6027468ea473gryzor QString hardDiskTypeString (const CHardDisk &aHD) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor if (!aHD.GetParent().isNull())
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor Assert (aHD.GetType() == KHardDiskType_Normal);
4f372d1b10414884e2526724169d6027468ea473gryzor return tr ("Differencing", "hard disk");
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor return toString (aHD.GetType());
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KDeviceType t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor AssertMsg (!deviceTypes [t].isNull(), ("No text for %d", t));
4f372d1b10414884e2526724169d6027468ea473gryzor return deviceTypes [t];
4aa603e6448b99f9371397d439795c91a93637eand }
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen KDeviceType toDeviceType (const QString &s) const
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen {
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen QStringVector::const_iterator it =
4aa603e6448b99f9371397d439795c91a93637eand qFind (deviceTypes.begin(), deviceTypes.end(), s);
d5d58e8346ef3553dfd7d5f51078a9b268729b3frbowen AssertMsg (it != deviceTypes.end(), ("No value for {%s}", s.latin1()));
4f372d1b10414884e2526724169d6027468ea473gryzor return KDeviceType (it - deviceTypes.begin());
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QStringList deviceTypeStrings() const;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString toString (KAudioDriverType t) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis AssertMsg (!audioDriverTypes [t].isNull(), ("No text for %d", t));
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd return audioDriverTypes [t];
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis KAudioDriverType toAudioDriverType (const QString &s) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd QStringVector::const_iterator it =
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd qFind (audioDriverTypes.begin(), audioDriverTypes.end(), s);
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd AssertMsg (it != audioDriverTypes.end(), ("No value for {%s}", s.latin1()));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return KAudioDriverType (it - audioDriverTypes.begin());
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis QString toString (KAudioControllerType t) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis AssertMsg (!audioControllerTypes [t].isNull(), ("No text for %d", t));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return audioControllerTypes [t];
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis KAudioControllerType toAudioControllerType (const QString &s) const
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd {
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis QStringVector::const_iterator it =
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd qFind (audioControllerTypes.begin(), audioControllerTypes.end(), s);
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis AssertMsg (it != audioControllerTypes.end(), ("No value for {%s}", s.latin1()));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return KAudioControllerType (it - audioControllerTypes.begin());
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd }
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd QString toString (KNetworkAdapterType t) const
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd {
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd AssertMsg (!networkAdapterTypes [t].isNull(), ("No text for %d", t));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return networkAdapterTypes [t];
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis KNetworkAdapterType toNetworkAdapterType (const QString &s) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis QStringVector::const_iterator it =
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis qFind (networkAdapterTypes.begin(), networkAdapterTypes.end(), s);
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis AssertMsg (it != networkAdapterTypes.end(), ("No value for {%s}", s.latin1()));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return KNetworkAdapterType (it - networkAdapterTypes.begin());
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd }
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd QString toString (KNetworkAttachmentType t) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd AssertMsg (!networkAttachmentTypes [t].isNull(), ("No text for %d", t));
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd return networkAttachmentTypes [t];
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd }
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd KNetworkAttachmentType toNetworkAttachmentType (const QString &s) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis QStringVector::const_iterator it =
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis qFind (networkAttachmentTypes.begin(), networkAttachmentTypes.end(), s);
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis AssertMsg (it != networkAttachmentTypes.end(), ("No value for {%s}", s.latin1()));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return KNetworkAttachmentType (it - networkAttachmentTypes.begin());
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis QString toString (KUSBDeviceState aState) const
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis {
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis AssertMsg (!USBDeviceStates [aState].isNull(), ("No text for %d", aState));
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis return USBDeviceStates [aState];
5fdb24f8db17ad5766598c7c0ecb8163a28f7a69lgentis }
6c4ef4a72d9897e53365b94103f4bd819fd0d3acnd
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis QStringList COMPortNames() const;
4f372d1b10414884e2526724169d6027468ea473gryzor QString toCOMPortName (ulong aIRQ, ulong aIOBase) const;
4f372d1b10414884e2526724169d6027468ea473gryzor bool toCOMPortNumbers (const QString &aName, ulong &aIRQ, ulong &aIOBase) const;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QStringList LPTPortNames() const;
4f372d1b10414884e2526724169d6027468ea473gryzor QString toLPTPortName (ulong aIRQ, ulong aIOBase) const;
4f372d1b10414884e2526724169d6027468ea473gryzor bool toLPTPortNumbers (const QString &aName, ulong &aIRQ, ulong &aIOBase) const;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QPixmap snapshotIcon (bool online) const
4f372d1b10414884e2526724169d6027468ea473gryzor {
4f372d1b10414884e2526724169d6027468ea473gryzor return online ? mOnlineSnapshotIcon : mOfflineSnapshotIcon;
4f372d1b10414884e2526724169d6027468ea473gryzor }
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor /* details generators */
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString details (const CHardDisk &aHD, bool aPredict = false,
e3e52ec6993de04bb0100e098ce0a569c7001382lgentis bool aDoRefresh = true);
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString details (const CUSBDevice &aDevice) const;
4f372d1b10414884e2526724169d6027468ea473gryzor QString toolTip (const CUSBDevice &aDevice) const;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString prepareFileNameForHTML (const QString &fn) const;
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor QString detailsReport (const CMachine &m, bool isNewVM, bool withLinks,
4f372d1b10414884e2526724169d6027468ea473gryzor bool aDoRefresh = true);
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor /* VirtualBox helpers */
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor#ifdef Q_WS_X11
4f372d1b10414884e2526724169d6027468ea473gryzor bool showVirtualBoxLicense();
4f372d1b10414884e2526724169d6027468ea473gryzor#endif
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor void checkForAutoConvertedSettings();
4f372d1b10414884e2526724169d6027468ea473gryzor
4f372d1b10414884e2526724169d6027468ea473gryzor CSession openSession (const QUuid &aId, bool aExisting = false);
4f372d1b10414884e2526724169d6027468ea473gryzor
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung /** Shortcut to openSession (aId, true). */
727872d18412fc021f03969b8641810d8896820bhumbedooh CSession openExistingSession (const QUuid &aId) { return openSession (aId, true); }
0d0ba3a410038e179b695446bb149cce6264e0abnd
727872d18412fc021f03969b8641810d8896820bhumbedooh bool startMachine (const QUuid &id);
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh
0d0ba3a410038e179b695446bb149cce6264e0abnd void startEnumeratingMedia();
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh
727872d18412fc021f03969b8641810d8896820bhumbedooh /**
0d0ba3a410038e179b695446bb149cce6264e0abnd * Returns a list of all currently registered media. This list is used
0d0ba3a410038e179b695446bb149cce6264e0abnd * to globally track the accessiblity state of all media on a dedicated
0d0ba3a410038e179b695446bb149cce6264e0abnd * thread. This the list is initially empty (before the first enumeration
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh * process is started using #startEnumeratingMedia()).
0d0ba3a410038e179b695446bb149cce6264e0abnd */
0d0ba3a410038e179b695446bb149cce6264e0abnd const VBoxMediaList &currentMediaList() const { return media_list; }
0d0ba3a410038e179b695446bb149cce6264e0abnd
727872d18412fc021f03969b8641810d8896820bhumbedooh /** Returns true if the media enumeration is in progress. */
0d0ba3a410038e179b695446bb149cce6264e0abnd bool isMediaEnumerationStarted() const { return media_enum_thread != NULL; }
0d0ba3a410038e179b695446bb149cce6264e0abnd
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh void addMedia (const VBoxMedia &);
205f749042ed530040a4f0080dbcb47ceae8a374rjung void updateMedia (const VBoxMedia &);
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen void removeMedia (VBoxDefs::DiskType, const QUuid &);
0d0ba3a410038e179b695446bb149cce6264e0abnd
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd bool findMedia (const CUnknown &, VBoxMedia &) const;
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd /* various helpers */
4f372d1b10414884e2526724169d6027468ea473gryzor
QString languageName() const;
QString languageCountry() const;
QString languageNameEnglish() const;
QString languageCountryEnglish() const;
QString languageTranslators() const;
void languageChange();
/** @internal made public for internal purposes */
void cleanup();
/* public static stuff */
static bool isDOSType (const QString &aOSTypeId);
static void adoptLabelPixmap (QLabel *);
static QString languageId();
static void loadLanguage (const QString &aLangId = QString::null);
static QIconSet iconSet (const char *aNormal,
const char *aDisabled = 0,
const char *aActive = 0);
static QIconSet iconSetEx (const char *aNormal, const char *aSmallNormal,
const char *aDisabled = 0, const char *aSmallDisabled = 0,
const char *aActive = 0, const char *aSmallActive = 0);
static void setTextLabel (QToolButton *aToolButton, const QString &aTextLabel);
static QRect normalizeGeometry (const QRect &aRect, const QRect &aBoundRect,
bool aCanResize = true);
static void centerWidget (QWidget *aWidget, QWidget *aRelative,
bool aCanResize = true);
static QChar decimalSep();
static QString sizeRegexp();
static Q_UINT64 parseSize (const QString &);
static QString formatSize (Q_UINT64, int aMode = 0);
static QString highlight (const QString &aStr, bool aToolTip = false);
static QString systemLanguageId();
static QString getExistingDirectory (const QString &aDir, QWidget *aParent,
const char *aName = 0,
const QString &aCaption = QString::null,
bool aDirOnly = TRUE,
bool resolveSymlinks = TRUE);
static QString getOpenFileName (const QString &, const QString &, QWidget*,
const char*, const QString &,
QString *defaultFilter = 0,
bool resolveSymLinks = true);
static QString getFirstExistingDir (const QString &);
static bool activateWindow (WId aWId, bool aSwitchDesktop = true);
static QString removeAccelMark (const QString &aText);
static QWidget *findWidget (QWidget *aParent, const char *aName,
const char *aClassName = NULL,
bool aRecursive = false);
signals:
/**
* Emitted at the beginning of the enumeration process started
* by #startEnumeratingMedia().
*/
void mediaEnumStarted();
/**
* Emitted when a new media item from the list has updated
* its accessibility state.
*/
void mediaEnumerated (const VBoxMedia &aMedia, int aIndex);
/**
* Emitted at the end of the enumeration process started
* by #startEnumeratingMedia(). The @a aList argument is passed for
* convenience, it is exactly the same as returned by #currentMediaList().
*/
void mediaEnumFinished (const VBoxMediaList &aList);
/** Emitted when a new media is added using #addMedia(). */
void mediaAdded (const VBoxMedia &);
/** Emitted when the media is updated using #updateMedia(). */
void mediaUpdated (const VBoxMedia &);
/** Emitted when the media is removed using #removeMedia(). */
void mediaRemoved (VBoxDefs::DiskType, const QUuid &);
/* signals emitted when the VirtualBox callback is called by the server
* (not that currently these signals are emitted only when the application
* is the in the VM selector mode) */
void machineStateChanged (const VBoxMachineStateChangeEvent &e);
void machineDataChanged (const VBoxMachineDataChangeEvent &e);
void machineRegistered (const VBoxMachineRegisteredEvent &e);
void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
void snapshotChanged (const VBoxSnapshotEvent &e);
void canShowRegDlg (bool aCanShow);
public slots:
bool openURL (const QString &aURL);
void showRegistrationDialog (bool aForce = true);
protected:
bool event (QEvent *e);
bool eventFilter (QObject *, QEvent *);
private:
VBoxGlobal();
~VBoxGlobal() {}
void init();
bool mValid;
CVirtualBox mVBox;
VBoxGlobalSettings gset;
VBoxSelectorWnd *mSelectorWnd;
VBoxConsoleWnd *mConsoleWnd;
#ifdef VBOX_WITH_REGISTRATION
VBoxRegistrationDlg *mRegDlg;
#endif
QUuid vmUuid;
QThread *media_enum_thread;
VBoxMediaList media_list;
VBoxDefs::RenderMode vm_render_mode;
const char * vm_render_mode_str;
#ifdef VBOX_WITH_DEBUGGER_GUI
bool dbg_enabled;
bool dbg_visible_at_startup;
#endif
#if defined (Q_WS_WIN32)
DWORD dwHTMLHelpCookie;
#endif
CVirtualBoxCallback callback;
typedef QValueVector <QString> QStringVector;
QString verString;
QValueVector <CGuestOSType> vm_os_types;
QDict <QPixmap> vm_os_type_icons;
QPtrVector <QColor> vm_state_color;
QIntDict <QPixmap> mStateIcons;
QPixmap mOfflineSnapshotIcon, mOnlineSnapshotIcon;
QStringVector machineStates;
QStringVector sessionStates;
QStringVector deviceTypes;
QStringVector storageBuses;
QStringVector storageBusDevices;
QStringVector storageBusChannels;
QStringVector diskTypes;
QStringVector diskStorageTypes;
QStringVector vrdpAuthTypes;
QStringVector portModeTypes;
QStringVector usbFilterActionTypes;
QStringVector audioDriverTypes;
QStringVector audioControllerTypes;
QStringVector networkAdapterTypes;
QStringVector networkAttachmentTypes;
QStringVector clipboardTypes;
QStringVector ideControllerTypes;
QStringVector USBDeviceStates;
QString mUserDefinedPortName;
mutable bool detailReportTemplatesReady;
friend VBoxGlobal &vboxGlobal();
friend class VBoxCallback;
};
inline VBoxGlobal &vboxGlobal() { return VBoxGlobal::instance(); }
// Helper classes
////////////////////////////////////////////////////////////////////////////////
/**
* Generic asyncronous event.
*
* This abstract class is intended to provide a conveinent way to execute
* code on the main GUI thread asynchronously to the calling party. This is
* done by putting necessary actions to the #handle() function in a subclass
* and then posting an instance of the subclass using #post(). The instance
* must be allocated on the heap using the <tt>new</tt> operation and will be
* automatically deleted after processing. Note that if you don't call #post()
* on the created instance, you have to delete it yourself.
*/
class VBoxAsyncEvent : public QEvent
{
public:
VBoxAsyncEvent() : QEvent ((QEvent::Type) VBoxDefs::AsyncEventType) {}
/**
* Worker function. Gets executed on the GUI thread when the posted event
* is processed by the main event loop.
*/
virtual void handle() = 0;
/**
* Posts this event to the main event loop.
* The caller loses ownership of this object after this method returns
* and must not delete the object.
*/
void post()
{
QApplication::postEvent (&vboxGlobal(), this);
}
};
/**
* USB Popup Menu class.
* This class provides the list of USB devices attached to the host.
*/
class VBoxUSBMenu : public QPopupMenu
{
Q_OBJECT
public:
enum { USBDevicesMenuNoDevicesId = 1 };
VBoxUSBMenu (QWidget *);
const CUSBDevice& getUSB (int);
void setConsole (const CConsole &);
private slots:
void processAboutToShow();
void processHighlighted (int);
private:
QMap <int, CUSBDevice> mUSBDevicesMap;
CConsole mConsole;
};
/**
* Enable/Disable Menu class.
* This class provides enable/disable menu items.
*/
class VBoxSwitchMenu : public QPopupMenu
{
Q_OBJECT
public:
VBoxSwitchMenu (QWidget *, QAction *, bool aInverted = false);
void setToolTip (const QString &);
private slots:
void processAboutToShow();
void processActivated (int);
private:
QAction *mAction;
QString mTip;
bool mInverted;
};
#endif /* __VBoxGlobal_h__ */