Mode esborrar des del menú: tria un joc descarregat i s'elimina

This commit is contained in:
2026-05-29 22:13:58 +02:00
parent 0334e79480
commit bfa01f31e3
2 changed files with 47 additions and 6 deletions
+20 -3
View File
@@ -40,6 +40,7 @@ class GameRow(QFrame):
self.root = root
self._update_available = False
self._busy = False
self._delete_mode = False
self.setObjectName("gameRow")
self.setFrameShape(QFrame.StyledPanel)
# La fila és un botó: cursor de mà i ressaltat en passar el ratolí.
@@ -118,6 +119,11 @@ class GameRow(QFrame):
self._update_available = available
self.refresh()
def set_delete_mode(self, on: bool) -> None:
"""Activa/desactiva el mode esborrar (canvia el text d'acció a 'Esborra')."""
self._delete_mode = on
self.refresh()
def refresh(self) -> None:
"""Recarrega icona, descripció i estat des de la cache local."""
meta = load_meta(self.root, self.game.id)
@@ -143,20 +149,31 @@ class GameRow(QFrame):
)
def _set_status(self, meta: GameMeta) -> None:
if not self.is_installed():
installed = self.is_installed()
# Text d'estat (independent del mode esborrar).
if not installed:
self.status_label.setText("No descarregat")
self.status_label.setStyleSheet("color: #cc8855; font-size: 11px;")
self._set_action("Descarrega", "#4a90d9")
elif self._update_available:
self.status_label.setText("⬆ Actualització disponible")
self.status_label.setStyleSheet(
"color: #e0a030; font-weight: bold; font-size: 11px;"
)
self._set_action("Actualitza", "#e0a030")
else:
ver = f" {meta.version}" if meta.version else ""
self.status_label.setText(f"Descarregat{ver}")
self.status_label.setStyleSheet("color: #6fae6f; font-size: 11px;")
# Text d'acció (què fa el clic).
if self._delete_mode:
# Només es pot esborrar el que està descarregat.
self._set_action("Esborra", "#d9534f") if installed else self.action_label.clear()
elif not installed:
self._set_action("Descarrega", "#4a90d9")
elif self._update_available:
self._set_action("Actualitza", "#e0a030")
else:
self._set_action("Juga", "#6fae6f")
def _set_action(self, text: str, color: str) -> None: