VirtualBox

Ignore:
Timestamp:
Jul 19, 2018 12:02:43 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9152: Export Appliance wizard: Machine, Appliance and Expert pages: Merging Destination and Appliance pages; Destination is now determined by chosen appliance format.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp

    r73083 r73236  
    202202    return fResult;
    203203}
     204
     205int UIWizardExportAppPageBasic1::nextId() const
     206{
     207    /* Skip 2nd page as we are merging 2nd and 3rd now: */
     208    return UIWizardExportApp::Page3;
     209}
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.h

    r73083 r73236  
    7575    virtual bool validatePage() /* override */;
    7676
     77    /** Defines the ID of the next page. */
     78    virtual int nextId() const /* override */;
     79
    7780private:
    7881
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic3.cpp

    r73234 r73236  
    5252
    5353UIWizardExportAppPage3::UIWizardExportAppPage3()
    54     : m_pSettingsWidget(0)
     54    : m_pFormatLayout(0)
     55    , m_pSettingsLayout1(0)
     56    , m_pSettingsLayout2(0)
     57    , m_pFormatComboBoxLabel(0)
     58    , m_pFormatComboBox(0)
     59    , m_pSettingsWidget(0)
    5560    , m_pFileSelectorLabel(0)
    5661    , m_pFileSelector(0)
    57     , m_pFormatComboBoxLabel(0)
    58     , m_pFormatComboBox(0)
    5962    , m_pMACComboBoxLabel(0)
    6063    , m_pMACComboBox(0)
     
    8386    formats << "ovf-2.0";
    8487    formats << "opc-1.0";
     88    formats << "csp-1.0";
    8589    m_pFormatComboBox->addItems(formats);
    8690
     
    207211{
    208212    /* Update page appearance according to chosen storage-type: */
    209     const StorageType enmStorageType = fieldImp("storageType").value<StorageType>();
    210     m_pSettingsWidget->setCurrentIndex((int)enmStorageType);
     213    const bool fCSP = fieldImp("format").toString() == "csp-1.0";
     214    m_pSettingsWidget->setCurrentIndex((int)fCSP);
    211215}
    212216
     
    226230void UIWizardExportAppPage3::refreshFileSelectorExtension()
    227231{
    228     /* If the format is set to OPC: */
    229     if (fieldImp("format").toString() == "opc-1.0")
     232    /* If the format is set to CSP: */
     233    if (fieldImp("format").toString() == "csp-1.0")
     234    {
     235        /* We use no extension: */
     236        m_strFileSelectorExt.clear();
     237
     238        /* Update file chooser accordingly: */
     239        m_pFileSelector->setFileFilters(QString());
     240    }
     241    /* Else if the format is set to OPC: */
     242    else if (fieldImp("format").toString() == "opc-1.0")
    230243    {
    231244        /* We use .tar.gz extension: */
     
    263276void UIWizardExportAppPage3::refreshManifestCheckBoxAccess()
    264277{
    265     /* If the format is set to OPC: */
    266     if (fieldImp("format").toString() == "opc-1.0")
     278    /* If the format is set to CSP || OPC: */
     279    if (   fieldImp("format").toString() == "csp-1.0"
     280        || fieldImp("format").toString() == "opc-1.0")
    267281    {
    268282        /* Disable manifest check-box: */
     
    281295void UIWizardExportAppPage3::refreshIncludeISOsCheckBoxAccess()
    282296{
    283     /* If the format is set to OPC: */
    284     if (fieldImp("format").toString() == "opc-1.0")
     297    /* If the format is set to CSP || OPC: */
     298    if (   fieldImp("format").toString() == "csp-1.0"
     299        || fieldImp("format").toString() == "opc-1.0")
    285300    {
    286301        /* Disable include ISO check-box: */
     
    344359}
    345360
    346 QString UIWizardExportAppPage3::path() const
    347 {
    348     return m_pFileSelector->path();
    349 }
    350 
    351 void UIWizardExportAppPage3::setPath(const QString &strPath)
    352 {
    353     m_pFileSelector->setPath(strPath);
    354 }
    355 
    356361QString UIWizardExportAppPage3::format() const
    357362{
     
    367372}
    368373
     374QString UIWizardExportAppPage3::path() const
     375{
     376    return m_pFileSelector->path();
     377}
     378
     379void UIWizardExportAppPage3::setPath(const QString &strPath)
     380{
     381    m_pFileSelector->setPath(strPath);
     382}
     383
    369384MACAddressPolicy UIWizardExportAppPage3::macAddressPolicy() const
    370385{
     
    425440
    426441UIWizardExportAppPageBasic3::UIWizardExportAppPageBasic3()
    427     : m_pLabel(0)
     442    : m_pLabelFormat(0)
     443    , m_pLabelSettings(0)
    428444{
    429445    /* Create main layout: */
     
    431447    if (pMainLayout)
    432448    {
    433         /* Create label: */
    434         m_pLabel = new QIRichTextLabel;
    435         if (m_pLabel)
     449        /* Create format label: */
     450        m_pLabelFormat = new QIRichTextLabel;
     451        if (m_pLabelFormat)
    436452        {
    437453            /* Add into layout: */
    438             pMainLayout->addWidget(m_pLabel);
     454            pMainLayout->addWidget(m_pLabelFormat);
     455        }
     456
     457        /* Create format layout: */
     458        m_pFormatLayout = new QGridLayout;
     459        if (m_pFormatLayout)
     460        {
     461#ifdef VBOX_WS_MAC
     462            m_pFormatLayout->setContentsMargins(0, 10, 0, 10);
     463            m_pFormatLayout->setSpacing(10);
     464#else
     465            m_pFormatLayout->setContentsMargins(0, qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
     466                                                0, qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
     467#endif
     468            m_pFormatLayout->setColumnStretch(0, 0);
     469            m_pFormatLayout->setColumnStretch(1, 1);
     470
     471            /* Create format combo-box: */
     472            m_pFormatComboBox = new QComboBox;
     473            if (m_pFormatComboBox)
     474            {
     475                /* Add into layout: */
     476                m_pFormatLayout->addWidget(m_pFormatComboBox, 0, 1);
     477            }
     478            /* Create format combo-box label: */
     479            m_pFormatComboBoxLabel = new QLabel;
     480            if (m_pFormatComboBoxLabel)
     481            {
     482                m_pFormatComboBoxLabel->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);
     483                m_pFormatComboBoxLabel->setBuddy(m_pFormatComboBox);
     484
     485                /* Add into layout: */
     486                m_pFormatLayout->addWidget(m_pFormatComboBoxLabel, 0, 0);
     487            }
     488
     489            /* Add into layout: */
     490            pMainLayout->addLayout(m_pFormatLayout);
     491        }
     492
     493        /* Create settings label: */
     494        m_pLabelSettings = new QIRichTextLabel;
     495        if (m_pLabelSettings)
     496        {
     497            /* Add into layout: */
     498            pMainLayout->addWidget(m_pLabelSettings);
    439499        }
    440500
     
    448508            {
    449509                /* Create settings layout 1: */
    450                 QGridLayout *pSettingsLayout1 = new QGridLayout(pSettingsPane1);
    451                 if (pSettingsLayout1)
     510                m_pSettingsLayout1 = new QGridLayout(pSettingsPane1);
     511                if (m_pSettingsLayout1)
    452512                {
    453513#ifdef VBOX_WS_MAC
    454                     pSettingsLayout1->setContentsMargins(0, 10, 0, 10);
    455                     pSettingsLayout1->setSpacing(10);
     514                    m_pSettingsLayout1->setContentsMargins(0, 10, 0, 10);
     515                    m_pSettingsLayout1->setSpacing(10);
    456516#else
    457                     pSettingsLayout1->setContentsMargins(0, qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
    458                                                          0, qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
     517                    m_pSettingsLayout1->setContentsMargins(0, qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
     518                                                           0, qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
    459519#endif
    460                     pSettingsLayout1->setColumnStretch(0, 0);
    461                     pSettingsLayout1->setColumnStretch(1, 1);
     520                    m_pSettingsLayout1->setColumnStretch(0, 0);
     521                    m_pSettingsLayout1->setColumnStretch(1, 1);
    462522
    463523                    /* Create file selector: */
     
    471531
    472532                        /* Add into layout: */
    473                         pSettingsLayout1->addWidget(m_pFileSelector, 0, 1, 1, 2);
     533                        m_pSettingsLayout1->addWidget(m_pFileSelector, 0, 1, 1, 2);
    474534                    }
    475535                    /* Create file selector label: */
     
    481541
    482542                        /* Add into layout: */
    483                         pSettingsLayout1->addWidget(m_pFileSelectorLabel, 0, 0);
    484                     }
    485 
    486                     /* Create format combo-box: */
    487                     m_pFormatComboBox = new QComboBox;
    488                     if (m_pFormatComboBox)
    489                     {
    490                         /* Add into layout: */
    491                         pSettingsLayout1->addWidget(m_pFormatComboBox, 1, 1, 1, 2);
    492                     }
    493                     /* Create format combo-box label: */
    494                     m_pFormatComboBoxLabel = new QLabel;
    495                     if (m_pFormatComboBoxLabel)
    496                     {
    497                         m_pFormatComboBoxLabel->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);
    498                         m_pFormatComboBoxLabel->setBuddy(m_pFormatComboBox);
    499 
    500                         /* Add into layout: */
    501                         pSettingsLayout1->addWidget(m_pFormatComboBoxLabel, 1, 0);
     543                        m_pSettingsLayout1->addWidget(m_pFileSelectorLabel, 0, 0);
    502544                    }
    503545
     
    507549                    {
    508550                        /* Add into layout: */
    509                         pSettingsLayout1->addWidget(m_pMACComboBox, 2, 1, 1, 2);
     551                        m_pSettingsLayout1->addWidget(m_pMACComboBox, 1, 1, 1, 2);
    510552                    }
    511553                    /* Create format combo-box label: */
     
    517559
    518560                        /* Add into layout: */
    519                         pSettingsLayout1->addWidget(m_pMACComboBoxLabel, 2, 0);
     561                        m_pSettingsLayout1->addWidget(m_pMACComboBoxLabel, 1, 0);
    520562                    }
    521563
     
    527569
    528570                        /* Add into layout: */
    529                         pSettingsLayout1->addWidget(m_pAdditionalLabel, 3, 0);
     571                        m_pSettingsLayout1->addWidget(m_pAdditionalLabel, 2, 0);
    530572                    }
    531573                    /* Create manifest check-box: */
     
    534576                    {
    535577                        /* Add into layout: */
    536                         pSettingsLayout1->addWidget(m_pManifestCheckbox, 3, 1);
     578                        m_pSettingsLayout1->addWidget(m_pManifestCheckbox, 2, 1);
    537579                    }
    538580                    /* Create include ISOs check-box: */
     
    541583                    {
    542584                        /* Add into layout: */
    543                         pSettingsLayout1->addWidget(m_pIncludeISOsCheckbox, 4, 1);
     585                        m_pSettingsLayout1->addWidget(m_pIncludeISOsCheckbox, 3, 1);
    544586                    }
    545587
     
    549591                    {
    550592                        /* Add into layout: */
    551                         pSettingsLayout1->addWidget(pPlaceholder, 5, 0, 1, 3);
     593                        m_pSettingsLayout1->addWidget(pPlaceholder, 4, 0, 1, 3);
    552594                    }
    553595                }
     
    562604            {
    563605                /* Create settings layout 2: */
    564                 QGridLayout *pSettingsLayout2 = new QGridLayout(pSettingsPane2);
    565                 if (pSettingsLayout2)
     606                m_pSettingsLayout2 = new QGridLayout(pSettingsPane2);
     607                if (m_pSettingsLayout2)
    566608                {
    567609#ifdef VBOX_WS_MAC
    568                     pSettingsLayout2->setContentsMargins(0, 10, 0, 10);
    569                     pSettingsLayout2->setSpacing(10);
     610                    m_pSettingsLayout2->setContentsMargins(0, 10, 0, 10);
     611                    m_pSettingsLayout2->setSpacing(10);
    570612
    571613#else
    572                     pSettingsLayout2->setContentsMargins(0, qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
    573                                                          0, qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
     614                    m_pSettingsLayout2->setContentsMargins(0, qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
     615                                                           0, qApp->style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
    574616#endif
    575                     pSettingsLayout2->setColumnStretch(0, 0);
    576                     pSettingsLayout2->setColumnStretch(1, 1);
     617                    m_pSettingsLayout2->setColumnStretch(0, 0);
     618                    m_pSettingsLayout2->setColumnStretch(1, 1);
    577619
    578620                    /* Create provider combo-box: */
     
    581623                    {
    582624                        /* Add into layout: */
    583                         pSettingsLayout2->addWidget(m_pAccountComboBox, 0, 1);
     625                        m_pSettingsLayout2->addWidget(m_pAccountComboBox, 0, 1);
    584626                    }
    585627                    /* Create provider label: */
     
    591633
    592634                        /* Add into layout: */
    593                         pSettingsLayout2->addWidget(m_pAccountComboBoxLabel, 0, 0);
     635                        m_pSettingsLayout2->addWidget(m_pAccountComboBoxLabel, 0, 0);
    594636                    }
    595637                    /* Create profile property table: */
     
    603645                        const int iTotalHeight = 4 * iFontHeight;
    604646                        m_pAccountPropertyTable->setMinimumSize(QSize(iTotalWidth, iTotalHeight));
    605                         m_pAccountPropertyTable->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     647//                        m_pAccountPropertyTable->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    606648                        m_pAccountPropertyTable->setAlternatingRowColors(true);
    607649                        m_pAccountPropertyTable->horizontalHeader()->setVisible(false);
     
    610652
    611653                        /* Add into layout: */
    612                         pSettingsLayout2->addWidget(m_pAccountPropertyTable, 1, 1);
     654                        m_pSettingsLayout2->addWidget(m_pAccountPropertyTable, 1, 1);
    613655                    }
    614656                }
     
    642684
    643685    /* Register fields: */
     686    registerField("format", this, "format");
    644687    registerField("path", this, "path");
    645     registerField("format", this, "format");
    646688    registerField("macAddressPolicy", this, "macAddressPolicy");
    647689    registerField("manifestSelected", this, "manifestSelected");
     
    676718    /* Translate objects: */
    677719    m_strDefaultApplianceName = UIWizardExportApp::tr("Appliance");
     720
     721    /* Translate format label: */
     722    m_pLabelFormat->setText(tr("<p>Please choose a format to export the virtual appliance to.</p>"
     723                               "<p>The <b>Open Virtualization Format</b> supports only <b>ovf</b> or <b>ova</b> extensions. "
     724                               "If you use the <b>ovf</b> extension, several files will be written separately. "
     725                               "If you use the <b>ova</b> extension, all the files will be combined into one Open "
     726                               "Virtualization Format archive.</p>"
     727                               "<p>The <b>Oracle Public Cloud Format</b> supports only the <b>tar.gz</b> extension. "
     728                               "Each virtual disk file will be written separately.</p>"
     729                               "<p>The <b>Cloud Service Provider Format</b> supports exporting to remote cloud services only. "
     730                               "Main virtual disk of each selected machine will be uploaded to remote server.</p>"));
    678731
    679732    /* Translate file selector: */
     
    688741    m_pFormatComboBox->setItemText(2, UIWizardExportApp::tr("Open Virtualization Format 2.0"));
    689742    m_pFormatComboBox->setItemText(3, UIWizardExportApp::tr("Oracle Public Cloud Format 1.0"));
     743    m_pFormatComboBox->setItemText(4, UIWizardExportApp::tr("Cloud Service Provider"));
    690744    m_pFormatComboBox->setItemData(0, UIWizardExportApp::tr("Write in legacy OVF 0.9 format for compatibility "
    691745                                                            "with other virtualization products."), Qt::ToolTipRole);
     
    693747    m_pFormatComboBox->setItemData(2, UIWizardExportApp::tr("Write in new OVF 2.0 format."), Qt::ToolTipRole);
    694748    m_pFormatComboBox->setItemData(3, UIWizardExportApp::tr("Write in Oracle Public Cloud 1.0 format."), Qt::ToolTipRole);
     749    m_pFormatComboBox->setItemData(4, UIWizardExportApp::tr("Export to Cloud Service Provider."), Qt::ToolTipRole);
    695750
    696751    /* Translate MAC address policy combo-box: */
     
    736791    }
    737792
     793    /* Adjust label widths: */
     794    QList<QWidget*> labels;
     795    labels << m_pFormatComboBoxLabel;
     796    labels << m_pFileSelectorLabel;
     797    labels << m_pMACComboBoxLabel;
     798    labels << m_pAdditionalLabel;
     799    labels << m_pAccountComboBoxLabel;
     800    int iMaxWidth = 0;
     801    foreach (QWidget *pLabel, labels)
     802        iMaxWidth = qMax(iMaxWidth, pLabel->minimumSizeHint().width());
     803    m_pFormatLayout->setColumnMinimumWidth(0, iMaxWidth);
     804    m_pSettingsLayout1->setColumnMinimumWidth(0, iMaxWidth);
     805    m_pSettingsLayout2->setColumnMinimumWidth(0, iMaxWidth);
     806
    738807    /* Refresh file selector name: */
    739808    refreshFileSelectorName();
     
    776845                          || field("format").toString() == "ovf-2.0";
    777846        const bool fOPC =    field("format").toString() == "opc-1.0";
     847        const bool fCSP =    field("format").toString() == "csp-1.0";
    778848
    779849        fResult =    (   fOVF
    780850                      && VBoxGlobal::hasAllowedExtension(strFile, OVFFileExts))
    781851                  || (   fOPC
    782                       && VBoxGlobal::hasAllowedExtension(strFile, OPCFileExts));
     852                      && VBoxGlobal::hasAllowedExtension(strFile, OPCFileExts))
     853                  || fCSP;
    783854    }
    784855
     
    792863
    793864    /* Update page appearance according to chosen storage-type: */
    794     const StorageType enmStorageType = field("storageType").value<StorageType>();
    795     switch (enmStorageType)
    796     {
    797         case LocalFilesystem:
    798         {
    799             m_pLabel->setText(tr("<p>Please choose a filename to export the virtual appliance to.</p>"
    800                                  "<p>The <b>Open Virtualization Format</b> supports only <b>ovf</b> or <b>ova</b> extensions. "
    801                                  "If you use the <b>ovf</b> extension, several files will be written separately. "
    802                                  "If you use the <b>ova</b> extension, all the files will be combined into one Open "
    803                                  "Virtualization Format archive.</p>"
    804                                  "<p>The <b>Oracle Public Cloud Format</b> supports only the <b>tar.gz</b> extension. "
    805                                  "Each virtual disk file will be written separately.</p>"));
    806             m_pFileSelector->setFocus();
    807             break;
    808         }
    809         case CloudProvider:
    810         {
    811             m_pLabel->setText(tr("<p>Please choose a cloud service <b>provider</b> and one of its <b>profiles</b> you have "
    812                                  "registered to export virtual machines to.</p>"
    813                                  "<p>Make sure profile settings reflected in the underlying table are valid. "
    814                                  "They will be used to establish network connection required to upload your virtual machine "
    815                                  "files to remote cloud facility."));
    816             m_pAccountComboBox->setFocus();
    817             break;
    818         }
     865    if (field("format").toString() == "csp-1.0")
     866    {
     867        m_pLabelSettings->setText(tr("<p>Please choose one of cloud service accounts you have registered to export virtual "
     868                                     "machines to.  Make sure profile settings reflected in the underlying table are valid.  "
     869                                     "They will be used to establish network connection required to upload your virtual machine "
     870                                     "files to a remote cloud facility."));
     871        m_pAccountComboBox->setFocus();
     872    }
     873    else
     874    {
     875        m_pLabelSettings->setText(tr("<p>Please choose a filename to export the virtual appliance to. Besides that you can "
     876                                     "specify a certain amount of options which affects the size and content of resulting "
     877                                     "archive.</p>"));
     878        m_pFileSelector->setFocus();
    819879    }
    820880}
     
    826886
    827887    /* Refresh required settings: */
     888    updatePageAppearance();
    828889    refreshFileSelectorExtension();
    829890    refreshManifestCheckBoxAccess();
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic3.h

    r73226 r73236  
    3232class QCheckBox;
    3333class QComboBox;
     34class QGridLayout;
    3435class QLabel;
    3536class QLineEdit;
     
    9899    void adjustAccountPropertyTable();
    99100
     101    /** Returns format. */
     102    QString format() const;
     103    /** Defines @a strFormat. */
     104    void setFormat(const QString &strFormat);
     105
    100106    /** Returns path. */
    101107    QString path() const;
    102108    /** Defines @a strPath. */
    103109    void setPath(const QString &strPath);
    104 
    105     /** Returns format. */
    106     QString format() const;
    107     /** Defines @a strFormat. */
    108     void setFormat(const QString &strFormat);
    109110
    110111    /** Returns MAC address policy. */
     
    141142    QString  m_strFileSelectorExt;
    142143
     144    /** Holds the format layout. */
     145    QGridLayout *m_pFormatLayout;
     146    /** Holds the settings layout 1. */
     147    QGridLayout *m_pSettingsLayout1;
     148    /** Holds the settings layout 2. */
     149    QGridLayout *m_pSettingsLayout2;
     150
     151    /** Holds the format combo-box label instance. */
     152    QLabel    *m_pFormatComboBoxLabel;
     153    /** Holds the format combo-box instance. */
     154    QComboBox *m_pFormatComboBox;
     155
    143156    /** Holds the settings widget instance. */
    144157    QStackedWidget *m_pSettingsWidget;
     
    148161    /** Holds the file selector instance. */
    149162    UIEmptyFilePathSelector *m_pFileSelector;
    150 
    151     /** Holds the format combo-box label instance. */
    152     QLabel    *m_pFormatComboBoxLabel;
    153     /** Holds the format combo-box instance. */
    154     QComboBox *m_pFormatComboBox;
    155163
    156164    /** Holds the MAC address policy combo-box label instance. */
     
    179187{
    180188    Q_OBJECT;
     189    Q_PROPERTY(QString format READ format WRITE setFormat);
    181190    Q_PROPERTY(QString path READ path WRITE setPath);
    182     Q_PROPERTY(QString format READ format WRITE setFormat);
    183191    Q_PROPERTY(MACAddressPolicy macAddressPolicy READ macAddressPolicy WRITE setMACAddressPolicy);
    184192    Q_PROPERTY(bool manifestSelected READ isManifestSelected WRITE setManifestSelected);
     
    223231private:
    224232
    225     /** Holds the label instance. */
    226     QIRichTextLabel *m_pLabel;
     233    /** Holds the format label instance. */
     234    QIRichTextLabel *m_pLabelFormat;
     235
     236    /** Holds the settings label instance. */
     237    QIRichTextLabel *m_pLabelSettings;
    227238};
    228239
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageExpert.cpp

    r73234 r73236  
    148148            if (pSettingsCntLayout)
    149149            {
    150                 pSettingsCntLayout->setContentsMargins(0, 0, 0, 0);
    151150#ifdef VBOX_WS_MAC
    152151                pSettingsCntLayout->setSpacing(5);
    153152#endif
     153
     154                /* Create format layout: */
     155                m_pFormatLayout = new QGridLayout;
     156                if (m_pFormatLayout)
     157                {
     158                    m_pFormatLayout->setContentsMargins(0, 0, 0, 0);
     159#ifdef VBOX_WS_MAC
     160                    m_pFormatLayout->setSpacing(10);
     161#endif
     162                    m_pFormatLayout->setColumnStretch(0, 0);
     163                    m_pFormatLayout->setColumnStretch(1, 1);
     164
     165                    /* Create format combo-box: */
     166                    m_pFormatComboBox = new QComboBox;
     167                    if (m_pFormatComboBox)
     168                    {
     169                        /* Add into layout: */
     170                        m_pFormatLayout->addWidget(m_pFormatComboBox, 0, 1);
     171                    }
     172                    /* Create format combo-box label: */
     173                    m_pFormatComboBoxLabel = new QLabel;
     174                    if (m_pFormatComboBoxLabel)
     175                    {
     176                        m_pFormatComboBoxLabel->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);
     177                        m_pFormatComboBoxLabel->setBuddy(m_pFormatComboBox);
     178
     179                        /* Add into layout: */
     180                        m_pFormatLayout->addWidget(m_pFormatComboBoxLabel, 0, 0);
     181                    }
     182
     183                    /* Add into layout: */
     184                    pSettingsCntLayout->addLayout(m_pFormatLayout);
     185                }
    154186
    155187                /* Create settings widget: */
     
    162194                    {
    163195                        /* Create settings layout 1: */
    164                         QGridLayout *pSettingsLayout1 = new QGridLayout(pSettingsPane1);
    165                         if (pSettingsLayout1)
     196                        m_pSettingsLayout1 = new QGridLayout(pSettingsPane1);
     197                        if (m_pSettingsLayout1)
    166198                        {
    167199#ifdef VBOX_WS_MAC
    168                             pSettingsLayout1->setSpacing(10);
     200                            m_pSettingsLayout1->setSpacing(10);
    169201#endif
    170                             pSettingsLayout1->setContentsMargins(0, 0, 0, 0);
    171                             pSettingsLayout1->setColumnStretch(0, 0);
    172                             pSettingsLayout1->setColumnStretch(1, 1);
     202                            m_pSettingsLayout1->setContentsMargins(0, 0, 0, 0);
     203                            m_pSettingsLayout1->setColumnStretch(0, 0);
     204                            m_pSettingsLayout1->setColumnStretch(1, 1);
    173205
    174206                            /* Create file selector: */
     
    182214
    183215                                /* Add into layout: */
    184                                 pSettingsLayout1->addWidget(m_pFileSelector, 0, 1, 1, 2);
     216                                m_pSettingsLayout1->addWidget(m_pFileSelector, 0, 1, 1, 2);
    185217                            }
    186218                            /* Create file selector label: */
     
    192224
    193225                                /* Add into layout: */
    194                                 pSettingsLayout1->addWidget(m_pFileSelectorLabel, 0, 0);
    195                             }
    196 
    197                             /* Create format combo-box editor: */
    198                             m_pFormatComboBox = new QComboBox;
    199                             if (m_pFormatComboBox)
    200                             {
    201                                 /* Add into layout: */
    202                                 pSettingsLayout1->addWidget(m_pFormatComboBox, 1, 1, 1, 2);
    203                             }
    204                             /* Create format combo-box label: */
    205                             m_pFormatComboBoxLabel = new QLabel;
    206                             if (m_pFormatComboBoxLabel)
    207                             {
    208                                 m_pFormatComboBoxLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    209                                 m_pFormatComboBoxLabel->setBuddy(m_pFormatComboBox);
    210 
    211                                 /* Add into layout: */
    212                                 pSettingsLayout1->addWidget(m_pFormatComboBoxLabel, 1, 0);
     226                                m_pSettingsLayout1->addWidget(m_pFileSelectorLabel, 0, 0);
    213227                            }
    214228
     
    218232                            {
    219233                                /* Add into layout: */
    220                                 pSettingsLayout1->addWidget(m_pMACComboBox, 2, 1, 1, 2);
     234                                m_pSettingsLayout1->addWidget(m_pMACComboBox, 1, 1, 1, 2);
    221235                            }
    222236                            /* Create format combo-box label: */
     
    228242
    229243                                /* Add into layout: */
    230                                 pSettingsLayout1->addWidget(m_pMACComboBoxLabel, 2, 0);
     244                                m_pSettingsLayout1->addWidget(m_pMACComboBoxLabel, 1, 0);
    231245                            }
    232246
     
    238252
    239253                                /* Add into layout: */
    240                                 pSettingsLayout1->addWidget(m_pAdditionalLabel, 3, 0);
     254                                m_pSettingsLayout1->addWidget(m_pAdditionalLabel, 2, 0);
    241255                            }
    242256                            /* Create manifest check-box editor: */
     
    245259                            {
    246260                                /* Add into layout: */
    247                                 pSettingsLayout1->addWidget(m_pManifestCheckbox, 3, 1);
     261                                m_pSettingsLayout1->addWidget(m_pManifestCheckbox, 2, 1);
    248262                            }
    249263                            /* Create include ISOs check-box: */
     
    252266                            {
    253267                                /* Add into layout: */
    254                                 pSettingsLayout1->addWidget(m_pIncludeISOsCheckbox, 4, 1);
     268                                m_pSettingsLayout1->addWidget(m_pIncludeISOsCheckbox, 3, 1);
    255269                            }
    256270
     
    260274                            {
    261275                                /* Add into layout: */
    262                                 pSettingsLayout1->addWidget(pPlaceholder, 5, 0, 1, 3);
     276                                m_pSettingsLayout1->addWidget(pPlaceholder, 4, 0, 1, 3);
    263277                            }
    264278                        }
     
    273287                    {
    274288                        /* Create settings layout 2: */
    275                         QGridLayout *pSettingsLayout2 = new QGridLayout(pSettingsPane2);
    276                         if (pSettingsLayout2)
     289                        m_pSettingsLayout2 = new QGridLayout(pSettingsPane2);
     290                        if (m_pSettingsLayout2)
    277291                        {
    278292#ifdef VBOX_WS_MAC
    279                             pSettingsLayout2->setSpacing(10);
     293                            m_pSettingsLayout2->setSpacing(10);
    280294#endif
    281                             pSettingsLayout2->setContentsMargins(0, 0, 0, 0);
    282                             pSettingsLayout2->setColumnStretch(0, 0);
    283                             pSettingsLayout2->setColumnStretch(1, 1);
     295                            m_pSettingsLayout2->setContentsMargins(0, 0, 0, 0);
     296                            m_pSettingsLayout2->setColumnStretch(0, 0);
     297                            m_pSettingsLayout2->setColumnStretch(1, 1);
    284298
    285299                            /* Create account combo-box: */
     
    287301                            if (m_pAccountComboBox)
    288302                            {
    289                                 /* Hide it for now: */
    290                                 m_pAccountComboBox->hide();
    291 
    292                                 /* Add into layout: */
    293                                 pSettingsLayout2->addWidget(m_pAccountComboBox, 0, 1);
     303                                /* Add into layout: */
     304                                m_pSettingsLayout2->addWidget(m_pAccountComboBox, 0, 1);
    294305                            }
    295306                            /* Create account label: */
     
    297308                            if (m_pAccountComboBoxLabel)
    298309                            {
    299                                 /* Hide it for now: */
    300                                 m_pAccountComboBoxLabel->hide();
    301 
    302310                                m_pAccountComboBoxLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
    303311                                m_pAccountComboBoxLabel->setBuddy(m_pAccountComboBox);
    304312
    305313                                /* Add into layout: */
    306                                 pSettingsLayout2->addWidget(m_pAccountComboBoxLabel, 0, 0);
     314                                m_pSettingsLayout2->addWidget(m_pAccountComboBoxLabel, 0, 0);
    307315                            }
    308316                            /* Create account property table: */
     
    323331
    324332                                /* Add into layout: */
    325                                 pSettingsLayout2->addWidget(m_pAccountPropertyTable, 1, 1);
     333                                m_pSettingsLayout2->addWidget(m_pAccountPropertyTable, 1, 1);
    326334                            }
    327335                        }
     
    374382    registerField("machineIDs", this, "machineIDs");
    375383    registerField("storageType", this, "storageType");
     384    registerField("format", this, "format");
    376385    registerField("path", this, "path");
    377     registerField("format", this, "format");
    378386    registerField("macAddressPolicy", this, "macAddressPolicy");
    379387    registerField("manifestSelected", this, "manifestSelected");
     
    428436    m_pFormatComboBox->setItemText(2, UIWizardExportApp::tr("Open Virtualization Format 2.0"));
    429437    m_pFormatComboBox->setItemText(3, UIWizardExportApp::tr("Oracle Public Cloud Format 1.0"));
     438    m_pFormatComboBox->setItemText(4, UIWizardExportApp::tr("Cloud Service Provider"));
    430439    m_pFormatComboBox->setItemData(0, UIWizardExportApp::tr("Write in legacy OVF 0.9 format for compatibility "
    431440                                                            "with other virtualization products."), Qt::ToolTipRole);
     
    433442    m_pFormatComboBox->setItemData(2, UIWizardExportApp::tr("Write in new OVF 2.0 format."), Qt::ToolTipRole);
    434443    m_pFormatComboBox->setItemData(3, UIWizardExportApp::tr("Write in Oracle Public Cloud 1.0 format."), Qt::ToolTipRole);
     444    m_pFormatComboBox->setItemData(4, UIWizardExportApp::tr("Export to Cloud Service Provider."), Qt::ToolTipRole);
    435445
    436446    /* Translate MAC address policy combo-box: */
     
    476486    }
    477487
     488    /* Adjust label widths: */
     489    QList<QWidget*> labels;
     490    labels << m_pFormatComboBoxLabel;
     491    labels << m_pFileSelectorLabel;
     492    labels << m_pMACComboBoxLabel;
     493    labels << m_pAdditionalLabel;
     494    labels << m_pAccountComboBoxLabel;
     495    int iMaxWidth = 0;
     496    foreach (QWidget *pLabel, labels)
     497        iMaxWidth = qMax(iMaxWidth, pLabel->minimumSizeHint().width());
     498    m_pFormatLayout->setColumnMinimumWidth(0, iMaxWidth);
     499    m_pSettingsLayout1->setColumnMinimumWidth(0, iMaxWidth);
     500    m_pSettingsLayout2->setColumnMinimumWidth(0, iMaxWidth);
     501
    478502    /* Refresh file selector name: */
    479503    refreshFileSelectorName();
     
    519543                          || field("format").toString() == "ovf-2.0";
    520544        const bool fOPC =    field("format").toString() == "opc-1.0";
     545        const bool fCSP =    field("format").toString() == "csp-1.0";
    521546
    522547        fResult =    (   fOVF
    523548                      && VBoxGlobal::hasAllowedExtension(strFile, OVFFileExts))
    524549                  || (   fOPC
    525                       && VBoxGlobal::hasAllowedExtension(strFile, OPCFileExts));
     550                      && VBoxGlobal::hasAllowedExtension(strFile, OPCFileExts))
     551                  || fCSP;
    526552    }
    527553
     
    572598
    573599    /* Refresh required settings: */
     600    updatePageAppearance();
    574601    refreshFileSelectorExtension();
    575602    refreshManifestCheckBoxAccess();
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageExpert.h

    r73226 r73236  
    4141    Q_PROPERTY(QStringList machineIDs READ machineIDs);
    4242    Q_PROPERTY(StorageType storageType READ storageType WRITE setStorageType);
     43    Q_PROPERTY(QString format READ format WRITE setFormat);
    4344    Q_PROPERTY(QString path READ path WRITE setPath);
    44     Q_PROPERTY(QString format READ format WRITE setFormat);
    4545    Q_PROPERTY(MACAddressPolicy macAddressPolicy READ macAddressPolicy WRITE setMACAddressPolicy);
    4646    Q_PROPERTY(bool manifestSelected READ isManifestSelected WRITE setManifestSelected);
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