diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-02-28 20:16:19 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-02-28 20:16:19 +0000 |
| commit | 4df23e9b87f7124b59778aa02ab776e842989e0e (patch) | |
| tree | 843f342dd0d203d0f3ac2a59ab26e1894ea8144d /src/plugins/Visual/projectm/projectmwidget.cpp | |
| parent | 73dc5b282e3fdd858910fb87de689237a58ea6a6 (diff) | |
| download | qmmp-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.cpp | 106 |
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); +} |
