From b1c7d130563f14a6d9ce48072c989fcd2594772d Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Tue, 28 Aug 2012 22:38:22 +0100 Subject: issue 212 - hopefully fix magnet links making lots of notifications --- src/torrent.c | 29 +++++++++++++++-------------- src/trg-torrent-model.c | 8 ++++---- 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/torrent.c b/src/torrent.c index b79a003..03f6474 100644 --- a/src/torrent.c +++ b/src/torrent.c @@ -220,11 +220,11 @@ gint64 torrent_get_activity_date(JsonObject * t) guint32 torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, - gint64 downRate, gint64 upRate) + gint64 fileCount, gint64 downRate, gint64 upRate) { guint32 flags = 0; - if (torrent_get_is_finished(t) == TRUE) + if (fileCount > 0 && torrent_get_is_finished(t) == TRUE) flags |= TORRENT_FLAG_COMPLETE; else flags |= TORRENT_FLAG_INCOMPLETE; @@ -250,8 +250,8 @@ torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, if (!(flags & TORRENT_FLAG_COMPLETE)) flags |= TORRENT_FLAG_DOWNLOADING; - /* if (torrent_get_metadata_percent_complete(t) < 100) - * flags |= TORRENT_FLAG_DOWNLOADING_METADATA; */ + if (fileCount <= 0) + flags |= TORRENT_FLAG_DOWNLOADING_METADATA; flags |= TORRENT_FLAG_ACTIVE; break; @@ -283,6 +283,7 @@ torrent_get_flags(JsonObject * t, gint64 rpcv, gint64 status, flags |= TORRENT_FLAG_CHECKING; break; } + if (downRate > 0 || upRate > 0) flags |= TORRENT_FLAG_ACTIVE; } @@ -297,8 +298,8 @@ gchar *torrent_get_status_icon(gint64 rpcv, guint flags) { if (flags & TORRENT_FLAG_ERROR) return g_strdup(GTK_STOCK_DIALOG_WARNING); - /*else if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) - * return g_strdup(GTK_STOCK_FIND); */ + else if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + return g_strdup(GTK_STOCK_FIND); else if (flags & TORRENT_FLAG_DOWNLOADING) return g_strdup(GTK_STOCK_GO_DOWN); else if (flags & TORRENT_FLAG_PAUSED) @@ -353,10 +354,10 @@ gchar *torrent_get_status_string(gint64 rpcv, gint64 value, guint flags) if (rpcv >= NEW_STATUS_RPC_VERSION) { switch (value) { case TR_STATUS_DOWNLOAD: - /*if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) - return g_strdup(_("Metadata Downloading")); - else */ - return g_strdup(_("Downloading")); + if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + return g_strdup(_("Metadata Downloading")); + else + return g_strdup(_("Downloading")); case TR_STATUS_DOWNLOAD_WAIT: return g_strdup(_("Queued download")); case TR_STATUS_CHECK_WAIT: @@ -373,10 +374,10 @@ gchar *torrent_get_status_string(gint64 rpcv, gint64 value, guint flags) } else { switch (value) { case OLD_STATUS_DOWNLOADING: - /*if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) - return g_strdup(_("Metadata Downloading")); - else */ - return g_strdup(_("Downloading")); + if (flags & TORRENT_FLAG_DOWNLOADING_METADATA) + return g_strdup(_("Metadata Downloading")); + else + return g_strdup(_("Downloading")); case OLD_STATUS_PAUSED: return g_strdup(_("Paused")); case OLD_STATUS_SEEDING: diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index c582bd7..73d877c 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -433,8 +433,7 @@ update_torrent_iter(TrgTorrentModel * model, JsonObject *lastJson, *pf; JsonArray *trackerStats; gchar *statusString, *statusIcon, *downloadDir; - gint64 downRate, upRate, haveValid, uploaded, downloaded, id, status, - lpd; + gint64 downRate, upRate, haveValid, uploaded, downloaded, id, status, lpd, fileCount; gchar *firstTrackerHost = NULL; gchar *peerSources = NULL; gchar *lastDownloadDir = NULL; @@ -454,7 +453,8 @@ update_torrent_iter(TrgTorrentModel * model, id = torrent_get_id(t); status = torrent_get_status(t); - newFlags = torrent_get_flags(t, rpcv, status, downRate, upRate); + fileCount = json_array_get_length(torrent_get_files(t)); + newFlags = torrent_get_flags(t, rpcv, status, fileCount, downRate, upRate); statusString = torrent_get_status_string(rpcv, status, newFlags); statusIcon = torrent_get_status_icon(rpcv, newFlags); pf = torrent_get_peersfrom(t); @@ -504,7 +504,7 @@ update_torrent_iter(TrgTorrentModel * model, gtk_list_store_set(ls, iter, TORRENT_COLUMN_ICON, statusIcon, TORRENT_COLUMN_ADDED, torrent_get_added_date(t), TORRENT_COLUMN_FILECOUNT, - json_array_get_length(torrent_get_files(t)), + fileCount, TORRENT_COLUMN_DONE_DATE, torrent_get_done_date(t), TORRENT_COLUMN_NAME, torrent_get_name(t), TORRENT_COLUMN_ERROR, torrent_get_error(t), -- cgit v1.2.3