Release SyncVito 1.0.10

This commit is contained in:
Davito committed 2026-09-27 22:26:13 +02:00
1 parent 4efc1efa18
commit 7098fa1c0c
9 files changed
+317 -20

No files matched your search

+60 -3
View File
@@ -235,6 +235,9 @@ class MainWindow(QMainWindow):
self.sync_all_button.setProperty("primary", True)
self.sync_all_button.clicked.connect(self.coordinator.enqueue_all)
layout.addWidget(self.sync_all_button, 0, Qt.AlignmentFlag.AlignVCenter)
self.header_pause_button = QPushButton("Pausieren")
self.header_pause_button.clicked.connect(self._toggle_pause)
layout.addWidget(self.header_pause_button, 0, Qt.AlignmentFlag.AlignVCenter)
return header
def _build_tasks_page(self) -> QWidget:
@@ -418,8 +421,14 @@ class MainWindow(QMainWindow):
self.progress_bar.setRange(0, 100)
self.progress_bar.setValue(0)
self.progress_bar.setFormat("%p %")
self.dock_pause_button = QPushButton("Pausieren")
self.dock_pause_button.setObjectName("DockPauseButton")
self.dock_pause_button.setFixedHeight(34)
if hasattr(self, "_toggle_pause"):
self.dock_pause_button.clicked.connect(self._toggle_pause)
layout.addWidget(self.progress_text)
layout.addWidget(self.progress_bar)
layout.addWidget(self.dock_pause_button)
layout.addStretch(1)
return dock
@@ -478,6 +487,11 @@ class MainWindow(QMainWindow):
def _refresh_tasks(self) -> None:
self.task_table.setRowCount(len(self.config.tasks))
running_id = self.coordinator.running_task_id
queued_ids = self.coordinator.queued_task_ids
paused_id = self.coordinator.paused_task_id
is_globally_paused = self.config.settings.paused
for row, task in enumerate(self.config.tasks):
name = QTableWidgetItem(task.name)
name.setData(Qt.ItemDataRole.UserRole, task.id)
@@ -489,9 +503,26 @@ class MainWindow(QMainWindow):
TriggerMode.INTERVAL: f"Alle {task.interval_minutes} Min.",
}[task.trigger]
trigger = QTableWidgetItem(trigger_text)
status = QTableWidgetItem(self._runtime_state_text(self.coordinator.task_state(task.id)))
base_state = self.coordinator.task_state(task.id)
if task.id == running_id:
val = self.progress_bar.value()
status_text = f"🔄 Läuft ({val}%)"
tip = f"Wird synchronisiert ({val}%)\n{self.progress_text.toolTip()}"
elif is_globally_paused and (task.id == paused_id or task.id in queued_ids):
status_text = "⏸ Pausiert"
tip = "Aufgabe pausiert – setzt beim Klick auf Fortsetzen fort."
elif task.id in queued_ids:
pos = queued_ids.index(task.id) + 1
status_text = f"⏳ In Warteschlange (#{pos})"
tip = f"Steht an Position {pos} der Warteschlange"
else:
status_text = self._runtime_state_text(base_state)
tip = status_text
status = QTableWidgetItem(status_text)
for column, item in enumerate((name, pair, direction, trigger, status)):
item.setToolTip(item.text())
item.setToolTip(tip if column == 4 else item.text())
self.task_table.setItem(row, column, item)
def _selected_task(self) -> SyncTask | None:
@@ -700,17 +731,43 @@ class MainWindow(QMainWindow):
self.tray_sync_action.setEnabled(update_idle and sync_idle)
self.update_button.setEnabled(update_idle and sync_idle)
self.tray_update_action.setEnabled(update_idle and sync_idle)
self._update_pause_action()
self._refresh_tasks()
def _toggle_pause(self) -> None:
self.coordinator.set_paused(not self.config.settings.paused)
self._update_pause_action()
def _update_pause_action(self) -> None:
self.pause_action.setText("Fortsetzen" if self.config.settings.paused else "Pausieren")
is_paused = self.config.settings.paused
if is_paused:
btn_text = "▶ Fortsetzen"
tray_text = "Fortsetzen"
else:
btn_text = "⏸ Pausieren" if self.coordinator.is_running else "Pausieren"
tray_text = "Pausieren"
self.pause_action.setText(tray_text)
for btn in (getattr(self, "header_pause_button", None), getattr(self, "dock_pause_button", None)):
if btn is not None:
btn.setText(btn_text)
btn.setProperty("primary", is_paused)
btn.style().unpolish(btn)
btn.style().polish(btn)
def _update_progress(self, value: int, detail: str) -> None:
self.progress_bar.setValue(value)
self.progress_text.setText(detail)
running_id = self.coordinator.running_task_id
if running_id:
for row in range(self.task_table.rowCount()):
item = self.task_table.item(row, 0)
if item and item.data(Qt.ItemDataRole.UserRole) == running_id:
status_item = self.task_table.item(row, 4)
if status_item:
status_item.setText(f"🔄 Läuft ({value}%)")
status_item.setToolTip(detail)
break
def _append_log(self, action: str, level: str, detail: str) -> None:
row = self.log_table.rowCount()