Skip to content
Snippets Groups Projects
window.blp 2.69 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
// SPDX-FileCopyrightText: 2022-2023 Bruce Cowan <bruce@bcowan.me.uk>
Bruce Cowan's avatar
Bruce Cowan committed
//
// SPDX-License-Identifier: GPL-3.0-or-later

using Gtk 4.0;
using Adw 1;

template RugbyAppWindow : Adw.ApplicationWindow {
Bruce Cowan's avatar
Bruce Cowan committed
  title: "Rugby";

  Box {
    orientation: vertical;
Bruce Cowan's avatar
Bruce Cowan committed

    Adw.HeaderBar {
      SpinButton scorespin {
        adjustment: Adjustment {
          step-increment: 1;
          upper: 200;
        };
        focusable: true;
        tooltip-text: "Score";
      }
Bruce Cowan's avatar
Bruce Cowan committed

Bruce Cowan's avatar
Bruce Cowan committed
      ToggleButton filter_toggle {
        action-name: "win.show-try-filter";
Bruce Cowan's avatar
Bruce Cowan committed
        icon-name: "funnel";
        tooltip-text: "Show Try Filter";
      }

        direction: none;
        menu-model: app_menu;
Bruce Cowan's avatar
Bruce Cowan committed
        tooltip-text: "Main Menu";
Bruce Cowan's avatar
Bruce Cowan committed
    }

    Revealer {
      halign: center;
      margin-top: 6;
      reveal-child: bind filter_toggle.active;
      transition-type: slide_down;

      SpinButton tryspin {
        adjustment: Adjustment {
          step-increment: 1;
          lower: 0;
          upper: 40;
        };
        focusable: true;
        tooltip-text: "Tries";

        value-changed => try_spin_value_changed_cb();
      }
    }

    Stack stack {
      StackPage {
        name: "empty_page";
Bruce Cowan's avatar
Bruce Cowan committed

        child: Adw.StatusPage {
          icon-name: "list";
          title: "No possibilities";
        };
      }
      StackPage {
        name: "list_page";
Bruce Cowan's avatar
Bruce Cowan committed

        child: ScrolledWindow {
          vexpand: true;
          Adw.Clamp {
            maximum-size: 600;
            tightening-threshold: 400;
            ListView listview {
Bruce Cowan's avatar
Bruce Cowan committed
              styles ["rich-list", "card"]
Bruce Cowan's avatar
Bruce Cowan committed

              factory: BuilderListItemFactory {
                resource: "/uk/me/bcowan/Rugby/gtk/score-item.ui";
              };
              model: NoSelection {
                model: FilterListModel {
                  filter: CustomFilter try_filter {};
                  model: .RugbyListStore list_store {
                    score: bind scorespin.value;
Bruce Cowan's avatar
Bruce Cowan committed
                  };

                  items-changed => list_store_items_changed_cb();
Bruce Cowan's avatar
Bruce Cowan committed
                };
Bruce Cowan's avatar
Bruce Cowan committed
      }
    }
  }

  ShortcutController {
    scope: local;

    Shortcut {
      action: "action(win.score-changed)";
      arguments: "'up'";
      trigger: "<Ctrl>Up|<Ctrl>Right";
    }
    Shortcut {
      action: "action(win.score-changed)";
      arguments: "'down'";
      trigger: "<Ctrl>Down|<Ctrl>Left";
    }
    Shortcut {
      action: "action(win.show-try-filter)";
      trigger: "<Ctrl>F";
    }
  }
Bruce Cowan's avatar
Bruce Cowan committed
}

menu app_menu {
  section {
    item ("_Preferences", "app.prefs")
Bruce Cowan's avatar
Bruce Cowan committed
    item ("_Keyboard Shortcuts", "win.show-help-overlay")
Bruce Cowan's avatar
Bruce Cowan committed
    item ("_About Rugby", "app.about")
  }
}