Release SyncVito 1.0.10
This commit is contained in:
1 parent
4efc1efa18
commit
7098fa1c0c
9 files changed
+317
-20
No files matched your search
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user