VirtualBox

Changeset 103157 in vbox


Ignore:
Timestamp:
Feb 1, 2024 10:24:36 AM (8 months ago)
Author:
vboxsync
Message:

FE/Qt: bugref:10501. More cleaning and refactoring of table item classes.

File:
1 edited

Legend:

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

    r103139 r103157  
    246246    virtual bool isRunning() const = 0;
    247247    virtual bool isCloudVM() const = 0;
    248     virtual void updateColumnData() = 0;
    249248    virtual void setMachineState(int iState) = 0;
    250249
    251250    QString columnData(int iColumnIndex) const;
    252251
    253 
    254     ULONG  m_uCPUGuestLoad;
    255252    quint64  m_uTotalRAM;
    256253    quint64  m_uFreeRAM;
    257254    quint64  m_uUsedRAM;
    258255    float    m_fRAMUsagePercentage;
    259     quint64  m_uNetworkDownRate;
    260     quint64  m_uNetworkUpRate;
     256
    261257    quint64  m_uNetworkDownTotal;
    262258    quint64  m_uNetworkUpTotal;
    263259
    264     quint64 m_uDiskWriteRate;
    265     quint64 m_uDiskReadRate;
    266260    quint64 m_uDiskWriteTotal;
    267261    quint64 m_uDiskReadTotal;
     
    271265    QUuid         m_VMuid;
    272266    QString       m_strVMName;
    273 
    274     virtual void updateMetricData() = 0;
    275267
    276268    /** The strings of each column for the item. We update this during performance query
     
    299291    bool isWithGuestAdditions();
    300292    void resetDebugger();
     293    void updateColumnData();
     294
    301295    virtual bool isRunning() const override;
    302296    virtual bool isCloudVM() const override;
    303     virtual void updateColumnData() override;
    304297    virtual QString machineStateString() const override;
    305298    virtual void setMachineState(int iState) override;
     
    307300protected:
    308301
    309     virtual void updateMetricData() override;
     302    void updateMetricData();
    310303
    311304private:
     
    315308    KMachineState m_enmMachineState;
    316309
    317     ULONG   m_uCPUVMMLoad;
    318     quint64 m_uVMExitRate;
    319310    quint64 m_uVMExitTotal;
    320311    CMachineDebugger m_comDebugger;
     
    336327    virtual bool isRunning() const override;
    337328    virtual bool isCloudVM() const override;
    338     virtual void updateColumnData() override;
    339329    virtual QString machineStateString() const override;
    340330    virtual void setMachineState(int iState) override;
    341331
    342332protected:
    343 
    344     virtual void updateMetricData() override;
    345333
    346334private slots:
     
    353341
    354342    void getMetricList();
     343    void resetColumData();
     344
    355345    QTimer *m_pTimer;
    356346    CCloudMachine m_comCloudMachine;
     
    423413    void sltMachineStateChanged(const QUuid &uId, const KMachineState state);
    424414    void sltMachineRegistered(const QUuid &uId, bool fRegistered);
    425     void sltLocalUpdateTimeout();
    426     void sltCloudUpdateTimeout();
     415    void sltLocalVMUpdateTimeout();
    427416
    428417private:
     
    438427    QVector<UIActivityOverviewItem*> m_itemList;
    439428    QMap<int, QString> m_columnTitles;
    440     QTimer *m_pLocalUpdateTimer;
    441     QTimer *m_pCloudUpdateTimer;
     429    QTimer *m_pLocalVMUpdateTimer;
     430
    442431    /** @name The following are used during UIPerformanceCollector::QueryMetricsData(..)
    443432     * @{ */
     
    871860UIActivityOverviewItem::UIActivityOverviewItem(QObject *pParent, const QUuid &uid, const QString &strVMName)
    872861    : QObject(pParent)
    873     , m_uCPUGuestLoad(0)
    874862    , m_uTotalRAM(0)
    875863    , m_uFreeRAM(0)
    876864    , m_uUsedRAM(0)
    877865    , m_fRAMUsagePercentage(0)
    878     , m_uNetworkDownRate(0)
    879     , m_uNetworkUpRate(0)
    880866    , m_uNetworkDownTotal(0)
    881867    , m_uNetworkUpTotal(0)
    882     , m_uDiskWriteRate(0)
    883     , m_uDiskReadRate(0)
    884868    , m_uDiskWriteTotal(0)
    885869    , m_uDiskReadTotal(0)
     
    892876UIActivityOverviewItem::UIActivityOverviewItem()
    893877    : QObject()
    894     , m_uCPUGuestLoad(0)
    895878    , m_uTotalRAM(0)
    896879    , m_uUsedRAM(0)
    897880    , m_fRAMUsagePercentage(0)
    898     , m_uNetworkDownRate(0)
    899     , m_uNetworkUpRate(0)
    900881    , m_uNetworkDownTotal(0)
    901882    , m_uNetworkUpTotal(0)
    902     , m_uDiskWriteRate(0)
    903     , m_uDiskReadRate(0)
    904883    , m_uDiskWriteTotal(0)
    905884    , m_uDiskReadTotal(0)
     
    966945        m_pTimer->setInterval(60 * 1000);
    967946    }
     947    resetColumData();
    968948}
    969949
     
    990970{
    991971    return true;
    992 }
    993 
    994 void UIActivityOverviewItemCloud::updateMetricData()
    995 {
    996 }
    997 
    998 void UIActivityOverviewItemCloud::updateColumnData()
    999 {
    1000     updateMetricData();
    1001 
    1002     //int iDecimalCount = 2;
    1003 
    1004 
    1005972}
    1006973
     
    1031998    Q_UNUSED(data);
    1032999    Q_UNUSED(timeStamps);
    1033     // if (!data.isEmpty())
    1034     //     printf("%d %lld %s\n", enmMetricType, data.size(), qPrintable(data[0]));
     1000    AssertReturnVoid(!data.isEmpty());
     1001
     1002    if (enmMetricType == KMetricType_CpuUtilization)
     1003    {
     1004        m_columnData[VMActivityOverviewColumn_CPUGuestLoad] =
     1005            QString("%1%").arg(QString::number(data[0].toFloat(), 'f', 2));
     1006    }
     1007    else if (enmMetricType == KMetricType_MemoryUtilization)
     1008    {
     1009        m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] =
     1010            QString("%1%").arg(QString::number(data[0].toFloat(), 'f', 2));
     1011    }
     1012
    10351013    sender()->deleteLater();
    10361014}
     
    10511029            m_pTimer->stop();
    10521030    }
     1031}
     1032
     1033void UIActivityOverviewItemCloud::resetColumData()
     1034{
     1035    for (int i = (int) VMActivityOverviewColumn_CPUGuestLoad;
     1036         i < (int)VMActivityOverviewColumn_Max; ++i)
     1037        m_columnData[i] = UIVMActivityOverviewWidget::tr("N/A");
    10531038}
    10541039
     
    10791064    }
    10801065    else
     1066    {
    10811067        m_pTimer->stop();
     1068        resetColumData();
     1069    }
    10821070
    10831071    if (sender())
     
    10921080UIActivityOverviewItemLocal::UIActivityOverviewItemLocal(QObject *pParent, const QUuid &uid, const QString &strVMName)
    10931081    : UIActivityOverviewItem(pParent, uid, strVMName)
    1094     , m_uCPUVMMLoad(0)
    1095     , m_uVMExitRate(0)
    10961082    , m_uVMExitTotal(0)
    10971083{
     
    11011087
    11021088UIActivityOverviewItemLocal::UIActivityOverviewItemLocal()
    1103     : m_uCPUVMMLoad(0)
    1104     , m_uVMExitRate(0)
    1105     , m_uVMExitTotal(0)
     1089    : m_uVMExitTotal(0)
    11061090{
    11071091}
     
    11581142void UIActivityOverviewItemLocal::updateMetricData()
    11591143{
    1160     if (!m_comDebugger.isOk())
    1161         return;
     1144
     1145
     1146}
     1147
     1148void UIActivityOverviewItemLocal::updateColumnData()
     1149{
     1150    AssertReturnVoid(m_comDebugger.isOk());
     1151    updateMetricData();
     1152
     1153    int iDecimalCount = 2;
    11621154
    11631155    /* CPU Load: */
    11641156    ULONG aPctHalted;
    1165     m_comDebugger.GetCPULoad(0x7fffffff, m_uCPUGuestLoad, aPctHalted, m_uCPUVMMLoad);
    1166 
    1167     /* Network rate: */
    1168     quint64 uPrevDownTotal = m_uNetworkDownTotal;
    1169     quint64 uPrevUpTotal = m_uNetworkUpTotal;
    1170     UIMonitorCommon::getNetworkLoad(m_comDebugger, m_uNetworkDownTotal, m_uNetworkUpTotal);
    1171     m_uNetworkDownRate = m_uNetworkDownTotal - uPrevDownTotal;
    1172     m_uNetworkUpRate = m_uNetworkUpTotal - uPrevUpTotal;
    1173 
    1174     /* IO rate: */
    1175     quint64 uPrevWriteTotal = m_uDiskWriteTotal;
    1176     quint64 uPrevReadTotal = m_uDiskReadTotal;
    1177     UIMonitorCommon::getDiskLoad(m_comDebugger, m_uDiskWriteTotal, m_uDiskReadTotal);
    1178     m_uDiskWriteRate = m_uDiskWriteTotal - uPrevWriteTotal;
    1179     m_uDiskReadRate = m_uDiskReadTotal - uPrevReadTotal;
    1180 
    1181     /* VM Exits: */
    1182     quint64 uPrevVMExitsTotal = m_uVMExitTotal;
    1183     UIMonitorCommon::getVMMExitCount(m_comDebugger, m_uVMExitTotal);
    1184     m_uVMExitRate = m_uVMExitTotal - uPrevVMExitsTotal;
    1185 }
    1186 
    1187 void UIActivityOverviewItemLocal::updateColumnData()
    1188 {
    1189     updateMetricData();
    1190 
    1191     int iDecimalCount = 2;
    1192 
     1157    ULONG  uCPUGuestLoad;
     1158    ULONG uCPUVMMLoad;
     1159    m_comDebugger.GetCPULoad(0x7fffffff, uCPUGuestLoad, aPctHalted, uCPUVMMLoad);
    11931160    m_columnData[VMActivityOverviewColumn_CPUGuestLoad] =
    1194         QString("%1%").arg(QString::number(m_uCPUGuestLoad));
     1161        QString("%1%").arg(QString::number(uCPUGuestLoad));
    11951162    m_columnData[VMActivityOverviewColumn_CPUVMMLoad] =
    1196         QString("%1%").arg(QString::number(m_uCPUVMMLoad));
    1197 
     1163        QString("%1%").arg(QString::number(uCPUVMMLoad));
     1164
     1165    /* RAM Utilization: */
    11981166    if (isWithGuestAdditions())
    11991167        m_columnData[VMActivityOverviewColumn_RAMUsedAndTotal] =
     
    12031171        m_columnData[VMActivityOverviewColumn_RAMUsedAndTotal] = UIVMActivityOverviewWidget::tr("N/A");
    12041172
     1173    /* RAM Utilization %: */
    12051174    if (isWithGuestAdditions())
    12061175        m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] =
     
    12091178        m_columnData[VMActivityOverviewColumn_RAMUsedPercentage] = UIVMActivityOverviewWidget::tr("N/A");
    12101179
     1180    /* Network rate: */
     1181    quint64 uPrevDownTotal = m_uNetworkDownTotal;
     1182    quint64 uPrevUpTotal = m_uNetworkUpTotal;
     1183    UIMonitorCommon::getNetworkLoad(m_comDebugger, m_uNetworkDownTotal, m_uNetworkUpTotal);
     1184    quint64 uNetworkDownRate = m_uNetworkDownTotal - uPrevDownTotal;
     1185    quint64 uNetworkUpRate = m_uNetworkUpTotal - uPrevUpTotal;
    12111186    m_columnData[VMActivityOverviewColumn_NetworkUpRate] =
    1212         QString("%1").arg(UITranslator::formatSize(m_uNetworkUpRate, iDecimalCount));
    1213 
     1187        QString("%1").arg(UITranslator::formatSize(uNetworkUpRate, iDecimalCount));
    12141188    m_columnData[VMActivityOverviewColumn_NetworkDownRate] =
    1215         QString("%1").arg(UITranslator::formatSize(m_uNetworkDownRate, iDecimalCount));
    1216 
     1189        QString("%1").arg(UITranslator::formatSize(uNetworkDownRate, iDecimalCount));
    12171190    m_columnData[VMActivityOverviewColumn_NetworkUpTotal] =
    12181191        QString("%1").arg(UITranslator::formatSize(m_uNetworkUpTotal, iDecimalCount));
    1219 
    12201192    m_columnData[VMActivityOverviewColumn_NetworkDownTotal] =
    12211193        QString("%1").arg(UITranslator::formatSize(m_uNetworkDownTotal, iDecimalCount));
    12221194
     1195
     1196    /* IO rate: */
     1197    quint64 uPrevWriteTotal = m_uDiskWriteTotal;
     1198    quint64 uPrevReadTotal = m_uDiskReadTotal;
     1199    UIMonitorCommon::getDiskLoad(m_comDebugger, m_uDiskWriteTotal, m_uDiskReadTotal);
     1200    quint64 uDiskWriteRate = m_uDiskWriteTotal - uPrevWriteTotal;
     1201    quint64 uDiskReadRate = m_uDiskReadTotal - uPrevReadTotal;
    12231202    m_columnData[VMActivityOverviewColumn_DiskIOReadRate] =
    1224         QString("%1").arg(UITranslator::formatSize(m_uDiskReadRate, iDecimalCount));
    1225 
     1203        QString("%1").arg(UITranslator::formatSize(uDiskReadRate, iDecimalCount));
    12261204    m_columnData[VMActivityOverviewColumn_DiskIOWriteRate] =
    1227         QString("%1").arg(UITranslator::formatSize(m_uDiskWriteRate, iDecimalCount));
    1228 
     1205        QString("%1").arg(UITranslator::formatSize(uDiskWriteRate, iDecimalCount));
    12291206    m_columnData[VMActivityOverviewColumn_DiskIOReadTotal] =
    12301207        QString("%1").arg(UITranslator::formatSize(m_uDiskReadTotal, iDecimalCount));
    1231 
    12321208    m_columnData[VMActivityOverviewColumn_DiskIOWriteTotal] =
    12331209        QString("%1").arg(UITranslator::formatSize(m_uDiskWriteTotal, iDecimalCount));
    12341210
     1211    /* VM Exits: */
     1212    quint64 uPrevVMExitsTotal = m_uVMExitTotal;
     1213    UIMonitorCommon::getVMMExitCount(m_comDebugger, m_uVMExitTotal);
     1214    quint64 uVMExitRate = m_uVMExitTotal - uPrevVMExitsTotal;
    12351215    m_columnData[VMActivityOverviewColumn_VMExits] =
    1236         QString("%1/%2").arg(UITranslator::addMetricSuffixToNumber(m_uVMExitRate)).
     1216        QString("%1/%2").arg(UITranslator::addMetricSuffixToNumber(uVMExitRate)).
    12371217        arg(UITranslator::addMetricSuffixToNumber(m_uVMExitTotal));
    12381218}
     
    13201300UIActivityOverviewModel::UIActivityOverviewModel(QObject *parent /*= 0*/)
    13211301    :QAbstractTableModel(parent)
    1322     , m_pLocalUpdateTimer(new QTimer(this))
    1323     , m_pCloudUpdateTimer(new QTimer(this))
     1302    , m_pLocalVMUpdateTimer(new QTimer(this))
    13241303{
    13251304    initialize();
     
    13361315    connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigMachineRegistered,
    13371316            this, &UIActivityOverviewModel::sltMachineRegistered);
    1338     if (m_pLocalUpdateTimer)
    1339     {
    1340         connect(m_pLocalUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltLocalUpdateTimeout);
    1341         m_pLocalUpdateTimer->start(1000);
    1342     }
    1343     if (m_pCloudUpdateTimer)
    1344     {
    1345         connect(m_pCloudUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltCloudUpdateTimeout);
    1346         m_pCloudUpdateTimer->start(60 * 1000);
     1317    if (m_pLocalVMUpdateTimer)
     1318    {
     1319        connect(m_pLocalVMUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewModel::sltLocalVMUpdateTimeout);
     1320        m_pLocalVMUpdateTimer->start(1000);
    13471321    }
    13481322}
     
    13621336void UIActivityOverviewModel::setShouldUpdate(bool fShouldUpdate)
    13631337{
    1364     if (m_pLocalUpdateTimer)
     1338    if (m_pLocalVMUpdateTimer)
    13651339    {
    13661340        if (fShouldUpdate)
    1367             m_pLocalUpdateTimer->start();
     1341            m_pLocalVMUpdateTimer->start();
    13681342        else
    1369             m_pLocalUpdateTimer->stop();
     1343            m_pLocalVMUpdateTimer->stop();
    13701344    }
    13711345}
     
    15661540}
    15671541
    1568 void UIActivityOverviewModel::sltCloudUpdateTimeout()
    1569 {
    1570     for (int i = 0; i < m_itemList.size(); ++i)
    1571     {
    1572         if (!m_itemList[i] && !m_itemList[i]->isCloudVM() && !m_itemList[i]->isRunning())
    1573             continue;
    1574         m_itemList[i]->updateColumnData();
    1575     }
    1576 }
    1577 
    1578 void UIActivityOverviewModel::sltLocalUpdateTimeout()
     1542void UIActivityOverviewModel::sltLocalVMUpdateTimeout()
    15791543{
    15801544    /* Host's RAM usage is obtained from IHost not from IPerformanceCollector: */
     
    15861550    for (int i = 0; i < m_itemList.size(); ++i)
    15871551    {
    1588         if (m_itemList[i] && !m_itemList[i]->isCloudVM())
    1589             m_itemList[i]->updateColumnData();
     1552        UIActivityOverviewItemLocal *pItem = qobject_cast<UIActivityOverviewItemLocal*>(m_itemList[i]);
     1553        if (!pItem || !pItem->isRunning())
     1554            continue;
     1555        pItem->updateColumnData();
    15901556    }
    15911557
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