diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2017-09-04 16:12:07 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2017-09-25 14:17:24 -0400 |
commit | c6981636dc38a9fdc844db40964c5d89cf10615e (patch) | |
tree | 4f132f929d2f2de633fbf3a6a180e57d9d6967ec /panels/search/cc-search-panel.c | |
parent | 045b1f03b9339c9a696277f6bc1194dbc0bb1c6b (diff) | |
download | gnome-control-center-c6981636dc38a9fdc844db40964c5d89cf10615e.tar.gz |
Replace old-fashioned GObject boilerplate with G_DEFINE_TYPEwip/rancell/g-define-type
As well as simplifying the code this allows us to make use of the g_auto memory
management macros.
Diffstat (limited to 'panels/search/cc-search-panel.c')
-rw-r--r-- | panels/search/cc-search-panel.c | 133 |
1 files changed, 66 insertions, 67 deletions
diff --git a/panels/search/cc-search-panel.c b/panels/search/cc-search-panel.c index 67e722556..271c60235 100644 --- a/panels/search/cc-search-panel.c +++ b/panels/search/cc-search-panel.c @@ -26,12 +26,12 @@ #include <gio/gdesktopappinfo.h> #include <glib/gi18n.h> -CC_PANEL_REGISTER (CcSearchPanel, cc_search_panel) - -#define WID(s) GTK_WIDGET (gtk_builder_get_object (self->priv->builder, s)) +#define WID(s) GTK_WIDGET (gtk_builder_get_object (self->builder, s)) -struct _CcSearchPanelPrivate +struct _CcSearchPanel { + CcPanel parent_instance; + GtkBuilder *builder; GtkWidget *list_box; GtkWidget *up_button; @@ -44,6 +44,8 @@ struct _CcSearchPanelPrivate CcSearchLocationsDialog *locations_dialog; }; +CC_PANEL_REGISTER (CcSearchPanel, cc_search_panel) + #define SHELL_PROVIDER_GROUP "Shell Search Provider" static gint @@ -67,11 +69,11 @@ list_sort_func (gconstpointer a, idx_a = -1; idx_b = -1; - lookup = g_hash_table_lookup (self->priv->sort_order, id_a); + lookup = g_hash_table_lookup (self->sort_order, id_a); if (lookup) idx_a = GPOINTER_TO_INT (lookup) - 1; - lookup = g_hash_table_lookup (self->priv->sort_order, id_b); + lookup = g_hash_table_lookup (self->sort_order, id_b); if (lookup) idx_b = GPOINTER_TO_INT (lookup) - 1; @@ -98,8 +100,8 @@ search_panel_invalidate_button_state (CcSearchPanel *self) gboolean is_first, is_last; GtkListBoxRow *row; - row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->priv->list_box)); - children = gtk_container_get_children (GTK_CONTAINER (self->priv->list_box)); + row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->list_box)); + children = gtk_container_get_children (GTK_CONTAINER (self->list_box)); if (!row || !children) return; @@ -107,8 +109,8 @@ search_panel_invalidate_button_state (CcSearchPanel *self) is_first = (row == g_list_first (children)->data); is_last = (row == g_list_last (children)->data); - gtk_widget_set_sensitive (self->priv->up_button, !is_first); - gtk_widget_set_sensitive (self->priv->down_button, !is_last); + gtk_widget_set_sensitive (self->up_button, !is_first); + gtk_widget_set_sensitive (self->down_button, !is_last); g_list_free (children); } @@ -119,13 +121,13 @@ search_panel_invalidate_sort_order (CcSearchPanel *self) gchar **sort_order; gint idx; - g_hash_table_remove_all (self->priv->sort_order); - sort_order = g_settings_get_strv (self->priv->search_settings, "sort-order"); + g_hash_table_remove_all (self->sort_order); + sort_order = g_settings_get_strv (self->search_settings, "sort-order"); for (idx = 0; sort_order[idx] != NULL; idx++) - g_hash_table_insert (self->priv->sort_order, g_strdup (sort_order[idx]), GINT_TO_POINTER (idx + 1)); + g_hash_table_insert (self->sort_order, g_strdup (sort_order[idx]), GINT_TO_POINTER (idx + 1)); - gtk_list_box_invalidate_sort (GTK_LIST_BOX (self->priv->list_box)); + gtk_list_box_invalidate_sort (GTK_LIST_BOX (self->list_box)); g_strfreev (sort_order); search_panel_invalidate_button_state (self); @@ -140,8 +142,8 @@ propagate_compare_func (gconstpointer a, const gchar *key_a = a, *key_b = b; gint idx_a, idx_b; - idx_a = GPOINTER_TO_INT (g_hash_table_lookup (self->priv->sort_order, key_a)); - idx_b = GPOINTER_TO_INT (g_hash_table_lookup (self->priv->sort_order, key_b)); + idx_a = GPOINTER_TO_INT (g_hash_table_lookup (self->sort_order, key_a)); + idx_b = GPOINTER_TO_INT (g_hash_table_lookup (self->sort_order, key_b)); return (idx_a - idx_b); } @@ -153,14 +155,14 @@ search_panel_propagate_sort_order (CcSearchPanel *self) GPtrArray *sort_order; sort_order = g_ptr_array_new (); - keys = g_hash_table_get_keys (self->priv->sort_order); + keys = g_hash_table_get_keys (self->sort_order); keys = g_list_sort_with_data (keys, propagate_compare_func, self); for (l = keys; l != NULL; l = l->next) g_ptr_array_add (sort_order, l->data); g_ptr_array_add (sort_order, NULL); - g_settings_set_strv (self->priv->search_settings, "sort-order", + g_settings_set_strv (self->search_settings, "sort-order", (const gchar **) sort_order->pdata); g_ptr_array_unref (sort_order); @@ -173,12 +175,12 @@ search_panel_set_no_providers (CcSearchPanel *self) GtkWidget *w; /* center the list box in the scrolled window */ - gtk_widget_set_valign (self->priv->list_box, GTK_ALIGN_CENTER); + gtk_widget_set_valign (self->list_box, GTK_ALIGN_CENTER); w = gtk_label_new (_("No applications found")); gtk_widget_show (w); - gtk_container_add (GTK_CONTAINER (self->priv->list_box), w); + gtk_container_add (GTK_CONTAINER (self->list_box), w); } static void @@ -194,11 +196,11 @@ search_panel_move_selected (CcSearchPanel *self, gboolean found; GList *children, *l, *other; - row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->priv->list_box)); + row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->list_box)); app_info = g_object_get_data (G_OBJECT (row), "app-info"); app_id = g_app_info_get_id (app_info); - children = gtk_container_get_children (GTK_CONTAINER (self->priv->list_box)); + children = gtk_container_get_children (GTK_CONTAINER (self->list_box)); /* The assertions are valid only as long as we don't move the first or the last item. */ @@ -223,7 +225,7 @@ search_panel_move_selected (CcSearchPanel *self, one we want to move, if moving up, or the neighbor, if moving down. */ last_good_app = target_app = app_id; - found = g_hash_table_lookup_extended (self->priv->sort_order, last_good_app, NULL, &idx_ptr); + found = g_hash_table_lookup_extended (self->sort_order, last_good_app, NULL, &idx_ptr); while (!found) { GAppInfo *tmp; @@ -240,7 +242,7 @@ search_panel_move_selected (CcSearchPanel *self, tmp_id = g_app_info_get_id (tmp); last_good_app = tmp_id; - found = g_hash_table_lookup_extended (self->priv->sort_order, tmp_id, NULL, &idx_ptr); + found = g_hash_table_lookup_extended (self->sort_order, tmp_id, NULL, &idx_ptr); } /* For simplicity's sake, set all sort orders to the previously visible state @@ -272,18 +274,18 @@ search_panel_move_selected (CcSearchPanel *self, tmp = g_object_get_data (G_OBJECT (l->data), "app-info"); tmp_id = g_app_info_get_id (tmp); - g_hash_table_replace (self->priv->sort_order, g_strdup (tmp_id), GINT_TO_POINTER (idx)); + g_hash_table_replace (self->sort_order, g_strdup (tmp_id), GINT_TO_POINTER (idx)); l = g_list_next (l); idx++; last_good_app = tmp_id; } - other_idx = GPOINTER_TO_INT (g_hash_table_lookup (self->priv->sort_order, app_id)); + other_idx = GPOINTER_TO_INT (g_hash_table_lookup (self->sort_order, app_id)); idx = down ? (other_idx + 1) : (other_idx - 1); - g_hash_table_replace (self->priv->sort_order, g_strdup (other_app_id), GINT_TO_POINTER (other_idx)); - g_hash_table_replace (self->priv->sort_order, g_strdup (app_id), GINT_TO_POINTER (idx)); + g_hash_table_replace (self->sort_order, g_strdup (other_app_id), GINT_TO_POINTER (other_idx)); + g_hash_table_replace (self->sort_order, g_strdup (app_id), GINT_TO_POINTER (idx)); search_panel_propagate_sort_order (self); @@ -310,14 +312,14 @@ settings_button_clicked (GtkWidget *widget, { CcSearchPanel *self = user_data; - if (self->priv->locations_dialog == NULL) + if (self->locations_dialog == NULL) { - self->priv->locations_dialog = cc_search_locations_dialog_new (self); - g_object_add_weak_pointer (G_OBJECT (self->priv->locations_dialog), - (gpointer *) &self->priv->locations_dialog); + self->locations_dialog = cc_search_locations_dialog_new (self); + g_object_add_weak_pointer (G_OBJECT (self->locations_dialog), + (gpointer *) &self->locations_dialog); } - gtk_window_present (GTK_WINDOW (self->priv->locations_dialog)); + gtk_window_present (GTK_WINDOW (self->locations_dialog)); } static GVariant * @@ -337,7 +339,7 @@ switch_settings_mapping_set_generic (const GValue *value, remove = !!g_value_get_boolean (value) == !!default_enabled; found = FALSE; new_apps = g_ptr_array_new_with_free_func (g_free); - apps = g_settings_get_strv (self->priv->search_settings, + apps = g_settings_get_strv (self->search_settings, default_enabled ? "disabled" : "enabled"); for (idx = 0; apps[idx] != NULL; idx++) @@ -446,7 +448,7 @@ search_panel_add_one_app_info (CcSearchPanel *self, return; /* reset valignment of the list box */ - gtk_widget_set_valign (self->priv->list_box, GTK_ALIGN_FILL); + gtk_widget_set_valign (self->list_box, GTK_ALIGN_FILL); row = gtk_list_box_row_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10); @@ -456,7 +458,7 @@ search_panel_add_one_app_info (CcSearchPanel *self, g_object_set_data_full (G_OBJECT (row), "app-info", g_object_ref (app_info), g_object_unref); g_object_set_data (G_OBJECT (row), "self", self); - gtk_container_add (GTK_CONTAINER (self->priv->list_box), row); + gtk_container_add (GTK_CONTAINER (self->list_box), row); icon = g_app_info_get_icon (app_info); if (icon == NULL) @@ -479,7 +481,7 @@ search_panel_add_one_app_info (CcSearchPanel *self, if (default_enabled) { - g_settings_bind_with_mapping (self->priv->search_settings, "disabled", + g_settings_bind_with_mapping (self->search_settings, "disabled", w, "active", G_SETTINGS_BIND_DEFAULT, switch_settings_mapping_get_default_enabled, @@ -488,7 +490,7 @@ search_panel_add_one_app_info (CcSearchPanel *self, } else { - g_settings_bind_with_mapping (self->priv->search_settings, "enabled", + g_settings_bind_with_mapping (self->search_settings, "enabled", w, "active", G_SETTINGS_BIND_DEFAULT, switch_settings_mapping_get_default_disabled, @@ -576,7 +578,7 @@ search_providers_discover_ready (GObject *source, return; } - g_clear_object (&self->priv->load_cancellable); + g_clear_object (&self->load_cancellable); if (providers == NULL) { @@ -682,8 +684,8 @@ populate_search_providers (CcSearchPanel *self) { GTask *task; - self->priv->load_cancellable = g_cancellable_new (); - task = g_task_new (self, self->priv->load_cancellable, + self->load_cancellable = g_cancellable_new (); + task = g_task_new (self, self->load_cancellable, search_providers_discover_ready, self); g_task_run_in_thread (task, search_providers_discover_thread); g_object_unref (task); @@ -692,11 +694,11 @@ populate_search_providers (CcSearchPanel *self) static void cc_search_panel_dispose (GObject *object) { - CcSearchPanelPrivate *priv = CC_SEARCH_PANEL (object)->priv; + CcSearchPanel *self = CC_SEARCH_PANEL (object); - if (priv->load_cancellable != NULL) - g_cancellable_cancel (priv->load_cancellable); - g_clear_object (&priv->load_cancellable); + if (self->load_cancellable != NULL) + g_cancellable_cancel (self->load_cancellable); + g_clear_object (&self->load_cancellable); G_OBJECT_CLASS (cc_search_panel_parent_class)->dispose (object); } @@ -704,14 +706,14 @@ cc_search_panel_dispose (GObject *object) static void cc_search_panel_finalize (GObject *object) { - CcSearchPanelPrivate *priv = CC_SEARCH_PANEL (object)->priv; + CcSearchPanel *self = CC_SEARCH_PANEL (object); - g_clear_object (&priv->builder); - g_clear_object (&priv->search_settings); - g_hash_table_destroy (priv->sort_order); + g_clear_object (&self->builder); + g_clear_object (&self->search_settings); + g_hash_table_destroy (self->sort_order); - if (priv->locations_dialog) - gtk_widget_destroy (GTK_WIDGET (priv->locations_dialog)); + if (self->locations_dialog) + gtk_widget_destroy (GTK_WIDGET (self->locations_dialog)); G_OBJECT_CLASS (cc_search_panel_parent_class)->finalize (object); } @@ -732,7 +734,7 @@ cc_search_panel_constructed (GObject *object) gtk_widget_set_valign (widget, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (box), widget, FALSE, FALSE, 4); - g_settings_bind (self->priv->search_settings, "disable-external", + g_settings_bind (self->search_settings, "disable-external", widget, "active", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN); @@ -754,13 +756,12 @@ cc_search_panel_init (CcSearchPanel *self) GtkWidget *frame; guint res; - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, CC_TYPE_SEARCH_PANEL, CcSearchPanelPrivate); g_resources_register (cc_search_get_resource ()); - self->priv->builder = gtk_builder_new (); + self->builder = gtk_builder_new (); error = NULL; - res = gtk_builder_add_from_resource (self->priv->builder, + res = gtk_builder_add_from_resource (self->builder, "/org/gnome/control-center/search/search.ui", &error); @@ -778,31 +779,31 @@ cc_search_panel_init (CcSearchPanel *self) (GtkListBoxSortFunc)list_sort_func, self, NULL); gtk_list_box_set_header_func (GTK_LIST_BOX (widget), cc_list_box_update_header_func, NULL, NULL); gtk_container_add (GTK_CONTAINER (frame), widget); - self->priv->list_box = widget; + self->list_box = widget; gtk_widget_show (widget); g_signal_connect_swapped (widget, "row-selected", G_CALLBACK (search_panel_invalidate_button_state), self); - self->priv->up_button = WID ("up_button"); - g_signal_connect (self->priv->up_button, "clicked", + self->up_button = WID ("up_button"); + g_signal_connect (self->up_button, "clicked", G_CALLBACK (up_button_clicked), self); - gtk_widget_set_sensitive (self->priv->up_button, FALSE); + gtk_widget_set_sensitive (self->up_button, FALSE); - self->priv->down_button = WID ("down_button"); - g_signal_connect (self->priv->down_button, "clicked", + self->down_button = WID ("down_button"); + g_signal_connect (self->down_button, "clicked", G_CALLBACK (down_button_clicked), self); - gtk_widget_set_sensitive (self->priv->down_button, FALSE); + gtk_widget_set_sensitive (self->down_button, FALSE); widget = WID ("settings_button"); g_signal_connect (widget, "clicked", G_CALLBACK (settings_button_clicked), self); gtk_widget_set_sensitive (widget, cc_search_locations_dialog_is_available ()); - self->priv->search_settings = g_settings_new ("org.gnome.desktop.search-providers"); - self->priv->sort_order = g_hash_table_new_full (g_str_hash, g_str_equal, + self->search_settings = g_settings_new ("org.gnome.desktop.search-providers"); + self->sort_order = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - g_signal_connect_swapped (self->priv->search_settings, "changed::sort-order", + g_signal_connect_swapped (self->search_settings, "changed::sort-order", G_CALLBACK (search_panel_invalidate_sort_order), self); search_panel_invalidate_sort_order (self); @@ -820,6 +821,4 @@ cc_search_panel_class_init (CcSearchPanelClass *klass) oclass->constructed = cc_search_panel_constructed; oclass->dispose = cc_search_panel_dispose; oclass->finalize = cc_search_panel_finalize; - - g_type_class_add_private (klass, sizeof (CcSearchPanelPrivate)); } |