[gnome-software] trivial: Use a indirect function for reloading a page



commit 341cb663bc7b4c11e47a5dec34cb6deb1f86da8b
Author: Richard Hughes <richard hughsie com>
Date:   Sat Jun 11 21:36:32 2016 +0100

    trivial: Use a indirect function for reloading a page
    
    This allows us to add future functionality.

 src/gs-page.c            |   10 ++++++++++
 src/gs-page.h            |    2 ++
 src/gs-shell-category.c  |   15 +++++++--------
 src/gs-shell-category.h  |    1 -
 src/gs-shell-details.c   |   13 ++++++-------
 src/gs-shell-details.h   |    1 -
 src/gs-shell-extras.c    |    6 ++++--
 src/gs-shell-extras.h    |    1 -
 src/gs-shell-installed.c |    9 ++++-----
 src/gs-shell-installed.h |    1 -
 src/gs-shell-moderate.c  |    9 ++++-----
 src/gs-shell-moderate.h  |    1 -
 src/gs-shell-overview.c  |    9 ++++-----
 src/gs-shell-overview.h  |    1 -
 src/gs-shell-search.c    |   14 ++++++--------
 src/gs-shell-search.h    |    1 -
 src/gs-shell-updates.c   |    6 ++++--
 src/gs-shell-updates.h   |    1 -
 src/gs-shell.c           |   18 +++++++++---------
 19 files changed, 60 insertions(+), 59 deletions(-)
---
diff --git a/src/gs-page.c b/src/gs-page.c
index c160a65..e72fb7a 100644
--- a/src/gs-page.c
+++ b/src/gs-page.c
@@ -453,6 +453,16 @@ gs_page_switch_to (GsPage *page,
 }
 
 void
+gs_page_reload (GsPage *page)
+{
+       GsPageClass *klass;
+       g_return_if_fail (GS_IS_PAGE (page));
+       klass = GS_PAGE_GET_CLASS (page);
+       g_assert (klass->reload != NULL);
+       klass->reload (page);
+}
+
+void
 gs_page_setup (GsPage *page,
                GsShell *shell,
                GsPluginLoader *plugin_loader,
diff --git a/src/gs-page.h b/src/gs-page.h
index b63bd8e..426e3b4 100644
--- a/src/gs-page.h
+++ b/src/gs-page.h
@@ -44,6 +44,7 @@ struct _GsPageClass
                                                 GsApp           *app);
        void            (*switch_to)            (GsPage          *page,
                                                 gboolean         scroll_up);
+       void            (*reload)               (GsPage          *page);
 };
 
 GsPage         *gs_page_new                            (void);
@@ -67,6 +68,7 @@ void           gs_page_shortcut_remove                (GsPage         *page,
                                                         GsApp          *app);
 void            gs_page_switch_to                      (GsPage         *page,
                                                         gboolean        scroll_up);
+void            gs_page_reload                         (GsPage         *page);
 void            gs_page_setup                          (GsPage         *page,
                                                         GsShell        *shell,
                                                         GsPluginLoader *plugin_loader,
diff --git a/src/gs-shell-category.c b/src/gs-shell-category.c
index f017701..5a2456d 100644
--- a/src/gs-shell-category.c
+++ b/src/gs-shell-category.c
@@ -49,14 +49,6 @@ struct _GsShellCategory
 
 G_DEFINE_TYPE (GsShellCategory, gs_shell_category, GS_TYPE_PAGE)
 
-/**
- * gs_shell_category_reload:
- */
-void
-gs_shell_category_reload (GsShellCategory *self)
-{
-}
-
 static void
 gs_shell_category_switch_to (GsPage *page, gboolean scroll_up)
 {
@@ -161,6 +153,12 @@ gs_shell_category_populate_filtered (GsShellCategory *self, GsCategory *subcateg
 }
 
 static void
+gs_shell_category_reload (GsPage *page)
+{
+       //GsShellCategory *self = GS_SHELL_CATEGORY (page);
+}
+
+static void
 filter_selected (GtkListBox *filters, GtkListBoxRow *row, gpointer data)
 {
        GsShellCategory *self = GS_SHELL_CATEGORY (data);
@@ -277,6 +275,7 @@ gs_shell_category_class_init (GsShellCategoryClass *klass)
 
        object_class->dispose = gs_shell_category_dispose;
        page_class->switch_to = gs_shell_category_switch_to;
+       page_class->reload = gs_shell_category_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/Software/gs-shell-category.ui");
 
diff --git a/src/gs-shell-category.h b/src/gs-shell-category.h
index 6340348..71d38a2 100644
--- a/src/gs-shell-category.h
+++ b/src/gs-shell-category.h
@@ -40,7 +40,6 @@ GsShellCategory       *gs_shell_category_new          (void);
 void            gs_shell_category_set_category (GsShellCategory        *self,
                                                 GsCategory             *category);
 GsCategory     *gs_shell_category_get_category (GsShellCategory        *self);
-void            gs_shell_category_reload       (GsShellCategory        *self);
 void            gs_shell_category_setup        (GsShellCategory        *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index d6a1c98..28ff0a3 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -1553,12 +1553,10 @@ gs_shell_details_load (GsShellDetails *self)
                                           self);
 }
 
-/**
- * gs_shell_details_reload:
- **/
-void
-gs_shell_details_reload (GsShellDetails *self)
+static void
+gs_shell_details_reload (GsPage *page)
 {
+       GsShellDetails *self = GS_SHELL_DETAILS (page);
        if (self->app != NULL)
                gs_shell_details_load (self);
 }
@@ -1761,13 +1759,13 @@ gs_shell_details_write_review_cb (GtkButton *button,
 static void
 gs_shell_details_app_installed (GsPage *page, GsApp *app)
 {
-       gs_shell_details_reload (GS_SHELL_DETAILS (page));
+       gs_shell_details_reload (page);
 }
 
 static void
 gs_shell_details_app_removed (GsPage *page, GsApp *app)
 {
-       gs_shell_details_reload (GS_SHELL_DETAILS (page));
+       gs_shell_details_reload (page);
 }
 
 /**
@@ -1866,6 +1864,7 @@ gs_shell_details_class_init (GsShellDetailsClass *klass)
        page_class->app_installed = gs_shell_details_app_installed;
        page_class->app_removed = gs_shell_details_app_removed;
        page_class->switch_to = gs_shell_details_switch_to;
+       page_class->reload = gs_shell_details_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/gs-shell-details.ui");
 
diff --git a/src/gs-shell-details.h b/src/gs-shell-details.h
index 3ffd72a..99cd490 100644
--- a/src/gs-shell-details.h
+++ b/src/gs-shell-details.h
@@ -43,7 +43,6 @@ void           gs_shell_details_set_app       (GsShellDetails         *self,
 void            gs_shell_details_set_filename  (GsShellDetails         *self,
                                                 const gchar            *filename);
 GsApp          *gs_shell_details_get_app       (GsShellDetails         *self);
-void            gs_shell_details_reload        (GsShellDetails         *self);
 void            gs_shell_details_setup         (GsShellDetails         *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-extras.c b/src/gs-shell-extras.c
index 3dc5893..156c8a5 100644
--- a/src/gs-shell-extras.c
+++ b/src/gs-shell-extras.c
@@ -732,9 +732,10 @@ gs_shell_extras_load (GsShellExtras *self, GPtrArray *array_search_data)
        }
 }
 
-void
-gs_shell_extras_reload (GsShellExtras *self)
+static void
+gs_shell_extras_reload (GsPage *page)
 {
+       GsShellExtras *self = GS_SHELL_EXTRAS (page);
        if (self->array_search_data != NULL)
                gs_shell_extras_load (self, NULL);
 }
@@ -1195,6 +1196,7 @@ gs_shell_extras_class_init (GsShellExtrasClass *klass)
 
        object_class->dispose = gs_shell_extras_dispose;
        page_class->switch_to = gs_shell_extras_switch_to;
+       page_class->reload = gs_shell_extras_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/gs-shell-extras.ui");
 
diff --git a/src/gs-shell-extras.h b/src/gs-shell-extras.h
index 1d51bc6..6363693 100644
--- a/src/gs-shell-extras.h
+++ b/src/gs-shell-extras.h
@@ -53,7 +53,6 @@ GsShellExtras         *gs_shell_extras_new                    (void);
 void                    gs_shell_extras_search                 (GsShellExtras           *self,
                                                                 const gchar             *mode,
                                                                 gchar                  **resources);
-void                    gs_shell_extras_reload                 (GsShellExtras           *self);
 void                    gs_shell_extras_setup                  (GsShellExtras           *self,
                                                                 GsShell                 *shell,
                                                                 GsPluginLoader          *plugin_loader,
diff --git a/src/gs-shell-installed.c b/src/gs-shell-installed.c
index 01e2f43..04106f2 100644
--- a/src/gs-shell-installed.c
+++ b/src/gs-shell-installed.c
@@ -247,12 +247,10 @@ gs_shell_installed_load (GsShellInstalled *self)
        gtk_stack_set_visible_child_name (GTK_STACK (self->stack_install), "spinner");
 }
 
-/**
- * gs_shell_installed_reload:
- */
-void
-gs_shell_installed_reload (GsShellInstalled *self)
+static void
+gs_shell_installed_reload (GsPage *page)
 {
+       GsShellInstalled *self = GS_SHELL_INSTALLED (page);
        gs_shell_installed_invalidate (self);
        gs_shell_installed_load (self);
 }
@@ -796,6 +794,7 @@ gs_shell_installed_class_init (GsShellInstalledClass *klass)
        object_class->dispose = gs_shell_installed_dispose;
        page_class->app_removed = gs_shell_installed_app_removed;
        page_class->switch_to = gs_shell_installed_switch_to;
+       page_class->reload = gs_shell_installed_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/Software/gs-shell-installed.ui");
 
diff --git a/src/gs-shell-installed.h b/src/gs-shell-installed.h
index f071805..ba32125 100644
--- a/src/gs-shell-installed.h
+++ b/src/gs-shell-installed.h
@@ -36,7 +36,6 @@ G_DECLARE_FINAL_TYPE (GsShellInstalled, gs_shell_installed, GS, SHELL_INSTALLED,
 
 GsShellInstalled *gs_shell_installed_new       (void);
 void            gs_shell_installed_invalidate  (GsShellInstalled       *self);
-void            gs_shell_installed_reload      (GsShellInstalled       *self);
 void            gs_shell_installed_setup       (GsShellInstalled       *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-moderate.c b/src/gs-shell-moderate.c
index 5e5872e..24038da 100644
--- a/src/gs-shell-moderate.c
+++ b/src/gs-shell-moderate.c
@@ -200,12 +200,10 @@ gs_shell_moderate_load (GsShellModerate *self)
        gtk_stack_set_visible_child_name (GTK_STACK (self->stack_install), "spinner");
 }
 
-/**
- * gs_shell_moderate_reload:
- */
-void
-gs_shell_moderate_reload (GsShellModerate *self)
+static void
+gs_shell_moderate_reload (GsPage *page)
 {
+       GsShellModerate *self = GS_SHELL_MODERATE (page);
        gs_shell_moderate_load (self);
 }
 
@@ -300,6 +298,7 @@ gs_shell_moderate_class_init (GsShellModerateClass *klass)
 
        object_class->dispose = gs_shell_moderate_dispose;
        page_class->switch_to = gs_shell_moderate_switch_to;
+       page_class->reload = gs_shell_moderate_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/Software/gs-shell-moderate.ui");
 
diff --git a/src/gs-shell-moderate.h b/src/gs-shell-moderate.h
index 0fb4ae5..27fe6ea 100644
--- a/src/gs-shell-moderate.h
+++ b/src/gs-shell-moderate.h
@@ -35,7 +35,6 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (GsShellModerate, gs_shell_moderate, GS, SHELL_MODERATE, GsPage)
 
 GsShellModerate        *gs_shell_moderate_new          (void);
-void            gs_shell_moderate_reload       (GsShellModerate        *self);
 void            gs_shell_moderate_setup        (GsShellModerate        *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-overview.c b/src/gs-shell-overview.c
index a4f1a3a..4820be4 100644
--- a/src/gs-shell-overview.c
+++ b/src/gs-shell-overview.c
@@ -496,12 +496,10 @@ gs_shell_overview_load (GsShellOverview *self)
        }
 }
 
-/**
- * gs_shell_overview_reload:
- */
-void
-gs_shell_overview_reload (GsShellOverview *self)
+static void
+gs_shell_overview_reload (GsPage *page)
 {
+       GsShellOverview *self = GS_SHELL_OVERVIEW (page);
        gs_shell_overview_invalidate (self);
        gs_shell_overview_load (self);
 }
@@ -654,6 +652,7 @@ gs_shell_overview_class_init (GsShellOverviewClass *klass)
 
        object_class->dispose = gs_shell_overview_dispose;
        page_class->switch_to = gs_shell_overview_switch_to;
+       page_class->reload = gs_shell_overview_reload;
        klass->refreshed = gs_shell_overview_refreshed;
 
        signals [SIGNAL_REFRESHED] =
diff --git a/src/gs-shell-overview.h b/src/gs-shell-overview.h
index 08bba19..03bc5ed 100644
--- a/src/gs-shell-overview.h
+++ b/src/gs-shell-overview.h
@@ -45,7 +45,6 @@ struct _GsShellOverviewClass
 
 GsShellOverview        *gs_shell_overview_new          (void);
 void            gs_shell_overview_invalidate   (GsShellOverview        *self);
-void            gs_shell_overview_reload       (GsShellOverview        *self);
 void            gs_shell_overview_setup        (GsShellOverview        *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-search.c b/src/gs-shell-search.c
index 7632ee7..2a88a17 100644
--- a/src/gs-shell-search.c
+++ b/src/gs-shell-search.c
@@ -202,17 +202,14 @@ gs_shell_search_load (GsShellSearch *self)
                                       self);
 }
 
-/**
- * gs_shell_search_reload:
- */
-void
-gs_shell_search_reload (GsShellSearch *self)
+static void
+gs_shell_search_reload (GsPage *page)
 {
+       GsShellSearch *self = GS_SHELL_SEARCH (page);
        if (self->value != NULL)
                gs_shell_search_load (self);
 }
 
-
 /**
  * gs_shell_search_set_appid_to_show:
  *
@@ -389,13 +386,13 @@ gs_shell_search_cancel_cb (GCancellable *cancellable,
 static void
 gs_shell_search_app_installed (GsPage *page, GsApp *app)
 {
-       gs_shell_search_reload (GS_SHELL_SEARCH (page));
+       gs_shell_search_reload (page);
 }
 
 static void
 gs_shell_search_app_removed (GsPage *page, GsApp *app)
 {
-       gs_shell_search_reload (GS_SHELL_SEARCH (page));
+       gs_shell_search_reload (page);
 }
 
 static void
@@ -499,6 +496,7 @@ gs_shell_search_class_init (GsShellSearchClass *klass)
        page_class->app_installed = gs_shell_search_app_installed;
        page_class->app_removed = gs_shell_search_app_removed;
        page_class->switch_to = gs_shell_search_switch_to;
+       page_class->reload = gs_shell_search_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/gs-shell-search.ui");
 
diff --git a/src/gs-shell-search.h b/src/gs-shell-search.h
index 1b10a7c..1a2449b 100644
--- a/src/gs-shell-search.h
+++ b/src/gs-shell-search.h
@@ -41,7 +41,6 @@ void           gs_shell_search_set_appid_to_show (GsShellSearch       *self,
 const gchar    *gs_shell_search_get_text       (GsShellSearch          *self);
 void            gs_shell_search_set_text       (GsShellSearch          *self,
                                                 const gchar            *value);
-void            gs_shell_search_reload         (GsShellSearch          *self);
 void            gs_shell_search_setup          (GsShellSearch          *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index a6e34d2..bffc04f 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -622,9 +622,10 @@ gs_shell_updates_load (GsShellUpdates *self)
 /**
  * gs_shell_updates_reload:
  */
-void
-gs_shell_updates_reload (GsShellUpdates *self)
+static void
+gs_shell_updates_reload (GsPage *page)
 {
+       GsShellUpdates *self = GS_SHELL_UPDATES (page);
        gs_shell_updates_invalidate (self);
        gs_shell_updates_load (self);
 }
@@ -1426,6 +1427,7 @@ gs_shell_updates_class_init (GsShellUpdatesClass *klass)
 
        object_class->dispose = gs_shell_updates_dispose;
        page_class->switch_to = gs_shell_updates_switch_to;
+       page_class->reload = gs_shell_updates_reload;
 
        gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Software/gs-shell-updates.ui");
 
diff --git a/src/gs-shell-updates.h b/src/gs-shell-updates.h
index d5bdded..91c8882 100644
--- a/src/gs-shell-updates.h
+++ b/src/gs-shell-updates.h
@@ -36,7 +36,6 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (GsShellUpdates, gs_shell_updates, GS, SHELL_UPDATES, GsPage)
 
 GsShellUpdates *gs_shell_updates_new           (void);
-void            gs_shell_updates_reload        (GsShellUpdates         *self);
 void            gs_shell_updates_setup         (GsShellUpdates         *self,
                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
diff --git a/src/gs-shell.c b/src/gs-shell.c
index b6c46e4..332625c 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -451,8 +451,8 @@ initial_overview_load_done (GsShellOverview *shell_overview, gpointer data)
 
        g_signal_handlers_disconnect_by_func (shell_overview, initial_overview_load_done, data);
 
-       gs_shell_updates_reload (priv->shell_updates);
-       gs_shell_installed_reload (priv->shell_installed);
+       gs_page_reload (GS_PAGE (priv->shell_updates));
+       gs_page_reload (GS_PAGE (priv->shell_installed));
 
        g_signal_emit (shell, signals[SIGNAL_LOADED], 0);
 }
@@ -557,13 +557,13 @@ static void
 gs_shell_updates_changed_cb (GsPluginLoader *plugin_loader, GsShell *shell)
 {
        GsShellPrivate *priv = gs_shell_get_instance_private (shell);
-       gs_shell_category_reload (priv->shell_category);
-       gs_shell_extras_reload (priv->shell_extras);
-       gs_shell_details_reload (priv->shell_details);
-       gs_shell_installed_reload (priv->shell_installed);
-       gs_shell_overview_reload (priv->shell_overview);
-       gs_shell_search_reload (priv->shell_search);
-       gs_shell_updates_reload (priv->shell_updates);
+       gs_page_reload (GS_PAGE (priv->shell_category));
+       gs_page_reload (GS_PAGE (priv->shell_extras));
+       gs_page_reload (GS_PAGE (priv->shell_details));
+       gs_page_reload (GS_PAGE (priv->shell_installed));
+       gs_page_reload (GS_PAGE (priv->shell_overview));
+       gs_page_reload (GS_PAGE (priv->shell_search));
+       gs_page_reload (GS_PAGE (priv->shell_updates));
 }
 
 /**


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