VirtualBox

Changeset 73859 in vbox for trunk


Ignore:
Timestamp:
Aug 23, 2018 4:33:13 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: UIActionPool, UIShortcutPool and UIGlobalSettingsInput: Extend UIAction with possibility to describe own shortcut scope which excludes collisions for different scopes having similar shortcuts.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h

    r73791 r73859  
    191191    void setName(const QString &strName);
    192192
     193    /** Returns action shortcut scope. */
     194    const QString &shortcutScope() const { return m_strShortcutScope; }
     195    /** Defines action @a strShortcutScope. */
     196    void setShortcutScope(const QString &strShortcutScope) { m_strShortcutScope = strShortcutScope; }
     197
    193198    /** Returns action extra-data ID. */
    194199    virtual int extraDataID() const { return 0; }
     
    248253    /** Holds the action name. */
    249254    QString         m_strName;
     255    /** Holds the action shortcut scope. */
     256    QString         m_strShortcutScope;
    250257    /** Holds the action shortcut. */
    251258    QKeySequence    m_shortcut;
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.cpp

    r73667 r73859  
    3737*********************************************************************************************************************************/
    3838
     39void UIShortcut::setScope(const QString &strScope)
     40{
     41    m_strScope = strScope;
     42}
     43
     44const QString &UIShortcut::scope() const
     45{
     46    return m_strScope;
     47}
     48
    3949void UIShortcut::setDescription(const QString &strDescription)
    4050{
     
    118128    /* Create and return new one: */
    119129    UIShortcut &newShortcut = m_shortcuts[strShortcutKey];
     130    newShortcut.setScope(pAction->shortcutScope());
    120131    newShortcut.setDescription(pAction->name());
    121132    newShortcut.setSequence(pAction->defaultShortcut(pActionPool->type()));
     
    163174            /* Get corresponding shortcut: */
    164175            UIShortcut &existingShortcut = m_shortcuts[strShortcutKey];
     176            /* Copy the scope from the action to the shortcut: */
     177            existingShortcut.setScope(pAction->shortcutScope());
    165178            /* Copy the description from the action to the shortcut: */
    166179            existingShortcut.setDescription(pAction->name());
     
    182195            pAction->retranslateUi();
    183196            /* Copy the description from the action to the shortcut: */
     197            newShortcut.setScope(pAction->shortcutScope());
    184198            newShortcut.setDescription(pAction->name());
    185199        }
     
    281295        /* Default shortcut for the Runtime Popup Menu: */
    282296        m_shortcuts.insert(s_strShortcutKeyTemplateRuntime.arg("PopupMenu"),
    283                            UIShortcut(QApplication::translate("UIActionPool", "Popup Menu"),
     297                           UIShortcut(QString(),
     298                                      QApplication::translate("UIActionPool", "Popup Menu"),
    284299                                      QString("Home"), QString("Home")));
    285300    }
     
    319334        /* Modify map with composed key/value: */
    320335        if (!m_shortcuts.contains(strShortcutKey))
    321             m_shortcuts.insert(strShortcutKey, UIShortcut(QString(), strShortcutSequence, QString()));
     336            m_shortcuts.insert(strShortcutKey, UIShortcut(QString(), QString(), strShortcutSequence, QString()));
    322337        else
    323338        {
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIShortcutPool.h

    r71630 r73859  
    4040    /** Constructs empty shortcut descriptor. */
    4141    UIShortcut()
    42         : m_strDescription(QString())
     42        : m_strScope(QString())
     43        , m_strDescription(QString())
    4344        , m_sequence(QKeySequence())
    4445        , m_defaultSequence(QKeySequence())
    4546    {}
    4647    /** Constructs shortcut descriptor.
     48      * @param  strScope         Brings the shortcut scope.
    4749      * @param  strDescription   Brings the shortcut description.
    4850      * @param  sequence         Brings the shortcut sequence.
    4951      * @param  defaultSequence  Brings the default shortcut sequence. */
    50     UIShortcut(const QString &strDescription,
     52    UIShortcut(const QString &strScope,
     53               const QString &strDescription,
    5154               const QKeySequence &sequence,
    5255               const QKeySequence &defaultSequence)
    53         : m_strDescription(strDescription)
     56        : m_strScope(strScope)
     57        , m_strDescription(strDescription)
    5458        , m_sequence(sequence)
    5559        , m_defaultSequence(defaultSequence)
    5660    {}
     61
     62    /** Defines the shortcut @a strScope. */
     63    void setScope(const QString &strScope);
     64    /** Returns the shortcut scope. */
     65    const QString &scope() const;
    5766
    5867    /** Defines the shortcut @a strDescription. */
     
    7685private:
    7786
     87    /** Holds the shortcut scope. */
     88    QString      m_strScope;
    7889    /** Holds the shortcut description. */
    7990    QString      m_strDescription;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp

    r71525 r73859  
    9191    /** Constructs table row on the basis of passed arguments.
    9292      * @param  pParent             Brings the row this cell belongs too.
    93       * @param  strKey              Brings the unique key inentifying held sequence.
     93      * @param  strKey              Brings the unique key identifying held sequence.
     94      * @param  strScope            Brings the scope of the held sequence.
    9495      * @param  strDescription      Brings the deescription for the held sequence.
    9596      * @param  strCurrentSequence  Brings the current held sequence.
    9697      * @param  strDefaultSequence  Brings the default held sequence. */
    9798    UIDataShortcutRow(QITableView *pParent,
    98                        const QString &strKey,
    99                        const QString &strDescription,
    100                        const QString &strCurrentSequence,
    101                        const QString &strDefaultSequence)
     99                      const QString &strKey,
     100                      const QString &strScope,
     101                      const QString &strDescription,
     102                      const QString &strCurrentSequence,
     103                      const QString &strDefaultSequence)
    102104        : QITableViewRow(pParent)
    103105        , m_strKey(strKey)
     106        , m_strScope(strScope)
    104107        , m_strDescription(strDescription)
    105108        , m_strCurrentSequence(strCurrentSequence)
     
    114117        : QITableViewRow(other.table())
    115118        , m_strKey(other.key())
     119        , m_strScope(other.scope())
    116120        , m_strDescription(other.description())
    117121        , m_strCurrentSequence(other.currentSequence())
     
    135139        setTable(other.table());
    136140        m_strKey = other.key();
     141        m_strScope = other.scope();
    137142        m_strDescription = other.description();
    138143        m_strCurrentSequence = other.currentSequence();
     
    153158        return true
    154159               && (m_strKey == other.key())
     160               && (m_strScope == other.scope())
    155161               && (m_strCurrentSequence == other.currentSequence())
    156162               ;
     
    159165    /** Returns the key. */
    160166    QString key() const { return m_strKey; }
     167    /** Returns the scope. */
     168    QString scope() const { return m_strScope; }
    161169    /** Returns the description. */
    162170    QString description() const { return m_strDescription; }
     
    211219    /** Holds the key. */
    212220    QString m_strKey;
     221    /** Holds the scope. */
     222    QString m_strScope;
    213223    /** Holds the description. */
    214224    QString m_strDescription;
     
    504514    QMap<QString, QString> usedSequences;
    505515    foreach (const UIDataShortcutRow &item, m_shortcuts)
    506         if (!item.currentSequence().isEmpty())
    507             usedSequences.insertMulti(item.currentSequence(), item.key());
     516    {
     517        QString strKey = item.currentSequence();
     518        if (!strKey.isEmpty())
     519        {
     520            const QString strScope = item.scope();
     521            strKey = strScope.isNull() ? strKey : QString("%1: %2").arg(strScope, strKey);
     522            usedSequences.insertMulti(strKey, item.key());
     523        }
     524    }
    508525    /* Enumerate all the duplicated sequences: */
    509526    QSet<QString> duplicatedSequences;
     
    595612                case UIHotKeyColumnIndex_Description:
    596613                {
    597                     /* Return shortcut description: */
    598                     return m_filteredShortcuts[iIndex].description();
     614                    /* Return shortcut scope and description: */
     615                    const QString strScope = m_filteredShortcuts[iIndex].scope();
     616                    const QString strDescription = m_filteredShortcuts[iIndex].description();
     617                    return strScope.isNull() ? strDescription : tr("%1: %2", "scope: description").arg(strScope, strDescription);
    599618                }
    600619                case UIHotKeyColumnIndex_Sequence:
     
    720739    qStableSort(m_shortcuts.begin(), m_shortcuts.end(), UIShortcutCacheItemFunctor(iColumn, order));
    721740    /* Make sure host-combo item is always the first one: */
    722     UIDataShortcutRow fakeHostComboItem(0, UIHostCombo::hostComboCacheKey(), QString(), QString(), QString());
     741    UIDataShortcutRow fakeHostComboItem(0, UIHostCombo::hostComboCacheKey(), QString(), QString(), QString(), QString());
    723742    int iIndexOfHostComboItem = UIFunctorFindShortcut(UIFunctorFindShortcut::Base)(m_shortcuts, fakeHostComboItem);
    724743    if (iIndexOfHostComboItem != -1)
     
    754773        foreach (const UIDataShortcutRow &item, m_shortcuts)
    755774        {
    756             /* If neither description nor sequence matches the filter, skip item: */
    757             if (!item.description().contains(m_strFilter, Qt::CaseInsensitive) &&
     775            /* If neither scope nor description or sequence matches the filter, skip item: */
     776            if (!item.scope().contains(m_strFilter, Qt::CaseInsensitive) &&
     777                !item.description().contains(m_strFilter, Qt::CaseInsensitive) &&
    758778                !item.currentSequence().contains(m_strFilter, Qt::CaseInsensitive))
    759779                continue;
     
    889909
    890910    /* Gather old input data: */
    891     oldInputData.shortcuts() << UIDataShortcutRow(m_pMachineTable, UIHostCombo::hostComboCacheKey(), tr("Host Key Combination"),  gEDataManager->hostKeyCombination(), QString());
     911    oldInputData.shortcuts() << UIDataShortcutRow(m_pMachineTable,
     912                                                  UIHostCombo::hostComboCacheKey(),
     913                                                  QString(),
     914                                                  tr("Host Key Combination"),
     915                                                  gEDataManager->hostKeyCombination(),
     916                                                  QString());
    892917    const QMap<QString, UIShortcut> &shortcuts = gShortcutPool->shortcuts();
    893918    const QList<QString> shortcutKeys = shortcuts.keys();
     
    898923                               strShortcutKey.startsWith(GUI_Input_SelectorShortcuts) ? m_pSelectorTable : 0;
    899924        AssertPtr(pParent);
    900         oldInputData.shortcuts() << UIDataShortcutRow(pParent, strShortcutKey, VBoxGlobal::removeAccelMark(shortcut.description()),
     925        oldInputData.shortcuts() << UIDataShortcutRow(pParent,
     926                                                      strShortcutKey,
     927                                                      shortcut.scope(),
     928                                                      VBoxGlobal::removeAccelMark(shortcut.description()),
    901929                                                      shortcut.sequence().toString(QKeySequence::NativeText),
    902930                                                      shortcut.defaultSequence().toString(QKeySequence::NativeText));
     
    11561184
    11571185        /* Save new host-combo shortcut from the cache: */
    1158         const UIDataShortcutRow fakeHostComboItem(0, UIHostCombo::hostComboCacheKey(), QString(), QString(), QString());
     1186        const UIDataShortcutRow fakeHostComboItem(0, UIHostCombo::hostComboCacheKey(), QString(), QString(), QString(), QString());
    11591187        const int iHostComboItemBase = UIFunctorFindShortcut(UIFunctorFindShortcut::Base)(oldInputData.shortcuts(), fakeHostComboItem);
    11601188        const int iHostComboItemData = UIFunctorFindShortcut(UIFunctorFindShortcut::Base)(newInputData.shortcuts(), fakeHostComboItem);
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