VirtualBox

Changeset 85493 in vbox for trunk


Ignore:
Timestamp:
Jul 28, 2020 5:56:08 PM (5 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9686, bugref:9510. Adding the context menu to navigate to machine performance pane from 'Resources' widget

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneGlobal.cpp

    r85405 r85493  
    199199                    m_pLayout->addWidget(m_pPaneResourceMonitor);
    200200                    m_pLayout->setCurrentWidget(m_pPaneResourceMonitor);
     201                    connect(m_pPaneResourceMonitor, &UIResourceMonitorWidget::sigSwitchMachinePerformancePane,
     202                            this, &UIToolPaneGlobal::sigSwitchMachinePerformancePane);
    201203                }
    202204
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneGlobal.h

    r83482 r85493  
    5151    /** Notifies listeners about Cloud Profile Manager change. */
    5252    void sigCloudProfileManagerChange();
     53    void sigSwitchMachinePerformancePane(const QUuid &machineUid);
    5354
    5455public:
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp

    r85439 r85493  
    2828#include "UIExtraDataManager.h"
    2929#include "UIChooser.h"
     30#include "UICommon.h"
    3031#include "UIVirtualBoxManager.h"
    3132#include "UIVirtualBoxManagerWidget.h"
     
    459460}
    460461
     462void UIVirtualBoxManagerWidget::sltSwitchMachinePerformancePane(const QUuid &machineUid)
     463{
     464    if (!m_pPaneToolsMachine)
     465        return;
     466    CVirtualBox comVBox = uiCommon().virtualBox();
     467
     468    CMachine comMachine = comVBox.FindMachine(machineUid.toString());
     469    if (comMachine.isNull())
     470        return;
     471    m_pPaneToolsMachine->setActive(true);
     472    m_pPaneToolsGlobal->setActive(false);
     473    m_pPaneToolsMachine->setMachine(comMachine);
     474    switchToMachineTool(UIToolType_Performance);
     475}
     476
    461477void UIVirtualBoxManagerWidget::prepare()
    462478{
     
    556572                            connect(m_pPaneToolsGlobal, &UIToolPaneGlobal::sigCloudProfileManagerChange,
    557573                                    this, &UIVirtualBoxManagerWidget::sigCloudProfileManagerChange);
     574                            connect(m_pPaneToolsGlobal, &UIToolPaneGlobal::sigSwitchMachinePerformancePane,
     575                                    this, &UIVirtualBoxManagerWidget::sltSwitchMachinePerformancePane);
    558576
    559577                            /* Add into stack: */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h

    r85439 r85493  
    248248        void sltHandleToolMenuRequested(UIToolClass enmClass, const QPoint &position);
    249249
    250         /** Handles signal abour Tools-pane index change. */
     250        /** Handles signal about Tools-pane index change. */
    251251        void sltHandleToolsPaneIndexChange();
     252
     253        /** Handles signal requesting performance pane switch. */
     254        void sltSwitchMachinePerformancePane(const QUuid &machineUid);
    252255    /** @} */
    253256
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/performance/UIPerformanceMonitor.cpp

    r85485 r85493  
    560560        font.setPixelSize(iFontSize);
    561561        --iFontSize;
    562     }while(QFontMetrics(font).width(m_strGAWarning) >= m_lineChartRect.width());
     562    }while(QFontMetrics(font).width(m_strGAWarning) >= 0.8 * m_lineChartRect.width());
    563563    font.setBold(true);
    564564    painter.setFont(font);
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp

    r85303 r85493  
    184184    void setMinimumColumnWidths(const QMap<int, int>& widths);
    185185    void updateColumVisibility();
     186    int selectedItemIndex() const;
    186187
    187188protected:
     
    248249    void setupPerformanceCollector();
    249250};
     251
     252Q_DECLARE_METATYPE(UIResourceMonitorItem);
    250253
    251254
     
    289292    void setShouldUpdate(bool fShouldUpdate);
    290293    const QMap<int, int> dataLengths() const;
     294    QUuid itemUid(int iIndex);
    291295
    292296private slots:
     
    667671}
    668672
     673int UIVMResourceMonitorTableView::selectedItemIndex() const
     674{
     675    UIResourceMonitorProxyModel *pModel = qobject_cast<UIResourceMonitorProxyModel*>(model());
     676    if (!pModel)
     677        return -1;
     678
     679    QItemSelectionModel *pSelectionModel =  selectionModel();
     680    if (!pSelectionModel)
     681        return -1;
     682    QModelIndexList selectedItemIndices = pSelectionModel->selectedRows();
     683    if (selectedItemIndices.isEmpty())
     684        return -1;
     685
     686    /* just use the the 1st index: */
     687    QModelIndex modelIndex = pModel->mapToSource(selectedItemIndices[0]);
     688
     689    if (!modelIndex.isValid())
     690        return -1;
     691    return modelIndex.row();
     692}
     693
    669694void UIVMResourceMonitorTableView::resizeEvent(QResizeEvent *pEvent)
    670695{
     
    860885{
    861886    return m_columnDataMaxLength;
     887}
     888
     889QUuid UIResourceMonitorModel::itemUid(int iIndex)
     890{
     891    if (iIndex >= m_itemList.size())
     892        return QUuid();
     893    return m_itemList[iIndex].m_VMuid;
    862894}
    863895
     
    11981230    , m_pColumnVisibilityToggleMenu(0)
    11991231    , m_pHostStatsWidget(0)
     1232    , m_pShowPerformanceMonitorAction(0)
    12001233    , m_fIsCurrentTool(true)
    12011234    , m_iSortIndicatorWidth(0)
     
    12471280    m_columnTitles[VMResourceMonitorColumn_DiskIOWriteTotal] = UIResourceMonitorWidget::tr("Disk Write Total");
    12481281    m_columnTitles[VMResourceMonitorColumn_VMExits] = UIResourceMonitorWidget::tr("VM Exits");
     1282    if (m_pShowPerformanceMonitorAction)
     1283        m_pShowPerformanceMonitorAction->setText(tr("Show Performance Monitor"));
    12491284    if (m_pModel)
    12501285        m_pModel->setColumnCaptions(m_columnTitles);
    12511286    computeMinimumColumnWidths();
    1252 }
    1253 
    1254 void UIResourceMonitorWidget::resizeEvent(QResizeEvent *pEvent)
    1255 {
    1256     QIWithRetranslateUI<QWidget>::resizeEvent(pEvent);
    1257 }
    1258 
    1259 void UIResourceMonitorWidget::showEvent(QShowEvent *pEvent)
    1260 {
    1261     QIWithRetranslateUI<QWidget>::showEvent(pEvent);
    1262 }
    1263 
    1264 void UIResourceMonitorWidget::paintEvent(QPaintEvent *pEvent)
    1265 {
    1266     QIWithRetranslateUI<QWidget>::paintEvent(pEvent);
    12671287}
    12681288
     
    12821302    prepareWidgets();
    12831303    loadSettings();
     1304    prepareActions();
    12841305    retranslateUi();
    1285     prepareActions();
    12861306    updateModelColumVisibilityCache();
    12871307}
     
    13181338        m_pTableView->setModel(m_pProxyModel);
    13191339        m_pTableView->setItemDelegate(new UIVMResourceMonitorDelegate);
    1320         m_pTableView->setSelectionMode(QAbstractItemView::NoSelection);
     1340        m_pTableView->setSelectionMode(QAbstractItemView::SingleSelection);
     1341        m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    13211342        m_pTableView->setShowGrid(false);
     1343        m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);
    13221344        m_pTableView->horizontalHeader()->setHighlightSections(false);
    13231345        m_pTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
     
    13291351        m_pTableView->setSortingEnabled(true);
    13301352        m_pTableView->sortByColumn(0, Qt::AscendingOrder);
    1331         connect(m_pModel, &UIResourceMonitorModel::sigDataUpdate, this, &UIResourceMonitorWidget::sltHandleDataUpdate);
    1332         connect(m_pModel, &UIResourceMonitorModel::sigHostStatsUpdate, this, &UIResourceMonitorWidget::sltHandleHostStatsUpdate);
     1353        connect(m_pModel, &UIResourceMonitorModel::sigDataUpdate,
     1354                this, &UIResourceMonitorWidget::sltHandleDataUpdate);
     1355        connect(m_pModel, &UIResourceMonitorModel::sigHostStatsUpdate,
     1356                this, &UIResourceMonitorWidget::sltHandleHostStatsUpdate);
     1357        connect(m_pTableView, &UIVMResourceMonitorTableView::customContextMenuRequested,
     1358                this, &UIResourceMonitorWidget::sltHandleTableContextMenuRequest);
     1359
    13331360        updateModelColumVisibilityCache();
    13341361    }
     
    13531380        connect(pAction, &QAction::toggled, this, &UIResourceMonitorWidget::sltHandleColumnAction);
    13541381    }
    1355     return;
     1382    m_pShowPerformanceMonitorAction = new QAction(this);
     1383     connect(m_pShowPerformanceMonitorAction, &QAction::triggered, this, &UIResourceMonitorWidget::sltHandleShowPerformanceMonitor);
    13561384}
    13571385
     
    14341462}
    14351463
     1464void UIResourceMonitorWidget::sltHandleTableContextMenuRequest(const QPoint &pos)
     1465{
     1466    if (!m_pTableView)
     1467        return;
     1468
     1469    QMenu menu;
     1470    if (m_pShowPerformanceMonitorAction)
     1471        menu.addAction(m_pShowPerformanceMonitorAction);
     1472
     1473    menu.exec(m_pTableView->mapToGlobal(pos));
     1474}
     1475
     1476void UIResourceMonitorWidget::sltHandleShowPerformanceMonitor()
     1477{
     1478    if (!m_pTableView || !m_pModel)
     1479        return;
     1480    QUuid machineId = m_pModel->itemUid(m_pTableView->selectedItemIndex());
     1481    if (machineId.isNull())
     1482        return;
     1483    emit sigSwitchMachinePerformancePane(machineId);
     1484}
     1485
    14361486void UIResourceMonitorWidget::setColumnVisible(int iColumnId, bool fVisible)
    14371487{
  • trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.h

    r85303 r85493  
    4949    Q_OBJECT;
    5050
     51signals:
     52
     53    void sigSwitchMachinePerformancePane(const QUuid &machineId);
     54
    5155public:
    5256
     
    6973      * @{ */
    7074        virtual void retranslateUi() /* override */;
    71         virtual void resizeEvent(QResizeEvent *pEvent) /* override */;
    72         virtual void showEvent(QShowEvent *pEvent) /* override */;
    73         virtual void paintEvent(QPaintEvent *pEvent) /* override */;
    7475    /** @} */
    7576
     
    8081    void sltHandleColumnAction(bool fChecked);
    8182    void sltHandleHostStatsUpdate(const UIVMResourceMonitorHostStats &stats);
     83    void sltHandleTableContextMenuRequest(const QPoint &pos);
     84    void sltHandleShowPerformanceMonitor();
    8285
    8386private:
     
    119122        QMap<int, bool>                     m_columnVisible;
    120123        UIVMResourceMonitorHostStatsWidget *m_pHostStatsWidget;
     124        QAction                            *m_pShowPerformanceMonitorAction;
    121125    /** @} */
    122126    /** Indicates if this widget's host tool is current tool. */
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