[gnome-games/wip/exalm/platform-preferences: 15/17] ui: Add PreferencesPagePlatform



commit 28ef508bed0356cfafce4975a8e2cf8ee2fff58e
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date:   Wed Mar 13 09:35:27 2019 +0500

    ui: Add PreferencesPagePlatform

 data/org.gnome.Games.gresource.xml     |  1 +
 data/ui/preferences-page-platforms.ui  | 20 +++++++++++++++++
 data/ui/preferences-window.ui          |  5 +++++
 src/meson.build                        |  1 +
 src/ui/preferences-page-platforms.vala | 40 ++++++++++++++++++++++++++++++++++
 5 files changed, 67 insertions(+)
---
diff --git a/data/org.gnome.Games.gresource.xml b/data/org.gnome.Games.gresource.xml
index f985c3f9..eb85cbf3 100644
--- a/data/org.gnome.Games.gresource.xml
+++ b/data/org.gnome.Games.gresource.xml
@@ -32,6 +32,7 @@
     <file preprocess="xml-stripblanks">ui/media-selector.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-controllers.ui</file>
+    <file preprocess="xml-stripblanks">ui/preferences-page-platforms.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-platforms-generic-row.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-platforms-retro-row.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-plugins.ui</file>
diff --git a/data/ui/preferences-page-platforms.ui b/data/ui/preferences-page-platforms.ui
new file mode 100644
index 00000000..a718ecbb
--- /dev/null
+++ b/data/ui/preferences-page-platforms.ui
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.16 -->
+  <template class="GamesPreferencesPagePlatforms" parent="GamesPreferencesPage">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkFrame">
+        <property name="visible">true</property>
+        <property name="shadow-type">in</property>
+        <child>
+          <object class="GtkListBox" id="list_box">
+            <property name="selection-mode">none</property>
+            <property name="visible">true</property>
+            <signal name="row-activated" handler="on_row_activated"/>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/preferences-window.ui b/data/ui/preferences-window.ui
index da6c1c34..3bd1f54f 100644
--- a/data/ui/preferences-window.ui
+++ b/data/ui/preferences-window.ui
@@ -126,6 +126,11 @@
                     <property name="visible">True</property>
                   </object>
                 </child>
+                <child>
+                  <object class="GamesPreferencesPagePlatforms" id="platforms_page">
+                    <property name="visible">True</property>
+                  </object>
+                </child>
               </object>
             </child>
           </object>
diff --git a/src/meson.build b/src/meson.build
index 3bc8bff9..f4c60705 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -163,6 +163,7 @@ vala_sources = [
   'ui/platforms-view.vala',
   'ui/preferences-page.vala',
   'ui/preferences-page-controllers.vala',
+  'ui/preferences-page-platforms.vala',
   'ui/preferences-page-platforms-generic-row.vala',
   'ui/preferences-page-platforms-retro-row.vala',
   'ui/preferences-page-platforms-row.vala',
diff --git a/src/ui/preferences-page-platforms.vala b/src/ui/preferences-page-platforms.vala
new file mode 100644
index 00000000..709b7c7e
--- /dev/null
+++ b/src/ui/preferences-page-platforms.vala
@@ -0,0 +1,40 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+[GtkTemplate (ui = "/org/gnome/Games/ui/preferences-page-platforms.ui")]
+private class Games.PreferencesPagePlatforms : PreferencesPage {
+       [GtkChild]
+       private Gtk.ListBox list_box;
+
+       construct {
+               title = _("Platforms");
+
+               list_box.set_header_func (update_header);
+
+               var register = PlatformRegister.get_register ();
+               var platforms = register.get_all_platforms ();
+
+               foreach (var platform in platforms) {
+                       var row = platform.get_row ();
+                       row.show ();
+
+                       list_box.add (row);
+               }
+       }
+
+       [GtkCallback]
+       private void on_row_activated (Gtk.ListBoxRow row) {
+               assert (row is PreferencesPagePlatformsRow);
+
+               var platforms_row = row as PreferencesPagePlatformsRow;
+
+               platforms_row.on_activated ();
+       }
+
+       // TODO: apply this for all pages
+       private void update_header (Gtk.ListBoxRow row, Gtk.ListBoxRow? before) {
+               if (before != null && row.get_header () == null) {
+                       var separator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);
+                       row.set_header (separator);
+               }
+       }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]