VirtualBox

Ignore:
Timestamp:
Oct 26, 2018 12:22:34 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9241: VirtualBox Manager: Rework standard toolbar actions and their order to be more suitable for currently selected machine tool.

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

Legend:

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

    r75016 r75093  
    144144                    /* Configure pane: */
    145145                    m_pPaneSnapshots->setProperty("ToolType", QVariant::fromValue(UIToolType_Snapshots));
     146                    connect(m_pPaneSnapshots, &UISnapshotPane::sigCurrentItemChange,
     147                            this, &UIToolPaneMachine::sigCurrentSnapshotItemChange);
    146148
    147149                    /* Add into layout: */
     
    246248}
    247249
     250bool UIToolPaneMachine::isCurrentStateItemSelected() const
     251{
     252    if (!m_pPaneSnapshots)
     253        return false;
     254    return m_pPaneSnapshots->isCurrentStateItemSelected();
     255}
     256
    248257void UIToolPaneMachine::prepare()
    249258{
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.h

    r75016 r75093  
    5454    void sigLinkClicked(const QString &strCategory, const QString &strControl, const QUuid &uId);
    5555
     56    /** Notifies listeners about current Snapshot pane item change. */
     57    void sigCurrentSnapshotItemChange();
     58
    5659public:
    5760
     
    8184    /** Defines the @a comMachine object. */
    8285    void setMachine(const CMachine &comMachine);
     86
     87    /** Returns whether current-state item of Snapshot pane is selected. */
     88    bool isCurrentStateItemSelected() const;
    8389
    8490private:
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp

    r75054 r75093  
    392392        default: break;
    393393    }
     394}
     395
     396void UIVirtualBoxManager::sltCurrentSnapshotItemChange()
     397{
     398    updateActionsAppearance();
    394399}
    395400
     
    18451850        connect(m_pWidget, &UIVirtualBoxManagerWidget::sigCloudProfileManagerChange,
    18461851                this, &UIVirtualBoxManager::sigCloudProfileManagerChange);
     1852        connect(m_pWidget, &UIVirtualBoxManagerWidget::sigCurrentSnapshotItemChange,
     1853                this, &UIVirtualBoxManager::sltCurrentSnapshotItemChange);
    18471854        setCentralWidget(m_pWidget);
    18481855    }
     
    23052312            return !isGroupSavingInProgress() &&
    23062313                   items.size() == 1 &&
    2307                    pItem->configurationAccessLevel() != ConfigurationAccessLevel_Null;
     2314                   pItem->configurationAccessLevel() != ConfigurationAccessLevel_Null &&
     2315                   (m_pWidget->currentMachineTool() != UIToolType_Snapshots ||
     2316                    m_pWidget->isCurrentStateItemSelected());
    23082317        }
    23092318        case UIActionIndexST_M_Machine_S_Clone:
     
    23352344        {
    23362345            return !isGroupSavingInProgress() &&
    2337                    isAtLeastOneItemCanBeStartedOrShown(items);
     2346                   isAtLeastOneItemCanBeStartedOrShown(items) &&
     2347                    (m_pWidget->currentMachineTool() != UIToolType_Snapshots ||
     2348                     m_pWidget->isCurrentStateItemSelected());
    23382349        }
    23392350        case UIActionIndexST_M_Group_S_Discard:
     
    23412352        {
    23422353            return !isGroupSavingInProgress() &&
    2343                    isAtLeastOneItemDiscardable(items);
     2354                   isAtLeastOneItemDiscardable(items) &&
     2355                    (m_pWidget->currentMachineTool() != UIToolType_Snapshots ||
     2356                     m_pWidget->isCurrentStateItemSelected());
    23442357        }
    23452358        case UIActionIndexST_M_Group_S_ShowLogDialog:
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h

    r75055 r75093  
    121121        /** Handles singal about Tool type change.  */
    122122        void sltHandleToolTypeChange();
     123
     124        /** Handles current snapshot item change. */
     125        void sltCurrentSnapshotItemChange();
    123126    /** @} */
    124127
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp

    r75086 r75093  
    168168}
    169169
     170bool UIVirtualBoxManagerWidget::isCurrentStateItemSelected() const
     171{
     172    return m_pPaneToolsMachine->isCurrentStateItemSelected();
     173}
     174
    170175void UIVirtualBoxManagerWidget::sltHandleContextMenuRequest(const QPoint &position)
    171176{
     
    454459                        if (m_pPaneToolsMachine)
    455460                        {
     461                            connect(m_pPaneToolsMachine, &UIToolPaneMachine::sigCurrentSnapshotItemChange,
     462                                    this, &UIVirtualBoxManagerWidget::sigCurrentSnapshotItemChange);
     463
    456464                            /* Add into stack: */
    457465                            m_pStackedWidget->addWidget(m_pPaneToolsMachine);
     
    657665                case UIToolType_Snapshots:
    658666                {
    659                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_New));
    660                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
    661                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
    662                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
    663                     m_pToolBar->addSeparator();
    664667                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
    665668                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
     
    667670                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
    668671                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
     672                    m_pToolBar->addSeparator();
     673                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
     674                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
     675                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
    669676                    break;
    670677                }
    671678                case UIToolType_Logs:
    672679                {
    673                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_New));
    674                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
    675                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
    676                     m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
    677                     m_pToolBar->addSeparator();
    678680                    m_pToolBar->addAction(actionPool()->action(UIActionIndex_M_Log_S_Save));
    679681                    m_pToolBar->addAction(actionPool()->action(UIActionIndex_M_Log_T_Find));
     
    682684                    m_pToolBar->addAction(actionPool()->action(UIActionIndex_M_Log_T_Settings));
    683685                    m_pToolBar->addAction(actionPool()->action(UIActionIndex_M_Log_S_Refresh));
     686                    m_pToolBar->addSeparator();
     687                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
     688                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
     689                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
    684690                    break;
    685691                }
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h

    r75086 r75093  
    5959    /** Notifies listeners about Cloud Profile Manager change. */
    6060    void sigCloudProfileManagerChange();
     61
     62    /** Notifies listeners about current Snapshots pane item change. */
     63    void sigCurrentSnapshotItemChange();
    6164
    6265public:
     
    113116    /** @} */
    114117
     118    /** @name Snapshot pane stuff.
     119      * @{ */
     120        /** Returns whether current-state item of Snapshot pane is selected. */
     121        bool isCurrentStateItemSelected() const;
     122    /** @} */
     123
    115124public slots:
    116125
  • trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp

    r75027 r75093  
    506506}
    507507
     508bool UISnapshotPane::isCurrentStateItemSelected() const
     509{
     510    return m_pCurrentStateItem && m_pSnapshotTree->currentItem() == m_pCurrentStateItem;
     511}
     512
    508513void UISnapshotPane::retranslateUi()
    509514{
     
    10511056            m_pDetailsWidget->setData(*pSnapshotItem, pSnapshotItem->snapshot());
    10521057    }
     1058
     1059    /* Notify listeners: */
     1060    emit sigCurrentItemChange();
    10531061}
    10541062
  • trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h

    r74942 r75093  
    5555    Q_OBJECT;
    5656
     57signals:
     58
     59    /** Notifies listeners about current item change. */
     60    void sigCurrentItemChange();
     61
    5762public:
    5863
     
    6772    /** Returns cached snapshot-item icon depending on @a fOnline flag. */
    6873    const QIcon *snapshotItemIcon(bool fOnline) const;
     74
     75    /** Returns whether "current state" item selected. */
     76    bool isCurrentStateItemSelected() const;
    6977
    7078protected:
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