diff --git a/gtk/torrent-cell-renderer.c b/gtk/torrent-cell-renderer.c
index cf41cacb5..7e43e3fa3 100644
--- a/gtk/torrent-cell-renderer.c
+++ b/gtk/torrent-cell-renderer.c
@@ -35,16 +35,20 @@ enum
***/
static char*
-getProgressString( const tr_info * info,
- const tr_stat * torStat )
+getProgressString( const tr_torrent * tor,
+ const tr_info * info,
+ const tr_stat * torStat )
{
const int isDone = torStat->leftUntilDone == 0;
const uint64_t haveTotal = torStat->haveUnchecked + torStat->haveValid;
const int isSeed = torStat->haveValid >= info->totalSize;
char buf1[32], buf2[32], buf3[32], buf4[32];
char * str;
+ double seedRatio;
+ gboolean hasSeedRatio;
if( !isDone )
+ {
str = g_strdup_printf(
/* %1$s is how much we've got,
%2$s is how much we'll have when done,
@@ -53,7 +57,9 @@ getProgressString( const tr_info * info,
tr_strlsize( buf1, haveTotal, sizeof( buf1 ) ),
tr_strlsize( buf2, torStat->sizeWhenDone, sizeof( buf2 ) ),
torStat->percentDone * 100.0 );
+ }
else if( !isSeed )
+ {
str = g_strdup_printf(
/* %1$s is how much we've got,
%2$s is the torrent's total size,
@@ -66,7 +72,22 @@ getProgressString( const tr_info * info,
torStat->percentComplete * 100.0,
tr_strlsize( buf3, torStat->uploadedEver, sizeof( buf3 ) ),
tr_strlratio( buf4, torStat->ratio, sizeof( buf4 ) ) );
- else
+ }
+ else if(( hasSeedRatio = tr_torrentGetSeedRatio( tor, &seedRatio )))
+ {
+ str = g_strdup_printf(
+ /* %1$s is the torrent's total size,
+ %2$s is how much we've uploaded,
+ %3$s is our upload-to-download ratio,
+ $4$s is the ratio we want to reach before we stop uploading */
+ _( "%1$s, uploaded %2$s (Ratio: %3$s Goal: %4$s)" ),
+ tr_strlsize( buf1, info->totalSize, sizeof( buf1 ) ),
+ tr_strlsize( buf2, torStat->uploadedEver, sizeof( buf2 ) ),
+ tr_strlratio( buf3, torStat->ratio, sizeof( buf3 ) ),
+ tr_strlratio( buf4, seedRatio, sizeof( buf4 ) ) );
+ }
+ else /* seeding w/o a ratio */
+ {
str = g_strdup_printf(
/* %1$s is the torrent's total size,
%2$s is how much we've uploaded,
@@ -75,9 +96,10 @@ getProgressString( const tr_info * info,
tr_strlsize( buf1, info->totalSize, sizeof( buf1 ) ),
tr_strlsize( buf2, torStat->uploadedEver, sizeof( buf2 ) ),
tr_strlratio( buf3, torStat->ratio, sizeof( buf3 ) ) );
+ }
/* add time when downloading */
- if( torStat->activity == TR_STATUS_DOWNLOAD )
+ if( hasSeedRatio || ( torStat->activity == TR_STATUS_DOWNLOAD ) )
{
const int eta = torStat->eta;
GString * gstr = g_string_new( str );
@@ -298,7 +320,7 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
else
{
int w1, h1;
- char * progressString = getProgressString( info, torStat );
+ char * progressString = getProgressString( tor, info, torStat );
str = g_markup_printf_escaped( "%s\n%s",
name, progressString );
g_object_set( text_renderer, "markup", str, NULL );
@@ -391,7 +413,7 @@ torrent_cell_renderer_render(
/* above the progressbar */
if( !p->minimal )
{
- char * progressString = getProgressString( info, torStat );
+ char * progressString = getProgressString( tor, info, torStat );
char * str = g_markup_printf_escaped(
"%s\n%s",
name, progressString );