shell-model: Remove boilerplate and update code style

This commit is contained in:
Georges Basile Stavracas Neto 2018-05-02 23:11:48 -03:00
parent 3228632d55
commit 36af5e51d1
2 changed files with 34 additions and 73 deletions

View file

@ -19,23 +19,25 @@
* Author: Thomas Wood <thos@gnome.org> * Author: Thomas Wood <thos@gnome.org>
*/ */
#include "cc-shell-model.h"
#include "cc-util.h"
#include <string.h> #include <string.h>
#include <gio/gdesktopappinfo.h> #include <gio/gdesktopappinfo.h>
#include "cc-shell-model.h"
#include "cc-util.h"
#define GNOME_SETTINGS_PANEL_ID_KEY "X-GNOME-Settings-Panel" #define GNOME_SETTINGS_PANEL_ID_KEY "X-GNOME-Settings-Panel"
#define GNOME_SETTINGS_PANEL_CATEGORY GNOME_SETTINGS_PANEL_ID_KEY #define GNOME_SETTINGS_PANEL_CATEGORY GNOME_SETTINGS_PANEL_ID_KEY
#define GNOME_SETTINGS_PANEL_ID_KEYWORDS "Keywords" #define GNOME_SETTINGS_PANEL_ID_KEYWORDS "Keywords"
struct _CcShellModelPrivate struct _CcShellModel
{ {
gchar **sort_terms; GtkListStore parent;
GStrv sort_terms;
}; };
G_DEFINE_TYPE_WITH_PRIVATE (CcShellModel, cc_shell_model, GTK_TYPE_LIST_STORE) G_DEFINE_TYPE (CcShellModel, cc_shell_model, GTK_TYPE_LIST_STORE)
static gint static gint
sort_by_name (GtkTreeModel *model, sort_by_name (GtkTreeModel *model,
@ -224,20 +226,19 @@ cc_shell_model_sort_func (GtkTreeModel *model,
gpointer data) gpointer data)
{ {
CcShellModel *self = data; CcShellModel *self = data;
CcShellModelPrivate *priv = self->priv;
if (!priv->sort_terms || !priv->sort_terms[0]) if (!self->sort_terms || !self->sort_terms[0])
return sort_by_name (model, a, b); return sort_by_name (model, a, b);
else else
return sort_with_terms (model, a, b, priv->sort_terms); return sort_with_terms (model, a, b, self->sort_terms);
} }
static void static void
cc_shell_model_finalize (GObject *object) cc_shell_model_finalize (GObject *object)
{ {
CcShellModelPrivate *priv = CC_SHELL_MODEL (object)->priv;; CcShellModel *self = CC_SHELL_MODEL (object);
g_strfreev (priv->sort_terms); g_clear_pointer (&self->sort_terms, g_strfreev);
G_OBJECT_CLASS (cc_shell_model_parent_class)->finalize (object); G_OBJECT_CLASS (cc_shell_model_parent_class)->finalize (object);
} }
@ -245,9 +246,8 @@ cc_shell_model_finalize (GObject *object)
static void static void
cc_shell_model_class_init (CcShellModelClass *klass) cc_shell_model_class_init (CcShellModelClass *klass)
{ {
GObjectClass *gobject_class; GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = cc_shell_model_finalize; gobject_class->finalize = cc_shell_model_finalize;
} }
@ -257,8 +257,6 @@ cc_shell_model_init (CcShellModel *self)
GType types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_APP_INFO, G_TYPE_STRING, GType types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_APP_INFO, G_TYPE_STRING,
G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_STRV}; G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_STRV};
self->priv = cc_shell_model_get_instance_private (self);
gtk_list_store_set_column_types (GTK_LIST_STORE (self), gtk_list_store_set_column_types (GTK_LIST_STORE (self),
N_COLS, types); N_COLS, types);
@ -390,13 +388,14 @@ void
cc_shell_model_set_sort_terms (CcShellModel *self, cc_shell_model_set_sort_terms (CcShellModel *self,
gchar **terms) gchar **terms)
{ {
CcShellModelPrivate *priv = self->priv; g_return_if_fail (CC_IS_SHELL_MODEL (self));
g_strfreev (priv->sort_terms); g_clear_pointer (&self->sort_terms, g_strfreev);
priv->sort_terms = g_strdupv (terms); self->sort_terms = g_strdupv (terms);
/* trigger a re-sort */ /* trigger a re-sort */
gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (self), gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (self),
cc_shell_model_sort_func, cc_shell_model_sort_func,
self, NULL); self,
NULL);
} }

View file

@ -18,9 +18,7 @@
* Author: Thomas Wood <thos@gnome.org> * Author: Thomas Wood <thos@gnome.org>
*/ */
#pragma once
#ifndef _CC_SHELL_MODEL_H
#define _CC_SHELL_MODEL_H
#include <gtk/gtk.h> #include <gtk/gtk.h>
@ -28,31 +26,10 @@ G_BEGIN_DECLS
#define CC_TYPE_SHELL_MODEL cc_shell_model_get_type() #define CC_TYPE_SHELL_MODEL cc_shell_model_get_type()
#define CC_SHELL_MODEL(obj) \ G_DECLARE_FINAL_TYPE (CcShellModel, cc_shell_model, CC, SHELL_MODEL, GtkListStore)
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
CC_TYPE_SHELL_MODEL, CcShellModel))
#define CC_SHELL_MODEL_CLASS(klass) \ typedef enum
(G_TYPE_CHECK_CLASS_CAST ((klass), \ {
CC_TYPE_SHELL_MODEL, CcShellModelClass))
#define CC_IS_SHELL_MODEL(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
CC_TYPE_SHELL_MODEL))
#define CC_IS_SHELL_MODEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
CC_TYPE_SHELL_MODEL))
#define CC_SHELL_MODEL_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
CC_TYPE_SHELL_MODEL, CcShellModelClass))
typedef struct _CcShellModel CcShellModel;
typedef struct _CcShellModelClass CcShellModelClass;
typedef struct _CcShellModelPrivate CcShellModelPrivate;
typedef enum {
CC_CATEGORY_CONNECTIVITY, CC_CATEGORY_CONNECTIVITY,
CC_CATEGORY_PERSONALIZATION, CC_CATEGORY_PERSONALIZATION,
CC_CATEGORY_ACCOUNT, CC_CATEGORY_ACCOUNT,
@ -77,37 +54,22 @@ enum
N_COLS N_COLS
}; };
struct _CcShellModel
{
GtkListStore parent;
CcShellModelPrivate *priv; CcShellModel* cc_shell_model_new (void);
};
struct _CcShellModelClass void cc_shell_model_add_item (CcShellModel *model,
{ CcPanelCategory category,
GtkListStoreClass parent_class; GAppInfo *appinfo,
}; const char *id);
GType cc_shell_model_get_type (void) G_GNUC_CONST; gboolean cc_shell_model_has_panel (CcShellModel *model,
const char *id);
CcShellModel *cc_shell_model_new (void); gboolean cc_shell_model_iter_matches_search (CcShellModel *model,
GtkTreeIter *iter,
const char *term);
void cc_shell_model_add_item (CcShellModel *model, void cc_shell_model_set_sort_terms (CcShellModel *model,
CcPanelCategory category, GStrv terms);
GAppInfo *appinfo,
const char *id);
gboolean cc_shell_model_has_panel (CcShellModel *model,
const char *id);
gboolean cc_shell_model_iter_matches_search (CcShellModel *model,
GtkTreeIter *iter,
const char *term);
void cc_shell_model_set_sort_terms (CcShellModel *model,
gchar **terms);
G_END_DECLS G_END_DECLS
#endif /* _CC_SHELL_MODEL_H */