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." }