VirtualBox

Ignore:
Timestamp:
Jan 31, 2020 3:00:08 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9653: VirtualBox Manager: Split UIVirtualMachineItem to base interface and local VM sub-class to make it possible to sub-class cloud VM item same way.

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
12 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r82857 r82944  
    612612        src/manager/UIVirtualBoxManagerWidget.h \
    613613        src/manager/UIVirtualMachineItem.h \
     614        src/manager/UIVirtualMachineItemLocal.h \
    614615        src/manager/UIWelcomePane.h \
    615616        src/manager/chooser/UIChooser.h \
     
    10541055        src/manager/UIVirtualBoxManagerWidget.cpp \
    10551056        src/manager/UIVirtualMachineItem.cpp \
     1057        src/manager/UIVirtualMachineItemLocal.cpp \
    10561058        src/manager/UIWelcomePane.cpp \
    10571059        src/manager/chooser/UIChooser.cpp \
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp

    r82942 r82944  
    3737#include "UISettingsDialogSpecific.h"
    3838#include "UIVMLogViewerDialog.h"
    39 #include "UIVirtualMachineItem.h"
     39#include "UIVirtualMachineItemLocal.h"
    4040#ifdef VBOX_GUI_WITH_NETWORK_MANAGER
    4141# include "UIUpdateManager.h"
     
    686686    UIVirtualMachineItem *pItem = currentItem();
    687687    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"));
    688691
    689692    /* Use the "safe way" to open stack of Mac OS X Sheets: */
    690693    QWidget *pWizardParent = windowManager().realParentWindow(this);
    691     const QStringList &machineGroupNames = pItem->groups();
     694    const QStringList &machineGroupNames = pItemLocal->groups();
    692695    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);
    694697    windowManager().registerNewParent(pWizard, pWizardParent);
    695698    pWizard->prepare();
     
    10861089    foreach (UIVirtualMachineItem *pItem, items)
    10871090    {
     1091        /* Make sure current item is local one: */
     1092        UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal();
     1093        if (!pItemLocal)
     1094            continue;
     1095
    10881096        /* Check if log could be show for the current item: */
    10891097        if (!isActionEnabled(UIActionIndexST_M_Group_S_ShowLogDialog, QList<UIVirtualMachineItem*>() << pItem))
     
    10921100        QIManagerDialog *pLogViewerDialog = 0;
    10931101        /* 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());
    10971105            dialogFactory.prepare(pLogViewerDialog, this);
    10981106            if (pLogViewerDialog)
    10991107            {
    1100                 m_logViewers[pItem->machine().GetHardwareUUID().toString()] = pLogViewerDialog;
     1108                m_logViewers[pItemLocal->machine().GetHardwareUUID().toString()] = pLogViewerDialog;
    11011109                connect(pLogViewerDialog, &QIManagerDialog::sigClose,
    11021110                        this, &UIVirtualBoxManager::sltCloseLogViewerWindow);
     
    11051113        else
    11061114        {
    1107             pLogViewerDialog = m_logViewers[pItem->machine().GetHardwareUUID().toString()];
     1115            pLogViewerDialog = m_logViewers[pItemLocal->machine().GetHardwareUUID().toString()];
    11081116        }
    11091117        if (pLogViewerDialog)
     
    11661174    foreach (UIVirtualMachineItem *pItem, items)
    11671175    {
     1176        /* Make sure current item is local one: */
     1177        UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal();
     1178        if (!pItemLocal)
     1179            continue;
     1180
    11681181        /* Check if that item could be shown in file-browser: */
    11691182        if (!isActionEnabled(UIActionIndexST_M_Group_S_ShowInFileManager, QList<UIVirtualMachineItem*>() << pItem))
     
    11711184
    11721185        /* Show VM in filebrowser: */
    1173         UIDesktopServices::openInFileManager(pItem->machine().GetSettingsFilePath());
     1186        UIDesktopServices::openInFileManager(pItemLocal->machine().GetSettingsFilePath());
    11741187    }
    11751188}
     
    11841197    foreach (UIVirtualMachineItem *pItem, items)
    11851198    {
     1199        /* Make sure current item is local one: */
     1200        UIVirtualMachineItemLocal *pItemLocal = pItem->toLocal();
     1201        if (!pItemLocal)
     1202            continue;
     1203
    11861204        /* Check if shortcuts could be created for this item: */
    11871205        if (!isActionEnabled(UIActionIndexST_M_Group_S_CreateShortcut, QList<UIVirtualMachineItem*>() << pItem))
     
    11891207
    11901208        /* Create shortcut for this VM: */
    1191         const CMachine &comMachine = pItem->machine();
     1209        const CMachine &comMachine = pItemLocal->machine();
    11921210        UIDesktopServices::createMachineShortcut(comMachine.GetSettingsFilePath(),
    11931211                                                 QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
     
    16101628                && fStartConfirmed))
    16111629        {
    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            }
    16241646        }
    16251647    }
     
    20742096    foreach (UIVirtualMachineItem *pItem, items)
    20752097    {
    2076         if (pItem->isItemStarted() && (pItem->canSwitchTo() || pItem->isItemRunningHeadless()))
     2098        if (   pItem->toLocal()
     2099            && pItem->isItemStarted()
     2100            && (   pItem->toLocal()->canSwitchTo()
     2101                || pItem->isItemRunningHeadless()))
    20772102            return true;
    20782103    }
     
    20852110    foreach (UIVirtualMachineItem *pItem, items)
    20862111    {
    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()))))
    20892118            return true;
    20902119    }
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp

    r79461 r82944  
    3232#include "UITabBar.h"
    3333#include "UIToolBar.h"
    34 #include "UIVirtualMachineItem.h"
     34#include "UIVirtualMachineItemLocal.h"
    3535#include "UITools.h"
    3636#ifndef VBOX_WS_MAC
     
    720720        m_pPaneToolsMachine->setItems(currentItems());
    721721        /* 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());
    723724    }
    724725    else
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.cpp

    r82942 r82944  
    1616 */
    1717
    18 /* Qt includes: */
    19 #include <QFileInfo>
    20 #include <QIcon>
    21 
    2218/* 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"
    3320
    3421
     
    3724*********************************************************************************************************************************/
    3825
    39 UIVirtualMachineItem::UIVirtualMachineItem(const CMachine &comMachine)
    40     : m_comMachine(comMachine)
     26UIVirtualMachineItem::UIVirtualMachineItem(ItemType enmType)
     27    : m_enmType(enmType)
    4128    , m_fAccessible(false)
    42     , m_cSnaphot(0)
    4329    , m_enmMachineState(KMachineState_Null)
    44     , m_enmSessionState(KSessionState_Null)
    4530    , m_enmConfigurationAccessLevel(ConfigurationAccessLevel_Null)
    4631    , m_fHasDetails(false)
    4732{
    48     recache();
    4933}
    5034
    5135UIVirtualMachineItem::~UIVirtualMachineItem()
    5236{
     37}
     38
     39UIVirtualMachineItemLocal *UIVirtualMachineItem::toLocal()
     40{
     41    return   itemType() == ItemType_Local
     42           ? static_cast<UIVirtualMachineItemLocal*>(this)
     43           : 0;
    5344}
    5445
     
    5849        *pLogicalSize = m_logicalPixmapSize;
    5950    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_Null
    97             && !gEDataManager->machineReconfigurationEnabled(m_strId))
    98             m_enmConfigurationAccessLevel = ConfigurationAccessLevel_Null;
    99 
    100         /* Determine PID finally: */
    101         if (   m_enmMachineState == KMachineState_PoweredOff
    102             || m_enmMachineState == KMachineState_Saved
    103             || m_enmMachineState == KMachineState_Teleported
    104             || m_enmMachineState == KMachineState_Aborted
    105            )
    106         {
    107             m_pid = (ULONG) ~0;
    108         }
    109         else
    110         {
    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     else
    118     {
    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     else
    171     {
    172         /* We are using "Other" guest OS type icon: */
    173         m_pixmap = uiCommon().vmGuestOSTypePixmapDefault("Other", &m_logicalPixmapSize);
    174     }
    175 }
    176 
    177 bool UIVirtualMachineItem::canSwitchTo() const
    178 {
    179     return const_cast <CMachine&>(m_comMachine).CanShowConsoleWindow();
    180 }
    181 
    182 bool UIVirtualMachineItem::switchTo()
    183 {
    184 #ifdef VBOX_WS_MAC
    185     ULONG64 id = m_comMachine.ShowConsoleWindow();
    186 #else
    187     WId id = (WId) m_comMachine.ShowConsoleWindow();
    188 #endif
    189     AssertWrapperOk(m_comMachine);
    190     if (!m_comMachine.isOk())
    191         return false;
    192 
    193     /* winId = 0 it means the console window has already done everything
    194      * 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 steal
    206     // 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     else
    214         Log(("GUI: Failed to bring %#RX64 to front. rc=%#x\n", id, rc));
    215     return !rc;
    216 
    217 #else
    218 
    219     return false;
    220 
    221 #endif
    222 }
    223 
    224 bool UIVirtualMachineItem::isItemEditable() const
    225 {
    226     return    accessible()
    227            && sessionState() == KSessionState_Unlocked;
    228 }
    229 
    230 bool UIVirtualMachineItem::isItemSaved() const
    231 {
    232     return    accessible()
    233            && machineState() == KMachineState_Saved;
    234 }
    235 
    236 bool UIVirtualMachineItem::isItemPoweredOff() const
    237 {
    238     return    accessible()
    239            && (   machineState() == KMachineState_PoweredOff
    240                || machineState() == KMachineState_Saved
    241                || machineState() == KMachineState_Teleported
    242                || machineState() == KMachineState_Aborted);
    243 }
    244 
    245 bool UIVirtualMachineItem::isItemStarted() const
    246 {
    247     return    isItemRunning()
    248            || isItemPaused();
    249 }
    250 
    251 bool UIVirtualMachineItem::isItemRunning() const
    252 {
    253     return    accessible()
    254            && (   machineState() == KMachineState_Running
    255                || machineState() == KMachineState_Teleporting
    256                || machineState() == KMachineState_LiveSnapshotting);
    257 }
    258 
    259 bool UIVirtualMachineItem::isItemRunningHeadless() const
    260 {
    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() const
    279 {
    280     return    accessible()
    281            && (   machineState() == KMachineState_Paused
    282                || machineState() == KMachineState_TeleportingPausedVM);
    283 }
    284 
    285 bool UIVirtualMachineItem::isItemStuck() const
    286 {
    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     else
    316     {
    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     }
    32851}
    32952
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItem.h

    r82942 r82944  
    2323
    2424/* Qt includes: */
    25 #include <QDateTime>
    2625#include <QIcon>
    2726#include <QMimeData>
     
    3433/* COM includes: */
    3534#include "COMEnums.h"
    36 #include "CMachine.h"
    3735#include "CVirtualBoxErrorInfo.h"
     36
     37/* Forward declarations: */
     38class UIVirtualMachineItemLocal;
    3839
    3940/* Using declarations: */
     
    4748public:
    4849
    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. */
    5256    virtual ~UIVirtualMachineItem();
    5357
    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();
    5864    /** @} */
    5965
     
    7076        /** Returns cached machine id. */
    7177        QString id() const { return m_strId; }
    72         /** Returns cached machine settings file name. */
    73         QString settingsFile() const { return m_strSettingsFile; }
    7478        /** Returns cached machine name. */
    7579        QString name() const { return m_strName; }
     
    7983          * @param  pLogicalSize  Argument to assign actual pixmap size to. */
    8084        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; }
    9185    /** @} */
    9286
     
    10094        QIcon machineStateIcon() const { return m_machineStateIcon; }
    10195
    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 
    10796        /** Returns cached configuration access level. */
    10897        ConfigurationAccessLevel configurationAccessLevel() const { return m_enmConfigurationAccessLevel; }
     
    115104    /** @} */
    116105
    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 
    126106    /** @name Extra-data options.
    127107      * @{ */
     
    133113      * @{ */
    134114        /** Recaches machine data. */
    135         void recache();
     115        virtual void recache() = 0;
    136116        /** Recaches machine item pixmap. */
    137         void recachePixmap();
     117        virtual void recachePixmap() = 0;
    138118    /** @} */
    139119
     
    141121      * @{ */
    142122        /** Returns whether passed machine @a pItem is editable. */
    143         bool isItemEditable() const;
     123        virtual bool isItemEditable() const = 0;
    144124        /** Returns whether passed machine @a pItem is saved. */
    145         bool isItemSaved() const;
     125        virtual bool isItemSaved() const = 0;
    146126        /** Returns whether passed machine @a pItem is powered off. */
    147         bool isItemPoweredOff() const;
     127        virtual bool isItemPoweredOff() const = 0;
    148128        /** Returns whether passed machine @a pItem is started. */
    149         bool isItemStarted() const;
     129        virtual bool isItemStarted() const = 0;
    150130        /** Returns whether passed machine @a pItem is running. */
    151         bool isItemRunning() const;
     131        virtual bool isItemRunning() const = 0;
    152132        /** Returns whether passed machine @a pItem is running headless. */
    153         bool isItemRunningHeadless() const;
     133        virtual bool isItemRunningHeadless() const = 0;
    154134        /** Returns whether passed machine @a pItem is paused. */
    155         bool isItemPaused() const;
     135        virtual bool isItemPaused() const = 0;
    156136        /** Returns whether passed machine @a pItem is stuck. */
    157         bool isItemStuck() const;
     137        virtual bool isItemStuck() const = 0;
    158138    /** @} */
    159139
    160140protected:
    161141
    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;
    174146    /** @} */
    175147
     
    186158        /** Holds cached machine id. */
    187159        QString      m_strId;
    188         /** Holds cached machine settings file name. */
    189         QString      m_strSettingsFile;
    190160        /** Holds cached machine name. */
    191161        QString      m_strName;
     
    196166        /** Holds cached machine OS type pixmap size. */
    197167        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;
    210168    /** @} */
    211169
     
    219177        QIcon                     m_machineStateIcon;
    220178
    221         /** Holds cached session state. */
    222         KSessionState             m_enmSessionState;
    223         /** Holds cached session state name. */
    224         QString                   m_strSessionStateName;
    225 
    226179        /** Holds configuration access level. */
    227180        ConfigurationAccessLevel  m_enmConfigurationAccessLevel;
     
    232185        /** Holds cached machine tool-tip. */
    233186        QString  m_strToolTipText;
    234     /** @} */
    235 
    236     /** @name Console attributes.
    237       * @{ */
    238         /** Holds machine PID. */
    239         ULONG  m_pid;
    240187    /** @} */
    241188
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItemLocal.cpp

    r82942 r82944  
    2121
    2222/* GUI includes: */
    23 #include "UIVirtualMachineItem.h"
     23#include "UIVirtualMachineItemLocal.h"
    2424#include "UICommon.h"
    2525#include "UIConverter.h"
     
    3434
    3535/*********************************************************************************************************************************
    36 *   Class UIVirtualMachineItem implementation.                                                                                   *
     36*   Class UIVirtualMachineItemLocal implementation.                                                                              *
    3737*********************************************************************************************************************************/
    3838
    39 UIVirtualMachineItem::UIVirtualMachineItem(const CMachine &comMachine)
    40     : m_comMachine(comMachine)
    41     , m_fAccessible(false)
     39UIVirtualMachineItemLocal::UIVirtualMachineItemLocal(const CMachine &comMachine)
     40    : UIVirtualMachineItem(ItemType_Local)
     41    , m_comMachine(comMachine)
    4242    , m_cSnaphot(0)
    43     , m_enmMachineState(KMachineState_Null)
    4443    , m_enmSessionState(KSessionState_Null)
    45     , m_enmConfigurationAccessLevel(ConfigurationAccessLevel_Null)
    46     , m_fHasDetails(false)
    4744{
    4845    recache();
    4946}
    5047
    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()
     48UIVirtualMachineItemLocal::~UIVirtualMachineItemLocal()
     49{
     50}
     51
     52void UIVirtualMachineItemLocal::recache()
    6353{
    6454    /* Determine attributes which are always available: */
     
    156146}
    157147
    158 void UIVirtualMachineItem::recachePixmap()
     148void UIVirtualMachineItemLocal::recachePixmap()
    159149{
    160150    /* If machine is accessible: */
     
    175165}
    176166
    177 bool UIVirtualMachineItem::canSwitchTo() const
     167bool UIVirtualMachineItemLocal::canSwitchTo() const
    178168{
    179169    return const_cast <CMachine&>(m_comMachine).CanShowConsoleWindow();
    180170}
    181171
    182 bool UIVirtualMachineItem::switchTo()
     172bool UIVirtualMachineItemLocal::switchTo()
    183173{
    184174#ifdef VBOX_WS_MAC
     
    222212}
    223213
    224 bool UIVirtualMachineItem::isItemEditable() const
     214bool UIVirtualMachineItemLocal::isItemEditable() const
    225215{
    226216    return    accessible()
     
    228218}
    229219
    230 bool UIVirtualMachineItem::isItemSaved() const
     220bool UIVirtualMachineItemLocal::isItemSaved() const
    231221{
    232222    return    accessible()
     
    234224}
    235225
    236 bool UIVirtualMachineItem::isItemPoweredOff() const
     226bool UIVirtualMachineItemLocal::isItemPoweredOff() const
    237227{
    238228    return    accessible()
     
    243233}
    244234
    245 bool UIVirtualMachineItem::isItemStarted() const
     235bool UIVirtualMachineItemLocal::isItemStarted() const
    246236{
    247237    return    isItemRunning()
     
    249239}
    250240
    251 bool UIVirtualMachineItem::isItemRunning() const
     241bool UIVirtualMachineItemLocal::isItemRunning() const
    252242{
    253243    return    accessible()
     
    257247}
    258248
    259 bool UIVirtualMachineItem::isItemRunningHeadless() const
     249bool UIVirtualMachineItemLocal::isItemRunningHeadless() const
    260250{
    261251    if (isItemRunning())
     
    276266}
    277267
    278 bool UIVirtualMachineItem::isItemPaused() const
     268bool UIVirtualMachineItemLocal::isItemPaused() const
    279269{
    280270    return    accessible()
     
    283273}
    284274
    285 bool UIVirtualMachineItem::isItemStuck() const
     275bool UIVirtualMachineItemLocal::isItemStuck() const
    286276{
    287277    return    accessible()
     
    289279}
    290280
    291 void UIVirtualMachineItem::retranslateUi()
     281void UIVirtualMachineItemLocal::retranslateUi()
    292282{
    293283    /* This is used in tool-tip generation: */
     
    327317    }
    328318}
    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() const
    343 {
    344     QStringList types;
    345     types << type();
    346     return types;
    347 }
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualMachineItemLocal.h

    r82942 r82944  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIVirtualMachineItem class declarations.
     3 * VBox Qt GUI - UIVirtualMachineItemLocal class declarations.
    44 */
    55
     
    1616 */
    1717
    18 #ifndef FEQT_INCLUDED_SRC_manager_UIVirtualMachineItem_h
    19 #define FEQT_INCLUDED_SRC_manager_UIVirtualMachineItem_h
     18#ifndef FEQT_INCLUDED_SRC_manager_UIVirtualMachineItemLocal_h
     19#define FEQT_INCLUDED_SRC_manager_UIVirtualMachineItemLocal_h
    2020#ifndef RT_WITHOUT_PRAGMA_ONCE
    2121# pragma once
     
    2424/* Qt includes: */
    2525#include <QDateTime>
    26 #include <QIcon>
    27 #include <QMimeData>
    28 #include <QPixmap>
    2926
    3027/* GUI includes: */
    31 #include "QIWithRetranslateUI.h"
    32 #include "UISettingsDefs.h"
     28#include "UIVirtualMachineItem.h"
    3329
    3430/* COM includes: */
    35 #include "COMEnums.h"
    3631#include "CMachine.h"
    37 #include "CVirtualBoxErrorInfo.h"
    3832
    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. */
     34class UIVirtualMachineItemLocal : public UIVirtualMachineItem
    4435{
    4536    Q_OBJECT;
     
    4839
    4940    /** Constructs local VM item on the basis of taken @a comMachine. */
    50     UIVirtualMachineItem(const CMachine &comMachine);
     41    UIVirtualMachineItemLocal(const CMachine &comMachine);
    5142    /** Destructs local VM item. */
    52     virtual ~UIVirtualMachineItem();
     43    virtual ~UIVirtualMachineItemLocal();
    5344
    5445    /** @name Arguments.
     
    5849    /** @} */
    5950
    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 
    6851    /** @name Basic attributes.
    6952      * @{ */
    70         /** Returns cached machine id. */
    71         QString id() const { return m_strId; }
    7253        /** Returns cached machine settings file name. */
    7354        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;
    8155        /** Returns cached machine group list. */
    8256        const QStringList &groups() { return m_groups; }
     
    9367    /** @name State attributes.
    9468      * @{ */
    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 
    10269        /** Returns cached session state. */
    10370        KSessionState sessionState() const { return m_enmSessionState; }
    10471        /** Returns cached session state name. */
    10572        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; }
    11573    /** @} */
    11674
     
    12482    /** @} */
    12583
    126     /** @name Extra-data options.
    127       * @{ */
    128         /** Returns whether we should show machine details. */
    129         bool hasDetails() const { return m_fHasDetails; }
    130     /** @} */
    131 
    13284    /** @name Update stuff.
    13385      * @{ */
    13486        /** Recaches machine data. */
    135         void recache();
     87        virtual void recache() /* override */;
    13688        /** Recaches machine item pixmap. */
    137         void recachePixmap();
     89        virtual void recachePixmap() /* override */;
    13890    /** @} */
    13991
     
    14193      * @{ */
    14294        /** Returns whether passed machine @a pItem is editable. */
    143         bool isItemEditable() const;
     95        virtual bool isItemEditable() const /* override */;
    14496        /** Returns whether passed machine @a pItem is saved. */
    145         bool isItemSaved() const;
     97        virtual bool isItemSaved() const /* override */;
    14698        /** Returns whether passed machine @a pItem is powered off. */
    147         bool isItemPoweredOff() const;
     99        virtual bool isItemPoweredOff() const /* override */;
    148100        /** Returns whether passed machine @a pItem is started. */
    149         bool isItemStarted() const;
     101        virtual bool isItemStarted() const /* override */;
    150102        /** Returns whether passed machine @a pItem is running. */
    151         bool isItemRunning() const;
     103        virtual bool isItemRunning() const /* override */;
    152104        /** Returns whether passed machine @a pItem is running headless. */
    153         bool isItemRunningHeadless() const;
     105        virtual bool isItemRunningHeadless() const /* override */;
    154106        /** Returns whether passed machine @a pItem is paused. */
    155         bool isItemPaused() const;
     107        virtual bool isItemPaused() const /* override */;
    156108        /** Returns whether passed machine @a pItem is stuck. */
    157         bool isItemStuck() const;
     109        virtual bool isItemStuck() const /* override */;
    158110    /** @} */
    159111
     
    174126    /** @} */
    175127
    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 
    184128    /** @name Basic attributes.
    185129      * @{ */
    186         /** Holds cached machine id. */
    187         QString      m_strId;
    188130        /** Holds cached machine settings file name. */
    189131        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;
    198132        /** Holds cached machine group list. */
    199133        QStringList  m_groups;
     
    212146    /** @name State attributes.
    213147      * @{ */
    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 
    221148        /** Holds cached session state. */
    222         KSessionState             m_enmSessionState;
     149        KSessionState  m_enmSessionState;
    223150        /** 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;
    234152    /** @} */
    235153
     
    239157        ULONG  m_pid;
    240158    /** @} */
    241 
    242     /** @name Extra-data options.
    243       * @{ */
    244         /** Holds whether we should show machine details. */
    245         bool  m_fHasDetails;
    246     /** @} */
    247159};
    248160
    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  
    2727#include "UIMessageCenter.h"
    2828#include "UIVirtualBoxEventHandler.h"
     29#include "UIVirtualMachineItem.h"
     30
     31/* COM includes: */
     32#include "CMachine.h"
    2933
    3034/* Type defs: */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp

    r82942 r82944  
    3838#include "UIIconPool.h"
    3939#include "UIVirtualBoxManager.h"
     40#include "UIVirtualMachineItem.h"
    4041
    4142
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp

    r82917 r82944  
    3131#include "UIIconPool.h"
    3232#include "UIVirtualBoxManager.h"
     33#include "UIVirtualMachineItemLocal.h"
    3334
    3435/* Other VBox includes: */
     
    289290    /* And machine-item content to take into account: */
    290291    int iTopLineWidth = m_iMinimumNameWidth;
    291     if (!node()->toMachineNode()->cache()->snapshotName().isEmpty())
     292    if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty())
    292293        iTopLineWidth += (iMinorSpacing +
    293294                          m_iMinimumSnapshotNameWidth);
     
    700701    int iMinimumSnapshotNameWidth = 0;
    701702    /* Is there any snapshot exists? */
    702     if (!node()->toMachineNode()->cache()->snapshotName().isEmpty())
     703    if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty())
    703704    {
    704705        QFontMetrics fm(m_snapshotNameFont, model()->paintDevice());
    705706        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 */
    707708        int iMinimumTextWidth = fm.width("..."); /* ellipsis width */
    708709        iMinimumSnapshotNameWidth = iBracketWidth + qMin(iActualTextWidth, iMinimumTextWidth);
     
    789790    /* Calculate new visible snapshot-name: */
    790791    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(),
    792793                                                  m_iMaximumSnapshotNameWidth - iBracketWidth);
    793794    strVisibleSnapshotName = QString("(%1)").arg(strVisibleSnapshotName);
     
    10871088
    10881089            /* Paint middle element: */
    1089             if (!node()->toMachineNode()->cache()->snapshotName().isEmpty())
     1090            if (!node()->toMachineNode()->cache()->toLocal()->snapshotName().isEmpty())
    10901091            {
    10911092                /* Prepare variables: */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeGroup.cpp

    r80493 r82944  
    2020#include "UIChooserNodeGlobal.h"
    2121#include "UIChooserNodeMachine.h"
     22
     23/* Other VBox includes: */
     24#include "iprt/assert.h"
    2225
    2326
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.cpp

    r82933 r82944  
    1818/* GUI includes: */
    1919#include "UIChooserNodeMachine.h"
     20#include "UIVirtualMachineItemLocal.h"
    2021
    2122
     
    2526                                           const CMachine &comMachine)
    2627    : UIChooserNode(pParent, fFavorite)
    27     , m_pCache(new UIVirtualMachineItem(comMachine))
     28    , m_pCache(new UIVirtualMachineItemLocal(comMachine))
    2829{
    2930    if (parentNode())
     
    3637                                           int iPosition)
    3738    : UIChooserNode(pParent, pCopyFrom->isFavorite())
    38     , m_pCache(new UIVirtualMachineItem(pCopyFrom->cache()->machine()))
     39    , m_pCache(new UIVirtualMachineItemLocal(pCopyFrom->cache()->toLocal()->machine()))
    3940{
    4041    if (parentNode())
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserNodeMachine.h

    r82917 r82944  
    2424/* GUI includes: */
    2525#include "UIChooserNode.h"
    26 #include "UIVirtualMachineItem.h"
     26
     27/* Forward declarations: */
     28class UIVirtualMachineItem;
     29class CMachine;
    2730
    2831
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp

    r80784 r82944  
    2222
    2323/* GUI includes: */
     24#include "UICommon.h"
    2425#include "UIDetailsElements.h"
    2526#include "UIDetailsModel.h"
    2627#include "UIDetailsSet.h"
    2728#include "UIVirtualBoxEventHandler.h"
    28 #include "UIVirtualMachineItem.h"
    29 #include "UICommon.h"
     29#include "UIVirtualMachineItemLocal.h"
    3030
    3131/* COM includes: */
     
    6666    /* Remember passed arguments: */
    6767    m_pMachineItem = pMachineItem;
    68     m_machine = m_pMachineItem->machine();
     68    m_machine = m_pMachineItem->toLocal()->machine();
    6969    m_fHasDetails = m_pMachineItem->hasDetails();
    7070    m_fFullSet = fFullSet;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette