static NmtNewtForm * nmt_connect_connection (const char *identifier) { NmtNewtWidget *list; NMConnection *connection; NMDevice *device; NMObject *specific_object; NMActiveConnection *ac; list = nmt_connect_connection_list_new (); if (!nmt_connect_connection_list_get_connection (NMT_CONNECT_CONNECTION_LIST (list), identifier, &connection, &device, &specific_object, &ac)) nmt_newt_message_dialog (_("No such connection '%s'"), identifier); else if (ac) nmt_newt_message_dialog (_("Connection is already active")); else activate_connection (connection, device, specific_object); g_object_unref (list); return NULL; }
static void listbox_active_changed (GObject *object, GParamSpec *pspec, gpointer button) { NmtConnectConnectionList *list = NMT_CONNECT_CONNECTION_LIST (object); static const char *activate, *deactivate; static int deactivate_padding, activate_padding; NMActiveConnection *ac; gboolean has_selection; if (G_UNLIKELY (activate == NULL)) { int activate_width, deactivate_width; activate = _("Activate"); activate_width = nmt_newt_text_width (activate); deactivate = _("Deactivate"); deactivate_width = nmt_newt_text_width (deactivate); activate_padding = MAX (0, deactivate_width - activate_width); deactivate_padding = MAX (0, activate_width - deactivate_width); } has_selection = nmt_connect_connection_list_get_selection (list, NULL, NULL, NULL, &ac); nmt_newt_component_set_sensitive (button, has_selection); if (has_selection && ac) { nmt_newt_button_set_label (button, deactivate); nmt_newt_widget_set_padding (button, 0, 0, deactivate_padding, 0); } else { nmt_newt_button_set_label (button, activate); nmt_newt_widget_set_padding (button, 0, 0, activate_padding, 0); } }
static void nmt_connect_connection_list_constructed (GObject *object) { NmtConnectConnectionList *list = NMT_CONNECT_CONNECTION_LIST (object); g_signal_connect (nm_client, "notify::" NM_CLIENT_ACTIVE_CONNECTIONS, G_CALLBACK (rebuild_on_property_changed), list); g_signal_connect (nm_client, "notify::" NM_CLIENT_CONNECTIONS, G_CALLBACK (rebuild_on_property_changed), list); g_signal_connect (nm_client, "notify::" NM_CLIENT_DEVICES, G_CALLBACK (rebuild_on_property_changed), list); nmt_connect_connection_list_rebuild (list); G_OBJECT_CLASS (nmt_connect_connection_list_parent_class)->constructed (object); }
static void listbox_activated (NmtNewtListbox *listbox, gpointer user_data) { NmtConnectConnectionList *list = NMT_CONNECT_CONNECTION_LIST (listbox); NMConnection *connection; NMDevice *device; NMObject *specific_object; NMActiveConnection *ac; if (!nmt_connect_connection_list_get_selection (list, &connection, &device, &specific_object, &ac)) return; if (ac) nm_client_deactivate_connection (nm_client, ac, NULL, NULL); else activate_connection (connection, device, specific_object); }