[prev in list] [next in list] [prev in thread] [next in thread]
List: mythtv-dev
Subject: [mythtv] Fwd: Hooking up to TrackChangeEvent in MythMusic?
From: Jonathan Martens <jonathan () snetram ! nl>
Date: 2012-03-29 21:43:55
Message-ID: 4F74D79B.6080300 () snetram ! nl
[Download RAW message or body]
Hi
I have finally found some time to try and start coding on a test case for LastFM \
scrobbling support and am wondering how to hook a class up to the TrackChangeEvent in \
MythMusic.
I have taken a look at how MythVisual is implemented and I have made changes \
analogue. My code compiles and runs, but when listening music I see no evidence of \
the Scrobbler::customEvent(event *) function being triggered.
I somehow need to add it as a listener I to the event I guess, but I am a bit lost on \
where and how to do that. Is there some documentation to be found on how to do this?
I have attached my changes so far as patches against recent trunk. Any pointers and \
tips are welcome.
Thanks in advance.
Jonathan
["0001-Create-Last.fm-scrobbler-skeleton.patch" (text/plain)]
From dd4879111bbe00aff0455477778768644e3653d8 Mon Sep 17 00:00:00 2001
From: Jonathan Martens <jonathan@lpt-093-cos6.snetram.nl>
Date: Thu, 29 Mar 2012 22:32:46 +0200
Subject: [PATCH 1/3] Create Last.fm scrobbler skeleton
---
mythplugins/mythmusic/mythmusic/scrobbler.cpp | 17 +++++++++++++++++
mythplugins/mythmusic/mythmusic/scrobbler.h | 18 ++++++++++++++++++
2 files changed, 35 insertions(+), 0 deletions(-)
create mode 100644 mythplugins/mythmusic/mythmusic/scrobbler.cpp
create mode 100644 mythplugins/mythmusic/mythmusic/scrobbler.h
diff --git a/mythplugins/mythmusic/mythmusic/scrobbler.cpp \
b/mythplugins/mythmusic/mythmusic/scrobbler.cpp new file mode 100644
index 0000000..44a4e6c
--- /dev/null
+++ b/mythplugins/mythmusic/mythmusic/scrobbler.cpp
@@ -0,0 +1,17 @@
+#include "scrobbler.h"
+
+Scrobbler::Scrobbler()
+ : QObject(NULL)
+{
+ setObjectName("Scrobbler");
+}
+
+Scrobbler::~Scrobbler()
+{
+}
+
+void Scrobbler::customEvent(QEvent *event)
+{
+ LOG(VB_GENERAL, LOG_INFO, QString("Scrobbler::customEvent()"));
+}
+
diff --git a/mythplugins/mythmusic/mythmusic/scrobbler.h \
b/mythplugins/mythmusic/mythmusic/scrobbler.h new file mode 100644
index 0000000..a825a63
--- /dev/null
+++ b/mythplugins/mythmusic/mythmusic/scrobbler.h
@@ -0,0 +1,18 @@
+#ifndef __scrobbler_h
+#define __scrobbler_h
+
+#include "constants.h"
+#include "musicplayer.h"
+
+class Scrobbler : public QObject
+{
+ Q_OBJECT
+
+ public:
+ Scrobbler();
+ virtual ~Scrobbler();
+
+ void customEvent(QEvent *);
+};
+
+#endif // __scrobbler_h
--
1.7.1
["0002-Tie-in-Scrobbler-skeleton-into-MythMusic.patch" (text/plain)]
From 7c02236df68ab530b2279c7f75d5f3540bdab83b Mon Sep 17 00:00:00 2001
From: Jonathan Martens <jonathan@lpt-093-cos6.snetram.nl>
Date: Thu, 29 Mar 2012 22:34:21 +0200
Subject: [PATCH 2/3] Tie in Scrobbler skeleton into MythMusic
---
mythplugins/mythmusic/mythmusic/musicplayer.cpp | 27 +++++++++++++++++++++++
mythplugins/mythmusic/mythmusic/musicplayer.h | 4 +++
mythplugins/mythmusic/mythmusic/mythmusic.pro | 4 +++
3 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/mythplugins/mythmusic/mythmusic/musicplayer.cpp \
b/mythplugins/mythmusic/mythmusic/musicplayer.cpp index b0cccf5..16def4a 100644
--- a/mythplugins/mythmusic/mythmusic/musicplayer.cpp
+++ b/mythplugins/mythmusic/mythmusic/musicplayer.cpp
@@ -26,6 +26,7 @@
#include "mainvisual.h"
#include "miniplayer.h"
#include "playlistcontainer.h"
+#include "scrobbler.h"
// how long to wait before updating the lastplay and playcount fields
#define LASTPLAY_DELAY 15
@@ -195,6 +196,19 @@ void MusicPlayer::addVisual(MainVisual *visual)
}
}
+void MusicPlayer::addScrobbler(Scrobbler *scrobbler)
+{
+ if (scrobbler)
+ {
+ if (m_output)
+ {
+ m_output->addListener(scrobbler);
+ }
+
+// m_scrobblers.insert(scrobbler);
+ }
+}
+
void MusicPlayer::removeVisual(MainVisual *visual)
{
if (visual)
@@ -209,6 +223,19 @@ void MusicPlayer::removeVisual(MainVisual *visual)
}
}
+void MusicPlayer::removeScrobbler(Scrobbler *scrobbler)
+{
+ if (scrobbler)
+ {
+ if (m_output)
+ {
+ m_output->removeListener(scrobbler);
+ }
+
+// m_scrobblers.remove(scrobbler);
+ }
+}
+
void MusicPlayer::loadSettings(void )
{
QString resumestring = gCoreContext->GetSetting("ResumeMode", "off");
diff --git a/mythplugins/mythmusic/mythmusic/musicplayer.h \
b/mythplugins/mythmusic/mythmusic/musicplayer.h index b40585b..f2f244e 100644
--- a/mythplugins/mythmusic/mythmusic/musicplayer.h
+++ b/mythplugins/mythmusic/mythmusic/musicplayer.h
@@ -14,6 +14,7 @@ class AudioOutput;
class MainVisual;
class Playlist;
class CDWatcherThread;
+class Scrobbler;
class MusicPlayerEvent : public MythEvent
{
@@ -63,6 +64,9 @@ class MusicPlayer : public QObject, public MythObservable
void addVisual(MainVisual *visual);
void removeVisual(MainVisual *visual);
+ void addScrobbler(Scrobbler *scrobbler);
+ void removeScrobbler(Scrobbler *scrobbler);
+
void setCDDevice(const QString &dev) { m_CDdevice = dev; }
void toggleMute(void);
diff --git a/mythplugins/mythmusic/mythmusic/mythmusic.pro \
b/mythplugins/mythmusic/mythmusic/mythmusic.pro index 585d991..0bfe7f1 100644
--- a/mythplugins/mythmusic/mythmusic/mythmusic.pro
+++ b/mythplugins/mythmusic/mythmusic/mythmusic.pro
@@ -43,6 +43,8 @@ HEADERS += visualizerview.h searchview.h musicutils.h
HEADERS += generalsettings.h visualizationsettings.h
HEADERS += importsettings.h playersettings.h ratingsettings.h
+HEADERS += scrobbler.h
+
SOURCES += decoder.cpp
SOURCES += flacencoder.cpp main.cpp
SOURCES += mainvisual.cpp metadata.cpp playlist.cpp
@@ -65,6 +67,8 @@ SOURCES += visualizerview.cpp searchview.cpp musicutils.cpp
SOURCES += generalsettings.cpp visualizationsettings.cpp
SOURCES += importsettings.cpp playersettings.cpp ratingsettings.cpp
+SOURCES += scrobbler.cpp
+
cdio {
INCLUDEPATH -= $${SYSROOT}/usr/include/cdda
INCLUDEPATH *= $${SYSROOT}/usr/include/cdio
--
1.7.1
["0003-Make-the-customEvent-function-only-trigger-on-TrackC.patch" (text/plain)]
From b13b226717f48bb39e51183953d5d19532932e48 Mon Sep 17 00:00:00 2001
From: Jonathan Martens <jonathan@lpt-093-cos6.snetram.nl>
Date: Thu, 29 Mar 2012 23:28:58 +0200
Subject: [PATCH 3/3] Make the customEvent function only trigger on TrackChangeEvent
---
mythplugins/mythmusic/mythmusic/scrobbler.cpp | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/mythplugins/mythmusic/mythmusic/scrobbler.cpp \
b/mythplugins/mythmusic/mythmusic/scrobbler.cpp index 44a4e6c..3167fa4 100644
--- a/mythplugins/mythmusic/mythmusic/scrobbler.cpp
+++ b/mythplugins/mythmusic/mythmusic/scrobbler.cpp
@@ -12,6 +12,9 @@ Scrobbler::~Scrobbler()
void Scrobbler::customEvent(QEvent *event)
{
- LOG(VB_GENERAL, LOG_INFO, QString("Scrobbler::customEvent()"));
+ if (event->type() == MusicPlayerEvent::TrackChangeEvent)
+ {
+ LOG(VB_GENERAL, LOG_NOTICE, QString("Scrobbler::customEvent(QEvent *)"));
+ }
}
--
1.7.1
_______________________________________________
mythtv-dev mailing list
mythtv-dev@mythtv.org
http://www.mythtv.org/mailman/listinfo/mythtv-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic