From 09494985d1e162c27f3b668dcaf8e6e153b9fe4d Mon Sep 17 00:00:00 2001 From: Tobias Rundstrom Date: Mon, 27 Feb 2006 22:40:40 -0300 Subject: [PATCH] Doubleclick something in the playlist makes it start playing if status is stopped --- PlaylistList.cpp | 15 +++++++++++++++ PlaylistList.h | 2 ++ XMMSHandler.cpp | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/PlaylistList.cpp b/PlaylistList.cpp index b8404b9..249dfcb 100644 --- a/PlaylistList.cpp +++ b/PlaylistList.cpp @@ -53,6 +53,7 @@ PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent) m_selected = new QList; m_itemmap = new QHash; m_offset = 0; + m_status = XMMS_PLAYBACK_STATUS_STOP; connect (xmmsh, SIGNAL(playlistList(QList)), this, SLOT(playlistList(QList))); @@ -65,6 +66,15 @@ PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent) connect (xmmsh, SIGNAL(playlistChanged(QHash)), this, SLOT(playlistChanged(QHash))); + + connect (xmmsh, SIGNAL(playbackStatusChanged(uint)), + this, SLOT(setStatus(uint))); +} + +void +PlaylistList::setStatus (uint s) +{ + m_status = s; } void @@ -174,6 +184,11 @@ PlaylistList::mouseDoubleClickEvent (QMouseEvent *event) } xmmsh->requestTrackChange (m_items->indexOf(it)); + if (m_status == XMMS_PLAYBACK_STATUS_STOP || + m_status == XMMS_PLAYBACK_STATUS_PAUSE) + { + xmmsh->play (); + } } void diff --git a/PlaylistList.h b/PlaylistList.h index d868e55..8978d78 100644 --- a/PlaylistList.h +++ b/PlaylistList.h @@ -24,6 +24,7 @@ class PlaylistList : public QWidget { void mediainfoChanged (uint, QHash); void playlistChanged (QHash); void currentID (uint); + void setStatus (uint); private: void paintEvent (QPaintEvent *event); @@ -45,6 +46,7 @@ class PlaylistList : public QWidget { int getFontH (void); int m_offset; int m_active; + uint m_status; }; class PlaylistItem { diff --git a/XMMSHandler.cpp b/XMMSHandler.cpp index 17994f4..ec1a3d9 100644 --- a/XMMSHandler.cpp +++ b/XMMSHandler.cpp @@ -47,6 +47,9 @@ XMMSHandler::XMMSHandler (void) : sigc::trackable () r = m_xmmsc->broadcast_playback_current_id (); r->connect (sigc::mem_fun (this, &XMMSHandler::playback_current_id)); + r = m_xmmsc->playback_status (); + r->connect (sigc::mem_fun (this, &XMMSHandler::playback_status)); + r = m_xmmsc->broadcast_playback_status (); r->connect (sigc::mem_fun (this, &XMMSHandler::playback_status)); @@ -151,6 +154,10 @@ XMMSHandler::playback_status (XMMSResultValue *res) res->getValue (&status); emit playbackStatusChanged (status); + + if (res->getClass() == XMMSC_RESULT_CLASS_DEFAULT) { + delete res; + } } void