From f40982fd580349e325c406666c2a754deb9f7ece Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 13 Mar 2013 06:07:55 +0000 Subject: scrobbler: added pause handling (libre.fm part) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3310 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/scrobbler/librefmscrobbler.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/General/scrobbler/librefmscrobbler.cpp b/src/plugins/General/scrobbler/librefmscrobbler.cpp index c4e624697..7ececc155 100644 --- a/src/plugins/General/scrobbler/librefmscrobbler.cpp +++ b/src/plugins/General/scrobbler/librefmscrobbler.cpp @@ -82,17 +82,24 @@ LibrefmScrobbler::~LibrefmScrobbler() void LibrefmScrobbler::setState(Qmmp::State state) { + static Qmmp::State previousState = state; + static int elapsed = 0; switch ((uint) state) { case Qmmp::Playing: - m_start_ts = QDateTime::currentDateTime().toTime_t(); - m_time->restart(); + if (previousState != Qmmp::Paused) + { + m_start_ts = QDateTime::currentDateTime().toTime_t(); + m_time->restart(); + elapsed = 0; + } if (!isReady() && !m_handshakeReply) handshake(); break; case Qmmp::Stopped: + elapsed += m_time->elapsed(); if (!m_song.metaData().isEmpty() - && ((m_time->elapsed ()/1000 > 240) || (m_time->elapsed ()/1000 > int(m_song.length()/2))) + && ((elapsed/1000 > 240) || (elapsed/1000 > int(m_song.length()/2))) && (m_song.length() > MIN_SONG_LENGTH)) { m_song.setTimeStamp(m_start_ts); @@ -106,6 +113,10 @@ void LibrefmScrobbler::setState(Qmmp::State state) if (isReady() && !m_submitReply) submit(); break; + case Qmmp::Paused: + elapsed += m_time->restart(); + qDebug("LibrefmScrobbler: pausing after %d seconds played", elapsed / 1000); + break; default: ; } -- cgit v1.2.3-13-gbd6f