Files
AccountForger-neuerUpload/views/components/tab_navigation.py
Claude Project Manager 2644c4e111 DarkMode ist existent yeah
2025-08-10 17:46:30 +02:00

102 Zeilen
3.2 KiB
Python

"""
Tab Navigation Component nach Styleguide
"""
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QPushButton, QLabel
from PyQt5.QtCore import pyqtSignal, Qt
from PyQt5.QtGui import QFont
class TabNavigation(QWidget):
"""
Tab-Navigation nach Styleguide mit zwei Modi:
- Plattformen (Standard)
- Accounts
"""
# Signal wird ausgelöst wenn Tab gewechselt wird (0=Plattformen, 1=Accounts)
tab_changed = pyqtSignal(int)
def __init__(self, language_manager=None):
super().__init__()
self.language_manager = language_manager
self.current_tab = 0
self.init_ui()
if self.language_manager:
self.language_manager.language_changed.connect(self.update_texts)
self.update_texts()
def init_ui(self):
"""Initialisiert die UI nach Styleguide"""
# Feste Höhe nach Styleguide
self.setFixedHeight(48)
# Set object name for QSS targeting - NO inline styles!
self.setObjectName("tab_navigation")
# Layout
layout = QHBoxLayout(self)
layout.setContentsMargins(40, 0, 40, 0)
layout.setSpacing(24)
# Tab Buttons erstellen
self.platform_tab = self._create_tab_button("Plattformen", True)
self.platform_tab.clicked.connect(lambda: self._on_tab_clicked(0))
layout.addWidget(self.platform_tab)
# Accounts Tab (ohne Badge)
self.accounts_tab = self._create_tab_button("Accounts", False)
self.accounts_tab.clicked.connect(lambda: self._on_tab_clicked(1))
layout.addWidget(self.accounts_tab)
# Spacer
layout.addStretch()
def _create_tab_button(self, text, active=False):
"""Erstellt einen Tab-Button nach Styleguide"""
btn = QPushButton(text)
btn.setCheckable(True)
btn.setChecked(active)
btn.setCursor(Qt.PointingHandCursor)
# Poppins Font
font = QFont("Poppins", 15)
font.setWeight(QFont.Medium)
btn.setFont(font)
# No inline styles - handled by QSS generator
return btn
def _on_tab_clicked(self, index):
"""Behandelt Tab-Klicks"""
if self.current_tab != index:
self.current_tab = index
# Update button states
self.platform_tab.setChecked(index == 0)
self.accounts_tab.setChecked(index == 1)
# Emit signal
self.tab_changed.emit(index)
def set_active_tab(self, index):
"""Setzt den aktiven Tab programmatisch"""
self._on_tab_clicked(index)
def update_account_count(self, count):
"""Deprecated: Account-Anzahl wird nicht mehr im Tab angezeigt"""
pass
def update_texts(self):
"""Aktualisiert die Texte gemäß der aktuellen Sprache"""
if not self.language_manager:
return
self.platform_tab.setText(
self.language_manager.get_text("platform_selector.platforms_tab", "Plattformen")
)
self.accounts_tab.setText(
self.language_manager.get_text("platform_selector.accounts_tab", "Accounts")
)