Changeset 102774 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Jan 5, 2024 2:29:14 PM (13 months ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.cpp
r102773 r102774 1932 1932 UIVMActivityMonitorCloud::UIVMActivityMonitorCloud(EmbedTo enmEmbedding, QWidget *pParent, const CCloudMachine &machine) 1933 1933 :UIVMActivityMonitor(enmEmbedding, pParent, 60 /* iMaximumQueueSize */) 1934 , m_pMachineStateUpdateTimer(0) 1935 , m_enmMachineState(KCloudMachineState_Invalid) 1934 1936 { 1935 1937 m_metricTypeNames[KMetricType_CpuUtilization] = m_strCPUMetricName; … … 1942 1944 setMachine(machine); 1943 1945 determineTotalRAMAmount(); 1946 1947 m_pMachineStateUpdateTimer = new QTimer(this); 1948 if (m_pMachineStateUpdateTimer) 1949 connect(m_pMachineStateUpdateTimer, &QTimer::timeout, this, &UIVMActivityMonitorCloud::sltMachineStateUpdateTimeout); 1944 1950 1945 1951 prepareMetrics(); … … 1952 1958 resetRAMInfoLabel(); 1953 1959 1954 if (m_comMachine.isOk())1955 {1956 m_ReadListProgressTask = new UIProgressTaskReadCloudMachineMetricList(this, m_comMachine);1957 if (m_ReadListProgressTask)1958 connect(m_ReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived,1959 this, &UIVMActivityMonitorCloud::sltMetricNameListingComplete);1960 }1961 1960 /* Start the timer: */ 1962 1961 start(); … … 2008 2007 } 2009 2008 2009 void UIVMActivityMonitorCloud::sltMachineStateUpdateTimeout() 2010 { 2011 if (!m_comMachine.isOk()) 2012 return; 2013 2014 KCloudMachineState enmNewState = m_comMachine.GetState(); 2015 /* No changes. Noting to do: */ 2016 if (m_enmMachineState == enmNewState) 2017 return; 2018 2019 if (m_ReadListProgressTask) 2020 { 2021 disconnect(m_ReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived, 2022 this, &UIVMActivityMonitorCloud::sltMetricNameListingComplete); 2023 delete m_ReadListProgressTask; 2024 } 2025 2026 if (enmNewState == KCloudMachineState_Running) 2027 { 2028 m_ReadListProgressTask = new UIProgressTaskReadCloudMachineMetricList(this, m_comMachine); 2029 if (m_ReadListProgressTask) 2030 { 2031 connect(m_ReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived, 2032 this, &UIVMActivityMonitorCloud::sltMetricNameListingComplete); 2033 m_ReadListProgressTask->start(); 2034 } 2035 setEnabled(true); 2036 /* Every minute: */ 2037 if (m_pTimer) 2038 m_pTimer->start(1000 * 60); 2039 } 2040 else 2041 { 2042 reset(); 2043 if (m_pTimer) 2044 m_pTimer->stop(); 2045 } 2046 m_enmMachineState = enmNewState; 2047 } 2048 2010 2049 void UIVMActivityMonitorCloud::sltMetricNameListingComplete(QVector<QString> metricNameList) 2011 2050 { … … 2018 2057 2019 2058 sender()->deleteLater(); 2059 obtainDataAndUpdate(); 2020 2060 } 2021 2061 … … 2076 2116 void UIVMActivityMonitorCloud::obtainDataAndUpdate() 2077 2117 { 2078 /* No need to refresh cached values of the ICloudMachine since it has been already done2079 * by the VM list related class. Just fetch the machine attribute here: */2080 if (!m_comMachine.isOk() || m_comMachine.GetState() != KCloudMachineState_Running)2081 {2082 setEnabled(false);2083 return;2084 }2085 if (!isEnabled())2086 setEnabled(true);2087 if (m_ReadListProgressTask && !m_ReadListProgressTask->isRunning())2088 m_ReadListProgressTask->start();2089 2118 foreach (const KMetricType &enmMetricType, m_availableMetricTypes) 2090 2119 { … … 2113 2142 return QString(); 2114 2143 } 2115 void UIVMActivityMonitorCloud::reset(){} 2144 void UIVMActivityMonitorCloud::reset() 2145 { 2146 setEnabled(false); 2147 2148 if (m_pTimer) 2149 m_pTimer->stop(); 2150 /* reset the metrics. this will delete their data cache: */ 2151 for (QMap<QString, UIMetric>::iterator iterator = m_metrics.begin(); 2152 iterator != m_metrics.end(); ++iterator) 2153 iterator.value().reset(); 2154 /* force update on the charts to draw now emptied metrics' data: */ 2155 for (QMap<QString, UIChart*>::iterator iterator = m_charts.begin(); 2156 iterator != m_charts.end(); ++iterator) 2157 iterator.value()->update(); 2158 /* Reset the info labels: */ 2159 resetCPUInfoLabel(); 2160 resetRAMInfoLabel(); 2161 resetNetworkInfoLabel(); 2162 resetDiskIOInfoLabel(); 2163 2164 m_diskWriteCache.clear(); 2165 m_diskReadCache.clear(); 2166 2167 m_networkReceiveCache.clear(); 2168 m_networkTransmitCache.clear(); 2169 2170 update(); 2171 //sltClearCOMData(); 2172 } 2173 2116 2174 void UIVMActivityMonitorCloud::start() 2117 2175 { 2118 obtainDataAndUpdate(); 2119 /* Every minute: */ 2120 if (m_pTimer) 2121 m_pTimer->start(1000 * 60); 2122 2176 sltMachineStateUpdateTimeout(); 2177 if (m_pMachineStateUpdateTimer) 2178 m_pMachineStateUpdateTimer->start(1000 * 10); 2123 2179 } 2124 2180 -
trunk/src/VBox/Frontends/VirtualBox/src/activity/vmactivity/UIVMActivityMonitor.h
r102746 r102774 326 326 void sltMetricNameListingComplete(QVector<QString> metricNameList); 327 327 void sltMetricDataReceived(KMetricType enmMetricType, QVector<QString> data, QVector<QString> timeStamps); 328 void sltMachineStateUpdateTimeout(); 328 329 329 330 private: … … 360 361 361 362 CCloudMachine m_comMachine; 362 UIProgressTaskReadCloudMachineMetricList *m_ReadListProgressTask;363 QPointer<UIProgressTaskReadCloudMachineMetricList> m_ReadListProgressTask; 363 364 364 365 QVector<KMetricType> m_availableMetricTypes; … … 374 375 /** Total amount of RAM in kb. */ 375 376 quint64 m_iTotalRAM; 377 QTimer *m_pMachineStateUpdateTimer; 378 KCloudMachineState m_enmMachineState; 376 379 }; 377 380 #endif /* !FEQT_INCLUDED_SRC_activity_vmactivity_UIVMActivityMonitor_h */
Note:
See TracChangeset
for help on using the changeset viewer.