From 4160d44ddc9605b49eb294f6371a6208b509f9f0 Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Sun, 10 Jul 2011 13:21:18 +0000 Subject: issue 51 - add a category for active torrents --- src/torrent.h | 5 +++-- src/trg-state-selector.c | 6 +++++- src/trg-torrent-model.c | 11 +++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/torrent.h b/src/torrent.h index 039eaab..c5e2e10 100644 --- a/src/torrent.h +++ b/src/torrent.h @@ -30,8 +30,9 @@ #define TORRENT_FLAG_WAITING_CHECK (1 << 5) /* 0x16 */ #define TORRENT_FLAG_DOWNLOADING (1 << 6) /* 0x32 */ #define TORRENT_FLAG_PAUSED (1 << 7) /* 0x64 */ -#define FILTER_FLAG_TRACKER (1 << 8) /* 0x128 */ -#define FILTER_FLAG_DIR (1 << 9) /* 0x256 */ +#define TORRENT_FLAG_ACTIVE (1 << 8) /* 0x128 */ +#define FILTER_FLAG_TRACKER (1 << 9) /* 0x256 */ +#define FILTER_FLAG_DIR (1 << 10) /* 0x512 */ gint64 torrent_get_size(JsonObject * t); const gchar *torrent_get_name(JsonObject * t); diff --git a/src/trg-state-selector.c b/src/trg-state-selector.c index 81ffc84..71b8eb3 100644 --- a/src/trg-state-selector.c +++ b/src/trg-state-selector.c @@ -34,6 +34,8 @@ enum { SELECTOR_SIGNAL_COUNT }; +#define N_CATEGORIES 10 + static guint signals[SELECTOR_SIGNAL_COUNT] = { 0 }; G_DEFINE_TYPE(TrgStateSelector, trg_state_selector, GTK_TYPE_TREE_VIEW) @@ -271,7 +273,7 @@ void trg_state_selector_update(TrgStateSelector * s) g_free(announceHost); } else { gtk_list_store_insert(GTK_LIST_STORE(model), &iter, - 9 + + N_CATEGORIES + g_hash_table_size (priv->trackers)); gtk_list_store_set(GTK_LIST_STORE(model), &iter, @@ -439,6 +441,8 @@ static void trg_state_selector_init(TrgStateSelector * self) _("Incomplete"), TORRENT_FLAG_INCOMPLETE); trg_state_selector_add_state(store, &iter, GTK_STOCK_GO_UP, _("Seeding"), TORRENT_FLAG_SEEDING); + trg_state_selector_add_state(store, &iter, GTK_STOCK_NETWORK, + _("Active"), TORRENT_FLAG_ACTIVE); trg_state_selector_add_state(store, &iter, GTK_STOCK_DIALOG_WARNING, _("Error"), TORRENT_FLAG_ERROR); trg_state_selector_add_state(store, &iter, NULL, NULL, 0); diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index d35e908..7e9c3a1 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -50,6 +50,8 @@ struct _TrgTorrentModelPrivate { GHashTable *ht; }; +static guint32 torrent_get_flags(JsonObject * t, gint64 status, gint64 downRate, gint64 upRate); + static void trg_torrent_model_dispose(GObject * object) { TrgTorrentModelPrivate *priv = TRG_TORRENT_MODEL_GET_PRIVATE(object); @@ -57,8 +59,6 @@ static void trg_torrent_model_dispose(GObject * object) G_OBJECT_CLASS(trg_torrent_model_parent_class)->dispose(object); } -static guint32 torrent_get_flags(JsonObject * t, gint64 status); - static void update_torrent_iter(TrgTorrentModel * model, gint64 serial, GtkTreeIter * iter, JsonObject * t, @@ -198,7 +198,7 @@ gboolean trg_torrent_model_is_remove_in_progress(TrgTorrentModel * model) (G_OBJECT(model), PROP_REMOVE_IN_PROGRESS)); } -static guint32 torrent_get_flags(JsonObject * t, gint64 status) +static guint32 torrent_get_flags(JsonObject * t, gint64 status, gint64 downRate, gint64 upRate) { guint32 flags = 0; switch (status) { @@ -225,6 +225,9 @@ static guint32 torrent_get_flags(JsonObject * t, gint64 status) else flags |= TORRENT_FLAG_INCOMPLETE; + if (downRate > 0 || upRate > 0) + flags |= TORRENT_FLAG_ACTIVE; + if (strlen(torrent_get_errorstr(t)) > 0) flags |= TORRENT_FLAG_ERROR; @@ -277,7 +280,7 @@ update_torrent_iter(TrgTorrentModel * model, gint64 serial, status = torrent_get_status(t); statusString = torrent_get_status_string(status); - newFlags = torrent_get_flags(t, status); + newFlags = torrent_get_flags(t, status, downRate, upRate); statusIcon = torrent_get_status_icon(newFlags); gtk_tree_model_get(GTK_TREE_MODEL(model), iter, -- cgit v1.2.3