[devhelp] BookManager: remove the group-by-language property



commit 67e631f91f7f48a05f598a5113d65607f65d59a7
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Tue Apr 3 12:53:33 2018 +0200

    BookManager: remove the group-by-language property
    
    Use the DhSettings:group-books-by-language property instead.

 devhelp/dh-book-manager.c           |  118 +----------------------------------
 devhelp/dh-book-manager.h           |    7 +--
 devhelp/dh-book-tree.c              |   39 +++++++-----
 docs/reference/api-breaks.xml       |   14 ++++
 docs/reference/devhelp-sections.txt |    2 -
 src/dh-preferences.c                |   32 +++++----
 6 files changed, 56 insertions(+), 156 deletions(-)
---
diff --git a/devhelp/dh-book-manager.c b/devhelp/dh-book-manager.c
index c326cbd..f466db8 100644
--- a/devhelp/dh-book-manager.c
+++ b/devhelp/dh-book-manager.c
@@ -7,7 +7,7 @@
  * Copyright (C) 2004-2008 Imendio AB
  * Copyright (C) 2010 Lanedo GmbH
  * Copyright (C) 2012 Thomas Bechtold <toabctl gnome org>
- * Copyright (C) 2017 Sébastien Wilmet <swilmet gnome org>
+ * Copyright (C) 2017, 2018 Sébastien Wilmet <swilmet gnome org>
  *
  * Devhelp is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
@@ -129,8 +129,6 @@ typedef struct {
 
         /* List of book IDs (gchar*) currently disabled */
         GList *books_disabled;
-
-        guint group_by_language : 1;
 } DhBookManagerPrivate;
 
 enum {
@@ -141,11 +139,6 @@ enum {
         N_SIGNALS
 };
 
-enum {
-        PROP_0,
-        PROP_GROUP_BY_LANGUAGE
-};
-
 static guint signals[N_SIGNALS] = { 0 };
 
 static DhBookManager *singleton = NULL;
@@ -185,46 +178,6 @@ new_possible_book_data_free (gpointer _data)
 }
 
 static void
-dh_book_manager_get_property (GObject    *object,
-                              guint       prop_id,
-                              GValue     *value,
-                              GParamSpec *pspec)
-{
-        DhBookManager *book_manager = DH_BOOK_MANAGER (object);
-
-        switch (prop_id)
-        {
-        case PROP_GROUP_BY_LANGUAGE:
-                g_value_set_boolean (value, dh_book_manager_get_group_by_language (book_manager));
-                break;
-
-        default:
-                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-                break;
-        }
-}
-
-static void
-dh_book_manager_set_property (GObject      *object,
-                              guint         prop_id,
-                              const GValue *value,
-                              GParamSpec   *pspec)
-{
-        DhBookManager *book_manager = DH_BOOK_MANAGER (object);
-
-        switch (prop_id)
-        {
-        case PROP_GROUP_BY_LANGUAGE:
-                dh_book_manager_set_group_by_language (book_manager, g_value_get_boolean (value));
-                break;
-
-        default:
-                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-                break;
-        }
-}
-
-static void
 dh_book_manager_dispose (GObject *object)
 {
         DhBookManagerPrivate *priv;
@@ -264,8 +217,6 @@ dh_book_manager_class_init (DhBookManagerClass *klass)
 {
         GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-        object_class->get_property = dh_book_manager_get_property;
-        object_class->set_property = dh_book_manager_set_property;
         object_class->dispose = dh_book_manager_dispose;
         object_class->finalize = dh_book_manager_finalize;
 
@@ -328,20 +279,6 @@ dh_book_manager_class_init (DhBookManagerClass *klass)
                               G_TYPE_NONE,
                               1,
                               DH_TYPE_BOOK);
-
-        /**
-         * DhBookManager:group-by-language:
-         *
-         * Whether books should be grouped by programming language.
-         */
-        g_object_class_install_property (object_class,
-                                         PROP_GROUP_BY_LANGUAGE,
-                                         g_param_spec_boolean ("group-by-language",
-                                                               "Group by language",
-                                                               "",
-                                                               FALSE,
-                                                               G_PARAM_READWRITE |
-                                                               G_PARAM_STATIC_STRINGS));
 }
 
 static void
@@ -832,17 +769,7 @@ populate (DhBookManager *book_manager)
 static void
 dh_book_manager_init (DhBookManager *book_manager)
 {
-        DhSettings *settings;
-        GSettings *contents_settings;
-
         load_books_disabled (book_manager);
-
-        settings = dh_settings_get_default ();
-        contents_settings = dh_settings_peek_contents_settings (settings);
-        g_settings_bind (contents_settings, "group-books-by-language",
-                         book_manager, "group-by-language",
-                         G_SETTINGS_BIND_DEFAULT);
-
         populate (book_manager);
 }
 
@@ -919,46 +846,3 @@ dh_book_manager_get_books (DhBookManager *book_manager)
 
         return priv->books;
 }
-
-/**
- * dh_book_manager_get_group_by_language:
- * @book_manager: a #DhBookManager.
- *
- * Returns: whether the books should be grouped by programming language.
- */
-gboolean
-dh_book_manager_get_group_by_language (DhBookManager *book_manager)
-{
-        DhBookManagerPrivate *priv;
-
-        g_return_val_if_fail (DH_IS_BOOK_MANAGER (book_manager), FALSE);
-
-        priv = dh_book_manager_get_instance_private (book_manager);
-
-        return priv->group_by_language;
-}
-
-/**
- * dh_book_manager_set_group_by_language:
- * @book_manager: a #DhBookManager.
- * @group_by_language: the new value.
- *
- * Sets whether the books should be grouped by programming language.
- */
-void
-dh_book_manager_set_group_by_language (DhBookManager *book_manager,
-                                       gboolean       group_by_language)
-{
-        DhBookManagerPrivate *priv;
-
-        g_return_if_fail (DH_IS_BOOK_MANAGER (book_manager));
-
-        priv = dh_book_manager_get_instance_private (book_manager);
-
-        group_by_language = group_by_language != FALSE;
-
-        if (priv->group_by_language != group_by_language) {
-                priv->group_by_language = group_by_language;
-                g_object_notify (G_OBJECT (book_manager), "group-by-language");
-        }
-}
diff --git a/devhelp/dh-book-manager.h b/devhelp/dh-book-manager.h
index 9ba06bb..22588f8 100644
--- a/devhelp/dh-book-manager.h
+++ b/devhelp/dh-book-manager.h
@@ -3,7 +3,7 @@
  * This file is part of Devhelp.
  *
  * Copyright (C) 2010 Lanedo GmbH
- * Copyright (C) 2017 Sébastien Wilmet <swilmet gnome org>
+ * Copyright (C) 2017, 2018 Sébastien Wilmet <swilmet gnome org>
  *
  * Devhelp is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
@@ -53,11 +53,6 @@ DhBookManager * dh_book_manager_get_singleton           (void);
 
 GList *         dh_book_manager_get_books               (DhBookManager *book_manager);
 
-gboolean        dh_book_manager_get_group_by_language   (DhBookManager *book_manager);
-
-void            dh_book_manager_set_group_by_language   (DhBookManager *book_manager,
-                                                         gboolean       group_by_language);
-
 G_DEPRECATED
 DhBookManager * dh_book_manager_new                     (void);
 
diff --git a/devhelp/dh-book-tree.c b/devhelp/dh-book-tree.c
index 5613cb0..1c3f138 100644
--- a/devhelp/dh-book-tree.c
+++ b/devhelp/dh-book-tree.c
@@ -6,7 +6,7 @@
  * Copyright (C) 2003 CodeFactory AB
  * Copyright (C) 2008 Imendio AB
  * Copyright (C) 2010 Lanedo GmbH
- * Copyright (C) 2015, 2017 Sébastien Wilmet <swilmet gnome org>
+ * Copyright (C) 2015, 2017, 2018 Sébastien Wilmet <swilmet gnome org>
  *
  * Devhelp is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
@@ -27,6 +27,7 @@
 #include <glib/gi18n-lib.h>
 #include "dh-book-manager.h"
 #include "dh-book.h"
+#include "dh-settings.h"
 
 /**
  * SECTION:dh-book-tree
@@ -137,7 +138,7 @@ book_tree_find_language_group (DhBookTree  *tree,
                                gboolean    *next_found)
 {
         DhBookTreePrivate *priv = dh_book_tree_get_instance_private (tree);
-        DhBookManager *book_manager;
+        DhSettings *settings;
         GtkTreeIter loop_iter;
 
         g_assert ((exact_iter != NULL && exact_found != NULL) ||
@@ -150,8 +151,8 @@ book_tree_find_language_group (DhBookTree  *tree,
                 *next_found = FALSE;
 
         /* If we're not doing language grouping, return not found */
-        book_manager = dh_book_manager_get_singleton ();
-        if (!dh_book_manager_get_group_by_language (book_manager))
+        settings = dh_settings_get_default ();
+        if (!dh_settings_get_group_books_by_language (settings))
                 return;
 
         if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->store),
@@ -322,12 +323,12 @@ book_tree_add_book_to_store (DhBookTree *tree,
                              DhBook     *book)
 {
         DhBookTreePrivate *priv = dh_book_tree_get_instance_private (tree);
-        DhBookManager *book_manager;
+        DhSettings *settings;
         GtkTreeIter book_iter;
 
         /* If grouping by language we need to add the language categories */
-        book_manager = dh_book_manager_get_singleton ();
-        if (dh_book_manager_get_group_by_language (book_manager)) {
+        settings = dh_settings_get_default ();
+        if (dh_settings_get_group_books_by_language (settings)) {
                 GtkTreeIter  language_iter;
                 gboolean     language_iter_found;
                 GtkTreeIter  next_language_iter;
@@ -464,12 +465,14 @@ book_tree_book_deleted_or_disabled_cb (DhBookManager *book_manager,
                                        DhBookTree    *tree)
 {
         DhBookTreePrivate *priv = dh_book_tree_get_instance_private (tree);
+        DhSettings     *settings;
         GtkTreeIter     exact_iter;
         gboolean        exact_iter_found = FALSE;
         GtkTreeIter     language_iter;
         gboolean        language_iter_found = FALSE;
 
-        if (dh_book_manager_get_group_by_language (book_manager)) {
+        settings = dh_settings_get_default ();
+        if (dh_settings_get_group_books_by_language (settings)) {
                 GtkTreeIter first_book_iter;
 
                 book_tree_find_language_group (tree,
@@ -523,7 +526,7 @@ static void
 book_tree_init_selection (DhBookTree *tree)
 {
         DhBookTreePrivate   *priv;
-        DhBookManager    *book_manager;
+        DhSettings       *settings;
         GtkTreeSelection *selection;
         GtkTreeIter       iter;
         gboolean          iter_found = FALSE;
@@ -543,8 +546,8 @@ book_tree_init_selection (DhBookTree *tree)
                                          tree);
 
         /* If grouping by languages, get first book in the first language */
-        book_manager = dh_book_manager_get_singleton ();
-        if (dh_book_manager_get_group_by_language (book_manager)) {
+        settings = dh_settings_get_default ();
+        if (dh_settings_get_group_books_by_language (settings)) {
                 GtkTreeIter language_iter;
 
                 if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (priv->store),
@@ -607,9 +610,9 @@ book_tree_populate_tree (DhBookTree *tree)
 }
 
 static void
-book_tree_group_by_language_cb (GObject    *object,
-                                GParamSpec *pspec,
-                                DhBookTree *tree)
+group_books_by_language_notify_cb (DhSettings *settings,
+                                   GParamSpec *pspec,
+                                   DhBookTree *tree)
 {
         book_tree_populate_tree (tree);
 }
@@ -757,6 +760,7 @@ dh_book_tree_init (DhBookTree *tree)
 {
         DhBookTreePrivate *priv;
         DhBookManager *book_manager;
+        DhSettings *settings;
 
         priv = dh_book_tree_get_instance_private (tree);
 
@@ -802,9 +806,10 @@ dh_book_tree_init (DhBookTree *tree)
                                  tree,
                                  0);
 
-        g_signal_connect_object (book_manager,
-                                 "notify::group-by-language",
-                                 G_CALLBACK (book_tree_group_by_language_cb),
+        settings = dh_settings_get_default ();
+        g_signal_connect_object (settings,
+                                 "notify::group-books-by-language",
+                                 G_CALLBACK (group_books_by_language_notify_cb),
                                  tree,
                                  0);
 
diff --git a/docs/reference/api-breaks.xml b/docs/reference/api-breaks.xml
index c47c2b5..e92364d 100644
--- a/docs/reference/api-breaks.xml
+++ b/docs/reference/api-breaks.xml
@@ -233,4 +233,18 @@
       </listitem>
     </itemizedlist>
   </refsect1>
+
+  <refsect1>
+    <title>3.28.0 -> 3.29.1</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The <code>DhBookManager:group-by-language</code> property has been
+          replaced by the
+          <link linkend="DhSettings--group-books-by-language">DhSettings:group-books-by-language</link>
+          property.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </refsect1>
 </part>
diff --git a/docs/reference/devhelp-sections.txt b/docs/reference/devhelp-sections.txt
index 97e0844..50ba4b5 100644
--- a/docs/reference/devhelp-sections.txt
+++ b/docs/reference/devhelp-sections.txt
@@ -57,8 +57,6 @@ dh_book_manager_new
 dh_book_manager_get_singleton
 dh_book_manager_populate
 dh_book_manager_get_books
-dh_book_manager_get_group_by_language
-dh_book_manager_set_group_by_language
 <SUBSECTION Standard>
 DhBookManagerClass
 DH_BOOK_MANAGER
diff --git a/src/dh-preferences.c b/src/dh-preferences.c
index 1267ff0..2cdc082 100644
--- a/src/dh-preferences.c
+++ b/src/dh-preferences.c
@@ -391,11 +391,14 @@ static void
 preferences_bookshelf_populate_store (DhPreferences *prefs)
 {
         DhBookManager *book_manager;
+        DhSettings *settings;
         GList *l;
         gboolean group_by_language;
 
         book_manager = dh_book_manager_get_singleton ();
-        group_by_language = dh_book_manager_get_group_by_language (book_manager);
+
+        settings = dh_settings_get_default ();
+        group_by_language = dh_settings_get_group_books_by_language (settings);
 
         /* This list already comes ordered, but we don't care */
         for (l = dh_book_manager_get_books (book_manager);
@@ -408,9 +411,9 @@ preferences_bookshelf_populate_store (DhPreferences *prefs)
 }
 
 static void
-preferences_bookshelf_group_by_language_cb (GObject       *object,
-                                            GParamSpec    *pspec,
-                                            DhPreferences *prefs)
+preferences_bookshelf_group_books_by_language_notify_cb (DhSettings    *settings,
+                                                         GParamSpec    *pspec,
+                                                         DhPreferences *prefs)
 {
         preferences_bookshelf_clean_store (prefs);
         preferences_bookshelf_populate_store (prefs);
@@ -505,9 +508,11 @@ preferences_bookshelf_book_created_cb (DhBookManager *book_manager,
                                        DhBook        *book,
                                        DhPreferences *prefs)
 {
+        DhSettings *settings;
         gboolean group_by_language;
 
-        group_by_language = dh_book_manager_get_group_by_language (book_manager);
+        settings = dh_settings_get_default ();
+        group_by_language = dh_settings_get_group_books_by_language (settings);
         preferences_bookshelf_add_book_to_store (prefs, book, group_by_language);
 }
 
@@ -517,10 +522,10 @@ preferences_bookshelf_tree_selection_toggled_cb (GtkCellRendererToggle *cell_ren
                                                  DhPreferences         *prefs)
 {
         DhPreferencesPrivate *priv = dh_preferences_get_instance_private (prefs);
-        DhBookManager *book_manager;
+        DhSettings *settings;
         GtkTreeIter iter;
 
-        book_manager = dh_book_manager_get_singleton ();
+        settings = dh_settings_get_default ();
 
         if (gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (priv->bookshelf_store),
                                                  &iter,
@@ -543,15 +548,14 @@ preferences_bookshelf_tree_selection_toggled_cb (GtkCellRendererToggle *cell_ren
                                             -1);
                         /* Now we need to look for the language group of this item,
                          * in order to set the inconsistent state if applies */
-                        if (dh_book_manager_get_group_by_language (book_manager)) {
+                        if (dh_settings_get_group_books_by_language (settings)) {
                                 preferences_bookshelf_set_language_inconsistent (prefs, dh_book_get_language 
(book));
                         }
-
                 } else {
                         GtkTreeIter loop_iter;
 
                         /* We should only reach this if we are grouping by language */
-                        g_assert (dh_book_manager_get_group_by_language (book_manager) == TRUE);
+                        g_assert (dh_settings_get_group_books_by_language (settings));
 
                         /* Set new status in the language group item */
                         gtk_list_store_set (priv->bookshelf_store, &iter,
@@ -612,16 +616,16 @@ dh_preferences_init (DhPreferences *prefs)
                                  prefs,
                                  0);
 
-        g_signal_connect_object (book_manager,
-                                 "notify::group-by-language",
-                                 G_CALLBACK (preferences_bookshelf_group_by_language_cb),
+        settings_lib = dh_settings_get_default ();
+        g_signal_connect_object (settings_lib,
+                                 "notify::group-books-by-language",
+                                 G_CALLBACK (preferences_bookshelf_group_books_by_language_notify_cb),
                                  prefs,
                                  0);
 
         /* setup GSettings bindings */
         settings_app = dh_settings_app_get_singleton ();
         settings_fonts = dh_settings_app_peek_fonts_settings (settings_app);
-        settings_lib = dh_settings_get_default ();
         settings_contents = dh_settings_peek_contents_settings (settings_lib);
         g_settings_bind (settings_fonts, "use-system-fonts",
                          priv->system_fonts_button, "active",


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