Changeset 104955 in vbox
- Timestamp:
- Jun 18, 2024 11:18:38 AM (9 months ago)
- svn:sync-xref-src-repo-rev:
- 163563
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/activity/overview
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp
r104951 r104955 33 33 34 34 /* GUI includes: */ 35 #include "UIConverter.h" 35 36 #include "UICommon.h" 36 37 #include "UIExtraDataDefs.h" … … 53 54 #include "CSession.h" 54 55 56 57 /********************************************************************************************************************************* 58 * Class UIActivityOverviewAccessibleRowLocal definition. * 59 *********************************************************************************************************************************/ 60 55 61 class UIActivityOverviewAccessibleRowLocal : public UIActivityOverviewAccessibleRow 56 62 { … … 67 73 virtual bool isRunning() const RT_OVERRIDE RT_FINAL; 68 74 virtual bool isCloudVM() const RT_OVERRIDE RT_FINAL; 75 virtual QString machineStateString() const RT_OVERRIDE RT_FINAL; 69 76 void resetDebugger(); 70 77 void updateCells(); … … 82 89 CGuest m_comGuest; 83 90 84 quint64 m_uTotalRAM; 91 85 92 quint64 m_uFreeRAM; 86 93 … … 93 100 94 101 }; 102 103 104 /********************************************************************************************************************************* 105 * Class UIActivityOverviewAccessibleRowCloud definition. * 106 *********************************************************************************************************************************/ 107 108 /* A UIActivityOverviewItem derivation to show cloud vms in the table view: */ 109 class UIActivityOverviewAccessibleRowCloud : public UIActivityOverviewAccessibleRow 110 { 111 Q_OBJECT; 112 public: 113 UIActivityOverviewAccessibleRowCloud(QITableView *pTableView, const QUuid &uMachineId, 114 const QString &strMachineName, CCloudMachine &comCloudMachine); 115 void updateMachineState(); 116 virtual bool isRunning() const RT_OVERRIDE RT_FINAL; 117 virtual bool isCloudVM() const RT_OVERRIDE RT_FINAL; 118 virtual QString machineStateString() const RT_OVERRIDE RT_FINAL; 119 virtual void setMachineState(int iState) RT_OVERRIDE RT_FINAL; 120 121 122 protected: 123 124 private slots: 125 126 void sltTimeout(); 127 void sltMetricNameListingComplete(QVector<QString> metricNameList); 128 void sltMetricDataReceived(KMetricType enmMetricType, 129 const QVector<QString> &data, const QVector<QString> &timeStamps); 130 private: 131 132 void getMetricList(); 133 void resetColumData(); 134 135 QTimer *m_pTimer; 136 CCloudMachine m_comCloudMachine; 137 KCloudMachineState m_enmMachineState; 138 QVector<KMetricType> m_availableMetricTypes; 139 }; 140 141 142 /********************************************************************************************************************************* 143 * Class UIActivityOverviewAccessibleRowLocal implementation. * 144 *********************************************************************************************************************************/ 95 145 96 146 UIActivityOverviewAccessibleRowLocal::UIActivityOverviewAccessibleRowLocal(QITableView *pTableView, const QUuid &uMachineId, … … 98 148 : UIActivityOverviewAccessibleRow(pTableView, uMachineId, strMachineName) 99 149 , m_enmMachineState(enmMachineState) 100 , m_uTotalRAM(0)101 150 , m_uFreeRAM(0) 102 151 , m_uNetworkDownTotal(0) … … 244 293 if (m_cells.value(enmColumnIndex, 0)) 245 294 m_cells[enmColumnIndex]->setText(strText); 295 } 296 297 QString UIActivityOverviewAccessibleRowLocal::machineStateString() const 298 { 299 return gpConverter->toString(m_enmMachineState); 300 } 301 302 303 /********************************************************************************************************************************* 304 * Class UIActivityOverviewAccessibleRowCloud implementation. * 305 *********************************************************************************************************************************/ 306 307 UIActivityOverviewAccessibleRowCloud::UIActivityOverviewAccessibleRowCloud(QITableView *pTableView, const QUuid &uMachineId, 308 const QString &strMachineName, CCloudMachine &comCloudMachine) 309 : UIActivityOverviewAccessibleRow(pTableView, uMachineId, strMachineName) 310 , m_comCloudMachine(comCloudMachine) 311 { 312 updateMachineState(); 313 m_pTimer = new QTimer(this); 314 if (m_pTimer) 315 { 316 connect(m_pTimer, &QTimer::timeout, this, &UIActivityOverviewAccessibleRowCloud::sltTimeout); 317 m_pTimer->setInterval(60 * 1000); 318 } 319 resetColumData(); 320 } 321 322 void UIActivityOverviewAccessibleRowCloud::updateMachineState() 323 { 324 if (m_comCloudMachine.isOk()) 325 setMachineState(m_comCloudMachine.GetState()); 326 } 327 328 bool UIActivityOverviewAccessibleRowCloud::isRunning() const 329 { 330 return m_enmMachineState == KCloudMachineState_Running; 331 } 332 333 bool UIActivityOverviewAccessibleRowCloud::isCloudVM() const 334 { 335 return true; 336 } 337 338 QString UIActivityOverviewAccessibleRowCloud::machineStateString() const 339 { 340 if (!m_comCloudMachine.isOk()) 341 return QString(); 342 return gpConverter->toString(m_comCloudMachine.GetState()); 343 } 344 345 void UIActivityOverviewAccessibleRowCloud::sltTimeout() 346 { 347 int iDataSize = 1; 348 foreach (const KMetricType &enmMetricType, m_availableMetricTypes) 349 { 350 UIProgressTaskReadCloudMachineMetricData *pTask = new UIProgressTaskReadCloudMachineMetricData(this, m_comCloudMachine, 351 enmMetricType, iDataSize); 352 connect(pTask, &UIProgressTaskReadCloudMachineMetricData::sigMetricDataReceived, 353 this, &UIActivityOverviewAccessibleRowCloud::sltMetricDataReceived); 354 pTask->start(); 355 } 356 } 357 358 void UIActivityOverviewAccessibleRowCloud::sltMetricDataReceived(KMetricType /*enmMetricType*/, 359 const QVector<QString> &data, const QVector<QString> &timeStamps) 360 { 361 Q_UNUSED(timeStamps); 362 if (data.isEmpty()) 363 return; 364 365 if (data[0].toFloat() < 0) 366 return; 367 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); 404 405 sender()->deleteLater(); 406 } 407 408 void UIActivityOverviewAccessibleRowCloud::setMachineState(int iState) 409 { 410 if (iState <= KCloudMachineState_Invalid || iState >= KCloudMachineState_Max) 411 return; 412 KCloudMachineState enmState = static_cast<KCloudMachineState>(iState); 413 if (m_enmMachineState == enmState) 414 return; 415 m_enmMachineState = enmState; 416 if (isRunning()) 417 { 418 getMetricList(); 419 if (m_uTotalRAM == 0) 420 m_uTotalRAM = UIMonitorCommon::determineTotalRAMAmount(m_comCloudMachine); 421 } 422 else 423 { 424 if (m_pTimer) 425 m_pTimer->stop(); 426 } 427 } 428 429 void UIActivityOverviewAccessibleRowCloud::resetColumData() 430 { 431 // for (int i = (int) VMActivityOverviewColumn_CPUGuestLoad; 432 // i < (int)VMActivityOverviewColumn_Max; ++i) 433 // m_columnData[i] = UIVMActivityOverviewWidget::tr("N/A"); 434 } 435 436 void UIActivityOverviewAccessibleRowCloud::getMetricList() 437 { 438 if (!isRunning()) 439 return; 440 UIProgressTaskReadCloudMachineMetricList *pReadListProgressTask = 441 new UIProgressTaskReadCloudMachineMetricList(this, m_comCloudMachine); 442 AssertPtrReturnVoid(pReadListProgressTask); 443 connect(pReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived, 444 this, &UIActivityOverviewAccessibleRowCloud::sltMetricNameListingComplete); 445 pReadListProgressTask->start(); 446 } 447 448 void UIActivityOverviewAccessibleRowCloud::sltMetricNameListingComplete(QVector<QString> metricNameList) 449 { 450 AssertReturnVoid(m_pTimer); 451 m_availableMetricTypes.clear(); 452 foreach (const QString &strName, metricNameList) 453 m_availableMetricTypes << gpConverter->fromInternalString<KMetricType>(strName); 454 455 if (!m_availableMetricTypes.isEmpty()) 456 { 457 /* Dont wait 60 secs: */ 458 sltTimeout(); 459 m_pTimer->start(); 460 } 461 else 462 { 463 m_pTimer->stop(); 464 resetColumData(); 465 } 466 467 if (sender()) 468 sender()->deleteLater(); 469 246 470 } 247 471 … … 548 772 } 549 773 550 //for (int i = 0; i < (int)VMActivityOverviewColumn_Max; ++i)551 //{552 //for (int j = 0; j < m_rows.size(); ++j)553 //if (m_columnDataMaxLength.value(i, 0) < m_rows[j]->columnLength(i))554 //m_columnDataMaxLength[i] = m_rows[j]->columnLength(i);555 //}774 for (int i = 0; i < (int)VMActivityOverviewColumn_Max; ++i) 775 { 776 for (int j = 0; j < m_rows.size(); ++j) 777 if (m_columnDataMaxLength.value(i, 0) < m_rows[j]->columnLength(i)) 778 m_columnDataMaxLength[i] = m_rows[j]->columnLength(i); 779 } 556 780 557 781 emit sigDataUpdate(); … … 725 949 , m_uMachineId(uMachineId) 726 950 , m_strMachineName(strMachineName) 951 , m_uTotalRAM(0) 727 952 { 728 953 initCells(); … … 748 973 } 749 974 975 int UIActivityOverviewAccessibleRow::columnLength(int iColumnIndex) const 976 { 977 UIActivityOverviewAccessibleCell *pCell = m_cells.value(iColumnIndex, 0); 978 if (!pCell) 979 return 0; 980 return pCell->text().length(); 981 } 982 750 983 UIActivityOverviewAccessibleRow::~UIActivityOverviewAccessibleRow() 751 984 { -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h
r104951 r104955 144 144 145 145 virtual QITableViewCell *childItem(int iIndex) const RT_OVERRIDE RT_FINAL; 146 146 int columnLength(int iColumnIndex) const; 147 147 QString cellText(int iColumn) const; 148 virtual QString machineStateString() const = 0; 148 149 149 150 protected: … … 154 155 155 156 QString m_strMachineName; 157 quint64 m_uTotalRAM; 156 158 private: 157 159
Note:
See TracChangeset
for help on using the changeset viewer.