Files
Serien-Checker/serien_checker/ui/widgets.py
2025-12-21 14:35:08 +01:00

106 lines
3.0 KiB
Python

"""
Custom widgets for Serien-Checker UI
"""
from PyQt5.QtWidgets import (
QDialog, QVBoxLayout, QHBoxLayout, QLabel, QProgressBar,
QPushButton, QTextEdit
)
from PyQt5.QtCore import Qt
class ProgressDialog(QDialog):
"""Dialog showing progress for long-running operations"""
def __init__(self, parent, title: str = "Bitte warten..."):
super().__init__(parent)
self.setWindowTitle(title)
self.setModal(True)
self.setFixedSize(400, 150)
self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
self.init_ui()
def init_ui(self):
"""Initialize UI"""
layout = QVBoxLayout(self)
# Status label
self.status_label = QLabel("Initialisiere...")
layout.addWidget(self.status_label)
# Progress bar
self.progress_bar = QProgressBar()
self.progress_bar.setRange(0, 100)
self.progress_bar.setValue(0)
layout.addWidget(self.progress_bar)
# Cancel button
button_layout = QHBoxLayout()
button_layout.addStretch()
self.cancel_btn = QPushButton("Abbrechen")
self.cancel_btn.clicked.connect(self.reject)
button_layout.addWidget(self.cancel_btn)
layout.addLayout(button_layout)
def set_progress(self, value: int, message: str = None):
"""Update progress"""
self.progress_bar.setValue(value)
if message:
self.status_label.setText(message)
def set_indeterminate(self):
"""Set progress bar to indeterminate mode"""
self.progress_bar.setRange(0, 0)
def set_determinate(self):
"""Set progress bar to determinate mode"""
self.progress_bar.setRange(0, 100)
class UpdateResultDialog(QDialog):
"""Dialog showing update results"""
def __init__(self, parent, stats: dict):
super().__init__(parent)
self.setWindowTitle("Update-Ergebnis")
self.setModal(True)
self.resize(450, 300)
self.init_ui(stats)
def init_ui(self, stats: dict):
"""Initialize UI"""
layout = QVBoxLayout(self)
# Title
title = QLabel("Update abgeschlossen")
title.setStyleSheet("font-weight: bold; font-size: 14px;")
layout.addWidget(title)
# Results text
results = QTextEdit()
results.setReadOnly(True)
text = "Zusammenfassung:\n\n"
text += f"Neue Staffeln: {stats.get('new_seasons', 0)}\n"
text += f"Neue Folgen: {stats.get('new_episodes', 0)}\n"
text += f"Aktualisierte Folgen: {stats.get('updated_episodes', 0)}\n"
text += f"Unverändert: {stats.get('unchanged', 0)}\n"
results.setText(text)
layout.addWidget(results)
# OK button
button_layout = QHBoxLayout()
button_layout.addStretch()
ok_btn = QPushButton("OK")
ok_btn.clicked.connect(self.accept)
ok_btn.setDefault(True)
button_layout.addWidget(ok_btn)
layout.addLayout(button_layout)