From: Charles Kerr Date: Tue, 6 Apr 2010 02:34:45 +0000 (+0000) Subject: (trunk) #1869 "New status for torrents that reached the seed ratio" -- implemented... X-Git-Tag: 2.00~264 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1efe08d34d001b6555203bf324ab104492bf7e72;p=transmission (trunk) #1869 "New status for torrents that reached the seed ratio" -- implemented for GTK+, Qt, and transmission-remote by Longinus00's patch --- diff --git a/daemon/remote.c b/daemon/remote.c index a29febcec..68a0cc8ae 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -337,6 +337,7 @@ static const char * details_keys[] = { "haveValid", "honorsSessionLimits", "id", + "isFinished", "isPrivate", "leftUntilDone", "name", @@ -369,6 +370,7 @@ static const char * list_keys[] = { "errorString", "eta", "id", + "isFinished", "leftUntilDone", "name", "peersGettingFromUs", @@ -1008,6 +1010,7 @@ static char* getStatusString( tr_benc * t, char * buf, size_t buflen ) { int64_t status; + tr_bool boolVal; if( !tr_bencDictFindInt( t, "status", &status ) ) { @@ -1016,7 +1019,10 @@ getStatusString( tr_benc * t, char * buf, size_t buflen ) else switch( status ) { case TR_STATUS_STOPPED: - tr_strlcpy( buf, "Stopped", buflen ); + if( tr_bencDictFindBool( t, "isFinished", &boolVal ) && boolVal ) + tr_strlcpy( buf, "Finished", buflen ); + else + tr_strlcpy( buf, "Stopped", buflen ); break; case TR_STATUS_CHECK_WAIT: diff --git a/gtk/torrent-cell-renderer.c b/gtk/torrent-cell-renderer.c index d2b167816..cf7958a14 100644 --- a/gtk/torrent-cell-renderer.c +++ b/gtk/torrent-cell-renderer.c @@ -202,7 +202,10 @@ getShortStatusString( const tr_torrent * tor, switch( torStat->activity ) { case TR_STATUS_STOPPED: - g_string_assign( gstr, _( "Paused" ) ); + if( torStat->finished ) + g_string_assign( gstr, _( "Finished" ) ); + else + g_string_assign( gstr, _( "Paused" ) ); break; case TR_STATUS_CHECK_WAIT: diff --git a/gtk/tr-torrent.c b/gtk/tr-torrent.c index 3f6b97388..936aa9129 100644 --- a/gtk/tr-torrent.c +++ b/gtk/tr-torrent.c @@ -215,64 +215,6 @@ tr_torrent_new_ctor( tr_session * session, return tor ? maketorrent( tor ) : NULL; } -char * -tr_torrent_status_str( TrTorrent * gtor ) -{ - char * top = NULL; - - const tr_stat * st = tr_torrent_stat( gtor ); - - const int tpeers = MAX ( st->peersConnected, 0 ); - const int upeers = MAX ( st->peersGettingFromUs, 0 ); - const int eta = st->eta; - - switch( st->activity ) - { - case TR_STATUS_CHECK_WAIT: - top = - g_strdup_printf( _( "Waiting to verify local data (%.1f%% tested)" ), - tr_truncd( 100 * st->recheckProgress, 1 ) ); - break; - - case TR_STATUS_CHECK: - top = - g_strdup_printf( _( "Verifying local data (%.1f%% tested)" ), - tr_truncd( 100 * st->recheckProgress, 1 ) ); - break; - - case TR_STATUS_DOWNLOAD: - - if( eta < 0 ) - top = g_strdup_printf( _( "Remaining time unknown" ) ); - else - { - char timestr[128]; - tr_strltime( timestr, eta, sizeof( timestr ) ); - /* %s is # of minutes */ - top = g_strdup_printf( _( "%1$s remaining" ), timestr ); - } - break; - - case TR_STATUS_SEED: - top = g_strdup_printf( - ngettext( "Seeding to %1$'d of %2$'d connected peer", - "Seeding to %1$'d of %2$'d connected peers", - tpeers ), - upeers, tpeers ); - break; - - case TR_STATUS_STOPPED: - top = g_strdup( _( "Stopped" ) ); - break; - - default: - top = g_strdup( "???" ); - break; - } - - return top; -} - void tr_torrent_set_remove_flag( TrTorrent * gtor, gboolean do_remove ) diff --git a/gtk/tr-torrent.h b/gtk/tr-torrent.h index f01e86cc7..e51586290 100644 --- a/gtk/tr-torrent.h +++ b/gtk/tr-torrent.h @@ -65,8 +65,6 @@ const tr_stat *tr_torrent_stat( TrTorrent *tor ); const tr_info *tr_torrent_info( TrTorrent *tor ); -char* tr_torrent_status_str( TrTorrent * tor ); - void tr_torrent_delete_files( TrTorrent * tor ); void tr_torrent_open_folder( TrTorrent * tor ); diff --git a/qt/torrent-delegate.cc b/qt/torrent-delegate.cc index 1713ecd12..9352c5938 100644 --- a/qt/torrent-delegate.cc +++ b/qt/torrent-delegate.cc @@ -182,14 +182,6 @@ TorrentDelegate :: shortStatusString( const Torrent& tor ) const switch( tor.getActivity( ) ) { - case TR_STATUS_STOPPED: - str = tr( "Paused" ); - break; - - case TR_STATUS_CHECK_WAIT: - str = tr( "Waiting to verify local data" ); - break; - case TR_STATUS_CHECK: str = tr( "Verifying local data (%1% tested)" ).arg( tor.getVerifyProgress()*100.0, 0, 'f', 1 ); break; @@ -202,6 +194,7 @@ TorrentDelegate :: shortStatusString( const Torrent& tor ) const break; default: + str = tor.activityString( ); break; } diff --git a/qt/torrent.cc b/qt/torrent.cc index c1744372e..6698bf154 100644 --- a/qt/torrent.cc +++ b/qt/torrent.cc @@ -96,6 +96,7 @@ Torrent :: myProperties[] = { HONORS_SESSION_LIMITS, "honorsSessionLimits", QVariant::Bool, STAT_EXTRA }, { PEER_LIMIT, "peer-limit", QVariant::Int, STAT_EXTRA }, { HASH_STRING, "hashString", QVariant::String, INFO }, + { IS_FINISHED, "isFinished", QVariant::Bool, STAT }, { IS_PRIVATE, "isPrivate", QVariant::Bool, INFO }, { COMMENT, "comment", QVariant::String, INFO }, { CREATOR, "creator", QVariant::String, INFO }, @@ -675,7 +676,7 @@ Torrent :: activityString( ) const case TR_STATUS_CHECK: str = tr( "Verifying local data" ); break; case TR_STATUS_DOWNLOAD: str = tr( "Downloading" ); break; case TR_STATUS_SEED: str = tr( "Seeding" ); break; - case TR_STATUS_STOPPED: str = tr( "Paused" ); break; + case TR_STATUS_STOPPED: str = isFinished() ? tr( "Finished" ): tr( "Paused" ); break; } return str; diff --git a/qt/torrent.h b/qt/torrent.h index 8b0ce1ff2..b96dcf442 100644 --- a/qt/torrent.h +++ b/qt/torrent.h @@ -159,6 +159,7 @@ class Torrent: public QObject HONORS_SESSION_LIMITS, PEER_LIMIT, HASH_STRING, + IS_FINISHED, IS_PRIVATE, COMMENT, CREATOR, @@ -293,6 +294,7 @@ class Torrent: public QObject public: QString activityString( ) const; tr_torrent_activity getActivity( ) const { return (tr_torrent_activity) getInt( ACTIVITY ); } + bool isFinished( ) const { return getBool( IS_FINISHED ); } bool isPaused( ) const { return getActivity( ) == TR_STATUS_STOPPED; } bool isVerifying( ) const { return getActivity( ) == TR_STATUS_CHECK; } bool isDownloading( ) const { return getActivity( ) == TR_STATUS_DOWNLOAD; }