VirtualBox

Ignore:
Timestamp:
Feb 16, 2018 3:48:59 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
120901
Message:

FE/Qt bugref:6699 Refactor guest session tree

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl
Files:
2 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIGuestControlTreeItem.cpp

    r71037 r71038  
    2121
    2222/* GUI includes: */
    23 # include "UIGuestSessionTreeItem.h"
     23# include "UIExtraDataManager.h"
     24# include "UIGuestControlTreeItem.h"
    2425# include "VBoxGlobal.h"
    2526
    2627/* COM includes: */
    2728# include "CGuest.h"
    28 
     29# include "CEventSource.h"
    2930#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
    3031
    31 
    32 UIGuestSessionTreeItem::UIGuestSessionTreeItem(QITreeWidget *pTreeWidget,
    33                                                GuestSessionTreeItemType itemType)
    34     :QITreeWidgetItem(pTreeWidget)
    35     , m_eItemType(itemType)
    36 {
    37 }
    38 
    39 UIGuestSessionTreeItem::UIGuestSessionTreeItem(UIGuestSessionTreeItem *pTreeWidgetItem,
    40                                                GuestSessionTreeItemType itemType)
    41     :QITreeWidgetItem(pTreeWidgetItem)
    42     , m_eItemType(itemType)
    43 {
    44 }
    45 
    46 UIGuestSessionTreeItem::UIGuestSessionTreeItem(QITreeWidget *pTreeWidget,
    47                                                const QStringList &strings, GuestSessionTreeItemType itemType)
    48     :QITreeWidgetItem(pTreeWidget, strings)
    49     , m_eItemType(itemType)
    50 {
    51 }
    52 
    53 UIGuestSessionTreeItem::UIGuestSessionTreeItem(UIGuestSessionTreeItem *pTreeWidgetItem,
    54                                                const QStringList &strings, GuestSessionTreeItemType itemType)
     32/*********************************************************************************************************************************
     33*   UIGuestControlTreeItem implementation.                                                                                       *
     34*********************************************************************************************************************************/
     35
     36UIGuestControlTreeItem::UIGuestControlTreeItem(QITreeWidget *pTreeWidget, const QStringList &strings /* = QStringList() */)
     37    :QITreeWidgetItem(pTreeWidget,strings)
     38{
     39}
     40
     41UIGuestControlTreeItem::UIGuestControlTreeItem(UIGuestControlTreeItem *pTreeWidgetItem,
     42                                               const QStringList &strings/* = QStringList() */)
    5543    :QITreeWidgetItem(pTreeWidgetItem, strings)
    56     , m_eItemType(itemType)
    57 {
    58 }
     44{
     45
     46}
     47
     48UIGuestControlTreeItem::~UIGuestControlTreeItem()
     49{
     50}
     51
     52void UIGuestControlTreeItem::prepare()
     53{
     54    prepareConnections();
     55    prepareConnections();
     56}
     57
     58void UIGuestControlTreeItem::prepareListener(CEventSource comEventSource, QVector<KVBoxEventType>& eventTypes)
     59{
     60    AssertWrapperOk(comEventSource);
     61
     62    /* Create event listener instance: */
     63    m_pQtListener.createObject();
     64    m_pQtListener->init(new UIMainEventListener, this);
     65    m_comEventListener = CEventListener(m_pQtListener);
     66
     67    /* Register event listener for CProgress event source: */
     68    comEventSource.RegisterListener(m_comEventListener, eventTypes,
     69        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
     70    AssertWrapperOk(comEventSource);
     71
     72    /* If event listener registered as passive one: */
     73    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
     74    {
     75        /* Register event sources in their listeners as well: */
     76        m_pQtListener->getWrapped()->registerSource(comEventSource, m_comEventListener);
     77    }
     78}
     79
     80void UIGuestControlTreeItem::cleanupListener(CEventSource comEventSource)
     81{
     82    AssertWrapperOk(comEventSource);
     83    /* If event listener registered as passive one: */
     84    if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
     85    {
     86        /* Unregister everything: */
     87        m_pQtListener->getWrapped()->unregisterSources();
     88    }
     89
     90    /* Make sure VBoxSVC is available: */
     91    if (!vboxGlobal().isVBoxSVCAvailable())
     92        return;
     93
     94    /* Unregister event listener for CProgress event source: */
     95    comEventSource.UnregisterListener(m_comEventListener);
     96}
     97
     98/*********************************************************************************************************************************
     99*   UIGuestSessionTreeItem implementation.                                                                                       *
     100*********************************************************************************************************************************/
     101
     102UIGuestSessionTreeItem::UIGuestSessionTreeItem(QITreeWidget *pTreeWidget, CGuestSession& guestSession,
     103                                               const QStringList &strings /* = QStringList() */)
     104    :UIGuestControlTreeItem(pTreeWidget, strings)
     105    , m_comGuestSession(guestSession)
     106{
     107    prepare();
     108}
     109
     110UIGuestSessionTreeItem::UIGuestSessionTreeItem(UIGuestControlTreeItem *pTreeWidgetItem, CGuestSession& guestSession,
     111                                               const QStringList &strings /* = QStringList() */)
     112    :UIGuestControlTreeItem(pTreeWidgetItem, strings)
     113    , m_comGuestSession(guestSession)
     114{
     115    prepare();
     116}
     117
     118UIGuestSessionTreeItem::~UIGuestSessionTreeItem()
     119{
     120    cleanupListener();
     121}
     122
     123void UIGuestSessionTreeItem::prepareConnections()
     124{
     125    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestSessionStatedChanged,
     126            this, &UIGuestSessionTreeItem::sltGuestSessionUpdated);
     127    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestProcessRegistered,
     128            this, &UIGuestSessionTreeItem::sltGuestProcessRegistered);
     129    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestProcessUnregistered,
     130            this, &UIGuestSessionTreeItem::sltGuestProcessUnregistered);
     131}
     132
     133void UIGuestSessionTreeItem::prepareListener()
     134{
     135    QVector<KVBoxEventType> eventTypes;
     136    eventTypes << KVBoxEventType_OnGuestSessionStateChanged
     137               << KVBoxEventType_OnGuestProcessRegistered;
     138
     139    UIGuestControlTreeItem::prepareListener(m_comGuestSession.GetEventSource(), eventTypes);
     140}
     141
     142void UIGuestSessionTreeItem::cleanupListener()
     143{
     144    UIGuestControlTreeItem::cleanupListener(m_comGuestSession.GetEventSource());
     145}
     146
     147void UIGuestSessionTreeItem::sltGuestSessionUpdated()
     148{
     149}
     150
     151void UIGuestSessionTreeItem::sltGuestProcessRegistered(CGuestProcess guestProcess)
     152{
     153
     154}
     155
     156void UIGuestSessionTreeItem::sltGuestProcessUnregistered(CGuestProcess guestProcess)
     157{
     158}
     159
     160/*********************************************************************************************************************************
     161*   UIGuestProcessTreeItem implementation.                                                                                       *
     162*********************************************************************************************************************************/
     163UIGuestProcessTreeItem::UIGuestProcessTreeItem(QITreeWidget *pTreeWidget, CGuestProcess& guestProcess,
     164                                               const QStringList &strings /* = QStringList() */)
     165    :UIGuestControlTreeItem(pTreeWidget, strings)
     166    , m_comGuestProcess(guestProcess)
     167{
     168    prepare();
     169}
     170
     171UIGuestProcessTreeItem::UIGuestProcessTreeItem(UIGuestControlTreeItem *pTreeWidgetItem, CGuestProcess& guestProcess,
     172                                               const QStringList &strings /* = QStringList() */)
     173    :UIGuestControlTreeItem(pTreeWidgetItem, strings)
     174    , m_comGuestProcess(guestProcess)
     175{
     176    prepare();
     177}
     178
     179void UIGuestProcessTreeItem::prepareConnections()
     180{
     181    connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestProcessStateChanged,
     182            this, &UIGuestProcessTreeItem::sltGuestProcessUpdated);
     183}
     184
     185UIGuestProcessTreeItem::~UIGuestProcessTreeItem()
     186{
     187    cleanupListener();
     188}
     189
     190void UIGuestProcessTreeItem::prepareListener()
     191{
     192    QVector<KVBoxEventType> eventTypes;
     193    eventTypes  << KVBoxEventType_OnGuestProcessStateChanged
     194                << KVBoxEventType_OnGuestProcessInputNotify
     195                << KVBoxEventType_OnGuestProcessOutput;
     196    UIGuestControlTreeItem::prepareListener(m_comGuestProcess.GetEventSource(), eventTypes);
     197}
     198
     199
     200void UIGuestProcessTreeItem::cleanupListener()
     201{
     202    UIGuestControlTreeItem::cleanupListener(m_comGuestProcess.GetEventSource());
     203}
     204
     205void UIGuestProcessTreeItem::sltGuestProcessUpdated()
     206{
     207}
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIGuestControlTreeItem.h

    r71037 r71038  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIGuestSessionTreeItem class declaration.
     3 * VBox Qt GUI - UIGuestControlTreeItem class declaration.
    44 */
    55
     
    1616 */
    1717
    18 #ifndef ___UIGuestSessionTreeItem_h___
    19 #define ___UIGuestSessionTreeItem_h___
     18#ifndef ___UIGuestControlTreeItem_h___
     19#define ___UIGuestControlTreeItem_h___
    2020
    2121/* GUI includes: */
    22 # include "QITreeWidget.h"
     22#include "QITreeWidget.h"
     23#include "UIMainEventListener.h"
    2324
     25/* COM includes: */
     26#include "CEventListener.h"
     27#include "CGuestSession.h"
    2428
    2529/* Forward declarations: */
     30class CEventSource;
    2631
    27 
    28 class UIGuestSessionTreeItem : public QITreeWidgetItem
     32class UIGuestControlTreeItem : public QITreeWidgetItem
    2933{
    3034
     
    3539public:
    3640
    37     enum GuestSessionTreeItemType{
    38         SessionTreeItem = 0,
    39         ProcessTreeItem,
    40         GuestSessionItemTypeMax
    41     };
    4241
    43 
    44     /** Constructs item passing @a pTreeWidget into the base-class. */
    45     UIGuestSessionTreeItem(QITreeWidget *pTreeWidget, GuestSessionTreeItemType itemType);
    46     /** Constructs item passing @a pTreeWidgetItem into the base-class. */
    47     UIGuestSessionTreeItem(UIGuestSessionTreeItem *pTreeWidgetItem, GuestSessionTreeItemType itemType);
    48     /** Constructs item passing @a pTreeWidget and @a strings into the base-class. */
    49     UIGuestSessionTreeItem(QITreeWidget *pTreeWidget, const QStringList &strings, GuestSessionTreeItemType itemType);
    50     /** Constructs item passing @a pTreeWidgetItem and @a strings into the base-class. */
    51     UIGuestSessionTreeItem(UIGuestSessionTreeItem *pTreeWidgetItem,
    52                            const QStringList &strings, GuestSessionTreeItemType itemType);
     42    UIGuestControlTreeItem(QITreeWidget *pTreeWidget, const QStringList &strings = QStringList());
     43    UIGuestControlTreeItem(UIGuestControlTreeItem *pTreeWidgetItem, const QStringList &strings = QStringList());
     44    virtual ~UIGuestControlTreeItem();
    5345
    5446private slots:
    5547
     48protected:
     49
     50    void prepareListener(CEventSource comEventSource, QVector<KVBoxEventType>& eventTypes);
     51    void cleanupListener(CEventSource comEventSource);
     52    void prepare();
     53
     54    ComObjPtr<UIMainEventListenerImpl> m_pQtListener;
    5655
    5756private:
    58     GuestSessionTreeItemType m_eItemType;
     57
     58    virtual void prepareListener() = 0;
     59    virtual void prepareConnections() = 0;
     60    virtual void cleanupListener() = 0;
     61
     62    /** Holds the COM event listener instance. */
     63    CEventListener m_comEventListener;
    5964
    6065};
    6166
    62 #endif /* !___UIGuestSessionTreeItem_h___ */
     67class UIGuestSessionTreeItem : public UIGuestControlTreeItem
     68{
     69    Q_OBJECT;
     70
     71public:
     72
     73    UIGuestSessionTreeItem(QITreeWidget *pTreeWidget, CGuestSession& guestSession, const QStringList &strings = QStringList());
     74    UIGuestSessionTreeItem(UIGuestControlTreeItem *pTreeWidgetItem, CGuestSession& guestSession, const QStringList &strings = QStringList());
     75    virtual ~UIGuestSessionTreeItem();
     76
     77protected:
     78
     79    void prepareListener(CEventSource comEventSource, QVector<KVBoxEventType>& eventTypes);
     80    void cleanupListener(CEventSource comEventSource);
     81
     82private slots:
     83
     84    void sltGuestSessionUpdated();
     85    void sltGuestProcessRegistered(CGuestProcess guestProcess);
     86    void sltGuestProcessUnregistered(CGuestProcess guestProcess);
     87
     88private:
     89
     90    virtual void prepareListener() /* override */;
     91    virtual void prepareConnections() /* override */;
     92    virtual void cleanupListener()  /* override */;
     93
     94    CGuestSession m_comGuestSession;
     95
     96};
     97
     98class UIGuestProcessTreeItem : public UIGuestControlTreeItem
     99{
     100    Q_OBJECT;
     101
     102public:
     103
     104    UIGuestProcessTreeItem(QITreeWidget *pTreeWidget, CGuestProcess& guestProcess, const QStringList &strings = QStringList());
     105    UIGuestProcessTreeItem(UIGuestControlTreeItem *pTreeWidgetItem, CGuestProcess& guestProcess, const QStringList &strings = QStringList());
     106    virtual ~UIGuestProcessTreeItem();
     107
     108
     109protected:
     110
     111    void prepareListener(CEventSource comEventSource, QVector<KVBoxEventType>& eventTypes);
     112    void cleanupListener(CEventSource comEventSource);
     113
     114private slots:
     115
     116    void sltGuestProcessUpdated();
     117
     118private:
     119
     120    virtual void prepareListener() /* override */;
     121    virtual void prepareConnections() /* override */;
     122    virtual void cleanupListener()  /* override */;
     123
     124    CGuestProcess m_comGuestProcess;
     125};
     126
     127#endif /* !___UIGuestControlTreeItem_h___ */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIInformationGuestSession.cpp

    r71037 r71038  
    3030# include "UIGuestControlConsole.h"
    3131# include "UIGuestControlInterface.h"
    32 # include "UIGuestSessionTreeItem.h"
     32# include "UIGuestControlTreeItem.h"
    3333# include "UIInformationGuestSession.h"
    3434
     
    197197    if (!guestSession.isOk())
    198198        return;
     199
     200    new UIGuestSessionTreeItem(m_pTreeWidget, guestSession);
    199201    //printf("sltGuestSessionRegistered \n");
    200202    // addGuestSession(guestSession);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIInformationGuestSession.h

    r71037 r71038  
    7575    UIGuestControlInterface *m_pControlInterface;
    7676
    77                 /** Holds the Qt event listener instance. */
     77    /** Holds the Qt event listener instance. */
    7878    ComObjPtr<UIMainEventListenerImpl> m_pQtListener;
    7979    /** Holds the COM event listener instance. */
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