VirtualBox

Changeset 87516 in vbox


Ignore:
Timestamp:
Feb 1, 2021 7:32:18 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142541
Message:

FE/Qt: bugref:9917: VirtualBox Manager: Replace a pack of tool related actions which opens separate tool windows with submenu of actions switching tools the embedded way.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp

    r87513 r87516  
    6262};
    6363
    64 /** Simple action extension, used as 'Show Extension Pack Manager' action class. */
    65 class UIActionSimpleManagerFileShowExtensionPackManager : public UIActionSimple
    66 {
    67     Q_OBJECT;
    68 
    69 public:
    70 
    71     /** Constructs action passing @a pParent to the base-class. */
    72     UIActionSimpleManagerFileShowExtensionPackManager(UIActionPool *pParent)
    73         : UIActionSimple(pParent, ":/extension_pack_manager_16px.png", ":/extension_pack_manager_disabled_16px.png")
    74     {
    75         setProperty("UIToolType", QVariant::fromValue(UIToolType_Extensions));
    76     }
    77 
    78 protected:
    79 
    80     /** Returns shortcut extra-data ID. */
    81     virtual QString shortcutExtraDataID() const /* override */
    82     {
    83         return QString("ExtensionPackManager");
    84     }
    85 
    86     /** Returns default shortcut. */
    87     virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
    88     {
    89         return QKeySequence("Ctrl+T");
    90     }
    91 
    92     /** Handles translation event. */
    93     virtual void retranslateUi() /* override */
    94     {
    95         setName(QApplication::translate("UIActionPool", "Ex&tension Pack Manager..."));
    96         setStatusTip(QApplication::translate("UIActionPool", "Display the Extension Pack Manager window"));
    97     }
    98 };
    99 
    100 /** Simple action extension, used as 'Show Virtual Media Manager' action class. */
    101 class UIActionSimpleManagerFileShowVirtualMediaManager : public UIActionSimple
    102 {
    103     Q_OBJECT;
    104 
    105 public:
    106 
    107     /** Constructs action passing @a pParent to the base-class. */
    108     UIActionSimpleManagerFileShowVirtualMediaManager(UIActionPool *pParent)
    109         : UIActionSimple(pParent, ":/media_manager_16px.png", ":/media_manager_disabled_16px.png")
    110     {
    111         setProperty("UIToolType", QVariant::fromValue(UIToolType_Media));
    112     }
    113 
    114 protected:
    115 
    116     /** Returns shortcut extra-data ID. */
    117     virtual QString shortcutExtraDataID() const /* override */
    118     {
    119         return QString("VirtualMediaManager");
    120     }
    121 
    122     /** Returns default shortcut. */
    123     virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
    124     {
    125         return QKeySequence("Ctrl+D");
    126     }
    127 
    128     /** Handles translation event. */
    129     virtual void retranslateUi() /* override */
    130     {
    131         setName(QApplication::translate("UIActionPool", "&Virtual Media Manager..."));
    132         setStatusTip(QApplication::translate("UIActionPool", "Display the Virtual Media Manager window"));
    133     }
    134 };
    135 
    136 /** Simple action extension, used as 'Show Network Manager' action class. */
    137 class UIActionSimpleManagerFileShowHostNetworkManager : public UIActionSimple
    138 {
    139     Q_OBJECT;
    140 
    141 public:
    142 
    143     /** Constructs action passing @a pParent to the base-class. */
    144     UIActionSimpleManagerFileShowHostNetworkManager(UIActionPool *pParent)
    145         : UIActionSimple(pParent, ":/host_iface_manager_16px.png", ":/host_iface_manager_disabled_16px.png")
    146     {
    147         setProperty("UIToolType", QVariant::fromValue(UIToolType_Network));
    148     }
    149 
    150 protected:
    151 
    152     /** Returns shortcut extra-data ID. */
    153     virtual QString shortcutExtraDataID() const /* override */
    154     {
    155         return QString("HostNetworkManager");
    156     }
    157 
    158     /** Returns default shortcut. */
    159     virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
    160     {
    161         return QKeySequence("Ctrl+H");
    162     }
    163 
    164     /** Handles translation event. */
    165     virtual void retranslateUi() /* override */
    166     {
    167         setName(QApplication::translate("UIActionPool", "&Network Manager..."));
    168         setStatusTip(QApplication::translate("UIActionPool", "Display the Network Manager window"));
    169     }
    170 };
    171 
    172 /** Simple action extension, used as 'Show Cloud Profile Manager' action class. */
    173 class UIActionSimpleManagerFileShowCloudProfileManager : public UIActionSimple
    174 {
    175     Q_OBJECT;
    176 
    177 public:
    178 
    179     /** Constructs action passing @a pParent to the base-class. */
    180     UIActionSimpleManagerFileShowCloudProfileManager(UIActionPool *pParent)
    181         : UIActionSimple(pParent, ":/cloud_profile_manager_16px.png", ":/cloud_profile_manager_disabled_16px.png")
    182     {
    183         setProperty("UIToolType", QVariant::fromValue(UIToolType_Cloud));
    184     }
    185 
    186 protected:
    187 
    188     /** Returns shortcut extra-data ID. */
    189     virtual QString shortcutExtraDataID() const /* override */
    190     {
    191         return QString("CloudProfileManager");
    192     }
    193 
    194     /** Returns default shortcut. */
    195     virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
    196     {
    197         return QKeySequence("Ctrl+P");
    198     }
    199 
    200     /** Handles translation event. */
    201     virtual void retranslateUi() /* override */
    202     {
    203         setName(QApplication::translate("UIActionPool", "&Cloud Profile Manager..."));
    204         setStatusTip(QApplication::translate("UIActionPool", "Display the Cloud Profile Manager window"));
    205     }
    206 };
    207 
    20864/** Simple action extension, used as 'Show Import Appliance Wizard' action class. */
    20965class UIActionSimpleManagerFileShowImportApplianceWizard : public UIActionSimple
     
    331187    virtual QString shortcutExtraDataID() const /* override */
    332188    {
    333         return QString("ToolsGlobalWelcomeScreen");
     189        return QString("WelcomeScreen");
    334190    }
    335191
     
    364220    virtual QString shortcutExtraDataID() const /* override */
    365221    {
    366         return QString("ToolsGlobalExtensionPackManager");
     222        return QString("ExtensionPackManager");
     223    }
     224
     225    /** Returns default shortcut. */
     226    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
     227    {
     228        return QKeySequence("Ctrl+T");
    367229    }
    368230
     
    397259    virtual QString shortcutExtraDataID() const /* override */
    398260    {
    399         return QString("ToolsGlobalVirtualMediaManager");
     261        return QString("VirtualMediaManager");
     262    }
     263
     264    /** Returns default shortcut. */
     265    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
     266    {
     267        return QKeySequence("Ctrl+D");
    400268    }
    401269
     
    430298    virtual QString shortcutExtraDataID() const /* override */
    431299    {
    432         return QString("ToolsGlobalHostNetworkManager");
     300        return QString("HostNetworkManager");
     301    }
     302
     303    /** Returns default shortcut. */
     304    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
     305    {
     306        return QKeySequence("Ctrl+H");
    433307    }
    434308
     
    463337    virtual QString shortcutExtraDataID() const /* override */
    464338    {
    465         return QString("ToolsGlobalCloudProfileManager");
     339        return QString("CloudProfileManager");
     340    }
     341
     342    /** Returns default shortcut. */
     343    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
     344    {
     345        return QKeySequence("Ctrl+P");
    466346    }
    467347
     
    36153495    /* 'File' actions: */
    36163496    m_pool[UIActionIndexMN_M_File] = new UIActionMenuManagerFile(this);
    3617     m_pool[UIActionIndexMN_M_File_S_ShowExtensionPackManager] = new UIActionSimpleManagerFileShowExtensionPackManager(this);
    3618     m_pool[UIActionIndexMN_M_File_S_ShowVirtualMediumManager] = new UIActionSimpleManagerFileShowVirtualMediaManager(this);
    3619     m_pool[UIActionIndexMN_M_File_S_ShowHostNetworkManager] = new UIActionSimpleManagerFileShowHostNetworkManager(this);
    3620     m_pool[UIActionIndexMN_M_File_S_ShowCloudProfileManager] = new UIActionSimpleManagerFileShowCloudProfileManager(this);
    36213497    m_pool[UIActionIndexMN_M_File_S_ImportAppliance] = new UIActionSimpleManagerFileShowImportApplianceWizard(this);
    36223498    m_pool[UIActionIndexMN_M_File_S_ExportAppliance] = new UIActionSimpleManagerFileShowExportApplianceWizard(this);
     
    37783654    m_pool[UIActionIndexMN_M_VMResourceMonitor_S_SwitchToMachinePerformance] = new UIActionMenuManagerVMResourceMonitorSwitchToMachinePerformance(this);
    37793655
     3656    /* 'File' action groups: */
     3657    m_groupPool[UIActionIndexMN_M_File_M_Tools] = new QActionGroup(m_pool.value(UIActionIndexMN_M_File_M_Tools));
     3658    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_WelcomeScreen));
     3659    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_ExtensionPackManager));
     3660    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_VirtualMediaManager));
     3661    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_NetworkManager));
     3662    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_CloudProfileManager));
     3663    m_groupPool[UIActionIndexMN_M_File_M_Tools]->addAction(m_pool.value(UIActionIndexMN_M_File_M_Tools_T_VMResourceMonitor));
     3664
    37803665    /* 'Group' action groups: */
    37813666    m_groupPool[UIActionIndexMN_M_Group_M_Tools] = new QActionGroup(m_pool.value(UIActionIndexMN_M_Group_M_Tools));
     
    37943679    /* Prepare update-handlers for known menus: */
    37953680    m_menuUpdateHandlers[UIActionIndexMN_M_File].ptfm =                  &UIActionPoolManager::updateMenuFile;
     3681    m_menuUpdateHandlers[UIActionIndexMN_M_File_M_Tools].ptfm =          &UIActionPoolManager::updateMenuFileTools;
    37963682    m_menuUpdateHandlers[UIActionIndexMN_M_Welcome].ptfm =               &UIActionPoolManager::updateMenuWelcome;
    37973683    m_menuUpdateHandlers[UIActionIndexMN_M_Group].ptfm =                 &UIActionPoolManager::updateMenuGroup;
     
    38563742    addMenu(m_mainMenus, action(UIActionIndexMN_M_File));
    38573743    updateMenuFile();
     3744
     3745    /* 'File' / 'Tools' menu: */
     3746    updateMenuFileTools();
    38583747
    38593748    /* 'Welcome' menu: */
     
    40653954    pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowExtraDataManager));
    40663955# endif
    4067     /* 'Show Extension Pack Manager' action goes to 'File' menu: */
    4068     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowExtensionPackManager));
    4069     /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
    4070     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowVirtualMediumManager));
    4071     /* 'Show Network Manager' action goes to 'File' menu: */
    4072     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowHostNetworkManager));
    4073     /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
    4074     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowCloudProfileManager));
    4075 
     3956    /* Separator after Import/Export actions of the 'File' menu: */
     3957    pMenu->addSeparator();
     3958    /* 'Tools' submenu goes to 'File' menu: */
     3959    pMenu->addMenu(action(UIActionIndexMN_M_File_M_Tools)->menu());
    40763960#else /* !VBOX_WS_MAC */
    40773961
     
    40893973    /* 'Extra-data Manager' action goes to 'File' menu for Debug build: */
    40903974    pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowExtraDataManager));
     3975    /* Separator after 'Extra-data Manager' action of the 'File' menu: */
     3976    pMenu->addSeparator();
    40913977# endif
    4092     /* 'Show Extension Pack Manager' action goes to 'File' menu: */
    4093     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowExtensionPackManager));
    4094     /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
    4095     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowVirtualMediumManager));
    4096     /* 'Show Network Manager' action goes to 'File' menu: */
    4097     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowHostNetworkManager));
    4098     /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
    4099     pMenu->addAction(action(UIActionIndexMN_M_File_S_ShowCloudProfileManager));
     3978    /* 'Tools' submenu goes to 'File' menu: */
     3979    pMenu->addMenu(action(UIActionIndexMN_M_File_M_Tools)->menu());
     3980    /* Separator after 'Tools' submenu of the 'File' menu: */
     3981    pMenu->addSeparator();
    41003982# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
    41013983    /* 'Network Access Manager' action goes to 'File' menu: */
     
    41204002}
    41214003
     4004void UIActionPoolManager::updateMenuFileTools()
     4005{
     4006    /* Get corresponding menu: */
     4007    UIMenu *pMenu = action(UIActionIndexMN_M_File_M_Tools)->menu();
     4008    AssertPtrReturnVoid(pMenu);
     4009    /* Clear contents: */
     4010    pMenu->clear();
     4011
     4012    /* Populate 'File' / 'Tools' menu: */
     4013    pMenu->addAction(action(UIActionIndexMN_M_File_M_Tools_T_ExtensionPackManager));
     4014    pMenu->addAction(action(UIActionIndexMN_M_File_M_Tools_T_VirtualMediaManager));
     4015    pMenu->addAction(action(UIActionIndexMN_M_File_M_Tools_T_NetworkManager));
     4016    pMenu->addAction(action(UIActionIndexMN_M_File_M_Tools_T_CloudProfileManager));
     4017    pMenu->addAction(action(UIActionIndexMN_M_File_M_Tools_T_VMResourceMonitor));
     4018
     4019    /* Mark menu as valid: */
     4020    m_invalidations.remove(UIActionIndexMN_M_File_M_Tools);
     4021}
     4022
    41224023void UIActionPoolManager::updateMenuWelcome()
    41234024{
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h

    r87509 r87516  
    3737    /* 'File' menu actions: */
    3838    UIActionIndexMN_M_File = UIActionIndex_Max + 1,
    39     UIActionIndexMN_M_File_S_ShowExtensionPackManager,
    40     UIActionIndexMN_M_File_S_ShowVirtualMediumManager,
    41     UIActionIndexMN_M_File_S_ShowHostNetworkManager,
    42     UIActionIndexMN_M_File_S_ShowCloudProfileManager,
    4339    UIActionIndexMN_M_File_S_ImportAppliance,
    4440    UIActionIndexMN_M_File_S_ExportAppliance,
     
    238234    /** Updates 'File' menu. */
    239235    void updateMenuFile();
     236    /** Updates 'File' / 'Tools' menu. */
     237    void updateMenuFileTools();
    240238    /** Updates 'Welcome' menu. */
    241239    void updateMenuWelcome();
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp

    r87513 r87516  
    19431943}
    19441944
     1945void UIVirtualBoxManager::sltPerformShowGlobalTool(QAction *pAction)
     1946{
     1947    AssertPtrReturnVoid(pAction);
     1948    AssertPtrReturnVoid(m_pWidget);
     1949    m_pWidget->switchToGlobalItem();
     1950    m_pWidget->setToolsType(pAction->property("UIToolType").value<UIToolType>());
     1951}
     1952
    19451953void UIVirtualBoxManager::sltPerformShowMachineTool(QAction *pAction)
    19461954{
     
    22882296
    22892297    /* 'File' menu connections: */
    2290     connect(actionPool()->action(UIActionIndexMN_M_File_S_ShowExtensionPackManager), &UIAction::triggered,
    2291             this, &UIVirtualBoxManager::sltOpenManagerWindowDefault);
    2292     connect(actionPool()->action(UIActionIndexMN_M_File_S_ShowVirtualMediumManager), &UIAction::triggered,
    2293             this, &UIVirtualBoxManager::sltOpenManagerWindowDefault);
    2294     connect(actionPool()->action(UIActionIndexMN_M_File_S_ShowHostNetworkManager), &UIAction::triggered,
    2295             this, &UIVirtualBoxManager::sltOpenManagerWindowDefault);
    2296     connect(actionPool()->action(UIActionIndexMN_M_File_S_ShowCloudProfileManager), &UIAction::triggered,
    2297             this, &UIVirtualBoxManager::sltOpenManagerWindowDefault);
    22982298    connect(actionPool()->action(UIActionIndexMN_M_File_S_ImportAppliance), &UIAction::triggered,
    22992299            this, &UIVirtualBoxManager::sltOpenImportApplianceWizardDefault);
     
    23082308    connect(actionPool()->action(UIActionIndexMN_M_File_S_Close), &UIAction::triggered,
    23092309            this, &UIVirtualBoxManager::sltPerformExit);
     2310    connect(actionPool()->actionGroup(UIActionIndexMN_M_File_M_Tools), &QActionGroup::triggered,
     2311            this, &UIVirtualBoxManager::sltPerformShowGlobalTool);
    23102312
    23112313    /* 'Welcome' menu connections: */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h

    r87476 r87516  
    271271        void sltPerformPowerOffMachine();
    272272
     273        /** Handles call to show global tool corresponding to passed @a pAction. */
     274        void sltPerformShowGlobalTool(QAction *pAction);
    273275        /** Handles call to show machine tool corresponding to passed @a pAction. */
    274276        void sltPerformShowMachineTool(QAction *pAction);
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp

    r87354 r87516  
    136136{
    137137    return m_pPaneChooser->isCloudProfileUpdateInProgress();
     138}
     139
     140void UIVirtualBoxManagerWidget::switchToGlobalItem()
     141{
     142    AssertPtrReturnVoid(m_pPaneChooser);
     143    m_pPaneChooser->setCurrentGlobal();
    138144}
    139145
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h

    r87101 r87516  
    152152        bool isCloudProfileUpdateInProgress() const;
    153153
     154        /** Switches to global item. */
     155        void switchToGlobalItem();
    154156        /** Opens group name editor. */
    155157        void openGroupNameEditor();
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp

    r87102 r87516  
    14121412        pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowExtraDataManager));
    14131413# endif
    1414         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowVirtualMediumManager));
    1415         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowHostNetworkManager));
    1416         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowCloudProfileManager));
     1414        pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_M_Tools));
    14171415
    14181416#else /* !VBOX_WS_MAC */
     
    14251423# ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
    14261424        pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowExtraDataManager));
     1425        pMenuGlobal->addSeparator();
    14271426# endif
    1428         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowVirtualMediumManager));
    1429         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowHostNetworkManager));
    1430         pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_S_ShowCloudProfileManager));
     1427        pMenuGlobal->addAction(actionPool()->action(UIActionIndexMN_M_File_M_Tools));
     1428        pMenuGlobal->addSeparator();
    14311429# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
    14321430        pMenuGlobal->addAction(actionPool()->action(UIActionIndex_M_Application_S_NetworkAccessManager));
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp

    r87354 r87516  
    239239    /* Move focus to current-item: */
    240240    setFocusItem(currentItem());
     241
     242    /* Adjust corrresponding actions finally: */
     243    const UIToolType enmType = currentItem() ? currentItem()->itemType() : UIToolType_Welcome;
     244    QMap<UIToolType, UIAction*> actions;
     245    actions[UIToolType_Welcome] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_WelcomeScreen);
     246    actions[UIToolType_Extensions] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_ExtensionPackManager);
     247    actions[UIToolType_Media] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_VirtualMediaManager);
     248    actions[UIToolType_Network] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_NetworkManager);
     249    actions[UIToolType_Cloud] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_CloudProfileManager);
     250    actions[UIToolType_Resources] = actionPool()->action(UIActionIndexMN_M_File_M_Tools_T_VMResourceMonitor);
     251    if (actions.contains(enmType))
     252        actions.value(enmType)->setChecked(true);
    241253}
    242254
Note: See TracChangeset for help on using the changeset viewer.

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