Changeset 104922 in vbox
- Timestamp:
- Jun 14, 2024 3:13:48 PM (10 months ago)
- svn:sync-xref-src-repo-rev:
- 163524
- Location:
- trunk/src/VBox/Frontends/VirtualBox
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
r104916 r104922 1020 1020 src/manager/chooser/UIChooserAbstractModel.cpp \ 1021 1021 src/activity/overview/UIVMActivityOverviewWidget.cpp \ 1022 src/activity/overview/UIVMActivityOverviewModelView.cpp \ 1022 1023 src/networkmanager/UINetworkManager.cpp \ 1023 1024 src/snapshots/UISnapshotDetailsWidget.cpp \ -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp
r104916 r104922 28 28 /* Qt includes: */ 29 29 #include <QHeaderView> 30 30 #include <QTimer> 31 31 32 32 /* GUI includes: */ 33 #include "UICommon.h" 33 34 #include "UIExtraDataDefs.h" 34 35 #include "UIGlobalSession.h" 36 #include "UIVirtualBoxEventHandler.h" 35 37 #include "UIVMActivityOverviewModelView.h" 36 38 … … 41 43 42 44 /* COM includes: */ 45 #include "CConsole.h" 46 #include "CGuest.h" 43 47 #include "CMachine.h" 48 #include "CMachineDebugger.h" 49 #include "CSession.h" 50 51 class UIActivityOverviewAccessibleRowLocal : public UIActivityOverviewAccessibleRow 52 { 53 54 Q_OBJECT; 55 56 public: 57 58 UIActivityOverviewAccessibleRowLocal(QITableView *pTableView, const QUuid &uMachineId, 59 const QString &strMachineName, KMachineState enmMachineState); 60 ~UIActivityOverviewAccessibleRowLocal(); 61 virtual void setMachineState(int iState) RT_OVERRIDE RT_FINAL; 62 63 virtual bool isRunning() const RT_OVERRIDE RT_FINAL; 64 virtual bool isCloudVM() const RT_OVERRIDE RT_FINAL; 65 void resetDebugger(); 66 void updateCells(); 67 68 private: 69 70 KMachineState m_enmMachineState; 71 CMachineDebugger m_comDebugger; 72 CSession m_comSession; 73 CGuest m_comGuest; 74 }; 75 76 UIActivityOverviewAccessibleRowLocal::UIActivityOverviewAccessibleRowLocal(QITableView *pTableView, const QUuid &uMachineId, 77 const QString &strMachineName, KMachineState enmMachineState) 78 : UIActivityOverviewAccessibleRow(pTableView, uMachineId, strMachineName) 79 , m_enmMachineState(enmMachineState) 80 { 81 if (m_enmMachineState == KMachineState_Running) 82 resetDebugger(); 83 84 } 85 86 void UIActivityOverviewAccessibleRowLocal::updateCells() 87 { 88 // if (m_cells.contains((int) VMActivityOverviewColumn_Name)) 89 // { 90 // m_cells[(int)VMActivityOverviewColumn_Name]->setText(m_strMachineName); 91 // } 92 } 93 94 UIActivityOverviewAccessibleRowLocal::~UIActivityOverviewAccessibleRowLocal() 95 { 96 if (!m_comSession.isNull()) 97 m_comSession.UnlockMachine(); 98 } 99 100 void UIActivityOverviewAccessibleRowLocal::resetDebugger() 101 { 102 m_comSession = uiCommon().openSession(m_uMachineId, KLockType_Shared); 103 if (!m_comSession.isNull()) 104 { 105 CConsole comConsole = m_comSession.GetConsole(); 106 if (!comConsole.isNull()) 107 { 108 m_comGuest = comConsole.GetGuest(); 109 m_comDebugger = comConsole.GetDebugger(); 110 } 111 } 112 } 113 114 void UIActivityOverviewAccessibleRowLocal::setMachineState(int iState) 115 { 116 if (iState <= KMachineState_Null || iState >= KMachineState_Max) 117 return; 118 KMachineState enmState = static_cast<KMachineState>(iState); 119 if (m_enmMachineState == enmState) 120 return; 121 m_enmMachineState = enmState; 122 if (m_enmMachineState == KMachineState_Running) 123 resetDebugger(); 124 } 125 126 bool UIActivityOverviewAccessibleRowLocal::isRunning() const 127 { 128 return m_enmMachineState == KMachineState_Running; 129 } 130 131 bool UIActivityOverviewAccessibleRowLocal::isCloudVM() const 132 { 133 return false; 134 } 44 135 45 136 … … 84 175 :QAbstractTableModel(pParent) 85 176 , m_pTableView(pView) 177 , m_pLocalVMUpdateTimer(new QTimer(this)) 86 178 { 87 179 initialize(); … … 91 183 { 92 184 qDeleteAll(m_rows); 185 } 186 187 void UIActivityOverviewAccessibleModel::setShouldUpdate(bool fShouldUpdate) 188 { 189 if (m_pLocalVMUpdateTimer) 190 { 191 if (fShouldUpdate) 192 m_pLocalVMUpdateTimer->start(); 193 else 194 m_pLocalVMUpdateTimer->stop(); 195 } 93 196 } 94 197 … … 109 212 } 110 213 111 QVariant UIActivityOverviewAccessibleModel::data(const QModelIndex &/*index*/, int role) const 112 { 214 QVariant UIActivityOverviewAccessibleModel::data(const QModelIndex &index, int role) const 215 { 216 int iRow = index.row(); 217 if (iRow < 0 || iRow >= m_rows.size()) 218 return QVariant(); 219 if (!m_rows[iRow]) 220 return QVariant(); 221 113 222 if (role == Qt::DisplayRole) 114 return "Foo"; 223 { 224 return m_rows[iRow]->cellText(index.column()); 225 226 } 115 227 return QVariant(); 116 228 } … … 118 230 void UIActivityOverviewAccessibleModel::initialize() 119 231 { 232 for (int i = 0; i < (int)VMActivityOverviewColumn_Max; ++i) 233 m_columnDataMaxLength[i] = 0; 234 235 if (m_pLocalVMUpdateTimer) 236 { 237 connect(m_pLocalVMUpdateTimer, &QTimer::timeout, this, &UIActivityOverviewAccessibleModel::sltLocalVMUpdateTimeout); 238 m_pLocalVMUpdateTimer->start(1000); 239 } 240 241 connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigMachineStateChange, 242 this, &UIActivityOverviewAccessibleModel::sltMachineStateChanged); 243 connect(gVBoxEvents, &UIVirtualBoxEventHandler::sigMachineRegistered, 244 this, &UIActivityOverviewAccessibleModel::sltMachineRegistered); 120 245 foreach (const CMachine &comMachine, gpGlobalSession->virtualBox().GetMachines()) 121 246 { … … 128 253 { 129 254 //QVector<UIActivityOverviewAccessibleRow*> m_rows; 130 m_rows << new UIActivityOverviewAccessibleRow (m_pTableView, uMachineId, strMachineName, enmState);255 m_rows << new UIActivityOverviewAccessibleRowLocal(m_pTableView, uMachineId, strMachineName, enmState); 131 256 } 132 257 … … 141 266 { 142 267 m_columnTitles = captions; 268 } 269 270 271 void UIActivityOverviewAccessibleModel::sltMachineStateChanged(const QUuid &uId, const KMachineState state) 272 { 273 int iIndex = itemIndex(uId); 274 if (iIndex != -1 && iIndex < m_rows.size()) 275 { 276 UIActivityOverviewAccessibleRowLocal *pItem = qobject_cast<UIActivityOverviewAccessibleRowLocal*>(m_rows[iIndex]); 277 if (pItem) 278 { 279 pItem->setMachineState(state); 280 if (state == KMachineState_Running) 281 pItem->resetDebugger(); 282 } 283 } 284 } 285 286 void UIActivityOverviewAccessibleModel::sltMachineRegistered(const QUuid &uId, bool fRegistered) 287 { 288 if (fRegistered) 289 { 290 CMachine comMachine = gpGlobalSession->virtualBox().FindMachine(uId.toString()); 291 if (!comMachine.isNull()) 292 addRow(uId, comMachine.GetName(), comMachine.GetState()); 293 } 294 else 295 removeRow(uId); 296 emit sigDataUpdate(); 297 } 298 299 void UIActivityOverviewAccessibleModel::sltLocalVMUpdateTimeout() 300 { 301 /* Host's RAM usage is obtained from IHost not from IPerformanceCollector: */ 302 //getHostRAMStats(); 303 304 /* Use IPerformanceCollector to update VM RAM usage and Host CPU and file IO stats: */ 305 //queryPerformanceCollector(); 306 307 for (int i = 0; i < m_rows.size(); ++i) 308 { 309 UIActivityOverviewAccessibleRowLocal *pItem = qobject_cast<UIActivityOverviewAccessibleRowLocal*>(m_rows[i]); 310 if (!pItem || !pItem->isRunning()) 311 continue; 312 pItem->updateCells(); 313 } 314 315 // for (int i = 0; i < (int)VMActivityOverviewColumn_Max; ++i) 316 // { 317 // for (int j = 0; j < m_rows.size(); ++j) 318 // if (m_columnDataMaxLength.value(i, 0) < m_rows[j]->columnLength(i)) 319 // m_columnDataMaxLength[i] = m_rows[j]->columnLength(i); 320 // } 321 322 emit sigDataUpdate(); 323 //emit sigHostStatsUpdate(m_hostStats); 324 } 325 326 int UIActivityOverviewAccessibleModel::itemIndex(const QUuid &uid) 327 { 328 for (int i = 0; i < m_rows.size(); ++i) 329 { 330 if (!m_rows[i]) 331 continue; 332 if (m_rows[i]->machineId() == uid) 333 return i; 334 } 335 return -1; 336 } 337 338 void UIActivityOverviewAccessibleModel::removeRow(const QUuid& uMachineId) 339 { 340 int iIndex = itemIndex(uMachineId); 341 if (iIndex == -1) 342 return; 343 delete m_rows[iIndex]; 344 m_rows.remove(iIndex); 143 345 } 144 346 … … 157 359 *********************************************************************************************************************************/ 158 360 159 UIActivityOverviewAccessibleRow::UIActivityOverviewAccessibleRow(QITableView *pTableView, const QUuid & machineId,160 const QString &strMachineName , KMachineState enmMachineState)361 UIActivityOverviewAccessibleRow::UIActivityOverviewAccessibleRow(QITableView *pTableView, const QUuid &uMachineId, 362 const QString &strMachineName) 161 363 : QITableViewRow(pTableView) 162 , m_ machineId(machineId)364 , m_uMachineId(uMachineId) 163 365 , m_strMachineName(strMachineName) 164 , m_enmMachineState(enmMachineState)165 166 366 { 167 367 initCells(); … … 175 375 QITableViewCell *UIActivityOverviewAccessibleRow::childItem(int iIndex) const 176 376 { 177 if (iIndex < 0 || iIndex >= m_cells.size()) 178 return 0; 179 return m_cells[iIndex]; 377 return m_cells.value(iIndex, 0); 378 } 379 380 QString UIActivityOverviewAccessibleRow::cellText(int iColumn) const 381 { 382 if (!m_cells.contains(iColumn)) 383 return QString(); 384 if (!m_cells[iColumn]) 385 return QString(); 386 return m_cells[iColumn]->text(); 180 387 } 181 388 … … 188 395 { 189 396 for (int i = (int) VMActivityOverviewColumn_Name; i < (int) VMActivityOverviewColumn_Max; ++i) 190 { 191 m_cells << new UIActivityOverviewAccessibleCell(this, i); 192 } 397 m_cells[i] = new UIActivityOverviewAccessibleCell(this, i); 398 m_cells[VMActivityOverviewColumn_Name]->setText(m_strMachineName); 399 } 400 401 const QUuid &UIActivityOverviewAccessibleRow::machineId() const 402 { 403 return m_uMachineId; 193 404 } 194 405 … … 206 417 QString UIActivityOverviewAccessibleCell::text() const 207 418 { 208 return "Foo"; 209 } 419 return m_strText; 420 } 421 422 int UIActivityOverviewAccessibleCell::columnLength(int iColumnIndex) const 423 { 424 return 0; 425 //return m_columnData.value(iColumnIndex, QString()).length(); 426 } 427 428 void UIActivityOverviewAccessibleCell::setText(const QString &strText) 429 { 430 printf("%s\n", qPrintable(strText)); 431 m_strText = strText; 432 } 433 434 #include "UIVMActivityOverviewModelView.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h
r104916 r104922 42 42 /* COM includes: */ 43 43 #include "KMachineState.h" 44 45 class QTimer; 44 46 class UIActivityOverviewAccessibleCell; 45 47 class UIActivityOverviewAccessibleRow; … … 90 92 UIActivityOverviewAccessibleCell(QITableViewRow *pRow, int iColumnIndex); 91 93 virtual QString text() const RT_OVERRIDE RT_FINAL; 94 int columnLength(int iColumnIndex) const; 95 void setText(const QString &strText); 92 96 93 97 private: … … 95 99 /* VMActivityOverviewColumn enum: */ 96 100 int m_iColumnIndex; 97 101 QString m_strText; 98 102 }; 99 103 … … 105 109 public: 106 110 107 UIActivityOverviewAccessibleRow(QITableView *pTableView, const QUuid & machineId,108 const QString &strMachineName , KMachineState enmMachineState);111 UIActivityOverviewAccessibleRow(QITableView *pTableView, const QUuid &uMachineId, 112 const QString &strMachineName); 109 113 114 const QUuid &machineId() const; 110 115 116 virtual void setMachineState(int iState) = 0; 117 virtual bool isRunning() const = 0; 118 virtual bool isCloudVM() const = 0; 111 119 112 ~UIActivityOverviewAccessibleRow();120 virtual ~UIActivityOverviewAccessibleRow(); 113 121 virtual int childCount() const RT_OVERRIDE RT_FINAL; 114 122 115 123 virtual QITableViewCell *childItem(int iIndex) const RT_OVERRIDE RT_FINAL; 116 124 125 QString cellText(int iColumn) const; 126 127 protected: 128 129 QUuid m_uMachineId; 130 /* Key is VMActivityOverviewColumn enum item. */ 131 QMap<int, UIActivityOverviewAccessibleCell*> m_cells; 132 133 QString m_strMachineName; 117 134 private: 118 135 119 136 void initCells(); 120 //const QUuid& uMachineId, const QString& strMachineName, KMachineState enmState) 121 QVector<UIActivityOverviewAccessibleCell*> m_cells; 122 QUuid m_machineId; 123 QString m_strMachineName; 124 KMachineState m_enmMachineState; 137 138 125 139 }; 126 140 … … 130 144 { 131 145 Q_OBJECT; 146 147 signals: 148 149 void sigDataUpdate(); 132 150 133 151 public: … … 140 158 QVariant headerData(int section, Qt::Orientation orientation, int role) const RT_OVERRIDE RT_FINAL; 141 159 void setColumnCaptions(const QMap<int, QString>& captions); 160 int itemIndex(const QUuid &uid); 161 void setShouldUpdate(bool fShouldUpdate); 162 163 private slots: 164 165 void sltMachineStateChanged(const QUuid &uId, const KMachineState state); 166 void sltMachineRegistered(const QUuid &uId, bool fRegistered); 167 void sltLocalVMUpdateTimeout(); 142 168 143 169 private: … … 145 171 void initialize(); 146 172 void addRow(const QUuid& uMachineId, const QString& strMachineName, KMachineState enmState); 173 void removeRow(const QUuid& uMachineId); 147 174 QVector<UIActivityOverviewAccessibleRow*> m_rows; 148 175 QITableView *m_pTableView; 149 176 QMap<int, QString> m_columnTitles; 177 QTimer *m_pLocalVMUpdateTimer; 178 /** Maximum length of string length of data displayed in column. Updated in UIActivityOverviewModel::data(..). */ 179 mutable QMap<int, int> m_columnDataMaxLength; 180 150 181 }; 151 182 -
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp
r104916 r104922 1781 1781 if (m_pModel) 1782 1782 m_pModel->setShouldUpdate(fIsCurrentTool); 1783 if (m_pAccessibleModel) 1784 m_pAccessibleModel->setShouldUpdate(fIsCurrentTool); 1783 1785 } 1784 1786 … … 1931 1933 m_pAccessibleTableView->sortByColumn(0, Qt::AscendingOrder); 1932 1934 m_pAccessibleTableView->hide(); 1935 1933 1936 layout()->addWidget(m_pAccessibleTableView); 1934 1937 }
Note:
See TracChangeset
for help on using the changeset viewer.