diff options
Diffstat (limited to 'src/plugins/Ui/qsui/actionmanager.cpp')
| -rw-r--r-- | src/plugins/Ui/qsui/actionmanager.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/plugins/Ui/qsui/actionmanager.cpp b/src/plugins/Ui/qsui/actionmanager.cpp index dedbd11f1..bedccf3b5 100644 --- a/src/plugins/Ui/qsui/actionmanager.cpp +++ b/src/plugins/Ui/qsui/actionmanager.cpp @@ -25,6 +25,7 @@ #include <QApplication> #include <QStyle> #include <QWidgetAction> +#include <QDockWidget> #include <qmmp/qmmp.h> #include "actionmanager.h" @@ -127,11 +128,21 @@ QAction *ActionManager::use(int type, const QObject *receiver, const char *membe return act; } -QList<QAction *> ActionManager::actions() +QList<QAction *> ActionManager::actions() const { return m_actions.values(); } +QList<QDockWidget *> ActionManager::dockWidgtes() const +{ + return m_dockWidgets.keys(); +} + +bool ActionManager::hasDockWidgets() const +{ + return !m_dockWidgets.isEmpty(); +} + ActionManager* ActionManager::instance() { return m_instance; @@ -191,10 +202,21 @@ void ActionManager::saveStates() void ActionManager::saveActions() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("SimpleUiShortcuts"); + for(const QAction *action : m_actions.values()) { - settings.setValue(QString("SimpleUiShortcuts/")+action->objectName(), action->shortcut()); + settings.setValue(action->objectName(), action->shortcut()); + } + + auto it = m_dockWidgets.cbegin(); + while(it != m_dockWidgets.cend()) + { + settings.setValue(it.value().first, it.key()->toggleViewAction()->shortcut()); + ++it; } + + settings.endGroup(); } void ActionManager::resetShortcuts() @@ -203,6 +225,13 @@ void ActionManager::resetShortcuts() { action->setShortcut(action->property("defaultShortcut").toString()); } + + auto it = m_dockWidgets.cbegin(); + while(it != m_dockWidgets.cend()) + { + it.key()->toggleViewAction()->setShortcut(it.value().second); + ++it; + } } void ActionManager::registerAction(int id, QAction *action, const QString &confKey, const QString &key) @@ -233,6 +262,20 @@ void ActionManager::registerWidget(int id, QWidget *w, const QString &text, cons m_actions[id] = action; } +void ActionManager::registerDockWidget(QDockWidget *w, const QString &confKey, const QString &key) +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("SimpleUiShortcuts"); + w->toggleViewAction()->setShortcut(settings.value(confKey, key).toString()); + settings.endGroup(); + m_dockWidgets.insert(w, qMakePair<QString, QString>(confKey, key)); +} + +void ActionManager::removeDockWidget(QDockWidget *w) +{ + m_dockWidgets.remove(w); +} + QToolBar *ActionManager::createToolBar(const ToolBarInfo &info, QWidget *parent) { QToolBar *toolBar = new QToolBar(info.title, parent); |
