VirtualBox

Changeset 104951 in vbox


Ignore:
Timestamp:
Jun 18, 2024 10:00:39 AM (3 months ago)
Author:
vboxsync
Message:

FE/Qt. bugref:10659. More fixes for local vm row.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/activity/overview
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.cpp

    r104945 r104951  
    2929#include <QApplication>
    3030#include <QHeaderView>
     31#include <QMouseEvent>
    3132#include <QTimer>
    3233
     
    8687    quint64  m_uNetworkDownTotal;
    8788    quint64  m_uNetworkUpTotal;
     89
     90    quint64          m_uVMExitTotal;
     91    quint64          m_uDiskWriteTotal;
     92    quint64          m_uDiskReadTotal;
     93
    8894};
    8995
     
    96102    , m_uNetworkDownTotal(0)
    97103    , m_uNetworkUpTotal(0)
     104    , m_uVMExitTotal(0)
     105    , m_uDiskWriteTotal(0)
     106    , m_uDiskReadTotal(0)
    98107{
    99108    if (m_enmMachineState == KMachineState_Running)
     
    150159    updateCellText(VMActivityOverviewColumn_NetworkUpTotal, QString("%1").arg(UITranslator::formatSize(m_uNetworkUpTotal, iDecimalCount)));
    151160    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
    152180
    153181}
     
    228256}
    229257
     258void 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
     278int 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
     299bool UIVMActivityOverviewAccessibleTableView::hasSelection() const
     300{
     301    if (!selectionModel())
     302        return false;
     303    return selectionModel()->hasSelection();
     304}
     305
    230306void UIVMActivityOverviewAccessibleTableView::setMinimumColumnWidths(const QMap<int, int>& widths)
    231307{
    232308    m_minimumColumnWidths = widths;
    233309    resizeHeaders();
     310}
     311
     312void UIVMActivityOverviewAccessibleTableView::resizeEvent(QResizeEvent *pEvent)
     313{
     314    resizeHeaders();
     315    QTableView::resizeEvent(pEvent);
     316}
     317
     318void UIVMActivityOverviewAccessibleTableView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
     319{
     320    emit sigSelectionChanged(selected, deselected);
     321    QTableView::selectionChanged(selected, deselected);
     322}
     323
     324void UIVMActivityOverviewAccessibleTableView::mousePressEvent(QMouseEvent *pEvent)
     325{
     326    if (!indexAt(pEvent->position().toPoint()).isValid())
     327        clearSelection();
     328    QTableView::mousePressEvent(pEvent);
    234329}
    235330
     
    262357{
    263358    initialize();
     359}
     360
     361void UIActivityOverviewAccessibleModel::setColumnVisible(const QMap<int, bool>& columnVisible)
     362{
     363    m_columnVisible = columnVisible;
     364}
     365
     366bool UIActivityOverviewAccessibleModel::columnVisible(int iColumnId) const
     367{
     368    return m_columnVisible.value(iColumnId, true);
     369}
     370
     371
     372bool 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
     379bool 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();
    264384}
    265385
     
    561681}
    562682
     683void UIActivityOverviewAccessibleProxyModel::setNotRunningVMVisibility(bool fShow)
     684{
     685    if (m_fShowNotRunningVMs == fShow)
     686        return;
     687    m_fShowNotRunningVMs = fShow;
     688    invalidateFilter();
     689}
     690
     691
     692void UIActivityOverviewAccessibleProxyModel::setCloudVMVisibility(bool fShow)
     693{
     694    if (m_fShowCloudVMs == fShow)
     695        return;
     696    m_fShowCloudVMs = fShow;
     697    invalidateFilter();
     698}
     699
     700bool 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
    563717
    564718/*********************************************************************************************************************************
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewModelView.h

    r104943 r104951  
    5454    Q_OBJECT;
    5555
     56signals:
     57
     58    void sigSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
     59
    5660public:
    5761
    5862    UIVMActivityOverviewAccessibleTableView(QWidget *pParent);
    5963    void setMinimumColumnWidths(const QMap<int, int>& widths);
     64    void updateColumVisibility();
     65    int selectedItemIndex() const;
     66    bool hasSelection() const;
     67
     68private:
     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
    6074    /** Resizes all the columns in response to resizeEvent. Columns cannot be narrower than m_minimumColumnWidths values. */
    6175    void resizeHeaders();
     
    7690    UIActivityOverviewAccessibleProxyModel(QObject *parent = 0);
    7791    void dataUpdate();
     92    void setNotRunningVMVisibility(bool fShow);
     93    void setCloudVMVisibility(bool fShow);
    7894
    7995protected:
    8096
    8197    // 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
     100private:
     101
     102    bool m_fShowNotRunningVMs;
     103    bool m_fShowCloudVMs;
    86104
    87105};
     
    165183    void setShouldUpdate(bool fShouldUpdate);
    166184    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;
    167189
    168190private slots:
     
    182204    QITableView *m_pTableView;
    183205    QMap<int, QString> m_columnTitles;
     206    QMap<int, bool> m_columnVisible;
    184207    QTimer *m_pLocalVMUpdateTimer;
    185208    /** 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  
    19061906        connect(m_pModel, &UIActivityOverviewModel::sigHostStatsUpdate,
    19071907                this, &UIVMActivityOverviewWidget::sltHandleHostStatsUpdate);
    1908         connect(m_pTableView, &UIVMActivityOverviewTableView::customContextMenuRequested,
    1909                 this, &UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest);
    19101908        connect(m_pTableView, &UIVMActivityOverviewTableView::sigSelectionChanged,
    19111909                this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged);
     
    19181916    m_pAccessibleModel = new UIActivityOverviewAccessibleModel(this, m_pAccessibleTableView);
    19191917    m_pAccessibleProxyModel->setSourceModel(m_pAccessibleModel);
     1918    m_pAccessibleProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs);
     1919    m_pAccessibleProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
    19201920    m_pAccessibleTableView->setModel(m_pAccessibleProxyModel);
    19211921
     
    19351935    m_pAccessibleTableView->sortByColumn(0, Qt::AscendingOrder);
    19361936
     1937    connect(m_pAccessibleTableView, &UIVMActivityOverviewAccessibleTableView::customContextMenuRequested,
     1938            this, &UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest);
     1939    connect(m_pAccessibleTableView, &UIVMActivityOverviewAccessibleTableView::sigSelectionChanged,
     1940            this, &UIVMActivityOverviewWidget::sltHandleTableSelectionChanged);
     1941
    19371942    layout()->addWidget(m_pAccessibleTableView);
    19381943}
     
    20572062void UIVMActivityOverviewWidget::sltHandleTableContextMenuRequest(const QPoint &pos)
    20582063{
    2059     if (!m_pTableView)
     2064    if (!m_pAccessibleTableView)
    20602065        return;
    20612066
     
    20792084            this, &UIVMActivityOverviewWidget::sltCloudVMVisibility);
    20802085
    2081     menu.exec(m_pTableView->mapToGlobal(pos));
     2086    menu.exec(m_pAccessibleTableView->mapToGlobal(pos));
    20822087}
    20832088
     
    21172122    if (m_pProxyModel)
    21182123        m_pProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs);
     2124    if (m_pAccessibleProxyModel)
     2125        m_pAccessibleProxyModel->setNotRunningVMVisibility(m_fShowNotRunningVMs);
     2126
    21192127}
    21202128
     
    21242132    if (m_pProxyModel)
    21252133        m_pProxyModel->setCloudVMVisibility(m_fShowCloudVMs);
     2134    if (m_pAccessibleProxyModel)
     2135        m_pAccessibleProxyModel->setCloudVMVisibility(m_fShowCloudVMs);
    21262136}
    21272137
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette