Skip to content

Commit

Permalink
Fix mathematical mistake
Browse files Browse the repository at this point in the history
  • Loading branch information
drew2a committed Mar 13, 2023
1 parent 4c7c3aa commit fdca453
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 33 deletions.
33 changes: 17 additions & 16 deletions src/tribler/gui/widgets/downloadprogressbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ def update_with_download(self, download):
if download["status"] in ("DLSTATUS_SEEDING", "DLSTATUS_CIRCUITS"):
self.set_fraction(download["progress"])
elif download["status"] in (
"DLSTATUS_HASHCHECKING",
"DLSTATUS_DOWNLOADING",
"DLSTATUS_STOPPED",
"DLSTATUS_STOPPED_ON_ERROR",
"DLSTATUS_HASHCHECKING",
"DLSTATUS_DOWNLOADING",
"DLSTATUS_STOPPED",
"DLSTATUS_STOPPED_ON_ERROR",
):
self.set_pieces()
else:
Expand Down Expand Up @@ -64,22 +64,23 @@ def paintEvent(self, _):

if len(self.pieces) <= self.width(): # We have less pieces than pixels
piece_width = self.width() / float(len(self.pieces))
for i in range(len(self.pieces)):
if self.pieces[i]:
for pixel in range(len(self.pieces)):
if self.pieces[pixel]:
painter.fillRect(
QRect(int(float(i) * piece_width), 0, math.ceil(piece_width), self.height()),
QRect(int(float(pixel) * piece_width), 0, math.ceil(piece_width), self.height()),
QColor(230, 115, 0),
)
else: # We have more pieces than pixels, group pieces
pieces_per_pixel = len(self.pieces) / float(self.width())
for i in range(self.width()):
begin_piece = int(pieces_per_pixel * i)
end_piece = int(begin_piece + pieces_per_pixel)
piece_sum = 0
for j in range(begin_piece, end_piece):
piece_sum += self.pieces[j]
qt_color = QColor()
qt_color.setHsl(26, 255, 128 + int(127 * (1 - piece_sum // pieces_per_pixel)))
painter.fillRect(QRect(i, 0, 10, self.height()), qt_color)
for pixel in range(self.width()):
start = int(pieces_per_pixel * pixel)
stop = int(start + pieces_per_pixel)

downloaded_pieces = sum(self.pieces[start:stop])
qt_color = QColor(230, 115, 0)
decimal_percentage = 1 - downloaded_pieces / pieces_per_pixel
fill_size = 128 + int(127 * decimal_percentage)
qt_color.setHsl(26, 255, fill_size)
painter.fillRect(QRect(pixel, 0, 10, self.height()), qt_color)
else:
painter.fillRect(QRect(0, 0, int(self.width() * self.fraction), self.height()), QColor(230, 115, 0))
33 changes: 16 additions & 17 deletions src/tribler/gui/widgets/downloadspage.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def initialize_downloads_page(self):
connect(self.window().stop_download_button.clicked, self.on_stop_download_clicked)
connect(self.window().remove_download_button.clicked, self.on_remove_download_clicked)

connect(self.window().downloads_list.itemSelectionChanged, self.on_download_item_clicked)
connect(self.window().downloads_list.itemSelectionChanged, self.update_downloads)

connect(self.window().downloads_list.customContextMenuRequested, self.on_right_click_item)

Expand Down Expand Up @@ -226,7 +226,7 @@ def on_received_downloads(self, downloads):

# Update the top download management button if we have a row selected
if len(self.window().downloads_list.selectedItems()) > 0:
self.on_download_item_clicked()
self.update_downloads()

self.received_downloads.emit(downloads)

Expand Down Expand Up @@ -279,26 +279,25 @@ def force_recheck_download_enabled(download_widgets):
]
)

def on_download_item_clicked(self):
selected_count = len(self.window().downloads_list.selectedItems())
def update_downloads(self):
selected = self.window().downloads_list.selectedItems()
selected_count = len(selected)
if selected_count == 0:
self.window().remove_download_button.setEnabled(False)
self.window().start_download_button.setEnabled(False)
self.window().stop_download_button.setEnabled(False)
self.window().download_details_widget.hide()
elif selected_count == 1:
self.selected_items = self.window().downloads_list.selectedItems()
self.window().remove_download_button.setEnabled(True)
self.window().start_download_button.setEnabled(DownloadsPage.start_download_enabled(self.selected_items))
self.window().stop_download_button.setEnabled(DownloadsPage.stop_download_enabled(self.selected_items))
return

self.selected_items = selected
self.window().remove_download_button.setEnabled(True)
self.window().start_download_button.setEnabled(DownloadsPage.start_download_enabled(self.selected_items))
self.window().stop_download_button.setEnabled(DownloadsPage.stop_download_enabled(self.selected_items))

self.window().download_details_widget.update_with_download(self.selected_items[0].download_info)
if selected_count == 1:
self.window().download_details_widget.update_with_download(selected[0].download_info)
self.window().download_details_widget.show()
else:
self.selected_items = self.window().downloads_list.selectedItems()
self.window().remove_download_button.setEnabled(True)
self.window().start_download_button.setEnabled(DownloadsPage.start_download_enabled(self.selected_items))
self.window().stop_download_button.setEnabled(DownloadsPage.stop_download_enabled(self.selected_items))
self.window().download_details_widget.hide()

def on_start_download_clicked(self, checked):
Expand All @@ -312,7 +311,7 @@ def on_download_resumed(self, json_result):
if selected_item.download_info["infohash"] == json_result["infohash"]:
selected_item.download_info['status'] = "DLSTATUS_DOWNLOADING"
selected_item.update_item()
self.on_download_item_clicked()
self.update_downloads()

def on_stop_download_clicked(self, checked):
for selected_item in self.selected_items:
Expand All @@ -325,7 +324,7 @@ def on_download_stopped(self, json_result):
if selected_item.download_info["infohash"] == json_result["infohash"]:
selected_item.download_info['status'] = "DLSTATUS_STOPPED"
selected_item.update_item()
self.on_download_item_clicked()
self.update_downloads()

def on_remove_download_clicked(self, checked):
self.dialog = ConfirmationDialog(
Expand Down Expand Up @@ -374,7 +373,7 @@ def on_forced_recheck(self, result):
if selected_item.download_info["infohash"] == result["infohash"]:
selected_item.download_info['status'] = "DLSTATUS_HASHCHECKING"
selected_item.update_item()
self.on_download_item_clicked()
self.update_downloads()

def on_change_anonymity(self, result):
pass
Expand Down

0 comments on commit fdca453

Please sign in to comment.