aboutsummaryrefslogtreecommitdiff
path: root/onionshare_gui/downloads.py
diff options
context:
space:
mode:
Diffstat (limited to 'onionshare_gui/downloads.py')
-rw-r--r--onionshare_gui/downloads.py134
1 files changed, 0 insertions, 134 deletions
diff --git a/onionshare_gui/downloads.py b/onionshare_gui/downloads.py
deleted file mode 100644
index bf891b55..00000000
--- a/onionshare_gui/downloads.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-OnionShare | https://onionshare.org/
-
-Copyright (C) 2018 Micah Lee <micah@micahflee.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-import time
-
-from PyQt5 import QtCore, QtWidgets
-
-from onionshare import strings, common
-
-class Download(object):
-
- def __init__(self, download_id, total_bytes):
- self.download_id = download_id
- self.started = time.time()
- self.total_bytes = total_bytes
- self.downloaded_bytes = 0
-
- # make a new progress bar
- cssStyleData ="""
- QProgressBar {
- border: 1px solid #4e064f;
- background-color: #ffffff !important;
- text-align: center;
- color: #9b9b9b;
- font-size: 12px;
- }
-
- QProgressBar::chunk {
- background-color: #4e064f;
- width: 10px;
- }"""
- self.progress_bar = QtWidgets.QProgressBar()
- self.progress_bar.setTextVisible(True)
- self.progress_bar.setAttribute(QtCore.Qt.WA_DeleteOnClose)
- self.progress_bar.setAlignment(QtCore.Qt.AlignHCenter)
- self.progress_bar.setMinimum(0)
- self.progress_bar.setMaximum(total_bytes)
- self.progress_bar.setValue(0)
- self.progress_bar.setStyleSheet(cssStyleData)
- self.progress_bar.total_bytes = total_bytes
-
- # start at 0
- self.update(0)
-
- def update(self, downloaded_bytes):
- self.downloaded_bytes = downloaded_bytes
-
- self.progress_bar.setValue(downloaded_bytes)
- if downloaded_bytes == self.progress_bar.total_bytes:
- pb_fmt = strings._('gui_download_progress_complete').format(
- common.format_seconds(time.time() - self.started))
- else:
- elapsed = time.time() - self.started
- if elapsed < 10:
- # Wait a couple of seconds for the download rate to stabilize.
- # This prevents a "Windows copy dialog"-esque experience at
- # the beginning of the download.
- pb_fmt = strings._('gui_download_progress_starting').format(
- common.human_readable_filesize(downloaded_bytes))
- else:
- pb_fmt = strings._('gui_download_progress_eta').format(
- common.human_readable_filesize(downloaded_bytes),
- self.estimated_time_remaining)
-
- self.progress_bar.setFormat(pb_fmt)
-
- def cancel(self):
- self.progress_bar.setFormat(strings._('gui_canceled'))
-
- @property
- def estimated_time_remaining(self):
- return common.estimated_time_remaining(self.downloaded_bytes,
- self.total_bytes,
- self.started)
-
-
-class Downloads(QtWidgets.QWidget):
- """
- The downloads chunk of the GUI. This lists all of the active download
- progress bars.
- """
- def __init__(self):
- super(Downloads, self).__init__()
- self.downloads = {}
- self.layout = QtWidgets.QVBoxLayout()
- self.setLayout(self.layout)
-
- def add_download(self, download_id, total_bytes):
- """
- Add a new download progress bar.
- """
- self.parent().show()
-
- # add it to the list
- download = Download(download_id, total_bytes)
- self.downloads[download_id] = download
- self.layout.insertWidget(-1, download.progress_bar)
-
- def update_download(self, download_id, downloaded_bytes):
- """
- Update the progress of a download progress bar.
- """
- self.downloads[download_id].update(downloaded_bytes)
-
- def cancel_download(self, download_id):
- """
- Update a download progress bar to show that it has been canceled.
- """
- self.downloads[download_id].cancel()
-
- def reset_downloads(self):
- """
- Reset the downloads back to zero
- """
- for download in self.downloads.values():
- self.layout.removeWidget(download.progress_bar)
- download.progress_bar.close()
- self.downloads = {}