X-Problem gelöst
Dieser Commit ist enthalten in:
@ -11,6 +11,7 @@ from PyQt5.QtCore import Qt, pyqtSignal
|
||||
from PyQt5.QtGui import QFont
|
||||
|
||||
from views.widgets.account_card import AccountCard
|
||||
from application.services.platform_service import PlatformService
|
||||
|
||||
logger = logging.getLogger("accounts_overview")
|
||||
|
||||
@ -19,9 +20,11 @@ class SidebarFilter(QWidget):
|
||||
"""Sidebar mit Plattform-Filter nach Styleguide"""
|
||||
filter_changed = pyqtSignal(str)
|
||||
|
||||
def __init__(self, language_manager=None):
|
||||
def __init__(self, language_manager=None, db_manager=None):
|
||||
super().__init__()
|
||||
self.language_manager = language_manager
|
||||
self.db_manager = db_manager
|
||||
self.platform_service = PlatformService(db_manager)
|
||||
self.filter_buttons = []
|
||||
self.account_counts = {}
|
||||
self.init_ui()
|
||||
@ -41,18 +44,15 @@ class SidebarFilter(QWidget):
|
||||
|
||||
# Title removed - no longer needed
|
||||
|
||||
# Filter Buttons
|
||||
self.filters = [
|
||||
("Alle", "all"),
|
||||
("Instagram", "instagram"),
|
||||
("TikTok", "tiktok"),
|
||||
("Facebook", "facebook"),
|
||||
("X (Twitter)", "x"),
|
||||
("VK", "vk"),
|
||||
("OK.ru", "ok"),
|
||||
("Gmail", "gmail")
|
||||
]
|
||||
# Build filter list dynamically
|
||||
self.filters = [("Alle", "all")]
|
||||
|
||||
# Get platforms that should be shown in filters
|
||||
filter_platforms = self.platform_service.get_filter_platforms()
|
||||
for platform in filter_platforms:
|
||||
self.filters.append((platform.display_name, platform.id))
|
||||
|
||||
# Create filter buttons
|
||||
for name, key in self.filters:
|
||||
btn = self._create_filter_button(name, key)
|
||||
self.filter_buttons.append((btn, key))
|
||||
@ -136,7 +136,7 @@ class AccountsOverviewView(QWidget):
|
||||
main_layout.setSpacing(0)
|
||||
|
||||
# Sidebar
|
||||
self.sidebar = SidebarFilter(self.language_manager)
|
||||
self.sidebar = SidebarFilter(self.language_manager, self.db_manager)
|
||||
self.sidebar.filter_changed.connect(self._on_filter_changed)
|
||||
main_layout.addWidget(self.sidebar)
|
||||
|
||||
@ -212,9 +212,13 @@ class AccountsOverviewView(QWidget):
|
||||
if self.current_filter == "all":
|
||||
filtered_accounts = self.accounts
|
||||
else:
|
||||
# Use PlatformName for consistent filtering
|
||||
from domain.value_objects.platform_name import PlatformName
|
||||
filter_platform = PlatformName(self.current_filter)
|
||||
filtered_accounts = [
|
||||
acc for acc in self.accounts
|
||||
if acc.get("platform", "").lower() == self.current_filter
|
||||
if PlatformName.is_valid(acc.get("platform", "")) and
|
||||
PlatformName(acc.get("platform", "")) == filter_platform
|
||||
]
|
||||
|
||||
# Gruppiere nach Plattform wenn "Alle" ausgewählt
|
||||
@ -317,13 +321,19 @@ class AccountsOverviewView(QWidget):
|
||||
"""Behandelt Filter-Änderungen"""
|
||||
self.current_filter = filter_key
|
||||
|
||||
# Update title
|
||||
# Update title using PlatformName for consistency
|
||||
if filter_key == "all":
|
||||
self.title.setText("Alle Accounts")
|
||||
else:
|
||||
platform_name = filter_key.capitalize()
|
||||
if filter_key == "x":
|
||||
platform_name = "X (Twitter)"
|
||||
try:
|
||||
from domain.value_objects.platform_name import PlatformName
|
||||
platform_obj = PlatformName(filter_key)
|
||||
platform_name = platform_obj.display
|
||||
except:
|
||||
# Fallback
|
||||
platform_name = filter_key.capitalize()
|
||||
if filter_key == "x":
|
||||
platform_name = "X"
|
||||
self.title.setText(f"{platform_name} Accounts")
|
||||
|
||||
self._update_display()
|
||||
|
||||
@ -8,6 +8,7 @@ from PyQt5.QtCore import pyqtSignal, Qt
|
||||
from PyQt5.QtGui import QFont
|
||||
|
||||
from views.widgets.platform_button import PlatformButton
|
||||
from application.services.platform_service import PlatformService
|
||||
|
||||
|
||||
class PlatformGridView(QWidget):
|
||||
@ -19,9 +20,11 @@ class PlatformGridView(QWidget):
|
||||
# Signal wird ausgelöst, wenn eine Plattform ausgewählt wird
|
||||
platform_selected = pyqtSignal(str)
|
||||
|
||||
def __init__(self, language_manager=None):
|
||||
def __init__(self, language_manager=None, db_manager=None):
|
||||
super().__init__()
|
||||
self.language_manager = language_manager
|
||||
self.db_manager = db_manager
|
||||
self.platform_service = PlatformService(db_manager)
|
||||
self.init_ui()
|
||||
|
||||
if self.language_manager:
|
||||
@ -53,49 +56,38 @@ class PlatformGridView(QWidget):
|
||||
grid_layout = QGridLayout(platforms_container)
|
||||
grid_layout.setSpacing(24) # Styleguide Grid-Gap
|
||||
|
||||
# Definiere verfügbare Plattformen
|
||||
platforms = [
|
||||
{"name": "Instagram", "enabled": True},
|
||||
{"name": "Facebook", "enabled": True},
|
||||
{"name": "TikTok", "enabled": True},
|
||||
{"name": "X", "enabled": True},
|
||||
{"name": "VK", "enabled": True},
|
||||
{"name": "OK.ru", "enabled": True},
|
||||
{"name": "Gmail", "enabled": True}
|
||||
]
|
||||
# Lade nur aktive Plattformen aus dem Service
|
||||
active_platforms = self.platform_service.get_active_platforms()
|
||||
|
||||
# Icon-Pfade
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
parent_dir = os.path.dirname(os.path.dirname(current_dir))
|
||||
icons_dir = os.path.join(parent_dir, "resources", "icons")
|
||||
|
||||
# Platziere Buttons in einem 2x4 Grid
|
||||
for i, platform in enumerate(platforms):
|
||||
row = i // 4
|
||||
col = i % 4
|
||||
# Platziere Buttons in einem 2x2 Grid (nur 4 Plattformen)
|
||||
for i, platform in enumerate(active_platforms):
|
||||
row = i // 2 # 2 Spalten
|
||||
col = i % 2
|
||||
|
||||
# Icon-Pfad erstellen
|
||||
platform_icon_name = platform['name'].lower()
|
||||
if platform['name'] == "X":
|
||||
platform_icon_name = "twitter"
|
||||
elif platform['name'] == "OK.ru":
|
||||
platform_icon_name = "ok"
|
||||
icon_path = os.path.join(icons_dir, f"{platform_icon_name}.svg")
|
||||
|
||||
icon_path = os.path.join(icons_dir, platform.icon)
|
||||
if not os.path.exists(icon_path):
|
||||
icon_path = None
|
||||
# Fallback für X/Twitter
|
||||
if platform.id == "x":
|
||||
icon_path = os.path.join(icons_dir, "twitter.svg")
|
||||
if not os.path.exists(icon_path):
|
||||
icon_path = None
|
||||
|
||||
# Platform Button erstellen
|
||||
button = PlatformButton(
|
||||
platform["name"],
|
||||
platform.display_name,
|
||||
icon_path,
|
||||
platform["enabled"]
|
||||
True # Alle aktiven Plattformen sind enabled
|
||||
)
|
||||
|
||||
# Signal verbinden
|
||||
platform_signal_name = "x" if platform["name"] == "X" else platform["name"]
|
||||
button.clicked.connect(
|
||||
lambda checked=False, p=platform_signal_name: self.platform_selected.emit(p.lower())
|
||||
lambda checked=False, p=platform.id: self.platform_selected.emit(p)
|
||||
)
|
||||
|
||||
grid_layout.addWidget(button, row, col, Qt.AlignCenter)
|
||||
|
||||
@ -51,7 +51,7 @@ class PlatformSelector(QWidget):
|
||||
self.content_stack.setObjectName("content_stack") # For QSS targeting, no inline styles!
|
||||
|
||||
# Platform Grid View (Tab 0)
|
||||
self.platform_grid = PlatformGridView(self.language_manager)
|
||||
self.platform_grid = PlatformGridView(self.language_manager, self.db_manager)
|
||||
self.platform_grid.platform_selected.connect(self.platform_selected.emit)
|
||||
self.content_stack.addWidget(self.platform_grid)
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren