- Timestamp:
- Nov 22, 2023 3:54:04 PM (15 months ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityToolWidget.cpp
r102147 r102264 38 38 #include "QIToolBar.h" 39 39 #include "UIVirtualMachineItem.h" 40 #include "UIVirtualMachineItemCloud.h" 41 #include "UIVirtualMachineItemLocal.h" 40 42 41 43 #ifdef VBOX_WS_MAC … … 99 101 void UIVMActivityToolWidget::setSelectedVMListItems(const QList<UIVirtualMachineItem*> &items) 100 102 { 101 QVector<QUuid> selectedMachines; 102 103 foreach (const UIVirtualMachineItem *item, items) 104 { 105 if (!item) 106 continue; 107 selectedMachines << item->id(); 108 } 109 setMachines(selectedMachines); 110 } 111 112 void UIVMActivityToolWidget::setMachines(const QVector<QUuid> &machineIds) 113 { 103 setMachines(items); 104 } 105 106 void UIVMActivityToolWidget::setMachines(const QList<UIVirtualMachineItem*> &machines) 107 { 108 QVector<QUuid> machineIds; 109 foreach (const UIVirtualMachineItem* pMachine, machines) 110 { 111 if (!pMachine) 112 continue; 113 machineIds << pMachine->id(); 114 } 114 115 /* List of machines that are newly added to selected machine list: */ 115 Q Vector<QUuid> newSelections;116 QList<UIVirtualMachineItem*> newSelections; 116 117 QVector<QUuid> unselectedMachines(m_machineIds); 117 118 118 foreach (const QUuid &id, machineIds) 119 { 119 foreach (UIVirtualMachineItem* pMachine, machines) 120 { 121 if (!pMachine) 122 continue; 123 QUuid id = pMachine->id(); 120 124 unselectedMachines.removeAll(id); 121 125 if (!m_machineIds.contains(id)) 122 newSelections << id;126 newSelections << pMachine; 123 127 } 124 128 m_machineIds = machineIds; … … 188 192 } 189 193 190 void UIVMActivityToolWidget::addTabs(const QVector<QUuid> &machineIdsToAdd) 191 { 192 foreach (const QUuid &id, machineIdsToAdd) 193 { 194 CMachine comMachine = uiCommon().virtualBox().FindMachine(id.toString()); 195 if (comMachine.isNull()) 196 continue; 197 addTab(new UIVMActivityMonitorLocal(m_enmEmbedding, this, comMachine), comMachine.GetName()); 194 void UIVMActivityToolWidget::addTabs(const QList<UIVirtualMachineItem*> &machines) 195 { 196 foreach (UIVirtualMachineItem* pMachine, machines) 197 { 198 if (!pMachine) 199 continue; 200 if (pMachine->toLocal()) 201 { 202 CMachine comMachine = pMachine->toLocal()->machine(); 203 addTab(new UIVMActivityMonitorLocal(m_enmEmbedding, this, comMachine), comMachine.GetName()); 204 continue; 205 } 206 if (pMachine->toCloud()) 207 { 208 CCloudMachine comMachine = pMachine->toCloud()->machine(); 209 if (!comMachine.isOk()) 210 continue; 211 addTab(new UIVMActivityMonitorCloud(m_enmEmbedding, this, comMachine), comMachine.GetName()); 212 continue; 213 } 198 214 } 199 215 } -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityToolWidget.h
r98103 r102264 85 85 private: 86 86 87 void setMachines(const Q Vector<QUuid> &machineIDs);87 void setMachines(const QList<UIVirtualMachineItem*> &machines); 88 88 /** @name Prepare/cleanup cascade. 89 89 * @{ */ … … 98 98 void removeTabs(const QVector<QUuid> &machineIdsToRemove); 99 99 /** Add new tabs for each QUuid in @machineIdsToAdd. Does not check for duplicates. */ 100 void addTabs(const Q Vector<QUuid> &machineIdsToAdd);100 void addTabs(const QList<UIVirtualMachineItem*> &machines); 101 101 void setExportActionEnabled(bool fEnabled); 102 102 -
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.cpp
r102151 r102264 41 41 #include "QIFileDialog.h" 42 42 #include "UICommon.h" 43 #include "UIConverter.h" 43 44 #include "UIIconPool.h" 45 #include "UIProgressTask.h" 44 46 #include "UITranslator.h" 45 47 #include "UIVMActivityMonitor.h" … … 51 53 #include "CPerformanceCollector.h" 52 54 #include "CPerformanceMetric.h" 55 #include "CStringArray.h" 53 56 #include <iprt/string.h> 54 57 … … 63 66 const int g_iMetricSetupCount = 1; 64 67 const int g_iDecimalCount = 2; 68 69 70 /********************************************************************************************************************************* 71 * UIProgressTaskReadCloudMachineMetricList definition. * 72 *********************************************************************************************************************************/ 73 74 class UIProgressTaskReadCloudMachineMetricList : public UIProgressTask 75 { 76 Q_OBJECT; 77 78 signals: 79 80 void sigMetricListReceived(QVector<QString> metricNamesList); 81 82 public: 83 84 UIProgressTaskReadCloudMachineMetricList(QObject *pParent, CCloudMachine comCloudMachine); 85 86 protected: 87 88 virtual CProgress createProgress() RT_OVERRIDE; 89 virtual void handleProgressFinished(CProgress &comProgress) RT_OVERRIDE; 90 91 private: 92 93 CCloudMachine m_comCloudMachine; 94 CStringArray m_metricNamesArray; 95 }; 96 97 98 /********************************************************************************************************************************* 99 * UIProgressTaskReadCloudMachineMetricList definition. * 100 *********************************************************************************************************************************/ 101 102 class UIProgressTaskReadCloudMachineMetricData : public UIProgressTask 103 { 104 Q_OBJECT; 105 106 signals: 107 108 void sigMetricDataReceived(KMetricType enmMetricType, QVector<QString> data, QVector<QString> timeStamps); 109 110 public: 111 112 UIProgressTaskReadCloudMachineMetricData(QObject *pParent, CCloudMachine comCloudMachine, 113 KMetricType enmMetricType, ULONG uDataPointsCount); 114 115 protected: 116 117 virtual CProgress createProgress() RT_OVERRIDE; 118 virtual void handleProgressFinished(CProgress &comProgress) RT_OVERRIDE; 119 120 private: 121 122 CCloudMachine m_comCloudMachine; 123 CStringArray m_metricData; 124 CStringArray m_timeStamps; 125 KMetricType m_enmMetricType; 126 ULONG m_uDataPointsCount; 127 }; 65 128 66 129 … … 177 240 int m_iRightMarginCharWidth; 178 241 }; 242 243 244 /********************************************************************************************************************************* 245 * UIProgressTaskReadCloudMachineMetricList implementation. * 246 *********************************************************************************************************************************/ 247 248 UIProgressTaskReadCloudMachineMetricList::UIProgressTaskReadCloudMachineMetricList(QObject *pParent, CCloudMachine comCloudMachine) 249 :UIProgressTask(pParent) 250 , m_comCloudMachine(comCloudMachine) 251 { 252 } 253 254 CProgress UIProgressTaskReadCloudMachineMetricList::createProgress() 255 { 256 if (!m_comCloudMachine.isOk()) 257 return CProgress(); 258 return m_comCloudMachine.ListMetricNames(m_metricNamesArray); 259 } 260 261 void UIProgressTaskReadCloudMachineMetricList::handleProgressFinished(CProgress &comProgress) 262 { 263 if (!comProgress.isOk()) 264 return; 265 emit sigMetricListReceived(m_metricNamesArray.GetValues()); 266 } 267 268 269 /********************************************************************************************************************************* 270 * UIProgressTaskReadCloudMachineMetricData implementation. * 271 *********************************************************************************************************************************/ 272 273 UIProgressTaskReadCloudMachineMetricData::UIProgressTaskReadCloudMachineMetricData(QObject *pParent, 274 CCloudMachine comCloudMachine, 275 KMetricType enmMetricType, 276 ULONG uDataPointsCount) 277 :UIProgressTask(pParent) 278 , m_comCloudMachine(comCloudMachine) 279 , m_enmMetricType(enmMetricType) 280 , m_uDataPointsCount(uDataPointsCount) 281 { 282 } 283 284 CProgress UIProgressTaskReadCloudMachineMetricData::createProgress() 285 { 286 if (!m_comCloudMachine.isOk()) 287 return CProgress(); 288 289 CStringArray aUnit; 290 return m_comCloudMachine.EnumerateMetricData(m_enmMetricType, m_uDataPointsCount, m_metricData, m_timeStamps, aUnit); 291 } 292 293 294 void UIProgressTaskReadCloudMachineMetricData::handleProgressFinished(CProgress &comProgress) 295 { 296 if (!comProgress.isOk()) 297 return; 298 if (m_metricData.isOk() && m_timeStamps.isOk()) 299 emit sigMetricDataReceived(m_enmMetricType, m_metricData.GetValues(), m_timeStamps.GetValues()); 300 } 179 301 180 302 /********************************************************************************************************************************* … … 1624 1746 } 1625 1747 1626 1748 UIVMActivityMonitorCloud::UIVMActivityMonitorCloud(EmbedTo enmEmbedding, QWidget *pParent, const CCloudMachine &machine) 1749 :UIVMActivityMonitor(enmEmbedding, pParent) 1750 { 1751 m_metricTypeNames[KMetricType_CpuUtilization] = m_strCPUMetricName; 1752 m_metricTypeNames[KMetricType_MemoryUtilization] = m_strRAMMetricName; 1753 m_metricTypeNames[KMetricType_DiskBytesRead] = m_strDiskMetricName; 1754 m_metricTypeNames[KMetricType_DiskBytesWritten] = m_strDiskMetricName; 1755 m_metricTypeNames[KMetricType_NetworksBytesIn] = m_strNetworkMetricName; 1756 m_metricTypeNames[KMetricType_NetworksBytesOut] = m_strNetworkMetricName; 1757 1758 prepareMetrics(); 1759 prepareWidgets(); 1760 retranslateUi(); 1761 prepareActions(); 1762 //connect(&uiCommon(), &UICommon::sigAskToDetachCOM, this, &UIVMActivityMonitorLocal::sltClearCOMData); 1763 setMachine(machine); 1764 } 1765 1766 1767 void UIVMActivityMonitorCloud::setMachine(const CCloudMachine &comMachine) 1768 { 1769 m_comMachine = comMachine; 1770 if (!m_comMachine.isOk()) 1771 return; 1772 1773 m_ReadListProgressTask = new UIProgressTaskReadCloudMachineMetricList(this, comMachine); 1774 if (m_ReadListProgressTask) 1775 { 1776 connect(m_ReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived, 1777 this, &UIVMActivityMonitorCloud::sltMetricNameListingComplete); 1778 m_ReadListProgressTask->start(); 1779 } 1780 } 1781 1782 void UIVMActivityMonitorCloud::sltMetricNameListingComplete(QVector<QString> metricNameList) 1783 { 1784 m_availableMetricTypes.clear(); 1785 foreach (const QString &strName, metricNameList) 1786 m_availableMetricTypes << gpConverter->fromInternalString<KMetricType>(strName); 1787 1788 if (!m_availableMetricTypes.isEmpty()) 1789 start(); 1790 1791 sender()->deleteLater(); 1792 } 1793 1794 void UIVMActivityMonitorCloud::sltMetricDataReceived(KMetricType enmMetricType, QVector<QString> data, QVector<QString> timeStamps) 1795 { 1796 if (data.size() != timeStamps.size()) 1797 return; 1798 for (int i = 0; i < data.size(); ++i) 1799 { 1800 if (enmMetricType == KMetricType_CpuUtilization) 1801 { 1802 float fValue = data[i].toFloat(); 1803 updateCPUGraphsAndMetric((ULONG)fValue, 0); 1804 } 1805 } 1806 1807 sender()->deleteLater(); 1808 } 1809 1810 QUuid UIVMActivityMonitorCloud::machineId() const 1811 { 1812 if (m_comMachine.isOk()) 1813 return m_comMachine.GetId(); 1814 return QUuid(); 1815 } 1816 1817 QString UIVMActivityMonitorCloud::machineName() const 1818 { 1819 if (m_comMachine.isOk()) 1820 return m_comMachine.GetName(); 1821 return QString(); 1822 } 1823 1824 void UIVMActivityMonitorCloud::retranslateUi() 1825 { 1826 UIVMActivityMonitor::retranslateUi(); 1827 } 1828 1829 void UIVMActivityMonitorCloud::obtainDataAndUpdate() 1830 { 1831 foreach (const KMetricType &enmMetricType, m_availableMetricTypes) 1832 { 1833 UIMetric metric; 1834 int iDataSeriesIndex = 0; 1835 if (!findMetric(enmMetricType, metric, iDataSeriesIndex)) 1836 continue; 1837 /* Be a paranoid: */ 1838 if (iDataSeriesIndex >= DATA_SERIES_SIZE) 1839 continue; 1840 int iDataSize = 1; 1841 if (metric.dataSize(iDataSeriesIndex) == 0) 1842 iDataSize = 60; 1843 UIProgressTaskReadCloudMachineMetricData *pTask = new UIProgressTaskReadCloudMachineMetricData(this, m_comMachine, 1844 enmMetricType, iDataSize); 1845 connect(pTask, &UIProgressTaskReadCloudMachineMetricData::sigMetricDataReceived, 1846 this, &UIVMActivityMonitorCloud::sltMetricDataReceived); 1847 pTask->start(); 1848 } 1849 } 1850 1851 QString UIVMActivityMonitorCloud::defaultMachineFolder() const 1852 { 1853 /** @todo */ 1854 return QString(); 1855 } 1856 void UIVMActivityMonitorCloud::reset(){} 1857 void UIVMActivityMonitorCloud::start() 1858 { 1859 obtainDataAndUpdate(); 1860 /* Every minute: */ 1861 if (m_pTimer) 1862 m_pTimer->start(1000 * 60); 1863 1864 } 1865 1866 void UIVMActivityMonitorCloud::updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG /*iOtherPercentage*/) 1867 { 1868 UIMetric &CPUMetric = m_metrics[m_strCPUMetricName]; 1869 CPUMetric.addData(0, iLoadPercentage); 1870 CPUMetric.setMaximum(100); 1871 if (m_infoLabels.contains(m_strCPUMetricName) && m_infoLabels[m_strCPUMetricName]) 1872 { 1873 QString strInfo; 1874 1875 strInfo = QString("<b>%1</b></b><br/><font color=\"%2\">%3: %4%5</font>") 1876 .arg(m_strCPUInfoLabelTitle) 1877 .arg(dataColorString(m_strCPUMetricName, 0)) 1878 .arg(m_strCPUInfoLabelGuest).arg(QString::number(iLoadPercentage)).arg(CPUMetric.unit()); 1879 1880 m_infoLabels[m_strCPUMetricName]->setText(strInfo); 1881 } 1882 1883 if (m_charts.contains(m_strCPUMetricName)) 1884 m_charts[m_strCPUMetricName]->update(); 1885 } 1886 void UIVMActivityMonitorCloud::updateRAMGraphsAndMetric(quint64 /*iTotalRAM*/, quint64 /*iFreeRAM*/){} 1887 void UIVMActivityMonitorCloud::updateNetworkGraphsAndMetric(quint64 /*iReceiveTotal*/, quint64 /*iTransmitTotal*/){} 1888 void UIVMActivityMonitorCloud::updateDiskIOGraphsAndMetric(quint64 /*uDiskIOTotalWritten*/, quint64 /*uDiskIOTotalRead*/){} 1889 1890 bool UIVMActivityMonitorCloud::findMetric(KMetricType enmMetricType, UIMetric &metric, int &iDataSeriesIndex) const 1891 { 1892 if (m_metricTypeNames[enmMetricType].isEmpty()) 1893 return false; 1894 1895 const QString &strMetricName = m_metricTypeNames[enmMetricType]; 1896 1897 if (!m_metrics.contains(strMetricName)) 1898 return false; 1899 1900 metric = m_metrics[strMetricName]; 1901 iDataSeriesIndex = 0; 1902 if (enmMetricType == KMetricType_NetworksBytesOut || 1903 enmMetricType == KMetricType_DiskBytesRead) 1904 iDataSeriesIndex = 1; 1905 return true; 1906 } 1907 1908 void UIVMActivityMonitorCloud::prepareMetrics() 1909 { 1910 // UIMetric ramMetric(m_strRAMMetricName, metrics[i].GetUnit(), g_iMaximumQueueSize); 1911 // ramMetric.setDataSeriesName(0, "Free"); 1912 // ramMetric.setDataSeriesName(1, "Used"); 1913 // ramMetric.setRequiresGuestAdditions(true); 1914 // m_metrics.insert(m_strRAMMetricName, ramMetric); 1915 1916 /* CPU Metric: */ 1917 UIMetric cpuMetric(m_strCPUMetricName, "%", g_iMaximumQueueSize); 1918 cpuMetric.setDataSeriesName(0, "CPU Utilization"); 1919 m_metrics.insert(m_strCPUMetricName, cpuMetric); 1920 1921 // /* Network metric: */ 1922 // UIMetric networkMetric(m_strNetworkMetricName, "B", g_iMaximumQueueSize); 1923 // networkMetric.setDataSeriesName(0, "Receive Rate"); 1924 // networkMetric.setDataSeriesName(1, "Transmit Rate"); 1925 // networkMetric.setAutoUpdateMaximum(true); 1926 // m_metrics.insert(m_strNetworkMetricName, networkMetric); 1927 1928 // /* Disk IO metric */ 1929 // UIMetric diskIOMetric(m_strDiskIOMetricName, "B", g_iMaximumQueueSize); 1930 // diskIOMetric.setDataSeriesName(0, "Write Rate"); 1931 // diskIOMetric.setDataSeriesName(1, "Read Rate"); 1932 // diskIOMetric.setAutoUpdateMaximum(true); 1933 // m_metrics.insert(m_strDiskIOMetricName, diskIOMetric); 1934 1935 // /* VM exits metric */ 1936 // UIMetric VMExitsMetric(m_strVMExitMetricName, "times", g_iMaximumQueueSize); 1937 // VMExitsMetric.setAutoUpdateMaximum(true); 1938 // m_metrics.insert(m_strVMExitMetricName, VMExitsMetric); 1939 } 1940 void UIVMActivityMonitorCloud::prepareWidgets() 1941 { 1942 UIVMActivityMonitor::prepareWidgets(); 1943 m_charts[m_strCPUMetricName]->setShowPieChart(false); 1944 } 1627 1945 #include "UIVMActivityMonitor.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h
r102151 r102264 37 37 #include <QQueue> 38 38 #include <QTextStream> 39 #include <QHash> 39 40 40 41 /* COM includes: */ … … 42 43 #include "CGuest.h" 43 44 #include "CMachine.h" 45 #include "CCloudMachine.h" 44 46 #include "CMachineDebugger.h" 45 47 #include "CPerformanceCollector.h" … … 58 60 class UISession; 59 61 class UIRuntimeInfoWidget; 62 class UIProgressTaskReadCloudMachineMetricList; 60 63 61 64 #define DATA_SERIES_SIZE 2 … … 170 173 /** @} */ 171 174 172 v oid prepareWidgets();175 virtual void prepareWidgets(); 173 176 void prepareActions(); 174 177 … … 307 310 public: 308 311 309 312 UIVMActivityMonitorCloud(EmbedTo enmEmbedding, QWidget *pParent, const CCloudMachine &machine); 313 virtual QUuid machineId() const RT_OVERRIDE; 314 virtual QString machineName() const RT_OVERRIDE; 315 316 private slots: 317 318 void sltMetricNameListingComplete(QVector<QString> metricNameList); 319 void sltMetricDataReceived(KMetricType enmMetricType, QVector<QString> data, QVector<QString> timeStamps); 320 321 private: 322 void setMachine(const CCloudMachine &comMachine); 323 virtual void retranslateUi() RT_OVERRIDE; 324 virtual void obtainDataAndUpdate() RT_OVERRIDE; 325 326 virtual QString defaultMachineFolder() const RT_OVERRIDE; 327 virtual void reset() RT_OVERRIDE; 328 virtual void start() RT_OVERRIDE; 329 virtual void prepareWidgets(); 330 /** @name The following functions update corresponding metric charts and labels with new values 331 * @{ */ 332 virtual void updateCPUGraphsAndMetric(ULONG iLoadPercentage, ULONG iOtherPercentage) RT_OVERRIDE; 333 virtual void updateRAMGraphsAndMetric(quint64 iTotalRAM, quint64 iFreeRAM) RT_OVERRIDE; 334 virtual void updateNetworkGraphsAndMetric(quint64 iReceiveTotal, quint64 iTransmitTotal) RT_OVERRIDE; 335 virtual void updateDiskIOGraphsAndMetric(quint64 uDiskIOTotalWritten, quint64 uDiskIOTotalRead) RT_OVERRIDE; 336 /** @} */ 337 bool findMetric(KMetricType enmMetricType, UIMetric &metric, int &iDataSeriesIndex) const; 338 void prepareMetrics(); 339 CCloudMachine m_comMachine; 340 UIProgressTaskReadCloudMachineMetricList *m_ReadListProgressTask; 341 342 QVector<KMetricType> m_availableMetricTypes; 343 /** Mapping from API enums to internal metric names. Necessary also since we don't hace a 1-to-1 mapping. */ 344 QHash<KMetricType, QString> m_metricTypeNames; 310 345 }; 311 346 #endif /* !FEQT_INCLUDED_SRC_activity_vmactivity_UIVMActivityMonitor_h */ -
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
r98999 r102264 173 173 template<> SHARED_LIBRARY_STUFF bool canConvert<KGuestSessionStatus>(); 174 174 template<> SHARED_LIBRARY_STUFF bool canConvert<KProcessStatus>(); 175 175 template<> SHARED_LIBRARY_STUFF bool canConvert<KMetricType>(); 176 176 177 177 /* Declare global conversion specializations: */ … … 350 350 template<> SHARED_LIBRARY_STUFF QString toString(const KProcessStatus &status); 351 351 template<> SHARED_LIBRARY_STUFF KProcessStatus fromString<KProcessStatus>(const QString &strStatus); 352 template<> SHARED_LIBRARY_STUFF QString toString(const KMetricType &metricType); 353 template<> SHARED_LIBRARY_STUFF KMetricType fromString<KMetricType>(const QString &strMetricType); 352 354 353 355 -
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp
r101200 r102264 68 68 template<> bool canConvert<KGuestSessionStatus>() { return true; } 69 69 template<> bool canConvert<KProcessStatus>() { return true; } 70 template<> bool canConvert<KMetricType>() { return true; } 70 71 71 72 /* QIcon <= KCloudMachineState: */ … … 864 865 return list.value(strStatus, KProcessStatus_Undefined); 865 866 } 867 868 /* QString <= KMetricType: */ 869 template<> QString toInternalString(const KMetricType &metricType) 870 { 871 QString strResult; 872 switch (metricType) 873 { 874 case KMetricType_Invalid: strResult = "Invalid"; break; 875 case KMetricType_CpuUtilization: strResult = "CpuUtilization"; break; 876 case KMetricType_MemoryUtilization: strResult = "MemoryUtilization"; break; 877 case KMetricType_DiskBytesRead: strResult = "DiskBytesRead"; break; 878 case KMetricType_DiskBytesWritten: strResult = "DiskBytesWritten"; break; 879 case KMetricType_NetworksBytesIn: strResult = "NetworksBytesIn"; break; 880 case KMetricType_NetworksBytesOut: strResult = "NetworksBytesOut"; break; 881 default: AssertMsgFailed(("No text for metric type=%d", metricType)); break; 882 } 883 return strResult; 884 } 885 886 /* KMetricType <= QString: */ 887 template<> KMetricType fromInternalString<KMetricType>(const QString &strMetricType) 888 { 889 if (strMetricType.compare("Invalid", Qt::CaseInsensitive) == 0) 890 return KMetricType_Invalid; 891 if (strMetricType.compare("CpuUtilization", Qt::CaseInsensitive) == 0) 892 return KMetricType_CpuUtilization; 893 if (strMetricType.compare("MemoryUtilization", Qt::CaseInsensitive) == 0) 894 return KMetricType_MemoryUtilization; 895 if (strMetricType.compare("DiskBytesRead", Qt::CaseInsensitive) == 0) 896 return KMetricType_DiskBytesRead; 897 if (strMetricType.compare("DiskBytesWritten", Qt::CaseInsensitive) == 0) 898 return KMetricType_DiskBytesWritten; 899 if (strMetricType.compare("NetworksBytesIn", Qt::CaseInsensitive) == 0) 900 return KMetricType_NetworksBytesIn; 901 if (strMetricType.compare("NetworksBytesOut", Qt::CaseInsensitive) == 0) 902 return KMetricType_NetworksBytesOut; 903 AssertMsgFailedReturn(("No value for '%s'", strMetricType.toUtf8().constData()), KMetricType_Invalid); 904 }
Note:
See TracChangeset
for help on using the changeset viewer.