aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/statusicon
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-11-24 21:54:59 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-11-24 21:54:59 +0000
commita9946929bc45b96acd171a8137600277d122ccd9 (patch)
tree5e675c6dbc697ac80ed3920c768c7fd6c328df0f /src/plugins/General/statusicon
parent52cdbf3b10333908693f21a7c04ff7983baf923e (diff)
downloadqmmp-a9946929bc45b96acd171a8137600277d122ccd9.tar.gz
qmmp-a9946929bc45b96acd171a8137600277d122ccd9.tar.bz2
qmmp-a9946929bc45b96acd171a8137600277d122ccd9.zip
general api cleanup
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@631 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/statusicon')
-rw-r--r--src/plugins/General/statusicon/CMakeLists.txt7
-rw-r--r--src/plugins/General/statusicon/statusicon.cpp56
-rw-r--r--src/plugins/General/statusicon/statusicon.h15
-rw-r--r--src/plugins/General/statusicon/statusicon.pro2
-rw-r--r--src/plugins/General/statusicon/statusiconfactory.cpp4
-rw-r--r--src/plugins/General/statusicon/statusiconfactory.h3
6 files changed, 43 insertions, 44 deletions
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);