Compare commits

..

1 Commits

Author SHA1 Message Date
KeksNino f3379174b0 feat: improve pause/resume/open folder button in downloads tab 2026-01-30 21:59:31 +01:00
+29 -17
View File
@@ -252,27 +252,35 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
class PauseResumeDelegate(QStyledItemDelegate): class PauseResumeDelegate(QStyledItemDelegate):
clicked = Signal(int) clicked = Signal(int)
def paint(self, painter, option, index): def setEditorData(self, editor, index):
if index.column() != 0: download = state.downloads[index.row()]
super().paint(painter, option, index) button = editor.findChild(QtWidgets.QPushButton)
return
paused = index.data(Qt.UserRole) if button:
if download.progress == 100:
button.setText("📁")
else:
button.setText("▶︎" if download.is_paused else "⏸︎")
def createEditor(self, parent, option, index):
download = state.downloads[index.row()] download = state.downloads[index.row()]
button = QStyleOptionButton() widget = QWidget(parent)
button.rect = option.rect widget.setStyleSheet("border: none;")
layout = QHBoxLayout(widget)
layout.setContentsMargins(0, 0, 0, 0)
if download.progress == 100: if download.progress == 100:
button.text = "📁" btnPause = QtWidgets.QPushButton("📁")
else: else:
button.text = "▶︎" if paused else "⏸︎" btnPause = QtWidgets.QPushButton("▶︎" if download.is_paused else "⏸︎")
btnPause.setFixedSize(40, 30)
button.state = QStyle.State_Enabled btnPause.clicked.connect(lambda: self.clicked.emit(index.row()))
layout.addStretch()
QApplication.style().drawControl( layout.addWidget(btnPause)
QStyle.CE_PushButton, button, painter layout.addStretch()
) widget.setLayout(layout)
return widget
def editorEvent(self, event, model, option, index): def editorEvent(self, event, model, option, index):
if index.column() == 0 and event.type() == QEvent.Type.MouseButtonPress: if index.column() == 0 and event.type() == QEvent.Type.MouseButtonPress:
@@ -364,7 +372,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.progress_timer.start(1000) self.progress_timer.start(1000)
self.download_timer = QTimer() self.download_timer = QTimer()
self.download_timer.timeout.connect(lambda: run_thread(threading.Thread(target=self.download_list_update))) self.download_timer.timeout.connect(self.download_list_update)
self.download_timer.start(500) self.download_timer.start(500)
self.active_timer = QTimer() self.active_timer = QTimer()
@@ -393,6 +401,10 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
if self.download_model: if self.download_model:
self.download_model.layoutAboutToBeChanged.emit() self.download_model.layoutAboutToBeChanged.emit()
self.download_model.layoutChanged.emit() self.download_model.layoutChanged.emit()
for row in range(self.download_model.rowCount()):
idx = self.download_model.index(row, 0)
self.downloadList.closePersistentEditor(idx)
self.downloadList.openPersistentEditor(idx)
def closeEvent(self, event: QCloseEvent): def closeEvent(self, event: QCloseEvent):