Changeset 104951 in vbox
- Timestamp:
- Jun 18, 2024 10:00:39 AM (3 months ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/activity/overview
- Files:
-
- 3 edited
-
UIVMActivityOverviewModelView.cpp (modified) (7 diffs)
-
UIVMActivityOverviewModelView.h (modified) (4 diffs)
-
UIVMActivityOverviewWidget.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp
r104945 r104951 29 29 #include <QApplication> 30 30 #include <QHeaderView> 31 #include <QMouseEvent> 31 32 #include <QTimer> 32 33 … … 86 87 quint64 m_uNetworkDownTotal; 87 88 quint64 m_uNetworkUpTotal; 89 90 quint64 m_uVMExitTotal; 91 quint64 m_uDiskWriteTotal; 92 quint64 m_uDiskReadTotal; 93 88 94 }; 89 95 … … 96 102 , m_uNetworkDownTotal(0) 97 103 , m_uNetworkUpTotal(0) 104 , m_uVMExitTotal(0) 105 , m_uDiskWriteTotal(0) 106 , m_uDiskReadTotal(0) 98 107 { 99 108 if (m_enmMachineState == KMachineState_Running) … … 150 159 updateCellText(VMActivityOverviewColumn_NetworkUpTotal, QString("%1").arg(UITranslator::formatSize(m_uNetworkUpTotal, iDecimalCount))); 151 160 updateCellText(VMActivityOverviewColumn_NetworkDownTotal, QString("%1").arg(UITranslator::formatSize(m_uNetworkDownTotal, iDecimalCount))); 161 162 /* IO rate: */ 163 quint64 uPrevWriteTotal = m_uDiskWriteTotal; 164 quint64 uPrevReadTotal = m_uDiskReadTotal; 165 UIMonitorCommon::getDiskLoad(m_comDebugger, m_uDiskWriteTotal, m_uDiskReadTotal); 166 quint64 uDiskWriteRate = m_uDiskWriteTotal - uPrevWriteTotal; 167 quint64 uDiskReadRate = m_uDiskReadTotal - uPrevReadTotal; 168 updateCellText(VMActivityOverviewColumn_DiskIOReadRate,QString("%1").arg(UITranslator::formatSize(uDiskReadRate, iDecimalCount))); 169 updateCellText(VMActivityOverviewColumn_DiskIOWriteRate,QString("%1").arg(UITranslator::formatSize(uDiskWriteRate, iDecimalCount))); 170 updateCellText(VMActivityOverviewColumn_DiskIOReadTotal, QString("%1").arg(UITranslator::formatSize(m_uDiskReadTotal, iDecimalCount))); 171 updateCellText(VMActivityOverviewColumn_DiskIOWriteTotal, QString("%1").arg(UITranslator::formatSize(m_uDiskWriteTotal, iDecimalCount))); 172 173 /* VM Exits: */ 174 quint64 uPrevVMExitsTotal = m_uVMExitTotal; 175 UIMonitorCommon::getVMMExitCount(m_comDebugger, m_uVMExitTotal); 176 quint64 uVMExitRate = m_uVMExitTotal - uPrevVMExitsTotal; 177 updateCellText(VMActivityOverviewColumn_VMExits, QString("%1/%2").arg(UITranslator::addMetricSuffixToNumber(uVMExitRate)). 178 arg(UITranslator::addMetricSuffixToNumber(m_uVMExitTotal))); 179 152 180 153 181 } … … 228 256 } 229 257 258 void UIVMActivityOverviewAccessibleTableView::updateColumVisibility() 259 { 260 UIActivityOverviewAccessibleProxyModel *pProxyModel = qobject_cast<UIActivityOverviewAccessibleProxyModel*>(model()); 261 if (!pProxyModel) 262 return; 263 UIActivityOverviewAccessibleModel *pModel = qobject_cast<UIActivityOverviewAccessibleModel*>(pProxyModel->sourceModel()); 264 QHeaderView *pHeader = horizontalHeader(); 265 266 if (!pModel || !pHeader) 267 return; 268 for (int i = (int)VMActivityOverviewColumn_Name; i < (int)VMActivityOverviewColumn_Max; ++i) 269 { 270 if (!pModel->columnVisible(i)) 271 pHeader->hideSection(i); 272 else 273 pHeader->showSection(i); 274 } 275 resizeHeaders(); 276 } 277 278 int UIVMActivityOverviewAccessibleTableView::selectedItemIndex() const 279 { 280 UIActivityOverviewAccessibleProxyModel *pModel = qobject_cast<UIActivityOverviewAccessibleProxyModel*>(model()); 281 if (!pModel) 282 return -1; 283 284 QItemSelectionModel *pSelectionModel = selectionModel(); 285 if (!pSelectionModel) 286 return -1; 287 QModelIndexList selectedItemIndices = pSelectionModel->selectedRows(); 288 if (selectedItemIndices.isEmpty()) 289 return -1; 290 291 /* just use the the 1st index: */ 292 QModelIndex modelIndex = pModel->mapToSource(selectedItemIndices[0]); 293 294 if (!modelIndex.isValid()) 295 return -1; 296 return modelIndex.row(); 297 } 298 299 bool UIVMActivityOverviewAccessibleTableView::hasSelection() const 300 { 301 if (!selectionModel()) 302 return false; 303 return selectionModel()->hasSelection(); 304 } 305 230 306 void UIVMActivityOverviewAccessibleTableView::setMinimumColumnWidths(const QMap<int, int>& widths) 231 307 { 232 308 m_minimumColumnWidths = widths; 233 309 resizeHeaders(); 310 } 311 312 void UIVMActivityOverviewAccessibleTableView::resizeEvent(QResizeEvent *pEvent) 313 { 314 resizeHeaders(); 315 QTableView::resizeEvent(pEvent); 316 } 317 318 void UIVMActivityOverviewAccessibleTableView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) 319 { 320 emit sigSelectionChanged(selected, deselected); 321 QTableView::selectionChanged(selected, deselected); 322 } 323 324 void UIVMActivityOverviewAccessibleTableView::mousePressEvent(QMouseEvent *pEvent) 325 { 326 if (!indexAt(pEvent->position().toPoint()).isValid()) 327 clearSelection(); 328 QTableView::mousePressEvent(pEvent); 234 329 } 235 330 … … 262 357 { 263 358 initialize(); 359 } 360 361 void UIActivityOverviewAccessibleModel::setColumnVisible(const QMap<int, bool>& columnVisible) 362 { 363 m_columnVisible = columnVisible; 364 } 365 366 bool UIActivityOverviewAccessibleModel::columnVisible(int iColumnId) const 367 { 368 return m_columnVisible.value(iColumnId, true); 369 } 370 371 372 bool UIActivityOverviewAccessibleModel::isVMRunning(int rowIndex) const 373 { 374 if (rowIndex >= m_rows.size() || rowIndex < 0 || !m_rows[rowIndex]) 375 return false; 376 return m_rows[rowIndex]->isRunning(); 377 } 378 379 bool UIActivityOverviewAccessibleModel::isCloudVM(int rowIndex) const 380 { 381 if (rowIndex >= m_rows.size() || rowIndex < 0 || !m_rows[rowIndex]) 382 return false; 383 return m_rows[rowIndex]->isCloudVM(); 264 384 } 265 385 … … 561 681 } 562 682 683 void UIActivityOverviewAccessibleProxyModel::setNotRunningVMVisibility(bool fShow) 684 { 685 if (m_fShowNotRunningVMs == fShow) 686 return; 687 m_fShowNotRunningVMs = fShow; 688 invalidateFilter(); 689 } 690 691 692 void UIActivityOverviewAccessibleProxyModel::setCloudVMVisibility(bool fShow) 693 { 694 if (m_fShowCloudVMs == fShow) 695 return; 696 m_fShowCloudVMs = fShow; 697 invalidateFilter(); 698 } 699 700 bool UIActivityOverviewAccessibleProxyModel::filterAcceptsRow(int iSourceRow, const QModelIndex &sourceParent) const 701 { 702 Q_UNUSED(sourceParent); 703 if (m_fShowNotRunningVMs && m_fShowCloudVMs) 704 return true; 705 UIActivityOverviewAccessibleModel *pModel = qobject_cast<UIActivityOverviewAccessibleModel*>(sourceModel()); 706 if (!pModel) 707 return true; 708 709 if (!m_fShowNotRunningVMs && !pModel->isVMRunning(iSourceRow)) 710 return false; 711 if (!m_fShowCloudVMs && pModel->isCloudVM(iSourceRow)) 712 return false; 713 return true; 714 } 715 716 563 717 564 718 /********************************************************************************************************************************* -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h
r104943 r104951 54 54 Q_OBJECT; 55 55 56 signals: 57 58 void sigSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); 59 56 60 public: 57 61 58 62 UIVMActivityOverviewAccessibleTableView(QWidget *pParent); 59 63 void setMinimumColumnWidths(const QMap<int, int>& widths); 64 void updateColumVisibility(); 65 int selectedItemIndex() const; 66 bool hasSelection() const; 67 68 private: 69 70 virtual void resizeEvent(QResizeEvent *pEvent) RT_OVERRIDE; 71 virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) RT_OVERRIDE; 72 virtual void mousePressEvent(QMouseEvent *pEvent) RT_OVERRIDE; 73 60 74 /** Resizes all the columns in response to resizeEvent. Columns cannot be narrower than m_minimumColumnWidths values. */ 61 75 void resizeHeaders(); … … 76 90 UIActivityOverviewAccessibleProxyModel(QObject *parent = 0); 77 91 void dataUpdate(); 92 void setNotRunningVMVisibility(bool fShow); 93 void setCloudVMVisibility(bool fShow); 78 94 79 95 protected: 80 96 81 97 // virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const RT_OVERRIDE; 82 // bool filterAcceptsRow(int iSourceRow, const QModelIndex &sourceParent) const RT_OVERRIDE; 83 84 private: 85 98 bool filterAcceptsRow(int iSourceRow, const QModelIndex &sourceParent) const RT_OVERRIDE RT_FINAL; 99 100 private: 101 102 bool m_fShowNotRunningVMs; 103 bool m_fShowCloudVMs; 86 104 87 105 }; … … 165 183 void setShouldUpdate(bool fShouldUpdate); 166 184 void clearData(); 185 bool isVMRunning(int rowIndex) const; 186 bool isCloudVM(int rowIndex) const; 187 void setColumnVisible(const QMap<int, bool>& columnVisible); 188 bool columnVisible(int iColumnId) const; 167 189 168 190 private slots: … … 182 204 QITableView *m_pTableView; 183 205 QMap<int, QString> m_columnTitles; 206 QMap<int, bool> m_columnVisible; 184 207 QTimer *m_pLocalVMUpdateTimer; 185 208 /** Maximum length of string length of data displayed in column. Updated in UIActivityOverviewModel::data(..). */ -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp
r104943 r104951 1906 1906 connect(m_pModel, &UIActivityOverviewModel::sigHostStatsUpdate, 1907 1907 this, &UIVMActivityOverviewWidget::sltHandleHostStatsUpdate); 1908 connect(m_pTableView, &UIVMActivityOverviewTableView::customContextMenuRequested,1909 this, &UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest);1910 1908 connect(m_pTableView, &UIVMActivityOverviewTableView::sigSelectionChanged, 1911 1909 this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged); … … 1918 1916 m_pAccessibleModel = new UIActivityOverviewAccessibleModel(this, m_pAccessibleTableView); 1919 1917 m_pAccessibleProxyModel->setSourceModel(m_pAccessibleModel); 1918 m_pAccessibleProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs); 1919 m_pAccessibleProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); 1920 1920 m_pAccessibleTableView->setModel(m_pAccessibleProxyModel); 1921 1921 … … 1935 1935 m_pAccessibleTableView->sortByColumn(0, Qt::AscendingOrder); 1936 1936 1937 connect(m_pAccessibleTableView, &UIVMActivityOverviewAccessibleTableView::customContextMenuRequested, 1938 this, &UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest); 1939 connect(m_pAccessibleTableView, &UIVMActivityOverviewAccessibleTableView::sigSelectionChanged, 1940 this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged); 1941 1937 1942 layout()->addWidget(m_pAccessibleTableView); 1938 1943 } … … 2057 2062 void UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest(const QPoint &pos) 2058 2063 { 2059 if (!m_p TableView)2064 if (!m_pAccessibleTableView) 2060 2065 return; 2061 2066 … … 2079 2084 this, &UIVMActivityOverviewWidget::sltCloudVMVisibility); 2080 2085 2081 menu.exec(m_p TableView->mapToGlobal(pos));2086 menu.exec(m_pAccessibleTableView->mapToGlobal(pos)); 2082 2087 } 2083 2088 … … 2117 2122 if (m_pProxyModel) 2118 2123 m_pProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs); 2124 if (m_pAccessibleProxyModel) 2125 m_pAccessibleProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs); 2126 2119 2127 } 2120 2128 … … 2124 2132 if (m_pProxyModel) 2125 2133 m_pProxyModel->setCloudVMVisibility(m_fShowCloudVMs); 2134 if (m_pAccessibleProxyModel) 2135 m_pAccessibleProxyModel->setCloudVMVisibility(m_fShowCloudVMs); 2126 2136 } 2127 2137
Note:
See TracChangeset
for help on using the changeset viewer.

