VBoxGlobal.h revision b9042bb7a5efd07d617a8a7d812b669d75682779
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * VBox frontends: Qt GUI ("VirtualBox"):
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * VBoxGlobal class declaration
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
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 * 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// Auxiliary types
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync/** Simple media descriptor type. */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMedia() : type (VBoxDefs::InvalidType), status (Ok) {}
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMedia (const CUnknown &d, VBoxDefs::DiskType t, Status s)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync// VirtualBox callback events
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
e5996b7752d36e94746f991da154f641056528d8vboxsync VBoxMachineStateChangeEvent (const QUuid &aId, CEnums::MachineState aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineStateChangeEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineDataChangeEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxMachineRegisteredEvent (const QUuid &aId, bool aRegistered)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::MachineRegisteredEventType)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxSessionStateChangeEvent (const QUuid &aId, CEnums::SessionState aState)
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync : QEvent ((QEvent::Type) VBoxDefs::SessionStateChangeEventType)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxSnapshotEvent (const QUuid &aMachineId, const QUuid &aSnapshotId,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync : QEvent ((QEvent::Type) VBoxDefs::SnapshotEventType)
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync// VBoxGlobal
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync////////////////////////////////////////////////////////////////////////////////
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const VMGlobalSettings &settings() const { return gset; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isVMConsoleProcess() const { return !vmUuid.isNull(); }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync VBoxDefs::RenderMode vmRenderMode() const { return vm_render_mode; }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync const char *vmRenderModeStr() const { return vm_render_mode_str; }
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync bool isDebuggerEnabled() const { return dbg_enabled; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isDebuggerVisibleAtStartup() const { return dbg_visible_at_startup; }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync int vmGuestOSTypeIndex (const CGuestOSType &type) const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync QPixmap vmGuestOSTypeIcon (const QString &type) const;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (pm, ("Icon for VM state %d must be defined", s));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync const QColor &toColor (CEnums::MachineState s) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (vm_state_color [s], ("No color for %d", s));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return vm_state_color [s] ? *vm_state_color [s] : none;
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (!machineStates [s].isNull(), ("No text for %d", s));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!sessionStates [s].isNull(), ("No text for %d", s));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::DiskControllerType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskControllerTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::HardDiskStorageType t) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!diskStorageTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!vrdpAuthTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::VRDPAuthType toVRDPAuthType (const QString &s) const
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 * Similar to toString (CEnums::HardDiskType), but returns 'Differencing'
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * for normal hard disks that have a parent hard disk.
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString hardDiskTypeString (const CHardDisk &aHD) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString toString (CEnums::DiskControllerType t, LONG d) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!deviceTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::DeviceType toDeviceType (const QString &s) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (it != deviceTypes.end(), ("No value for {%s}", s.latin1()));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return CEnums::DeviceType (it - deviceTypes.begin());
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!audioDriverTypes [t].isNull(), ("No text for %d", t));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync CEnums::AudioDriverType toAudioDriverType (const QString &s) const
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 QString toString (CEnums::NetworkAttachmentType t) const
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync AssertMsg (!networkAttachmentTypes [t].isNull(), ("No text for %d", t));
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync CEnums::NetworkAttachmentType toNetworkAttachmentType (const QString &s) const
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 QString toString (CEnums::USBDeviceState aState) const
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync AssertMsg (!USBDeviceStates [aState].isNull(), ("No text for %d", aState));
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync return online ? mOnlineSnapshotIcon : mOfflineSnapshotIcon;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /* details generators */
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString details (const CHardDisk &aHD, bool aPredict = false) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString prepareFileNameForHTML (const QString &fn) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync QString detailsReport (const CMachine &m, bool isNewVM, bool withLinks) const;
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync /* VirtualBox helpers */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool isInEnumeratingProcess() { return media_enum_thread ? true : false; }
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 /* various helpers */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /* made public for internal purposes */
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync /* public static stuff */
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 static QRect normalizeGeometry (const QRect &aRect, const QRect &aBoundRect,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool aCanResize = true);
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync static void centerWidget (QWidget *aWidget, QWidget *aRelative,
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync bool aCanResize = true);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync static QString formatSize (Q_UINT64, int aMode = 0);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync static QString highlight (const QString &aStr, bool aToolTip = false);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * Emitted during the enumeration process started
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync * by #startEnumeratingMedia(). */
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 /* 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 void machineStateChanged (const VBoxMachineStateChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void machineDataChanged (const VBoxMachineDataChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void machineRegistered (const VBoxMachineRegisteredEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync void sessionStateChanged (const VBoxSessionStateChangeEvent &e);
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsyncinline VBoxGlobal &vboxGlobal() { return VBoxGlobal::instance(); }
8cba79d647bd84eb8b7d9eb39ac77cc85ae247c5vboxsync#endif /* __VBoxGlobal_h__ */