Changeset 82944 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Jan 31, 2020 3:00:08 PM (5 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox
- Files:
-
- 12 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
r82857 r82944 612 612 src/manager/UIVirtualBoxManagerWidget.h \ 613 613 src/manager/UIVirtualMachineItem.h \ 614 src/manager/UIVirtualMachineItemLocal.h \ 614 615 src/manager/UIWelcomePane.h \ 615 616 src/manager/chooser/UIChooser.h \ … … 1054 1055 src/manager/UIVirtualBoxManagerWidget.cpp \ 1055 1056 src/manager/UIVirtualMachineItem.cpp \ 1057 src/manager/UIVirtualMachineItemLocal.cpp \ 1056 1058 src/manager/UIWelcomePane.cpp \ 1057 1059 src/manager/chooser/UIChooser.cpp \ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
r82942 r82944 37 37 #include "UISettingsDialogSpecific.h" 38 38 #include "UIVMLogViewerDialog.h" 39 #include "UIVirtualMachineItem .h"39 #include "UIVirtualMachineItemLocal.h" 40 40 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER 41 41 # include "UIUpdateManager.h" … … 686 686 UIVirtualMachineItem *pItem = currentItem(); 687 687 AssertMsgReturnVoid(pItem, ("Current item should be selected!\n")); 688 /* Make sure current item is local one: */ 689 UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal(); 690 AssertMsgReturnVoid(pItemLocal, ("Current item should be local one!\n")); 688 691 689 692 /* Use the "safe way" to open stack of Mac OS X Sheets: */ 690 693 QWidget *pWizardParent = windowManager().realParentWindow(this); 691 const QStringList &machineGroupNames = pItem ->groups();694 const QStringList &machineGroupNames = pItemLocal->groups(); 692 695 const QString strGroup = !machineGroupNames.isEmpty() ? machineGroupNames.at(0) : QString(); 693 UISafePointerWizard pWizard = new UIWizardCloneVM(pWizardParent, pItem ->machine(), strGroup);696 UISafePointerWizard pWizard = new UIWizardCloneVM(pWizardParent, pItemLocal->machine(), strGroup); 694 697 windowManager().registerNewParent(pWizard, pWizardParent); 695 698 pWizard->prepare(); … … 1086 1089 foreach (UIVirtualMachineItem *pItem, items) 1087 1090 { 1091 /* Make sure current item is local one: */ 1092 UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal(); 1093 if (!pItemLocal) 1094 continue; 1095 1088 1096 /* Check if log could be show for the current item: */ 1089 1097 if (!isActionEnabled(UIActionIndexST_M_Group_S_ShowLogDialog, QList<UIVirtualMachineItem*>() << pItem)) … … 1092 1100 QIManagerDialog *pLogViewerDialog = 0; 1093 1101 /* Create and Show VM Log Viewer: */ 1094 if (!m_logViewers[pItem ->machine().GetHardwareUUID().toString()])1095 { 1096 UIVMLogViewerDialogFactory dialogFactory(actionPool(), pItem ->machine());1102 if (!m_logViewers[pItemLocal->machine().GetHardwareUUID().toString()]) 1103 { 1104 UIVMLogViewerDialogFactory dialogFactory(actionPool(), pItemLocal->machine()); 1097 1105 dialogFactory.prepare(pLogViewerDialog, this); 1098 1106 if (pLogViewerDialog) 1099 1107 { 1100 m_logViewers[pItem ->machine().GetHardwareUUID().toString()] = pLogViewerDialog;1108 m_logViewers[pItemLocal->machine().GetHardwareUUID().toString()] = pLogViewerDialog; 1101 1109 connect(pLogViewerDialog, &QIManagerDialog::sigClose, 1102 1110 this, &UIVirtualBoxManager::sltCloseLogViewerWindow); … … 1105 1113 else 1106 1114 { 1107 pLogViewerDialog = m_logViewers[pItem ->machine().GetHardwareUUID().toString()];1115 pLogViewerDialog = m_logViewers[pItemLocal->machine().GetHardwareUUID().toString()]; 1108 1116 } 1109 1117 if (pLogViewerDialog) … … 1166 1174 foreach (UIVirtualMachineItem *pItem, items) 1167 1175 { 1176 /* Make sure current item is local one: */ 1177 UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal(); 1178 if (!pItemLocal) 1179 continue; 1180 1168 1181 /* Check if that item could be shown in file-browser: */ 1169 1182 if (!isActionEnabled(UIActionIndexST_M_Group_S_ShowInFileManager, QList<UIVirtualMachineItem*>() << pItem)) … … 1171 1184 1172 1185 /* Show VM in filebrowser: */ 1173 UIDesktopServices::openInFileManager(pItem ->machine().GetSettingsFilePath());1186 UIDesktopServices::openInFileManager(pItemLocal->machine().GetSettingsFilePath()); 1174 1187 } 1175 1188 } … … 1184 1197 foreach (UIVirtualMachineItem *pItem, items) 1185 1198 { 1199 /* Make sure current item is local one: */ 1200 UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal(); 1201 if (!pItemLocal) 1202 continue; 1203 1186 1204 /* Check if shortcuts could be created for this item: */ 1187 1205 if (!isActionEnabled(UIActionIndexST_M_Group_S_CreateShortcut, QList<UIVirtualMachineItem*>() << pItem)) … … 1189 1207 1190 1208 /* Create shortcut for this VM: */ 1191 const CMachine &comMachine = pItem ->machine();1209 const CMachine &comMachine = pItemLocal->machine(); 1192 1210 UIDesktopServices::createMachineShortcut(comMachine.GetSettingsFilePath(), 1193 1211 QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), … … 1610 1628 && fStartConfirmed)) 1611 1629 { 1612 /* Fetch item launch mode: */ 1613 UICommon::LaunchMode enmItemLaunchMode = enmLaunchMode; 1614 if (enmItemLaunchMode == UICommon::LaunchMode_Invalid) 1615 enmItemLaunchMode = pItem->isItemRunningHeadless() 1616 ? UICommon::LaunchMode_Separate 1617 : qApp->keyboardModifiers() == Qt::ShiftModifier 1618 ? UICommon::LaunchMode_Headless 1619 : UICommon::LaunchMode_Default; 1620 1621 /* Launch current VM: */ 1622 CMachine machine = pItem->machine(); 1623 uiCommon().launchMachine(machine, enmItemLaunchMode); 1630 /* Make sure item is local one: */ 1631 if (pItem->itemType() == UIVirtualMachineItem::ItemType_Local) 1632 { 1633 /* Fetch item launch mode: */ 1634 UICommon::LaunchMode enmItemLaunchMode = enmLaunchMode; 1635 if (enmItemLaunchMode == UICommon::LaunchMode_Invalid) 1636 enmItemLaunchMode = pItem->isItemRunningHeadless() 1637 ? UICommon::LaunchMode_Separate 1638 : qApp->keyboardModifiers() == Qt::ShiftModifier 1639 ? UICommon::LaunchMode_Headless 1640 : UICommon::LaunchMode_Default; 1641 1642 /* Launch current VM: */ 1643 CMachine machine = pItem->toLocal()->machine(); 1644 uiCommon().launchMachine(machine, enmItemLaunchMode); 1645 } 1624 1646 } 1625 1647 } … … 2074 2096 foreach (UIVirtualMachineItem *pItem, items) 2075 2097 { 2076 if (pItem->isItemStarted() && (pItem->canSwitchTo() || pItem->isItemRunningHeadless())) 2098 if ( pItem->toLocal() 2099 && pItem->isItemStarted() 2100 && ( pItem->toLocal()->canSwitchTo() 2101 || pItem->isItemRunningHeadless())) 2077 2102 return true; 2078 2103 } … … 2085 2110 foreach (UIVirtualMachineItem *pItem, items) 2086 2111 { 2087 if ((pItem->isItemPoweredOff() && pItem->isItemEditable()) || 2088 (pItem->isItemStarted() && (pItem->canSwitchTo() || pItem->isItemRunningHeadless()))) 2112 if ( pItem->toLocal() 2113 && ( ( pItem->isItemPoweredOff() 2114 && pItem->isItemEditable()) 2115 || ( pItem->isItemStarted() 2116 && ( pItem->toLocal()->canSwitchTo() 2117 || pItem->isItemRunningHeadless())))) 2089 2118 return true; 2090 2119 } -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp
r79461 r82944 32 32 #include "UITabBar.h" 33 33 #include "UIToolBar.h" 34 #include "UIVirtualMachineItem .h"34 #include "UIVirtualMachineItemLocal.h" 35 35 #include "UITools.h" 36 36 #ifndef VBOX_WS_MAC … … 720 720 m_pPaneToolsMachine->setItems(currentItems()); 721 721 /* Propagate current machine to update the Snapshots-pane or/and Logviewer-pane: */ 722 m_pPaneToolsMachine->setMachine(pItem->machine()); 722 if (pItem->itemType() == UIVirtualMachineItem::ItemType_Local) 723 m_pPaneToolsMachine->setMachine(pItem->toLocal()->machine()); 723 724 } 724 725 else -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp
r82942 r82944 16 16 */ 17 17 18 /* Qt includes: */19 #include <QFileInfo>20 #include <QIcon>21 22 18 /* GUI includes: */ 23 #include "UIVirtualMachineItem.h" 24 #include "UICommon.h" 25 #include "UIConverter.h" 26 #include "UIExtraDataManager.h" 27 #ifdef VBOX_WS_MAC 28 # include <ApplicationServices/ApplicationServices.h> 29 #endif /* VBOX_WS_MAC */ 30 31 /* COM includes: */ 32 #include "CSnapshot.h" 19 #include "UIVirtualMachineItemLocal.h" 33 20 34 21 … … 37 24 *********************************************************************************************************************************/ 38 25 39 UIVirtualMachineItem::UIVirtualMachineItem( const CMachine &comMachine)40 : m_ comMachine(comMachine)26 UIVirtualMachineItem::UIVirtualMachineItem(ItemType enmType) 27 : m_enmType(enmType) 41 28 , m_fAccessible(false) 42 , m_cSnaphot(0)43 29 , m_enmMachineState(KMachineState_Null) 44 , m_enmSessionState(KSessionState_Null)45 30 , m_enmConfigurationAccessLevel(ConfigurationAccessLevel_Null) 46 31 , m_fHasDetails(false) 47 32 { 48 recache();49 33 } 50 34 51 35 UIVirtualMachineItem::~UIVirtualMachineItem() 52 36 { 37 } 38 39 UIVirtualMachineItemLocal *UIVirtualMachineItem::toLocal() 40 { 41 return itemType() == ItemType_Local 42 ? static_cast<UIVirtualMachineItemLocal*>(this) 43 : 0; 53 44 } 54 45 … … 58 49 *pLogicalSize = m_logicalPixmapSize; 59 50 return m_pixmap; 60 }61 62 void UIVirtualMachineItem::recache()63 {64 /* Determine attributes which are always available: */65 m_strId = m_comMachine.GetId().toString();66 m_strSettingsFile = m_comMachine.GetSettingsFilePath();67 68 /* Now determine whether VM is accessible: */69 m_fAccessible = m_comMachine.GetAccessible();70 if (m_fAccessible)71 {72 /* Reset last access error information: */73 m_comAccessError = CVirtualBoxErrorInfo();74 75 /* Determine own VM attributes: */76 m_strName = m_comMachine.GetName();77 m_strOSTypeId = m_comMachine.GetOSTypeId();78 m_groups = m_comMachine.GetGroups().toList();79 80 /* Determine snapshot attributes: */81 CSnapshot comSnapshot = m_comMachine.GetCurrentSnapshot();82 m_strSnapshotName = comSnapshot.isNull() ? QString() : comSnapshot.GetName();83 m_lastStateChange.setTime_t(m_comMachine.GetLastStateChange() / 1000);84 m_cSnaphot = m_comMachine.GetSnapshotCount();85 86 /* Determine VM states: */87 m_enmMachineState = m_comMachine.GetState();88 m_strMachineStateName = gpConverter->toString(m_enmMachineState);89 m_machineStateIcon = gpConverter->toIcon(m_enmMachineState);90 m_enmSessionState = m_comMachine.GetSessionState();91 m_strSessionStateName = gpConverter->toString(m_enmSessionState);92 93 /* Determine configuration access level: */94 m_enmConfigurationAccessLevel = ::configurationAccessLevel(m_enmSessionState, m_enmMachineState);95 /* Also take restrictions into account: */96 if ( m_enmConfigurationAccessLevel != ConfigurationAccessLevel_Null97 && !gEDataManager->machineReconfigurationEnabled(m_strId))98 m_enmConfigurationAccessLevel = ConfigurationAccessLevel_Null;99 100 /* Determine PID finally: */101 if ( m_enmMachineState == KMachineState_PoweredOff102 || m_enmMachineState == KMachineState_Saved103 || m_enmMachineState == KMachineState_Teleported104 || m_enmMachineState == KMachineState_Aborted105 )106 {107 m_pid = (ULONG) ~0;108 }109 else110 {111 m_pid = m_comMachine.GetSessionPID();112 }113 114 /* Determine whether we should show this VM details: */115 m_fHasDetails = gEDataManager->showMachineInVirtualBoxManagerDetails(m_strId);116 }117 else118 {119 /* Update last access error information: */120 m_comAccessError = m_comMachine.GetAccessError();121 122 /* Determine machine name on the basis of settings file only: */123 QFileInfo fi(m_strSettingsFile);124 m_strName = UICommon::hasAllowedExtension(fi.completeSuffix(), VBoxFileExts)125 ? fi.completeBaseName()126 : fi.fileName();127 /* Reset other VM attributes: */128 m_strOSTypeId = QString();129 m_groups.clear();130 131 /* Reset snapshot attributes: */132 m_strSnapshotName = QString();133 m_lastStateChange = QDateTime::currentDateTime();134 m_cSnaphot = 0;135 136 /* Reset VM states: */137 m_enmMachineState = KMachineState_Null;138 m_machineStateIcon = gpConverter->toIcon(KMachineState_Aborted);139 m_enmSessionState = KSessionState_Null;140 141 /* Reset configuration access level: */142 m_enmConfigurationAccessLevel = ConfigurationAccessLevel_Null;143 144 /* Reset PID finally: */145 m_pid = (ULONG) ~0;146 147 /* Reset whether we should show this VM details: */148 m_fHasDetails = true;149 }150 151 /* Recache item pixmap: */152 recachePixmap();153 154 /* Retranslate finally: */155 retranslateUi();156 }157 158 void UIVirtualMachineItem::recachePixmap()159 {160 /* If machine is accessible: */161 if (m_fAccessible)162 {163 /* First, we are trying to acquire personal machine guest OS type icon: */164 m_pixmap = uiCommon().vmUserPixmapDefault(m_comMachine, &m_logicalPixmapSize);165 /* If there is nothing, we are using icon corresponding to cached guest OS type: */166 if (m_pixmap.isNull())167 m_pixmap = uiCommon().vmGuestOSTypePixmapDefault(m_strOSTypeId, &m_logicalPixmapSize);168 }169 /* Otherwise: */170 else171 {172 /* We are using "Other" guest OS type icon: */173 m_pixmap = uiCommon().vmGuestOSTypePixmapDefault("Other", &m_logicalPixmapSize);174 }175 }176 177 bool UIVirtualMachineItem::canSwitchTo() const178 {179 return const_cast <CMachine&>(m_comMachine).CanShowConsoleWindow();180 }181 182 bool UIVirtualMachineItem::switchTo()183 {184 #ifdef VBOX_WS_MAC185 ULONG64 id = m_comMachine.ShowConsoleWindow();186 #else187 WId id = (WId) m_comMachine.ShowConsoleWindow();188 #endif189 AssertWrapperOk(m_comMachine);190 if (!m_comMachine.isOk())191 return false;192 193 /* winId = 0 it means the console window has already done everything194 * necessary to implement the "show window" semantics. */195 if (id == 0)196 return true;197 198 #if defined (VBOX_WS_WIN) || defined (VBOX_WS_X11)199 200 return uiCommon().activateWindow(id, true);201 202 #elif defined (VBOX_WS_MAC)203 204 // WORKAROUND:205 // This is just for the case were the other process cannot steal206 // the focus from us. It will send us a PSN so we can try.207 ProcessSerialNumber psn;208 psn.highLongOfPSN = id >> 32;209 psn.lowLongOfPSN = (UInt32)id;210 OSErr rc = ::SetFrontProcess(&psn);211 if (!rc)212 Log(("GUI: %#RX64 couldn't do SetFrontProcess on itself, the selector (we) had to do it...\n", id));213 else214 Log(("GUI: Failed to bring %#RX64 to front. rc=%#x\n", id, rc));215 return !rc;216 217 #else218 219 return false;220 221 #endif222 }223 224 bool UIVirtualMachineItem::isItemEditable() const225 {226 return accessible()227 && sessionState() == KSessionState_Unlocked;228 }229 230 bool UIVirtualMachineItem::isItemSaved() const231 {232 return accessible()233 && machineState() == KMachineState_Saved;234 }235 236 bool UIVirtualMachineItem::isItemPoweredOff() const237 {238 return accessible()239 && ( machineState() == KMachineState_PoweredOff240 || machineState() == KMachineState_Saved241 || machineState() == KMachineState_Teleported242 || machineState() == KMachineState_Aborted);243 }244 245 bool UIVirtualMachineItem::isItemStarted() const246 {247 return isItemRunning()248 || isItemPaused();249 }250 251 bool UIVirtualMachineItem::isItemRunning() const252 {253 return accessible()254 && ( machineState() == KMachineState_Running255 || machineState() == KMachineState_Teleporting256 || machineState() == KMachineState_LiveSnapshotting);257 }258 259 bool UIVirtualMachineItem::isItemRunningHeadless() const260 {261 if (isItemRunning())262 {263 /* Open session to determine which frontend VM is started with: */264 CSession comSession = uiCommon().openExistingSession(id());265 if (!comSession.isNull())266 {267 /* Acquire the session name: */268 const QString strSessionName = comSession.GetMachine().GetSessionName();269 /* Close the session early: */270 comSession.UnlockMachine();271 /* Check whether we are in 'headless' session: */272 return strSessionName == "headless";273 }274 }275 return false;276 }277 278 bool UIVirtualMachineItem::isItemPaused() const279 {280 return accessible()281 && ( machineState() == KMachineState_Paused282 || machineState() == KMachineState_TeleportingPausedVM);283 }284 285 bool UIVirtualMachineItem::isItemStuck() const286 {287 return accessible()288 && machineState() == KMachineState_Stuck;289 }290 291 void UIVirtualMachineItem::retranslateUi()292 {293 /* This is used in tool-tip generation: */294 const QString strDateTime = (m_lastStateChange.date() == QDate::currentDate())295 ? m_lastStateChange.time().toString(Qt::LocalDate)296 : m_lastStateChange.toString(Qt::LocalDate);297 298 /* If machine is accessible: */299 if (m_fAccessible)300 {301 /* Update tool-tip: */302 m_strToolTipText = QString("<b>%1</b>").arg(m_strName);303 if (!m_strSnapshotName.isNull())304 m_strToolTipText += QString(" (%1)").arg(m_strSnapshotName);305 m_strToolTipText = tr("<nobr>%1<br></nobr>"306 "<nobr>%2 since %3</nobr><br>"307 "<nobr>Session %4</nobr>",308 "VM tooltip (name, last state change, session state)")309 .arg(m_strToolTipText)310 .arg(gpConverter->toString(m_enmMachineState))311 .arg(strDateTime)312 .arg(gpConverter->toString(m_enmSessionState).toLower());313 }314 /* Otherwise: */315 else316 {317 /* Update tool-tip: */318 m_strToolTipText = tr("<nobr><b>%1</b><br></nobr>"319 "<nobr>Inaccessible since %2</nobr>",320 "Inaccessible VM tooltip (name, last state change)")321 .arg(m_strSettingsFile)322 .arg(strDateTime);323 324 /* We have our own translation for Null states: */325 m_strMachineStateName = tr("Inaccessible");326 m_strSessionStateName = tr("Inaccessible");327 }328 51 } 329 52 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.h
r82942 r82944 23 23 24 24 /* Qt includes: */ 25 #include <QDateTime>26 25 #include <QIcon> 27 26 #include <QMimeData> … … 34 33 /* COM includes: */ 35 34 #include "COMEnums.h" 36 #include "CMachine.h"37 35 #include "CVirtualBoxErrorInfo.h" 36 37 /* Forward declarations: */ 38 class UIVirtualMachineItemLocal; 38 39 39 40 /* Using declarations: */ … … 47 48 public: 48 49 49 /** Constructs local VM item on the basis of taken @a comMachine. */ 50 UIVirtualMachineItem(const CMachine &comMachine); 51 /** Destructs local VM item. */ 50 /** Item types. */ 51 enum ItemType { ItemType_Local }; 52 53 /** Constructs VM item on the basis of taken @a enmType. */ 54 UIVirtualMachineItem(ItemType enmType); 55 /** Destructs VM item. */ 52 56 virtual ~UIVirtualMachineItem(); 53 57 54 /** @name Arguments. 55 * @{ */ 56 /** Returns cached virtual machine object. */ 57 CMachine machine() const { return m_comMachine; } 58 /** @name RTTI stuff. 59 * @{ */ 60 /** Returns item type. */ 61 ItemType itemType() const { return m_enmType; } 62 /** Returns item casted to local type. */ 63 UIVirtualMachineItemLocal *toLocal(); 58 64 /** @} */ 59 65 … … 70 76 /** Returns cached machine id. */ 71 77 QString id() const { return m_strId; } 72 /** Returns cached machine settings file name. */73 QString settingsFile() const { return m_strSettingsFile; }74 78 /** Returns cached machine name. */ 75 79 QString name() const { return m_strName; } … … 79 83 * @param pLogicalSize Argument to assign actual pixmap size to. */ 80 84 QPixmap osPixmap(QSize *pLogicalSize = 0) const; 81 /** Returns cached machine group list. */82 const QStringList &groups() { return m_groups; }83 /** @} */84 85 /** @name Snapshot attributes.86 * @{ */87 /** Returns cached snapshot name. */88 QString snapshotName() const { return m_strSnapshotName; }89 /** Returns cached snapshot children count. */90 ULONG snapshotCount() const { return m_cSnaphot; }91 85 /** @} */ 92 86 … … 100 94 QIcon machineStateIcon() const { return m_machineStateIcon; } 101 95 102 /** Returns cached session state. */103 KSessionState sessionState() const { return m_enmSessionState; }104 /** Returns cached session state name. */105 QString sessionStateName() const { return m_strSessionStateName; }106 107 96 /** Returns cached configuration access level. */ 108 97 ConfigurationAccessLevel configurationAccessLevel() const { return m_enmConfigurationAccessLevel; } … … 115 104 /** @} */ 116 105 117 /** @name Console attributes.118 * @{ */119 /** Returns whether we can switch to main window of VM process. */120 bool canSwitchTo() const;121 /** Tries to switch to the main window of the VM process.122 * @return true if switched successfully. */123 bool switchTo();124 /** @} */125 126 106 /** @name Extra-data options. 127 107 * @{ */ … … 133 113 * @{ */ 134 114 /** Recaches machine data. */ 135 v oid recache();115 virtual void recache() = 0; 136 116 /** Recaches machine item pixmap. */ 137 v oid recachePixmap();117 virtual void recachePixmap() = 0; 138 118 /** @} */ 139 119 … … 141 121 * @{ */ 142 122 /** Returns whether passed machine @a pItem is editable. */ 143 bool isItemEditable() const;123 virtual bool isItemEditable() const = 0; 144 124 /** Returns whether passed machine @a pItem is saved. */ 145 bool isItemSaved() const;125 virtual bool isItemSaved() const = 0; 146 126 /** Returns whether passed machine @a pItem is powered off. */ 147 bool isItemPoweredOff() const;127 virtual bool isItemPoweredOff() const = 0; 148 128 /** Returns whether passed machine @a pItem is started. */ 149 bool isItemStarted() const;129 virtual bool isItemStarted() const = 0; 150 130 /** Returns whether passed machine @a pItem is running. */ 151 bool isItemRunning() const;131 virtual bool isItemRunning() const = 0; 152 132 /** Returns whether passed machine @a pItem is running headless. */ 153 bool isItemRunningHeadless() const;133 virtual bool isItemRunningHeadless() const = 0; 154 134 /** Returns whether passed machine @a pItem is paused. */ 155 bool isItemPaused() const;135 virtual bool isItemPaused() const = 0; 156 136 /** Returns whether passed machine @a pItem is stuck. */ 157 bool isItemStuck() const;137 virtual bool isItemStuck() const = 0; 158 138 /** @} */ 159 139 160 140 protected: 161 141 162 /** @name Event handling. 163 * @{ */ 164 /** Handles translation event. */ 165 virtual void retranslateUi() /* override */; 166 /** @} */ 167 168 private: 169 170 /** @name Arguments. 171 * @{ */ 172 /** Holds cached machine object reference. */ 173 CMachine m_comMachine; 142 /** @name RTTI stuff. 143 * @{ */ 144 /** Holds item type. */ 145 ItemType m_enmType; 174 146 /** @} */ 175 147 … … 186 158 /** Holds cached machine id. */ 187 159 QString m_strId; 188 /** Holds cached machine settings file name. */189 QString m_strSettingsFile;190 160 /** Holds cached machine name. */ 191 161 QString m_strName; … … 196 166 /** Holds cached machine OS type pixmap size. */ 197 167 QSize m_logicalPixmapSize; 198 /** Holds cached machine group list. */199 QStringList m_groups;200 /** @} */201 202 /** @name Snapshot attributes.203 * @{ */204 /** Holds cached snapshot name. */205 QString m_strSnapshotName;206 /** Holds cached last state change date/time. */207 QDateTime m_lastStateChange;208 /** Holds cached snapshot children count. */209 ULONG m_cSnaphot;210 168 /** @} */ 211 169 … … 219 177 QIcon m_machineStateIcon; 220 178 221 /** Holds cached session state. */222 KSessionState m_enmSessionState;223 /** Holds cached session state name. */224 QString m_strSessionStateName;225 226 179 /** Holds configuration access level. */ 227 180 ConfigurationAccessLevel m_enmConfigurationAccessLevel; … … 232 185 /** Holds cached machine tool-tip. */ 233 186 QString m_strToolTipText; 234 /** @} */235 236 /** @name Console attributes.237 * @{ */238 /** Holds machine PID. */239 ULONG m_pid;240 187 /** @} */ 241 188 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItemLocal.cpp
r82942 r82944 21 21 22 22 /* GUI includes: */ 23 #include "UIVirtualMachineItem .h"23 #include "UIVirtualMachineItemLocal.h" 24 24 #include "UICommon.h" 25 25 #include "UIConverter.h" … … 34 34 35 35 /********************************************************************************************************************************* 36 * Class UIVirtualMachineItem implementation.*36 * Class UIVirtualMachineItemLocal implementation. * 37 37 *********************************************************************************************************************************/ 38 38 39 UIVirtualMachineItem ::UIVirtualMachineItem(const CMachine &comMachine)40 : m_comMachine(comMachine)41 , m_ fAccessible(false)39 UIVirtualMachineItemLocal::UIVirtualMachineItemLocal(const CMachine &comMachine) 40 : UIVirtualMachineItem(ItemType_Local) 41 , m_comMachine(comMachine) 42 42 , m_cSnaphot(0) 43 , m_enmMachineState(KMachineState_Null)44 43 , m_enmSessionState(KSessionState_Null) 45 , m_enmConfigurationAccessLevel(ConfigurationAccessLevel_Null)46 , m_fHasDetails(false)47 44 { 48 45 recache(); 49 46 } 50 47 51 UIVirtualMachineItem::~UIVirtualMachineItem() 52 { 53 } 54 55 QPixmap UIVirtualMachineItem::osPixmap(QSize *pLogicalSize /* = 0 */) const 56 { 57 if (pLogicalSize) 58 *pLogicalSize = m_logicalPixmapSize; 59 return m_pixmap; 60 } 61 62 void UIVirtualMachineItem::recache() 48 UIVirtualMachineItemLocal::~UIVirtualMachineItemLocal() 49 { 50 } 51 52 void UIVirtualMachineItemLocal::recache() 63 53 { 64 54 /* Determine attributes which are always available: */ … … 156 146 } 157 147 158 void UIVirtualMachineItem ::recachePixmap()148 void UIVirtualMachineItemLocal::recachePixmap() 159 149 { 160 150 /* If machine is accessible: */ … … 175 165 } 176 166 177 bool UIVirtualMachineItem ::canSwitchTo() const167 bool UIVirtualMachineItemLocal::canSwitchTo() const 178 168 { 179 169 return const_cast <CMachine&>(m_comMachine).CanShowConsoleWindow(); 180 170 } 181 171 182 bool UIVirtualMachineItem ::switchTo()172 bool UIVirtualMachineItemLocal::switchTo() 183 173 { 184 174 #ifdef VBOX_WS_MAC … … 222 212 } 223 213 224 bool UIVirtualMachineItem ::isItemEditable() const214 bool UIVirtualMachineItemLocal::isItemEditable() const 225 215 { 226 216 return accessible() … … 228 218 } 229 219 230 bool UIVirtualMachineItem ::isItemSaved() const220 bool UIVirtualMachineItemLocal::isItemSaved() const 231 221 { 232 222 return accessible() … … 234 224 } 235 225 236 bool UIVirtualMachineItem ::isItemPoweredOff() const226 bool UIVirtualMachineItemLocal::isItemPoweredOff() const 237 227 { 238 228 return accessible() … … 243 233 } 244 234 245 bool UIVirtualMachineItem ::isItemStarted() const235 bool UIVirtualMachineItemLocal::isItemStarted() const 246 236 { 247 237 return isItemRunning() … … 249 239 } 250 240 251 bool UIVirtualMachineItem ::isItemRunning() const241 bool UIVirtualMachineItemLocal::isItemRunning() const 252 242 { 253 243 return accessible() … … 257 247 } 258 248 259 bool UIVirtualMachineItem ::isItemRunningHeadless() const249 bool UIVirtualMachineItemLocal::isItemRunningHeadless() const 260 250 { 261 251 if (isItemRunning()) … … 276 266 } 277 267 278 bool UIVirtualMachineItem ::isItemPaused() const268 bool UIVirtualMachineItemLocal::isItemPaused() const 279 269 { 280 270 return accessible() … … 283 273 } 284 274 285 bool UIVirtualMachineItem ::isItemStuck() const275 bool UIVirtualMachineItemLocal::isItemStuck() const 286 276 { 287 277 return accessible() … … 289 279 } 290 280 291 void UIVirtualMachineItem ::retranslateUi()281 void UIVirtualMachineItemLocal::retranslateUi() 292 282 { 293 283 /* This is used in tool-tip generation: */ … … 327 317 } 328 318 } 329 330 331 /*********************************************************************************************************************************332 * Class UIVirtualMachineItemMimeData implementation. *333 *********************************************************************************************************************************/334 335 QString UIVirtualMachineItemMimeData::m_type = "application/org.virtualbox.gui.vmselector.UIVirtualMachineItem";336 337 UIVirtualMachineItemMimeData::UIVirtualMachineItemMimeData(UIVirtualMachineItem *pItem)338 : m_pItem(pItem)339 {340 }341 342 QStringList UIVirtualMachineItemMimeData::formats() const343 {344 QStringList types;345 types << type();346 return types;347 } -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItemLocal.h
r82942 r82944 1 1 /* $Id$ */ 2 2 /** @file 3 * VBox Qt GUI - UIVirtualMachineItem class declarations.3 * VBox Qt GUI - UIVirtualMachineItemLocal class declarations. 4 4 */ 5 5 … … 16 16 */ 17 17 18 #ifndef FEQT_INCLUDED_SRC_manager_UIVirtualMachineItem _h19 #define FEQT_INCLUDED_SRC_manager_UIVirtualMachineItem _h18 #ifndef FEQT_INCLUDED_SRC_manager_UIVirtualMachineItemLocal_h 19 #define FEQT_INCLUDED_SRC_manager_UIVirtualMachineItemLocal_h 20 20 #ifndef RT_WITHOUT_PRAGMA_ONCE 21 21 # pragma once … … 24 24 /* Qt includes: */ 25 25 #include <QDateTime> 26 #include <QIcon>27 #include <QMimeData>28 #include <QPixmap>29 26 30 27 /* GUI includes: */ 31 #include "QIWithRetranslateUI.h" 32 #include "UISettingsDefs.h" 28 #include "UIVirtualMachineItem.h" 33 29 34 30 /* COM includes: */ 35 #include "COMEnums.h"36 31 #include "CMachine.h" 37 #include "CVirtualBoxErrorInfo.h"38 32 39 /* Using declarations: */ 40 using namespace UISettingsDefs; 41 42 /** Virtual Machine item interface. A wrapper caching VM data. */ 43 class UIVirtualMachineItem : public QIWithRetranslateUI3<QObject> 33 /** UIVirtualMachineItem sub-class used as local Virtual Machine item interface. */ 34 class UIVirtualMachineItemLocal : public UIVirtualMachineItem 44 35 { 45 36 Q_OBJECT; … … 48 39 49 40 /** Constructs local VM item on the basis of taken @a comMachine. */ 50 UIVirtualMachineItem (const CMachine &comMachine);41 UIVirtualMachineItemLocal(const CMachine &comMachine); 51 42 /** Destructs local VM item. */ 52 virtual ~UIVirtualMachineItem ();43 virtual ~UIVirtualMachineItemLocal(); 53 44 54 45 /** @name Arguments. … … 58 49 /** @} */ 59 50 60 /** @name VM access attributes.61 * @{ */62 /** Returns whether VM was accessible. */63 bool accessible() const { return m_fAccessible; }64 /** Returns the last cached access error. */65 const CVirtualBoxErrorInfo &accessError() const { return m_comAccessError; }66 /** @} */67 68 51 /** @name Basic attributes. 69 52 * @{ */ 70 /** Returns cached machine id. */71 QString id() const { return m_strId; }72 53 /** Returns cached machine settings file name. */ 73 54 QString settingsFile() const { return m_strSettingsFile; } 74 /** Returns cached machine name. */75 QString name() const { return m_strName; }76 /** Returns cached machine OS type id. */77 QString osTypeId() const { return m_strOSTypeId; }78 /** Returns cached machine OS type pixmap.79 * @param pLogicalSize Argument to assign actual pixmap size to. */80 QPixmap osPixmap(QSize *pLogicalSize = 0) const;81 55 /** Returns cached machine group list. */ 82 56 const QStringList &groups() { return m_groups; } … … 93 67 /** @name State attributes. 94 68 * @{ */ 95 /** Returns cached machine state. */96 KMachineState machineState() const { return m_enmMachineState; }97 /** Returns cached machine state name. */98 QString machineStateName() const { return m_strMachineStateName; }99 /** Returns cached machine state icon. */100 QIcon machineStateIcon() const { return m_machineStateIcon; }101 102 69 /** Returns cached session state. */ 103 70 KSessionState sessionState() const { return m_enmSessionState; } 104 71 /** Returns cached session state name. */ 105 72 QString sessionStateName() const { return m_strSessionStateName; } 106 107 /** Returns cached configuration access level. */108 ConfigurationAccessLevel configurationAccessLevel() const { return m_enmConfigurationAccessLevel; }109 /** @} */110 111 /** @name Visual attributes.112 * @{ */113 /** Returns cached machine tool-tip. */114 QString toolTipText() const { return m_strToolTipText; }115 73 /** @} */ 116 74 … … 124 82 /** @} */ 125 83 126 /** @name Extra-data options.127 * @{ */128 /** Returns whether we should show machine details. */129 bool hasDetails() const { return m_fHasDetails; }130 /** @} */131 132 84 /** @name Update stuff. 133 85 * @{ */ 134 86 /** Recaches machine data. */ 135 v oid recache();87 virtual void recache() /* override */; 136 88 /** Recaches machine item pixmap. */ 137 v oid recachePixmap();89 virtual void recachePixmap() /* override */; 138 90 /** @} */ 139 91 … … 141 93 * @{ */ 142 94 /** Returns whether passed machine @a pItem is editable. */ 143 bool isItemEditable() const;95 virtual bool isItemEditable() const /* override */; 144 96 /** Returns whether passed machine @a pItem is saved. */ 145 bool isItemSaved() const;97 virtual bool isItemSaved() const /* override */; 146 98 /** Returns whether passed machine @a pItem is powered off. */ 147 bool isItemPoweredOff() const;99 virtual bool isItemPoweredOff() const /* override */; 148 100 /** Returns whether passed machine @a pItem is started. */ 149 bool isItemStarted() const;101 virtual bool isItemStarted() const /* override */; 150 102 /** Returns whether passed machine @a pItem is running. */ 151 bool isItemRunning() const;103 virtual bool isItemRunning() const /* override */; 152 104 /** Returns whether passed machine @a pItem is running headless. */ 153 bool isItemRunningHeadless() const;105 virtual bool isItemRunningHeadless() const /* override */; 154 106 /** Returns whether passed machine @a pItem is paused. */ 155 bool isItemPaused() const;107 virtual bool isItemPaused() const /* override */; 156 108 /** Returns whether passed machine @a pItem is stuck. */ 157 bool isItemStuck() const;109 virtual bool isItemStuck() const /* override */; 158 110 /** @} */ 159 111 … … 174 126 /** @} */ 175 127 176 /** @name VM access attributes.177 * @{ */178 /** Holds whether VM was accessible. */179 bool m_fAccessible;180 /** Holds the last cached access error. */181 CVirtualBoxErrorInfo m_comAccessError;182 /** @} */183 184 128 /** @name Basic attributes. 185 129 * @{ */ 186 /** Holds cached machine id. */187 QString m_strId;188 130 /** Holds cached machine settings file name. */ 189 131 QString m_strSettingsFile; 190 /** Holds cached machine name. */191 QString m_strName;192 /** Holds cached machine OS type id. */193 QString m_strOSTypeId;194 /** Holds cached machine OS type pixmap. */195 QPixmap m_pixmap;196 /** Holds cached machine OS type pixmap size. */197 QSize m_logicalPixmapSize;198 132 /** Holds cached machine group list. */ 199 133 QStringList m_groups; … … 212 146 /** @name State attributes. 213 147 * @{ */ 214 /** Holds cached machine state. */215 KMachineState m_enmMachineState;216 /** Holds cached machine state name. */217 QString m_strMachineStateName;218 /** Holds cached machine state name. */219 QIcon m_machineStateIcon;220 221 148 /** Holds cached session state. */ 222 KSessionState 149 KSessionState m_enmSessionState; 223 150 /** Holds cached session state name. */ 224 QString m_strSessionStateName; 225 226 /** Holds configuration access level. */ 227 ConfigurationAccessLevel m_enmConfigurationAccessLevel; 228 /** @} */ 229 230 /** @name Visual attributes. 231 * @{ */ 232 /** Holds cached machine tool-tip. */ 233 QString m_strToolTipText; 151 QString m_strSessionStateName; 234 152 /** @} */ 235 153 … … 239 157 ULONG m_pid; 240 158 /** @} */ 241 242 /** @name Extra-data options.243 * @{ */244 /** Holds whether we should show machine details. */245 bool m_fHasDetails;246 /** @} */247 159 }; 248 160 249 /* Make the pointer of this class public to the QVariant framework */ 250 Q_DECLARE_METATYPE(UIVirtualMachineItem *); 251 252 /** QMimeData subclass for handling UIVirtualMachineItem mime data. */ 253 class UIVirtualMachineItemMimeData : public QMimeData 254 { 255 Q_OBJECT; 256 257 public: 258 259 /** Constructs mime data for passed VM @a pItem. */ 260 UIVirtualMachineItemMimeData(UIVirtualMachineItem *pItem); 261 262 /** Returns cached VM item. */ 263 UIVirtualMachineItem *item() const { return m_pItem; } 264 265 /** Returns supported format list. */ 266 virtual QStringList formats() const /* override */; 267 268 /** Returns UIVirtualMachineItem mime data type. */ 269 static QString type() { return m_type; } 270 271 private: 272 273 /** Holds cached VM item. */ 274 UIVirtualMachineItem *m_pItem; 275 276 /** Holds UIVirtualMachineItem mime data type. */ 277 static QString m_type; 278 }; 279 280 #endif /* !FEQT_INCLUDED_SRC_manager_UIVirtualMachineItem_h */ 161 #endif /* !FEQT_INCLUDED_SRC_manager_UIVirtualMachineItemLocal_h */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp
r82917 r82944 27 27 #include "UIMessageCenter.h" 28 28 #include "UIVirtualBoxEventHandler.h" 29 #include "UIVirtualMachineItem.h" 30 31 /* COM includes: */ 32 #include "CMachine.h" 29 33 30 34 /* Type defs: */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp
r82942 r82944 38 38 #include "UIIconPool.h" 39 39 #include "UIVirtualBoxManager.h" 40 #include "UIVirtualMachineItem.h" 40 41 41 42 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp
r82917 r82944 31 31 #include "UIIconPool.h" 32 32 #include "UIVirtualBoxManager.h" 33 #include "UIVirtualMachineItemLocal.h" 33 34 34 35 /* Other VBox includes: */ … … 289 290 /* And machine-item content to take into account: */ 290 291 int iTopLineWidth = m_iMinimumNameWidth; 291 if (!node()->toMachineNode()->cache()-> snapshotName().isEmpty())292 if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty()) 292 293 iTopLineWidth += (iMinorSpacing + 293 294 m_iMinimumSnapshotNameWidth); … … 700 701 int iMinimumSnapshotNameWidth = 0; 701 702 /* Is there any snapshot exists? */ 702 if (!node()->toMachineNode()->cache()-> snapshotName().isEmpty())703 if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty()) 703 704 { 704 705 QFontMetrics fm(m_snapshotNameFont, model()->paintDevice()); 705 706 int iBracketWidth = fm.width("()"); /* bracket width */ 706 int iActualTextWidth = fm.width(node()->toMachineNode()->cache()-> snapshotName()); /* snapshot-name width */707 int iActualTextWidth = fm.width(node()->toMachineNode()->cache()->toLocal()->snapshotName()); /* snapshot-name width */ 707 708 int iMinimumTextWidth = fm.width("..."); /* ellipsis width */ 708 709 iMinimumSnapshotNameWidth = iBracketWidth + qMin(iActualTextWidth, iMinimumTextWidth); … … 789 790 /* Calculate new visible snapshot-name: */ 790 791 int iBracketWidth = QFontMetrics(m_snapshotNameFont, pPaintDevice).width("()"); 791 QString strVisibleSnapshotName = compressText(m_snapshotNameFont, pPaintDevice, node()->toMachineNode()->cache()-> snapshotName(),792 QString strVisibleSnapshotName = compressText(m_snapshotNameFont, pPaintDevice, node()->toMachineNode()->cache()->toLocal()->snapshotName(), 792 793 m_iMaximumSnapshotNameWidth - iBracketWidth); 793 794 strVisibleSnapshotName = QString("(%1)").arg(strVisibleSnapshotName); … … 1087 1088 1088 1089 /* Paint middle element: */ 1089 if (!node()->toMachineNode()->cache()-> snapshotName().isEmpty())1090 if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty()) 1090 1091 { 1091 1092 /* Prepare variables: */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGroup.cpp
r80493 r82944 20 20 #include "UIChooserNodeGlobal.h" 21 21 #include "UIChooserNodeMachine.h" 22 23 /* Other VBox includes: */ 24 #include "iprt/assert.h" 22 25 23 26 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.cpp
r82933 r82944 18 18 /* GUI includes: */ 19 19 #include "UIChooserNodeMachine.h" 20 #include "UIVirtualMachineItemLocal.h" 20 21 21 22 … … 25 26 const CMachine &comMachine) 26 27 : UIChooserNode(pParent, fFavorite) 27 , m_pCache(new UIVirtualMachineItem (comMachine))28 , m_pCache(new UIVirtualMachineItemLocal(comMachine)) 28 29 { 29 30 if (parentNode()) … … 36 37 int iPosition) 37 38 : UIChooserNode(pParent, pCopyFrom->isFavorite()) 38 , m_pCache(new UIVirtualMachineItem (pCopyFrom->cache()->machine()))39 , m_pCache(new UIVirtualMachineItemLocal(pCopyFrom->cache()->toLocal()->machine())) 39 40 { 40 41 if (parentNode()) -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.h
r82917 r82944 24 24 /* GUI includes: */ 25 25 #include "UIChooserNode.h" 26 #include "UIVirtualMachineItem.h" 26 27 /* Forward declarations: */ 28 class UIVirtualMachineItem; 29 class CMachine; 27 30 28 31 -
trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp
r80784 r82944 22 22 23 23 /* GUI includes: */ 24 #include "UICommon.h" 24 25 #include "UIDetailsElements.h" 25 26 #include "UIDetailsModel.h" 26 27 #include "UIDetailsSet.h" 27 28 #include "UIVirtualBoxEventHandler.h" 28 #include "UIVirtualMachineItem.h" 29 #include "UICommon.h" 29 #include "UIVirtualMachineItemLocal.h" 30 30 31 31 /* COM includes: */ … … 66 66 /* Remember passed arguments: */ 67 67 m_pMachineItem = pMachineItem; 68 m_machine = m_pMachineItem-> machine();68 m_machine = m_pMachineItem->toLocal()->machine(); 69 69 m_fHasDetails = m_pMachineItem->hasDetails(); 70 70 m_fFullSet = fFullSet;
Note:
See TracChangeset
for help on using the changeset viewer.