VirtualBox

Changeset 90301 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jul 23, 2021 12:47:15 PM (4 years ago)
Author:
vboxsync
Message:

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

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

Legend:

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

    r90086 r90301  
    41494149}
    41504150
     4151void UICommon::sltHandleMediumCreated(const CMedium &comMedium)
     4152{
     4153    /* Make sure we cached created medium in GUI: */
     4154    createMedium(UIMedium(comMedium, UIMediumDeviceType_HardDisk, KMediumState_Created));
     4155}
     4156
    41514157bool UICommon::eventFilter(QObject *pObject, QEvent *pEvent)
    41524158{
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h

    r90086 r90301  
    729729    /** @} */
    730730
     731    /** @name Media related stuff.
     732     * @{ */
     733        /** Handles signal about medium was created. */
     734        void sltHandleMediumCreated(const CMedium &comMedium);
     735    /** @} */
     736
    731737protected:
    732738
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.cpp

    r90300 r90301  
    1919#include "UINotificationObjects.h"
    2020
     21
     22/*********************************************************************************************************************************
     23*   Class UINotificationProgressMediumMove implementation.                                                                       *
     24*********************************************************************************************************************************/
    2125
    2226UINotificationProgressMediumMove::UINotificationProgressMediumMove(const CMedium &comMedium,
     
    4852    return comProgress;
    4953}
     54
     55
     56/*********************************************************************************************************************************
     57*   Class UINotificationProgressMediumCopy implementation.                                                                       *
     58*********************************************************************************************************************************/
     59
     60UINotificationProgressMediumCopy::UINotificationProgressMediumCopy(const CMedium &comSource,
     61                                                                   const CMedium &comTarget,
     62                                                                   const QVector<KMediumVariant> &variants)
     63    : m_comSource(comSource)
     64    , m_comTarget(comTarget)
     65    , m_variants(variants)
     66{
     67    connect(this, &UINotificationProgress::sigProgressFinished,
     68            this, &UINotificationProgressMediumCopy::sltHandleProgressFinished);
     69}
     70
     71QString UINotificationProgressMediumCopy::name() const
     72{
     73    return UINotificationProgress::tr("Copying medium ...");
     74}
     75
     76QString UINotificationProgressMediumCopy::details() const
     77{
     78    return UINotificationProgress::tr("<b>From</b>: %1<br><b>To</b>: %2")
     79                                     .arg(m_comSource.GetLocation(), m_comTarget.GetLocation());
     80}
     81
     82CProgress UINotificationProgressMediumCopy::createProgress(COMResult &comResult)
     83{
     84    /* Initialize progress-wrapper: */
     85    CProgress comProgress = m_comSource.CloneTo(m_comTarget, m_variants, CMedium());
     86    /* Store COM result: */
     87    comResult = m_comSource;
     88    /* Return progress-wrapper: */
     89    return comProgress;
     90}
     91
     92void UINotificationProgressMediumCopy::sltHandleProgressFinished()
     93{
     94    if (m_comTarget.isNotNull() && !m_comTarget.GetId().isNull())
     95        emit sigMediumCopied(m_comTarget);
     96}
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjects.h

    r90300 r90301  
    6363};
    6464
     65/** UINotificationProgress extension for medium copy functionality. */
     66class SHARED_LIBRARY_STUFF UINotificationProgressMediumCopy : public UINotificationProgress
     67{
     68    Q_OBJECT;
     69
     70signals:
     71
     72    /** Notifies listeners about @a comMedium was copied. */
     73    void sigMediumCopied(const CMedium &comMedium);
     74
     75public:
     76
     77    /** Constructs medium move notification-progress.
     78      * @param  comSource  Brings the medium being copied.
     79      * @param  comTarget  Brings the medium being the target.
     80      * @param  variants   Brings the target medium options. */
     81    UINotificationProgressMediumCopy(const CMedium &comSource,
     82                                     const CMedium &comTarget,
     83                                     const QVector<KMediumVariant> &variants);
     84
     85protected:
     86
     87    /** Returns object name. */
     88    virtual QString name() const /* override final */;
     89    /** Returns object details. */
     90    virtual QString details() const /* override final */;
     91    /** Creates and returns started progress-wrapper. */
     92    virtual CProgress createProgress(COMResult &comResult) /* override final */;
     93
     94private slots:
     95
     96    /** Handles signal about progress being finished. */
     97    void sltHandleProgressFinished();
     98
     99private:
     100
     101    /** Holds the medium being copied. */
     102    CMedium                  m_comSource;
     103    /** Holds the medium being the target. */
     104    CMedium                  m_comTarget;
     105    /** Holds the target medium options. */
     106    QVector<KMediumVariant>  m_variants;
     107};
     108
    65109#endif /* !FEQT_INCLUDED_SRC_notificationcenter_UINotificationObjects_h */
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVD.cpp

    r90271 r90301  
    2020#include "UIMedium.h"
    2121#include "UIMessageCenter.h"
     22#include "UINotificationCenter.h"
    2223#include "UIWizardCloneVD.h"
    2324#include "UIWizardCloneVDPageBasic1.h"
     
    7576    }
    7677
    77     /* Copy source image to new one: */
    78     CProgress comProgress = m_comSourceVirtualDisk.CloneTo(comVirtualDisk, variants, CMedium());
    79     if (!m_comSourceVirtualDisk.isOk())
    80     {
    81         msgCenter().cannotCreateMediumStorage(m_comSourceVirtualDisk, strMediumPath, this);
    82         return false;
    83     }
    84 
    85     /* Show creation progress: */
    86     msgCenter().showModalProgressDialog(comProgress, windowTitle(), ":/progress_media_create_90px.png", this);
    87     if (comProgress.GetCanceled())
    88         return false;
    89     if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
    90     {
    91         msgCenter().cannotCreateMediumStorage(comProgress, strMediumPath, this);
    92         return false;
    93     }
    94 
    95     /* Make sure we register the medium to VBox: */
    96     uiCommon().createMedium(UIMedium(comVirtualDisk, UIMediumDeviceType_HardDisk, KMediumState_Created));
     78    /* Copy medium: */
     79    UINotificationProgressMediumCopy *pNotification = new UINotificationProgressMediumCopy(m_comSourceVirtualDisk,
     80                                                                                           comVirtualDisk,
     81                                                                                           variants);
     82    connect(pNotification, &UINotificationProgressMediumCopy::sigMediumCopied,
     83            &uiCommon(), &UICommon::sltHandleMediumCreated);
     84    notificationCenter().append(pNotification);
    9785
    9886    /* Positive: */
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