VirtualBox

Changeset 94731 in vbox


Ignore:
Timestamp:
Apr 28, 2022 9:25:11 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
151111
Message:

Main/Update check: Boilerplate code for update agent event handling in FE/Qt, along with an example. See @todos. bugref:7983

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

Legend:

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

    r93990 r94731  
    6868#include "CStorageControllerChangedEvent.h"
    6969#include "CStorageDeviceChangedEvent.h"
     70#include "CUpdateAgent.h"
     71#include "CUpdateAgentAvailableEvent.h"
     72#include "CUpdateAgentErrorEvent.h"
     73#include "CUpdateAgentStateChangedEvent.h"
     74#include "CUpdateAgentSettingsChangedEvent.h"
    7075#include "CUSBDevice.h"
    7176#include "CUSBDeviceStateChangedEvent.h"
     
    215220    qRegisterMetaType<KGuestMonitorChangedEventType>("KGuestMonitorChangedEventType");
    216221    qRegisterMetaType<CGuestSession>("CGuestSession");
     222    qRegisterMetaType<CUpdateAgent>("CUpdateAgent");
     223    qRegisterMetaType<KUpdateChannel>("KUpdateChannel");
     224    qRegisterMetaType<KUpdateSeverity>("KUpdateSeverity");
     225    qRegisterMetaType<KUpdateState>("KUpdateState");
    217226}
    218227
     
    601610            break;
    602611        }
     612        case KVBoxEventType_OnUpdateAgentAvailable:
     613        {
     614            CUpdateAgentAvailableEvent comEventSpecific(pEvent);
     615            emit sigUpdateAgentAvailable(comEventSpecific.GetAgent(),
     616                                         comEventSpecific.GetVersion(), comEventSpecific.GetChannel(),
     617                                         comEventSpecific.GetSeverity(), comEventSpecific.GetDownloadURL(),
     618                                         comEventSpecific.GetWebURL(), comEventSpecific.GetReleaseNotes());
     619            break;
     620        }
     621        case KVBoxEventType_OnUpdateAgentError:
     622        {
     623            CUpdateAgentErrorEvent comEventSpecific(pEvent);
     624            emit sigUpdateAgentError(comEventSpecific.GetAgent(), comEventSpecific.GetMsg(), comEventSpecific.GetRcError());
     625            break;
     626        }
     627        case KVBoxEventType_OnUpdateAgentStateChanged:
     628        {
     629            CUpdateAgentStateChangedEvent comEventSpecific(pEvent);
     630            emit sigUpdateAgentStateChanged(comEventSpecific.GetAgent(), comEventSpecific.GetState());
     631            break;
     632        }
     633        case KVBoxEventType_OnUpdateAgentSettingsChanged:
     634        {
     635            CUpdateAgentSettingsChangedEvent comEventSpecific(pEvent);
     636            emit sigUpdateAgentSettingsChanged(comEventSpecific.GetAgent(), comEventSpecific.GetAttributeHint());
     637            break;
     638        }
    603639        default: break;
    604640    }
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h

    r93115 r94731  
    3939#include "CNetworkAdapter.h"
    4040#include "CUSBDevice.h"
     41#include "CUpdateAgent.h"
    4142#include "CVirtualBoxErrorInfo.h"
    4243
     
    189190    /** @} */
    190191
     192    /** @name Update agent signals
     193      * @{ */
     194        /** Notifies about an available update of an update agent. */
     195        void sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity, QString, QString, QString);
     196        /** Notifies about an error of an update agent. */
     197        void sigUpdateAgentError(CUpdateAgent, QString, long);
     198        /** Notifies about a state change of an update agent. */
     199        void sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState);
     200        /** Notifies about update agent @a comAgent settings change. */
     201        void sigUpdateAgentSettingsChanged(CUpdateAgent comAgent, const QString &strAttributeHint);
     202    /** @} */
     203
    191204    /** @name Progress related signals
    192205      * @{ */
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIVirtualBoxEventHandler.cpp

    r93115 r94731  
    7878      * @param  fRegistered    Brings whether medium is registered or unregistered. */
    7979    void sigMediumRegistered(const QUuid &uMediumId, KDeviceType enmMediumType, bool fRegistered);
     80    /** Notifies about an available update of an update agent. */
     81    void sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity, QString, QString, QString);
     82    /** Notifies about an error of an update agent. */
     83    void sigUpdateAgentError(CUpdateAgent, QString, long);
     84    /** Notifies about a state change of an update agent. */
     85    void sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState);
     86    /** Notifies about update agent @a comAgent settings change. */
     87    void sigUpdateAgentSettingsChanged(CUpdateAgent comAgent, const QString &strAttributeHint);
    8088
    8189public:
     
    182190    /* Register event sources in their listeners as well: */
    183191    m_pQtListener->getWrapped()->registerSource(m_comEventSource, m_comEventListener);
     192
     193    /* Update agent event handling: */
     194    const CUpdateAgent comUpdateAgentHost = uiCommon().host().GetUpdateHost();
     195    AssertWrapperOk(comUpdateAgentHost);
     196          CEventSource comUpdateAgentHostEventSource = comUpdateAgentHost.GetEventSource();
     197    AssertWrapperOk(comUpdateAgentHostEventSource);
     198
     199    eventTypes.clear();
     200    eventTypes
     201        << KVBoxEventType_OnUpdateAgentAvailable
     202        << KVBoxEventType_OnUpdateAgentStateChanged
     203        << KVBoxEventType_OnUpdateAgentError
     204        << KVBoxEventType_OnUpdateAgentSettingsChanged;
     205
     206    /* Register event listener for event source aggregator: */
     207    comUpdateAgentHostEventSource.RegisterListener(m_comEventListener, eventTypes, FALSE /* active? */);
     208    AssertWrapperOk(m_comEventSource);
     209
     210    /* Register event sources in their listeners as well: */
     211    m_pQtListener->getWrapped()->registerSource(comUpdateAgentHostEventSource, m_comEventListener);
    184212}
    185213
     
    238266    connect(m_pQtListener->getWrapped(), SIGNAL(sigMediumRegistered(QUuid, KDeviceType, bool)),
    239267            this, SIGNAL(sigMediumRegistered(QUuid, KDeviceType, bool)),
     268            Qt::DirectConnection);
     269    connect(m_pQtListener->getWrapped(), SIGNAL(sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity,
     270                                                                        QString, QString, QString)),
     271            this, SIGNAL(sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity,
     272                                                 QString, QString, QString)),
     273            Qt::DirectConnection);
     274    connect(m_pQtListener->getWrapped(), SIGNAL(sigUpdateAgentError(CUpdateAgent, QString, long)),
     275            this, SIGNAL(sigUpdateAgentError(CUpdateAgent, QString, long)),
     276            Qt::DirectConnection);
     277    connect(m_pQtListener->getWrapped(), SIGNAL(sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState)),
     278            this, SIGNAL(sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState)),
     279            Qt::DirectConnection);
     280    connect(m_pQtListener->getWrapped(), SIGNAL(sigUpdateAgentSettingsChanged(CUpdateAgent, QString)),
     281            this, SIGNAL(sigUpdateAgentSettingsChanged(CUpdateAgent, QString)),
    240282            Qt::DirectConnection);
    241283}
     
    357399            this, SIGNAL(sigMediumRegistered(QUuid, KDeviceType, bool)),
    358400            Qt::QueuedConnection);
     401    connect(m_pProxy, SIGNAL(sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity,
     402                                                     QString, QString, QString)),
     403            this, SIGNAL(sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity,
     404                                                 QString, QString, QString)),
     405            Qt::DirectConnection);
     406    connect(m_pProxy, SIGNAL(sigUpdateAgentError(CUpdateAgent, QString, long)),
     407            this, SIGNAL(sigUpdateAgentError(CUpdateAgent, QString, long)),
     408            Qt::DirectConnection);
     409    connect(m_pProxy, SIGNAL(sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState)),
     410            this, SIGNAL(sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState)),
     411            Qt::DirectConnection);
     412    connect(m_pProxy, SIGNAL(sigUpdateAgentSettingsChanged(CUpdateAgent, QString)),
     413            this, SIGNAL(sigUpdateAgentSettingsChanged(CUpdateAgent, QString)),
     414            Qt::QueuedConnection);
    359415}
    360416
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIVirtualBoxEventHandler.h

    r93115 r94731  
    3232#include "CMedium.h"
    3333#include "CMediumAttachment.h"
     34#include "CUpdateAgent.h"
    3435
    3536/* Forward declarations: */
     
    8687      * @param  fRegistered    Brings whether medium is registered or unregistered. */
    8788    void sigMediumRegistered(const QUuid &uMediumId, KDeviceType enmMediumType, bool fRegistered);
     89    /** Notifies about an available update of an update agent. */
     90    void sigUpdateAgentAvailable(CUpdateAgent, QString, KUpdateChannel, KUpdateSeverity, QString, QString, QString);
     91    /** Notifies about an error of an update agent. */
     92    void sigUpdateAgentError(CUpdateAgent, QString, long);
     93    /** Notifies about a state change of an update agent. */
     94    void sigUpdateAgentStateChanged(CUpdateAgent, KUpdateState);
     95    /** Notifies about update agent @a comAgent settings change. */
     96    void sigUpdateAgentSettingsChanged(CUpdateAgent comAgent, const QString &strAttributeHint);
    8897
    8998public:
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp

    r93414 r94731  
    3838#include "UINotificationObjectItem.h"
    3939#include "UINotificationModel.h"
     40#include "UIVirtualBoxEventHandler.h" /** @todo EXAMPLE -- REMOVE THIS */
     41#include "CUpdateAgent.h"             /** @todo EXAMPLE -- REMOVE THIS */
    4042
    4143/* Other VBox includes: */
     
    404406}
    405407
     408/** @todo EXAMPLE -- REMOVE THIS */
     409void UINotificationCenter::sltUpdateAgentAvailable(CUpdateAgent comAgent, QString strVer, KUpdateChannel, KUpdateSeverity, QString, QString, QString)
     410{
     411    RT_NOREF(comAgent, strVer);
     412}
     413
    406414void UINotificationCenter::sltHandleOpenButtonToggled(bool fToggled)
    407415{
     
    522530    connect(gEDataManager, &UIExtraDataManager::sigNotificationCenterOrderChange,
    523531            this, &UINotificationCenter::sltHandleOrderChange);
     532
     533    /** @todo EXAMPLE -- REMOVE THIS */
     534    connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigUpdateAgentAvailable,
     535            this, &UINotificationCenter::sltUpdateAgentAvailable);
    524536
    525537    /* Prepare the rest of stuff: */
  • trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h

    r93414 r94731  
    111111    /** Issues request to make open button @a fToggled. */
    112112    void sltHandleOpenButtonToggled(bool fToggled);
     113    /** @todo EXAMPLE -- REMOVE THIS */
     114    void sltUpdateAgentAvailable(CUpdateAgent comAgent, QString, KUpdateChannel, KUpdateSeverity, QString, QString, QString);
    113115    /** Toggles notification-progresses keep approach. */
    114116    void sltHandleKeepButtonToggled(bool fToggled);
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