diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-03-12 11:40:06 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-03-12 11:40:06 +0000 |
| commit | 8964bc77125b82620bcd283ee51e06032bcab235 (patch) | |
| tree | 20ede793394353e6cdde2a662ff823c9a8e099da /src/plugins/General/scrobbler | |
| parent | 35b22b949c5115a148e6bcb7eaa8e13b14f1a67f (diff) | |
| download | qmmp-8964bc77125b82620bcd283ee51e06032bcab235.tar.gz qmmp-8964bc77125b82620bcd283ee51e06032bcab235.tar.bz2 qmmp-8964bc77125b82620bcd283ee51e06032bcab235.zip | |
scrobbler plugin: added pause handling (patch by Ferdinand Vesely) (Closes issue 578)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3308 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/scrobbler')
| -rw-r--r-- | src/plugins/General/scrobbler/lastfmscrobbler.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/General/scrobbler/lastfmscrobbler.cpp b/src/plugins/General/scrobbler/lastfmscrobbler.cpp index ba414f58b..2a449c410 100644 --- a/src/plugins/General/scrobbler/lastfmscrobbler.cpp +++ b/src/plugins/General/scrobbler/lastfmscrobbler.cpp @@ -123,17 +123,29 @@ LastfmScrobbler::~LastfmScrobbler() void LastfmScrobbler::setState(Qmmp::State state) { + static Qmmp::State previousState = state; + static int elapsed = 0; m_state = state; switch ((uint) state) { case Qmmp::Playing: - m_start_ts = QDateTime::currentDateTime().toTime_t(); + if (previousState != Qmmp::Paused) + { + qDebug("LastfmScrobbler: new song started"); + m_start_ts = QDateTime::currentDateTime().toTime_t(); + elapsed = 0; + } + else + { + qDebug("LastfmScrobbler: resuming after pause, %d seconds played", elapsed / 1000); + } m_time->restart(); 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))) - && (m_song.length() > MIN_SONG_LENGTH)) + && ((elapsed / 1000 > 240) || (elapsed / 1000 > int(m_song.length()/2))) + && (m_song.length() > MIN_SONG_LENGTH)) { m_song.setTimeStamp(m_start_ts); m_cachedSongs << m_song; @@ -147,9 +159,14 @@ void LastfmScrobbler::setState(Qmmp::State state) if (!m_session.isEmpty() && !m_submitReply) submit(); break; + case Qmmp::Paused: + elapsed += m_time->restart(); + qDebug("LastfmScrobbler: pausing after %d seconds played", elapsed / 1000); + break; default: ; } + previousState = state; } void LastfmScrobbler::updateMetaData() |
