diff options
Diffstat (limited to 'src/plugins/Ui/qsui/actionmanager.cpp')
| -rw-r--r-- | src/plugins/Ui/qsui/actionmanager.cpp | 75 |
1 files changed, 72 insertions, 3 deletions
diff --git a/src/plugins/Ui/qsui/actionmanager.cpp b/src/plugins/Ui/qsui/actionmanager.cpp index 2e63a0faa..3f135865e 100644 --- a/src/plugins/Ui/qsui/actionmanager.cpp +++ b/src/plugins/Ui/qsui/actionmanager.cpp @@ -23,6 +23,7 @@ #include <QIcon> #include <QFile> #include <QApplication> +#include <QWidgetAction> #include <qmmp/qmmp.h> #include "actionmanager.h" @@ -208,25 +209,93 @@ void ActionManager::resetShortcuts() void ActionManager::registerAction(int id, QAction *action, QString confKey, QString key) { + if(m_actions.value(id)) + qFatal("ActionManager: invalid action id"); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("SimpleUiShortcuts"); action->setShortcut(settings.value(confKey, key).toString()); action->setProperty("defaultShortcut", key); action->setObjectName(confKey); + m_actions[id] = action; + settings.endGroup(); +} + +void ActionManager::registerWidget(int id, QWidget *w, QString text, QString name) +{ if(m_actions.value(id)) qFatal("ActionManager: invalid action id"); + QWidgetAction *action = new QWidgetAction(this); + action->setText(text); + action->setObjectName(name); + action->setDefaultWidget(w); m_actions[id] = action; - settings.endGroup(); } -QStringList ActionManager::toolBarActionNames() const +QToolBar *ActionManager::createToolBar(ActionManager::ToolBarInfo info, QWidget *parent) +{ + QToolBar *toolBar = new QToolBar(info.title, parent); + updateToolBar(toolBar, info); + return toolBar; +} + +void ActionManager::updateToolBar(QToolBar *toolBar, ActionManager::ToolBarInfo info) +{ + toolBar->clear(); + foreach (QString name, info.actionNames) + { + if(name == "separator") + { + toolBar->addSeparator()->setObjectName("separator"); + continue; + } + QAction *action = findChild<QAction *>(name); + action->setVisible(true); + toolBar->addAction(action); + } +} + +ActionManager::ToolBarInfo ActionManager::defaultToolBar() const { QList <Type> idList; idList << PL_ADD_FILE << PL_ADD_DIRECTORY << PREVIOUS << PLAY << PAUSE << STOP << NEXT << EJECT; + idList << UI_SEPARATOR << UI_POS_SLIDER << UI_SEPARATOR << UI_VOL_SLIDER << VOL_MUTE; QStringList names; foreach (Type id, idList) { + if(id == UI_SEPARATOR) + { + names << "separator"; + continue; + } names << m_actions.value(id)->objectName(); } - return names; + ActionManager::ToolBarInfo info; + info.title = tr("Toolbar"); + info.actionNames = names; + return info; +} + +QList<ActionManager::ToolBarInfo> ActionManager::readToolBarSettings() const +{ + QList<ToolBarInfo> list; + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + int size = settings.beginReadArray("SimpleUiToolbars"); + for(int i = 0; i < size; ++i) + { + ToolBarInfo info; + settings.setArrayIndex(i); + info.title = settings.value("title").toString(); + info.actionNames = settings.value("actions").toStringList(); + list.append(info); + } + settings.endArray(); + if(list.isEmpty()) + list << defaultToolBar(); + return list; +} + +void ActionManager::writeToolBarSettings(QList<ActionManager::ToolBarInfo> l) +{ + } |
