summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Alan <alan@ajfx200.localdomain>2012-08-24 14:19:50 +0100
committerGravatar Alan <alan@ajfx200.localdomain>2012-08-24 14:19:50 +0100
commitb0ad42a97cc5fb962d229b9c9743989e2f47216f (patch)
treed0e6cb0619e391e6d347c76b844f6ad83421a85c /src
parente5e0975a6302924c06da9426fca637950011ed20 (diff)
consider seed ratios in the new cell renderer like Transmisson does, as well as some other scenarios so it behaves almost like the Transmission. lots of new fields added to the model for this.
Diffstat (limited to 'src')
-rw-r--r--src/requests.c2
-rw-r--r--src/torrent-cell-renderer.c157
-rw-r--r--src/torrent.c7
-rw-r--r--src/torrent.h3
-rw-r--r--src/trg-client.c15
-rw-r--r--src/trg-client.h2
-rw-r--r--src/trg-general-panel.c2
-rw-r--r--src/trg-main-window.c2
-rw-r--r--src/trg-torrent-model.c13
-rw-r--r--src/trg-torrent-model.h4
-rw-r--r--src/trg-torrent-tree-view.c14
-rw-r--r--src/trg-torrent-tree-view.h2
-rw-r--r--src/util.c5
-rw-r--r--src/util.h1
14 files changed, 173 insertions, 56 deletions
diff --git a/src/requests.c b/src/requests.c
index e5ec04d..d0e4222 100644
--- a/src/requests.c
+++ b/src/requests.c
@@ -170,7 +170,7 @@ JsonNode *torrent_get(gint64 id)
json_array_add_string_element(fields, FIELD_PEERS_GETTING_FROM_US);
json_array_add_string_element(fields, FIELD_PEERS_CONNECTED);
json_array_add_string_element(fields, FIELD_HAVEVALID);
- /* json_array_add_string_element(fields, FIELD_HAVEUNCHECKED); */
+ json_array_add_string_element(fields, FIELD_HAVEUNCHECKED);
json_array_add_string_element(fields, FIELD_RATEUPLOAD);
json_array_add_string_element(fields, FIELD_RATEDOWNLOAD);
json_array_add_string_element(fields, FIELD_STATUS);
diff --git a/src/torrent-cell-renderer.c b/src/torrent-cell-renderer.c
index 1d20f6f..bdac1d8 100644
--- a/src/torrent-cell-renderer.c
+++ b/src/torrent-cell-renderer.c
@@ -16,18 +16,25 @@
#include "hig.h"
#include "icons.h"
-#include "torrent-cell-renderer.h"
+#include "trg-client.h"
#include "torrent.h"
#include "util.h"
+#include "torrent-cell-renderer.h"
enum
{
P_STATUS = 1,
+ P_CLIENT,
P_RATIO,
+ P_SEEDRATIOLIMIT,
+ P_SEEDRATIOMODE,
P_DOWNLOADED,
+ P_HAVEVALID,
+ P_HAVEUNCHECKED,
P_ERROR,
P_NAME,
P_SIZEWHENDONE,
+ P_TOTALSIZE,
P_UPLOADED,
P_PERCENTCOMPLETE,
P_UPSPEED,
@@ -85,7 +92,10 @@ struct TorrentCellRendererPrivate
gint64 uploadedEver;
gint64 sizeWhenDone;
+ gint64 totalSize;
gint64 downloaded;
+ gint64 haveValid;
+ gint64 haveUnchecked;
gint64 upSpeed;
gint64 downSpeed;
gpointer json;
@@ -99,87 +109,103 @@ struct TorrentCellRendererPrivate
guint fileCount;
gint64 eta;
gint64 error;
+ gint64 seedRatioMode;
+ gdouble seedRatioLimit;
+ TrgClient *client;
gboolean compact;
};
+static gboolean getSeedRatio(TorrentCellRenderer *r, gdouble *ratio) {
+ struct TorrentCellRendererPrivate *p = r->priv;
+
+ if ((p->seedRatioMode == 0) && (trg_client_get_seed_ratio_limited(p->client) == TRUE)) {
+ *ratio = trg_client_get_seed_ratio_limit(p->client);
+ return TRUE;
+ } else if (p->seedRatioMode == 1) {
+ *ratio = p->seedRatioLimit;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
getProgressString( GString * gstr,
TorrentCellRenderer * r)
{
- struct TorrentCellRendererPrivate *priv = r->priv;
+ struct TorrentCellRendererPrivate *p = r->priv;
- //const int isSeed = st->haveValid >= info->totalSize;
+ const gint64 haveTotal = p->haveUnchecked + p->haveValid;
+ const int isSeed = p->haveValid >= p->totalSize;
char buf1[32], buf2[32], buf3[32], buf4[32], buf5[32], buf6[32];
- //double seedRatio;
- //const gboolean hasSeedRatio = tr_torrentGetSeedRatio( tor, &seedRatio );
+ double seedRatio;
+ const gboolean hasSeedRatio = getSeedRatio( r, &seedRatio );
- //TODO : use seed ratios
-
- if( priv->flags & TORRENT_FLAG_DOWNLOADING ) /* downloading */
+ if( p->flags & TORRENT_FLAG_DOWNLOADING ) /* downloading */
{
g_string_append_printf( gstr,
/* %1$s is how much we've got,
%2$s is how much we'll have when done,
%3$s%% is a percentage of the two */
- _( "%1$s of %2$s (%3$s%%)" ),
- tr_strlsize( buf1, priv->downloaded, sizeof( buf1 ) ),
- tr_strlsize( buf2, priv->sizeWhenDone, sizeof( buf2 ) ),
- tr_strlpercent( buf3, priv->done, sizeof( buf3 ) ) );
+ _( "%1$s of %2$s (%3$s)" ),
+ tr_strlsize( buf1, haveTotal, sizeof( buf1 ) ),
+ tr_strlsize( buf2, p->sizeWhenDone, sizeof( buf2 ) ),
+ tr_strlpercent( buf3, p->done, sizeof( buf3 ) ) );
}
- /*else if( isSeed )
+ else if( isSeed )
{
if( hasSeedRatio )
{
g_string_append_printf( gstr,
- _( "%1$s of %2$s (%3$s%%), uploaded %4$s (Ratio: %5$s Goal: %6$s)" ),
+ _( "%1$s of %2$s (%3$s), uploaded %4$s (Ratio: %5$s Goal: %6$s)" ),
tr_strlsize( buf1, haveTotal, sizeof( buf1 ) ),
- tr_strlsize( buf2, info->totalSize, sizeof( buf2 ) ),
- tr_strlpercent( buf3, st->percentComplete * 100.0, sizeof( buf3 ) ),
- tr_strlsize( buf4, st->uploadedEver, sizeof( buf4 ) ),
- tr_strlratio( buf5, st->ratio, sizeof( buf5 ) ),
+ tr_strlsize( buf2, p->totalSize, sizeof( buf2 ) ),
+ tr_strlpercent( buf3, p->done, sizeof( buf3 ) ),
+ tr_strlsize( buf4, p->uploadedEver, sizeof( buf4 ) ),
+ tr_strlratio( buf5, p->ratio, sizeof( buf5 ) ),
tr_strlratio( buf6, seedRatio, sizeof( buf6 ) ) );
}
else
{
g_string_append_printf( gstr,
- _( "%1$s of %2$s (%3$s%%), uploaded %4$s (Ratio: %5$s)" ),
- tr_strlsize( buf1, priv->downloaded, sizeof( buf1 ) ),
- tr_strlsize( buf2, priv->sizeWhenDone, sizeof( buf2 ) ),
- tr_strlpercent( buf3, priv->done, sizeof( buf3 ) ),
- tr_strlsize( buf4, priv->uploadedEver, sizeof( buf4 ) ),
- tr_strlratio( buf5, priv->ratio, sizeof( buf5 ) ) );
+ _( "%1$s of %2$s (%3$s), uploaded %4$s (Ratio: %5$s)" ),
+ tr_strlsize( buf1, haveTotal, sizeof( buf1 ) ),
+ tr_strlsize( buf2, p->totalSize, sizeof( buf2 ) ),
+ tr_strlpercent( buf3, p->done, sizeof( buf3 ) ),
+ tr_strlsize( buf4, p->uploadedEver, sizeof( buf4 ) ),
+ tr_strlratio( buf5, p->ratio, sizeof( buf5 ) ) );
}
- }*/
+ }
else /* seeding */
{
- /*if( hasSeedRatio )
+ if( hasSeedRatio )
{
g_string_append_printf( gstr,
_( "%1$s, uploaded %2$s (Ratio: %3$s Goal: %4$s)" ),
- tr_strlsize( buf1, info->totalSize, sizeof( buf1 ) ),
- tr_strlsize( buf2, st->uploadedEver, sizeof( buf2 ) ),
- tr_strlratio( buf3, st->ratio, sizeof( buf3 ) ),
+ tr_strlsize( buf1, p->totalSize, sizeof( buf1 ) ),
+ tr_strlsize( buf2, p->uploadedEver, sizeof( buf2 ) ),
+ tr_strlratio( buf3, p->ratio, sizeof( buf3 ) ),
tr_strlratio( buf4, seedRatio, sizeof( buf4 ) ) );
}
else
- { */
+ {
g_string_append_printf( gstr,
/* %1$s is the torrent's total size,
%2$s is how much we've uploaded,
%3$s is our upload-to-download ratio */
_( "%1$s, uploaded %2$s (Ratio: %3$s)" ),
- tr_strlsize( buf1, priv->sizeWhenDone, sizeof( buf1 ) ),
- tr_strlsize( buf2, priv->uploadedEver, sizeof( buf2 ) ),
- tr_strlratio( buf3, priv->ratio, sizeof( buf3 ) ) );
- //}
+ tr_strlsize( buf1, p->sizeWhenDone, sizeof( buf1 ) ),
+ tr_strlsize( buf2, p->uploadedEver, sizeof( buf2 ) ),
+ tr_strlratio( buf3, p->ratio, sizeof( buf3 ) ) );
+ }
}
/* add time when downloading */
- if( ( priv->flags & TORRENT_FLAG_DOWNLOADING ) )
- //|| ( hasSeedRatio && ( st->activity == TR_STATUS_SEED ) ) )
+ if( ( p->flags & TORRENT_FLAG_DOWNLOADING )
+ || ( hasSeedRatio && ( p->flags & TORRENT_FLAG_SEEDING ) ) )
{
- gint64 eta = priv->eta;
+ gint64 eta = p->eta;
g_string_append( gstr, " - " );
if( eta < 0 )
g_string_append( gstr, _( "Remaining time unknown" ) );
@@ -251,7 +277,7 @@ getShortStatusString( GString * gstr,
} else if (flags & TORRENT_FLAG_SEEDING_WAIT) {
g_string_append( gstr, _( "Queued for seeding" ) );
} else if (flags & TORRENT_FLAG_CHECKING) {
- g_string_append_printf( gstr, _( "Verifying data (%.1f%% tested)" ),
+ g_string_append_printf( gstr, _( "Verifying data (%.1f% tested)" ),
tr_truncd( priv->done * 100.0, 1 ) );
} else if ((flags & TORRENT_FLAG_DOWNLOADING) || (flags & TORRENT_FLAG_SEEDING)) {
char buf[512];
@@ -273,7 +299,6 @@ getStatusString( GString * gstr,
struct TorrentCellRendererPrivate *priv = r->priv;
//TODO: handle metadata for downloading
- //TODO: handle errors
if ( priv->error ) {
const char * fmt[] = { NULL, N_( "Tracker gave a warning: \"%s\"" ),
@@ -562,12 +587,21 @@ static void torrent_cell_renderer_set_property(GObject * object,
case P_STATUS:
p->flags = g_value_get_uint(v);
break;
+ case P_TOTALSIZE:
+ p->totalSize = g_value_get_int64(v);
+ break;
case P_SIZEWHENDONE:
p->sizeWhenDone = g_value_get_int64(v);
break;
case P_DOWNLOADED:
p->downloaded = g_value_get_int64(v);
break;
+ case P_HAVEVALID:
+ p->haveValid = g_value_get_int64(v);
+ break;
+ case P_HAVEUNCHECKED:
+ p->haveUnchecked = g_value_get_int64(v);
+ break;
case P_UPLOADED:
p->uploadedEver = g_value_get_int64(v);
break;
@@ -610,6 +644,15 @@ static void torrent_cell_renderer_set_property(GObject * object,
case P_COMPACT:
p->compact = g_value_get_boolean(v);
break;
+ case P_SEEDRATIOMODE:
+ p->seedRatioMode = g_value_get_int64(v);
+ break;
+ case P_SEEDRATIOLIMIT:
+ p->seedRatioLimit = g_value_get_double(v);
+ break;
+ case P_CLIENT:
+ p->client = g_value_get_pointer(v);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec);
break;
@@ -682,12 +725,30 @@ torrent_cell_renderer_class_init( TorrentCellRendererClass * klass )
"json",
G_PARAM_READWRITE ) );
+ g_object_class_install_property( gobject_class, P_CLIENT,
+ g_param_spec_pointer( "client", NULL,
+ "client",
+ G_PARAM_READWRITE ) );
+
+
g_object_class_install_property( gobject_class, P_RATIO,
g_param_spec_double( "ratio", NULL,
"ratio",
0, G_MAXDOUBLE, 0,
G_PARAM_READWRITE ) );
+ g_object_class_install_property( gobject_class, P_SEEDRATIOLIMIT,
+ g_param_spec_double( "seedRatioLimit", NULL,
+ "seedRatioLimit",
+ 0, G_MAXDOUBLE, 0,
+ G_PARAM_READWRITE ) );
+
+ g_object_class_install_property( gobject_class, P_SEEDRATIOMODE,
+ g_param_spec_int64( "seedRatioMode", NULL,
+ "seedRatioMode",
+ 0, 2, 0,
+ G_PARAM_READWRITE ) );
+
g_object_class_install_property( gobject_class, P_PERCENTCOMPLETE,
g_param_spec_double( "percentComplete", NULL,
"percentComplete",
@@ -695,6 +756,12 @@ torrent_cell_renderer_class_init( TorrentCellRendererClass * klass )
G_PARAM_READWRITE ) );
+ g_object_class_install_property( gobject_class, P_TOTALSIZE,
+ g_param_spec_int64( "totalSize", NULL,
+ "totalSize",
+ 0, G_MAXINT64, 0,
+ G_PARAM_READWRITE ) );
+
g_object_class_install_property( gobject_class, P_SIZEWHENDONE,
g_param_spec_int64( "sizeWhenDone", NULL,
"sizeWhenDone",
@@ -737,6 +804,18 @@ torrent_cell_renderer_class_init( TorrentCellRendererClass * klass )
0, G_MAXINT64, 0,
G_PARAM_READWRITE ) );
+ g_object_class_install_property( gobject_class, P_HAVEVALID,
+ g_param_spec_int64( "haveValid", NULL,
+ "haveValid",
+ 0, G_MAXINT64, 0,
+ G_PARAM_READWRITE ) );
+
+ g_object_class_install_property( gobject_class, P_HAVEUNCHECKED,
+ g_param_spec_int64( "haveUnchecked", NULL,
+ "haveUnchecked",
+ 0, G_MAXINT64, 0,
+ G_PARAM_READWRITE ) );
+
g_object_class_install_property( gobject_class, P_UPLOADED,
g_param_spec_int64( "uploaded", NULL,
"uploaded",
diff --git a/src/torrent.c b/src/torrent.c
index d605835..025118a 100644
--- a/src/torrent.c
+++ b/src/torrent.c
@@ -139,7 +139,12 @@ gboolean torrent_get_download_limited(JsonObject * t)
return json_object_get_boolean_member(t, FIELD_DOWNLOAD_LIMITED);
}
-gint64 torrent_get_size(JsonObject * t)
+gint64 torrent_get_total_size(JsonObject *t)
+{
+ return json_object_get_int_member(t, FIELD_TOTAL_SIZE);
+}
+
+gint64 torrent_get_size_when_done(JsonObject * t)
{
return json_object_get_int_member(t, FIELD_SIZEWHENDONE);
}
diff --git a/src/torrent.h b/src/torrent.h
index 1bafd14..163df39 100644
--- a/src/torrent.h
+++ b/src/torrent.h
@@ -44,7 +44,8 @@
#define TORRENT_ADD_FLAG_PAUSED (1 << 0) /* 0x01 */
#define TORRENT_ADD_FLAG_DELETE (1 << 1) /* 0x02 */
-gint64 torrent_get_size(JsonObject * t);
+gint64 torrent_get_total_size(JsonObject *t);
+gint64 torrent_get_size_when_done(JsonObject * t);
const gchar *torrent_get_name(JsonObject * t);
gint64 torrent_get_rate_down(JsonObject * t);
gint64 torrent_get_rate_up(JsonObject * t);
diff --git a/src/trg-client.c b/src/trg-client.c
index 77afe2d..970fb46 100644
--- a/src/trg-client.c
+++ b/src/trg-client.c
@@ -83,6 +83,8 @@ struct _TrgClientPrivate {
GPrivate *tlsKey;
gint configSerial;
GMutex *configMutex;
+ gboolean seedRatioLimited;
+ gdouble seedRatioLimit;
};
static void dispatch_async_threadfunc(trg_request * reqrsp,
@@ -203,6 +205,9 @@ void trg_client_set_session(TrgClient * tc, JsonObject * session)
priv->session = session;
json_object_ref(session);
+ priv->seedRatioLimit = session_get_seed_ratio_limit(session);
+ priv->seedRatioLimited = session_get_seed_ratio_limited(session);
+
g_signal_emit(tc, signals[TC_SESSION_UPDATED], 0, session);
}
@@ -696,3 +701,13 @@ gboolean trg_client_update_session(TrgClient *tc, GSourceFunc callback, gpointer
return dispatch_async(tc, session_get(), callback,
data);
}
+
+gdouble trg_client_get_seed_ratio_limit(TrgClient *tc)
+{
+ return tc->priv->seedRatioLimit;
+}
+
+gboolean trg_client_get_seed_ratio_limited(TrgClient *tc)
+{
+ return tc->priv->seedRatioLimited;
+}
diff --git a/src/trg-client.h b/src/trg-client.h
index 490ac9c..dc234d6 100644
--- a/src/trg-client.h
+++ b/src/trg-client.h
@@ -161,6 +161,8 @@ void trg_client_reset_failcount(TrgClient * tc);
void trg_client_inc_serial(TrgClient * tc);
void trg_client_inc_connid(TrgClient * tc);
gboolean trg_client_update_session(TrgClient *tc, GSourceFunc callback, gpointer data);
+gboolean trg_client_get_seed_ratio_limited(TrgClient *tc);
+gdouble trg_client_get_seed_ratio_limit(TrgClient *tc);
G_END_DECLS
#endif /* _TRG_CLIENT_H_ */
diff --git a/src/trg-general-panel.c b/src/trg-general-panel.c
index 79df46d..6fbb7e7 100644
--- a/src/trg-general-panel.c
+++ b/src/trg-general-panel.c
@@ -128,7 +128,7 @@ trg_general_panel_update(TrgGeneralPanel * panel, JsonObject * t,
sizeOfBuf = sizeof(buf);
- trg_strlsize(buf, torrent_get_size(t));
+ trg_strlsize(buf, torrent_get_size_when_done(t));
gtk_label_set_text(GTK_LABEL(priv->gen_size_label), buf);
trg_strlspeed(buf, torrent_get_rate_down(t) / disk_K);
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 3691828..5131a3c 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -1458,7 +1458,7 @@ static TrgTorrentTreeView
{
TrgMainWindowPrivate *priv = win->priv;
TrgTorrentTreeView *torrentTreeView =
- trg_torrent_tree_view_new(trg_client_get_prefs(priv->client),
+ trg_torrent_tree_view_new(priv->client,
model);
GtkTreeSelection *selection =
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index 60979aa..0499f05 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -22,7 +22,10 @@
#include <json-glib/json-glib.h>
#include <glib/gi18n.h>
+#ifdef HAVE_CONFIG_H
#include "config.h"
+#endif
+
#include "torrent.h"
#include "json.h"
#include "trg-torrent-model.h"
@@ -201,6 +204,8 @@ static void trg_torrent_model_init(TrgTorrentModel * self)
column_types[TORRENT_COLUMN_NAME] = G_TYPE_STRING;
column_types[TORRENT_COLUMN_ERROR] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_SIZEWHENDONE] = G_TYPE_INT64;
+ column_types[TORRENT_COLUMN_TOTALSIZE] = G_TYPE_INT64;
+ column_types[TORRENT_COLUMN_HAVE_UNCHECKED] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_PERCENTDONE] = G_TYPE_DOUBLE;
column_types[TORRENT_COLUMN_STATUS] = G_TYPE_STRING;
column_types[TORRENT_COLUMN_SEEDS] = G_TYPE_INT64;
@@ -229,6 +234,8 @@ static void trg_torrent_model_init(TrgTorrentModel * self)
column_types[TORRENT_COLUMN_FROMRESUME] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_FROMINCOMING] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_PEER_SOURCES] = G_TYPE_STRING;
+ column_types[TORRENT_COLUMN_SEED_RATIO_LIMIT] = G_TYPE_DOUBLE;
+ column_types[TORRENT_COLUMN_SEED_RATIO_MODE] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_PEERS_CONNECTED] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_PEERS_FROM_US] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_PEERS_TO_US] = G_TYPE_INT64;
@@ -478,7 +485,7 @@ update_torrent_iter(TrgTorrentModel * model,
TORRENT_COLUMN_DONE_DATE, torrent_get_done_date(t),
TORRENT_COLUMN_NAME, torrent_get_name(t),
TORRENT_COLUMN_ERROR, torrent_get_error(t),
- TORRENT_COLUMN_SIZEWHENDONE, torrent_get_size(t),
+ TORRENT_COLUMN_SIZEWHENDONE, torrent_get_size_when_done(t),
TORRENT_COLUMN_PERCENTDONE,
(newFlags & TORRENT_FLAG_CHECKING) ?
torrent_get_recheck_progress(t)
@@ -489,6 +496,8 @@ update_torrent_iter(TrgTorrentModel * model,
TORRENT_COLUMN_UPSPEED, upRate, TORRENT_COLUMN_ETA,
torrent_get_eta(t), TORRENT_COLUMN_UPLOADED,
uploaded, TORRENT_COLUMN_DOWNLOADED, downloaded,
+ TORRENT_COLUMN_TOTALSIZE, torrent_get_total_size(t),
+ TORRENT_COLUMN_HAVE_UNCHECKED, torrent_get_have_unchecked(t),
TORRENT_COLUMN_HAVE_VALID, haveValid,
TORRENT_COLUMN_FROMPEX, peerfrom_get_pex(pf),
TORRENT_COLUMN_FROMDHT, peerfrom_get_dht(pf),
@@ -507,6 +516,8 @@ update_torrent_iter(TrgTorrentModel * model,
torrent_get_peers_getting_from_us(t),
TORRENT_COLUMN_QUEUE_POSITION,
torrent_get_queue_position(t),
+ TORRENT_COLUMN_SEED_RATIO_LIMIT, torrent_get_seed_ratio_limit(t),
+ TORRENT_COLUMN_SEED_RATIO_MODE, torrent_get_seed_ratio_mode(t),
TORRENT_COLUMN_LASTACTIVE,
torrent_get_activity_date(t), TORRENT_COLUMN_RATIO,
uploaded > 0
diff --git a/src/trg-torrent-model.h b/src/trg-torrent-model.h
index 7869da9..0367206 100644
--- a/src/trg-torrent-model.h
+++ b/src/trg-torrent-model.h
@@ -118,6 +118,8 @@ enum {
TORRENT_COLUMN_ETA,
TORRENT_COLUMN_UPLOADED,
TORRENT_COLUMN_DOWNLOADED,
+ TORRENT_COLUMN_TOTALSIZE,
+ TORRENT_COLUMN_HAVE_UNCHECKED,
TORRENT_COLUMN_HAVE_VALID,
TORRENT_COLUMN_RATIO,
TORRENT_COLUMN_ADDED,
@@ -141,6 +143,8 @@ enum {
TORRENT_COLUMN_LASTACTIVE,
TORRENT_COLUMN_FILECOUNT,
TORRENT_COLUMN_ERROR,
+ TORRENT_COLUMN_SEED_RATIO_MODE,
+ TORRENT_COLUMN_SEED_RATIO_LIMIT,
TORRENT_COLUMN_COLUMNS
};
diff --git a/src/trg-torrent-tree-view.c b/src/trg-torrent-tree-view.c
index 8eba1bf..c181e4d 100644
--- a/src/trg-torrent-tree-view.c
+++ b/src/trg-torrent-tree-view.c
@@ -163,7 +163,7 @@ JsonArray *build_json_id_array(TrgTorrentTreeView * tv)
return ids;
}
-static void setup_classic_layout(TrgTorrentTreeView *tv)
+static void setup_classic_layout(TrgClient *tc, TrgTorrentTreeView *tv)
{
GtkCellRenderer *renderer = torrent_cell_renderer_new();
GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes("",
@@ -171,8 +171,10 @@ static void setup_classic_layout(TrgTorrentTreeView *tv)
"status", TORRENT_COLUMN_FLAGS,
"error", TORRENT_COLUMN_ERROR,
"fileCount", TORRENT_COLUMN_FILECOUNT,
+ "totalSize", TORRENT_COLUMN_TOTALSIZE,
"ratio", TORRENT_COLUMN_RATIO,
"downloaded", TORRENT_COLUMN_DOWNLOADED,
+ "haveValid", TORRENT_COLUMN_HAVE_VALID,
"sizeWhenDone", TORRENT_COLUMN_SIZEWHENDONE,
"uploaded", TORRENT_COLUMN_UPLOADED,
"percentComplete", TORRENT_COLUMN_PERCENTDONE,
@@ -182,9 +184,13 @@ static void setup_classic_layout(TrgTorrentTreeView *tv)
"peersGettingFromUs", TORRENT_COLUMN_PEERS_FROM_US,
"eta", TORRENT_COLUMN_ETA,
"json", TORRENT_COLUMN_JSON,
+ "seedRatioMode", TORRENT_COLUMN_SEED_RATIO_MODE,
+ "seedRatioLimit", TORRENT_COLUMN_SEED_RATIO_LIMIT,
"connected", TORRENT_COLUMN_PEERS_CONNECTED,
NULL);
+ g_object_set(G_OBJECT(renderer), "client", tv, NULL);
+
//gtk_tree_view_column_set_min_width(column, 0);
gtk_tree_view_column_set_resizable(column, FALSE);
gtk_tree_view_column_set_reorderable(column, FALSE);
@@ -197,15 +203,15 @@ static void setup_classic_layout(TrgTorrentTreeView *tv)
gtk_tree_view_append_column(GTK_TREE_VIEW(tv), column);
}
-TrgTorrentTreeView *trg_torrent_tree_view_new(TrgPrefs * prefs,
+TrgTorrentTreeView *trg_torrent_tree_view_new(TrgClient *tc,
GtkTreeModel * model)
{
GObject *obj = g_object_new(TRG_TYPE_TORRENT_TREE_VIEW, NULL);
- trg_tree_view_set_prefs(TRG_TREE_VIEW(obj), prefs);
+ trg_tree_view_set_prefs(TRG_TREE_VIEW(obj), trg_client_get_prefs(tc));
gtk_tree_view_set_model(GTK_TREE_VIEW(obj), model);
//trg_tree_view_setup_columns(TRG_TREE_VIEW(obj));
- setup_classic_layout(TRG_TORRENT_TREE_VIEW(obj));
+ setup_classic_layout(tc, TRG_TORRENT_TREE_VIEW(obj));
trg_tree_view_restore_sort(TRG_TREE_VIEW(obj), TRUE);
diff --git a/src/trg-torrent-tree-view.h b/src/trg-torrent-tree-view.h
index f26ec77..4f70c75 100644
--- a/src/trg-torrent-tree-view.h
+++ b/src/trg-torrent-tree-view.h
@@ -50,7 +50,7 @@ typedef struct {
GType trg_torrent_tree_view_get_type(void);
-TrgTorrentTreeView *trg_torrent_tree_view_new(TrgPrefs * prefs,
+TrgTorrentTreeView *trg_torrent_tree_view_new(TrgClient *tc,
GtkTreeModel * model);
JsonArray *build_json_id_array(TrgTorrentTreeView * tv);
diff --git a/src/util.c b/src/util.c
index 37a0bf8..a7d0215 100644
--- a/src/util.c
+++ b/src/util.c
@@ -357,11 +357,6 @@ gchar *make_error_message(JsonObject * response, int status)
char *tr_strlpercent(char *buf, double x, size_t buflen)
{
- return tr_strpercent(buf, x, buflen);
-}
-
-char *tr_strpercent(char *buf, double x, size_t buflen)
-{
int precision;
if (x < 10.0)
precision = 2;
diff --git a/src/util.h b/src/util.h
index 25da404..adef7cf 100644
--- a/src/util.h
+++ b/src/util.h
@@ -72,7 +72,6 @@ char *tr_formatter_speed_KBps(char *buf, double KBps, size_t buflen);
char *tr_strltime_long(char *buf, long seconds, size_t buflen);
gchar *epoch_to_string(gint64 epoch);
char *tr_strltime_short(char *buf, long seconds, size_t buflen);
-char *tr_strpercent(char *buf, double x, size_t buflen);
char *tr_strlpercent(char *buf, double x, size_t buflen);
char *tr_strratio(char *buf, size_t buflen, double ratio,
const char *infinity);