summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2019-02-17 10:02:48 -0800
committerGitHub <noreply@github.com>2019-02-17 10:02:48 -0800
commit8921bfeb56ca23237273fd170f5701916c1dda5f (patch)
tree86f511a9d33aa54f6c2875cc02bc654583c10fe8
parent1dbd82f74a72c8e786c798219c93a15efb8c9df1 (diff)
parent8cf8aa201d6b79805056c4844d049d9b99dd0560 (diff)
downloadonionshare-8921bfeb56ca23237273fd170f5701916c1dda5f.tar.gz
onionshare-8921bfeb56ca23237273fd170f5701916c1dda5f.zip
Merge pull request #905 from mig5/902_dont_clear_in_progress
Don't clear in-progress transfers from the History list
-rw-r--r--onionshare_gui/mode/history.py41
1 files changed, 28 insertions, 13 deletions
diff --git a/onionshare_gui/mode/history.py b/onionshare_gui/mode/history.py
index 6af804b2..1546cb68 100644
--- a/onionshare_gui/mode/history.py
+++ b/onionshare_gui/mode/history.py
@@ -31,6 +31,10 @@ class HistoryItem(QtWidgets.QWidget):
"""
The base history item
"""
+ STATUS_STARTED = 0
+ STATUS_FINISHED = 1
+ STATUS_CANCELED = 2
+
def __init__(self):
super(HistoryItem, self).__init__()
@@ -90,6 +94,7 @@ class ShareHistoryItem(HistoryItem):
self.downloaded_bytes = 0
self.started = time.time()
self.started_dt = datetime.fromtimestamp(self.started)
+ self.status = HistoryItem.STATUS_STARTED
# Label
self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started_dt.strftime("%b %d, %I:%M%p")))
@@ -124,6 +129,7 @@ class ShareHistoryItem(HistoryItem):
# Change the label
self.label.setText(self.get_finished_label_text(self.started_dt))
+ self.status = HistoryItem.STATUS_FINISHED
else:
elapsed = time.time() - self.started
@@ -142,6 +148,7 @@ class ShareHistoryItem(HistoryItem):
def cancel(self):
self.progress_bar.setFormat(strings._('gui_canceled'))
+ self.status = HistoryItem.STATUS_CANCELED
@property
def estimated_time_remaining(self):
@@ -237,6 +244,7 @@ class ReceiveHistoryItem(HistoryItem):
self.id = id
self.content_length = content_length
self.started = datetime.now()
+ self.status = HistoryItem.STATUS_STARTED
# Label
self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started.strftime("%b %d, %I:%M%p")))
@@ -313,6 +321,9 @@ class ReceiveHistoryItem(HistoryItem):
self.files[data['filename']].set_dir(data['dir'])
elif data['action'] == 'finished':
+ # Change the status
+ self.status = HistoryItem.STATUS_FINISHED
+
# Hide the progress bar
self.progress_bar.hide()
@@ -320,6 +331,9 @@ class ReceiveHistoryItem(HistoryItem):
self.label.setText(self.get_finished_label_text(self.started))
elif data['action'] == 'canceled':
+ # Change the status
+ self.status = HistoryItem.STATUS_CANCELED
+
# Hide the progress bar
self.progress_bar.hide()
@@ -389,11 +403,11 @@ class HistoryItemList(QtWidgets.QScrollArea):
"""
Reset all items, emptying the list. Override this method.
"""
- for item in self.items.values():
- self.items_layout.removeWidget(item)
- item.close()
- self.items = {}
-
+ for key, item in self.items.copy().items():
+ if item.status != HistoryItem.STATUS_STARTED:
+ self.items_layout.removeWidget(item)
+ item.close()
+ del self.items[key]
class History(QtWidgets.QWidget):
"""
@@ -494,16 +508,17 @@ class History(QtWidgets.QWidget):
Reset all items.
"""
self.item_list.reset()
-
- # Hide not empty, show empty
- self.not_empty.hide()
- self.empty.show()
-
- # Reset counters
+ if len(self.item_list.items) == 0:
+ # Hide not empty, show empty
+ self.not_empty.hide()
+ self.empty.show()
+ # Reset in-progress counter
+ self.in_progress_count = 0
+ self.update_in_progress()
+
+ # Reset completed counter
self.completed_count = 0
- self.in_progress_count = 0
self.update_completed()
- self.update_in_progress()
def update_completed(self):
"""