VBoxGlobal.h revision b9042bb7a5efd07d617a8a7d812b669d75682779
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync/** @file
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync *
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * VBox frontends: Qt GUI ("VirtualBox"):
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * VBoxGlobal class declaration
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync/*
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync *
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * available from http://www.virtualbox.org. This file is free software;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * you can redistribute it and/or modify it under the terms of the GNU
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * General Public License as published by the Free Software Foundation,
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync *
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * If you received this file as part of a commercial VirtualBox
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * distribution, then only the terms of your commercial VirtualBox
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * license agreement apply instead of the previous paragraph.
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#ifndef __VBoxGlobal_h__
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#define __VBoxGlobal_h__
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include "COMDefs.h"
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include "VMGlobalSettings.h"
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qapplication.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qpixmap.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qiconset.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qcolor.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <quuid.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qthread.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qptrvector.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qvaluevector.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qvaluelist.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qdict.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#include <qintdict.h>
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync// Auxiliary types
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync/** Simple media descriptor type. */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncstruct VBoxMedia
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync enum Status { Unknown, Ok, Error, Inaccessible };
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMedia() : type (VBoxDefs::InvalidType), status (Ok) {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMedia (const CUnknown &d, VBoxDefs::DiskType t, Status s)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : disk (d), type (t), status (s) {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CUnknown disk;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxDefs::DiskType type;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync Status status;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsynctypedef QValueList <VBoxMedia> VBoxMediaList;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync// VirtualBox callback events
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxMachineStateChangeEvent : public QEvent
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncpublic:
e5996b7752d36e94746f991da154f641056528d8vboxsync VBoxMachineStateChangeEvent (const QUuid &aId, CEnums::MachineState aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineStateChangeEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync , id (aId), state (aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const QUuid id;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const CEnums::MachineState state;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxMachineDataChangeEvent : public QEvent
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncpublic:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMachineDataChangeEvent (const QUuid &aId)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineDataChangeEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync , id (aId)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const QUuid id;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxMachineRegisteredEvent : public QEvent
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncpublic:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMachineRegisteredEvent (const QUuid &aId, bool aRegistered)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineRegisteredEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync , id (aId), registered (aRegistered)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const QUuid id;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const bool registered;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxSessionStateChangeEvent : public QEvent
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncpublic:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxSessionStateChangeEvent (const QUuid &aId, CEnums::SessionState aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::SessionStateChangeEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync , id (aId), state (aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const QUuid id;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const CEnums::SessionState state;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxSnapshotEvent : public QEvent
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncpublic:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync enum What { Taken, Discarded, Changed };
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxSnapshotEvent (const QUuid &aMachineId, const QUuid &aSnapshotId,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync What aWhat)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync : QEvent ((QEvent::Type) VBoxDefs::SnapshotEventType)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync , what (aWhat)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync , machineId (aMachineId), snapshotId (aSnapshotId)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync {}
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const What what;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const QUuid machineId;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const QUuid snapshotId;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync};
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync// VBoxGlobal
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxSelectorWnd;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxConsoleWnd;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncclass VBoxGlobal : public QObject
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync{
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync Q_OBJECT
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsyncpublic:
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static VBoxGlobal &instance();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isValid() { return valid; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QString versionString() { return verString; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync CVirtualBox virtualBox() const { return vbox; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const VMGlobalSettings &settings() const { return gset; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool setSettings (const VMGlobalSettings &gs);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxSelectorWnd &selectorWnd();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxConsoleWnd &consoleWnd();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isVMConsoleProcess() const { return !vmUuid.isNull(); }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QUuid managedVMUuid() const { return vmUuid; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxDefs::RenderMode vmRenderMode() const { return vm_render_mode; }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const char *vmRenderModeStr() const { return vm_render_mode_str; }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#ifdef VBOX_WITH_DEBUGGER_GUI
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool isDebuggerEnabled() const { return dbg_enabled; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isDebuggerVisibleAtStartup() const { return dbg_visible_at_startup; }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#endif
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync // VBox enum to/from string/icon/color convertors
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringList vmGuestOSTypeDescriptions() const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync CGuestOSType vmGuestOSType (int index) const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync int vmGuestOSTypeIndex (const CGuestOSType &type) const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QPixmap vmGuestOSTypeIcon (const QString &type) const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QPixmap toIcon (CEnums::MachineState s) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QPixmap *pm = mStateIcons [s];
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (pm, ("Icon for VM state %d must be defined", s));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return pm ? *pm : QPixmap();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const QColor &toColor (CEnums::MachineState s) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static const QColor none;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (vm_state_color [s], ("No color for %d", s));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return vm_state_color [s] ? *vm_state_color [s] : none;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QString toString (CEnums::MachineState s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (!machineStates [s].isNull(), ("No text for %d", s));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return machineStates [s];
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QString toString (CEnums::SessionState s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!sessionStates [s].isNull(), ("No text for %d", s));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return sessionStates [s];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::DiskControllerType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskControllerTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return diskControllerTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::HardDiskType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return diskTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::HardDiskStorageType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskStorageTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return diskStorageTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::VRDPAuthType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!vrdpAuthTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return vrdpAuthTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::VRDPAuthType toVRDPAuthType (const QString &s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector::const_iterator it =
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync qFind (vrdpAuthTypes.begin(), vrdpAuthTypes.end(), s);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (it != vrdpAuthTypes.end(), ("No value for {%s}", s.latin1()));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return CEnums::VRDPAuthType (it - vrdpAuthTypes.begin());
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /**
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Similar to toString (CEnums::HardDiskType), but returns 'Differencing'
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * for normal hard disks that have a parent hard disk.
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString hardDiskTypeString (const CHardDisk &aHD) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync if (!aHD.GetParent().isNull())
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync Assert (aHD.GetType() == CEnums::NormalHardDisk);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return tr ("Differencing", "hard disk");
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return toString (aHD.GetType());
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::DiskControllerType t, LONG d) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::DeviceType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!deviceTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return deviceTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::DeviceType toDeviceType (const QString &s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector::const_iterator it =
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync qFind (deviceTypes.begin(), deviceTypes.end(), s);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (it != deviceTypes.end(), ("No value for {%s}", s.latin1()));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return CEnums::DeviceType (it - deviceTypes.begin());
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringList deviceTypeStrings() const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::AudioDriverType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!audioDriverTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return audioDriverTypes [t];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::AudioDriverType toAudioDriverType (const QString &s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector::const_iterator it =
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync qFind (audioDriverTypes.begin(), audioDriverTypes.end(), s);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (it != audioDriverTypes.end(), ("No value for {%s}", s.latin1()));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return CEnums::AudioDriverType (it - audioDriverTypes.begin());
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QString toString (CEnums::NetworkAttachmentType t) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (!networkAttachmentTypes [t].isNull(), ("No text for %d", t));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync return networkAttachmentTypes [t];
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync CEnums::NetworkAttachmentType toNetworkAttachmentType (const QString &s) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync {
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QStringVector::const_iterator it =
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync qFind (networkAttachmentTypes.begin(), networkAttachmentTypes.end(), s);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (it != networkAttachmentTypes.end(), ("No value for {%s}", s.latin1()));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return CEnums::NetworkAttachmentType (it - networkAttachmentTypes.begin());
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::USBDeviceState aState) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!USBDeviceStates [aState].isNull(), ("No text for %d", aState));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return USBDeviceStates [aState];
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QPixmap snapshotIcon (bool online) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync {
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return online ? mOnlineSnapshotIcon : mOfflineSnapshotIcon;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /* details generators */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString details (const CHardDisk &aHD, bool aPredict = false) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString details (const CUSBDevice &aDevice) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toolTip (const CUSBDevice &aDevice) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString prepareFileNameForHTML (const QString &fn) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString detailsReport (const CMachine &m, bool isNewVM, bool withLinks) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /* VirtualBox helpers */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CSession openSession (const QUuid &id);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool startMachine (const QUuid &id);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync void startEnumeratingMedia();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isInEnumeratingProcess() { return media_enum_thread ? true : false; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /** Returns a list of all currently enumerated media (it is empty if the
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync * enumeration has been finished or never been started). */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxMediaList currentMediaList() const { return media_list; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /* various helpers */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync void languageChange();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /* made public for internal purposes */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync void cleanup();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /* public static stuff */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static QIconSet iconSet (const char *aNormal,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const char *aDisabled = 0,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const char *aActive = 0);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static QIconSet iconSetEx (const char *aNormal, const char *aSmallNormal,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const char *aDisabled = 0, const char *aSmallDisabled = 0,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const char *aActive = 0, const char *aSmallActive = 0);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static QRect normalizeGeometry (const QRect &aRect, const QRect &aBoundRect,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool aCanResize = true);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static void centerWidget (QWidget *aWidget, QWidget *aRelative,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool aCanResize = true);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static QChar decimalSep();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static QString sizeRegexp();
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync static Q_UINT64 parseSize (const QString &);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync static QString formatSize (Q_UINT64, int aMode = 0);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync static QString highlight (const QString &aStr, bool aToolTip = false);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncsignals:
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /**
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Emitted during the enumeration process started
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * by #startEnumeratingMedia(). */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void mediaEnumerated (const VBoxMedia &media);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /**
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Emitted at the end of the enumeration process started
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * by #startEnumeratingMedia().
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync * @note #currentMediaList() will return an empty list
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * when this signal is emitted, use the argument instead. */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void mediaEnumerated (const VBoxMediaList &list);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /* signals emitted when the VirtualBox callback is called by the server
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * (not that currently these signals are emitted only when the application
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync * is the in the VM selector mode) */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync void machineStateChanged (const VBoxMachineStateChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void machineDataChanged (const VBoxMachineDataChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void machineRegistered (const VBoxMachineRegisteredEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void snapshotChanged (const VBoxSnapshotEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncprotected:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool event (QEvent *e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncprivate:
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxGlobal();
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync ~VBoxGlobal() {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void init();
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool valid;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CVirtualBox vbox;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VMGlobalSettings gset;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxSelectorWnd *selector_wnd;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxConsoleWnd *console_wnd;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QUuid vmUuid;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QThread *media_enum_thread;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMediaList media_list;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxDefs::RenderMode vm_render_mode;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const char * vm_render_mode_str;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#ifdef VBOX_WITH_DEBUGGER_GUI
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool dbg_enabled;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool dbg_visible_at_startup;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#endif
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#if defined (Q_WS_WIN32)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync DWORD dwHTMLHelpCookie;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync#endif
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CVirtualBoxCallback callback;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync typedef QValueVector <QString> QStringVector;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString verString;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QValueVector <CGuestOSType> vm_os_types;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QDict <QPixmap> vm_os_type_icons;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QPtrVector <QColor> vm_state_color;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QIntDict <QPixmap> mStateIcons;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QPixmap mOfflineSnapshotIcon, mOnlineSnapshotIcon;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector machineStates;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector sessionStates;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector deviceTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector diskControllerTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector diskTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector diskStorageTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector vrdpAuthTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector diskControllerDevices;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector audioDriverTypes;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QStringVector networkAttachmentTypes;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QStringVector USBDeviceStates;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync mutable bool detailReportTemplatesReady;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync friend VBoxGlobal &vboxGlobal();
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync friend class VBoxCallback;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync};
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncinline VBoxGlobal &vboxGlobal() { return VBoxGlobal::instance(); }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync#endif /* __VBoxGlobal_h__ */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync