Compare commits

...

4 Commits

2 changed files with 42 additions and 18 deletions
+11 -8
View File
@@ -13,6 +13,7 @@ from PySide6.QtWidgets import (
QSpinBox,
QCheckBox,
)
import platform
def settings_dialog(self):
@@ -32,14 +33,16 @@ def settings_dialog(self):
update_checkbox_layout = QHBoxLayout()
# ignore updates checkbox
update_checkbox = QCheckBox()
update_checkbox_container.setLayout(update_checkbox_layout)
update_checkbox_layout.addWidget(QLabel("Ignore Updates: "))
update_checkbox_layout.addStretch()
update_checkbox.setChecked(state.ignore_updates)
update_checkbox.toggled.connect(lambda checked: setattr(state, 'ignore_updates', checked))
update_checkbox_layout.addWidget(update_checkbox)
dialog.layout().addWidget(update_checkbox_container)
if platform.system() == "Windows":
update_checkbox = QCheckBox()
update_checkbox_container.setLayout(update_checkbox_layout)
update_checkbox_layout.addWidget(QLabel("Ignore Updates: "))
update_checkbox_layout.addStretch()
update_checkbox.setChecked(state.ignore_updates)
update_checkbox.toggled.connect(lambda checked: setattr(state, 'ignore_updates', checked))
update_checkbox_layout.addWidget(update_checkbox)
dialog.layout().addWidget(update_checkbox_container)
# auto-resume downloads checkbox
+31 -10
View File
@@ -20,7 +20,7 @@ from PySide6.QtWidgets import (
QStyleOptionButton,
QStyledItemDelegate,
QApplication,
)
)
from PySide6.QtGui import QIcon, QAction, QCloseEvent, QImage, QPixmap
import darkdetect
@@ -210,9 +210,11 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
elif col == 4:
return f"{download.download_speed_string()}"
elif col == 5:
pass
return f"{download.completed_length_string()}"
elif col == 6:
return f"{download.total_length_string()}"
elif col == 7:
return f"{download.eta_string()}"
if role == Qt.UserRole and col == 0:
return download.is_paused
@@ -221,12 +223,31 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
def toggle_pause_resume(self, row):
download = state.downloads[row]
if download.progress == 100:
if state.download_path is not None and os.path.exists(state.download_path):
if platform.system() == "Windows":
os.startfile(os.path.normpath(state.download_path))
elif platform.system() == "Linux":
subprocess.Popen(["xdg-open", state.download_path])
elif platform.system() == "Darwin":
subprocess.Popen(["open", state.download_path])
else:
if platform.system() == "Windows":
os.startfile(os.path.normpath(os.getcwd()))
elif platform.system() == "Linux":
subprocess.Popen(["xdg-open", os.getcwd()])
elif platform.system() == "Darwin":
subprocess.Popen(["open", os.getcwd()])
return
if download.is_paused:
download.resume()
consoleLog(f"Resumed download: {download.name}", True)
else:
download.pause()
consoleLog(f"Paused download: {download.name}", True)
idx = self.index(row, 0)
self.dataChanged.emit(idx, idx, [Qt.DisplayRole, Qt.UserRole])
self.dataChanged.emit(idx, idx, [Qt.ItemDataRole.DisplayRole, Qt.ItemDataRole.UserRole])
class PauseResumeDelegate(QStyledItemDelegate):
clicked = Signal(int)
@@ -237,10 +258,16 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
return
paused = index.data(Qt.UserRole)
download = state.downloads[index.row()]
button = QStyleOptionButton()
button.rect = option.rect
button.text = "▶︎" if paused else "⏸︎"
if download.progress == 100:
button.text = "📁"
else:
button.text = "▶︎" if paused else "⏸︎"
button.state = QStyle.State_Enabled
QApplication.style().drawControl(
@@ -266,12 +293,6 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
def on_pause_resume_clicked(row):
download_model.toggle_pause_resume(row)
download = state.downloads[row]
if download.is_paused:
download.pause()
else:
download.resume()
delegate = PauseResumeDelegate(self.downloadList)
self.downloadList.setItemDelegateForColumn(0, delegate)
delegate.clicked.connect(on_pause_resume_clicked)