VirtualBox

Changeset 83509 in vbox for trunk/src


Ignore:
Timestamp:
Apr 2, 2020 8:38:43 AM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9686. Working on host stats. monitor widget.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/UIMonitorCommon.cpp

    r83496 r83509  
    181181                               const QRectF &chartRect, const QRectF &innerRect, int iOverlayAlpha)
    182182{
     183    (void)data2;
     184    (void)data2Color;
     185    (void)iOverlayAlpha;
    183186    /* Draw two arcs. one for the inner the other for the outer circle: */
    184187    painter.setPen(QPen(QColor(100, 100, 100, iOverlayAlpha), 1));
     
    201204    painter.drawPath(doughnutSlice(chartRect, innerRect, 90 - fAngle, fAngle2));
    202205}
     206
     207/* static */
     208QRectF UIMonitorCommon::getScaledRect(const QRectF &outerFrame, float fScaleX, float fScaleY)
     209{
     210    if (!outerFrame.isValid())
     211        return QRectF();
     212    QPointF center = outerFrame.center();
     213    float iWidth = fScaleX * outerFrame.width();
     214    float iHeight = fScaleY * outerFrame.height();
     215    return QRectF(QPointF(center.x() - 0.5 * iWidth, center.y() - 0.5 * iHeight),
     216                 QSizeF(iWidth, iHeight));
     217}
     218
     219/* static */
     220void UIMonitorCommon::drawDoughnutChart(QPainter &painter, quint64 iMaximum, quint64 data,
     221                                        const QRectF &chartRect, const QRectF &innerRect, int iOverlayAlpha, const QColor &color)
     222{
     223    /* Draw a whole non-filled circle: */
     224    painter.setPen(QPen(QColor(100, 100, 100, iOverlayAlpha), 1));
     225    painter.drawArc(chartRect, 0, 3600 * 16);
     226    painter.drawArc(innerRect, 0, 3600 * 16);
     227
     228    /* Draw a white filled circle and the arc for data: */
     229    QPainterPath background = UIMonitorCommon::wholeArc(chartRect).subtracted(UIMonitorCommon::wholeArc(innerRect));
     230    painter.setPen(Qt::NoPen);
     231    painter.setBrush(QColor(255, 255, 255, iOverlayAlpha));
     232    painter.drawPath(background);
     233
     234    /* Draw the doughnut slice for the data: */
     235    float fAngle = 360.f * data / (float)iMaximum;
     236    painter.setBrush(color);
     237    painter.drawPath(UIMonitorCommon::doughnutSlice(chartRect, innerRect, 90, fAngle));
     238}
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/UIMonitorCommon.h

    r83496 r83509  
    5757                                              const QRectF &chartRect, const QRectF &innerRect, int iOverlayAlpha);
    5858
     59        /* Returns a rectangle which is co-centric with @p outerFrame and scaled by @p fScaleX and fScaleY. */
     60        static QRectF getScaledRect(const QRectF &outerFrame, float fScaleX, float fScaleY);
     61
     62        static void drawDoughnutChart(QPainter &painter, quint64 iMaximum, quint64 data,
     63                                      const QRectF &chartRect, const QRectF &innerRect, int iOverlayAlpha, const QColor &color);
    5964
    6065private:
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance/UIPerformanceMonitor.cpp

    r83496 r83509  
    106106       void drawPieChart(QPainter &painter, quint64 iMaximum, int iDataIndex, const QRectF &chartRect, bool fWithBorder = true);
    107107       void drawCombinedPieCharts(QPainter &painter, quint64 iMaximum);
    108        void drawDoughnutChart(QPainter &painter, quint64 iMaximum, int iDataIndex,
    109                               const QRectF &chartRect, const QRectF &innerRect);
    110108
    111109       /** Drawing an overlay rectangle over the charts to indicate that they are disabled. */
     
    481479}
    482480
    483 void UIChart::drawDoughnutChart(QPainter &painter, quint64 iMaximum, int iDataIndex,
    484                                 const QRectF &chartRect, const QRectF &innerRect)
    485 {
    486     const QQueue<quint64> *data = m_pMetric->data(iDataIndex);
    487     if (!data || data->isEmpty())
    488         return;
    489 
    490     /* Draw a whole non-filled circle: */
    491     painter.setPen(QPen(QColor(100, 100, 100, m_iOverlayAlpha), 1));
    492     painter.drawArc(chartRect, 0, 3600 * 16);
    493     painter.drawArc(innerRect, 0, 3600 * 16);
    494 
    495     /* Draw a white filled circle and the arc for data: */
    496     QPainterPath background = UIMonitorCommon::wholeArc(chartRect).subtracted(UIMonitorCommon::wholeArc(innerRect));
    497     painter.setPen(Qt::NoPen);
    498     painter.setBrush(QColor(255, 255, 255, m_iOverlayAlpha));
    499     painter.drawPath(background);
    500 
    501     /* Draw the doughnut slice for the data: */
    502     float fAngle = 360.f * data->back() / (float)iMaximum;
    503     painter.setBrush(conicalGradientForDataSeries(chartRect, iDataIndex));
    504     painter.drawPath(UIMonitorCommon::doughnutSlice(chartRect, innerRect, 90, fAngle));
    505 }
    506 
    507481QConicalGradient UIChart::conicalGradientForDataSeries(const QRectF &rectangle, int iDataIndex)
    508482{
     
    530504    if (fData0 && fData1)
    531505    {
    532         QRectF innerRect(QPointF(chartRect.left() + 0.25 * chartRect.width(), chartRect.top() + 0.25 * chartRect.height()),
    533                          QSizeF(0.5 * chartRect.width(), 0.5 * chartRect.height()));
    534506        /* Draw a doughnut chart where data series are stacked on to of each other: */
    535507        if (m_pMetric->data(0) && !m_pMetric->data(0)->isEmpty() &&
    536508            m_pMetric->data(1) && !m_pMetric->data(1)->isEmpty())
    537             UIMonitorCommon::drawCombinedDoughnutChart(m_pMetric->data(0)->back(), dataSeriesColor(0, 50),
    538                                                        m_pMetric->data(1)->back(), dataSeriesColor(1, 50),
    539                                                        painter, iMaximum, chartRect, innerRect, m_iOverlayAlpha);
     509            UIMonitorCommon::drawCombinedDoughnutChart(m_pMetric->data(1)->back(), dataSeriesColor(1, 50),
     510                                                       m_pMetric->data(0)->back(), dataSeriesColor(0, 50),
     511                                                       painter, iMaximum, chartRect,
     512                                                       UIMonitorCommon::getScaledRect(chartRect, 0.5f, 0.5f), m_iOverlayAlpha);
    540513#if 0
    541514        /* Draw a doughnut shaped chart and then pie chart inside it: */
    542         drawDoughnutChart(painter, iMaximum, 0 /* iDataIndex */, chartRect, innerRect);
     515        UIMonitorCommon::drawDoughnutChart(painter, iMaximum, m_pMetric->data(0)->back(),
     516                                           chartRect, innerRect, m_iOverlayAlpha, dataSeriesColor(0));
    543517        drawPieChart(painter, iMaximum, 1 /* iDataIndex */, innerRect, false);
    544518#endif
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp

    r83496 r83509  
    2121#include <QHeaderView>
    2222#include <QItemDelegate>
     23#include <QLabel>
    2324#include <QMenuBar>
     25#include <QPainter>
    2426#include <QPushButton>
    2527#include <QTableView>
     
    6163};
    6264
     65///#define DEBUG_BACKGROUND
     66/*********************************************************************************************************************************
     67*   Class UIVMResourceMonitorHostStats definition.                                                                           *
     68*********************************************************************************************************************************/
     69
     70class UIVMResourceMonitorHostStats
     71{
     72
     73public:
     74
     75    UIVMResourceMonitorHostStats();
     76    quint64 m_iCPUUserLoad;
     77    quint64 m_iCPUKernelLoad;
     78    quint64 m_iCPUFreq;
     79    quint64 m_iTotalRAM;
     80    quint64 m_iFreeRAM;
     81};
     82
     83
     84/*********************************************************************************************************************************
     85*   Class UIVMResourceMonitorHostCPUWidget definition.                                                                           *
     86*********************************************************************************************************************************/
     87
     88class UIVMResourceMonitorHostCPUWidget : public QWidget
     89{
     90
     91    Q_OBJECT;
     92
     93public:
     94
     95    UIVMResourceMonitorHostCPUWidget(QWidget *pParent = 0);
     96    void setCPULoad(quint64 iUserLoad, quint64 iKernelLoad, quint64 iCPUFreq);
     97    void setChartColors(const QColor &CPUUserLoadColor, const QColor &CPUKernelLoadColor);
     98
     99protected:
     100
     101    virtual void paintEvent(QPaintEvent *pEvent) /* override */;
     102
     103private:
     104
     105    quint64 m_iCPUUserLoad;
     106    quint64 m_iCPUKernelLoad;
     107    quint64 m_iCPUFreq;
     108    int m_iMinimumHeight;
     109    int m_iMargin;
     110    QColor m_CPUUserColor;
     111    QColor m_CPUKernelColor;
     112};
     113
    63114
    64115/*********************************************************************************************************************************
     
    66117*********************************************************************************************************************************/
    67118
    68 class UIVMResourceMonitorHostStatsWidget : public QWidget
     119class UIVMResourceMonitorHostStatsWidget : public QIWithRetranslateUI<QWidget>
    69120{
    70121
    71122    Q_OBJECT;
    72123
    73 
    74124public:
    75125
    76126    UIVMResourceMonitorHostStatsWidget(QWidget *pParent = 0);
    77 
     127    void setHostStats(const UIVMResourceMonitorHostStats &hostStats);
     128
     129protected:
     130
     131    virtual void retranslateUi() /* override */;
     132
     133private:
     134
     135    void prepare();
     136    void updateLabels();
     137
     138    UIVMResourceMonitorHostCPUWidget   *m_pHostCPUChart;
     139    QLabel                             *m_pCPUTitleLabel;
     140    QLabel                             *m_pCPUUserLabel;
     141    QLabel                             *m_pCPUKernelLabel;
     142    QLabel                             *m_pCPUTotalLabel;
     143    QColor                              m_CPUUserColor;
     144    QColor                              m_CPUKernelColor;
     145    UIVMResourceMonitorHostStats        m_hostStats;
    78146};
    79147
     
    150218
    151219/*********************************************************************************************************************************
    152 *   Class UIVMResourceMonitorHostStats definition.                                                                           *
    153 *********************************************************************************************************************************/
    154 
    155 class UIVMResourceMonitorHostStats
    156 {
    157 
    158 public:
    159 
    160     UIVMResourceMonitorHostStats();
    161     quint64 m_fCPUUserLoad;
    162     quint64 m_fCPUKernelLoad;
    163     quint64 m_iTotalRAM;
    164     quint64 m_iFreeRAM;
    165 };
    166 
    167 /*********************************************************************************************************************************
    168220*   Class UIVMResourceMonitorCheckBox definition.                                                                           *
    169221*********************************************************************************************************************************/
     
    221273
    222274    void sigDataUpdate();
     275    void sigHostStatsUpdate(const UIVMResourceMonitorHostStats &stats);
    223276
    224277public:
     
    283336
    284337/*********************************************************************************************************************************
     338*   Class UIVMResourceMonitorHostCPUWidget implementation.                                                                       *
     339*********************************************************************************************************************************/
     340
     341UIVMResourceMonitorHostCPUWidget::UIVMResourceMonitorHostCPUWidget(QWidget *pParent /* = 0 */)
     342    :QWidget(pParent)
     343    , m_iCPUUserLoad(0)
     344    , m_iCPUKernelLoad(0)
     345    , m_iCPUFreq(0)
     346{
     347    m_iMargin = 3;
     348    m_iMinimumHeight =  3 * QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize);
     349    setMinimumSize(m_iMinimumHeight, m_iMinimumHeight);
     350}
     351
     352void UIVMResourceMonitorHostCPUWidget::setCPULoad(quint64 iUserLoad, quint64 iKernelLoad, quint64 iFreq)
     353{
     354    m_iCPUUserLoad = iUserLoad;
     355    m_iCPUKernelLoad = iKernelLoad;
     356    m_iCPUFreq = iFreq;
     357    update();
     358}
     359
     360void UIVMResourceMonitorHostCPUWidget::setChartColors(const QColor &CPUUserLoadColor, const QColor &CPUKernelLoadColor)
     361{
     362    m_CPUUserColor = CPUUserLoadColor;
     363    m_CPUKernelColor = CPUKernelLoadColor;
     364}
     365
     366void UIVMResourceMonitorHostCPUWidget::paintEvent(QPaintEvent *pEvent)
     367{
     368    QWidget::paintEvent(pEvent);
     369
     370    QPainter painter(this);
     371    painter.setRenderHint(QPainter::Antialiasing);
     372
     373    int iFrameHeight = m_iMinimumHeight - 2 * m_iMargin;
     374    QRectF outerRect = QRectF(QPoint(m_iMargin,m_iMargin), QSize(iFrameHeight, iFrameHeight));
     375    QRectF innerRect = UIMonitorCommon::getScaledRect(outerRect, 0.6f, 0.6f);
     376    UIMonitorCommon::drawCombinedDoughnutChart(m_iCPUKernelLoad, m_CPUKernelColor,
     377                                               m_iCPUUserLoad, m_CPUUserColor,
     378                                               painter, 100,
     379                                               outerRect, innerRect, 80);
     380    float mul = 1.f / 1.4f;
     381    QRectF textRect =  UIMonitorCommon::getScaledRect(innerRect, mul, mul);
     382    painter.setPen(Qt::black);
     383    painter.drawText(textRect, Qt::AlignCenter, QString("%1\nMHz").arg(QString::number(m_iCPUFreq)));
     384}
     385
     386
     387/*********************************************************************************************************************************
    285388*   Class UIVMResourceMonitorHostStatsWidget implementation.                                                                     *
    286389*********************************************************************************************************************************/
    287390
    288391UIVMResourceMonitorHostStatsWidget::UIVMResourceMonitorHostStatsWidget(QWidget *pParent /* = 0 */)
    289     :QWidget(pParent)
    290 {
    291 }
     392    : QIWithRetranslateUI<QWidget>(pParent)
     393    , m_pHostCPUChart(0)
     394    , m_pCPUTitleLabel(0)
     395    , m_pCPUUserLabel(0)
     396    , m_pCPUKernelLabel(0)
     397    , m_pCPUTotalLabel(0)
     398    , m_CPUUserColor(Qt::red)
     399    , m_CPUKernelColor(Qt::blue)
     400{
     401    prepare();
     402    retranslateUi();
     403#ifdef DEBUG_BACKGROUND
     404    QPalette pal = palette();
     405    pal.setColor(QPalette::Background, Qt::red);
     406    setAutoFillBackground(true);
     407    setPalette(pal);
     408#endif
     409}
     410
     411void UIVMResourceMonitorHostStatsWidget::setHostStats(const UIVMResourceMonitorHostStats &hostStats)
     412{
     413    m_hostStats = hostStats;
     414    if (m_pHostCPUChart)
     415        m_pHostCPUChart->setCPULoad(m_hostStats.m_iCPUUserLoad, m_hostStats.m_iCPUKernelLoad, m_hostStats.m_iCPUFreq);
     416    updateLabels();
     417}
     418
     419void UIVMResourceMonitorHostStatsWidget::retranslateUi()
     420{
     421    updateLabels();
     422}
     423
     424void UIVMResourceMonitorHostStatsWidget::prepare()
     425{
     426    QHBoxLayout *pLayout = new QHBoxLayout;
     427    setLayout(pLayout);
     428
     429    /* Host CPU Labels: */
     430    QWidget *pCPULabelContainer = new QWidget;
     431    pCPULabelContainer->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
     432
     433#ifdef DEBUG_BACKGROUND
     434    QPalette pal = pCPULabelContainer->palette();
     435    pal.setColor(QPalette::Background, Qt::yellow);
     436    pCPULabelContainer->setAutoFillBackground(true);
     437    pCPULabelContainer->setPalette(pal);
     438#endif
     439    pLayout->addWidget(pCPULabelContainer);
     440    QVBoxLayout *pCPULabelsLayout = new QVBoxLayout;
     441    pCPULabelsLayout->setContentsMargins(0, 0, 0, 0);
     442    pCPULabelContainer->setLayout(pCPULabelsLayout);
     443    m_pCPUTitleLabel = new QLabel;
     444    pCPULabelsLayout->addWidget(m_pCPUTitleLabel);
     445    m_pCPUUserLabel = new QLabel;
     446    pCPULabelsLayout->addWidget(m_pCPUUserLabel);
     447    m_pCPUKernelLabel = new QLabel;
     448    pCPULabelsLayout->addWidget(m_pCPUKernelLabel);
     449    m_pCPUTotalLabel = new QLabel;
     450    pCPULabelsLayout->addWidget(m_pCPUTotalLabel);
     451    pCPULabelsLayout->setAlignment(Qt::AlignTop);
     452    //pLayout->setAlignment(Qt::AlignTop);
     453    pCPULabelsLayout->setSpacing(0);
     454    /* Host CPU chart widget: */
     455    m_pHostCPUChart = new UIVMResourceMonitorHostCPUWidget;
     456    if (m_pHostCPUChart)
     457    {
     458        pLayout->addWidget(m_pHostCPUChart);
     459        m_pHostCPUChart->setChartColors(m_CPUUserColor, m_CPUKernelColor);
     460    }
     461    pLayout->addStretch(2);
     462}
     463
     464void UIVMResourceMonitorHostStatsWidget::updateLabels()
     465{
     466    if (m_pCPUTitleLabel)
     467        m_pCPUTitleLabel->setText(QString("<b>%1</b>").arg(tr("Host CPU Load")));
     468    if (m_pCPUUserLabel)
     469    {
     470        QString strColor = QColor(m_CPUUserColor).name(QColor::HexRgb);
     471        m_pCPUUserLabel->setText(QString("<font color=\"%1\">%2:%3%</font>").arg(strColor).arg(tr("User")).arg(QString::number(m_hostStats.m_iCPUUserLoad)));
     472    }
     473    if (m_pCPUKernelLabel)
     474    {
     475        QString strColor = QColor(m_CPUKernelColor).name(QColor::HexRgb);
     476        m_pCPUKernelLabel->setText(QString("<font color=\"%1\">%2:%3%</font>").arg(strColor).arg(tr("Kernel")).arg(QString::number(m_hostStats.m_iCPUKernelLoad)));
     477    }
     478    if (m_pCPUTotalLabel)
     479        m_pCPUTotalLabel->setText(QString("%1:%2%").arg(tr("Total")).arg(m_hostStats.m_iCPUUserLoad + m_hostStats.m_iCPUKernelLoad));
     480}
     481
    292482
    293483
     
    445635
    446636UIVMResourceMonitorHostStats::UIVMResourceMonitorHostStats()
    447     : m_fCPUUserLoad(0)
    448     , m_fCPUKernelLoad(0)
     637    : m_iCPUUserLoad(0)
     638    , m_iCPUKernelLoad(0)
     639    , m_iCPUFreq(0)
    449640    , m_iTotalRAM(0)
    450641    , m_iFreeRAM(0)
     
    698889                m_itemList[i].m_uCPUVMMLoad = aPctVMM;
    699890            }
    700 
    701891            /* Network rate: */
    702892            if (fNetworkColumns)
     
    709899                m_itemList[i].m_uNetworkUpRate = m_itemList[i].m_uNetworkUpTotal - uPrevUpTotal;
    710900            }
    711 
    712901            /* IO rate: */
    713902            if (fIOColumns)
     
    720909                m_itemList[i].m_uDiskReadRate = m_itemList[i].m_uDiskReadTotal - uPrevReadTotal;
    721910            }
    722 
    723911           /* VM Exits: */
    724912           if (fVMExitColumn)
     
    731919    }
    732920    emit sigDataUpdate();
     921    emit sigHostStatsUpdate(m_hostStats);
    733922}
    734923
     
    745934        m_nameList << "Guest/RAM/Usage*";
    746935    /* This is for the host: */
    747     m_nameList << "CPU/Load/User:avg";
    748     m_nameList << "CPU/Load/Kernel:avg";
     936    m_nameList << "CPU*";
     937    //m_nameList << "CPU/Load/Kernel*";
    749938    m_objectList = QVector<CUnknown>(m_nameList.size(), CUnknown());
    750939    m_performanceMonitor.SetupMetrics(m_nameList, m_objectList, iPeriod, iMetricSetupCount);
     
    795984            }
    796985        }
    797         else if (aReturnNames[i].contains("CPU/Load/User", Qt::CaseInsensitive))
     986        else if (aReturnNames[i].contains("CPU/Load/User", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))
    798987        {
    799988            CHost comHost = (CHost)aReturnObjects[i];
    800989            if (!comHost.isNull())
    801                 m_hostStats.m_fCPUUserLoad = fData;
     990                m_hostStats.m_iCPUUserLoad = fData;
    802991        }
    803         else if (aReturnNames[i].contains("CPU/Load/Kernel", Qt::CaseInsensitive))
     992        else if (aReturnNames[i].contains("CPU/Load/Kernel", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))
    804993        {
    805994            CHost comHost = (CHost)aReturnObjects[i];
    806995            if (!comHost.isNull())
    807                 m_hostStats.m_fCPUKernelLoad = fData;
     996                m_hostStats.m_iCPUKernelLoad = fData;
    808997        }
     998        else if (aReturnNames[i].contains("CPU/MHz", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))
     999        {
     1000            CHost comHost = (CHost)aReturnObjects[i];
     1001            if (!comHost.isNull())
     1002                m_hostStats.m_iCPUFreq = fData;
     1003        }
     1004
    8091005    }
    8101006    for (int i = 0; i < m_itemList.size(); ++i)
     
    8571053    , m_pProxyModel(0)
    8581054    , m_pModel(0)
     1055    , m_pHostStatsWidget(0)
    8591056    , m_pColumnSelectionMenu(0)
    8601057    , m_fIsCurrentTool(true)
     
    9611158    if (m_fShowToolbar)
    9621159        prepareToolBar();
     1160
     1161    m_pHostStatsWidget = new UIVMResourceMonitorHostStatsWidget;
     1162    if (m_pHostStatsWidget)
     1163        layout()->addWidget(m_pHostStatsWidget);
    9631164
    9641165    m_pModel = new UIResourceMonitorModel(this);
     
    9891190        m_pTableView->sortByColumn(0, Qt::AscendingOrder);
    9901191        connect(m_pModel, &UIResourceMonitorModel::sigDataUpdate, this, &UIResourceMonitorWidget::sltHandleDataUpdate);
    991 
     1192        connect(m_pModel, &UIResourceMonitorModel::sigHostStatsUpdate, this, &UIResourceMonitorWidget::sltHandleHostStatsUpdate);
    9921193        updateModelColumVisibilityCache();
    9931194    }
     
    11021303}
    11031304
     1305void UIResourceMonitorWidget::sltHandleHostStatsUpdate(const UIVMResourceMonitorHostStats &stats)
     1306{
     1307    if (m_pHostStatsWidget)
     1308        m_pHostStatsWidget->setHostStats(stats);
     1309}
     1310
    11041311void UIResourceMonitorWidget::sltHandleDataUpdate()
    11051312{
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.h

    r83494 r83509  
    3232class QAbstractButton;
    3333class QFrame;
     34class QLabel;
    3435class QTableView;
    3536class QTreeWidgetItem;
     
    3940class UIResourceMonitorProxyModel;
    4041class UIResourceMonitorModel;
     42class UIVMResourceMonitorHostStats;
     43class UIVMResourceMonitorHostStatsWidget;
    4144class UIVMResourceMonitorTableView;
    4245
     
    7881    void sltToggleColumnSelectionMenu(bool fChecked);
    7982    void sltHandleColumnAction(bool fChecked);
     83    void sltHandleHostStatsUpdate(const UIVMResourceMonitorHostStats &stats);
    8084
    8185private:
     
    8993        void prepare();
    9094        void prepareWidgets();
     95        void prepareHostStatsWidgets();
    9196        void prepareToolBar();
    9297        void prepareActions();
     
    106111      * @{ */
    107112        UIToolBar *m_pToolBar;
    108         UIVMResourceMonitorTableView *m_pTableView;
    109         UIResourceMonitorProxyModel *m_pProxyModel;
    110         UIResourceMonitorModel      *m_pModel;
    111         QVector<QString>             m_columnCaptions;
     113        UIVMResourceMonitorTableView       *m_pTableView;
     114        UIResourceMonitorProxyModel        *m_pProxyModel;
     115        UIResourceMonitorModel             *m_pModel;
     116        QVector<QString>                    m_columnCaptions;
    112117        /* The key is the column id (VMResourceMonitorColumn) and value is true if the column is visible. */
    113         QMap<int, bool>              m_columnVisible;
     118        QMap<int, bool>                     m_columnVisible;
     119        UIVMResourceMonitorHostStatsWidget *m_pHostStatsWidget;
     120
     121
    114122    /** @} */
    115123    QFrame *m_pColumnSelectionMenu;
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