diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-09-30 20:23:47 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-09-30 20:23:47 +0000 |
commit | bc5da29e59f2d9b9f29a61f2fd34a82a8a75872e (patch) | |
tree | 8e861207b621700d10a694463c74efd79ee0941f /src | |
parent | b3f48b4a6f75ade6030bd3a5dced74fff31f13d4 (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.h | 2 | ||||
-rw-r--r-- | src/torrent.c | 17 | ||||
-rw-r--r-- | src/torrent.h | 1 | ||||
-rw-r--r-- | src/tpeer.c | 27 | ||||
-rw-r--r-- | src/tpeer.h | 10 | ||||
-rw-r--r-- | src/trg-files-tree-view.c | 2 | ||||
-rw-r--r-- | src/trg-main-window.c | 11 | ||||
-rw-r--r-- | src/trg-torrent-model.c | 54 | ||||
-rw-r--r-- | src/trg-torrent-model.h | 6 | ||||
-rw-r--r-- | src/trg-torrent-tree-view.c | 17 |
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); |