diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/General/songchange/settingsdialog.cpp | 26 | ||||
| -rw-r--r-- | src/plugins/General/songchange/songchange.cpp | 45 | ||||
| -rw-r--r-- | src/plugins/General/songchange/songchange.h | 14 |
3 files changed, 58 insertions, 27 deletions
diff --git a/src/plugins/General/songchange/settingsdialog.cpp b/src/plugins/General/songchange/settingsdialog.cpp index 156b09d77..ee39d91cd 100644 --- a/src/plugins/General/songchange/settingsdialog.cpp +++ b/src/plugins/General/songchange/settingsdialog.cpp @@ -74,29 +74,3 @@ void SettingsDialog::addMenu(QToolButton *button) button->setPopupMode(QToolButton::InstantPopup); connect(menu, SIGNAL(triggered (QAction *)), SLOT(addTitleString(QAction *))); } - - - -/*void SettingsDialog::createMenus() -{ - QMenu *menu = new QMenu(this); - menu->addAction(tr("Artist"))->setData("%p"); - menu->addAction(tr("Album"))->setData("%a"); - menu->addAction(tr("Title"))->setData("%t"); - menu->addAction(tr("Track number"))->setData("%n"); - menu->addAction(tr("Two-digit track number"))->setData("%NN"); - menu->addAction(tr("Genre"))->setData("%g"); - menu->addAction(tr("Comment"))->setData("%c"); - menu->addAction(tr("Composer"))->setData("%C"); - menu->addAction(tr("Duration"))->setData("%l"); - menu->addAction(tr("Disc number"))->setData("%D"); - menu->addAction(tr("File name"))->setData("%f"); - menu->addAction(tr("File path"))->setData("%F"); - menu->addAction(tr("Year"))->setData("%y"); - menu->addAction(tr("Condition"))->setData("%if(%p&%t,%p - %t,%f)"); - ui.patternButton->setMenu(menu); - ui.patternButton->setPopupMode(QToolButton::InstantPopup); - connect(menu, SIGNAL(triggered (QAction *)), SLOT(addTitleString( QAction *))); -}*/ - - diff --git a/src/plugins/General/songchange/songchange.cpp b/src/plugins/General/songchange/songchange.cpp index a367a412d..74aa6f4f8 100644 --- a/src/plugins/General/songchange/songchange.cpp +++ b/src/plugins/General/songchange/songchange.cpp @@ -36,7 +36,50 @@ #include "songchange.h" SongChange::SongChange(QObject *parent) : QObject(parent) -{} +{ + m_core = SoundCore::instance(); + connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(onStateChanged(Qmmp::State))); + connect(m_core, SIGNAL(metaDataChanged()), SLOT(onMetaDataChanged())); + connect(m_core, SIGNAL(finished()), SLOT(onFinised())); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_newTrackCommand = settings.value("SongChange/new_track_command").toString(); + m_endOfTrackCommand = settings.value("SongChange/end_of_track_command").toString(); + m_endOfPlCommand = settings.value("SongChange/end_of_pl_command").toString(); + m_titleChangeCommand = settings.value("SongChange/title_change_command").toString(); +} SongChange::~SongChange() {} + +void SongChange::onStateChanged(Qmmp::State state) +{ + switch (state) + { + case Qmmp::Playing: + break; + default: + m_prevMetaData.clear(); + } +} + +void SongChange::onMetaDataChanged() +{ + QMap <Qmmp::MetaData, QString> metaData = m_core->metaData(); + if(m_prevMetaData != metaData) + { + if(m_prevMetaData[Qmmp::URL] == metaData[Qmmp::URL]) + { + qDebug("m_titleChangeCommand"); + } + else + { + qDebug("new_track_command"); + } + } + m_prevMetaData = metaData; +} + +void SongChange::onFinised() +{ + qDebug("on_track_finished"); +} diff --git a/src/plugins/General/songchange/songchange.h b/src/plugins/General/songchange/songchange.h index 92ce4ef34..24f414147 100644 --- a/src/plugins/General/songchange/songchange.h +++ b/src/plugins/General/songchange/songchange.h @@ -20,6 +20,7 @@ #ifndef SONGCHANGE_H #define SONGCHANGE_H +#include <QMap> #include <qmmpui/general.h> #include <qmmp/qmmp.h> @@ -38,6 +39,19 @@ public: SongChange(QObject *parent = 0); ~SongChange(); + +private slots: + void onStateChanged(Qmmp::State state); + void onMetaDataChanged(); + void onFinised(); + +private: + QString m_newTrackCommand; + QString m_endOfTrackCommand; + QString m_endOfPlCommand; + QString m_titleChangeCommand; + SoundCore *m_core; + QMap <Qmmp::MetaData, QString> m_prevMetaData; }; #endif |
