[five-or-more/gsoc-vala-port: 17/29] Get theme from settings



commit 585363d01d80c2e3f87cf317bba8904ddb297995
Author: Ruxandra Simion <ruxandra simion93 gmail com>
Date:   Thu Aug 2 15:19:52 2018 +0300

    Get theme from settings

 src-vala/main.vala           |  1 +
 src-vala/theme-renderer.vala | 20 ++++++++++++++++----
 src-vala/window.vala         |  4 +---
 3 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/src-vala/main.vala b/src-vala/main.vala
index d5b9182..7f37848 100644
--- a/src-vala/main.vala
+++ b/src-vala/main.vala
@@ -2,6 +2,7 @@ public class FiveOrMoreApp: Gtk.Application
 {
     public const string KEY_SIZE = "size";
     public const string KEY_BACKGROUND_COLOR = "background-color";
+    public const string KEY_THEME = "ball-theme";
 
     private Settings settings;
 
diff --git a/src-vala/theme-renderer.vala b/src-vala/theme-renderer.vala
index d8ec349..f84ef41 100644
--- a/src-vala/theme-renderer.vala
+++ b/src-vala/theme-renderer.vala
@@ -1,19 +1,31 @@
 public class ThemeRenderer
 {
-    public const string THEME = "balls.svg";
+    private Settings settings;
+
     public const int DEFAULT_SPRITE_SIZE = 20;
+    private int sprite_size = DEFAULT_SPRITE_SIZE;
 
+    private string theme_name;
     private Rsvg.Handle? theme = null;
     private float sprite_sheet_width;
     private float sprite_sheet_height;
 
     private Cairo.Pattern? tile_pattern = null;
+    private Cairo.Context cr_preview;
 
-    private int sprite_size = DEFAULT_SPRITE_SIZE;
+    public ThemeRenderer (Settings settings)
+    {
+        this.settings = settings;
 
-    private Cairo.Context cr_preview;
-    public ThemeRenderer (string theme_file)
+        settings.changed[FiveOrMoreApp.KEY_THEME].connect (change_theme_cb);
+        change_theme_cb ();
+    }
+
+    private void change_theme_cb ()
     {
+        theme_name = settings.get_string (FiveOrMoreApp.KEY_THEME);
+        var theme_file = Path.build_filename (DATA_DIRECTORY, "themes", theme_name);
+
         try
         {
             theme = new Rsvg.Handle.from_file (theme_file);
diff --git a/src-vala/window.vala b/src-vala/window.vala
index eec6db7..edec5fb 100644
--- a/src-vala/window.vala
+++ b/src-vala/window.vala
@@ -31,9 +31,7 @@ public class GameWindow : Gtk.ApplicationWindow
         Object (application: app);
 
         game = new Game (settings);
-
-        var theme_file = Path.build_filename (DATA_DIRECTORY, "themes", ThemeRenderer.THEME);
-        theme = new ThemeRenderer (theme_file);
+        theme = new ThemeRenderer (settings);
 
         NextPiecesWidget next_pieces_widget = new NextPiecesWidget (settings, game, theme);
         preview_hbox.pack_start (next_pieces_widget);


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