VirtualBox

Changeset 90327 in vbox for trunk/src


Ignore:
Timestamp:
Jul 26, 2021 9:54:34 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145890
Message:

FE/Qt: bugref:10067: Notification signature for final New Virtual Disk wizard progress which should now go to center instead of modal dialog.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp

    r90325 r90327  
    5555
    5656/*********************************************************************************************************************************
     57*   Class UINotificationProgressMediumCreate implementation.                                                                     *
     58*********************************************************************************************************************************/
     59
     60UINotificationProgressMediumCreate::UINotificationProgressMediumCreate(const CMedium &comTarget,
     61                                                                       qulonglong uSize,
     62                                                                       const QVector<KMediumVariant> &variants)
     63    : m_comTarget(comTarget)
     64    , m_uSize(uSize)
     65    , m_variants(variants)
     66{
     67    connect(this, &UINotificationProgress::sigProgressFinished,
     68            this, &UINotificationProgressMediumCreate::sltHandleProgressFinished);
     69}
     70
     71QString UINotificationProgressMediumCreate::name() const
     72{
     73    return UINotificationProgress::tr("Creating medium ...");
     74}
     75
     76QString UINotificationProgressMediumCreate::details() const
     77{
     78    return UINotificationProgress::tr("<b>Location:</b> %1<br><b>Size:</b> %2")
     79                                     .arg(m_comTarget.GetLocation()).arg(m_uSize);
     80}
     81
     82CProgress UINotificationProgressMediumCreate::createProgress(COMResult &comResult)
     83{
     84    /* Initialize progress-wrapper: */
     85    CProgress comProgress = m_comTarget.CreateBaseStorage(m_uSize, m_variants);
     86    /* Store COM result: */
     87    comResult = m_comTarget;
     88    /* Return progress-wrapper: */
     89    return comProgress;
     90}
     91
     92void UINotificationProgressMediumCreate::sltHandleProgressFinished()
     93{
     94    if (m_comTarget.isNotNull() && !m_comTarget.GetId().isNull())
     95        emit sigMediumCreated(m_comTarget);
     96}
     97
     98
     99/*********************************************************************************************************************************
    57100*   Class UINotificationProgressMediumCopy implementation.                                                                       *
    58101*********************************************************************************************************************************/
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h

    r90325 r90327  
    6767};
    6868
     69/** UINotificationProgress extension for medium create functionality. */
     70class SHARED_LIBRARY_STUFF UINotificationProgressMediumCreate : public UINotificationProgress
     71{
     72    Q_OBJECT;
     73
     74signals:
     75
     76    /** Notifies listeners about @a comMedium was created. */
     77    void sigMediumCreated(const CMedium &comMedium);
     78
     79public:
     80
     81    /** Constructs medium create notification-progress.
     82      * @param  comTarget  Brings the medium being the target.
     83      * @param  uSize      Brings the target medium size.
     84      * @param  variants   Brings the target medium options. */
     85    UINotificationProgressMediumCreate(const CMedium &comTarget,
     86                                       qulonglong uSize,
     87                                       const QVector<KMediumVariant> &variants);
     88
     89protected:
     90
     91    /** Returns object name. */
     92    virtual QString name() const /* override final */;
     93    /** Returns object details. */
     94    virtual QString details() const /* override final */;
     95    /** Creates and returns started progress-wrapper. */
     96    virtual CProgress createProgress(COMResult &comResult) /* override final */;
     97
     98private slots:
     99
     100    /** Handles signal about progress being finished. */
     101    void sltHandleProgressFinished();
     102
     103private:
     104
     105    /** Holds the medium being the target. */
     106    CMedium                  m_comTarget;
     107    /** Holds the target medium size. */
     108    qulonglong               m_uSize;
     109    /** Holds the target medium options. */
     110    QVector<KMediumVariant>  m_variants;
     111};
     112
    69113/** UINotificationProgress extension for medium copy functionality. */
    70114class SHARED_LIBRARY_STUFF UINotificationProgressMediumCopy : public UINotificationProgress
     
    79123public:
    80124
    81     /** Constructs medium move notification-progress.
     125    /** Constructs medium copy notification-progress.
    82126      * @param  comSource  Brings the medium being copied.
    83127      * @param  comTarget  Brings the medium being the target.
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.cpp

    r88599 r90327  
    1919#include <QVariant>
    2020#include <QPushButton>
     21
    2122/* GUI includes: */
    2223#include "UICommon.h"
     24#include "UIMedium.h"
     25#include "UIMessageCenter.h"
     26#include "UINotificationCenter.h"
    2327#include "UIWizardNewVD.h"
    2428#include "UIWizardNewVDPageFileType.h"
     
    2630#include "UIWizardNewVDPageSizeLocation.h"
    2731#include "UIWizardNewVDPageExpert.h"
    28 #include "UIMessageCenter.h"
    29 #include "UIMedium.h"
    3032
    3133/* COM includes: */
     
    5456{
    5557    /* Gather attributes: */
    56     CMediumFormat mediumFormat = field("mediumFormat").value<CMediumFormat>();
    57     qulonglong uVariant = field("mediumVariant").toULongLong();
    58     QString strMediumPath = field("mediumPath").toString();
    59     qulonglong uSize = field("mediumSize").toULongLong();
     58    const CMediumFormat comMediumFormat = field("mediumFormat").value<CMediumFormat>();
     59    const qulonglong uVariant = field("mediumVariant").toULongLong();
     60    const QString strMediumPath = field("mediumPath").toString();
     61    const qulonglong uSize = field("mediumSize").toULongLong();
    6062    /* Check attributes: */
    6163    AssertReturn(!strMediumPath.isNull(), false);
     
    6365
    6466    /* Get VBox object: */
    65     CVirtualBox vbox = uiCommon().virtualBox();
     67    CVirtualBox comVBox = uiCommon().virtualBox();
    6668
    67     /* Create new virtual hard-disk: */
    68     CMedium virtualDisk = vbox.CreateMedium(mediumFormat.GetName(), strMediumPath, KAccessMode_ReadWrite, KDeviceType_HardDisk);
    69     if (!vbox.isOk())
     69    /* Create new virtual disk image: */
     70    CMedium comVirtualDisk = comVBox.CreateMedium(comMediumFormat.GetName(), strMediumPath, KAccessMode_ReadWrite, KDeviceType_HardDisk);
     71    if (!comVBox.isOk())
    7072    {
    71         msgCenter().cannotCreateHardDiskStorage(vbox, strMediumPath, this);
     73        msgCenter().cannotCreateMediumStorage(comVBox, strMediumPath, this);
    7274        return false;
    7375    }
    7476
    7577    /* Compose medium-variant: */
    76     QVector<KMediumVariant> variants(sizeof(qulonglong)*8);
     78    QVector<KMediumVariant> variants(sizeof(qulonglong) * 8);
    7779    for (int i = 0; i < variants.size(); ++i)
    7880    {
    7981        qulonglong temp = uVariant;
    80         temp &= UINT64_C(1)<<i;
     82        temp &= Q_UINT64_C(1) << i;
    8183        variants[i] = (KMediumVariant)temp;
    8284    }
    8385
    84     /* Create base storage for the new virtual-disk: */
    85     CProgress progress = virtualDisk.CreateBaseStorage(uSize, variants);
    86     if (!virtualDisk.isOk())
    87     {
    88         msgCenter().cannotCreateHardDiskStorage(virtualDisk, strMediumPath, this);
    89         return false;
    90     }
     86    /* Copy medium: */
     87    UINotificationProgressMediumCreate *pNotification = new UINotificationProgressMediumCreate(comVirtualDisk,
     88                                                                                               uSize,
     89                                                                                               variants);
     90    connect(pNotification, &UINotificationProgressMediumCreate::sigMediumCreated,
     91            &uiCommon(), &UICommon::sltHandleMediumCreated);
     92    notificationCenter().append(pNotification);
    9193
    92     /* Show creation progress: */
    93     msgCenter().showModalProgressDialog(progress, windowTitle(), ":/progress_media_create_90px.png", this);
    94     if (progress.GetCanceled())
    95         return false;
    96     if (!progress.isOk() || progress.GetResultCode() != 0)
    97     {
    98         msgCenter().cannotCreateHardDiskStorage(progress, strMediumPath, this);
    99         return false;
    100     }
    101 
    102     /* Remember created virtual-disk: */
    103     m_virtualDisk = virtualDisk;
    104 
    105     /* Inform UICommon about it: */
    106     uiCommon().createMedium(UIMedium(m_virtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
    107 
     94    /* Positive: */
    10895    return true;
    10996}
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h

    r88599 r90327  
    5959    void prepare();
    6060
    61     /* Returns virtual-disk: */
    62     CMedium virtualDisk() const { return m_virtualDisk; }
    63 
    6461protected:
    6562
     
    7774
    7875    /* Variables: */
    79     QString m_strDefaultName;
    80     QString m_strDefaultPath;
    81     qulonglong m_uDefaultSize;
    82     CMedium m_virtualDisk;
     76    QString     m_strDefaultName;
     77    QString     m_strDefaultPath;
     78    qulonglong  m_uDefaultSize;
    8379};
    8480
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