diff --git a/deluge/ui/gtkui/glade/main_window.glade b/deluge/ui/gtkui/glade/main_window.glade index 000a6babd..79ac644a9 100644 --- a/deluge/ui/gtkui/glade/main_window.glade +++ b/deluge/ui/gtkui/glade/main_window.glade @@ -1539,7 +1539,7 @@ This will filter torrents for the current selection on the sidebar. 1 - 8 + 4 4 5 GTK_FILL @@ -1561,6 +1561,41 @@ This will filter torrents for the current selection on the sidebar. GTK_FILL + + + True + False + 0 + True + char + True + + + 5 + 8 + 4 + 5 + GTK_FILL + + + + + True + False + 0 + 0 + <b>Last Seen Complete:</b> + True + + + 4 + 5 + 4 + 5 + GTK_FILL + GTK_FILL + + True diff --git a/deluge/ui/gtkui/status_tab.py b/deluge/ui/gtkui/status_tab.py index 01c062750..7d78242af 100644 --- a/deluge/ui/gtkui/status_tab.py +++ b/deluge/ui/gtkui/status_tab.py @@ -68,6 +68,13 @@ def fspeed(value, max_value=-1): else: return deluge.common.fspeed(value) +def fdate_or_never(value): + """Display value as date, eg 05/05/08 or Never""" + if value > 0.0: + return deluge.common.fdate(value) + else: + return "Never" + class StatusTab(Tab): def __init__(self): Tab.__init__(self) @@ -103,7 +110,8 @@ class StatusTab(Tab): (glade.get_widget("summary_seed_rank"), str, ("seed_rank",)), (glade.get_widget("summary_auto_managed"), str, ("is_auto_managed",)), (glade.get_widget("progressbar"), fpcnt, ("progress",)), - (glade.get_widget("summary_date_added"), deluge.common.fdate, ("time_added",)) + (glade.get_widget("summary_date_added"), deluge.common.fdate, ("time_added",)), + (glade.get_widget("summary_last_seen_complete"), fdate_or_never, ("last_seen_complete",)), ] def update(self): @@ -125,7 +133,7 @@ class StatusTab(Tab): "total_seeds", "eta", "ratio", "next_announce", "tracker_status", "max_connections", "max_upload_slots", "max_upload_speed", "max_download_speed", "active_time", - "seeding_time", "seed_rank", "is_auto_managed", "time_added"] + "seeding_time", "seed_rank", "is_auto_managed", "time_added", "last_seen_complete"] if self.config['show_piecesbar']: status_keys.extend(["pieces", "state"]) diff --git a/deluge/ui/web/css/deluge.css b/deluge/ui/web/css/deluge.css index c1da56f2e..303a0d1f7 100644 --- a/deluge/ui/web/css/deluge.css +++ b/deluge/ui/web/css/deluge.css @@ -112,6 +112,9 @@ dl.singleline dd { .x-deluge-status dd.time_added { width: 100px; } +.x-deluge-status dd.last_seen_complete { + width: 100px; +} /* Torrent Details - Details Tab */ #torrentDetails dd.torrent_name, diff --git a/deluge/ui/web/js/deluge-all/Keys.js b/deluge/ui/web/js/deluge-all/Keys.js index f41f53ae5..64fe0f8cd 100644 --- a/deluge/ui/web/js/deluge-all/Keys.js +++ b/deluge/ui/web/js/deluge-all/Keys.js @@ -48,7 +48,7 @@ Deluge.Keys = { 'queue', 'name', 'total_size', 'state', 'progress', 'num_seeds', 'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate', 'upload_payload_rate', 'eta', 'ratio', 'distributed_copies', - 'is_auto_managed', 'time_added', 'tracker_host', 'save_path' + 'is_auto_managed', 'time_added', 'tracker_host', 'save_path', 'last_seen_complete' ], /** diff --git a/deluge/ui/web/js/deluge-all/TorrentGrid.js b/deluge/ui/web/js/deluge-all/TorrentGrid.js index 022aac7a3..de3672eda 100644 --- a/deluge/ui/web/js/deluge-all/TorrentGrid.js +++ b/deluge/ui/web/js/deluge-all/TorrentGrid.js @@ -75,6 +75,10 @@ return eta * -1; } + function dateOrNever(date) { + return date > 0.0 ? fdate(date) : "Never" + } + /** * Deluge.TorrentGrid Class * @@ -169,7 +173,7 @@ header: _('Last Seen Complete'), width: 80, sortable: true, - renderer: fdate, + renderer: dateOrNever, dataIndex: 'last_seen_complete' }, { header: _('Tracker'), diff --git a/deluge/ui/web/js/deluge-all/details/StatusTab.js b/deluge/ui/web/js/deluge-all/details/StatusTab.js index e3671bd0e..378b9dab8 100644 --- a/deluge/ui/web/js/deluge-all/details/StatusTab.js +++ b/deluge/ui/web/js/deluge-all/details/StatusTab.js @@ -91,8 +91,9 @@ Deluge.details.StatusTab = Ext.extend(Ext.Panel, { }, onRequestComplete: function(status) { - seeders = status.total_seeds > -1 ? status.num_seeds + ' (' + status.total_seeds + ')' : status.num_seeds - peers = status.total_peers > -1 ? status.num_peers + ' (' + status.total_peers + ')' : status.num_peers + seeders = status.total_seeds > -1 ? status.num_seeds + ' (' + status.total_seeds + ')' : status.num_seeds; + peers = status.total_peers > -1 ? status.num_peers + ' (' + status.total_peers + ')' : status.num_peers; + last_seen_complete = status.last_seen_complete > 0.0 ? fdate(status.last_seen_complete) : "Never"; var data = { downloaded: fsize(status.total_done, true), uploaded: fsize(status.total_uploaded, true), @@ -109,7 +110,8 @@ Deluge.details.StatusTab = Ext.extend(Ext.Panel, { active_time: ftime(status.active_time), seeding_time: ftime(status.seeding_time), seed_rank: status.seed_rank, - time_added: fdate(status.time_added) + time_added: fdate(status.time_added), + last_seen_complete: last_seen_complete } data.auto_managed = _((status.is_auto_managed) ? 'True' : 'False'); diff --git a/deluge/ui/web/render/tab_status.html b/deluge/ui/web/render/tab_status.html index 7c003ca49..1b5fb3764 100644 --- a/deluge/ui/web/render/tab_status.html +++ b/deluge/ui/web/render/tab_status.html @@ -16,6 +16,7 @@
${_("Peers")}:
${_("Availability")}:
${_("Auto Managed")}:
+
${_("Last Seen Complete")}: 
${_("Active Time")}: