aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Visual/projectm/projectmwidget.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-02-28 20:16:19 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-02-28 20:16:19 +0000
commit4df23e9b87f7124b59778aa02ab776e842989e0e (patch)
tree843f342dd0d203d0f3ac2a59ab26e1894ea8144d /src/plugins/Visual/projectm/projectmwidget.cpp
parent73dc5b282e3fdd858910fb87de689237a58ea6a6 (diff)
downloadqmmp-4df23e9b87f7124b59778aa02ab776e842989e0e.tar.gz
qmmp-4df23e9b87f7124b59778aa02ab776e842989e0e.tar.bz2
qmmp-4df23e9b87f7124b59778aa02ab776e842989e0e.zip
enapled projectM plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@812 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Visual/projectm/projectmwidget.cpp')
-rw-r--r--src/plugins/Visual/projectm/projectmwidget.cpp106
1 files changed, 96 insertions, 10 deletions
diff --git a/src/plugins/Visual/projectm/projectmwidget.cpp b/src/plugins/Visual/projectm/projectmwidget.cpp
index 7cc7d233b..463065a73 100644
--- a/src/plugins/Visual/projectm/projectmwidget.cpp
+++ b/src/plugins/Visual/projectm/projectmwidget.cpp
@@ -2,6 +2,11 @@
* Copyright (C) 2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
+ * Copyright (C) 2007 by projectM team *
+ * *
+ * Carmelo Piccione and carmelo.piccione+projectM@gmail.com *
+ * carmelo.piccione+projectM@gmail.com *
+ * *
* 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 *
@@ -21,9 +26,16 @@
#include <QTimer>
#include <QDir>
#include <QKeyEvent>
-
+#include <QMenu>
+#include <libprojectM/projectM.hpp>
+#include <qmmp/soundcore.h>
+#include <qmmp/qmmp.h>
#include "projectmwidget.h"
+#ifndef PROJECTM_CONFIG
+#define PROJECTM_CONFIG "/usr/share/projectM/config.inp"
+#endif
+
ProjectMWidget::ProjectMWidget(QWidget *parent)
: QGLWidget(parent)
{
@@ -32,6 +44,8 @@ ProjectMWidget::ProjectMWidget(QWidget *parent)
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()),SLOT(updateGL ()));
timer->start(0);
+ m_menu = new QMenu(this);
+ connect(SoundCore::instance(), SIGNAL(metaDataChanged()), SLOT(updateTitle()));
}
@@ -42,7 +56,7 @@ ProjectMWidget::~ProjectMWidget()
m_projectM = 0;
}
-QProjectM *ProjectMWidget::projectM()
+projectM *ProjectMWidget::projectMInstance()
{
return m_projectM;
}
@@ -70,16 +84,19 @@ void ProjectMWidget::initializeGL()
glLineStipple(2, 0xAAAA);
if (!m_projectM)
{
- m_projectM = new QProjectM("/usr/share/projectM/config.inp");
-
-
- QString file(m_projectM->settings().presetURL.c_str());
-
- foreach (QFileInfo info, QDir(file).entryInfoList())
+ m_projectM = new projectM(PROJECTM_CONFIG, projectM::FLAG_DISABLE_PLAYLIST_LOAD);
+ QString presetPath (m_projectM->settings().presetURL.c_str());
+ QDir presetDir(presetPath);
+ presetDir.setFilter(QDir::Files);
+ QStringList filters;
+ filters << "*.prjm" << "*.milk";
+ QFileInfoList l = presetDir.entryInfoList(filters);
+ foreach (QFileInfo info, l)
{
- if (info.fileName().toLower().endsWith(".prjm") || info.fileName().toLower().endsWith(".milk"))
- m_projectM->addPresetURL ( info.absoluteFilePath().toStdString(), info.fileName().toStdString(), 1);
+ m_projectM->addPresetURL (info.absoluteFilePath().toStdString(), info.fileName().toStdString(), 1);
}
+ createActions();
+ updateTitle();
}
}
@@ -97,3 +114,72 @@ void ProjectMWidget::paintGL()
if (m_projectM)
m_projectM->renderFrame();
}
+
+void ProjectMWidget::mousePressEvent (QMouseEvent *event)
+{
+ if (event->button () == Qt::RightButton)
+ m_menu->exec(event->globalPos());
+}
+
+void ProjectMWidget::createActions()
+{
+ m_menu->addAction(tr("&Help"), this, SLOT(showHelp()), tr("F1"));
+ m_menu->addAction(tr("&Show Song Title"), this, SLOT(showTitle()), tr("F2"));
+ m_menu->addAction(tr("&Show Preset Name"), this, SLOT(showPresetName()), tr("F3"));
+ m_menu->addSeparator();
+ m_menu->addAction(tr("&Next Preset"), this, SLOT(nextPreset()), tr("N"));
+ m_menu->addAction(tr("&Previous Preset"), this, SLOT(previousPreset()), tr("P"));
+ m_menu->addAction(tr("&Random Preset"), this, SLOT(randomPreset()), tr("R"));
+ m_menu->addAction(tr("&Lock Preset"), this, SLOT(lockPreset()), tr("L"));
+ m_menu->addSeparator();
+ m_menu->addAction(tr("&Fullscreen"), this, SLOT(fullScreen()), tr("F"));
+ m_menu->addSeparator();
+ parentWidget()->addActions(m_menu->actions());
+}
+
+void ProjectMWidget::showHelp()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_F1, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::showPresetName()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_F3, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::showTitle()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_F2, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::nextPreset()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_n, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::previousPreset()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_p, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::randomPreset()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_r, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::lockPreset()
+{
+ m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_l, PROJECTM_KMOD_LSHIFT);
+}
+
+void ProjectMWidget::fullScreen()
+{
+ parentWidget()->setWindowState (parentWidget()->windowState() ^Qt::WindowFullScreen);
+}
+
+void ProjectMWidget::updateTitle()
+{
+ std::string artist = SoundCore::instance()->metaData(Qmmp::ARTIST).toLocal8Bit().constData();
+ std::string title = SoundCore::instance()->metaData(Qmmp::TITLE).toLocal8Bit().constData();
+ m_projectM->projectM_setTitle(artist + " - " + title);
+}