1- /* $Id: UIVMActivityMonitor.cpp 113262 2026-03-04 20:12:57Z sergey.dubov @oracle.com $ */
1+ /* $Id: UIVMActivityMonitor.cpp 113389 2026-03-13 15:26:03Z serkan.bayraktar @oracle.com $ */
22/* * @file
33 * VBox Qt GUI - UIVMActivityMonitor class implementation.
44 */
@@ -75,9 +75,29 @@ const quint64 uInvalidValueSentinel = ~0U;
7575
7676
7777/* ********************************************************************************************************************************
78- * UIChart definition. *
78+ * UIInfoLabelContainer definition. *
7979*********************************************************************************************************************************/
80+ class UIInfoLabelContainer : public QWidget
81+ {
82+ Q_OBJECT;
83+ public:
84+
85+ UIInfoLabelContainer (QWidget *pParent, int rowCount /* including title row */ );
86+ void setTitle (const QString &strTitle);
87+ void setRowText (int i, const QString &strLabel, const QString &strValue, QColor color = QColor());
88+ void setTopMargin (int iMarginTop);
8089
90+ private:
91+
92+ QGridLayout *m_pGridLayout;
93+ /* 0th row is for title, thus only 0th element of the pair is instantiated !! */
94+ QVector<QPair<QLabel*, QLabel*> > m_rows;
95+ };
96+
97+
98+ /* ********************************************************************************************************************************
99+ * UIChart definition. *
100+ *********************************************************************************************************************************/
81101
82102class UIChart : public QWidget
83103{
@@ -118,6 +138,8 @@ class UIChart : public QWidget
118138 bool isAvailable () const ;
119139 void setIsAvailable (bool fIsAvailable );
120140
141+ int topMargin () const ;
142+
121143protected:
122144
123145 virtual void resizeEvent (QResizeEvent *pEvent) RT_OVERRIDE;
@@ -196,6 +218,72 @@ private slots:
196218 UIActionPool *m_pActionPool;
197219};
198220
221+
222+ /* ********************************************************************************************************************************
223+ * UIInfoLabelContainer implementation. *
224+ *********************************************************************************************************************************/
225+
226+ UIInfoLabelContainer::UIInfoLabelContainer (QWidget *pParent, int iRowCount)
227+ : QWidget(pParent)
228+ , m_pGridLayout(nullptr )
229+ {
230+ iRowCount = qMax (1 , iRowCount);
231+ m_pGridLayout = new QGridLayout (this );
232+ m_pGridLayout->setContentsMargins (0 , 0 , 0 , 0 );
233+ m_pGridLayout->setSpacing (0 );
234+ // m_pGridLayout->setColumnStretch(0, 1);
235+ // m_pGridLayout->setColumnStretch(1, 0);
236+ QPair<QLabel*, QLabel*> titleRow = QPair<QLabel*, QLabel*>(new QLabel (this ), nullptr );
237+ m_pGridLayout->addWidget (titleRow.first , 0 , 0 , 1 , 2 , Qt::AlignCenter);
238+ m_rows << titleRow;
239+ QFont titleFont = titleRow.first ->font ();
240+ titleFont.setBold (true );
241+ titleRow.first ->setFont (titleFont);
242+ // titleRow.first->setWordWrap(true);
243+ // titleRow.first->setAlignment(Qt::AlignCenter);
244+ for (int i = 1 ; i < iRowCount; ++i)
245+ {
246+ QPair<QLabel*, QLabel*> row = QPair<QLabel*, QLabel*>(new QLabel (this ), new QLabel (this ));
247+ m_pGridLayout->addWidget (row.first , i, 0 , 1 , 1 , Qt::AlignLeft|Qt::AlignVCenter);
248+ m_pGridLayout->addWidget (row.second , i, 1 , 1 , 1 , Qt::AlignRight|Qt::AlignVCenter);
249+ m_rows << row;
250+ }
251+ m_pGridLayout->addItem (new QSpacerItem (0 , 0 , QSizePolicy::Minimum, QSizePolicy::Expanding), iRowCount, 0 , 1 , 2 );
252+ }
253+
254+ void UIInfoLabelContainer::setTitle (const QString &strTitle)
255+ {
256+ if (!m_pGridLayout || m_rows.size () == 0 || !m_rows[0 ].first )
257+ return ;
258+ m_rows[0 ].first ->setText (strTitle);
259+ }
260+
261+ void UIInfoLabelContainer::setRowText (int i, const QString &strLabel, const QString &strValue, QColor color /* = QColor()*/ )
262+ {
263+ if (!m_pGridLayout || m_rows.size () <= i || i == 0 )
264+ return ;
265+ if (!m_rows[i].first || !m_rows[i].second )
266+ return ;
267+ m_rows[i].first ->setText (strLabel);
268+ m_rows[i].second ->setText (strValue);
269+ if (color.isValid ())
270+ {
271+ QPalette pal = m_rows[i].first ->palette ();
272+ pal.setColor (QPalette::WindowText, color);
273+ m_rows[i].first ->setPalette (pal);
274+
275+ pal = m_rows[i].second ->palette ();
276+ pal.setColor (QPalette::WindowText, color);
277+ m_rows[i].second ->setPalette (pal);
278+ }
279+ }
280+
281+ void UIInfoLabelContainer::setTopMargin (int iMarginTop)
282+ {
283+ if (m_pGridLayout)
284+ m_pGridLayout->setContentsMargins (0 , iMarginTop, 0 , 0 );
285+ }
286+
199287/* ********************************************************************************************************************************
200288* UIChart implementation. *
201289*********************************************************************************************************************************/
@@ -358,6 +446,11 @@ void UIChart::setIsAvailable(bool fIsAvailable)
358446 update ();
359447}
360448
449+ int UIChart::topMargin () const
450+ {
451+ return m_iMarginTop;
452+ }
453+
361454QSize UIChart::minimumSizeHint () const
362455{
363456 return m_size;
@@ -1220,6 +1313,16 @@ QString UIVMActivityMonitor::dataColorString(Metric_Type enmType, int iDataIndex
12201313 return pChart->dataSeriesColor (iDataIndex).name (QColor::HexRgb);
12211314}
12221315
1316+ QColor UIVMActivityMonitor::dataColor (Metric_Type enmType, int iDataIndex)
1317+ {
1318+ if (!m_charts.contains (enmType))
1319+ return QColor (Qt::black).name (QColor::HexRgb);
1320+ UIChart *pChart = m_charts[enmType];
1321+ if (!pChart)
1322+ return QColor (Qt::black).name (QColor::HexRgb);
1323+ return pChart->dataSeriesColor (iDataIndex);
1324+ }
1325+
12231326void UIVMActivityMonitor::setInfoLabelWidth ()
12241327{
12251328 /* Compute the maximum label string length and set it as a fixed width to labels to prevent always changing widths: */
@@ -1561,16 +1664,32 @@ void UIVMActivityMonitorLocal::prepareWidgets()
15611664 QHBoxLayout *pChartLayout = new QHBoxLayout;
15621665 pChartLayout->setSpacing (0 );
15631666
1564- QLabel *pLabel = new QLabel (this );
1667+ int iInfoLabelRowCount = 5 ;
1668+ switch (enmType)
1669+ {
1670+ case Metric_Type_CPU:
1671+ iInfoLabelRowCount = 3 ;
1672+ break ;
1673+ case Metric_Type_RAM:
1674+ iInfoLabelRowCount = 4 ;
1675+ break ;
1676+ case Metric_Type_Network_InOut:
1677+ case Metric_Type_Disk_InOut:
1678+ case Metric_Type_USB_InOut:
1679+ default :
1680+ iInfoLabelRowCount = 5 ;
1681+ break ;
1682+ }
15651683
1566- QPalette tempPal = pLabel->palette ();
1684+ UIInfoLabelContainer *pLabelContainer = new UIInfoLabelContainer (this , iInfoLabelRowCount);
1685+
1686+ QPalette tempPal = pLabelContainer->palette ();
15671687 tempPal.setColor (QPalette::Window, tempPal.color (QPalette::Window).lighter (g_iBackgroundTint));
1568- pLabel ->setPalette (tempPal);
1569- pLabel ->setAutoFillBackground (true );
1688+ pLabelContainer ->setPalette (tempPal);
1689+ pLabelContainer ->setAutoFillBackground (true );
15701690
1571- pLabel->setAlignment (Qt::AlignLeft | Qt::AlignVCenter);
1572- pChartLayout->addWidget (pLabel);
1573- m_infoLabels.insert (enmType, pLabel);
1691+ m_infoLabelContainers.insert (enmType, pLabelContainer);
1692+ pChartLayout->addWidget (pLabelContainer);
15741693
15751694 UIChart *pChart = new UIChart (this , &(m_metrics[enmType]), m_pActionPool, m_iMaximumQueueSize);
15761695 connect (pChart, &UIChart::sigExportMetricsToFile,
@@ -1579,6 +1698,7 @@ void UIVMActivityMonitorLocal::prepareWidgets()
15791698 pChart->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred);
15801699 pChartLayout->addWidget (pChart);
15811700 m_pContainerLayout->addLayout (pChartLayout, iRow, 0 , 1 , 2 );
1701+ pLabelContainer->setTopMargin (pChart->topMargin ());
15821702 ++iRow;
15831703 }
15841704
@@ -1727,14 +1847,13 @@ void UIVMActivityMonitorLocal::updateVMExitMetric(quint64 uTotalVMExits)
17271847 return ;
17281848 }
17291849 VMExitMetric.addData (0 , iRate);
1730- if (m_infoLabels .contains (Metric_Type_VM_Exits) && m_infoLabels [Metric_Type_VM_Exits])
1850+ if (m_infoLabelContainers .contains (Metric_Type_VM_Exits) && m_infoLabelContainers [Metric_Type_VM_Exits])
17311851 {
1732- QString strInfo;
1733- strInfo = QString (" <b>%1</b><br/><font color=\" %2\" >%3: %4 %5</font><br/>%6: %7 %8" )
1734- .arg (m_strVMExitInfoLabelTitle)
1735- .arg (dataColorString (Metric_Type_VM_Exits, 0 )).arg (m_strVMExitLabelCurrent).arg (UITranslator::addMetricSuffixToNumber (iRate)).arg (VMExitMetric.unit ())
1736- .arg (m_strVMExitLabelTotal).arg (UITranslator::addMetricSuffixToNumber (uTotalVMExits)).arg (VMExitMetric.unit ());
1737- m_infoLabels[Metric_Type_VM_Exits]->setText (strInfo);
1852+ m_infoLabelContainers[Metric_Type_VM_Exits]->setTitle (m_strVMExitInfoLabelTitle);
1853+ m_infoLabelContainers[Metric_Type_VM_Exits]->setRowText (1 , m_strVMExitLabelCurrent,
1854+ QString (" %1%2" ).arg (UITranslator::addMetricSuffixToNumber (iRate)).arg (VMExitMetric.unit ()), dataColorString (Metric_Type_CPU, 0 ));
1855+ m_infoLabelContainers[Metric_Type_VM_Exits]->setRowText (2 , m_strVMExitLabelTotal,
1856+ QString (" %1%2" ).arg (UITranslator::addMetricSuffixToNumber (uTotalVMExits)).arg (VMExitMetric.unit ()), dataColorString (Metric_Type_CPU, 1 ));
17381857 }
17391858 if (m_charts.contains (Metric_Type_VM_Exits))
17401859 m_charts[Metric_Type_VM_Exits]->update ();
@@ -1752,17 +1871,14 @@ void UIVMActivityMonitorLocal::updateCPUChart(ULONG iExecutingPercentage, ULONG
17521871 CPUMetric.addData (0 , uEx);
17531872 CPUMetric.addData (1 , uOther);
17541873 CPUMetric.setMaximum (uMax);
1755- if (m_infoLabels.contains (Metric_Type_CPU) && m_infoLabels[Metric_Type_CPU])
1756- {
1757- QString strInfo;
17581874
1759- strInfo = QString ( " <b>%1</b></b><br/><font color= \" %2 \" >%3: %4%5</font><br/><font color= \" %6 \" >%7: %8%9</font> " )
1760- . arg (m_strCPUInfoLabelTitle)
1761- . arg ( dataColorString ( Metric_Type_CPU, 0 ))
1762- . arg ( m_strCPUInfoLabelGuest). arg ( QString::number (uEx)). arg (CPUMetric. unit ())
1763- .arg (dataColorString (Metric_Type_CPU, 1 ))
1764- . arg ( m_strCPUInfoLabelVMM). arg ( QString::number (uOther)). arg (CPUMetric. unit ());
1765- m_infoLabels[Metric_Type_CPU]-> setText (strInfo );
1875+ if (m_infoLabelContainers. contains (Metric_Type_CPU) && m_infoLabelContainers[Metric_Type_CPU] )
1876+ {
1877+ m_infoLabelContainers[ Metric_Type_CPU]-> setTitle (m_strCPUInfoLabelTitle);
1878+ m_infoLabelContainers[Metric_Type_CPU]-> setRowText ( 1 , m_strCPUInfoLabelGuest,
1879+ QString ( " %1%2 " ) .arg (QString::number (uEx)). arg (CPUMetric. unit ()), dataColorString (Metric_Type_CPU, 0 ));
1880+ m_infoLabelContainers[Metric_Type_CPU]-> setRowText ( 2 , m_strCPUInfoLabelVMM,
1881+ QString ( " %1%2 " ). arg ( QString::number (uOther)). arg (CPUMetric. unit ()), dataColorString (Metric_Type_CPU, 1 ) );
17661882 }
17671883
17681884 if (m_charts.contains (Metric_Type_CPU))
@@ -1774,15 +1890,15 @@ void UIVMActivityMonitorLocal::updateRAMGraphsAndMetric(quint64 iTotalRAM, quint
17741890 UIMetric &RAMMetric = m_metrics[Metric_Type_RAM];
17751891 RAMMetric.setMaximum (iTotalRAM);
17761892 RAMMetric.addData (0 , iTotalRAM - iFreeRAM);
1777- if (m_infoLabels .contains (Metric_Type_RAM) && m_infoLabels [Metric_Type_RAM])
1893+ if (m_infoLabelContainers .contains (Metric_Type_RAM) && m_infoLabelContainers [Metric_Type_RAM])
17781894 {
1779- QString strInfo ;
1780- strInfo = QString ( " <b>%1</b><br/>%2: %3<br/><font color= \" %4 \" >%5: %6</font><br/><font color= \" %7 \" >%8: %9</font> " )
1781- . arg (m_strRAMInfoLabelTitle)
1782- . arg (m_strRAMInfoLabelTotal). arg ( UITranslator::formatSize (_1K * iTotalRAM, g_iDecimalCount))
1783- . arg ( dataColorString (Metric_Type_RAM, 1 )). arg (m_strRAMInfoLabelFree). arg ( UITranslator::formatSize (_1K * (iFreeRAM), g_iDecimalCount))
1784- . arg ( dataColorString ( Metric_Type_RAM, 0 )). arg ( m_strRAMInfoLabelUsed). arg ( UITranslator::formatSize (_1K * (iTotalRAM - iFreeRAM), g_iDecimalCount));
1785- m_infoLabels[Metric_Type_RAM]-> setText (strInfo );
1895+ m_infoLabelContainers[Metric_Type_RAM]-> setTitle (m_strRAMInfoLabelTitle) ;
1896+ m_infoLabelContainers[Metric_Type_RAM]-> setRowText ( 1 , m_strRAMInfoLabelTotal,
1897+ UITranslator::formatSize (_1K * iTotalRAM, g_iDecimalCount), dataColorString (Metric_Type_RAM, 1 ));
1898+ m_infoLabelContainers[Metric_Type_RAM]-> setRowText ( 2 , m_strRAMInfoLabelFree,
1899+ UITranslator::formatSize (_1K * (iFreeRAM), g_iDecimalCount), dataColorString (Metric_Type_RAM, 1 ));
1900+ m_infoLabelContainers[ Metric_Type_RAM]-> setRowText ( 3 , m_strRAMInfoLabelUsed,
1901+ UITranslator::formatSize (_1K * (iTotalRAM - iFreeRAM), g_iDecimalCount), dataColorString (Metric_Type_RAM, 0 ) );
17861902 }
17871903 if (m_charts.contains (Metric_Type_RAM))
17881904 m_charts[Metric_Type_RAM]->update ();
@@ -1807,16 +1923,17 @@ void UIVMActivityMonitorLocal::updateNetworkChart(quint64 uReceiveTotal, quint64
18071923 NetMetric.addData (0 , uReceiveRate);
18081924 NetMetric.addData (1 , uTransmitRate);
18091925
1810- if (m_infoLabels .contains (Metric_Type_Network_InOut) && m_infoLabels [Metric_Type_Network_InOut])
1926+ if (m_infoLabelContainers .contains (Metric_Type_Network_InOut) && m_infoLabelContainers [Metric_Type_Network_InOut])
18111927 {
1812- QString strInfo;
1813- strInfo = QString (" <b>%1</b></b><br/><font color=\" %2\" >%3: %4<br/>%5: %6</font><br/><font color=\" %7\" >%8: %9<br/>%10: %11</font>" )
1814- .arg (m_strNetworkInfoLabelTitle)
1815- .arg (dataColorString (Metric_Type_Network_InOut, 0 )).arg (m_strNetworkInfoLabelReceived).arg (UITranslator::formatSize (uReceiveRate, g_iDecimalCount))
1816- .arg (m_strNetworkInfoLabelReceivedTotal).arg (UITranslator::formatSize (uReceiveTotal, g_iDecimalCount))
1817- .arg (dataColorString (Metric_Type_Network_InOut, 1 )).arg (m_strNetworkInfoLabelTransmitted).arg (UITranslator::formatSize (uTransmitRate, g_iDecimalCount))
1818- .arg (m_strNetworkInfoLabelTransmittedTotal).arg (UITranslator::formatSize (uTransmitTotal, g_iDecimalCount));
1819- m_infoLabels[Metric_Type_Network_InOut]->setText (strInfo);
1928+ m_infoLabelContainers[Metric_Type_Network_InOut]->setTitle (m_strNetworkInfoLabelTitle);
1929+ m_infoLabelContainers[Metric_Type_Network_InOut]->setRowText (1 , m_strNetworkInfoLabelReceived,
1930+ UITranslator::formatSize (uReceiveRate, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 0 ));
1931+ m_infoLabelContainers[Metric_Type_Network_InOut]->setRowText (2 , m_strNetworkInfoLabelReceivedTotal,
1932+ UITranslator::formatSize (uReceiveTotal, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 0 ));
1933+ m_infoLabelContainers[Metric_Type_Network_InOut]->setRowText (3 , m_strNetworkInfoLabelTransmitted,
1934+ UITranslator::formatSize (uTransmitRate, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 1 ));
1935+ m_infoLabelContainers[Metric_Type_Network_InOut]->setRowText (4 , m_strNetworkInfoLabelTransmittedTotal,
1936+ UITranslator::formatSize (uTransmitTotal, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 1 ));
18201937 }
18211938 if (m_charts.contains (Metric_Type_Network_InOut))
18221939 m_charts[Metric_Type_Network_InOut]->update ();
@@ -1841,7 +1958,7 @@ void UIVMActivityMonitorLocal::updateUSBChart(quint64 uReceiveTotal, quint64 uTr
18411958 USBMetric.addData (0 , uReceiveRate);
18421959 USBMetric.addData (1 , uTransmitRate);
18431960
1844- if (m_infoLabels .contains (Metric_Type_USB_InOut ) && m_infoLabels[Metric_Type_USB_InOut ])
1961+ if (m_infoLabelContainers .contains (Metric_Type_Network_InOut ) && m_infoLabelContainers[Metric_Type_Network_InOut ])
18451962 {
18461963 QString strInfo;
18471964 strInfo = QString (" <b>%1</b></b><br/><font color=\" %2\" >%3: %4<br/>%5: %6</font><br/><font color=\" %7\" >%8: %9<br/>%10: %11</font>" )
@@ -1850,7 +1967,15 @@ void UIVMActivityMonitorLocal::updateUSBChart(quint64 uReceiveTotal, quint64 uTr
18501967 .arg (m_strUSBInfoLabelReceivedTotal).arg (UITranslator::formatSize (uReceiveTotal, g_iDecimalCount))
18511968 .arg (dataColorString (Metric_Type_USB_InOut, 1 )).arg (m_strUSBInfoLabelTransmitted).arg (UITranslator::formatSize (uTransmitRate, g_iDecimalCount))
18521969 .arg (m_strUSBInfoLabelTransmittedTotal).arg (UITranslator::formatSize (uTransmitTotal, g_iDecimalCount));
1853- m_infoLabels[Metric_Type_USB_InOut]->setText (strInfo);
1970+ m_infoLabelContainers[Metric_Type_USB_InOut]->setTitle (m_strUSBInfoLabelTitle);
1971+ m_infoLabelContainers[Metric_Type_USB_InOut]->setRowText (1 , m_strUSBInfoLabelReceived,
1972+ UITranslator::formatSize (uReceiveRate, g_iDecimalCount), dataColorString (Metric_Type_USB_InOut, 0 ));
1973+ m_infoLabelContainers[Metric_Type_USB_InOut]->setRowText (2 , m_strUSBInfoLabelReceivedTotal,
1974+ UITranslator::formatSize (uReceiveTotal, g_iDecimalCount), dataColorString (Metric_Type_USB_InOut, 0 ));
1975+ m_infoLabelContainers[Metric_Type_USB_InOut]->setRowText (3 , m_strUSBInfoLabelTransmitted,
1976+ UITranslator::formatSize (uTransmitRate, g_iDecimalCount), dataColorString (Metric_Type_USB_InOut, 1 ));
1977+ m_infoLabelContainers[Metric_Type_USB_InOut]->setRowText (4 , m_strUSBInfoLabelTransmittedTotal,
1978+ UITranslator::formatSize (uTransmitTotal, g_iDecimalCount), dataColorString (Metric_Type_USB_InOut, 1 ));
18541979 }
18551980 if (m_charts.contains (Metric_Type_USB_InOut))
18561981 m_charts[Metric_Type_USB_InOut]->update ();
@@ -1874,15 +1999,17 @@ void UIVMActivityMonitorLocal::updateDiskIOChart(quint64 uDiskIOTotalWritten, qu
18741999 diskMetric.addData (1 , uWriteRate);
18752000 diskMetric.addData (0 , uReadRate);
18762001
1877- if (m_infoLabels.contains (Metric_Type_Disk_InOut) && m_infoLabels[Metric_Type_Disk_InOut])
1878- {
1879- QString strInfo = QString (" <b>%1</b></b><br/><font color=\" %2\" >%3: %4<br/>%5: %6</font><br/><font color=\" %7\" >%8: %9<br/>%10: %11</font>" )
1880- .arg (m_strDiskIOInfoLabelTitle)
1881- .arg (dataColorString (Metric_Type_Disk_InOut, 0 )).arg (m_strDiskIOInfoLabelRead).arg (UITranslator::formatSize (uReadRate, g_iDecimalCount))
1882- .arg (m_strDiskIOInfoLabelReadTotal).arg (UITranslator::formatSize ((quint64)uDiskIOTotalRead, g_iDecimalCount))
1883- .arg (dataColorString (Metric_Type_Disk_InOut, 1 )).arg (m_strDiskIOInfoLabelWritten).arg (UITranslator::formatSize (uWriteRate, g_iDecimalCount))
1884- .arg (m_strDiskIOInfoLabelWrittenTotal).arg (UITranslator::formatSize ((quint64)uDiskIOTotalWritten, g_iDecimalCount));
1885- m_infoLabels[Metric_Type_Disk_InOut]->setText (strInfo);
2002+ if (m_infoLabelContainers.contains (Metric_Type_Network_InOut) && m_infoLabelContainers[Metric_Type_Network_InOut])
2003+ {
2004+ m_infoLabelContainers[Metric_Type_Disk_InOut]->setTitle (m_strDiskIOInfoLabelTitle);
2005+ m_infoLabelContainers[Metric_Type_Disk_InOut]->setRowText (1 , m_strDiskIOInfoLabelRead,
2006+ UITranslator::formatSize (uReadRate, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 0 ));
2007+ m_infoLabelContainers[Metric_Type_Disk_InOut]->setRowText (2 , m_strDiskIOInfoLabelReadTotal,
2008+ UITranslator::formatSize ((quint64)uDiskIOTotalRead, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 0 ));
2009+ m_infoLabelContainers[Metric_Type_Disk_InOut]->setRowText (3 , m_strDiskIOInfoLabelWritten,
2010+ UITranslator::formatSize (uWriteRate, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 1 ));
2011+ m_infoLabelContainers[Metric_Type_Disk_InOut]->setRowText (4 , m_strDiskIOInfoLabelWrittenTotal,
2012+ UITranslator::formatSize ((quint64)uDiskIOTotalWritten, g_iDecimalCount), dataColorString (Metric_Type_Network_InOut, 1 ));
18862013 }
18872014 if (m_charts.contains (Metric_Type_Disk_InOut))
18882015 m_charts[Metric_Type_Disk_InOut]->update ();
0 commit comments