"haveValid",
"honorsSessionLimits",
"id",
+ "isFinished",
"isPrivate",
"leftUntilDone",
"name",
"errorString",
"eta",
"id",
+ "isFinished",
"leftUntilDone",
"name",
"peersGettingFromUs",
getStatusString( tr_benc * t, char * buf, size_t buflen )
{
int64_t status;
+ tr_bool boolVal;
if( !tr_bencDictFindInt( t, "status", &status ) )
{
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:
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:
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 )
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 );
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;
break;
default:
+ str = tor.activityString( );
break;
}
{ 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 },
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;
HONORS_SESSION_LIMITS,
PEER_LIMIT,
HASH_STRING,
+ IS_FINISHED,
IS_PRIVATE,
COMMENT,
CREATOR,
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; }