aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/qsui/actionmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/qsui/actionmanager.cpp')
-rw-r--r--src/plugins/Ui/qsui/actionmanager.cpp75
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)
+{
+
}