diff --git a/onionshare_gui/receive_mode/__init__.py b/onionshare_gui/receive_mode/__init__.py
index c306d8a9..ac904600 100644
--- a/onionshare_gui/receive_mode/__init__.py
+++ b/onionshare_gui/receive_mode/__init__.py
@@ -54,10 +54,10 @@ class ReceiveMode(Mode):
# Information about share, and show uploads button
self.info_show_uploads = QtWidgets.QToolButton()
- self.info_show_uploads.setIcon(QtGui.QIcon(self.common.get_resource_path('images/download_window_gray.png')))
+ self.info_show_uploads.setIcon(QtGui.QIcon(self.common.get_resource_path('images/upload_window_gray.png')))
self.info_show_uploads.setCheckable(True)
- #self.info_show_uploads.toggled.connect(self.downloads_toggled)
- self.info_show_uploads.setToolTip(strings._('gui_downloads_window_tooltip', True))
+ self.info_show_uploads.toggled.connect(self.uploads_toggled)
+ self.info_show_uploads.setToolTip(strings._('gui_uploads_window_tooltip', True))
self.info_in_progress_uploads_count = QtWidgets.QLabel()
self.info_in_progress_uploads_count.setStyleSheet('QLabel { font-size: 12px; color: #666666; }')
@@ -146,9 +146,9 @@ class ReceiveMode(Mode):
Update the 'Downloads completed' info widget.
"""
if self.uploads_completed == 0:
- image = self.common.get_resource_path('images/download_completed_none.png')
+ image = self.common.get_resource_path('images/share_completed_none.png')
else:
- image = self.common.get_resource_path('images/download_completed.png')
+ image = self.common.get_resource_path('images/share_completed.png')
self.info_completed_uploads_count.setText('
{1:d}'.format(image, self.uploads_completed))
self.info_completed_uploads_count.setToolTip(strings._('info_completed_downloads_tooltip', True).format(self.uploads_completed))
@@ -157,10 +157,10 @@ class ReceiveMode(Mode):
Update the 'Downloads in progress' info widget.
"""
if self.uploads_in_progress == 0:
- image = self.common.get_resource_path('images/download_in_progress_none.png')
+ image = self.common.get_resource_path('images/share_in_progress_none.png')
else:
- image = self.common.get_resource_path('images/download_in_progress.png')
- self.info_show_uploads.setIcon(QtGui.QIcon(self.common.get_resource_path('images/download_window_green.png')))
+ image = self.common.get_resource_path('images/share_in_progress.png')
+ self.info_show_uploads.setIcon(QtGui.QIcon(self.common.get_resource_path('images/upload_window_green.png')))
self.info_in_progress_uploads_count.setText('
{1:d}'.format(image, self.uploads_in_progress))
self.info_in_progress_uploads_count.setToolTip(strings._('info_in_progress_downloads_tooltip', True).format(self.uploads_in_progress))
@@ -175,3 +175,13 @@ class ReceiveMode(Mode):
# Resize window
self.adjustSize()
+
+ def uploads_toggled(self, checked):
+ """
+ When the 'Show/hide uploads' button is toggled, show or hide the uploads window.
+ """
+ self.common.log('ReceiveMode', 'toggle_uploads')
+ if checked:
+ self.uploads.show()
+ else:
+ self.uploads.hide()
diff --git a/onionshare_gui/receive_mode/uploads.py b/onionshare_gui/receive_mode/uploads.py
index 821e4440..445e9406 100644
--- a/onionshare_gui/receive_mode/uploads.py
+++ b/onionshare_gui/receive_mode/uploads.py
@@ -21,16 +21,37 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings
-class Uploads(QtWidgets.QWidget):
+class Uploads(QtWidgets.QScrollArea):
"""
The uploads chunk of the GUI. This lists all of the active upload
progress bars, as well as information about each upload.
"""
def __init__(self, common):
super(Uploads, self).__init__()
-
self.common = common
- self.layout = QtWidgets.QVBoxLayout()
- self.layout.addStretch()
- self.setLayout(self.layout)
+ self.uploads = {}
+
+ self.setWindowTitle(strings._('gui_uploads', True))
+ self.setWidgetResizable(True)
+ self.setMaximumHeight(600)
+ self.setMinimumHeight(150)
+ self.setMinimumWidth(350)
+ self.setWindowIcon(QtGui.QIcon(common.get_resource_path('images/logo.png')))
+ self.setWindowFlags(QtCore.Qt.Sheet | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.CustomizeWindowHint)
+ self.vbar = self.verticalScrollBar()
+
+ uploads_label = QtWidgets.QLabel(strings._('gui_uploads', True))
+ uploads_label.setStyleSheet('QLabel { font-weight: bold; font-size 14px; text-align: center; }')
+ self.no_uploads_label = QtWidgets.QLabel(strings._('gui_no_uploads', True))
+
+ self.uploads_layout = QtWidgets.QVBoxLayout()
+
+ widget = QtWidgets.QWidget()
+ layout = QtWidgets.QVBoxLayout()
+ layout.addWidget(uploads_label)
+ layout.addWidget(self.no_uploads_label)
+ layout.addLayout(self.uploads_layout)
+ layout.addStretch()
+ widget.setLayout(layout)
+ self.setWidget(widget)
diff --git a/onionshare_gui/share_mode/__init__.py b/onionshare_gui/share_mode/__init__.py
index 55d21317..97d3d23f 100644
--- a/onionshare_gui/share_mode/__init__.py
+++ b/onionshare_gui/share_mode/__init__.py
@@ -345,9 +345,9 @@ class ShareMode(Mode):
Update the 'Downloads completed' info widget.
"""
if self.downloads_completed == 0:
- image = self.common.get_resource_path('images/download_completed_none.png')
+ image = self.common.get_resource_path('images/share_completed_none.png')
else:
- image = self.common.get_resource_path('images/download_completed.png')
+ image = self.common.get_resource_path('images/share_completed.png')
self.info_completed_downloads_count.setText('
{1:d}'.format(image, self.downloads_completed))
self.info_completed_downloads_count.setToolTip(strings._('info_completed_downloads_tooltip', True).format(self.downloads_completed))
@@ -356,9 +356,9 @@ class ShareMode(Mode):
Update the 'Downloads in progress' info widget.
"""
if self.downloads_in_progress == 0:
- image = self.common.get_resource_path('images/download_in_progress_none.png')
+ image = self.common.get_resource_path('images/share_in_progress_none.png')
else:
- image = self.common.get_resource_path('images/download_in_progress.png')
+ image = self.common.get_resource_path('images/share_in_progress.png')
self.info_show_downloads.setIcon(QtGui.QIcon(self.common.get_resource_path('images/download_window_green.png')))
self.info_in_progress_downloads_count.setText('
{1:d}'.format(image, self.downloads_in_progress))
self.info_in_progress_downloads_count.setToolTip(strings._('info_in_progress_downloads_tooltip', True).format(self.downloads_in_progress))
diff --git a/share/images/download_completed.png b/share/images/share_completed.png
similarity index 100%
rename from share/images/download_completed.png
rename to share/images/share_completed.png
diff --git a/share/images/download_completed_none.png b/share/images/share_completed_none.png
similarity index 100%
rename from share/images/download_completed_none.png
rename to share/images/share_completed_none.png
diff --git a/share/images/download_in_progress.png b/share/images/share_in_progress.png
similarity index 100%
rename from share/images/download_in_progress.png
rename to share/images/share_in_progress.png
diff --git a/share/images/download_in_progress_none.png b/share/images/share_in_progress_none.png
similarity index 100%
rename from share/images/download_in_progress_none.png
rename to share/images/share_in_progress_none.png
diff --git a/share/images/upload_window_gray.png b/share/images/upload_window_gray.png
new file mode 100644
index 00000000..80db4b8f
Binary files /dev/null and b/share/images/upload_window_gray.png differ
diff --git a/share/images/upload_window_green.png b/share/images/upload_window_green.png
new file mode 100644
index 00000000..652ddaff
Binary files /dev/null and b/share/images/upload_window_green.png differ
diff --git a/share/locale/en.json b/share/locale/en.json
index 50bb53c4..5322e86a 100644
--- a/share/locale/en.json
+++ b/share/locale/en.json
@@ -183,5 +183,8 @@
"systray_close_server_message": "A user closed the server",
"systray_page_loaded_title": "OnionShare Page Loaded",
"systray_download_page_loaded_message": "A user loaded the download page",
- "systray_upload_page_loaded_message": "A user loaded the upload page"
+ "systray_upload_page_loaded_message": "A user loaded the upload page",
+ "gui_uploads": "Upload History",
+ "gui_uploads_window_tooltip": "Show/hide uploads",
+ "gui_no_uploads": "No uploads yet."
}