diff options
Diffstat (limited to 'src/plugins')
24 files changed, 135 insertions, 196 deletions
diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp index 367a050aa..2b095c386 100644 --- a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp @@ -46,9 +46,9 @@ const QString IncDecVolumeCommandLineOption::helpString() const } -void IncDecVolumeCommandLineOption::executeCommand(const QString& opt_str, CommandLineManager* clm, Control* ctrl) +void IncDecVolumeCommandLineOption::executeCommand(const QString& opt_str, CommandLineManager* clm) { - int volume = qMax(clm->leftVolume(), clm->rightVolume()); + /*int volume = qMax(clm->leftVolume(), clm->rightVolume()); int balance = 0; int left = clm->leftVolume(); int right = clm->rightVolume(); @@ -62,9 +62,9 @@ void IncDecVolumeCommandLineOption::executeCommand(const QString& opt_str, Comma else if (opt_str == "--volume-dec") { volume = qMax (0, volume - 5); - } - ctrl->setVolume(volume-qMax(balance,0)*volume/100, - volume+qMin(balance,0)*volume/100); + }*/ + /*ctrl->setVolume(volume-qMax(balance,0)*volume/100, + volume+qMin(balance,0)*volume/100);*/ } const QString IncDecVolumeCommandLineOption::name() const diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h index 4a320fc23..8d6b10f7e 100644 --- a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h @@ -25,7 +25,6 @@ #include <QObject> #include <qmmpui/commandlineoption.h> -#include <qmmpui/control.h> #include <qmmpui/commandlinemanager.h> @@ -37,7 +36,7 @@ public: virtual bool identify(const QString& opt_str)const; virtual const QString name()const; virtual const QString helpString()const; - virtual void executeCommand(const QString& opt_str, CommandLineManager* clm, Control* ctrl); + virtual void executeCommand(const QString& opt_str, CommandLineManager* clm); virtual QTranslator *createTranslator(QObject *parent); }; diff --git a/src/plugins/General/dbuscontrol/CMakeLists.txt b/src/plugins/General/dbuscontrol/CMakeLists.txt index 9126a7964..b646cee80 100644 --- a/src/plugins/General/dbuscontrol/CMakeLists.txt +++ b/src/plugins/General/dbuscontrol/CMakeLists.txt @@ -24,9 +24,10 @@ ADD_DEFINITIONS(-DQT_THREAD) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# libqmmpui +# libqmmpui & libqmmp include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../) link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp) SET(libdbuscontrol_SRCS dbuscontrol.cpp @@ -55,6 +56,6 @@ QT4_WRAP_CPP(libdbuscontrol_MOC_SRCS ${libdbuscontrol_MOC_HDRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) ADD_LIBRARY(dbuscontrol SHARED ${libdbuscontrol_SRCS} ${libdbuscontrol_MOC_SRCS} ${libdbuscontrol_RCC_SRCS}) -add_dependencies(dbuscontrol qmmpui) -target_link_libraries(dbuscontrol ${QT_LIBRARIES} -lqmmpui) +add_dependencies(dbuscontrol qmmpui libqmmp) +target_link_libraries(dbuscontrol ${QT_LIBRARIES} -lqmmpui -lqmmp) install(TARGETS dbuscontrol DESTINATION ${LIB_DIR}/qmmp/General) diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.cpp b/src/plugins/General/dbuscontrol/dbusadaptor.cpp index 86a5115ac..415ec35dc 100644 --- a/src/plugins/General/dbuscontrol/dbusadaptor.cpp +++ b/src/plugins/General/dbuscontrol/dbusadaptor.cpp @@ -18,15 +18,12 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include <qmmpui/control.h> - #include "dbuscontrol.h" #include "dbusadaptor.h" -DBUSAdaptor::DBUSAdaptor(Control *ctrl, QObject *parent) +DBUSAdaptor::DBUSAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { - m_control = ctrl; setAutoRelaySignals(TRUE); connect(parent, SIGNAL(stateChanged()), SLOT (processState())); connect(parent, SIGNAL(volumeChanged()), SLOT (processVolume())); @@ -52,7 +49,7 @@ void DBUSAdaptor::setVolume(int volume) int bal = balance(); int left = volume-qMax(bal,0)*volume/100; int right = volume+qMin(bal,0)*volume/100; - QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right)); + //QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right)); } int DBUSAdaptor::balance() @@ -72,120 +69,124 @@ void DBUSAdaptor::setBalance(int bal) bal = qMax(bal,-100); int left = volume()-qMax(bal,0)*volume()/100; int right = volume()+qMin(bal,0)*volume()/100; - QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right)); + //QMetaObject::invokeMethod(m_control, "setVolume", Q_ARG(int, left), Q_ARG(int, right)); } int DBUSAdaptor::length() { - return qobject_cast<DBUSControl *>(parent())->info()->length(); + return 0;//qobject_cast<DBUSControl *>(parent())->info()->length(); } int DBUSAdaptor::year() { - return qobject_cast<DBUSControl *>(parent())->info()->year(); + return 0;//qobject_cast<DBUSControl *>(parent())->info()->year(); } QString DBUSAdaptor::title() { - return qobject_cast<DBUSControl *>(parent())->info()->title(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->title(); } QString DBUSAdaptor::artist() { - return qobject_cast<DBUSControl *>(parent())->info()->artist(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->artist(); } QString DBUSAdaptor::album() { - return qobject_cast<DBUSControl *>(parent())->info()->album(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->album(); } QString DBUSAdaptor::comment() { - return qobject_cast<DBUSControl *>(parent())->info()->comment(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->comment(); } QString DBUSAdaptor::genre() { - return qobject_cast<DBUSControl *>(parent())->info()->genre(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->genre(); } QString DBUSAdaptor::path() { - return qobject_cast<DBUSControl *>(parent())->info()->path(); + return QString();//qobject_cast<DBUSControl *>(parent())->info()->path(); } bool DBUSAdaptor::isPlaying() { - return qobject_cast<DBUSControl *>(parent())->state() == General::Playing; + //return qobject_cast<DBUSControl *>(parent())->state() == General::Playing; + return FALSE; } bool DBUSAdaptor::isPaused() { - return qobject_cast<DBUSControl *>(parent())->state() == General::Paused; + //return qobject_cast<DBUSControl *>(parent())->state() == General::Paused; + return FALSE; } bool DBUSAdaptor::isStopped() { - return qobject_cast<DBUSControl *>(parent())->state() == General::Stopped; + //return qobject_cast<DBUSControl *>(parent())->state() == General::Stopped; + return FALSE; } int DBUSAdaptor::elapsedTime() { - return qobject_cast<DBUSControl *>(parent())->elapsedTime(); + //return qobject_cast<DBUSControl *>(parent())->elapsedTime(); + return 0; } void DBUSAdaptor::play() { - QMetaObject::invokeMethod(m_control, "play"); + //QMetaObject::invokeMethod(m_control, "play"); } void DBUSAdaptor::stop() { - QMetaObject::invokeMethod(m_control, "stop"); + //QMetaObject::invokeMethod(m_control, "stop"); } void DBUSAdaptor::next() { - QMetaObject::invokeMethod(m_control, "next"); + //QMetaObject::invokeMethod(m_control, "next"); } void DBUSAdaptor::previous() { - QMetaObject::invokeMethod(m_control, "previous"); + //QMetaObject::invokeMethod(m_control, "previous"); } void DBUSAdaptor::pause() { - QMetaObject::invokeMethod(m_control, "pause"); + //QMetaObject::invokeMethod(m_control, "pause"); } void DBUSAdaptor::toggleVisibility() { - QMetaObject::invokeMethod(m_control, "toggleVisibility"); + //QMetaObject::invokeMethod(m_control, "toggleVisibility"); } void DBUSAdaptor::exit() { - QMetaObject::invokeMethod(m_control, "exit"); + //QMetaObject::invokeMethod(m_control, "exit"); } void DBUSAdaptor::seek(int time) { if ((time < 0) || (time > length())) return; - QMetaObject::invokeMethod(m_control, "seek", Q_ARG(int, time)); + //QMetaObject::invokeMethod(m_control, "seek", Q_ARG(int, time)); } void DBUSAdaptor::processState() { - uint state = qobject_cast<DBUSControl *>(parent())->state(); + /*uint state = qobject_cast<DBUSControl *>(parent())->state(); if(state == General::Playing) emit started(); else if(state == General::Stopped) emit stopped(); else if(state == General::Paused) - emit paused(); + emit paused();*/ } void DBUSAdaptor::processVolume() diff --git a/src/plugins/General/dbuscontrol/dbusadaptor.h b/src/plugins/General/dbuscontrol/dbusadaptor.h index a78c78008..5d82db044 100644 --- a/src/plugins/General/dbuscontrol/dbusadaptor.h +++ b/src/plugins/General/dbuscontrol/dbusadaptor.h @@ -48,7 +48,7 @@ Q_PROPERTY(int elapsedTime READ elapsedTime) public: - DBUSAdaptor(Control *ctrl, QObject *parent = 0); + DBUSAdaptor(QObject *parent = 0); ~DBUSAdaptor(); diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.cpp b/src/plugins/General/dbuscontrol/dbuscontrol.cpp index 7a72fff51..bc734ab35 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrol.cpp +++ b/src/plugins/General/dbuscontrol/dbuscontrol.cpp @@ -18,22 +18,20 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include <qmmpui/control.h> - #include "dbusadaptor.h" #include "dbuscontrol.h" -DBUSControl::DBUSControl(Control *control, QObject *parent) +DBUSControl::DBUSControl(QObject *parent) : General(parent) { - new DBUSAdaptor(control, this); + new DBUSAdaptor(this); QDBusConnection connection = QDBusConnection::sessionBus(); connection.registerObject("/Qmmp", this); connection.registerService("org.qmmp.dbus"); m_left = 0; m_right = 0; m_time = 0; - m_state = General::Stopped; + //m_state = General::Stopped; } @@ -41,63 +39,6 @@ DBUSControl::~DBUSControl() { } -void DBUSControl::setState(const uint &state) -{ - m_state = state; - emit stateChanged(); - switch ((uint) state) - { - case General::Playing: - { - break; - } - case General::Paused: - { - break; - } - case General::Stopped: - { - m_song.clear(); - m_time = 0; - break; - } - } -} - -void DBUSControl::setSongInfo(const SongInfo &song) -{ - m_song = song; - emit songChanged(); -} - -void DBUSControl::setVolume(int left, int right) -{ - m_left = left; - m_right = right; - emit volumeChanged(); -} - -void DBUSControl::setTime(int time) -{ - m_time = time; - emit timeChanged(); -} - -SongInfo *DBUSControl::info() -{ - return &m_song; -} - -uint DBUSControl::state() -{ - return m_state; -} - -int DBUSControl::elapsedTime() -{ - return m_time; -} - int DBUSControl::leftVolume() { return m_left; diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.h b/src/plugins/General/dbuscontrol/dbuscontrol.h index 61f369bb7..9079f3e27 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrol.h +++ b/src/plugins/General/dbuscontrol/dbuscontrol.h @@ -34,20 +34,10 @@ class DBUSControl : public General { Q_OBJECT public: - DBUSControl(Control *control, QObject *parent = 0); + DBUSControl(QObject *parent = 0); ~DBUSControl(); - //general api - void setState(const uint& state); - void setSongInfo(const SongInfo &song); - void setVolume(int left, int right); - void setTime(int time); - //helper functions - SongInfo *info(); - uint state(); - int elapsedTime(); - signals: void stateChanged(); void timeChanged(); @@ -61,7 +51,6 @@ public slots: private: DBUSAdaptor *m_adaptor; int m_left, m_right; - SongInfo m_song; uint m_state; int m_time; }; diff --git a/src/plugins/General/dbuscontrol/dbuscontrol.pro b/src/plugins/General/dbuscontrol/dbuscontrol.pro index ec97a6b23..ca13031f8 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrol.pro +++ b/src/plugins/General/dbuscontrol/dbuscontrol.pro @@ -40,5 +40,5 @@ SOURCES += dbuscontrolfactory.cpp \ INCLUDEPATH += ../../../../src -LIBS += -lqmmpui +LIBS += -lqmmpui -lqmmp diff --git a/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp b/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp index f3ad105b7..88c071d05 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp +++ b/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp @@ -33,9 +33,9 @@ const GeneralProperties DBUSControlFactory::properties() const return properties; } -General *DBUSControlFactory::create(Control *control, QObject *parent) +General *DBUSControlFactory::create(QObject *parent) { - return new DBUSControl(control, parent); + return new DBUSControl(parent); } QDialog *DBUSControlFactory::createConfigDialog(QWidget *) diff --git a/src/plugins/General/dbuscontrol/dbuscontrolfactory.h b/src/plugins/General/dbuscontrol/dbuscontrolfactory.h index bdd53feb1..af06b30bc 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrolfactory.h +++ b/src/plugins/General/dbuscontrol/dbuscontrolfactory.h @@ -27,7 +27,6 @@ #include <QTranslator> #include <qmmpui/general.h> -#include <qmmpui/control.h> #include <qmmpui/generalfactory.h> class DBUSControlFactory : public QObject, public GeneralFactory @@ -36,7 +35,7 @@ Q_OBJECT Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; - General *create(Control *control, QObject *parent); + General *create(QObject *parent); QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/General/notifier/CMakeLists.txt b/src/plugins/General/notifier/CMakeLists.txt index 38f93319c..0b67fd457 100644 --- a/src/plugins/General/notifier/CMakeLists.txt +++ b/src/plugins/General/notifier/CMakeLists.txt @@ -22,9 +22,10 @@ SET(QT_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../../ ) -# libqmmpui +# libqmmpui & libqmmp include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../) link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp) SET(libnotifier_SRCS settingsdialog.cpp @@ -61,6 +62,6 @@ QT4_WRAP_UI(libnotifier_UIS_H ${libnotifier_UIS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) ADD_LIBRARY(notifier SHARED ${libnotifier_SRCS} ${libnotifier_MOC_SRCS} ${libnotifier_UIS_H} ${libnotifier_RCC_SRCS}) -add_dependencies(notifier qmmpui) +add_dependencies(notifier qmmpui libqmmp) target_link_libraries(notifier ${QT_LIBRARIES} -lqmmpui) install(TARGETS notifier DESTINATION ${LIB_DIR}/qmmp/General) diff --git a/src/plugins/General/notifier/notifier.cpp b/src/plugins/General/notifier/notifier.cpp index 9f6006366..2d4f0e951 100644 --- a/src/plugins/General/notifier/notifier.cpp +++ b/src/plugins/General/notifier/notifier.cpp @@ -22,6 +22,7 @@ #include <QFile> #include <QDir> #include <QSettings> +#include <qmmp/soundcore.h> #include "popupwidget.h" #include "notifier.h" @@ -36,24 +37,27 @@ Notifier::Notifier(QObject *parent) m_desktop = settings.value("desktop_notification", TRUE).toBool(); m_psi = settings.value("psi_notification", FALSE).toBool(); settings.endGroup(); + m_core = SoundCore::instance(); + connect (m_core, SIGNAL(metaDataChanged ()), SLOT(showMetaData())); + connect (m_core, SIGNAL(stateChanged (Qmmp::State)), SLOT(setState(Qmmp::State))); } Notifier::~Notifier() {} -void Notifier::setState(const uint &state) +void Notifier::setState(Qmmp::State state) { - switch ((uint) state) + switch ((uint) state) { - case General::Playing: + case Qmmp::Playing: { break; } - case General::Paused: + case Qmmp::Paused: { break; } - case General::Stopped: + case Qmmp::Stopped: { QFile::remove(QDir::homePath()+"/.psi/tune"); break; @@ -61,20 +65,20 @@ void Notifier::setState(const uint &state) } } -void Notifier::setSongInfo(const SongInfo &song) +void Notifier::showMetaData() { if (m_popupWidget) delete m_popupWidget; if(m_desktop) - m_popupWidget = new PopupWidget(song); + m_popupWidget = new PopupWidget(); if(!m_psi) return; QFile file(QDir::homePath()+"/.psi/tune"); //psi file file.open(QIODevice::WriteOnly | QIODevice::Text); - file.write(song.title().toUtf8()+"\n"); - file.write(song.artist().toUtf8()+"\n"); - file.write(song.album().toUtf8()+"\n"); - file.write(QString("%1").arg(song.track()).toUtf8()+"\n"); - file.write(QString("%1").arg(song.length()).toUtf8()+"\n"); + file.write(m_core->metaData(Qmmp::TITLE).toUtf8()+"\n"); + file.write(m_core->metaData(Qmmp::ARTIST).toUtf8()+"\n"); + file.write(m_core->metaData(Qmmp::ALBUM).toUtf8()+"\n"); + file.write(m_core->metaData(Qmmp::TRACK).toUtf8()+"\n"); + file.write(QString("%1").arg(m_core->length()).toUtf8()+"\n"); file.close(); } diff --git a/src/plugins/General/notifier/notifier.h b/src/plugins/General/notifier/notifier.h index cc93b2ea5..a6702a26a 100644 --- a/src/plugins/General/notifier/notifier.h +++ b/src/plugins/General/notifier/notifier.h @@ -23,8 +23,10 @@ #include <QPointer> #include <qmmpui/general.h> +#include <qmmp/qmmp.h> class PopupWidget; +class SoundCore; /** @author Ilya Kotov <forkotov02@hotmail.ru> @@ -38,13 +40,15 @@ public: ~Notifier(); - void setState(const uint& state); - void setSongInfo(const SongInfo &song); +private slots: + void showMetaData(); + void setState(Qmmp::State state); private: QPointer<PopupWidget> m_popupWidget; bool m_desktop; bool m_psi; + SoundCore *m_core; }; diff --git a/src/plugins/General/notifier/notifier.pro b/src/plugins/General/notifier/notifier.pro index 5654af7f6..825dc536a 100644 --- a/src/plugins/General/notifier/notifier.pro +++ b/src/plugins/General/notifier/notifier.pro @@ -11,7 +11,7 @@ QMAKE_CLEAN =$$PLUGINS_PREFIX/General/libnotifier.so TEMPLATE = lib QMAKE_LIBDIR += ../../../../lib -LIBS += -lqmmpui +LIBS += -lqmmpui -lqmmp TRANSLATIONS = translations/notifier_plugin_cs.ts \ translations/notifier_plugin_de.ts \ diff --git a/src/plugins/General/notifier/notifierfactory.cpp b/src/plugins/General/notifier/notifierfactory.cpp index 5ef3ac325..fdb9b4463 100644 --- a/src/plugins/General/notifier/notifierfactory.cpp +++ b/src/plugins/General/notifier/notifierfactory.cpp @@ -34,7 +34,7 @@ const GeneralProperties NotifierFactory::properties() const return properties; } -General *NotifierFactory::create(Control*, QObject *parent) +General *NotifierFactory::create(QObject *parent) { return new Notifier(parent); } diff --git a/src/plugins/General/notifier/notifierfactory.h b/src/plugins/General/notifier/notifierfactory.h index 84039ede6..68c22bbde 100644 --- a/src/plugins/General/notifier/notifierfactory.h +++ b/src/plugins/General/notifier/notifierfactory.h @@ -28,7 +28,6 @@ #include <QDialog> #include <qmmpui/general.h> -#include <qmmpui/control.h> #include <qmmpui/generalfactory.h> class NotifierFactory : public QObject, public GeneralFactory @@ -37,7 +36,7 @@ Q_OBJECT Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; - General *create(Control*, QObject *parent); + General *create(QObject *parent); QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/General/notifier/popupwidget.cpp b/src/plugins/General/notifier/popupwidget.cpp index c6ac1fc7a..8e640abdf 100644 --- a/src/plugins/General/notifier/popupwidget.cpp +++ b/src/plugins/General/notifier/popupwidget.cpp @@ -26,21 +26,25 @@ #include <QPalette> #include <QSettings> #include <QDir> +#include <qmmp/soundcore.h> #include "popupwidget.h" -PopupWidget::PopupWidget(const SongInfo &song, QWidget *parent) +PopupWidget::PopupWidget(QWidget *parent) : QFrame(parent) { setWindowFlags(Qt::X11BypassWindowManagerHint | - Qt::WindowStaysOnTopHint); + Qt::WindowStaysOnTopHint | Qt::Window); setFrameStyle(QFrame::Box | QFrame::Plain); - QString title = song.title(); - if(title.isEmpty()) - title = song.path().section('/',-1); - title.append(" "); - if (song.length() > 0) - title.append(QString("(%1:%2)").arg(song.length()/60).arg(song.length()%60, 2, 10, QChar('0'))); + SoundCore *core = SoundCore::instance(); + QString title = core->metaData(Qmmp::TITLE); + if (title.isEmpty()) + title = core->metaData(Qmmp::URL).section('/',-1); + if (core->length() > 0) + { + title.append(" "); + title.append(QString("(%1:%2)").arg(core->length()/60).arg(core->length()%60, 2, 10, QChar('0'))); + } QHBoxLayout *hlayout = new QHBoxLayout(this); QLabel *pixlabel = new QLabel(this); @@ -52,9 +56,9 @@ PopupWidget::PopupWidget(const SongInfo &song, QWidget *parent) QLabel *label1 = new QLabel("<b>"+title+"</b>", this); vlayout->addWidget(label1); - QString info = song.artist(); - if (!info.isEmpty() && !song.album().isEmpty()) - info.append(" - " + song.album()); + QString info = core->metaData(Qmmp::ARTIST); + if (!info.isEmpty() && !core->metaData(Qmmp::ALBUM).isEmpty()) + info.append(" - " + core->metaData(Qmmp::ALBUM)); if (!info.isEmpty()) { QLabel *label2 = new QLabel(info, this); diff --git a/src/plugins/General/notifier/popupwidget.h b/src/plugins/General/notifier/popupwidget.h index 62fd93cec..cfda202a5 100644 --- a/src/plugins/General/notifier/popupwidget.h +++ b/src/plugins/General/notifier/popupwidget.h @@ -23,8 +23,6 @@ #include <QWidget> #include <QFrame> -#include <qmmpui/songinfo.h> - /** @author Ilya Kotov <forkotov02@hotmail.ru> */ @@ -32,7 +30,7 @@ class PopupWidget : public QFrame { Q_OBJECT public: - PopupWidget(const SongInfo &song, QWidget *parent = 0); + PopupWidget(QWidget *parent = 0); ~PopupWidget(); diff --git a/src/plugins/General/statusicon/CMakeLists.txt b/src/plugins/General/statusicon/CMakeLists.txt index 62f49700a..cbaa6b3f2 100644 --- a/src/plugins/General/statusicon/CMakeLists.txt +++ b/src/plugins/General/statusicon/CMakeLists.txt @@ -22,9 +22,10 @@ SET(QT_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../../ ) -# libqmmpui +# libqmmpui & libqmmp include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../) link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp) SET(libstatusicon_SRCS settingsdialog.cpp @@ -59,6 +60,6 @@ QT4_WRAP_UI(libstatusicon_UIS_H ${libstatusicon_UIS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) ADD_LIBRARY(statusicon SHARED ${libstatusicon_SRCS} ${libstatusicon_MOC_SRCS} ${libstatusicon_UIS_H} ${libstatusicon_RCC_SRCS}) -add_dependencies(statusicon qmmpui) -target_link_libraries(statusicon ${QT_LIBRARIES} -lqmmpui) +add_dependencies(statusicon qmmpui libqmmp) +target_link_libraries(statusicon ${QT_LIBRARIES} -lqmmpui -lqmmp) install(TARGETS statusicon DESTINATION ${LIB_DIR}/qmmp/General) diff --git a/src/plugins/General/statusicon/statusicon.cpp b/src/plugins/General/statusicon/statusicon.cpp index 4946a4ba2..b3e49f2cb 100644 --- a/src/plugins/General/statusicon/statusicon.cpp +++ b/src/plugins/General/statusicon/statusicon.cpp @@ -23,26 +23,27 @@ #include <QDir> #include <QTimer> #include <QCoreApplication> -#include <qmmpui/control.h> + +#include <qmmp/soundcore.h> #include "statusicon.h" -StatusIcon::StatusIcon(Control *control, QObject *parent) +StatusIcon::StatusIcon(QObject *parent) : General(parent) { - m_control = control; m_tray = new QSystemTrayIcon(this); connect(m_tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayActivated(QSystemTrayIcon::ActivationReason))); m_tray->setIcon ( QIcon(":/tray_stop.png")); m_tray->show(); + m_core = SoundCore::instance(); QMenu *menu = new QMenu(qobject_cast<QWidget *>(parent)); - menu->addAction(tr("Play"), control, SLOT(play())); - menu->addAction(tr("Pause"), control, SLOT(pause())); - menu->addAction(tr("Stop"), control, SLOT(stop())); - menu->addAction(tr("Next"), control, SLOT(next())); - menu->addAction(tr("Previous"), control, SLOT(previous())); + menu->addAction(tr("Play"), this, SLOT(play())); + menu->addAction(tr("Pause"), m_core, SLOT(pause())); + menu->addAction(tr("Stop"), m_core, SLOT(stop())); + /*menu->addAction(tr("Next"), control, SLOT(next())); + menu->addAction(tr("Previous"), control, SLOT(previous()));*/ menu->addSeparator(); - menu->addAction(tr("Exit"), control, SLOT(exit())); + menu->addAction(tr("Exit"), this, SLOT(exit())); m_tray->setContextMenu(menu); QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); @@ -53,30 +54,30 @@ StatusIcon::StatusIcon(Control *control, QObject *parent) m_hideToTray = settings.value("hide_on_close", FALSE).toBool(); settings.endGroup(); m_enabled = FALSE; + connect (m_core, SIGNAL(metaDataChanged ()), SLOT(showMetaData())); + connect (m_core, SIGNAL(stateChanged (Qmmp::State)), SLOT(setState(Qmmp::State))); QTimer::singleShot(200, this, SLOT(enable())); - m_state = General::Stopped; } StatusIcon::~StatusIcon() {} -void StatusIcon::setState(const uint &state) +void StatusIcon::setState(Qmmp::State state) { - m_state = state; switch ((uint) state) { - case General::Playing: + case Qmmp::Playing: { m_tray->setIcon(QIcon(":/tray_play.png")); break; } - case General::Paused: + case Qmmp::Paused: { m_tray->setIcon(QIcon(":/tray_pause.png")); break; } - case General::Stopped: + case Qmmp::Stopped: { m_tray->setIcon(QIcon(":/tray_stop.png")); break; @@ -84,17 +85,16 @@ void StatusIcon::setState(const uint &state) } } -void StatusIcon::setSongInfo(const SongInfo &song) +void StatusIcon::showMetaData() { - if(!m_enabled) + if (!m_enabled) return; - QString message = song.artist() + " - " +song.title(); - if (song.artist().isEmpty()) - message = song.title(); - if (song.title().isEmpty()) - message = song.artist(); - if (song.artist().isEmpty() && song.title().isEmpty()) - message = song.path().section('/',-1); + QString message = m_core->metaData(Qmmp::ARTIST) + " - " + m_core->metaData(Qmmp::TITLE); + if (message.startsWith (" - ") || message.endsWith (" - ")) + message.remove(" - "); + if (message.isEmpty()) + message = m_core->metaData(Qmmp::URL).section('/',-1); + if (m_showMessage) m_tray->showMessage (tr("Now Playing"), message, QSystemTrayIcon::Information, m_messageDelay); @@ -105,13 +105,13 @@ void StatusIcon::setSongInfo(const SongInfo &song) void StatusIcon::trayActivated(QSystemTrayIcon::ActivationReason reason) { if (reason == QSystemTrayIcon::Trigger) - m_control->toggleVisibility(); + toggleVisibility(); else if (reason == QSystemTrayIcon::MiddleClick) { - if(m_state == General::Stopped) - m_control->play(); + if (SoundCore::instance()->state() == Qmmp::Stopped) + play(); else - m_control->pause(); + m_core->pause(); } } diff --git a/src/plugins/General/statusicon/statusicon.h b/src/plugins/General/statusicon/statusicon.h index b6d8a3e04..be65500f4 100644 --- a/src/plugins/General/statusicon/statusicon.h +++ b/src/plugins/General/statusicon/statusicon.h @@ -21,10 +21,12 @@ #define STATUSICON_H #include <QSystemTrayIcon> +#include <QMap> #include <qmmpui/general.h> +#include <qmmp/qmmp.h> -class Control; +class SoundCore; /** @author Ilya Kotov <forkotov02@hotmail.ru> @@ -34,14 +36,13 @@ class StatusIcon : public General { Q_OBJECT public: - StatusIcon(Control *control, QObject *parent = 0); + StatusIcon(QObject *parent = 0); ~StatusIcon(); - void setState(const uint& state); - void setSongInfo(const SongInfo &song); - private slots: + void showMetaData(); + void setState(Qmmp::State state); void trayActivated(QSystemTrayIcon::ActivationReason); void enable(); @@ -52,9 +53,7 @@ private: bool m_hideToTray; bool m_enabled; int m_messageDelay; - Control *m_control; - uint m_state; - + SoundCore *m_core; }; #endif diff --git a/src/plugins/General/statusicon/statusicon.pro b/src/plugins/General/statusicon/statusicon.pro index bad3ba7e0..8def7d140 100644 --- a/src/plugins/General/statusicon/statusicon.pro +++ b/src/plugins/General/statusicon/statusicon.pro @@ -11,7 +11,7 @@ QMAKE_CLEAN =$$PLUGINS_PREFIX/General/libstatusicon.so TEMPLATE = lib QMAKE_LIBDIR += ../../../../lib -LIBS += -lqmmpui +LIBS += -lqmmpui -lqmmp TRANSLATIONS = translations/statusicon_plugin_cs.ts \ translations/statusicon_plugin_de.ts \ diff --git a/src/plugins/General/statusicon/statusiconfactory.cpp b/src/plugins/General/statusicon/statusiconfactory.cpp index b25d03ceb..2b56d7c82 100644 --- a/src/plugins/General/statusicon/statusiconfactory.cpp +++ b/src/plugins/General/statusicon/statusiconfactory.cpp @@ -34,9 +34,9 @@ const GeneralProperties StatusIconFactory::properties() const return properties; } -General *StatusIconFactory::create(Control *control, QObject *parent) +General *StatusIconFactory::create(QObject *parent) { - return new StatusIcon(control, parent); + return new StatusIcon(parent); } QDialog *StatusIconFactory::createConfigDialog(QWidget *parent) diff --git a/src/plugins/General/statusicon/statusiconfactory.h b/src/plugins/General/statusicon/statusiconfactory.h index bb75f8843..c2dc76bc5 100644 --- a/src/plugins/General/statusicon/statusiconfactory.h +++ b/src/plugins/General/statusicon/statusiconfactory.h @@ -28,7 +28,6 @@ #include <QDialog> #include <qmmpui/general.h> -#include <qmmpui/control.h> #include <qmmpui/generalfactory.h> class StatusIconFactory : public QObject, public GeneralFactory @@ -37,7 +36,7 @@ Q_OBJECT Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; - General *create(Control *control, QObject *parent); + General *create(QObject *parent); QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); |
