summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/torrent.h5
-rw-r--r--src/trg-state-selector.c6
-rw-r--r--src/trg-torrent-model.c11
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,