diff --git a/src/libtomahawk/database/databasecommand_logplayback.cpp b/src/libtomahawk/database/databasecommand_logplayback.cpp index 0b7998b1e..2535d3545 100644 --- a/src/libtomahawk/database/databasecommand_logplayback.cpp +++ b/src/libtomahawk/database/databasecommand_logplayback.cpp @@ -36,8 +36,8 @@ using namespace Tomahawk; void DatabaseCommand_LogPlayback::postCommitHook() { - connect( this, SIGNAL( trackPlaying( Tomahawk::query_ptr ) ), - source().data(), SLOT( onPlaybackStarted( Tomahawk::query_ptr ) ), Qt::QueuedConnection ); + connect( this, SIGNAL( trackPlaying( Tomahawk::query_ptr, unsigned int ) ), + source().data(), SLOT( onPlaybackStarted( Tomahawk::query_ptr, unsigned int ) ), Qt::QueuedConnection ); connect( this, SIGNAL( trackPlayed( Tomahawk::query_ptr ) ), source().data(), SLOT( onPlaybackFinished( Tomahawk::query_ptr ) ), Qt::QueuedConnection ); @@ -60,7 +60,7 @@ DatabaseCommand_LogPlayback::postCommitHook() // if the play time is more than 10 minutes in the past, ignore else if ( m_action == Started && QDateTime::fromTime_t( playtime() ).secsTo( QDateTime::currentDateTime() ) < STARTED_THRESHOLD ) { - emit trackPlaying( q ); + emit trackPlaying( q, m_trackDuration ); } if ( source()->isLocal() ) diff --git a/src/libtomahawk/database/databasecommand_logplayback.h b/src/libtomahawk/database/databasecommand_logplayback.h index 9157a5afc..f7df57b61 100644 --- a/src/libtomahawk/database/databasecommand_logplayback.h +++ b/src/libtomahawk/database/databasecommand_logplayback.h @@ -37,6 +37,7 @@ Q_PROPERTY( QString artist READ artist WRITE setArtist ) Q_PROPERTY( QString track READ track WRITE setTrack ) Q_PROPERTY( unsigned int playtime READ playtime WRITE setPlaytime ) Q_PROPERTY( unsigned int secsPlayed READ secsPlayed WRITE setSecsPlayed ) +Q_PROPERTY( unsigned int trackDuration READ trackDuration WRITE setTrackDuration ) Q_PROPERTY( int action READ action WRITE setAction ) public: @@ -47,13 +48,14 @@ public: }; explicit DatabaseCommand_LogPlayback( QObject* parent = 0 ) - : DatabaseCommandLoggable( parent ) + : DatabaseCommandLoggable( parent ), m_playtime( 0 ), m_secsPlayed( 0 ), m_trackDuration( 0 ) {} explicit DatabaseCommand_LogPlayback( const Tomahawk::result_ptr& result, Action action, unsigned int secsPlayed = 0, QObject* parent = 0 ) : DatabaseCommandLoggable( parent ), m_result( result ), m_secsPlayed( secsPlayed ), m_action( action ) { m_playtime = QDateTime::currentDateTimeUtc().toTime_t(); + m_trackDuration = result->duration(); setSource( SourceList::instance()->getLocal() ); setArtist( result->artist()->name() ); @@ -82,11 +84,14 @@ public: unsigned int secsPlayed() const { return m_secsPlayed; } void setSecsPlayed( unsigned int i ) { m_secsPlayed = i; } + unsigned int trackDuration() const { return m_trackDuration; } + void setTrackDuration( unsigned int trackDuration ) { m_trackDuration = trackDuration; } + int action() const { return m_action; } void setAction( int a ) { m_action = (Action)a; } signals: - void trackPlaying( const Tomahawk::query_ptr& query ); + void trackPlaying( const Tomahawk::query_ptr& query, unsigned int duration ); void trackPlayed( const Tomahawk::query_ptr& query ); private: @@ -96,6 +101,7 @@ private: QString m_track; unsigned int m_playtime; unsigned int m_secsPlayed; + unsigned int m_trackDuration; Action m_action; }; diff --git a/src/libtomahawk/database/schema.sql b/src/libtomahawk/database/schema.sql index acef5cfd5..37ee49156 100644 --- a/src/libtomahawk/database/schema.sql +++ b/src/libtomahawk/database/schema.sql @@ -266,6 +266,7 @@ CREATE TABLE IF NOT EXISTS playback_log ( playtime INTEGER NOT NULL, -- when playback finished (timestamp) secs_played INTEGER NOT NULL ); + CREATE INDEX playback_log_source ON playback_log(source); CREATE INDEX playback_log_track ON playback_log(track); diff --git a/src/libtomahawk/database/schema.sql.h b/src/libtomahawk/database/schema.sql.h index 709e226cb..cd7c05b52 100644 --- a/src/libtomahawk/database/schema.sql.h +++ b/src/libtomahawk/database/schema.sql.h @@ -1,5 +1,5 @@ /* - This file was automatically generated from schema.sql on Thu Sep 29 17:28:17 EDT 2011. + This file was automatically generated from schema.sql on Wed Nov 16 22:47:16 EST 2011. */ static const char * tomahawk_schema_sql = diff --git a/src/libtomahawk/source.cpp b/src/libtomahawk/source.cpp index f88f1279f..6f6902871 100644 --- a/src/libtomahawk/source.cpp +++ b/src/libtomahawk/source.cpp @@ -59,7 +59,6 @@ Source::Source( int id, const QString& username ) m_online = true; } - m_currentTrackTimer.setInterval( 600000 ); // 10 minutes m_currentTrackTimer.setSingleShot( true ); connect( &m_currentTrackTimer, SIGNAL( timeout() ), this, SLOT( trackTimerFired() ) ); } @@ -306,11 +305,12 @@ Source::getPlaylistInterface() void -Source::onPlaybackStarted( const Tomahawk::query_ptr& query ) +Source::onPlaybackStarted( const Tomahawk::query_ptr& query, unsigned int duration ) { qDebug() << Q_FUNC_INFO << query->toString(); m_currentTrack = query; - m_currentTrackTimer.stop(); + m_currentTrackTimer.start( duration * 1000 + 900000 ); // duration comes in seconds + if ( m_playlistInterface.isNull() ) getPlaylistInterface(); emit playbackStarted( query ); diff --git a/src/libtomahawk/source.h b/src/libtomahawk/source.h index 95499f5d5..b45dacd7b 100644 --- a/src/libtomahawk/source.h +++ b/src/libtomahawk/source.h @@ -122,7 +122,7 @@ private slots: void onStateChanged( DBSyncConnection::State newstate, DBSyncConnection::State oldstate, const QString& info ); - void onPlaybackStarted( const Tomahawk::query_ptr& query ); + void onPlaybackStarted( const Tomahawk::query_ptr& query, unsigned int duration ); void onPlaybackFinished( const Tomahawk::query_ptr& query ); void trackTimerFired(); diff --git a/src/sip/jabber/jabber.cpp b/src/sip/jabber/jabber.cpp index af2f53fc0..d3df97984 100644 --- a/src/sip/jabber/jabber.cpp +++ b/src/sip/jabber/jabber.cpp @@ -667,7 +667,7 @@ void JabberPlugin::onPresenceReceived( const Jreen::RosterItem::Ptr &item, const Jreen::Capabilities::Ptr caps = presence.payload(); if( caps ) { - qDebug() << Q_FUNC_INFO << fulljid << "Running tomahawk: maybe" << "caps " << caps->node() << "requesting disco..."; +// qDebug() << Q_FUNC_INFO << fulljid << "Running tomahawk: maybe" << "caps " << caps->node() << "requesting disco..."; // request disco features QString node = caps->node() + '#' + caps->ver();