diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-09-07 15:10:00 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-09-07 15:10:00 +0000 |
commit | c5b0c941f310f2b90e9d23f5dc5d89f3167cd817 (patch) | |
tree | 78d6c4211327773f00682e17a69a5260a2eb6388 /src/trg-torrent-model.c | |
parent | 13fb8f29b209e9b948375f6d7888fb8c637c2cd4 (diff) |
issue 75 - show total number of seeders/leechers across trackers instead of sending/receiving peers. add new non-default columns for sending to us, receiving from us, and connected.
Diffstat (limited to 'src/trg-torrent-model.c')
-rw-r--r-- | src/trg-torrent-model.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index 735bda0..11852af 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -100,24 +100,19 @@ static void trg_torrent_model_count_peers(TrgTorrentModel * model, GtkTreeIter * iter, JsonObject * t) { - GList *peersList = json_array_get_elements(torrent_get_peers(t)); - gint seeders, leechers; + GList *trackersList = json_array_get_elements(torrent_get_tracker_stats(t)); + gint seeders = 0; + gint leechers = 0; GList *li; - seeders = 0; - leechers = 0; + for (li = trackersList; li; li = g_list_next(li)) { + JsonObject *tracker = json_node_get_object((JsonNode *) li->data); - for (li = peersList; li; li = g_list_next(li)) { - JsonObject *peer = json_node_get_object((JsonNode *) li->data); - - if (peer_get_is_downloading_from(peer)) - seeders++; - - if (peer_get_is_uploading_to(peer)) - leechers++; + seeders += tracker_stats_get_seeder_count(tracker); + leechers += tracker_stats_get_leecher_count(tracker); } - g_list_free(peersList); + g_list_free(trackersList); gtk_list_store_set(GTK_LIST_STORE(model), iter, TORRENT_COLUMN_SEEDS, seeders, @@ -178,6 +173,9 @@ static void trg_torrent_model_init(TrgTorrentModel * self) column_types[TORRENT_COLUMN_DONE_DATE] = G_TYPE_INT64; column_types[TORRENT_COLUMN_FROMPEX] = G_TYPE_INT64; column_types[TORRENT_COLUMN_FROMDHT] = 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; gtk_list_store_set_column_types(GTK_LIST_STORE(self), TORRENT_COLUMN_COLUMNS, column_types); @@ -293,6 +291,12 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial, peerfrom_get_pex(pf), -1); gtk_list_store_set(ls, iter, TORRENT_COLUMN_FROMDHT, peerfrom_get_dht(pf), -1); + gtk_list_store_set(ls, iter, TORRENT_COLUMN_PEERS_CONNECTED, + torrent_get_peers_connected(t), -1); + gtk_list_store_set(ls, iter, TORRENT_COLUMN_PEERS_TO_US, + torrent_get_peers_sending_to_us(t), -1); + gtk_list_store_set(ls, iter, TORRENT_COLUMN_PEERS_FROM_US, + torrent_get_peers_getting_from_us(t), -1); #else gtk_list_store_set(ls, iter, TORRENT_COLUMN_ICON, statusIcon, @@ -311,6 +315,9 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial, TORRENT_COLUMN_DOWNLOADED, downloaded, TORRENT_COLUMN_FROMPEX, peerfrom_get_pex(pf), TORRENT_COLUMN_FROMDHT, peerfrom_get_dht(pf), + TORRENT_COLUMN_PEERS_CONNECTED, torrent_get_peers_connected(t), + TORRENT_COLUMN_PEERS_TO_US, torrent_get_peers_sending_to_us(t), + TORRENT_COLUMN_PEERS_FROM_US, torrent_get_peers_getting_from_us(t), TORRENT_COLUMN_RATIO, uploaded > 0 |