[gnome-games] ui: Add video preferences



commit 15f13ef1cdce38426e0cb4b9854eca31819fb0b1
Author: theawless <theawless gmail com>
Date:   Sat Feb 11 05:24:01 2017 +0530

    ui: Add video preferences
    
    Allow to set video filters in preferences window.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777987

 data/Makefile.am                         |    2 +
 data/org.gnome.Games.gresource.xml       |    2 +
 data/ui/preferences-page-switch-item.ui  |   23 +++++++++++++
 data/ui/preferences-page-video.ui        |   53 ++++++++++++++++++++++++++++++
 data/ui/preferences-window.ui            |   11 ++++++-
 po/POTFILES.in                           |    3 ++
 src/Makefile.am                          |    2 +
 src/ui/preferences-page-switch-item.vala |   21 ++++++++++++
 src/ui/preferences-page-video.vala       |   46 ++++++++++++++++++++++++++
 9 files changed, 162 insertions(+), 1 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index f81f3eb..e0ec6ea 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -33,6 +33,8 @@ EXTRA_DIST = \
        ui/media-selector.ui \
        ui/preferences-page-plugins-item.ui \
        ui/preferences-page-plugins.ui \
+       ui/preferences-page-switch-item.ui \
+       ui/preferences-page-video.ui \
        ui/preferences-window.ui \
        ui/quit-dialog.ui \
        ui/remote-display.ui \
diff --git a/data/org.gnome.Games.gresource.xml b/data/org.gnome.Games.gresource.xml
index 8f17469..494db6e 100644
--- a/data/org.gnome.Games.gresource.xml
+++ b/data/org.gnome.Games.gresource.xml
@@ -19,6 +19,8 @@
     <file preprocess="xml-stripblanks">ui/media-selector.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-plugins.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-page-plugins-item.ui</file>
+    <file preprocess="xml-stripblanks">ui/preferences-page-switch-item.ui</file>
+    <file preprocess="xml-stripblanks">ui/preferences-page-video.ui</file>
     <file preprocess="xml-stripblanks">ui/preferences-window.ui</file>
     <file preprocess="xml-stripblanks">ui/quit-dialog.ui</file>
     <file preprocess="xml-stripblanks">ui/remote-display.ui</file>
diff --git a/data/ui/preferences-page-switch-item.ui b/data/ui/preferences-page-switch-item.ui
new file mode 100644
index 0000000..9e770cb
--- /dev/null
+++ b/data/ui/preferences-page-switch-item.ui
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="GamesPreferencesPageSwitchItem" parent="GtkBox">
+    <property name="vexpand">false</property>
+        <property name="orientation">horizontal</property>
+        <property name="margin">6</property>
+        <property name="spacing">12</property>
+        <property name="visible">true</property>
+        <child>
+          <object class="GtkLabel" id="title_label">
+            <property name="visible">true</property>
+            <property name="vexpand">true</property>
+            <property name="wrap">true</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkImage" id="select_image">
+            <property name="icon-name">object-select-symbolic</property>
+            <property name="valign">center</property>
+          </object>
+        </child>
+  </template>
+</interface>
diff --git a/data/ui/preferences-page-video.ui b/data/ui/preferences-page-video.ui
new file mode 100644
index 0000000..50b473e
--- /dev/null
+++ b/data/ui/preferences-page-video.ui
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <template class="GamesPreferencesPageVideo" parent="GtkBin">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkScrolledWindow">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <child>
+          <object class="GtkViewport">
+            <property name="can_focus">False</property>
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkFrame">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="border_width">12</property>
+                <property name="valign">start</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="top_padding">12</property>
+                    <child>
+                      <object class="GtkListBox" id="filter_list_box">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="selection_mode">none</property>
+                        <signal name="row-activated" handler="filter_list_box_row_activated"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Filter</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </template>
+</interface>
diff --git a/data/ui/preferences-window.ui b/data/ui/preferences-window.ui
index 0537cb2..36026a6 100644
--- a/data/ui/preferences-window.ui
+++ b/data/ui/preferences-window.ui
@@ -83,9 +83,18 @@
           <object class="GtkStack" id="stack">
             <property name="visible">True</property>
             <property name="expand">True</property>
-            <property name="visible-child">plugins_page</property>
+            <property name="visible-child">video_page</property>
             <property name="transition-type">GTK_STACK_TRANSITION_TYPE_CROSSFADE</property>
             <child>
+              <object class="GamesPreferencesPageVideo" id="video_page">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="name">video</property>
+                <property name="title" translatable="yes">Video</property>
+              </packing>
+            </child>
+            <child>
               <object class="GamesPreferencesPagePlugins" id="plugins_page">
                 <property name="visible">True</property>
               </object>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index eadd6c6..505db15 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -11,6 +11,8 @@ data/org.gnome.Games.gschema.xml
 [type: gettext/glade]data/ui/empty-collection.ui
 [type: gettext/glade]data/ui/media-menu-button.ui
 [type: gettext/glade]data/ui/preferences-page-plugins.ui
+[type: gettext/glade]data/ui/preferences-page-switch-item.ui
+[type: gettext/glade]data/ui/preferences-page-video.ui
 [type: gettext/glade]data/ui/preferences-window.ui
 [type: gettext/glade]data/ui/quit-dialog.ui
 [type: gettext/glade]data/ui/remote-display.ui
@@ -49,4 +51,5 @@ src/ui/application-window.vala
 src/ui/error-display.vala
 src/ui/media-selector.vala
 src/ui/preferences-page-plugins.vala
+src/ui/preferences-page-video.vala
 src/utils/cue-sheet/cue-sheet.vala
diff --git a/src/Makefile.am b/src/Makefile.am
index c87572d..93993fe 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -117,6 +117,8 @@ gnome_games_SOURCES = \
        ui/preferences-page.vala \
        ui/preferences-page-plugins.vala \
        ui/preferences-page-plugins-item.vala \
+       ui/preferences-page-switch-item.vala \
+       ui/preferences-page-video.vala \
        ui/preferences-window.vala \
        ui/quit-dialog.vala \
        ui/remote-display.vala \
diff --git a/src/ui/preferences-page-switch-item.vala b/src/ui/preferences-page-switch-item.vala
new file mode 100644
index 0000000..a800bdb
--- /dev/null
+++ b/src/ui/preferences-page-switch-item.vala
@@ -0,0 +1,21 @@
+// This file is part of GNOME Games. License: GPLv3
+
+[GtkTemplate (ui = "/org/gnome/Games/ui/preferences-page-switch-item.ui")]
+private class Games.PreferencesPageSwitchItem: Gtk.Box {
+       [GtkChild]
+       private Gtk.Label title_label;
+       [GtkChild]
+       private Gtk.Image select_image;
+
+       public PreferencesPageSwitchItem (string name) {
+               title_label.label = name;
+       }
+
+       public void switch_activate () {
+               select_image.show ();
+       }
+
+       public void switch_deactivate () {
+               select_image.hide ();
+       }
+}
diff --git a/src/ui/preferences-page-video.vala b/src/ui/preferences-page-video.vala
new file mode 100644
index 0000000..579f5d1
--- /dev/null
+++ b/src/ui/preferences-page-video.vala
@@ -0,0 +1,46 @@
+// This file is part of GNOME Games. License: GPLv3
+
+[GtkTemplate (ui = "/org/gnome/Games/ui/preferences-page-video.ui")]
+private class Games.PreferencesPageVideo: Gtk.Bin, PreferencesPage {
+       public string title {
+               get { return _("Video"); }
+       }
+
+       private string _filter_active;
+       public string filter_active {
+                set {
+                       for (var i = 0; i < filter_names.length; i++) {
+                               var row_item = filter_list_box.get_row_at_index (i);
+                               var switch_item = (PreferencesPageSwitchItem) row_item.get_child ();
+                               if (value == filter_names[i])
+                                       switch_item.switch_activate ();
+                               else
+                                       switch_item.switch_deactivate ();
+                       }
+                       _filter_active = value;
+
+                }
+                get {
+                       return _filter_active;
+                }
+       }
+
+       // same as video-filters in gschema
+       private string[] filter_names = { "Smooth", "Sharp" };
+       [GtkChild]
+       private Gtk.ListBox filter_list_box;
+       private Settings settings;
+
+       construct {
+               foreach (var filter_name in filter_names)
+                       filter_list_box.add (new PreferencesPageSwitchItem (_(filter_name)));
+
+               settings = new Settings ("org.gnome.Games");
+               settings.bind ("video-filter", this, "filter-active", SettingsBindFlags.DEFAULT);
+       }
+
+       [GtkCallback]
+       private void filter_list_box_row_activated (Gtk.ListBoxRow row_item) {
+               filter_active = filter_names[row_item.get_index ()];
+       }
+}


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