Menú d'opcions: ocultar no descarregats i comprovar actualitzacions, amb persistència
This commit is contained in:
@@ -32,6 +32,7 @@ class GameRow(QFrame):
|
||||
super().__init__(parent)
|
||||
self.game = game
|
||||
self.root = root
|
||||
self._update_available = False
|
||||
self.setObjectName("gameRow")
|
||||
self.setFrameShape(QFrame.StyledPanel)
|
||||
|
||||
@@ -79,6 +80,14 @@ class GameRow(QFrame):
|
||||
|
||||
# ----------------------------------------------------------------- estado
|
||||
|
||||
def is_installed(self) -> bool:
|
||||
return (repo_dir(self.root, self.game.id) / ".git").exists()
|
||||
|
||||
def set_update_available(self, available: bool) -> None:
|
||||
"""Marca/desmarca la fila como 'tiene actualización pendiente'."""
|
||||
self._update_available = available
|
||||
self.refresh()
|
||||
|
||||
def refresh(self) -> None:
|
||||
"""Recarga icono, descripción y estado desde la cache local."""
|
||||
meta = load_meta(self.root, self.game.id)
|
||||
@@ -104,11 +113,15 @@ class GameRow(QFrame):
|
||||
)
|
||||
|
||||
def _set_status(self, meta: GameMeta) -> None:
|
||||
installed = (repo_dir(self.root, self.game.id) / ".git").exists()
|
||||
if not installed:
|
||||
if not self.is_installed():
|
||||
self.status_label.setText("No instalado")
|
||||
self.status_label.setStyleSheet("color: #cc8855; font-size: 11px;")
|
||||
self.run_btn.setEnabled(True) # se permite, avisará si no está
|
||||
elif self._update_available:
|
||||
self.status_label.setText("⬆ Actualización disponible")
|
||||
self.status_label.setStyleSheet(
|
||||
"color: #e0a030; font-weight: bold; font-size: 11px;"
|
||||
)
|
||||
else:
|
||||
ver = f" {meta.version}" if meta.version else ""
|
||||
self.status_label.setText(f"Instalado{ver}")
|
||||
|
||||
Reference in New Issue
Block a user