summaryrefslogtreecommitdiff
path: root/src/trg-torrent-model.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-24 16:27:51 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-09-24 16:27:51 +0000
commit167799dd240e946ca94f3cc01ded1b90f69be0fd (patch)
tree70854a5bfee24aefcb050c628408697ea839b51c /src/trg-torrent-model.c
parentacab965423e05df4d6fc29d67b542f499284a287 (diff)
issue 128
Diffstat (limited to 'src/trg-torrent-model.c')
-rw-r--r--src/trg-torrent-model.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index b32858c..90d9d6f 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -48,6 +48,7 @@ typedef struct _TrgTorrentModelPrivate TrgTorrentModelPrivate;
struct _TrgTorrentModelPrivate {
GHashTable *ht;
+ GRegex *urlHostRegex;
};
static void trg_torrent_model_dispose(GObject * object)
@@ -190,6 +191,8 @@ static void trg_torrent_model_init(TrgTorrentModel * self)
g_object_set_data(G_OBJECT(self), PROP_REMOVE_IN_PROGRESS,
GINT_TO_POINTER(FALSE));
+
+ priv->urlHostRegex = trg_uri_host_regex_new();
}
gboolean trg_torrent_model_is_remove_in_progress(TrgTorrentModel * model)
@@ -233,12 +236,14 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
GtkTreeIter * iter, JsonObject * t,
trg_torrent_model_update_stats * stats)
{
+ TrgTorrentModelPrivate *priv = TRG_TORRENT_MODEL_GET_PRIVATE(model);
GtkListStore *ls = GTK_LIST_STORE(model);
guint lastFlags, newFlags;
- JsonObject *lastJson, *pf, *firstTracker;
+ JsonObject *lastJson, *pf;
JsonArray *trackerStats;
gchar *statusString, *statusIcon, *downloadDir;
gint64 downRate, upRate, downloaded, uploaded, id, status;
+ gchar *firstTrackerHost = NULL;
downRate = torrent_get_rate_down(t);
stats->downRateTotal += downRate;
@@ -259,8 +264,10 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
statusIcon = torrent_get_status_icon(rpcv, newFlags);
pf = torrent_get_peersfrom(t);
trackerStats = torrent_get_tracker_stats(t);
- firstTracker = json_array_get_length(trackerStats) > 0 ?
- json_array_get_object_element(trackerStats, 0) : NULL;
+ if (json_array_get_length(trackerStats) > 0) {
+ JsonObject *firstTracker = json_array_get_object_element(trackerStats, 0);
+ firstTrackerHost = trg_gregex_get_first(priv->urlHostRegex, tracker_stats_get_host(firstTracker));
+ }
gtk_tree_model_get(GTK_TREE_MODEL(model), iter,
TORRENT_COLUMN_FLAGS, &lastFlags,
@@ -316,7 +323,7 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
gtk_list_store_set(ls, iter, TORRENT_COLUMN_PEERS_FROM_US,
torrent_get_peers_getting_from_us(t), -1);
gtk_list_store_set(ls, iter, TORRENT_COLUMN_TRACKERHOST,
- firstTracker ? tracker_stats_get_host(firstTracker) : "", -1);
+ firstTrackerHost ? firstTrackerHost : "", -1);
gtk_list_store_set(ls, iter, TORRENT_COLUMN_QUEUE_POSITION, torrent_get_queue_position(t), -1);
gtk_list_store_set(ls, iter, TORRENT_COLUMN_LASTACTIVE, torrent_get_activity_date(t), -1);
#else
@@ -354,7 +361,7 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
torrent_get_bandwidth_priority(t),
TORRENT_COLUMN_ID, id, TORRENT_COLUMN_JSON, t,
TORRENT_COLUMN_TRACKERHOST,
- firstTracker ? tracker_stats_get_host(firstTracker) : "",
+ firstTrackerHost ? firstTrackerHost : "",
TORRENT_COLUMN_UPDATESERIAL, serial, -1);
#endif
@@ -367,6 +374,9 @@ update_torrent_iter(TrgTorrentModel * model, gint64 rpcv, gint64 serial,
trg_torrent_model_count_peers(model, iter, t);
+ if (firstTrackerHost)
+ g_free(firstTrackerHost);
+
g_free(statusString);
g_free(statusIcon);
}