VirtualBox

Changeset 79575 in vbox for trunk/src


Ignore:
Timestamp:
Jul 7, 2019 12:03:22 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9495: New Cloud VM wizard: Rework to use public API instead of fields, that way wizard allows external users to alter required fields.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp

    r79574 r79575  
    6565}
    6666
     67bool UIWizardNewCloudVM::createVSDForm()
     68{
     69    /* Prepare result: */
     70    bool fResult = false;
     71
     72    /* Main API request sequence, can be interrupted after any step: */
     73    do
     74    {
     75        /* Acquire prepared client and description: */
     76        CCloudClient comClient = client();
     77        CVirtualSystemDescription comDescription = vsd();
     78        AssertReturn(comClient.isNotNull() && comDescription.isNotNull(), false);
     79
     80        /* Read Cloud Client description form: */
     81        CVirtualSystemDescriptionForm comForm;
     82        CProgress comProgress = comClient.GetLaunchDescriptionForm(comDescription, comForm);
     83        if (!comClient.isOk())
     84        {
     85            msgCenter().cannotAcquireCloudClientParameter(comClient);
     86            break;
     87        }
     88
     89        /* Show "Acquire launch form" progress: */
     90        msgCenter().showModalProgressDialog(comProgress, tr("Acquire launch form..."),
     91                                            ":/progress_refresh_90px.png", 0, 0);
     92        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
     93        {
     94            msgCenter().cannotAcquireCloudClientParameter(comProgress);
     95            break;
     96        }
     97
     98        /* Remember Virtual System Description Form: */
     99        setVSDForm(comForm);
     100
     101        /* Finally, success: */
     102        fResult = true;
     103    }
     104    while (0);
     105
     106    /* Return result: */
     107    return fResult;
     108}
     109
    67110bool UIWizardNewCloudVM::createCloudVM()
    68111{
     
    74117    {
    75118        /* Acquire prepared client and description: */
    76         CCloudClient comClient = field("client").value<CCloudClient>();
    77         CVirtualSystemDescription comDescription = field("vsd").value<CVirtualSystemDescription>();
     119        CCloudClient comClient = client();
     120        CVirtualSystemDescription comDescription = vsd();
    78121        AssertReturn(comClient.isNotNull() && comDescription.isNotNull(), false);
    79122
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h

    r79574 r79575  
    2424/* GUI includes: */
    2525#include "UIWizard.h"
     26
     27/* COM includes: */
     28#include "COMEnums.h"
     29#include "CCloudClient.h"
     30#include "CVirtualSystemDescription.h"
     31#include "CVirtualSystemDescriptionForm.h"
    2632
    2733/** New Cloud VM wizard. */
     
    5157    virtual void prepare() /* override */;
    5258
    53     /** Create New Cloud VM. */
     59    /** Defines Cloud @a comClient object. */
     60    void setClient(const CCloudClient &comClient) { m_comClient = comClient; }
     61    /** Returns Cloud Client object. */
     62    CCloudClient client() const { return m_comClient; }
     63
     64    /** Defines Virtual System @a comDescription object. */
     65    void setVSD(const CVirtualSystemDescription &comDescription) { m_comVSD = comDescription; }
     66    /** Returns Virtual System Description object. */
     67    CVirtualSystemDescription vsd() const { return m_comVSD; }
     68
     69    /** Defines Virtual System Description @a comForm object. */
     70    void setVSDForm(const CVirtualSystemDescriptionForm &comForm) { m_comVSDForm = comForm; }
     71    /** Returns Virtual System Description Form object. */
     72    CVirtualSystemDescriptionForm vsdForm() const { return m_comVSDForm; }
     73
     74    /** Creates VSD Form. */
     75    bool createVSDForm();
     76
     77    /** Creates New Cloud VM. */
    5478    bool createCloudVM();
    5579
     
    5882    /** Handles translation event. */
    5983    virtual void retranslateUi() /* override */;
     84
     85private:
     86
     87    /** Holds the Cloud Client object reference. */
     88    CCloudClient                   m_comClient;
     89    /** Holds the Virtual System Description object reference. */
     90    CVirtualSystemDescription      m_comVSD;
     91    /** Holds the Virtual System Description Form object reference. */
     92    CVirtualSystemDescriptionForm  m_comVSDForm;
    6093};
    6194
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp

    r79365 r79575  
    277277    m_pAccountImageList->clear();
    278278    /* Clear Cloud Client: */
    279     m_comCloudClient = CCloudClient();
     279    setClient(CCloudClient());
    280280
    281281    /* If profile chosen: */
     
    286286        {
    287287            /* Acquire Cloud Client: */
    288             m_comCloudClient = m_comCloudProfile.CreateCloudClient();
     288            CCloudClient comCloudClient = m_comCloudProfile.CreateCloudClient();
    289289            if (!m_comCloudProfile.isOk())
    290290            {
     
    292292                break;
    293293            }
     294
     295            /* Remember Cloud Client: */
     296            setClient(comCloudClient);
    294297
    295298            /* Gather image names, ids and states.
     
    301304
    302305            /* Ask for cloud custom images: */
    303             CProgress comProgress = m_comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
    304             if (!m_comCloudClient.isOk())
    305             {
    306                 msgCenter().cannotAcquireCloudClientParameter(m_comCloudClient);
     306            CProgress comProgress = comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
     307            if (!comCloudClient.isOk())
     308            {
     309                msgCenter().cannotAcquireCloudClientParameter(comCloudClient);
    307310                break;
    308311            }
     
    345348{
    346349    /* Clear description & form properties: */
    347     m_comVSD = CVirtualSystemDescription();
    348     m_comVSDForm = CVirtualSystemDescriptionForm();
     350    setVSD(CVirtualSystemDescription());
     351    setVSDForm(CVirtualSystemDescriptionForm());
    349352
    350353    /* If client created: */
    351     if (m_comCloudClient.isNotNull())
     354    CCloudClient comCloudClient = client();
     355    if (comCloudClient.isNotNull())
    352356    {
    353357        /* Main API request sequence, can be interrupted after any step: */
     
    381385            /* Make sure there is at least one virtual system description created: */
    382386            AssertReturnVoid(!descriptions.isEmpty());
    383             m_comVSD = descriptions.at(0);
     387            CVirtualSystemDescription comVSD = descriptions.at(0);
     388
     389            /* Remember Virtual System Description: */
     390            setVSD(comVSD);
    384391
    385392            /* Add image id to virtual system description: */
    386             m_comVSD.AddDescription(KVirtualSystemDescriptionType_CloudImageId, imageId(), QString());
    387             if (!m_comVSD.isOk())
    388             {
    389                 msgCenter().cannotAddVirtualSystemDescriptionValue(m_comVSD);
    390                 break;
    391             }
    392 
    393             /* Read Cloud Client description form: */
    394             CVirtualSystemDescriptionForm comForm;
    395             CProgress comLaunchDescriptionFormProgress = m_comCloudClient.GetLaunchDescriptionForm(m_comVSD, comForm);
    396             if (!m_comCloudClient.isOk())
    397             {
    398                 msgCenter().cannotAcquireCloudClientParameter(m_comCloudClient);
    399                 break;
    400             }
    401 
    402             /* Show "Acquire launch form" progress: */
    403             msgCenter().showModalProgressDialog(comLaunchDescriptionFormProgress, UIWizardNewCloudVM::tr("Acquire launch form..."),
    404                                                 ":/progress_refresh_90px.png", 0, 0);
    405             if (!comLaunchDescriptionFormProgress.isOk() || comLaunchDescriptionFormProgress.GetResultCode() != 0)
    406             {
    407                 msgCenter().cannotAcquireCloudClientParameter(comLaunchDescriptionFormProgress);
    408                 break;
    409             }
    410 
    411             /* Remember form: */
    412             m_comVSDForm = comForm;
     393            comVSD.AddDescription(KVirtualSystemDescriptionType_CloudImageId, imageId(), QString());
     394            if (!comVSD.isOk())
     395            {
     396                msgCenter().cannotAddVirtualSystemDescriptionValue(comVSD);
     397                break;
     398            }
     399
     400            /* Create Virtual System Description Form: */
     401            qobject_cast<UIWizardNewCloudVM*>(wizardImp())->createVSDForm();
    413402        }
    414403        while (0);
     
    487476}
    488477
     478void UIWizardNewCloudVMPage1::setClient(const CCloudClient &comClient)
     479{
     480    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setClient(comClient);
     481}
     482
    489483CCloudClient UIWizardNewCloudVMPage1::client() const
    490484{
    491     return m_comCloudClient;
     485    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->client();
     486}
     487
     488void UIWizardNewCloudVMPage1::setVSD(const CVirtualSystemDescription &comDescription)
     489{
     490    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setVSD(comDescription);
    492491}
    493492
    494493CVirtualSystemDescription UIWizardNewCloudVMPage1::vsd() const
    495494{
    496     return m_comVSD;
     495    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsd();
     496}
     497
     498void UIWizardNewCloudVMPage1::setVSDForm(const CVirtualSystemDescriptionForm &comForm)
     499{
     500    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setVSDForm(comForm);
    497501}
    498502
    499503CVirtualSystemDescriptionForm UIWizardNewCloudVMPage1::vsdForm() const
    500504{
    501     return m_comVSDForm;
     505    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsdForm();
    502506}
    503507
     
    672676    connect(m_pAccountImageList, &QListWidget::currentRowChanged,
    673677            this, &UIWizardNewCloudVMPageBasic1::completeChanged);
    674 
    675     /* Register fields: */
    676     registerField("client", this, "client");
    677     registerField("vsd", this, "vsd");
    678     registerField("vsdForm", this, "vsdForm");
    679678}
    680679
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.h

    r79256 r79575  
    9494    /** Returns image ID. */
    9595    QString imageId() const;
    96     /** Returns Cloud Client. */
     96
     97    /** Defines Cloud @a comClient object. */
     98    void setClient(const CCloudClient &comClient);
     99    /** Returns Cloud Client object. */
    97100    CCloudClient client() const;
     101
     102    /** Defines Virtual System @a comDescription object. */
     103    void setVSD(const CVirtualSystemDescription &comDescription);
    98104    /** Returns Virtual System Description object. */
    99105    CVirtualSystemDescription vsd() const;
     106
     107    /** Defines Virtual System Description @a comForm object. */
     108    void setVSDForm(const CVirtualSystemDescriptionForm &comForm);
    100109    /** Returns Virtual System Description Form object. */
    101110    CVirtualSystemDescriptionForm vsdForm() const;
     
    105114
    106115    /** Holds the Cloud Provider Manager reference. */
    107     CCloudProviderManager          m_comCloudProviderManager;
     116    CCloudProviderManager  m_comCloudProviderManager;
    108117    /** Holds the Cloud Provider object reference. */
    109     CCloudProvider                 m_comCloudProvider;
     118    CCloudProvider         m_comCloudProvider;
    110119    /** Holds the Cloud Profile object reference. */
    111     CCloudProfile                  m_comCloudProfile;
    112     /** Holds the Cloud Client object reference. */
    113     CCloudClient                   m_comCloudClient;
    114     /** Holds the Virtual System Description object reference. */
    115     CVirtualSystemDescription      m_comVSD;
    116     /** Holds the Virtual System Description Form object reference. */
    117     CVirtualSystemDescriptionForm  m_comVSDForm;
     120    CCloudProfile          m_comCloudProfile;
    118121
    119122    /** Holds the destination layout instance. */
     
    144147{
    145148    Q_OBJECT;
    146     Q_PROPERTY(CCloudClient client READ client);
    147     Q_PROPERTY(CVirtualSystemDescription vsd READ vsd);
    148     Q_PROPERTY(CVirtualSystemDescriptionForm vsdForm READ vsdForm);
    149149
    150150public:
     
    154154
    155155protected:
     156
     157    /** Allows access wizard from base part. */
     158    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
    156159
    157160    /** Handle any Qt @a pEvent. */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.cpp

    r79256 r79575  
    2626#include "UIWizardNewCloudVMPageBasic2.h"
    2727
    28 /* COM includes: */
    29 #include "CVirtualSystemDescription.h"
    30 #include "CVirtualSystemDescriptionForm.h"
    31 
    3228
    3329/*********************************************************************************************************************************
     
    4238{
    4339    /* Acquire VSD form: */
    44     CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
     40    CVirtualSystemDescriptionForm comForm = vsdForm();
    4541    /* Make sure the properties table get the new description form: */
    4642    if (comForm.isNotNull())
    4743        m_pFormEditor->setVirtualSystemDescriptionForm(comForm);
     44}
     45
     46CVirtualSystemDescriptionForm UIWizardNewCloudVMPage2::vsdForm() const
     47{
     48    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsdForm();
    4849}
    4950
     
    107108
    108109    /* Check whether we have proper VSD form: */
    109     CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
     110    CVirtualSystemDescriptionForm comForm = vsdForm();
    110111    fResult = comForm.isNotNull();
    111112    Assert(fResult);
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.h

    r79256 r79575  
    4040    void refreshFormPropertiesTable();
    4141
     42    /** Returns Virtual System Description Form object. */
     43    CVirtualSystemDescriptionForm vsdForm() const;
     44
    4245    /** Holds the Form Editor widget instance. */
    4346    UIFormEditorWidgetPointer  m_pFormEditor;
     
    5659protected:
    5760
    58     /** Allows to access 'field()' from base part. */
    59     virtual QVariant fieldImp(const QString &strFieldName) const /* override */ { return UIWizardPage::field(strFieldName); }
     61    /** Allows access wizard from base part. */
     62    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
    6063
    6164    /** Handles translation event. */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.cpp

    r79313 r79575  
    176176    connect(m_pAccountImageList, &QListWidget::currentRowChanged,
    177177            this, &UIWizardNewCloudVMPageExpert::sltHandleInstanceListChange);
    178 
    179     /* Register fields: */
    180     registerField("client", this, "client");
    181     registerField("vsd", this, "vsd");
    182     registerField("vsdForm", this, "vsdForm");
    183178}
    184179
     
    246241              && !imageId().isNull()
    247242              && vsd().isNotNull()
    248               && vsdForm().isNotNull();
     243              && UIWizardNewCloudVMPage1::vsdForm().isNotNull();
    249244
    250245    /* Return result: */
     
    261256
    262257    /* Check whether we have proper VSD form: */
    263     CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
     258    CVirtualSystemDescriptionForm comForm = UIWizardNewCloudVMPage1::vsdForm();
    264259    fResult = comForm.isNotNull();
    265260    Assert(fResult);
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.h

    r79256 r79575  
    3535{
    3636    Q_OBJECT;
    37     Q_PROPERTY(CCloudClient client READ client);
    38     Q_PROPERTY(CVirtualSystemDescription vsd READ vsd);
    39     Q_PROPERTY(CVirtualSystemDescriptionForm vsdForm READ vsdForm);
    4037
    4138public:
     
    4643protected:
    4744
    48     /** Allows to access 'field()' from base part. */
    49     virtual QVariant fieldImp(const QString &strFieldName) const /* override */ { return UIWizardPage::field(strFieldName); }
     45    /** Allows access wizard from base part. */
     46    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
    5047
    5148    /** Handle any Qt @a pEvent. */
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