VirtualBox

Ignore:
Timestamp:
Mar 27, 2018 3:26:40 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121501
Message:

FE/Qt: bugref:9049: Full and heavy cleanup for UIShortcutPool.

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

Legend:

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

    r69500 r71525  
    55
    66/*
    7  * Copyright (C) 2011-2017 Oracle Corporation
     7 * Copyright (C) 2011-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2121
    2222/* GUI includes: */
    23 # include "UIShortcutPool.h"
     23# include "VBoxGlobal.h"
    2424# include "UIActionPool.h"
    2525# include "UIExtraDataManager.h"
     26# include "UIShortcutPool.h"
    2627
    2728#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
     
    3233
    3334
     35/*********************************************************************************************************************************
     36*   Class UIShortcut implementation.                                                                                             *
     37*********************************************************************************************************************************/
     38
    3439void UIShortcut::setDescription(const QString &strDescription)
    3540{
     
    3742}
    3843
    39 const QString& UIShortcut::description() const
     44const QString &UIShortcut::description() const
    4045{
    4146    return m_strDescription;
     
    4752}
    4853
    49 const QKeySequence& UIShortcut::sequence() const
     54const QKeySequence &UIShortcut::sequence() const
    5055{
    5156    return m_sequence;
     
    5762}
    5863
    59 const QKeySequence& UIShortcut::defaultSequence() const
     64const QKeySequence &UIShortcut::defaultSequence() const
    6065{
    6166    return m_defaultSequence;
     
    6772}
    6873
    69 UIShortcutPool* UIShortcutPool::m_pInstance = 0;
    70 
    71 const QString UIShortcutPool::m_sstrShortcutKeyTemplate = QString("%1/%2");
    72 const QString UIShortcutPool::m_sstrShortcutKeyTemplateRuntime = m_sstrShortcutKeyTemplate.arg(GUI_Input_MachineShortcuts);
    73 
    74 UIShortcutPool* UIShortcutPool::instance()
    75 {
    76     return m_pInstance;
    77 }
     74
     75/*********************************************************************************************************************************
     76*   Class UIShortcutPool implementation.                                                                                         *
     77*********************************************************************************************************************************/
     78
     79/* static */
     80UIShortcutPool *UIShortcutPool::s_pInstance = 0;
     81const QString UIShortcutPool::s_strShortcutKeyTemplate = QString("%1/%2");
     82const QString UIShortcutPool::s_strShortcutKeyTemplateRuntime = s_strShortcutKeyTemplate.arg(GUI_Input_MachineShortcuts);
    7883
    7984void UIShortcutPool::create()
    8085{
    8186    /* Check that instance do NOT exists: */
    82     if (m_pInstance)
     87    if (s_pInstance)
    8388        return;
    8489
     
    8792
    8893    /* Prepare instance: */
    89     m_pInstance->prepare();
     94    s_pInstance->prepare();
    9095}
    9196
     
    9398{
    9499    /* Check that instance exists: */
    95     if (!m_pInstance)
     100    if (!s_pInstance)
    96101        return;
    97102
    98103    /* Cleanup instance: */
    99     m_pInstance->cleanup();
     104    s_pInstance->cleanup();
    100105
    101106    /* Delete instance: */
    102     delete m_pInstance;
    103 }
    104 
    105 UIShortcut& UIShortcutPool::shortcut(UIActionPool *pActionPool, UIAction *pAction)
     107    delete s_pInstance;
     108}
     109
     110UIShortcut &UIShortcutPool::shortcut(UIActionPool *pActionPool, UIAction *pAction)
    106111{
    107112    /* Compose shortcut key: */
    108     const QString strShortcutKey(m_sstrShortcutKeyTemplate.arg(pActionPool->shortcutsExtraDataID(),
    109                                                                pAction->shortcutExtraDataID()));
     113    const QString strShortcutKey(s_strShortcutKeyTemplate.arg(pActionPool->shortcutsExtraDataID(),
     114                                                              pAction->shortcutExtraDataID()));
    110115    /* Return existing if any: */
    111116    if (m_shortcuts.contains(strShortcutKey))
     
    119124}
    120125
    121 UIShortcut& UIShortcutPool::shortcut(const QString &strPoolID, const QString &strActionID)
     126UIShortcut &UIShortcutPool::shortcut(const QString &strPoolID, const QString &strActionID)
    122127{
    123128    /* Return if present, autocreate if necessary: */
    124     return shortcut(m_sstrShortcutKeyTemplate.arg(strPoolID, strActionID));
     129    return shortcut(s_strShortcutKeyTemplate.arg(strPoolID, strActionID));
    125130}
    126131
     
    151156
    152157        /* Compose shortcut key: */
    153         const QString strShortcutKey = m_sstrShortcutKeyTemplate.arg(pActionPool->shortcutsExtraDataID(),
    154                                                                      pAction->shortcutExtraDataID());
     158        const QString strShortcutKey = s_strShortcutKeyTemplate.arg(pActionPool->shortcutsExtraDataID(),
     159                                                                    pAction->shortcutExtraDataID());
    155160        /* If shortcut key is already known: */
    156161        if (m_shortcuts.contains(strShortcutKey))
     
    180185}
    181186
     187void UIShortcutPool::retranslateUi()
     188{
     189    /* Translate own defaults: */
     190    m_shortcuts[s_strShortcutKeyTemplateRuntime.arg("PopupMenu")]
     191        .setDescription(QApplication::translate("UIActionPool", "Popup Menu"));
     192}
     193
    182194void UIShortcutPool::sltReloadSelectorShortcuts()
    183195{
     
    217229{
    218230    /* Prepare instance: */
    219     if (!m_pInstance)
    220         m_pInstance = this;
     231    if (!s_pInstance)
     232        s_pInstance = this;
    221233}
    222234
     
    224236{
    225237    /* Cleanup instance: */
    226     if (m_pInstance == this)
    227         m_pInstance = 0;
     238    if (s_pInstance == this)
     239        s_pInstance = 0;
    228240}
    229241
     
    247259}
    248260
    249 void UIShortcutPool::retranslateUi()
    250 {
    251     /* Translate own defaults: */
    252     m_shortcuts[m_sstrShortcutKeyTemplateRuntime.arg("PopupMenu")]
    253         .setDescription(QApplication::translate("UIActionPool", "Popup Menu"));
    254 }
    255 
    256261void UIShortcutPool::loadDefaults()
    257262{
     
    273278    {
    274279        /* Default shortcut for the Runtime Popup Menu: */
    275         m_shortcuts.insert(m_sstrShortcutKeyTemplateRuntime.arg("PopupMenu"),
     280        m_shortcuts.insert(s_strShortcutKeyTemplateRuntime.arg("PopupMenu"),
    276281                           UIShortcut(QApplication::translate("UIActionPool", "Popup Menu"),
    277282                                      QString("Home"), QString("Home")));
     
    290295{
    291296    /* Compose shortcut key template: */
    292     const QString strShortcutKeyTemplate(m_sstrShortcutKeyTemplate.arg(strPoolExtraDataID));
     297    const QString strShortcutKeyTemplate(s_strShortcutKeyTemplate.arg(strPoolExtraDataID));
    293298    /* Iterate over all the overrides: */
    294299    const QStringList overrides = gEDataManager->shortcutOverrides(strPoolExtraDataID);
     
    342347{
    343348    /* Compose shortcut prefix: */
    344     const QString strShortcutPrefix(m_sstrShortcutKeyTemplate.arg(strPoolExtraDataID, QString()));
     349    const QString strShortcutPrefix(s_strShortcutKeyTemplate.arg(strPoolExtraDataID, QString()));
    345350    /* Populate the list of all the known overrides: */
    346351    QStringList overrides;
     
    364369}
    365370
    366 UIShortcut& UIShortcutPool::shortcut(const QString &strShortcutKey)
     371UIShortcut &UIShortcutPool::shortcut(const QString &strShortcutKey)
    367372{
    368373    return m_shortcuts[strShortcutKey];
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.h

    r69500 r71525  
    55
    66/*
    7  * Copyright (C) 2011-2017 Oracle Corporation
     7 * Copyright (C) 2011-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    1616 */
    1717
    18 #ifndef __UIShortcutPool_h__
    19 #define __UIShortcutPool_h__
     18#ifndef ___UIShortcutPool_h___
     19#define ___UIShortcutPool_h___
    2020
    2121/* Qt includes: */
     
    2323
    2424/* GUI includes: */
    25 #include "VBoxGlobal.h"
    2625#include "QIWithRetranslateUI.h"
    2726
    2827/* Forward declarations: */
     28class QKeySequence;
     29class QString;
    2930class UIActionPool;
    3031class UIAction;
    3132
    32 /* Shortcut descriptor: */
     33
     34/** Shortcut descriptor prototype. */
    3335class UIShortcut
    3436{
    3537public:
    3638
    37     /* Constructors: */
     39    /** Constructs empty shortcut descriptor. */
    3840    UIShortcut()
    3941        : m_strDescription(QString())
     
    4143        , m_defaultSequence(QKeySequence())
    4244    {}
     45    /** Constructs shortcut descriptor.
     46      * @param  strDescription   Brings the shortcut description.
     47      * @param  sequence         Brings the shortcut sequence.
     48      * @param  defaultSequence  Brings the default shortcut sequence. */
    4349    UIShortcut(const QString &strDescription,
    4450               const QKeySequence &sequence,
     
    4955    {}
    5056
    51     /* API: Description stuff: */
     57    /** Defines the shortcut @a strDescription. */
    5258    void setDescription(const QString &strDescription);
    53     const QString& description() const;
     59    /** Returns the shortcut description. */
     60    const QString &description() const;
    5461
    55     /* API: Sequence stuff: */
     62    /** Defines the shortcut @a sequence. */
    5663    void setSequence(const QKeySequence &sequence);
    57     const QKeySequence& sequence() const;
     64    /** Returns the shortcut sequence. */
     65    const QKeySequence &sequence() const;
    5866
    59     /* API: Default sequence stuff: */
    60     void setDefaultSequence(const QKeySequence &defaultSequence);
    61     const QKeySequence& defaultSequence() const;
     67    /** Defines the default shortcut @a sequence. */
     68    void setDefaultSequence(const QKeySequence &sequence);
     69    /** Returns the default shortcut sequence. */
     70    const QKeySequence &defaultSequence() const;
    6271
    63     /* API: Conversion stuff: */
     72    /** Converts shortcut sequence to string. */
    6473    QString toString() const;
    6574
    6675private:
    6776
    68     /* Variables: */
    69     QString m_strDescription;
     77    /** Holds the shortcut description. */
     78    QString      m_strDescription;
     79    /** Holds the shortcut sequence. */
    7080    QKeySequence m_sequence;
     81    /** Holds the default shortcut sequence. */
    7182    QKeySequence m_defaultSequence;
    7283};
    7384
    74 /* Singleton shortcut pool: */
     85
     86/** QObject extension used as shortcut pool singleton. */
    7587class UIShortcutPool : public QIWithRetranslateUI3<QObject>
    7688{
     
    7991signals:
    8092
    81     /* Notifiers: Extra-data stuff: */
     93    /** Notifies about Selector UI shortcuts changed. */
    8294    void sigSelectorShortcutsReloaded();
     95    /** Notifies about Runtime UI shortcuts changed. */
    8396    void sigMachineShortcutsReloaded();
    8497
    8598public:
    8699
    87     /* API: Singleton stuff: */
    88     static UIShortcutPool* instance();
     100    /** Returns singleton instance. */
     101    static UIShortcutPool *instance() { return s_pInstance; }
     102    /** Creates singleton instance. */
    89103    static void create();
     104    /** Destroys singleton instance. */
    90105    static void destroy();
    91106
    92     /* API: Shortcut stuff: */
    93     UIShortcut& shortcut(UIActionPool *pActionPool, UIAction *pAction);
    94     UIShortcut& shortcut(const QString &strPoolID, const QString &strActionID);
    95     const QMap<QString, UIShortcut>& shortcuts() const { return m_shortcuts; }
     107    /** Returns shortcuts of particular @a pActionPool for specified @a pAction. */
     108    UIShortcut &shortcut(UIActionPool *pActionPool, UIAction *pAction);
     109    /** Returns shortcuts of action-pool with @a strPoolID for action with @a strActionID. */
     110    UIShortcut &shortcut(const QString &strPoolID, const QString &strActionID);
     111    /** Returns all the shortcuts. */
     112    const QMap<QString, UIShortcut> &shortcuts() const { return m_shortcuts; }
     113    /** Defines shortcut overrides. */
    96114    void setOverrides(const QMap<QString, QString> &overrides);
    97115
    98     /* API: Action-pool stuff: */
     116    /** Applies shortcuts for specified @a pActionPool. */
    99117    void applyShortcuts(UIActionPool *pActionPool);
     118
     119protected:
     120
     121    /** Handles translation event. */
     122    virtual void retranslateUi() /* override */;
    100123
    101124private slots:
    102125
    103     /* Handlers: Extra-data stuff: */
     126    /** Reloads Selector UI shortcuts. */
    104127    void sltReloadSelectorShortcuts();
     128    /** Reloads Runtime UI shortcuts. */
    105129    void sltReloadMachineShortcuts();
    106130
    107131private:
    108132
    109     /* Constructor/destructor: */
     133    /** Constructs shortcut pool. */
    110134    UIShortcutPool();
     135    /** Destructs shortcut pool. */
    111136    ~UIShortcutPool();
    112137
    113     /* Helpers: Prepare stuff: */
     138    /** Prepares all. */
    114139    void prepare();
     140    /** Prepares connections. */
    115141    void prepareConnections();
    116142
    117     /* Helper: Cleanup stuff: */
     143    /** Cleanups all. */
    118144    void cleanup() {}
    119145
    120     /** Translation handler. */
    121     void retranslateUi();
    122 
    123     /* Helpers: Shortcuts stuff: */
     146    /** Loads defaults. */
    124147    void loadDefaults();
     148    /** Loads defaults for pool with specified @a strPoolExtraDataID. */
    125149    void loadDefaultsFor(const QString &strPoolExtraDataID);
     150    /** Loads overrides. */
    126151    void loadOverrides();
     152    /** Loads overrides for pool with specified @a strPoolExtraDataID. */
    127153    void loadOverridesFor(const QString &strPoolExtraDataID);
     154    /** Saves overrides. */
    128155    void saveOverrides();
     156    /** Saves overrides for pool with specified @a strPoolExtraDataID. */
    129157    void saveOverridesFor(const QString &strPoolExtraDataID);
    130158
    131     /* Helper: Shortcut stuff: */
    132     UIShortcut& shortcut(const QString &strShortcutKey);
     159    /** Returns shortcut with specified @a strShortcutKey. */
     160    UIShortcut &shortcut(const QString &strShortcutKey);
    133161
    134     /* Variables: */
    135     static UIShortcutPool *m_pInstance;
     162    /** Holds the singleton instance. */
     163    static UIShortcutPool *s_pInstance;
    136164    /** Shortcut key template. */
    137     static const QString m_sstrShortcutKeyTemplate;
     165    static const QString   s_strShortcutKeyTemplate;
    138166    /** Shortcut key template for Runtime UI. */
    139     static const QString m_sstrShortcutKeyTemplateRuntime;
     167    static const QString   s_strShortcutKeyTemplateRuntime;
     168
     169    /** Holds the pool shortcuts. */
    140170    QMap<QString, UIShortcut> m_shortcuts;
    141171};
    142172
     173/** Singleton Shortcut Pool 'official' name. */
    143174#define gShortcutPool UIShortcutPool::instance()
    144175
    145 #endif /* __UIShortcutPool_h__ */
    146176
     177#endif /* !___UIShortcutPool_h___ */
     178
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp

    r71027 r71525  
    3030# include "QITableView.h"
    3131# include "QIWidgetValidator.h"
     32# include "VBoxGlobal.h"
    3233# include "UIActionPool.h"
    3334# include "UIGlobalSettingsInput.h"
     
    898899        AssertPtr(pParent);
    899900        oldInputData.shortcuts() << UIDataShortcutRow(pParent, strShortcutKey, VBoxGlobal::removeAccelMark(shortcut.description()),
    900                                                  shortcut.sequence().toString(QKeySequence::NativeText),
    901                                                  shortcut.defaultSequence().toString(QKeySequence::NativeText));
     901                                                      shortcut.sequence().toString(QKeySequence::NativeText),
     902                                                      shortcut.defaultSequence().toString(QKeySequence::NativeText));
    902903    }
    903904    oldInputData.setAutoCapture(gEDataManager->autoCaptureEnabled());
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