VirtualBox

Changeset 89036 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
May 14, 2021 8:14:18 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144375
Message:

FE/Qt: bugref:9930. Working on vm activity tools

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
7 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r89006 r89036  
    623623        src/medium/UIMediumManager.h \
    624624        src/activity/overview/UIVMActivityOverviewWidget.h \
    625         src/activity/overview/UIVMActivityListWidget.h \
     625        src/activity/overview/UIVMActivityToolWidget.h \
    626626        src/networkmanager/UIDetailsWidgetHostNetwork.h \
    627627        src/networkmanager/UIDetailsWidgetNATNetwork.h \
     
    952952        src/manager/chooser/UIChooserAbstractModel.cpp \
    953953        src/activity/overview/UIVMActivityOverviewWidget.cpp \
     954        src/activity/overview/UIVMActivityToolWidget.cpp \
    954955        src/networkmanager/UINetworkManager.cpp \
    955956        src/snapshots/UISnapshotDetailsWidget.cpp \
     
    11151116        src/medium/UIMediumManager.cpp \
    11161117        src/activity/overview/UIVMActivityOverviewWidget.cpp \
    1117         src/activity/overview/UIVMActivityListWidget.cpp \
     1118        src/activity/overview/UIVMActivityToolWidget.cpp \
    11181119        src/networkmanager/UIDetailsWidgetHostNetwork.cpp \
    11191120        src/networkmanager/UIDetailsWidgetNATNetwork.cpp \
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityToolWidget.cpp

    r89035 r89036  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIVMActivityListWidget class implementation.
     3 * VBox Qt GUI - UIVMActivityToolWidget class implementation.
    44 */
    55
     
    3939#include "UIIconPool.h"
    4040#include "UIVMActivityMonitor.h"
    41 #include "UIVMActivityListWidget.h"
     41#include "UIVMActivityToolWidget.h"
    4242#include "UIMessageCenter.h"
    4343#include "QIToolBar.h"
    4444#include "UIVirtualBoxEventHandler.h"
     45#include "UIVirtualMachineItem.h"
    4546
    4647#ifdef VBOX_WS_MAC
     
    4950
    5051/* COM includes: */
     52#include "COMEnums.h"
    5153#include "CConsole.h"
    5254#include "CMachine.h"
     
    5759#include <iprt/cidr.h>
    5860
     61
     62class UIVMActivityListWidget : public QWidget
     63{
     64
     65    Q_OBJECT;
     66public:
     67
     68    UIVMActivityListWidget(QWidget *pParent = 0)
     69        : QWidget(pParent)
     70    {
     71    }
     72};
    5973/*********************************************************************************************************************************
    60 *   Class UIVMActivityListWidget implementation.                                                                             *
     74*   Class UIVMActivityToolWidget implementation.                                                                             *
    6175*********************************************************************************************************************************/
    6276
    63 UIVMActivityListWidget::UIVMActivityListWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
     77UIVMActivityToolWidget::UIVMActivityToolWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
    6478                                                 bool fShowToolbar /* = true */, QWidget *pParent /* = 0 */)
    65     : QIWithRetranslateUI<QWidget>(pParent)
     79    : QIWithRetranslateUI<QTabWidget>(pParent)
    6680    , m_enmEmbedding(enmEmbedding)
    6781    , m_pActionPool(pActionPool)
     
    7286}
    7387
    74 QMenu *UIVMActivityListWidget::menu() const
     88QMenu *UIVMActivityToolWidget::menu() const
    7589{
    7690    return NULL;
    7791}
    7892
    79 bool UIVMActivityListWidget::isCurrentTool() const
     93bool UIVMActivityToolWidget::isCurrentTool() const
    8094{
    8195    return m_fIsCurrentTool;
    8296}
    8397
    84 void UIVMActivityListWidget::setIsCurrentTool(bool fIsCurrentTool)
     98void UIVMActivityToolWidget::setIsCurrentTool(bool fIsCurrentTool)
    8599{
    86100    m_fIsCurrentTool = fIsCurrentTool;
    87101}
    88102
    89 void UIVMActivityListWidget::retranslateUi()
    90 {
    91 }
    92 
    93 void UIVMActivityListWidget::showEvent(QShowEvent *pEvent)
    94 {
    95     QIWithRetranslateUI<QWidget>::showEvent(pEvent);
    96 }
    97 
    98 void UIVMActivityListWidget::prepare()
    99 {
    100 }
    101 
    102 void UIVMActivityListWidget::prepareWidgets()
    103 {
    104 }
    105 
    106 
    107 void UIVMActivityListWidget::prepareActions()
    108 {
    109 }
    110 
    111 void UIVMActivityListWidget::prepareToolBar()
     103void UIVMActivityToolWidget::retranslateUi()
     104{
     105}
     106
     107void UIVMActivityToolWidget::showEvent(QShowEvent *pEvent)
     108{
     109    QIWithRetranslateUI<QTabWidget>::showEvent(pEvent);
     110}
     111
     112void UIVMActivityToolWidget::prepare()
     113{
     114    setTabBarAutoHide(true);
     115}
     116
     117void UIVMActivityToolWidget::setSelectedVMListItems(const QList<UIVirtualMachineItem*> &items)
     118{
     119    QVector<QUuid> selectedMachines;
     120
     121    foreach (const UIVirtualMachineItem *item, items)
     122    {
     123        if (!item)
     124            continue;
     125        selectedMachines << item->id();
     126    }
     127    setMachines(selectedMachines);
     128}
     129
     130void UIVMActivityToolWidget::setMachines(const QVector<QUuid> &machineIds)
     131{
     132    /* List of machines that are newly added to selected machine list: */
     133    QVector<QUuid> newSelections;
     134    QVector<QUuid> unselectedMachines(m_machineIds);
     135
     136    foreach (const QUuid &id, machineIds)
     137    {
     138        unselectedMachines.removeAll(id);
     139        if (!m_machineIds.contains(id))
     140            newSelections << id;
     141    }
     142    m_machineIds = machineIds;
     143
     144    hide();
     145    removeTabs(unselectedMachines);
     146    addTabs(newSelections);
     147    show();
     148}
     149
     150
     151void UIVMActivityToolWidget::prepareActions()
     152{
     153    QAction *pToResourcesAction =
     154        m_pActionPool->action(UIActionIndex_M_Activity_S_ToVMActivityOverview);
     155    if (pToResourcesAction)
     156        connect(pToResourcesAction, &QAction::triggered, this, &UIVMActivityToolWidget::sigSwitchToResourcesPane);
     157
     158}
     159
     160void UIVMActivityToolWidget::prepareToolBar()
    112161{
    113162    /* Create toolbar: */
     
    134183}
    135184
    136 void UIVMActivityListWidget::loadSettings()
    137 {
    138 }
     185void UIVMActivityToolWidget::loadSettings()
     186{
     187}
     188
     189void UIVMActivityToolWidget::showVMActivityMonitor(CMachine &comMachine)
     190{
     191    if (comMachine.isNull())
     192        return;
     193    // if (!m_pActivityMonitor)
     194    // {
     195    //     m_pActivityMonitor = new UIVMActivityMonitor(m_enmEmbedding, this,
     196    //                                                  comMachine, m_pActionPool, false /* Show toolbar */);
     197    //     addWidget(m_pActivityMonitor);
     198    // }
     199    // else
     200    //     m_pActivityMonitor->setMachine(comMachine);
     201
     202    // setCurrentWidget(m_pActivityMonitor);
     203}
     204
     205void UIVMActivityToolWidget::showVMActivityList()
     206{
     207    // if (!m_pActivityList)
     208    // {
     209    //     m_pActivityList = new UIVMActivityListWidget(this);
     210    //     addWidget(m_pActivityList);
     211    // }
     212    // setCurrentWidget(m_pActivityList);
     213}
     214
     215void UIVMActivityToolWidget::removeTabs(const QVector<QUuid> &machineIdsToRemove)
     216{
     217    QVector<UIVMActivityMonitor*> removeList;
     218    QVector<UIVMActivityMonitor*> keepList;
     219    for (int i = 0; i < count(); ++i)
     220    {
     221        UIVMActivityMonitor *pMonitor = qobject_cast<UIVMActivityMonitor*>(widget(i));
     222        if (!pMonitor)
     223            continue;
     224        if (machineIdsToRemove.contains(pMonitor->machineId()))
     225            removeList << pMonitor;
     226        else
     227            keepList << pMonitor;
     228    }
     229    clear();
     230    qDeleteAll(removeList.begin(), removeList.end());
     231
     232    foreach (UIVMActivityMonitor *pMonitor, keepList)
     233        addTab(pMonitor, pMonitor->machineName());
     234}
     235
     236void UIVMActivityToolWidget::addTabs(const QVector<QUuid> &machineIdsToAdd)
     237{
     238    foreach (const QUuid &id, machineIdsToAdd)
     239    {
     240        CMachine comMachine = uiCommon().virtualBox().FindMachine(id.toString());
     241        if (comMachine.isNull())
     242            continue;
     243        addTab(new UIVMActivityMonitor(m_enmEmbedding, this, comMachine, m_pActionPool), comMachine.GetName());
     244    }
     245}
     246
     247#include "UIVMActivityToolWidget.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityToolWidget.h

    r89035 r89036  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIVMActivityListWidget class declaration.
     3 * VBox Qt GUI - UIVMActivityToolWidget class declaration.
    44 */
    55
     
    1616 */
    1717
    18 #ifndef FEQT_INCLUDED_SRC_activity_overview_UIVMActivityListWidget_h
    19 #define FEQT_INCLUDED_SRC_activity_overview_UIVMActivityListWidget_h
     18#ifndef FEQT_INCLUDED_SRC_activity_overview_UIVMActivityToolWidget_h
     19#define FEQT_INCLUDED_SRC_activity_overview_UIVMActivityToolWidget_h
    2020#ifndef RT_WITHOUT_PRAGMA_ONCE
    2121# pragma once
     
    2323
    2424/* Qt includes: */
    25 #include <QMainWindow>
     25#include <QTabWidget>
    2626
    2727/* GUI includes: */
     
    3030
    3131/* Forward declarations: */
    32 class QAbstractButton;
    33 class QFrame;
    34 class QItemSelection;
    35 class QLabel;
    36 class QTableView;
    37 class QTreeWidgetItem;
    38 class QIDialogButtonBox;
    3932class UIActionPool;
    4033class QIToolBar;
    41 class UIActivityOverviewProxyModel;
    42 class UIActivityOverviewModel;
    43 class UIVMActivityOverviewHostStats;
    44 class UIVMActivityOverviewHostStatsWidget;
    45 class UIVMActivityOverviewTableView;
     34class UIVMActivityMonitor;
     35class UIVMActivityListWidget;
     36class UIVirtualMachineItem;
    4637
    4738/** QWidget extension to display a Linux top like utility that sort running vm wrt. resource allocations. */
    48 class UIVMActivityListWidget : public QIWithRetranslateUI<QWidget>
     39class UIVMActivityToolWidget : public QIWithRetranslateUI<QTabWidget>
    4940{
    5041    Q_OBJECT;
     
    5243signals:
    5344
     45    void sigSwitchToResourcesPane();
    5446
    5547public:
    5648
    57     UIVMActivityListWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
     49    UIVMActivityToolWidget(EmbedTo enmEmbedding, UIActionPool *pActionPool,
    5850                               bool fShowToolbar = true, QWidget *pParent = 0);
    5951    QMenu *menu() const;
     
    6153    bool isCurrentTool() const;
    6254    void setIsCurrentTool(bool fIsCurrentTool);
     55
     56    void setSelectedVMListItems(const QList<UIVirtualMachineItem*> &items);
    6357
    6458#ifdef VBOX_WS_MAC
     
    7973private:
    8074
     75    void setMachines(const QVector<QUuid> &machineIDs);
    8176
    8277    /** @name Prepare/cleanup cascade.
    8378      * @{ */
    8479        void prepare();
    85         void prepareWidgets();
    86         void prepareHostStatsWidgets();
    8780        void prepareToolBar();
    8881        void prepareActions();
     
    9083        void loadSettings();
    9184    /** @} */
     85
     86    void showVMActivityMonitor(CMachine &comMachine);
     87    void showVMActivityList();
     88    /** Remove tabs conaining machine monitors with ids @machineIdsToRemove. */
     89    void removeTabs(const QVector<QUuid> &machineIdsToRemove);
     90    /** Add new tabs for each QUuid in @machineIdsToAdd. Does not check for duplicates. */
     91    void addTabs(const QVector<QUuid> &machineIdsToAdd);
     92
    9293
    9394    /** @name General variables.
     
    9899    /** @} */
    99100
    100     /** @name Misc members.
    101       * @{ */
    102         QIToolBar *m_pToolBar;
    103         QMenu                              *m_pColumnVisibilityToggleMenu;
    104     /** @} */
     101    QIToolBar *m_pToolBar;
     102
    105103    /** Indicates if this widget's host tool is current tool. */
    106104    bool    m_fIsCurrentTool;
     105    QVector<QUuid> m_machineIds;
    107106};
    108107
    109108
    110 #endif /* !FEQT_INCLUDED_SRC_activity_overview_UIVMActivityListWidget_h */
     109#endif /* !FEQT_INCLUDED_SRC_activity_overview_UIVMActivityToolWidget_h */
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.cpp

    r88895 r89036  
    3434#include "UIIconPool.h"
    3535#include "UIVMActivityMonitor.h"
    36 #include "QIToolBar.h"
    3736#include "UIVirtualBoxEventHandler.h"
    3837
     
    881880
    882881UIVMActivityMonitor::UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent,
    883                                            const CMachine &machine, UIActionPool *pActionPool, bool fShowToolbar /* = false */)
     882                                           const CMachine &machine, UIActionPool *pActionPool)
    884883    : QIWithRetranslateUI<QWidget>(pParent)
    885884    , m_fGuestAdditionsAvailable(false)
    886885    , m_pMainLayout(0)
    887886    , m_pTimer(0)
    888     , m_pToolBar(0)
    889887    , m_strCPUMetricName("CPU Load")
    890888    , m_strRAMMetricName("RAM Usage")
     
    895893    , m_iTimeStep(0)
    896894    , m_enmEmbedding(enmEmbedding)
    897     , m_fShowToolbar(fShowToolbar)
    898895    , m_pActionPool(pActionPool)
    899896{
    900897    prepareMetrics();
    901898    prepareWidgets();
    902     if (fShowToolbar)
    903         prepareToolBar();
    904899    prepareActions();
    905900    retranslateUi();
     
    931926        start();
    932927    }
     928}
     929
     930QUuid UIVMActivityMonitor::machineId() const
     931{
     932    if (m_comMachine.isNull())
     933        return QUuid();
     934    return m_comMachine.GetId();
     935}
     936
     937QString UIVMActivityMonitor::machineName() const
     938{
     939    if (m_comMachine.isNull())
     940        return QString();
     941    return m_comMachine.GetName();
    933942}
    934943
     
    12511260}
    12521261
    1253 void UIVMActivityMonitor::prepareToolBar()
    1254 {
    1255     /* Create toolbar: */
    1256     m_pToolBar = new QIToolBar(parentWidget());
    1257     AssertPtrReturnVoid(m_pToolBar);
    1258     {
    1259         /* Configure toolbar: */
    1260         const int iIconMetric = (int)(QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize));
    1261         m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric));
    1262         m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    1263 
    1264 #ifdef VBOX_WS_MAC
    1265         /* Check whether we are embedded into a stack: */
    1266         if (m_enmEmbedding == EmbedTo_Stack)
    1267         {
    1268             /* Add into layout: */
    1269             layout()->addWidget(m_pToolBar);
    1270         }
    1271 #else
    1272         /* Add into layout: */
    1273         layout()->addWidget(m_pToolBar);
    1274 #endif
    1275     }
    1276 }
    1277 
    12781262void UIVMActivityMonitor::prepareActions()
    12791263{
     
    12821266    if (pExportAction)
    12831267        connect(pExportAction, &QAction::triggered, this, &UIVMActivityMonitor::sltExportMetricsToFile);
    1284 
    1285     QAction *pToResourcesAction =
    1286         m_pActionPool->action(UIActionIndex_M_Activity_S_ToVMActivityOverview);
    1287     if (pToResourcesAction)
    1288         connect(pToResourcesAction, &QAction::triggered, this, &UIVMActivityMonitor::sigSwitchToResourcesPane);
    12891268}
    12901269
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h

    r88895 r89036  
    4949class UISession;
    5050class UIRuntimeInfoWidget;
    51 class QIToolBar;
    5251
    5352#define DATA_SERIES_SIZE 2
     
    121120class  SHARED_LIBRARY_STUFF UIVMActivityMonitor : public QIWithRetranslateUI<QWidget>
    122121{
     122
    123123    Q_OBJECT;
    124 
    125  signals:
    126 
    127     void sigSwitchToResourcesPane();
    128124
    129125public:
     
    132128      * @param machine is machine reference. */
    133129    UIVMActivityMonitor(EmbedTo enmEmbedding, QWidget *pParent, const CMachine &machine,
    134                          UIActionPool *pActionPool,bool fShowToolbar = false);
     130                        UIActionPool *pActionPool);
    135131    void setMachine(const CMachine &machine);
    136 
    137 #ifdef VBOX_WS_MAC
    138     QIToolBar *toolbar() const { return m_pToolBar; }
    139 #endif
     132    QUuid machineId() const;
     133    QString machineName() const;
    140134
    141135 public slots:
     
    165159    void prepareWidgets();
    166160    void prepareMetrics();
    167     void prepareToolBar();
    168161    void prepareActions();
    169162    bool guestAdditionsAvailable(int iMinimumMajorVersion);
     
    205198    QVBoxLayout *m_pMainLayout;
    206199    QTimer      *m_pTimer;
    207     QIToolBar   *m_pToolBar;
    208200
    209201    /** @name The following are used during UIPerformanceCollector::QueryMetricsData(..)
     
    258250    quint64 m_iTimeStep;
    259251    EmbedTo m_enmEmbedding;
    260     bool    m_fShowToolbar;
    261252    UIActionPool *m_pActionPool;
    262253};
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp

    r89011 r89036  
    209209}
    210210
     211
    211212void UIVMLogViewerWidget::setSelectedVMListItems(const QList<UIVirtualMachineItem*> &items)
    212213{
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.cpp

    r88999 r89036  
    2828#include "UIDetails.h"
    2929#include "UIIconPool.h"
    30 #include "UIVMActivityMonitor.h"
     30#include "UIVMActivityToolWidget.h"
    3131#include "UISnapshotPane.h"
    3232#include "UIToolPaneMachine.h"
     
    193193            case UIToolType_VMActivity:
    194194            {
    195                 m_pPaneVMActivityMonitor = new UIVMActivityMonitor(EmbedTo_Stack, 0,
    196                                                                      m_comMachine, m_pActionPool, false /* Show toolbar */);
     195                m_pPaneVMActivityMonitor = new UIVMActivityToolWidget(EmbedTo_Stack, m_pActionPool,
     196                                                                      false /* Show toolbar */, 0 /* Parent */);
    197197                AssertPtrReturnVoid(m_pPaneVMActivityMonitor);
    198198#ifndef VBOX_WS_MAC
     
    203203                /* Configure pane: */
    204204                m_pPaneVMActivityMonitor->setProperty("ToolType", QVariant::fromValue(UIToolType_VMActivity));
    205 
     205                m_pPaneVMActivityMonitor->setSelectedVMListItems(m_items);
    206206                /* Add into layout: */
    207207                m_pLayout->addWidget(m_pPaneVMActivityMonitor);
    208208                m_pLayout->setCurrentWidget(m_pPaneVMActivityMonitor);
    209209
    210                 connect(m_pPaneVMActivityMonitor, &UIVMActivityMonitor::sigSwitchToResourcesPane,
     210                connect(m_pPaneVMActivityMonitor, &UIVMActivityToolWidget::sigSwitchToResourcesPane,
    211211                        this, &UIToolPaneMachine::sigSwitchToResourcesPane);
    212212                break;
     
    285285        m_pPaneLogViewer->setSelectedVMListItems(m_items);
    286286    }
     287    /* Update performance monitor pane is it is open: */
     288    if (isToolOpened(UIToolType_VMActivity))
     289    {
     290        AssertPtrReturnVoid(m_pPaneVMActivityMonitor);
     291        m_pPaneVMActivityMonitor->setSelectedVMListItems(m_items);
     292    }
    287293}
    288294
     
    297303        AssertPtrReturnVoid(m_pPaneSnapshots);
    298304        m_pPaneSnapshots->setMachine(m_comMachine);
    299     }
    300     /* Update performance monitor pane is it is open: */
    301     if (isToolOpened(UIToolType_VMActivity))
    302     {
    303         AssertPtrReturnVoid(m_pPaneVMActivityMonitor);
    304         m_pPaneVMActivityMonitor->setMachine(m_comMachine);
    305305    }
    306306}
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.h

    r88071 r89036  
    3939class UIDetails;
    4040class UIErrorPane;
    41 class UIVMActivityMonitor;
     41class UIVMActivityToolWidget;
    4242class UISnapshotPane;
    4343class UIVirtualMachineItem;
     
    133133    UIVMLogViewerWidget *m_pPaneLogViewer;
    134134    /** Holds the Performance Monitor pane instance. */
    135     UIVMActivityMonitor *m_pPaneVMActivityMonitor;
     135    UIVMActivityToolWidget *m_pPaneVMActivityMonitor;
    136136
    137137    /** Holds whether this pane is active. */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp

    r88862 r89036  
    10561056    if (pItem && pItem->itemType() != UIVirtualMachineItemType_Local)
    10571057        retrictedTypes << UIToolType_Snapshots << UIToolType_Logs << UIToolType_VMActivity;
    1058     else if (pItem && !pItem->isItemStarted())
    1059         retrictedTypes << UIToolType_VMActivity;
     1058    // else if (pItem && !pItem->isItemStarted())
     1059    //     retrictedTypes << UIToolType_VMActivity;
    10601060    if (retrictedTypes.contains(m_pPaneTools->toolsType()))
    10611061        m_pPaneTools->setToolsType(UIToolType_Details);
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