Skip to content
Snippets Groups Projects
rugby-pref-window.c 2 KiB
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
 * SPDX-FileCopyrightText: 2020-2021 Bruce Cowan <bruce@bcowan.me.uk>
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

#include "rugby-pref-window.h"

struct _RugbyPrefWindow
{
Bruce Cowan's avatar
Bruce Cowan committed
  AdwPreferencesWindow parent_instance;

  GtkWidget *try_spin;
  GtkWidget *utry_spin;
  GtkWidget *kick_spin;

  GSettings *settings;
};

Bruce Cowan's avatar
Bruce Cowan committed
G_DEFINE_TYPE (RugbyPrefWindow, rugby_pref_window, ADW_TYPE_PREFERENCES_WINDOW)

static void
rugby_pref_window_dispose (GObject *object)
{
  RugbyPrefWindow *self = RUGBY_PREF_WINDOW (object);

  g_clear_object (&self->settings);

  G_OBJECT_CLASS (rugby_pref_window_parent_class)->dispose (object);
}

static void
rugby_pref_window_class_init (RugbyPrefWindowClass *klass)
{
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);

  object_class->dispose = rugby_pref_window_dispose;

  gtk_widget_class_set_template_from_resource (widget_class,
                                               "/uk/me/bcowan/rugby/prefs.ui");

  gtk_widget_class_bind_template_child (widget_class, RugbyPrefWindow, try_spin);
  gtk_widget_class_bind_template_child (widget_class, RugbyPrefWindow, utry_spin);
  gtk_widget_class_bind_template_child (widget_class, RugbyPrefWindow, kick_spin);

}

static void
rugby_pref_window_init (RugbyPrefWindow *self)
{
  gtk_widget_init_template (GTK_WIDGET (self));

  self->settings = g_settings_new ("uk.me.bcowan.Rugby");

  g_settings_bind (self->settings, "try-points",
                   self->try_spin, "value",
                   G_SETTINGS_BIND_DEFAULT);
  g_settings_bind (self->settings, "utry-points",
                   self->utry_spin, "value",
                   G_SETTINGS_BIND_DEFAULT);
  g_settings_bind (self->settings, "kick-points",
                   self->kick_spin, "value",
                   G_SETTINGS_BIND_DEFAULT);
}

RugbyPrefWindow *
rugby_pref_window_new (RugbyAppWindow *window)
{
  return g_object_new (RUGBY_TYPE_PREF_WINDOW,
                       "transient-for", window,
                       NULL);
}