[gnome-documents] view: cleanup the saved setting state to be a GdMainWindowType



commit 8e3869598d67a7068f4ee9d99022f1586d7217f5
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Jan 23 16:29:00 2012 -0500

    view: cleanup the saved setting state to be a GdMainWindowType
    
    So we can use the enums<->string utilities provided in GSettings
    directly to convert from one representation to the other.

 data/Makefile.am                        |    4 ++++
 data/org.gnome.documents.gschema.xml.in |    8 ++++----
 src/application.js                      |   11 ++++++-----
 src/documents.js                        |    2 +-
 src/utils.js                            |   22 ++++++++--------------
 src/view.js                             |    8 ++------
 6 files changed, 25 insertions(+), 30 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index bc0ce9c..8cd6ae9 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -15,6 +15,10 @@ $(service_DATA): $(service_in_files) Makefile
 
 service_in_files = org.gnome.Documents.GDataMiner.service.in
 
+gsettings_ENUM_NAMESPACE = org.gnome.Documents
+gsettings_ENUM_FILES = \
+    $(top_srcdir)/src/lib/gd-main-view.h
+
 gsettingsschema_in_files = org.gnome.documents.gschema.xml.in
 gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml)
 .PRECIOUS: $(gsettings_SCHEMAS)
diff --git a/data/org.gnome.documents.gschema.xml.in b/data/org.gnome.documents.gschema.xml.in
index 7895189..3be5597 100644
--- a/data/org.gnome.documents.gschema.xml.in
+++ b/data/org.gnome.documents.gschema.xml.in
@@ -1,9 +1,9 @@
 <schemalist gettext-domain="gnome-documents">
   <schema id="org.gnome.documents" path="/org/gnome/documents/">
-    <key name="list-view" type="b">
-      <default>false</default>
-      <_summary>List view</_summary>
-      <_description>Enable list view</_description>
+    <key name="view-as" enum="org.gnome.Documents.GdMainViewType">
+      <default>'icon'</default>
+      <_summary>View as</_summary>
+      <_description>View as type</_description>
     </key>
     <key name="active-source" type="s">
       <default>'all'</default>
diff --git a/src/application.js b/src/application.js
index 99e72ac..4b68508 100644
--- a/src/application.js
+++ b/src/application.js
@@ -101,16 +101,17 @@ Application.prototype = {
             }));
         this.application.add_action(fsAction);
 
+        /* FIXME: use GSettings.create_action() once it's introspectable */
         let viewAsAction = Gio.SimpleAction.new_stateful('view-as',
                                                          GLib.VariantType.new('s'),
-                                                         Utils.listSettingToMenu());
+                                                         Global.settings.get_value('view-as'));
         viewAsAction.connect('activate', Lang.bind(this,
             function(action, variant) {
-                Global.settings.set_boolean('list-view', Utils.listMenuToSetting(variant));
+                Global.settings.set_value('view-as', variant);
             }));
-        Global.settings.connect('changed::list-view', Lang.bind(this,
+        Global.settings.connect('changed::view-as', Lang.bind(this,
             function() {
-                viewAsAction.state = Utils.listSettingToMenu();
+                viewAsAction.state = Global.settings.get_value('view-as');
             }));
         this.application.add_action(viewAsAction);
 
@@ -119,7 +120,7 @@ Application.prototype = {
 	menu.append(_("Quit"), 'app.quit');
 
         let viewAs = new Gio.Menu();
-        viewAs.append(_("Grid"), 'app.view-as::grid');
+        viewAs.append(_("Grid"), 'app.view-as::icon');
         viewAs.append(_("List"), 'app.view-as::list');
         menu.prepend_section(_("View as"), viewAs);
 
diff --git a/src/documents.js b/src/documents.js
index add3ccc..8d2bb29 100644
--- a/src/documents.js
+++ b/src/documents.js
@@ -301,7 +301,7 @@ DocCommon.prototype = {
         this.populateFromCursor(cursor);
 
         this._refreshIconId =
-            Global.settings.connect('changed::list-view',
+            Global.settings.connect('changed::view-as',
                                     Lang.bind(this, this.refreshIcon));
         this._filterId =
             Global.searchCategoryManager.connect('active-changed',
diff --git a/src/utils.js b/src/utils.js
index be66052..156cfd9 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -37,10 +37,16 @@ let debugInit = false;
 let debugEnabled = false;
 
 function getIconSize() {
-    return Global.settings.get_boolean('list-view') ? _LIST_VIEW_SIZE : _ICON_VIEW_SIZE;
+    let viewType = Global.settings.get_enum('view-as');
+
+    if (viewType == Gd.MainViewType.LIST)
+        return _LIST_VIEW_SIZE;
+    else
+        return _ICON_VIEW_SIZE;
 }
 
 function getThumbnailFrameBorder() {
+    let viewType = Global.settings.get_enum('view-as');
     let slice = new Gtk.Border();
     let border = null;
 
@@ -49,7 +55,7 @@ function getThumbnailFrameBorder() {
     slice.bottom = 6;
     slice.left = 4;
 
-    if (Global.settings.get_boolean('list-view')) {
+    if (viewType == Gd.MainViewType.LIST) {
         border = new Gtk.Border();
         border.top = 1;
         border.right = 1;
@@ -104,18 +110,6 @@ function isSearchEvent(event) {
     return retval;
 }
 
-function listSettingToMenu() {
-    let isList =  Global.settings.get_boolean('list-view');
-    let variant = GLib.Variant.new('s', isList ? 'list' : 'grid');
-
-    return variant;
-}
-
-function listMenuToSetting(variant) {
-    let string = variant.get_string()[0];
-    return (string == 'list') ? true : false;
-}
-
 function debug(str) {
     if (!debugInit) {
         let env = GLib.getenv('DOCUMENTS_DEBUG');
diff --git a/src/view.js b/src/view.js
index 4e419de..11c7f72 100644
--- a/src/view.js
+++ b/src/view.js
@@ -123,7 +123,7 @@ View.prototype = {
 
         // connect to settings change for list/grid view
         this._viewSettingsId =
-            Global.settings.connect('changed::list-view',
+            Global.settings.connect('changed::view-as',
                                     Lang.bind(this, this._updateTypeForSettings));
         this._updateTypeForSettings();
 
@@ -143,11 +143,7 @@ View.prototype = {
     },
 
     _updateTypeForSettings: function() {
-        let isList = Global.settings.get_boolean('list-view');
-        let viewType = Gd.MainViewType.ICON;
-        if (isList)
-            viewType = Gd.MainViewType.LIST;
-
+        let viewType = Global.settings.get_enum('view-as');
         this.widget.set_view_type(viewType);
     },
 



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