Changeset 104964 in vbox
- Timestamp:
- Jun 19, 2024 12:13:28 PM (9 months ago)
- svn:sync-xref-src-repo-rev:
- 163573
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/activity/overview
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp
r104962 r104964 733 733 } 734 734 735 const QMap<int, int> UIActivityOverviewAccessibleModel::dataLengths() const 736 { 737 return m_columnDataMaxLength; 738 } 739 735 740 void UIActivityOverviewAccessibleModel::initialize() 736 741 { … … 803 808 } 804 809 810 void UIActivityOverviewAccessibleModel::getHostRAMStats() 811 { 812 CHost comHost = gpGlobalSession->host(); 813 m_hostStats.m_iRAMTotal = _1M * (quint64)comHost.GetMemorySize(); 814 m_hostStats.m_iRAMFree = _1M * (quint64)comHost.GetMemoryAvailable(); 815 } 816 805 817 void UIActivityOverviewAccessibleModel::sltLocalVMUpdateTimeout() 806 818 { 807 819 /* Host's RAM usage is obtained from IHost not from IPerformanceCollector: */ 808 //getHostRAMStats();820 getHostRAMStats(); 809 821 810 822 /* Use IPerformanceCollector to update VM RAM usage and Host CPU and file IO stats: */ … … 827 839 828 840 emit sigDataUpdate(); 829 //emit sigHostStatsUpdate(m_hostStats);841 emit sigHostStatsUpdate(m_hostStats); 830 842 } 831 843 … … 840 852 } 841 853 return -1; 854 } 855 856 QUuid UIActivityOverviewAccessibleModel::itemUid(int iIndex) 857 { 858 if (iIndex >= m_rows.size() || !m_rows[iIndex]) 859 return QUuid(); 860 return m_rows[iIndex]->machineId(); 842 861 } 843 862 … … 899 918 } 900 919 } 901 //else if (aReturnNames[i].contains("CPU/Load/User", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))902 //{903 //CHost comHost = (CHost)aReturnObjects[i];904 //if (!comHost.isNull())905 //m_hostStats.m_iCPUUserLoad = fData;906 //}907 //else if (aReturnNames[i].contains("CPU/Load/Kernel", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))908 //{909 //CHost comHost = (CHost)aReturnObjects[i];910 //if (!comHost.isNull())911 //m_hostStats.m_iCPUKernelLoad = fData;912 //}913 //else if (aReturnNames[i].contains("CPU/MHz", Qt::CaseInsensitive) && !aReturnNames[i].contains(":"))914 //{915 //CHost comHost = (CHost)aReturnObjects[i];916 //if (!comHost.isNull())917 //m_hostStats.m_iCPUFreq = fData;918 //}919 //else if (aReturnNames[i].contains("FS", Qt::CaseInsensitive) &&920 //aReturnNames[i].contains("Total", Qt::CaseInsensitive) &&921 //!aReturnNames[i].contains(":"))922 //{923 //CHost comHost = (CHost)aReturnObjects[i];924 //if (!comHost.isNull())925 //m_hostStats.m_iFSTotal = _1M * fData;926 //}927 //else if (aReturnNames[i].contains("FS", Qt::CaseInsensitive) &&928 //aReturnNames[i].contains("Free", Qt::CaseInsensitive) &&929 //!aReturnNames[i].contains(":"))930 //{931 //CHost comHost = (CHost)aReturnObjects[i];932 //if (!comHost.isNull())933 //m_hostStats.m_iFSFree = _1M * fData;934 //}920 else if (aReturnNames[i].contains("CPU/Load/User", Qt::CaseInsensitive) && !aReturnNames[i].contains(":")) 921 { 922 CHost comHost = (CHost)aReturnObjects[i]; 923 if (!comHost.isNull()) 924 m_hostStats.m_iCPUUserLoad = fData; 925 } 926 else if (aReturnNames[i].contains("CPU/Load/Kernel", Qt::CaseInsensitive) && !aReturnNames[i].contains(":")) 927 { 928 CHost comHost = (CHost)aReturnObjects[i]; 929 if (!comHost.isNull()) 930 m_hostStats.m_iCPUKernelLoad = fData; 931 } 932 else if (aReturnNames[i].contains("CPU/MHz", Qt::CaseInsensitive) && !aReturnNames[i].contains(":")) 933 { 934 CHost comHost = (CHost)aReturnObjects[i]; 935 if (!comHost.isNull()) 936 m_hostStats.m_iCPUFreq = fData; 937 } 938 else if (aReturnNames[i].contains("FS", Qt::CaseInsensitive) && 939 aReturnNames[i].contains("Total", Qt::CaseInsensitive) && 940 !aReturnNames[i].contains(":")) 941 { 942 CHost comHost = (CHost)aReturnObjects[i]; 943 if (!comHost.isNull()) 944 m_hostStats.m_iFSTotal = _1M * fData; 945 } 946 else if (aReturnNames[i].contains("FS", Qt::CaseInsensitive) && 947 aReturnNames[i].contains("Free", Qt::CaseInsensitive) && 948 !aReturnNames[i].contains(":")) 949 { 950 CHost comHost = (CHost)aReturnObjects[i]; 951 if (!comHost.isNull()) 952 m_hostStats.m_iFSFree = _1M * fData; 953 } 935 954 } 936 955 } -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h
r104962 r104964 52 52 class UIVirtualMachineItemCloud; 53 53 54 /********************************************************************************************************************************* 55 * Class UIVMActivityOverviewHostStats definition. * 56 *********************************************************************************************************************************/ 57 /** A simple container to store host related performance values. */ 58 class UIVMActivityOverviewHostStats 59 { 60 61 public: 62 63 UIVMActivityOverviewHostStats(); 64 quint64 m_iCPUUserLoad; 65 quint64 m_iCPUKernelLoad; 66 quint64 m_iCPUFreq; 67 quint64 m_iRAMTotal; 68 quint64 m_iRAMFree; 69 quint64 m_iFSTotal; 70 quint64 m_iFSFree; 71 }; 72 73 54 74 class UIVMActivityOverviewAccessibleTableView : public QITableView 55 75 { … … 174 194 175 195 void sigDataUpdate(); 196 void sigHostStatsUpdate(const UIVMActivityOverviewHostStats &stats); 176 197 177 198 public: … … 192 213 bool columnVisible(int iColumnId) const; 193 214 void setCloudMachineItems(const QList<UIVirtualMachineItemCloud*> &cloudItems); 215 QUuid itemUid(int iIndex); 216 const QMap<int, int> dataLengths() const; 194 217 195 218 private slots: … … 206 229 void setupPerformanceCollector(); 207 230 void queryPerformanceCollector(); 231 void getHostRAMStats(); 208 232 QVector<UIActivityOverviewAccessibleRow*> m_rows; 209 233 QITableView *m_pTableView; … … 219 243 QVector<CUnknown> m_objectList; 220 244 /** @} */ 221 245 UIVMActivityOverviewHostStats m_hostStats; 222 246 }; 223 247 -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp
r104963 r104964 115 115 /** If not empty this text is drawn at the center of the doughnut chart. */ 116 116 QString m_strCenter; 117 };118 119 120 /*********************************************************************************************************************************121 * Class UIVMActivityOverviewHostStats definition. *122 *********************************************************************************************************************************/123 /** A simple container to store host related performance values. */124 class UIVMActivityOverviewHostStats125 {126 127 public:128 129 UIVMActivityOverviewHostStats();130 quint64 m_iCPUUserLoad;131 quint64 m_iCPUKernelLoad;132 quint64 m_iCPUFreq;133 quint64 m_iRAMTotal;134 quint64 m_iRAMFree;135 quint64 m_iFSTotal;136 quint64 m_iFSFree;137 117 }; 138 118 … … 1745 1725 , m_fShowToolbar(fShowToolbar) 1746 1726 , m_pToolBar(0) 1747 , m_pTableView(0)1748 1727 , m_pAccessibleTableView(0) 1749 , m_pProxyModel(0)1750 1728 , m_pAccessibleProxyModel(0) 1751 , m_pModel(0)1752 1729 , m_pAccessibleModel(0) 1753 1730 , m_pColumnVisibilityToggleMenu(0) … … 1779 1756 { 1780 1757 m_fIsCurrentTool = fIsCurrentTool; 1781 if (m_pModel)1782 m_pModel->setShouldUpdate(fIsCurrentTool);1783 1758 if (m_pAccessibleModel) 1784 1759 m_pAccessibleModel->setShouldUpdate(fIsCurrentTool); … … 1787 1762 void UIVMActivityOverviewWidget::setCloudMachineItems(const QList<UIVirtualMachineItemCloud*> &cloudItems) 1788 1763 { 1789 if (m_pModel)1790 m_pModel->setCloudMachineItems(cloudItems);1791 1764 if (m_pAccessibleModel) 1792 1765 m_pAccessibleModel->setCloudMachineItems(cloudItems); … … 1812 1785 updateColumnsMenu(); 1813 1786 1814 if (m_pModel)1815 m_pModel->setColumnCaptions(m_columnTitles);1816 1817 1787 if (m_pAccessibleModel) 1818 1788 m_pAccessibleModel->setColumnCaptions(m_columnTitles); … … 1823 1793 void UIVMActivityOverviewWidget::showEvent(QShowEvent *pEvent) 1824 1794 { 1825 if (m_pVMActivityMonitorAction && m_p TableView)1826 m_pVMActivityMonitorAction->setEnabled(m_p TableView->hasSelection());1795 if (m_pVMActivityMonitorAction && m_pAccessibleTableView) 1796 m_pVMActivityMonitorAction->setEnabled(m_pAccessibleTableView->hasSelection()); 1827 1797 1828 1798 QWidget::showEvent(pEvent); … … 1876 1846 if (m_pHostStatsWidget) 1877 1847 layout()->addWidget(m_pHostStatsWidget); 1878 1879 m_pModel = new UIActivityOverviewModel(this);1880 m_pProxyModel = new UIActivityOverviewProxyModel(this);1881 m_pTableView = new UIVMActivityOverviewTableView();1882 if (m_pTableView && m_pModel && m_pProxyModel)1883 {1884 layout()->addWidget(m_pTableView);1885 m_pProxyModel->setSourceModel(m_pModel);1886 m_pProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs);1887 m_pProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);1888 m_pTableView->setModel(m_pProxyModel);1889 m_pTableView->setItemDelegate(new UIVMActivityOverviewDelegate(this));1890 m_pTableView->setSelectionMode(QAbstractItemView::SingleSelection);1891 m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);1892 m_pTableView->setShowGrid(false);1893 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);1894 m_pTableView->horizontalHeader()->setHighlightSections(false);1895 m_pTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);1896 m_pTableView->verticalHeader()->setVisible(false);1897 m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);1898 /* Minimize the row height: */1899 m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize());1900 m_pTableView->setAlternatingRowColors(true);1901 m_pTableView->setSortingEnabled(true);1902 m_pTableView->sortByColumn(0, Qt::AscendingOrder);1903 1904 connect(m_pModel, &UIActivityOverviewModel::sigDataUpdate,1905 this, &UIVMActivityOverviewWidget::sltHandleDataUpdate);1906 connect(m_pAccessibleModel, &UIActivityOverviewAccessibleModel::sigDataUpdate,1907 this, &UIVMActivityOverviewWidget::sltHandleDataUpdate);1908 connect(m_pModel, &UIActivityOverviewModel::sigHostStatsUpdate,1909 this, &UIVMActivityOverviewWidget::sltHandleHostStatsUpdate);1910 connect(m_pTableView, &UIVMActivityOverviewTableView::sigSelectionChanged,1911 this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged);1912 updateModelColumVisibilityCache();1913 }1914 1915 1848 1916 1849 m_pAccessibleProxyModel = new UIActivityOverviewAccessibleProxyModel(this); … … 1941 1874 connect(m_pAccessibleTableView, &UIVMActivityOverviewAccessibleTableView::sigSelectionChanged, 1942 1875 this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged); 1943 1876 connect(m_pAccessibleModel, &UIActivityOverviewAccessibleModel::sigDataUpdate, 1877 this, &UIVMActivityOverviewWidget::sltHandleDataUpdate); 1878 connect(m_pAccessibleModel, &UIActivityOverviewAccessibleModel::sigHostStatsUpdate, 1879 this, &UIVMActivityOverviewWidget::sltHandleHostStatsUpdate); 1880 1881 updateModelColumVisibilityCache(); 1944 1882 layout()->addWidget(m_pAccessibleTableView); 1945 1883 } … … 2025 1963 void UIVMActivityOverviewWidget::sltClearCOMData() 2026 1964 { 2027 if (m_pModel)2028 m_pModel->clearData();2029 1965 if (m_pAccessibleModel) 2030 1966 m_pAccessibleModel->clearData(); … … 2056 1992 { 2057 1993 computeMinimumColumnWidths(); 2058 if (m_pProxyModel)2059 m_pProxyModel->dataUpdate();2060 1994 if (m_pAccessibleProxyModel) 2061 1995 m_pAccessibleProxyModel->dataUpdate(); … … 2092 2026 { 2093 2027 Q_UNUSED(deselected); 2094 if (!m_pVMActivityMonitorAction || !m_p Model || !m_pProxyModel)2028 if (!m_pVMActivityMonitorAction || !m_pAccessibleModel || !m_pAccessibleProxyModel) 2095 2029 return; 2096 2030 … … 2100 2034 return; 2101 2035 } 2102 int iMachineIndex = m_p ProxyModel->mapToSource(selected.indexes()[0]).row();2103 if (!m_p Model->isVMRunning(iMachineIndex))2036 int iMachineIndex = m_pAccessibleProxyModel->mapToSource(selected.indexes()[0]).row(); 2037 if (!m_pAccessibleModel->isVMRunning(iMachineIndex)) 2104 2038 { 2105 2039 m_pVMActivityMonitorAction->setEnabled(false); … … 2111 2045 void UIVMActivityOverviewWidget::sltHandleShowVMActivityMonitor() 2112 2046 { 2113 if (!m_p TableView || !m_pModel)2114 return; 2115 const QUuid uMachineId = m_p Model->itemUid(m_pTableView->selectedItemIndex());2047 if (!m_pAccessibleTableView || !m_pAccessibleModel) 2048 return; 2049 const QUuid uMachineId = m_pAccessibleModel->itemUid(m_pAccessibleTableView->selectedItemIndex()); 2116 2050 if (uMachineId.isNull()) 2117 2051 return; … … 2122 2056 { 2123 2057 m_fShowNotRunningVMs = fShow; 2124 if (m_pProxyModel)2125 m_pProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs);2126 2058 if (m_pAccessibleProxyModel) 2127 2059 m_pAccessibleProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs); 2128 2129 2060 } 2130 2061 … … 2132 2063 { 2133 2064 m_fShowCloudVMs = fShow; 2134 if (m_pProxyModel)2135 m_pProxyModel->setCloudVMVisibility(m_fShowCloudVMs);2136 2065 if (m_pAccessibleProxyModel) 2137 2066 m_pAccessibleProxyModel->setCloudVMVisibility(m_fShowCloudVMs); … … 2148 2077 void UIVMActivityOverviewWidget::updateModelColumVisibilityCache() 2149 2078 { 2150 if (m_pModel)2151 m_pModel->setColumnVisible(m_columnVisible);2152 2079 if (m_pAccessibleModel) 2153 2080 m_pAccessibleModel->setColumnVisible(m_columnVisible); 2154 2081 /* Notify the table view for the changed column visibility: */ 2155 if (m_pTableView)2156 m_pTableView->updateColumVisibility();2157 2082 if (m_pAccessibleTableView) 2158 2083 m_pAccessibleTableView->updateColumVisibility(); … … 2161 2086 void UIVMActivityOverviewWidget::computeMinimumColumnWidths() 2162 2087 { 2163 if (!m_p TableView || !m_pModel)2164 return; 2165 QFontMetrics fontMetrics(m_p TableView->font());2166 const QMap<int, int> &columnDataStringLengths = m_p Model->dataLengths();2088 if (!m_pAccessibleTableView || !m_pAccessibleModel) 2089 return; 2090 QFontMetrics fontMetrics(m_pAccessibleTableView->font()); 2091 const QMap<int, int> &columnDataStringLengths = m_pAccessibleModel->dataLengths(); 2167 2092 QMap<int, int> columnWidthsInPixels; 2168 2093 for (int i = 0; i < (int)VMActivityOverviewColumn_Max; ++i) … … 2176 2101 + m_iSortIndicatorWidth; 2177 2102 } 2178 m_pTableView->setMinimumColumnWidths(columnWidthsInPixels);2179 2103 m_pAccessibleTableView->setMinimumColumnWidths(columnWidthsInPixels); 2180 2104 } -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.h
r104916 r104964 132 132 * @{ */ 133 133 QIToolBar *m_pToolBar; 134 UIVMActivityOverviewTableView *m_pTableView;135 134 UIVMActivityOverviewAccessibleTableView *m_pAccessibleTableView; 136 137 UIActivityOverviewProxyModel *m_pProxyModel;138 135 UIActivityOverviewAccessibleProxyModel *m_pAccessibleProxyModel; 139 UIActivityOverviewModel *m_pModel;140 136 UIActivityOverviewAccessibleModel *m_pAccessibleModel; 141 137 QMenu *m_pColumnVisibilityToggleMenu;
Note:
See TracChangeset
for help on using the changeset viewer.