diff options
Diffstat (limited to 'clients/tui/nmt-edit-connection-list.c')
| -rw-r--r-- | clients/tui/nmt-edit-connection-list.c | 905 |
1 files changed, 462 insertions, 443 deletions
diff --git a/clients/tui/nmt-edit-connection-list.c b/clients/tui/nmt-edit-connection-list.c index a33f393a..18c415db 100644 --- a/clients/tui/nmt-edit-connection-list.c +++ b/clients/tui/nmt-edit-connection-list.c @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: GPL-2.0+ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (C) 2013 Red Hat, Inc. */ @@ -20,546 +20,565 @@ #include "nm-editor-utils.h" -G_DEFINE_TYPE (NmtEditConnectionList, nmt_edit_connection_list, NMT_TYPE_NEWT_GRID) +G_DEFINE_TYPE(NmtEditConnectionList, nmt_edit_connection_list, NMT_TYPE_NEWT_GRID) -#define NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NMT_TYPE_EDIT_CONNECTION_LIST, NmtEditConnectionListPrivate)) +#define NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE((o), NMT_TYPE_EDIT_CONNECTION_LIST, NmtEditConnectionListPrivate)) typedef struct { - GSList *connections; + GSList *connections; - gboolean grouped; - NmtEditConnectionListFilter connection_filter; - gpointer connection_filter_data; + gboolean grouped; + NmtEditConnectionListFilter connection_filter; + gpointer connection_filter_data; - NmtNewtListbox *listbox; - NmtNewtButtonBox *buttons; + NmtNewtListbox * listbox; + NmtNewtButtonBox *buttons; - NmtNewtWidget *add; - NmtNewtWidget *edit; - NmtNewtWidget *delete; - NmtNewtWidget *extra; + NmtNewtWidget *add; + NmtNewtWidget *edit; + NmtNewtWidget *delete; + NmtNewtWidget *extra; } NmtEditConnectionListPrivate; enum { - PROP_0, + PROP_0, - PROP_GROUPED, - PROP_CONNECTION_FILTER, - PROP_CONNECTION_FILTER_DATA, - PROP_EXTRA_WIDGET, - PROP_CONNECTIONS, - PROP_NUM_CONNECTIONS, + PROP_GROUPED, + PROP_CONNECTION_FILTER, + PROP_CONNECTION_FILTER_DATA, + PROP_EXTRA_WIDGET, + PROP_CONNECTIONS, + PROP_NUM_CONNECTIONS, - LAST_PROP + LAST_PROP }; enum { - ADD_CONNECTION, - EDIT_CONNECTION, - REMOVE_CONNECTION, + ADD_CONNECTION, + EDIT_CONNECTION, + REMOVE_CONNECTION, - LAST_SIGNAL + LAST_SIGNAL }; -static guint signals[LAST_SIGNAL] = { 0 }; +static guint signals[LAST_SIGNAL] = {0}; -static void add_clicked (NmtNewtButton *button, gpointer list); -static void edit_clicked (NmtNewtButton *button, gpointer list); -static void delete_clicked (NmtNewtButton *button, gpointer list); -static void listbox_activated (NmtNewtWidget *listbox, gpointer list); +static void add_clicked(NmtNewtButton *button, gpointer list); +static void edit_clicked(NmtNewtButton *button, gpointer list); +static void delete_clicked(NmtNewtButton *button, gpointer list); +static void listbox_activated(NmtNewtWidget *listbox, gpointer list); static void -nmt_edit_connection_list_init (NmtEditConnectionList *list) +nmt_edit_connection_list_init(NmtEditConnectionList *list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - NmtNewtWidget *listbox, *buttons; - NmtNewtGrid *grid = NMT_NEWT_GRID (list); - - listbox = g_object_new (NMT_TYPE_NEWT_LISTBOX, - "flags", NMT_NEWT_LISTBOX_SCROLL | NMT_NEWT_LISTBOX_BORDER, - "skip-null-keys", TRUE, - NULL); - priv->listbox = NMT_NEWT_LISTBOX (listbox); - nmt_newt_grid_add (grid, listbox, 0, 0); - nmt_newt_grid_set_flags (grid, listbox, - NMT_NEWT_GRID_FILL_X | NMT_NEWT_GRID_FILL_Y | - NMT_NEWT_GRID_EXPAND_X | NMT_NEWT_GRID_EXPAND_Y); - g_signal_connect (priv->listbox, "activated", G_CALLBACK (listbox_activated), list); - - buttons = nmt_newt_button_box_new (NMT_NEWT_BUTTON_BOX_VERTICAL); - priv->buttons = NMT_NEWT_BUTTON_BOX (buttons); - nmt_newt_grid_add (grid, buttons, 1, 0); - nmt_newt_widget_set_padding (buttons, 1, 1, 0, 1); - nmt_newt_grid_set_flags (grid, buttons, - NMT_NEWT_GRID_FILL_X | NMT_NEWT_GRID_FILL_Y | - NMT_NEWT_GRID_EXPAND_Y); - - priv->add = nmt_newt_button_box_add_start (priv->buttons, _("Add")); - g_signal_connect (priv->add, "clicked", G_CALLBACK (add_clicked), list); - - priv->edit = nmt_newt_button_box_add_start (priv->buttons, _("Edit...")); - g_signal_connect (priv->edit, "clicked", G_CALLBACK (edit_clicked), list); - - priv->delete = nmt_newt_button_box_add_start (priv->buttons, _("Delete")); - g_signal_connect (priv->delete, "clicked", G_CALLBACK (delete_clicked), list); + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + NmtNewtWidget * listbox, *buttons; + NmtNewtGrid * grid = NMT_NEWT_GRID(list); + + listbox = g_object_new(NMT_TYPE_NEWT_LISTBOX, + "flags", + NMT_NEWT_LISTBOX_SCROLL | NMT_NEWT_LISTBOX_BORDER, + "skip-null-keys", + TRUE, + NULL); + priv->listbox = NMT_NEWT_LISTBOX(listbox); + nmt_newt_grid_add(grid, listbox, 0, 0); + nmt_newt_grid_set_flags(grid, + listbox, + NMT_NEWT_GRID_FILL_X | NMT_NEWT_GRID_FILL_Y | NMT_NEWT_GRID_EXPAND_X + | NMT_NEWT_GRID_EXPAND_Y); + g_signal_connect(priv->listbox, "activated", G_CALLBACK(listbox_activated), list); + + buttons = nmt_newt_button_box_new(NMT_NEWT_BUTTON_BOX_VERTICAL); + priv->buttons = NMT_NEWT_BUTTON_BOX(buttons); + nmt_newt_grid_add(grid, buttons, 1, 0); + nmt_newt_widget_set_padding(buttons, 1, 1, 0, 1); + nmt_newt_grid_set_flags(grid, + buttons, + NMT_NEWT_GRID_FILL_X | NMT_NEWT_GRID_FILL_Y | NMT_NEWT_GRID_EXPAND_Y); + + priv->add = nmt_newt_button_box_add_start(priv->buttons, _("Add")); + g_signal_connect(priv->add, "clicked", G_CALLBACK(add_clicked), list); + + priv->edit = nmt_newt_button_box_add_start(priv->buttons, _("Edit...")); + g_signal_connect(priv->edit, "clicked", G_CALLBACK(edit_clicked), list); + + priv->delete = nmt_newt_button_box_add_start(priv->buttons, _("Delete")); + g_signal_connect(priv->delete, "clicked", G_CALLBACK(delete_clicked), list); } static int -sort_by_timestamp (gconstpointer a, - gconstpointer b) +sort_by_timestamp(gconstpointer a, gconstpointer b) { - NMSettingConnection *s_con_a, *s_con_b; - guint64 time_a, time_b; + NMSettingConnection *s_con_a, *s_con_b; + guint64 time_a, time_b; - s_con_a = nm_connection_get_setting_connection ((NMConnection *) a); - s_con_b = nm_connection_get_setting_connection ((NMConnection *) b); + s_con_a = nm_connection_get_setting_connection((NMConnection *) a); + s_con_b = nm_connection_get_setting_connection((NMConnection *) b); - time_a = nm_setting_connection_get_timestamp (s_con_a); - time_b = nm_setting_connection_get_timestamp (s_con_b); + time_a = nm_setting_connection_get_timestamp(s_con_a); + time_b = nm_setting_connection_get_timestamp(s_con_b); - return (int) (time_b - time_a); + return (int) (time_b - time_a); } -static void nmt_edit_connection_list_rebuild (NmtEditConnectionList *list); +static void nmt_edit_connection_list_rebuild(NmtEditConnectionList *list); static void -rebuild_on_connection_changed (NMRemoteConnection *connection, - gpointer list) +rebuild_on_connection_changed(NMRemoteConnection *connection, gpointer list) { - nmt_edit_connection_list_rebuild (list); + nmt_edit_connection_list_rebuild(list); } static void -free_connections (NmtEditConnectionList *list) +free_connections(NmtEditConnectionList *list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - NMConnection *conn; - GSList *iter; - - for (iter = priv->connections; iter; iter = iter->next) { - conn = iter->data; - - g_signal_handlers_disconnect_by_func (conn, G_CALLBACK (rebuild_on_connection_changed), list); - g_object_unref (conn); - } - g_slist_free (priv->connections); - priv->connections = NULL; + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + NMConnection * conn; + GSList * iter; + + for (iter = priv->connections; iter; iter = iter->next) { + conn = iter->data; + + g_signal_handlers_disconnect_by_func(conn, G_CALLBACK(rebuild_on_connection_changed), list); + g_object_unref(conn); + } + g_slist_free(priv->connections); + priv->connections = NULL; } static void -nmt_edit_connection_list_rebuild (NmtEditConnectionList *list) +nmt_edit_connection_list_rebuild(NmtEditConnectionList *list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - const GPtrArray *connections; - GSList *iter; - gboolean did_header = FALSE, did_vpn = FALSE; - NMEditorConnectionTypeData **types; - NMConnection *conn, *selected_conn; - int i, row, selected_row; - - selected_row = nmt_newt_listbox_get_active (priv->listbox); - selected_conn = nmt_newt_listbox_get_active_key (priv->listbox); - - free_connections (list); - connections = nm_client_get_connections (nm_client); - for (i = 0; i < connections->len; i++) { - conn = connections->pdata[i]; - - if ( priv->connection_filter - && !priv->connection_filter (list, conn, priv->connection_filter_data)) - continue; - - g_signal_connect (conn, NM_CONNECTION_CHANGED, - G_CALLBACK (rebuild_on_connection_changed), list); - priv->connections = g_slist_prepend (priv->connections, g_object_ref (conn)); - } - priv->connections = g_slist_sort (priv->connections, sort_by_timestamp); - g_object_notify (G_OBJECT (list), "connections"); - g_object_notify (G_OBJECT (list), "num-connections"); - - nmt_newt_component_set_sensitive (NMT_NEWT_COMPONENT (priv->edit), - priv->connections != NULL); - nmt_newt_component_set_sensitive (NMT_NEWT_COMPONENT (priv->delete), - priv->connections != NULL); - - nmt_newt_listbox_clear (priv->listbox); - - if (!priv->grouped) { - /* Just add the connections in order */ - for (iter = priv->connections, row = 0; iter; iter = iter->next, row++) { - conn = iter->data; - nmt_newt_listbox_append (priv->listbox, nm_connection_get_id (conn), conn); - if (conn == selected_conn) - selected_row = row; - } - if (selected_row >= row) - selected_row = row - 1; - nmt_newt_listbox_set_active (priv->listbox, selected_row); - - return; - } - - types = nm_editor_utils_get_connection_type_list (); - for (i = row = 0; types[i]; i++) { - if (types[i]->setting_type == NM_TYPE_SETTING_VPN) { - if (did_vpn) - continue; - did_vpn = TRUE; - } - - did_header = FALSE; - - for (iter = priv->connections; iter; iter = iter->next) { - NMSetting *setting; - char *indented; - - conn = iter->data; - setting = nm_connection_get_setting (conn, types[i]->setting_type); - if (!setting) - continue; - if (!nm_connection_is_type (conn, nm_setting_get_name (setting))) - continue; - - if (!did_header) { - nmt_newt_listbox_append (priv->listbox, types[i]->name, NULL); - if (row == selected_row) - selected_row++; - row++; - did_header = TRUE; - } - - indented = g_strdup_printf (" %s", nm_connection_get_id (conn)); - nmt_newt_listbox_append (priv->listbox, indented, conn); - g_free (indented); - - if (conn == selected_conn) - selected_row = row; - row++; - } - } - - if (selected_row >= row) - selected_row = row - 1; - nmt_newt_listbox_set_active (priv->listbox, selected_row); + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + const GPtrArray * connections; + GSList * iter; + gboolean did_header = FALSE, did_vpn = FALSE; + NMEditorConnectionTypeData ** types; + NMConnection * conn, *selected_conn; + int i, row, selected_row; + + selected_row = nmt_newt_listbox_get_active(priv->listbox); + selected_conn = nmt_newt_listbox_get_active_key(priv->listbox); + + free_connections(list); + connections = nm_client_get_connections(nm_client); + for (i = 0; i < connections->len; i++) { + conn = connections->pdata[i]; + + if (priv->connection_filter + && !priv->connection_filter(list, conn, priv->connection_filter_data)) + continue; + + g_signal_connect(conn, + NM_CONNECTION_CHANGED, + G_CALLBACK(rebuild_on_connection_changed), + list); + priv->connections = g_slist_prepend(priv->connections, g_object_ref(conn)); + } + priv->connections = g_slist_sort(priv->connections, sort_by_timestamp); + g_object_notify(G_OBJECT(list), "connections"); + g_object_notify(G_OBJECT(list), "num-connections"); + + nmt_newt_component_set_sensitive(NMT_NEWT_COMPONENT(priv->edit), priv->connections != NULL); + nmt_newt_component_set_sensitive(NMT_NEWT_COMPONENT(priv->delete), priv->connections != NULL); + + nmt_newt_listbox_clear(priv->listbox); + + if (!priv->grouped) { + /* Just add the connections in order */ + for (iter = priv->connections, row = 0; iter; iter = iter->next, row++) { + conn = iter->data; + nmt_newt_listbox_append(priv->listbox, nm_connection_get_id(conn), conn); + if (conn == selected_conn) + selected_row = row; + } + if (selected_row >= row) + selected_row = row - 1; + nmt_newt_listbox_set_active(priv->listbox, selected_row); + + return; + } + + types = nm_editor_utils_get_connection_type_list(); + for (i = row = 0; types[i]; i++) { + if (types[i]->setting_type == NM_TYPE_SETTING_VPN) { + if (did_vpn) + continue; + did_vpn = TRUE; + } + + did_header = FALSE; + + for (iter = priv->connections; iter; iter = iter->next) { + NMSetting *setting; + char * indented; + + conn = iter->data; + setting = nm_connection_get_setting(conn, types[i]->setting_type); + if (!setting) + continue; + if (!nm_connection_is_type(conn, nm_setting_get_name(setting))) + continue; + + if (!did_header) { + nmt_newt_listbox_append(priv->listbox, types[i]->name, NULL); + if (row == selected_row) + selected_row++; + row++; + did_header = TRUE; + } + + indented = g_strdup_printf(" %s", nm_connection_get_id(conn)); + nmt_newt_listbox_append(priv->listbox, indented, conn); + g_free(indented); + + if (conn == selected_conn) + selected_row = row; + row++; + } + } + + if (selected_row >= row) + selected_row = row - 1; + nmt_newt_listbox_set_active(priv->listbox, selected_row); } static void -rebuild_on_connections_changed (GObject *object, - GParamSpec *pspec, - gpointer list) +rebuild_on_connections_changed(GObject *object, GParamSpec *pspec, gpointer list) { - nmt_edit_connection_list_rebuild (list); + nmt_edit_connection_list_rebuild(list); } static void -nmt_edit_connection_list_constructed (GObject *object) +nmt_edit_connection_list_constructed(GObject *object) { - NmtEditConnectionList *list = NMT_EDIT_CONNECTION_LIST (object); - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); + NmtEditConnectionList * list = NMT_EDIT_CONNECTION_LIST(object); + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); - if (priv->extra) - nmt_newt_button_box_add_widget_end (priv->buttons, priv->extra); + if (priv->extra) + nmt_newt_button_box_add_widget_end(priv->buttons, priv->extra); - g_signal_connect (nm_client, "notify::" NM_CLIENT_CONNECTIONS, - G_CALLBACK (rebuild_on_connections_changed), list); + g_signal_connect(nm_client, + "notify::" NM_CLIENT_CONNECTIONS, + G_CALLBACK(rebuild_on_connections_changed), + list); - nmt_edit_connection_list_rebuild (list); + nmt_edit_connection_list_rebuild(list); - G_OBJECT_CLASS (nmt_edit_connection_list_parent_class)->constructed (object); + G_OBJECT_CLASS(nmt_edit_connection_list_parent_class)->constructed(object); } static void -add_clicked (NmtNewtButton *button, gpointer list) +add_clicked(NmtNewtButton *button, gpointer list) { - g_signal_emit (list, signals[ADD_CONNECTION], 0); + g_signal_emit(list, signals[ADD_CONNECTION], 0); } static void -edit_clicked (NmtNewtButton *button, gpointer list) +edit_clicked(NmtNewtButton *button, gpointer list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - NMConnection *connection; + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + NMConnection * connection; - connection = nmt_newt_listbox_get_active_key (priv->listbox); - g_return_if_fail (connection != NULL); + connection = nmt_newt_listbox_get_active_key(priv->listbox); + g_return_if_fail(connection != NULL); - g_signal_emit (list, signals[EDIT_CONNECTION], 0, connection); + g_signal_emit(list, signals[EDIT_CONNECTION], 0, connection); } static void -delete_clicked (NmtNewtButton *button, gpointer list) +delete_clicked(NmtNewtButton *button, gpointer list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - NMRemoteConnection *connection; + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + NMRemoteConnection * connection; - connection = nmt_newt_listbox_get_active_key (priv->listbox); - g_return_if_fail (connection != NULL); + connection = nmt_newt_listbox_get_active_key(priv->listbox); + g_return_if_fail(connection != NULL); - g_signal_emit (list, signals[REMOVE_CONNECTION], 0, connection); + g_signal_emit(list, signals[REMOVE_CONNECTION], 0, connection); } static void -listbox_activated (NmtNewtWidget *listbox, gpointer list) +listbox_activated(NmtNewtWidget *listbox, gpointer list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); - edit_clicked (NMT_NEWT_BUTTON (priv->edit), list); + edit_clicked(NMT_NEWT_BUTTON(priv->edit), list); } static void -connection_saved (GObject *conn, - GAsyncResult *result, - gpointer user_data) +connection_saved(GObject *conn, GAsyncResult *result, gpointer user_data) { - nm_remote_connection_save_finish (NM_REMOTE_CONNECTION (conn), result, NULL); + nm_remote_connection_save_finish(NM_REMOTE_CONNECTION(conn), result, NULL); } void -nmt_edit_connection_list_recommit (NmtEditConnectionList *list) +nmt_edit_connection_list_recommit(NmtEditConnectionList *list) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (list); - NMConnection *conn; - GSList *iter; - - for (iter = priv->connections; iter; iter = iter->next) { - conn = iter->data; - - if ( NM_IS_REMOTE_CONNECTION (conn) - && (nm_remote_connection_get_unsaved (NM_REMOTE_CONNECTION (conn)) == FALSE)) { - nm_remote_connection_save_async (NM_REMOTE_CONNECTION (conn), - NULL, connection_saved, NULL); - } - } + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(list); + NMConnection * conn; + GSList * iter; + + for (iter = priv->connections; iter; iter = iter->next) { + conn = iter->data; + + if (NM_IS_REMOTE_CONNECTION(conn) + && (nm_remote_connection_get_unsaved(NM_REMOTE_CONNECTION(conn)) == FALSE)) { + nm_remote_connection_save_async(NM_REMOTE_CONNECTION(conn), + NULL, + connection_saved, + NULL); + } + } } static void -nmt_edit_connection_list_finalize (GObject *object) +nmt_edit_connection_list_finalize(GObject *object) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (object); + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(object); - free_connections (NMT_EDIT_CONNECTION_LIST (object)); - g_clear_object (&priv->extra); + free_connections(NMT_EDIT_CONNECTION_LIST(object)); + g_clear_object(&priv->extra); - G_OBJECT_CLASS (nmt_edit_connection_list_parent_class)->finalize (object); + G_OBJECT_CLASS(nmt_edit_connection_list_parent_class)->finalize(object); } static void -nmt_edit_connection_list_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +nmt_edit_connection_list_set_property(GObject * object, + guint prop_id, + const GValue *value, + GParamSpec * pspec) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_GROUPED: - priv->grouped = g_value_get_boolean (value); - break; - case PROP_CONNECTION_FILTER: - priv->connection_filter = g_value_get_pointer (value); - break; - case PROP_CONNECTION_FILTER_DATA: - priv->connection_filter_data = g_value_get_pointer (value); - break; - case PROP_EXTRA_WIDGET: - priv->extra = g_value_get_object (value); - if (priv->extra) - g_object_ref_sink (priv->extra); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(object); + + switch (prop_id) { + case PROP_GROUPED: + priv->grouped = g_value_get_boolean(value); + break; + case PROP_CONNECTION_FILTER: + priv->connection_filter = g_value_get_pointer(value); + break; + case PROP_CONNECTION_FILTER_DATA: + priv->connection_filter_data = g_value_get_pointer(value); + break; + case PROP_EXTRA_WIDGET: + priv->extra = g_value_get_object(value); + if (priv->extra) + g_object_ref_sink(priv->extra); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } } static void -nmt_edit_connection_list_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +nmt_edit_connection_list_get_property(GObject * object, + guint prop_id, + GValue * value, + GParamSpec *pspec) { - NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE (object); - GPtrArray *connections; - GSList *iter; - - switch (prop_id) { - case PROP_GROUPED: - g_value_set_boolean (value, priv->grouped); - break; - case PROP_CONNECTION_FILTER: - g_value_set_pointer (value, priv->connection_filter); - break; - case PROP_CONNECTION_FILTER_DATA: - g_value_set_pointer (value, priv->connection_filter_data); - break; - case PROP_EXTRA_WIDGET: - g_value_set_object (value, priv->extra); - break; - case PROP_CONNECTIONS: - connections = g_ptr_array_new_with_free_func (g_object_unref); - for (iter = priv->connections; iter; iter = iter->next) - g_ptr_array_add (connections, g_object_ref (iter->data)); - g_value_take_boxed (value, connections); - break; - case PROP_NUM_CONNECTIONS: - g_value_set_int (value, g_slist_length (priv->connections)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + NmtEditConnectionListPrivate *priv = NMT_EDIT_CONNECTION_LIST_GET_PRIVATE(object); + GPtrArray * connections; + GSList * iter; + + switch (prop_id) { + case PROP_GROUPED: + g_value_set_boolean(value, priv->grouped); + break; + case PROP_CONNECTION_FILTER: + g_value_set_pointer(value, priv->connection_filter); + break; + case PROP_CONNECTION_FILTER_DATA: + g_value_set_pointer(value, priv->connection_filter_data); + break; + case PROP_EXTRA_WIDGET: + g_value_set_object(value, priv->extra); + break; + case PROP_CONNECTIONS: + connections = g_ptr_array_new_with_free_func(g_object_unref); + for (iter = priv->connections; iter; iter = iter->next) + g_ptr_array_add(connections, g_object_ref(iter->data)); + g_value_take_boxed(value, connections); + break; + case PROP_NUM_CONNECTIONS: + g_value_set_int(value, g_slist_length(priv->connections)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } } static void -nmt_edit_connection_list_class_init (NmtEditConnectionListClass *list_class) +nmt_edit_connection_list_class_init(NmtEditConnectionListClass *list_class) { - GObjectClass *object_class = G_OBJECT_CLASS (list_class); - - g_type_class_add_private (list_class, sizeof (NmtEditConnectionListPrivate)); - - /* virtual methods */ - object_class->constructed = nmt_edit_connection_list_constructed; - object_class->set_property = nmt_edit_connection_list_set_property; - object_class->get_property = nmt_edit_connection_list_get_property; - object_class->finalize = nmt_edit_connection_list_finalize; - - /* signals */ - - /** - * NmtEditConnectionList::add-connection: - * @list: the #NmtEditConnectionList - * - * Emitted when the user clicks the list's "Add" button. - */ - signals[ADD_CONNECTION] = - g_signal_new ("add-connection", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NmtEditConnectionListClass, add_connection), - NULL, NULL, NULL, - G_TYPE_NONE, 0); - - /** - * NmtEditConnectionList::edit-connection: - * @list: the #NmtEditConnectionList - * @connection: the connection to edit - * - * Emitted when the user clicks the list's "Edit" button, or - * hits "Return" on the listbox. - */ - signals[EDIT_CONNECTION] = - g_signal_new ("edit-connection", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NmtEditConnectionListClass, edit_connection), - NULL, NULL, NULL, - G_TYPE_NONE, 1, - NM_TYPE_CONNECTION); - - /** - * NmtEditConnectionList::remove-connection: - * @list: the #NmtEditConnectionList - * @connection: the connection to remove - * - * Emitted when the user clicks the list's "Delete" button. - */ - signals[REMOVE_CONNECTION] = - g_signal_new ("remove-connection", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NmtEditConnectionListClass, remove_connection), - NULL, NULL, NULL, - G_TYPE_NONE, 1, - NM_TYPE_CONNECTION); - - /* properties */ - - /** - * NmtEditConnectionList:grouped: - * - * If %TRUE, connections should be grouped by type, with headers - * indicating the types (as in the main connection list). If %FALSE, - * they will not be grouped (as in slave connection lists). - */ - g_object_class_install_property - (object_class, PROP_GROUPED, - g_param_spec_boolean ("grouped", "", "", - TRUE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /** - * NmtEditConnectionListFilter: - * @list: the #NmtEditConnectionList - * @connection: an #NMConnection - * @user_data: the user data - * - * Decides whether @connection should be displayed in @list. - * - * Returns: %TRUE or %FALSE - */ - /** - * NmtEditConnectionList:connection-filter: - * - * A callback function for filtering which connections appear in - * the list. - */ - g_object_class_install_property - (object_class, PROP_CONNECTION_FILTER, - g_param_spec_pointer ("connection-filter", "", "", - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - /** - * NmtEditConnectionList:connection-filter-data: - * - * Data for the #NmtEditConnectionList:connection-filter. - */ - g_object_class_install_property - (object_class, PROP_CONNECTION_FILTER_DATA, - g_param_spec_pointer ("connection-filter-data", "", "", - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /** - * NmtEditConnectionList:extra-widget: - * - * An extra button widget to display at the bottom of the button - * box. - */ - g_object_class_install_property - (object_class, PROP_EXTRA_WIDGET, - g_param_spec_object ("extra-widget", "", "", - NMT_TYPE_NEWT_WIDGET, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /** - * NmtEditConnectionList:connections: - * - * The list of connections in the widget. - * - * Element-Type: #NMConnection - */ - g_object_class_install_property - (object_class, PROP_CONNECTIONS, - g_param_spec_boxed ("connections", "", "", - G_TYPE_PTR_ARRAY, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - /** - * NmtEditConnectionList:num-connections: - * - * The number of connections in the widget. - */ - g_object_class_install_property - (object_class, PROP_NUM_CONNECTIONS, - g_param_spec_int ("num-connections", "", "", - 0, G_MAXINT, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + GObjectClass *object_class = G_OBJECT_CLASS(list_class); + + g_type_class_add_private(list_class, sizeof(NmtEditConnectionListPrivate)); + + /* virtual methods */ + object_class->constructed = nmt_edit_connection_list_constructed; + object_class->set_property = nmt_edit_connection_list_set_property; + object_class->get_property = nmt_edit_connection_list_get_property; + object_class->finalize = nmt_edit_connection_list_finalize; + + /* signals */ + + /** + * NmtEditConnectionList::add-connection: + * @list: the #NmtEditConnectionList + * + * Emitted when the user clicks the list's "Add" button. + */ + signals[ADD_CONNECTION] = + g_signal_new("add-connection", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(NmtEditConnectionListClass, add_connection), + NULL, + NULL, + NULL, + G_TYPE_NONE, + 0); + + /** + * NmtEditConnectionList::edit-connection: + * @list: the #NmtEditConnectionList + * @connection: the connection to edit + * + * Emitted when the user clicks the list's "Edit" button, or + * hits "Return" on the listbox. + */ + signals[EDIT_CONNECTION] = + g_signal_new("edit-connection", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(NmtEditConnectionListClass, edit_connection), + NULL, + NULL, + NULL, + G_TYPE_NONE, + 1, + NM_TYPE_CONNECTION); + + /** + * NmtEditConnectionList::remove-connection: + * @list: the #NmtEditConnectionList + * @connection: the connection to remove + * + * Emitted when the user clicks the list's "Delete" button. + */ + signals[REMOVE_CONNECTION] = + g_signal_new("remove-connection", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(NmtEditConnectionListClass, remove_connection), + NULL, + NULL, + NULL, + G_TYPE_NONE, + 1, + NM_TYPE_CONNECTION); + + /* properties */ + + /** + * NmtEditConnectionList:grouped: + * + * If %TRUE, connections should be grouped by type, with headers + * indicating the types (as in the main connection list). If %FALSE, + * they will not be grouped (as in slave connection lists). + */ + g_object_class_install_property( + object_class, + PROP_GROUPED, + g_param_spec_boolean("grouped", + "", + "", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + + /** + * NmtEditConnectionListFilter: + * @list: the #NmtEditConnectionList + * @connection: an #NMConnection + * @user_data: the user data + * + * Decides whether @connection should be displayed in @list. + * + * Returns: %TRUE or %FALSE + */ + /** + * NmtEditConnectionList:connection-filter: + * + * A callback function for filtering which connections appear in + * the list. + */ + g_object_class_install_property( + object_class, + PROP_CONNECTION_FILTER, + g_param_spec_pointer("connection-filter", + "", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + /** + * NmtEditConnectionList:connection-filter-data: + * + * Data for the #NmtEditConnectionList:connection-filter. + */ + g_object_class_install_property( + object_class, + PROP_CONNECTION_FILTER_DATA, + g_param_spec_pointer("connection-filter-data", + "", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + + /** + * NmtEditConnectionList:extra-widget: + * + * An extra button widget to display at the bottom of the button + * box. + */ + g_object_class_install_property( + object_class, + PROP_EXTRA_WIDGET, + g_param_spec_object("extra-widget", + "", + "", + NMT_TYPE_NEWT_WIDGET, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + + /** + * NmtEditConnectionList:connections: + * + * The list of connections in the widget. + * + * Element-Type: #NMConnection + */ + g_object_class_install_property(object_class, + PROP_CONNECTIONS, + g_param_spec_boxed("connections", + "", + "", + G_TYPE_PTR_ARRAY, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + + /** + * NmtEditConnectionList:num-connections: + * + * The number of connections in the widget. + */ + g_object_class_install_property(object_class, + PROP_NUM_CONNECTIONS, + g_param_spec_int("num-connections", + "", + "", + 0, + G_MAXINT, + 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); } |