VirtualBox

Changeset 104962 in vbox


Ignore:
Timestamp:
Jun 19, 2024 11:36:12 AM (3 months ago)
Author:
vboxsync
Message:

FE/Qt. bugref:10659. Updating cloud vm metrics.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp

    r104955 r104962  
    4040#include "UITranslator.h"
    4141#include "UIVirtualBoxEventHandler.h"
     42#include "UIVirtualMachineItemCloud.h"
    4243#include "UIVMActivityOverviewModelView.h"
    4344
     
    5354#include "CMachineDebugger.h"
    5455#include "CSession.h"
     56#include "KMetricType.h"
    5557
    5658
     
    8284private:
    8385
    84     void updateCellText(VMActivityOverviewColumn enmColumnIndex, const QString &strText);
     86
    8587
    8688    KMachineState    m_enmMachineState;
     
    289291}
    290292
    291 void UIActivityOverviewAccessibleRowLocal::updateCellText(VMActivityOverviewColumn enmColumnIndex, const QString &strText)
    292 {
    293     if (m_cells.value(enmColumnIndex, 0))
    294         m_cells[enmColumnIndex]->setText(strText);
    295 }
    296 
    297293QString UIActivityOverviewAccessibleRowLocal::machineStateString() const
    298294{
     
    356352}
    357353
    358 void UIActivityOverviewAccessibleRowCloud::sltMetricDataReceived(KMetricType /*enmMetricType*/,
     354void UIActivityOverviewAccessibleRowCloud::sltMetricDataReceived(KMetricType enmMetricType,
    359355                                                        const QVector<QString> &data, const QVector<QString> &timeStamps)
    360356{
     
    366362        return;
    367363
    368     // int iDecimalCount = 2;
    369     // QLocale locale;
    370     // if (enmMetricType == KMetricType_CpuUtilization)
    371     // {
    372     //     //QString QLocale::toString(double i, char f = 'g', int prec = 6) const
    373 
    374     //     // m_columnData[VMActivityOverviewColumn_CPUGuestLoad] =
    375     //     //     QString("%1%").arg(QString::number(data[0].toFloat(), 'f', iDecimalCount));
    376 
    377     //     m_columnData[VMActivityOverviewColumn_CPUGuestLoad] =
    378     //         QString("%1%").arg(locale.toString(data[0].toFloat(), 'f', iDecimalCount));
    379     // }
    380     // else if (enmMetricType == KMetricType_MemoryUtilization)
    381     // {
    382     //      if (m_uTotalRAM != 0)
    383     //      {
    384     //          quint64 uUsedRAM = (quint64)data[0].toFloat() * (m_uTotalRAM / 100.f);
    385     //          m_columnData[VMActivityOverviewColumn_RAMUsedAndTotal] =
    386     //              QString("%1/%2").arg(UITranslator::formatSize(_1K * uUsedRAM, iDecimalCount)).
    387     //              arg(UITranslator::formatSize(_1K * m_uTotalRAM, iDecimalCount));
    388     //      }
    389     //      m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] =
    390     //          QString("%1%").arg(QString::number(data[0].toFloat(), 'f', iDecimalCount));
    391     // }
    392     // else if (enmMetricType == KMetricType_NetworksBytesOut)
    393     //     m_columnData[VMActivityOverviewColumn_NetworkUpRate] =
    394     //         UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount);
    395     // else if (enmMetricType == KMetricType_NetworksBytesIn)
    396     //     m_columnData[VMActivityOverviewColumn_NetworkDownRate] =
    397     //         UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount);
    398     // else if (enmMetricType == KMetricType_DiskBytesRead)
    399     //     m_columnData[VMActivityOverviewColumn_DiskIOReadRate] =
    400     //         UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount);
    401     // else if (enmMetricType == KMetricType_DiskBytesWritten)
    402     //     m_columnData[VMActivityOverviewColumn_DiskIOWriteRate] =
    403     //         UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount);
     364    int iDecimalCount = 2;
     365    QLocale locale;
     366    if (enmMetricType == KMetricType_CpuUtilization)
     367    {
     368        updateCellText(VMActivityOverviewColumn_CPUGuestLoad, QString("%1%").arg(locale.toString(data[0].toFloat(), 'f', iDecimalCount)));
     369    }
     370    else if (enmMetricType == KMetricType_MemoryUtilization)
     371    {
     372         if (m_uTotalRAM != 0)
     373         {
     374             quint64 uUsedRAM = (quint64)data[0].toFloat() * (m_uTotalRAM / 100.f);
     375             updateCellText(VMActivityOverviewColumn_RAMUsedAndTotal,
     376                            QString("%1/%2").arg(UITranslator::formatSize(_1K * uUsedRAM, iDecimalCount)).
     377                            arg(UITranslator::formatSize(_1K * m_uTotalRAM, iDecimalCount)));
     378         }
     379         updateCellText(VMActivityOverviewColumn_RAMUsedPercentage,
     380                        QString("%1%").arg(QString::number(data[0].toFloat(), 'f', iDecimalCount)));
     381    }
     382    else if (enmMetricType == KMetricType_NetworksBytesOut)
     383        updateCellText(VMActivityOverviewColumn_NetworkUpRate,
     384                       UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount));
     385    else if (enmMetricType == KMetricType_NetworksBytesIn)
     386        updateCellText(VMActivityOverviewColumn_NetworkDownRate,
     387                       UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount));
     388    else if (enmMetricType == KMetricType_DiskBytesRead)
     389        updateCellText(VMActivityOverviewColumn_DiskIOReadRate,
     390                       UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount));
     391    else if (enmMetricType == KMetricType_DiskBytesWritten)
     392        updateCellText(VMActivityOverviewColumn_DiskIOWriteRate,
     393                       UITranslator::formatSize((quint64)data[0].toFloat(), iDecimalCount));
    404394
    405395    sender()->deleteLater();
     
    429419void UIActivityOverviewAccessibleRowCloud::resetColumData()
    430420{
    431     // for (int i = (int) VMActivityOverviewColumn_CPUGuestLoad;
    432     //      i < (int)VMActivityOverviewColumn_Max; ++i)
    433     //     m_columnData[i] = UIVMActivityOverviewWidget::tr("N/A");
     421    for (int i = (int) VMActivityOverviewColumn_CPUGuestLoad;
     422         i < (int)VMActivityOverviewColumn_Max; ++i)
     423        updateCellText(i,  QApplication::translate("UIVMActivityOverviewWidget", "N/A"));
    434424}
    435425
     
    581571{
    582572    initialize();
     573}
     574
     575void UIActivityOverviewAccessibleModel::setCloudMachineItems(const QList<UIVirtualMachineItemCloud*> &cloudItems)
     576{
     577    QVector<QUuid> newIds;
     578    foreach (const UIVirtualMachineItemCloud* pItem, cloudItems)
     579    {
     580        if (!pItem)
     581            continue;
     582        QUuid id = pItem->machineId();
     583        if (id.isNull())
     584            continue;
     585        newIds << id;
     586    }
     587    QVector<UIActivityOverviewAccessibleRow*> originalItemList = m_rows;
     588
     589    /* Remove m_rows items that are not in @cloudItems: */
     590    QMutableVectorIterator<UIActivityOverviewAccessibleRow*> iterator(m_rows);
     591    while (iterator.hasNext())
     592    {
     593        UIActivityOverviewAccessibleRow *pItem = iterator.next();
     594        if (!pItem->isCloudVM())
     595            continue;
     596        if (pItem && !newIds.contains(pItem->machineId()))
     597            iterator.remove();
     598    }
     599
     600    /* Add items that are not in m_rows: */
     601    foreach (const UIVirtualMachineItemCloud* pItem, cloudItems)
     602    {
     603        if (!pItem)
     604            continue;
     605        CCloudMachine comMachine = pItem->machine();
     606        if (!comMachine.isOk())
     607            continue;
     608        QUuid id = comMachine.GetId();
     609        /* Linearly search for the vm with th same id. I cannot make QVector::contain work since we store pointers: */
     610        bool fFound = false;
     611        for (int i = 0; i < m_rows.size() && !fFound; ++i)
     612        {
     613            if (m_rows[i] && m_rows[i]->machineId() == id)
     614                fFound = true;
     615        }
     616        if (!fFound)
     617            m_rows.append(new UIActivityOverviewAccessibleRowCloud(m_pTableView, id, comMachine.GetName(), comMachine));
     618    }
     619
     620    /* Update cloud machine states: */
     621    for (int i = 0; i < m_rows.size(); ++i)
     622    {
     623        if (!m_rows[i] || !m_rows[i]->isCloudVM())
     624            continue;
     625        UIActivityOverviewAccessibleRowCloud *pItem = qobject_cast<UIActivityOverviewAccessibleRowCloud*>(m_rows[i]);
     626        if (!pItem)
     627            continue;
     628        pItem->updateMachineState();
     629    }
    583630}
    584631
     
    9981045}
    9991046
     1047void UIActivityOverviewAccessibleRow::updateCellText(int /*VMActivityOverviewColumn*/ enmColumnIndex, const QString &strText)
     1048{
     1049    if (m_cells.value(enmColumnIndex, 0))
     1050        m_cells[enmColumnIndex]->setText(strText);
     1051}
     1052
    10001053
    10011054/*********************************************************************************************************************************
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h

    r104955 r104962  
    4949class UIActivityOverviewAccessibleCell;
    5050class UIActivityOverviewAccessibleRow;
     51class UIActivityOverviewAccessibleRowCloud;
     52class UIVirtualMachineItemCloud;
    5153
    5254class UIVMActivityOverviewAccessibleTableView : public QITableView
     
    149151
    150152protected:
    151 
     153    void updateCellText(int /*VMActivityOverviewColumn*/ iColumnIndex, const QString &strText);
    152154    QUuid m_uMachineId;
    153155    /* Key is VMActivityOverviewColumn enum item. */
     
    189191    void setColumnVisible(const QMap<int, bool>& columnVisible);
    190192    bool columnVisible(int iColumnId) const;
     193    void setCloudMachineItems(const QList<UIVirtualMachineItemCloud*> &cloudItems);
    191194
    192195private slots:
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp

    r104951 r104962  
    17891789    if (m_pModel)
    17901790        m_pModel->setCloudMachineItems(cloudItems);
     1791    if (m_pAccessibleModel)
     1792        m_pAccessibleModel->setCloudMachineItems(cloudItems);
    17911793}
    17921794
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