shell-model: Remove boilerplate and update code style
This commit is contained in:
parent
3228632d55
commit
36af5e51d1
2 changed files with 34 additions and 73 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 */
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue