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")}: