Batch-Export geht jetzt

Dieser Commit ist enthalten in:
Claude Project Manager
2025-11-16 23:24:04 +01:00
Ursprung 404100abc4
Commit 2d276f167c
4 geänderte Dateien mit 471 neuen und 28 gelöschten Zeilen

Datei anzeigen

@ -4,7 +4,7 @@ Account Card Widget - Kompakte Account-Karte nach Styleguide
from PyQt5.QtWidgets import (
QFrame, QVBoxLayout, QHBoxLayout, QLabel, QPushButton,
QGridLayout, QWidget, QApplication
QGridLayout, QWidget, QApplication, QCheckBox
)
from PyQt5.QtCore import Qt, pyqtSignal, QSize, QTimer
from PyQt5.QtGui import QFont, QPixmap
@ -17,17 +17,20 @@ class AccountCard(QFrame):
"""
Kompakte Account-Karte nach Styleguide für Light Mode
"""
# Signals
login_requested = pyqtSignal(dict) # Account-Daten
export_requested = pyqtSignal(dict) # Account-Daten
delete_requested = pyqtSignal(dict) # Account-Daten
selection_changed = pyqtSignal(int, bool) # account_id, selected
def __init__(self, account_data, language_manager=None):
super().__init__()
self.account_data = account_data
self.language_manager = language_manager
self.password_visible = False
self.selection_mode = False
self.is_selected_state = False
# Timer für Icon-Animation
self.email_copy_timer = QTimer()
@ -136,16 +139,34 @@ class AccountCard(QFrame):
# Header Zeile
header_layout = QHBoxLayout()
# Platform Icon + Username
info_layout = QHBoxLayout()
info_layout.setSpacing(8)
# Status wird jetzt über Karten-Hintergrund und Umrandung angezeigt
# Selection Checkbox (hidden by default)
self.selection_checkbox = QCheckBox()
self.selection_checkbox.setVisible(False)
self.selection_checkbox.stateChanged.connect(self._on_selection_changed)
self.selection_checkbox.setStyleSheet("""
QCheckBox::indicator {
width: 20px;
height: 20px;
border-radius: 4px;
border: 2px solid #D1D5DB;
}
QCheckBox::indicator:checked {
background-color: #0099CC;
border-color: #0099CC;
}
""")
info_layout.addWidget(self.selection_checkbox)
# Platform Icon
platform_icon = IconFactory.create_icon_label(
self.account_data.get("platform", "").lower(),
self.account_data.get("platform", "").lower(),
size=18
)
info_layout.addWidget(platform_icon)
@ -378,4 +399,46 @@ class AccountCard(QFrame):
def update_status(self, new_status: str):
"""Aktualisiert den Status der Account-Karte und das Styling"""
self.account_data["status"] = new_status
self._apply_status_styling()
self._apply_status_styling()
# ========== Selection Mode Methods ==========
def set_selection_mode(self, enabled: bool):
"""
Aktiviert/Deaktiviert den Selection-Modus.
Args:
enabled: True = Checkbox anzeigen, False = Checkbox verstecken
"""
self.selection_mode = enabled
self.selection_checkbox.setVisible(enabled)
if not enabled:
# Reset selection when mode is disabled
self.set_selected(False)
def _on_selection_changed(self, state):
"""Handler für Checkbox state change"""
self.is_selected_state = (state == Qt.Checked)
account_id = self.account_data.get("id")
if account_id:
self.selection_changed.emit(account_id, self.is_selected_state)
def is_selected(self) -> bool:
"""
Gibt zurück ob die Card ausgewählt ist.
Returns:
True wenn ausgewählt, sonst False
"""
return self.is_selected_state
def set_selected(self, selected: bool):
"""
Setzt den Auswahl-Status.
Args:
selected: True = auswählen, False = Auswahl aufheben
"""
self.is_selected_state = selected
self.selection_checkbox.setChecked(selected)