[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