From 8040e9cf13fa527c9262b5a4eaa233304485c1c9 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 16 Mar 2016 12:42:28 +0000 Subject: qsui: prepare for new action editor implementation git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6187 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/qsui/actionmanager.cpp | 75 +++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) (limited to 'src/plugins/Ui/qsui/actionmanager.cpp') 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 #include #include +#include #include #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(name); + action->setVisible(true); + toolBar->addAction(action); + } +} + +ActionManager::ToolBarInfo ActionManager::defaultToolBar() const { QList 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::readToolBarSettings() const +{ + QList 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 l) +{ + } -- cgit v1.2.3-13-gbd6f