game-details: Add edit cancelling

This commit is contained in:
Jamie Gravendeel
2025-12-04 01:08:53 +01:00
committed by kramo
parent 6d6542a169
commit 9d4932f22e
2 changed files with 45 additions and 12 deletions

View File

@@ -6,9 +6,14 @@ template $GameDetails: Adw.NavigationPage {
name: "details"; name: "details";
tag: "details"; tag: "details";
title: bind $_or(template.game as <$Game>.name, _("Add Game")) as <string>; title: bind $_or(template.game as <$Game>.name, _("Add Game")) as <string>;
hidden => $_exit(); hidden => $_cancel();
ShortcutController { ShortcutController {
Shortcut {
trigger: "Escape";
action: "action(details.cancel)";
}
Shortcut { Shortcut {
trigger: "Delete|KP_Delete"; trigger: "Delete|KP_Delete";
action: "action(details.remove)"; action: "action(details.remove)";
@@ -302,15 +307,32 @@ template $GameDetails: Adw.NavigationPage {
} }
} }
Button { Adw.WrapBox {
action-name: "details.apply";
label: bind $_if_else(template.game as <$Game>.added, _("Apply"), _("Add")) as <string>;
halign: center; halign: center;
wrap-reverse: true;
justify: fill;
justify-last-line: true;
child-spacing: 12;
line-spacing: 12;
styles [ Button cancel_button {
"pill", action-name: "details.cancel";
"suggested-action", label: _("Cancel");
]
styles [
"pill",
]
}
Button apply_button {
action-name: "details.apply";
label: bind $_if_else(template.game as <$Game>.added, _("Apply"), _("Add")) as <string>;
styles [
"pill",
"suggested-action",
]
}
} }
}; };
} }
@@ -321,3 +343,10 @@ template $GameDetails: Adw.NavigationPage {
}; };
}; };
} }
SizeGroup {
widgets [
cancel_button,
apply_button,
]
}

View File

@@ -55,6 +55,7 @@ class GameDetails(Adw.NavigationPage):
self.insert_action_group("details", group := Gio.SimpleActionGroup()) self.insert_action_group("details", group := Gio.SimpleActionGroup())
group.add_action_entries(( group.add_action_entries((
("edit", lambda *_: self.edit()), ("edit", lambda *_: self.edit()),
("cancel", lambda *_: self._cancel()),
("remove", lambda *_: self._remove()), ("remove", lambda *_: self._remove()),
( (
"search-on", "search-on",
@@ -104,16 +105,19 @@ class GameDetails(Adw.NavigationPage):
self.game.added = int(time.time()) self.game.added = int(time.time())
games.model.append(self.game) games.model.append(self.game)
self._exit()
@Gtk.Template.Callback()
def _exit(self, *_args):
self.stack.props.visible_child_name = "details" self.stack.props.visible_child_name = "details"
@Gtk.Template.Callback() @Gtk.Template.Callback()
def _activate_apply(self, _entry): def _activate_apply(self, _entry):
self.activate_action("details.apply") self.activate_action("details.apply")
@Gtk.Template.Callback()
def _cancel(self, *_args):
if self.stack.props.visible_child_name == "details" or not self.game.added:
self.activate_action("navigation.pop")
self.stack.props.visible_child_name = "details"
def _remove(self): def _remove(self):
self.game.removed = True self.game.removed = True
self.activate_action("navigation.pop") self.activate_action("navigation.pop")