warchron_app/src/warchron/controller/player_controller.py

43 lines
1.5 KiB
Python
Raw Normal View History

2026-02-10 09:53:49 +01:00
from typing import TYPE_CHECKING
from PyQt6.QtWidgets import QMessageBox, QDialog
from warchron.constants import RefreshScope
if TYPE_CHECKING:
from warchron.controller.app_controller import AppController
from warchron.view.player_dialog import PlayerDialog
class PlayerController:
def __init__(self, app: "AppController"):
self.app: AppController = app
def _validate_player_inputs(self, name: str) -> bool:
if not name.strip():
QMessageBox.warning(
self.app.view, "Invalid name", "Player name cannot be empty."
)
return False
return True
def add_player(self) -> None:
dialog = PlayerDialog(self.app.view)
result = dialog.exec() # modal blocking dialog
if result == QDialog.DialogCode.Accepted:
name = dialog.get_player_name()
if not self._validate_player_inputs(name):
return
self.app.model.add_player(name)
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.PLAYERS_LIST)
def edit_player(self, player_id: str) -> None:
play = self.app.model.get_player(player_id)
player_dialog = PlayerDialog(self.app.view, default_name=play.name)
if player_dialog.exec() == QDialog.DialogCode.Accepted:
name = player_dialog.get_player_name()
if not self._validate_player_inputs(name):
return
self.app.model.update_player(player_id, name=name)