VirtualBox

Changeset 83719 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 16, 2020 4:30:01 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
137232
Message:

FE/Qt: bugref:9653: VirtualBox Manager: Details pane: Adjust to work with CCloudMachine instead of UICloudMachine.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp

    r83288 r83719  
    2222/* GUI includes: */
    2323#include "UIBootOrderEditor.h"
    24 #include "UICloudMachine.h"
    2524#include "UIConverter.h"
    2625#include "UIDetailsGenerator.h"
     
    3130#include "COMEnums.h"
    3231#include "CAudioAdapter.h"
     32#include "CBooleanFormValue.h"
     33#include "CChoiceFormValue.h"
     34#include "CCloudMachine.h"
     35#include "CForm.h"
     36#include "CFormValue.h"
    3337#include "CGraphicsAdapter.h"
    3438#include "CMachine.h"
    3539#include "CMediumAttachment.h"
    3640#include "CNetworkAdapter.h"
     41#include "CProgress.h"
     42#include "CRangedIntegerFormValue.h"
    3743#include "CRecordingScreenSettings.h"
    3844#include "CRecordingSettings.h"
     
    4046#include "CSharedFolder.h"
    4147#include "CStorageController.h"
     48#include "CStringFormValue.h"
    4249#include "CSystemProperties.h"
    4350#include "CUSBController.h"
     
    4552#include "CUSBDeviceFilters.h"
    4653#include "CVRDEServer.h"
     54
     55/* VirtualBox interface declarations: */
     56#include <VBox/com/VirtualBox.h>
     57
    4758
    4859UITextTable UIDetailsGenerator::generateMachineInformationGeneral(CMachine &comMachine,
     
    123134}
    124135
    125 UITextTable UIDetailsGenerator::generateMachineInformationGeneral(UICloudMachine &guiCloudMachine,
    126                                                                   const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions)
    127 {
    128     UITextTable table;
    129 
    130     if (guiCloudMachine.isNull())
    131         return table;
    132 
    133     if (!guiCloudMachine.accessible())
    134     {
    135         table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
    136         return table;
    137     }
    138 
    139     /* Name: */
    140     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Name)
    141         table << UITextTableLine(QApplication::translate("UIDetails", "Name", "details (general)"),
    142                                  guiCloudMachine.instanceName());
    143 
    144     /* Operating system: */
    145     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_OS)
    146         table << UITextTableLine(QApplication::translate("UIDetails", "Operating System", "details (general)"),
    147                                  uiCommon().vmGuestOSTypeDescription(guiCloudMachine.osType()));
    148 
    149     /* Domain: */
    150     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral_Location)
    151     {
    152         const QString strDomain = guiCloudMachine.domain();
    153         const QString strResult = !strDomain.isEmpty()
    154                                 ? strDomain
    155                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    156         table << UITextTableLine(QApplication::translate("UIDetails", "Domain", "details (general)"), strResult);
     136UITextTable UIDetailsGenerator::generateMachineInformationGeneral(CCloudMachine &comCloudMachine,
     137                                                                  const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &)
     138{
     139    UITextTable table;
     140
     141    if (comCloudMachine.isNull())
     142        return table;
     143
     144    if (!comCloudMachine.GetAccessible())
     145    {
     146        table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
     147        return table;
     148    }
     149
     150    // WORKAROUND:
     151    // While we are waiting for GetDetailsForm implementation we will be using GetSettingsForm.
     152    // This requires to wait for progress to complete and handle out all possible value types.
     153    CForm comForm;
     154    CProgress comProgress = comCloudMachine.GetSettingsForm(comForm);
     155    /* Ignore cloud machine errors: */
     156    if (comCloudMachine.isOk())
     157    {
     158        /* Wait for progress to complete: */
     159        comProgress.WaitForCompletion(-1);
     160        /* Ignore progress errors: */
     161        if (comProgress.isOk() && comProgress.GetResultCode() == 0)
     162        {
     163            /* For each form value: */
     164            QVector<CFormValue> values = comForm.GetValues();
     165            foreach (const CFormValue &comIteratedValue, values)
     166            {
     167                /* Handle possible value type: */
     168                switch (comIteratedValue.GetType())
     169                {
     170                    case KFormValueType_Boolean:
     171                    {
     172                        CBooleanFormValue comValue(comIteratedValue);
     173                        const bool fBool = comValue.GetSelected();
     174                        table << UITextTableLine(comValue.GetLabel(),
     175                                                 fBool ? QApplication::translate("UIDetails", "Enabled", "details (cloud value)")
     176                                                       : QApplication::translate("UIDetails", "Disabled", "details (cloud value)"));
     177                        break;
     178                    }
     179                    case KFormValueType_String:
     180                    {
     181                        CStringFormValue comValue(comIteratedValue);
     182                        table << UITextTableLine(comValue.GetLabel(), comValue.GetString());
     183                        break;
     184                    }
     185                    case KFormValueType_Choice:
     186                    {
     187                        CChoiceFormValue comValue(comIteratedValue);
     188                        const QVector<QString> possibleValues = comValue.GetValues();
     189                        const int iCurrentIndex = comValue.GetSelectedIndex();
     190                        table << UITextTableLine(comValue.GetLabel(), possibleValues.at(iCurrentIndex));
     191                        break;
     192                    }
     193                    case KFormValueType_RangedInteger:
     194                    {
     195                        CRangedIntegerFormValue comValue(comIteratedValue);
     196                        table << UITextTableLine(comValue.GetLabel(),
     197                                                 QString("%1 %2").arg(comValue.GetInteger()).arg(comValue.GetSuffix()));
     198                        break;
     199                    }
     200                    default:
     201                        break;
     202                }
     203            }
     204        }
    157205    }
    158206
     
    279327            table << UITextTableLine(QApplication::translate("UIDetails", "Acceleration", "details (system)"),
    280328                                     acceleration.join(", "));
    281     }
    282 
    283     return table;
    284 }
    285 
    286 UITextTable UIDetailsGenerator::generateMachineInformationSystem(UICloudMachine &guiCloudMachine,
    287                                                                  const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions)
    288 {
    289     UITextTable table;
    290 
    291     if (guiCloudMachine.isNull())
    292         return table;
    293 
    294     if (!guiCloudMachine.accessible())
    295     {
    296         table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
    297         return table;
    298     }
    299 
    300     /* Shape: */
    301     {
    302         const QString strShape = guiCloudMachine.shape();
    303         const QString strResult = !strShape.isEmpty()
    304                                 ? strShape
    305                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    306         table << UITextTableLine(QApplication::translate("UIDetails", "Shape", "details (system)"), strResult);
    307     }
    308 
    309     /* Base memory: */
    310     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_RAM)
    311     {
    312         const int iMemorySize = guiCloudMachine.memorySize();
    313         const QString strResult = iMemorySize > 0
    314                                 ? QApplication::translate("UIDetails", "%1 MB").arg(iMemorySize)
    315                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    316         table << UITextTableLine(QApplication::translate("UIDetails", "Base Memory", "details (system)"), strResult);
    317     }
    318 
    319     /* Processors: */
    320     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_CPUCount)
    321     {
    322         const int cCpuCount = guiCloudMachine.cpuCount();
    323         const QString strResult = cCpuCount > 0
    324                                 ? QString::number(cCpuCount)
    325                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    326         table << UITextTableLine(QApplication::translate("UIDetails", "Processors", "details (system)"), strResult);
    327     }
    328 
    329     /* Booting firmware: */
    330     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeSystem_Firmware)
    331     {
    332         const QString strBottingFirmware = guiCloudMachine.bootingFirmware();
    333         const QString strResult = !strBottingFirmware.isEmpty()
    334                                 ? strBottingFirmware
    335                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    336         table << UITextTableLine(QApplication::translate("UIDetails", "Booting Firmware", "details (system)"), strResult);
    337329    }
    338330
     
    559551    if (table.isEmpty())
    560552        table << UITextTableLine(QApplication::translate("UIDetails", "Not Attached", "details (storage)"), QString());
    561 
    562     return table;
    563 }
    564 
    565 UITextTable UIDetailsGenerator::generateMachineInformationStorage(UICloudMachine &guiCloudMachine,
    566                                                                   const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions)
    567 {
    568     UITextTable table;
    569 
    570     if (guiCloudMachine.isNull())
    571         return table;
    572 
    573     if (!guiCloudMachine.accessible())
    574     {
    575         table << UITextTableLine(QApplication::translate("UIDetails", "Information Inaccessible", "details"), QString());
    576         return table;
    577     }
    578 
    579     /* Image: */
    580     if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeStorage_HardDisks)
    581     {
    582         const QString strImageName = guiCloudMachine.imageName();
    583         const QString strImageSize = guiCloudMachine.imageSize();
    584         const QString strResult = !strImageName.isEmpty() && !strImageSize.isEmpty()
    585                                 ? QString("%1 (%2)").arg(strImageName, strImageSize)
    586                                 : QApplication::translate("UIDetails", "Checking ...", "details");
    587         table << UITextTableLine(QApplication::translate("UIDetails", "Image", "details (storage)"), strResult);
    588     }
    589553
    590554    return table;
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.h

    r83191 r83719  
    2727
    2828/* Forward declarations: */
    29 class UICloudMachine;
     29class CCloudMachine;
    3030class CMachine;
    3131
     
    3636                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions);
    3737
    38     SHARED_LIBRARY_STUFF UITextTable generateMachineInformationGeneral(UICloudMachine &guiCloudMachine,
     38    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationGeneral(CCloudMachine &comCloudMachine,
    3939                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral &fOptions);
    4040
    4141    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationSystem(CMachine &comMachine,
    42                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions);
    43 
    44     SHARED_LIBRARY_STUFF UITextTable generateMachineInformationSystem(UICloudMachine &guiCloudMachine,
    4542                                                                      const UIExtraDataMetaDefs::DetailsElementOptionTypeSystem &fOptions);
    4643
     
    5148                                                                       const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions,
    5249                                                                       bool fLink = true);
    53 
    54     SHARED_LIBRARY_STUFF UITextTable generateMachineInformationStorage(UICloudMachine &guiCloudMachine,
    55                                                                        const UIExtraDataMetaDefs::DetailsElementOptionTypeStorage &fOptions);
    5650
    5751    SHARED_LIBRARY_STUFF UITextTable generateMachineInformationAudio(CMachine &comMachine,
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp

    r83149 r83719  
    305305}
    306306
    307 const UICloudMachine &UIDetailsElement::cloudMachine()
     307const CCloudMachine &UIDetailsElement::cloudMachine()
    308308{
    309309    return m_pSet->cloudMachine();
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.h

    r83149 r83719  
    3434class QStateMachine;
    3535class QTextLayout;
    36 class UICloudMachine;
    3736class UIDetailsSet;
    3837class UIGraphicsRotatorButton;
    3938class UIGraphicsTextPane;
     39class CCloudMachine;
    4040class CMachine;
    4141
     
    161161        const CMachine &machine();
    162162        /** Returns cached cloud machine reference. */
    163         const UICloudMachine &cloudMachine();
     163        const CCloudMachine &cloudMachine();
    164164
    165165        /** Returns whether element is of local type. */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.cpp

    r83191 r83719  
    2222
    2323/* GUI includes: */
    24 #include "UICloudMachine.h"
    2524#include "UICommon.h"
    2625#include "UIConverter.h"
     
    3837#include "COMEnums.h"
    3938#include "CAudioAdapter.h"
     39#include "CCloudMachine.h"
    4040#include "CMachine.h"
    4141#include "CMedium.h"
     
    6060}
    6161
    62 UIDetailsUpdateTask::UIDetailsUpdateTask(const UICloudMachine &guiCloudMachine)
     62UIDetailsUpdateTask::UIDetailsUpdateTask(const CCloudMachine &comCloudMachine)
    6363    : UITask(UITask::Type_DetailsPopulation)
    6464{
    6565    /* Store cloud machine as property: */
    66     setProperty("cloudMachine", QVariant::fromValue(guiCloudMachine));
     66    setProperty("cloudMachine", QVariant::fromValue(comCloudMachine));
    6767}
    6868
     
    246246{
    247247    /* Acquire corresponding machine: */
    248     UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
    249     if (guiCloudMachine.isNull())
    250         return;
    251 
    252     /* Generate details table: */
    253     UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(guiCloudMachine, m_fOptions);
     248    CCloudMachine comCloudMachine = property("cloudMachine").value<CCloudMachine>();
     249    if (comCloudMachine.isNull())
     250        return;
     251
     252    /* Generate details table: */
     253    UITextTable table = UIDetailsGenerator::generateMachineInformationGeneral(comCloudMachine, m_fOptions);
    254254    setProperty("table", QVariant::fromValue(table));
    255255}
     
    275275}
    276276
    277 void UIDetailsUpdateTaskSystemCloud::run()
    278 {
    279     /* Acquire corresponding machine: */
    280     UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
    281     if (guiCloudMachine.isNull())
    282         return;
    283 
    284     /* Generate details table: */
    285     UITextTable table = UIDetailsGenerator::generateMachineInformationSystem(guiCloudMachine, m_fOptions);
    286     setProperty("table", QVariant::fromValue(table));
    287 }
    288 
    289277UITask *UIDetailsElementSystem::createUpdateTask()
    290278{
    291     return   isLocal()
    292            ? static_cast<UITask*>(new UIDetailsUpdateTaskSystem(machine(), model()->optionsSystem()))
    293            : static_cast<UITask*>(new UIDetailsUpdateTaskSystemCloud(cloudMachine(), model()->optionsSystem()));
     279    return new UIDetailsUpdateTaskSystem(machine(), model()->optionsSystem());
    294280}
    295281
     
    325311}
    326312
    327 void UIDetailsUpdateTaskStorageCloud::run()
    328 {
    329     /* Acquire corresponding machine: */
    330     UICloudMachine guiCloudMachine = property("cloudMachine").value<UICloudMachine>();
    331     if (guiCloudMachine.isNull())
    332         return;
    333 
    334     /* Generate details table: */
    335     UITextTable table = UIDetailsGenerator::generateMachineInformationStorage(guiCloudMachine, m_fOptions);
    336     setProperty("table", QVariant::fromValue(table));
    337 }
    338 
    339313UITask *UIDetailsElementStorage::createUpdateTask()
    340314{
    341     return   isLocal()
    342            ? static_cast<UITask*>(new UIDetailsUpdateTaskStorage(machine(), model()->optionsStorage()))
    343            : static_cast<UITask*>(new UIDetailsUpdateTaskStorageCloud(cloudMachine(), model()->optionsStorage()));
     315    return new UIDetailsUpdateTaskStorage(machine(), model()->optionsStorage());
    344316}
    345317
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElements.h

    r83191 r83719  
    4040    /** Constructs update task taking @a comMachine as data. */
    4141    UIDetailsUpdateTask(const CMachine &comMachine);
    42     /** Constructs update task taking @a guiCloudMachine as data. */
    43     UIDetailsUpdateTask(const UICloudMachine &guiCloudMachine);
     42    /** Constructs update task taking @a comCloudMachine as data. */
     43    UIDetailsUpdateTask(const CCloudMachine &comCloudMachine);
    4444};
    4545
     
    145145public:
    146146
    147     /** Constructs update task passing @a guiCloudMachine to the base-class. */
    148     UIDetailsUpdateTaskGeneralCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral fOptions)
    149         : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
     147    /** Constructs update task passing @a comCloudMachine to the base-class. */
     148    UIDetailsUpdateTaskGeneralCloud(const CCloudMachine &comCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeGeneral fOptions)
     149        : UIDetailsUpdateTask(comCloudMachine), m_fOptions(fOptions) {}
    150150
    151151private:
     
    197197};
    198198
    199 /** UITask extension used as update task for the details-element type 'System' of cloud VM. */
    200 class UIDetailsUpdateTaskSystemCloud : public UIDetailsUpdateTask
    201 {
    202     Q_OBJECT;
    203 
    204 public:
    205 
    206     /** Constructs update task passing @a guiCloudMachine to the base-class. */
    207     UIDetailsUpdateTaskSystemCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeSystem fOptions)
    208         : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
    209 
    210 private:
    211 
    212     /** Contains update task body. */
    213     void run();
    214 
    215     /** Holds the options. */
    216     UIExtraDataMetaDefs::DetailsElementOptionTypeSystem m_fOptions;
    217 };
    218 
    219199/** UIDetailsElementInterface extension for the details-element type 'System'. */
    220200class UIDetailsElementSystem : public UIDetailsElementInterface
     
    295275};
    296276
    297 /** UITask extension used as update task for the details-element type 'Storage' of cloud VM. */
    298 class UIDetailsUpdateTaskStorageCloud : public UIDetailsUpdateTask
    299 {
    300     Q_OBJECT;
    301 
    302 public:
    303 
    304     /** Constructs update task passing @a guiCloudMachine to the base-class. */
    305     UIDetailsUpdateTaskStorageCloud(const UICloudMachine &guiCloudMachine, UIExtraDataMetaDefs::DetailsElementOptionTypeStorage fOptions)
    306         : UIDetailsUpdateTask(guiCloudMachine), m_fOptions(fOptions) {}
    307 
    308 private:
    309 
    310     /** Contains update task body. */
    311     void run();
    312 
    313     /** Holds the options. */
    314     UIExtraDataMetaDefs::DetailsElementOptionTypeStorage m_fOptions;
    315 };
    316 
    317277/** UIDetailsElementInterface extension for the details-element type 'Storage'. */
    318278class UIDetailsElementStorage : public UIDetailsElementInterface
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.cpp

    r83654 r83719  
    8585            {
    8686                /* Get local machine: */
    87                 m_machine = m_pMachineItem->toLocal()->machine();
     87                m_comMachine = m_pMachineItem->toLocal()->machine();
    8888
    8989                /* Compose a list of types to build: */
     
    9797
    9898                /* Take into account USB controller restrictions: */
    99                 const CUSBDeviceFilters &filters = m_machine.GetUSBDeviceFilters();
    100                 if (filters.isNull() || !m_machine.GetUSBProxyAvailable())
     99                const CUSBDeviceFilters &filters = m_comMachine.GetUSBDeviceFilters();
     100                if (filters.isNull() || !m_comMachine.GetUSBProxyAvailable())
    101101                    m_settings.remove(DetailsElementType_USB);
    102102
     
    106106            {
    107107                /* Get cloud machine: */
    108 //                m_cloudMachine = m_pMachineItem->toCloud()->machine();
     108                m_comCloudMachine = m_pMachineItem->toCloud()->machine();
    109109
    110110                /* Compose a list of types to build: */
    111                 types << DetailsElementType_General << DetailsElementType_System << DetailsElementType_Storage;
     111                types << DetailsElementType_General;
    112112
    113113                break;
     
    565565{
    566566    /* Is this our VM changed? */
    567     if (m_machine.GetId() != uId)
     567    if (m_comMachine.GetId() != uId)
    568568        return;
    569569
     
    575575{
    576576    /* Is this our VM changed? */
    577     if (m_machine.GetId() != uId)
     577    if (m_comMachine.GetId() != uId)
    578578        return;
    579579
     
    587587    const UIMedium guiMedium = uiCommon().medium(uId);
    588588    if (   guiMedium.isNull()
    589         || !guiMedium.machineIds().contains(m_machine.GetId()))
     589        || !guiMedium.machineIds().contains(m_comMachine.GetId()))
    590590        return;
    591591
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsSet.h

    r83352 r83719  
    2323
    2424/* GUI includes: */
    25 #include "UICloudMachine.h"
    2625#include "UIDetailsItem.h"
    2726#include "UIExtraDataDefs.h"
     
    3029/* COM includes: */
    3130#include "COMEnums.h"
     31#include "CCloudMachine.h"
    3232#include "CMachine.h"
    3333
     
    6161
    6262        /** Returns cached machine. */
    63         const CMachine &machine() const { return m_machine; }
     63        const CMachine &machine() const { return m_comMachine; }
    6464        /** Returns cached cloud machine. */
    65         const UICloudMachine &cloudMachine() const { return m_cloudMachine; }
     65        const CCloudMachine &cloudMachine() const { return m_comCloudMachine; }
    6666
    6767        /** Returns whether set is of local type. */
     
    204204
    205205        /** Holds the machine reference. */
    206         CMachine        m_machine;
     206        CMachine       m_comMachine;
    207207        /** Holds the cloud machine reference. */
    208         UICloudMachine  m_cloudMachine;
     208        CCloudMachine  m_comCloudMachine;
    209209
    210210        /** Holds whether set is of local type. */
Note: See TracChangeset for help on using the changeset viewer.

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