aboutsummaryrefslogtreecommitdiff
path: root/src/ui/actionmanager.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-11-01 17:54:27 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-11-01 17:54:27 +0000
commit24af8da3f8942c200ba0058341a66a888224aa3c (patch)
treec01647eef52405ff06ed13e6d151b75cddde3834 /src/ui/actionmanager.cpp
parent15d744d752d16aa5621c98cd2de2d6ce3f6e6f46 (diff)
downloadqmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.gz
qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.bz2
qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.zip
changed playlist api, prepare for shortcut editor implementation, fixed direcory scan order (Closes issue 207)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1970 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui/actionmanager.cpp')
-rw-r--r--src/ui/actionmanager.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/ui/actionmanager.cpp b/src/ui/actionmanager.cpp
new file mode 100644
index 000000000..9e329226e
--- /dev/null
+++ b/src/ui/actionmanager.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * Copyright (C) 2010 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QSettings>
+#include <QAction>
+#include <QIcon>
+#include <QFile>
+#include <qmmp/qmmp.h>
+#include "actionmanager.h"
+
+ActionManager *ActionManager::m_instance = 0;
+
+ActionManager::ActionManager(QObject *parent) :
+ QObject(parent)
+{
+ m_instance = this;
+ m_settings = new QSettings(Qmmp::configFile(), QSettings::IniFormat);
+ m_settings->beginGroup("Shortcuts");
+ m_actions[PLAY] = createAction(tr("&Play"), "play", tr("X"), "media-playback-start");
+ m_actions[PAUSE] = createAction(tr("&Pause"), "pause", tr("C"), "media-playback-pause");
+ m_actions[STOP] = createAction(tr("&Stop"), "stop", tr("V"), "media-playback-stop");
+ m_actions[PREVIOUS] = createAction(tr("&Previous"), "previous", tr("Z"), "media-skip-backward");
+ m_actions[NEXT] = createAction(tr("&Next"), "next", tr("B"), "media-skip-forward");
+ m_actions[PLAY_PAUSE] = createAction(tr("&Play/Pause"), "play_pause", tr("Space"));
+ m_actions[JUMP] = createAction(tr("&Jump to File"), "jump", tr("J"), "go-up");
+ m_settings->endGroup();
+ delete m_settings;
+ m_settings = 0;
+}
+
+ActionManager::~ActionManager()
+{
+ m_instance = 0;
+}
+
+QAction *ActionManager::action(int type)
+{
+ return m_actions[type];
+}
+
+QAction *ActionManager::use(int type, const QObject *receiver, const char *member)
+{
+ QAction *act = m_actions[type];
+ connect(act,SIGNAL(triggered(bool)), receiver, member);
+ return act;
+}
+
+ActionManager* ActionManager::instance()
+{
+ return m_instance;
+}
+
+QAction *ActionManager::createAction(QString name, QString confKey, QString key, QString iconName)
+{
+ QAction *action = new QAction(name, this);
+ action->setShortcut(m_settings->value(confKey, key).toString());
+ action->setObjectName(confKey);
+ if(iconName.isEmpty())
+ return action;
+ if(QFile::exists(iconName))
+ action->setIcon(QIcon(iconName));
+ else
+ action->setIcon(QIcon::fromTheme(iconName));
+ return action;
+}