summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-30 20:23:47 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-30 20:23:47 +0000
commitbc5da29e59f2d9b9f29a61f2fd34a82a8a75872e (patch)
tree8e861207b621700d10a694463c74efd79ee0941f /src
parentb3f48b4a6f75ade6030bd3a5dced74fff31f13d4 (diff)
on first use the notebook position was taking the pref get_int default of 0, taking up the whole window. fix.
Diffstat (limited to 'src')
-rw-r--r--src/protocol-constants.h2
-rw-r--r--src/torrent.c17
-rw-r--r--src/torrent.h1
-rw-r--r--src/tpeer.c27
-rw-r--r--src/tpeer.h10
-rw-r--r--src/trg-files-tree-view.c2
-rw-r--r--src/trg-main-window.c11
-rw-r--r--src/trg-torrent-model.c54
-rw-r--r--src/trg-torrent-model.h6
-rw-r--r--src/trg-torrent-tree-view.c17
10 files changed, 141 insertions, 6 deletions
diff --git a/src/protocol-constants.h b/src/protocol-constants.h
index 33ae051..dc5c8b3 100644
--- a/src/protocol-constants.h
+++ b/src/protocol-constants.h
@@ -84,6 +84,7 @@
#define FIELD_PEERS_CONNECTED "peersConnected"
#define FIELD_QUEUE_POSITION "queuePosition"
#define FIELD_ACTIVITY_DATE "activityDate"
+#define FIELD_ISPRIVATE "isPrivate"
#define FIELD_FILES_WANTED "files-wanted"
#define FIELD_FILES_UNWANTED "files-unwanted"
@@ -100,6 +101,7 @@
#define FIELD_LAST_ANNOUNCE_TIME "lastAnnounceTime"
#define FIELD_SEEDERCOUNT "seederCount"
#define FIELD_LEECHERCOUNT "leecherCount"
+#define FIELD_DOWNLOADCOUNT "downloadCount"
#define FIELD_HOST "host"
#define FIELD_LAST_ANNOUNCE_RESULT "lastAnnounceResult"
#define FIELD_RECHECK_PROGRESS "recheckProgress"
diff --git a/src/torrent.c b/src/torrent.c
index 046693a..8717998 100644
--- a/src/torrent.c
+++ b/src/torrent.c
@@ -29,6 +29,7 @@
JsonArray *torrent_get_peers(JsonObject * t)
{
+ g_assert(json_object_get_array_member(t, FIELD_PEERS));
return json_object_get_array_member(t, FIELD_PEERS);
}
@@ -39,16 +40,19 @@ JsonObject *torrent_get_peersfrom(JsonObject * t)
JsonArray *torrent_get_wanted(JsonObject * t)
{
+ g_assert(json_object_get_array_member(t, FIELD_WANTED));
return json_object_get_array_member(t, FIELD_WANTED);
}
JsonArray *torrent_get_priorities(JsonObject * t)
{
+ g_assert(json_object_get_array_member(t, FIELD_PRIORITIES));
return json_object_get_array_member(t, FIELD_PRIORITIES);
}
JsonArray *torrent_get_tracker_stats(JsonObject * t)
{
+ g_assert(json_object_get_array_member(t, FIELD_TRACKER_STATS));
return json_object_get_array_member(t, FIELD_TRACKER_STATS);
}
@@ -167,6 +171,11 @@ gboolean torrent_get_is_finished(JsonObject * t)
return torrent_get_left_until_done(t) <= 0;
}
+gboolean torrent_get_is_private(JsonObject * t)
+{
+ return json_object_get_boolean_member(t, FIELD_ISPRIVATE);
+}
+
gdouble torrent_get_percent_done(JsonObject * t)
{
return json_double_to_progress(json_object_get_member(t, FIELD_PERCENTDONE));
@@ -367,11 +376,13 @@ JsonArray *get_torrents_removed(JsonObject * response)
JsonArray *get_torrents(JsonObject * response)
{
+ g_assert(json_object_get_array_member(response, FIELD_TORRENTS));
return json_object_get_array_member(response, FIELD_TORRENTS);
}
JsonArray *torrent_get_files(JsonObject * args)
{
+ g_assert(json_object_get_array_member(args, FIELD_FILES));
return json_object_get_array_member(args, FIELD_FILES);
}
@@ -430,6 +441,11 @@ gint64 tracker_stats_get_leecher_count(JsonObject *t)
return json_object_get_int_member(t, FIELD_LEECHERCOUNT);
}
+gint64 tracker_stats_get_download_count(JsonObject *t)
+{
+ return json_object_get_int_member(t, FIELD_DOWNLOADCOUNT);
+}
+
const gchar *tracker_stats_get_announce_result(JsonObject *t)
{
return json_object_get_string_member(t, FIELD_LAST_ANNOUNCE_RESULT);
@@ -460,3 +476,4 @@ gchar *torrent_get_full_path(JsonObject * obj) {
g_free(name);
return containing_path;
}
+
diff --git a/src/torrent.h b/src/torrent.h
index d53be6a..75262ed 100644
--- a/src/torrent.h
+++ b/src/torrent.h
@@ -103,6 +103,7 @@ gint64 tracker_stats_get_last_announce_peer_count(JsonObject *t);
gint64 tracker_stats_get_last_announce_time(JsonObject *t);
gint64 tracker_stats_get_seeder_count(JsonObject *t);
gint64 tracker_stats_get_leecher_count(JsonObject *t);
+gint64 tracker_stats_get_download_count(JsonObject *t);
const gchar *tracker_stats_get_announce_result(JsonObject *t);
const gchar *tracker_stats_get_host(JsonObject *t);
diff --git a/src/tpeer.c b/src/tpeer.c
index 22db1fb..53cb0ce 100644
--- a/src/tpeer.c
+++ b/src/tpeer.c
@@ -69,3 +69,30 @@ gint64 peerfrom_get_dht(JsonObject *pf)
{
return json_object_get_int_member(pf, TPEERFROM_FROMDHT);
}
+
+gint64 peerfrom_get_trackers(JsonObject *pf)
+{
+ return json_object_get_int_member(pf, TPEERFROM_FROMTRACKERS);
+}
+
+gint64 peerfrom_get_ltep(JsonObject *pf)
+{
+ return json_object_get_int_member(pf, TPEERFROM_FROMLTEP);
+}
+
+gint64 peerfrom_get_resume(JsonObject *pf)
+{
+ return json_object_get_int_member(pf, TPEERFROM_FROMRESUME);
+}
+
+gint64 peerfrom_get_incoming(JsonObject *pf)
+{
+ return json_object_get_int_member(pf, TPEERFROM_FROMINCOMING);
+}
+
+
+gint64 peerfrom_get_lpd(JsonObject *pf)
+{
+ return json_object_has_member(pf, TPEERFROM_FROMLPD) ?
+ json_object_get_int_member(pf, TPEERFROM_FROMLPD) : -1;
+}
diff --git a/src/tpeer.h b/src/tpeer.h
index bc7852e..6fc525f 100644
--- a/src/tpeer.h
+++ b/src/tpeer.h
@@ -35,6 +35,11 @@
#define TPEERFROM_FROMPEX "fromPex"
#define TPEERFROM_FROMDHT "fromDht"
+#define TPEERFROM_FROMTRACKERS "fromTracker"
+#define TPEERFROM_FROMLTEP "fromLtep"
+#define TPEERFROM_FROMRESUME "fromCache"
+#define TPEERFROM_FROMINCOMING "fromIncoming"
+#define TPEERFROM_FROMLPD "fromLpd"
const gchar *peer_get_address(JsonObject * p);
const gchar *peer_get_client_name(JsonObject * p);
@@ -48,5 +53,10 @@ gboolean peer_get_is_downloading_from(JsonObject * p);
gint64 peerfrom_get_pex(JsonObject *pf);
gint64 peerfrom_get_dht(JsonObject *pf);
+gint64 peerfrom_get_trackers(JsonObject *pf);
+gint64 peerfrom_get_ltep(JsonObject *pf);
+gint64 peerfrom_get_resume(JsonObject *pf);
+gint64 peerfrom_get_incoming(JsonObject *pf);
+gint64 peerfrom_get_lpd(JsonObject *pf);
#endif /* TPEER_H_ */
diff --git a/src/trg-files-tree-view.c b/src/trg-files-tree-view.c
index d9661b0..a7a7682 100644
--- a/src/trg-files-tree-view.c
+++ b/src/trg-files-tree-view.c
@@ -231,7 +231,7 @@ view_popup_menu(GtkWidget * treeview, GdkEventButton * event,
treeview);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- menuitem = gtk_image_menu_item_new_with_label(GTK_STOCK_STOP);
+ menuitem = gtk_image_menu_item_new_with_label(GTK_STOCK_CANCEL);
gtk_image_menu_item_set_use_stock(GTK_IMAGE_MENU_ITEM(menuitem), TRUE);
gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM
(menuitem), TRUE);
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index a14e163..9f2bd70 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -1835,7 +1835,7 @@ static GObject *trg_main_window_constructor(GType type,
GtkWidget *outerVbox;
GtkWidget *toolbarHbox;
GtkIconTheme *theme;
- gint width, height;
+ gint width, height, pos;
gboolean tray;
TrgPrefs *prefs;
@@ -1999,8 +1999,13 @@ static GObject *trg_main_window_constructor(GType type,
trg_prefs_get_bool(prefs, TRG_PREFS_KEY_SHOW_NOTEBOOK,
TRG_PREFS_GLOBAL));
- gtk_paned_set_position(GTK_PANED(priv->vpaned), trg_prefs_get_int(prefs, TRG_PREFS_KEY_NOTEBOOK_PANED_POS, TRG_PREFS_GLOBAL));
- gtk_paned_set_position(GTK_PANED(priv->hpaned), trg_prefs_get_int(prefs, TRG_PREFS_KEY_STATES_PANED_POS, TRG_PREFS_GLOBAL));
+ pos = trg_prefs_get_int(prefs, TRG_PREFS_KEY_NOTEBOOK_PANED_POS, TRG_PREFS_GLOBAL);
+ if (pos > 0)
+ gtk_paned_set_position(GTK_PANED(priv->vpaned), pos);
+
+ pos = trg_prefs_get_int(prefs, TRG_PREFS_KEY_STATES_PANED_POS, TRG_PREFS_GLOBAL);
+ if (pos > 0)
+ gtk_paned_set_position(GTK_PANED(priv->hpaned), pos);
if (tray && priv->min_on_start)
gtk_widget_hide(GTK_WIDGET(self));
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index 8959027..d418f15 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -20,6 +20,7 @@
#include <string.h>
#include <gtk/gtk.h>
#include <json-glib/json-glib.h>
+#include <glib/gi18n.h>
#include "config.h"
#include "torrent.h"
@@ -104,6 +105,7 @@ static void trg_torrent_model_count_peers(TrgTorrentModel * model,
GList *trackersList = json_array_get_elements(torrent_get_tracker_stats(t));
gint seeders = 0;
gint leechers = 0;
+ gint downloads = 0;
GList *li;
for (li = trackersList; li; li = g_list_next(li)) {
@@ -111,13 +113,15 @@ static void trg_torrent_model_count_peers(TrgTorrentModel * model,
seeders += tracker_stats_get_seeder_count(tracker);
leechers += tracker_stats_get_leecher_count(tracker);
+ downloads += tracker_stats_get_download_count(tracker);
}
g_list_free(trackersList);
gtk_list_store_set(GTK_LIST_STORE(model), iter,
TORRENT_COLUMN_SEEDS, seeders,
- TORRENT_COLUMN_LEECHERS, leechers, -1);
+ TORRENT_COLUMN_LEECHERS, leechers,
+ TORRENT_COLUMN_DOWNLOADS, downloads, -1);
}
static void trg_torrent_model_ref_free(gpointer data)
@@ -158,6 +162,7 @@ static void trg_torrent_model_init(TrgTorrentModel * self)
column_types[TORRENT_COLUMN_STATUS] = G_TYPE_STRING;
column_types[TORRENT_COLUMN_SEEDS] = G_TYPE_INT;
column_types[TORRENT_COLUMN_LEECHERS] = G_TYPE_INT;
+ column_types[TORRENT_COLUMN_DOWNLOADS] = G_TYPE_INT;
column_types[TORRENT_COLUMN_DOWNSPEED] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_ADDED] = G_TYPE_INT64;
column_types[TORRENT_COLUMN_UPSPEED] = G_TYPE_INT64;
@@ -174,6 +179,11 @@ 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_FROMTRACKERS] = G_TYPE_INT64;
+ column_types[TORRENT_COLUMN_FROMLTEP] = G_TYPE_INT64;
+ 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_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;
@@ -242,8 +252,9 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
JsonObject *lastJson, *pf;
JsonArray *trackerStats;
gchar *statusString, *statusIcon, *downloadDir;
- gint64 downRate, upRate, downloaded, uploaded, id, status;
+ gint64 downRate, upRate, downloaded, uploaded, id, status, lpd;
gchar *firstTrackerHost = NULL;
+ gchar *peerSources = NULL;
downRate = torrent_get_rate_down(t);
stats->downRateTotal += downRate;
@@ -276,6 +287,28 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker));
}
+ lpd = peerfrom_get_lpd(pf);
+ if (newFlags & TORRENT_FLAG_ACTIVE) {
+ if (lpd >= 0) {
+ peerSources = g_strdup_printf("%d / %d / %d / %d / %d / %d / %d",
+ peerfrom_get_trackers(pf),
+ peerfrom_get_incoming(pf),
+ peerfrom_get_ltep(pf),
+ peerfrom_get_dht(pf),
+ peerfrom_get_pex(pf),
+ lpd,
+ peerfrom_get_resume(pf));
+ } else {
+ peerSources = g_strdup_printf("%d / %d / %d / %d / %d / N/A / %d",
+ peerfrom_get_trackers(pf),
+ peerfrom_get_incoming(pf),
+ peerfrom_get_ltep(pf),
+ peerfrom_get_dht(pf),
+ peerfrom_get_pex(pf),
+ peerfrom_get_resume(pf));
+ }
+ }
+
#ifdef DEBUG
gtk_list_store_set(ls, iter, TORRENT_COLUMN_ICON, statusIcon, -1);
gtk_list_store_set(ls, iter,
@@ -317,6 +350,16 @@ 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_FROMTRACKERS,
+ peerfrom_get_trackers(pf), -1);
+ gtk_list_store_set(ls, iter, TORRENT_COLUMN_FROMLTEP,
+ peerfrom_get_ltep(pf), -1);
+ gtk_list_store_set(ls, iter, TORRENT_COLUMN_FROMRESUME,
+ peerfrom_get_resume(pf), -1);
+ gtk_list_store_set(ls, iter, TORRENT_COLUMN_FROMINCOMING,
+ peerfrom_get_incoming(pf), -1);
+ gtk_list_store_set(ls, iter, TORRENT_COLUMN_PEER_SOURCES,
+ peerSources, -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,
@@ -346,6 +389,11 @@ 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_FROMTRACKERS, peerfrom_get_trackers(pf),
+ TORRENT_COLUMN_FROMLTEP, peerfrom_get_ltep(pf),
+ TORRENT_COLUMN_FROMRESUME, peerfrom_get_resume(pf),
+ TORRENT_COLUMN_FROMINCOMING, peerfrom_get_incoming(pf),
+ TORRENT_COLUMN_PEER_SOURCES, peerSources,
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),
@@ -377,6 +425,8 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
if (firstTrackerHost)
g_free(firstTrackerHost);
+ if (peerSources)
+ g_free(peerSources);
g_free(statusString);
g_free(statusIcon);
diff --git a/src/trg-torrent-model.h b/src/trg-torrent-model.h
index a71b0e2..419ff42 100644
--- a/src/trg-torrent-model.h
+++ b/src/trg-torrent-model.h
@@ -91,6 +91,7 @@ enum {
TORRENT_COLUMN_STATUS,
TORRENT_COLUMN_SEEDS,
TORRENT_COLUMN_LEECHERS,
+ TORRENT_COLUMN_DOWNLOADS,
TORRENT_COLUMN_PEERS_CONNECTED,
TORRENT_COLUMN_PEERS_FROM_US,
TORRENT_COLUMN_PEERS_TO_US,
@@ -110,6 +111,11 @@ enum {
TORRENT_COLUMN_DONE_DATE,
TORRENT_COLUMN_FROMPEX,
TORRENT_COLUMN_FROMDHT,
+ TORRENT_COLUMN_FROMTRACKERS,
+ TORRENT_COLUMN_FROMLTEP,
+ TORRENT_COLUMN_FROMRESUME,
+ TORRENT_COLUMN_FROMINCOMING,
+ TORRENT_COLUMN_PEER_SOURCES,
TORRENT_COLUMN_TRACKERHOST,
TORRENT_COLUMN_QUEUE_POSITION,
TORRENT_COLUMN_LASTACTIVE,
diff --git a/src/trg-torrent-tree-view.c b/src/trg-torrent-tree-view.c
index 8056632..74bce98 100644
--- a/src/trg-torrent-tree-view.c
+++ b/src/trg-torrent-tree-view.c
@@ -61,6 +61,9 @@ static void trg_torrent_tree_view_init(TrgTorrentTreeView * tttv)
TORRENT_COLUMN_LEECHERS, _("Leechers"),
"leechers", 0);
trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
+ TORRENT_COLUMN_DOWNLOADS, _("Downloads"),
+ "downloads", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
TORRENT_COLUMN_PEERS_FROM_US, _("Receiving"),
"connected-leechers", TRG_COLUMN_EXTRA);
trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
@@ -72,6 +75,20 @@ static void trg_torrent_tree_view_init(TrgTorrentTreeView * tttv)
trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
TORRENT_COLUMN_FROMDHT, _("DHT Peers"),
"from-dht", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
+ TORRENT_COLUMN_FROMTRACKERS, _("Tracker Peers"),
+ "from-trackers", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
+ TORRENT_COLUMN_FROMLTEP, _("LTEP Peers"),
+ "from-ltep", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
+ TORRENT_COLUMN_FROMRESUME, _("Resumed Peers"),
+ "from-resume", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_NUMGTZERO,
+ TORRENT_COLUMN_FROMINCOMING, _("Incoming Peers"),
+ "from-incoming", TRG_COLUMN_EXTRA);
+ trg_tree_view_reg_column(ttv, TRG_COLTYPE_TEXT, TORRENT_COLUMN_PEER_SOURCES,
+ _("Peers T/I/E/H/X/L/R"), "peer-sources", TRG_COLUMN_EXTRA);
trg_tree_view_reg_column(ttv, TRG_COLTYPE_SPEED,
TORRENT_COLUMN_DOWNSPEED, _("Down Speed"),
"down-speed", 0);