static void init_password_icon (VpncEditor *self, NMSettingVpn *s_vpn, const char *secret_key, const char *type_key, const char *entry_name) { VpncEditorPrivate *priv = VPNC_EDITOR_GET_PRIVATE (self); GtkWidget *entry; const char *value; const char *flags = NULL; entry = GTK_WIDGET (gtk_builder_get_object (priv->builder, entry_name)); g_assert (entry); nma_utils_setup_password_storage (entry, 0, (NMSetting *) s_vpn, secret_key, TRUE, FALSE); /* If there's no password and no flags in the setting, * initialize flags as "always-ask". */ if (s_vpn) { flags = secret_flags_to_pw_type (s_vpn, secret_key); if (!flags || !strcmp (flags, NM_VPNC_PW_TYPE_SAVE)) flags = nm_setting_vpn_get_data_item (s_vpn, type_key); } value = gtk_entry_get_text (GTK_ENTRY (entry)); if ((!value || !*value) && !flags) nma_utils_update_password_storage (entry, NM_SETTING_SECRET_FLAG_NOT_SAVED, (NMSetting *) s_vpn, secret_key); g_signal_connect (entry, "notify::secondary-icon-name", G_CALLBACK (password_storage_changed_cb), self); }
static void init_one_pw_combo (OpenswanPluginUiWidget *self, NMSettingVPN *s_vpn, const char *combo_name, const char *secret_key, const char *type_key, const char *entry_name) { OpenswanPluginUiWidgetPrivate *priv = OPENSWAN_PLUGIN_UI_WIDGET_GET_PRIVATE (self); int active = -1; GtkWidget *widget; GtkListStore *store; GtkTreeIter iter; const char *value = NULL; guint32 default_idx = 1; /* If there's already a password and the password type can't be found in * the VPN settings, default to saving it. Otherwise, always ask for it. */ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, entry_name)); if (widget) { const char *tmp; tmp = gtk_entry_get_text (GTK_ENTRY (widget)); if (tmp && strlen (tmp)) default_idx = 0; } store = gtk_list_store_new (1, G_TYPE_STRING); if (s_vpn) { value = secret_flags_to_pw_type (s_vpn, secret_key); if (!value) value = nm_setting_vpn_get_data_item (s_vpn, type_key); } gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, _("Saved"), -1); if ((active < 0) && value) { if (!strcmp (value, NM_OPENSWAN_PW_TYPE_SAVE)) active = 0; } gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, _("Always Ask"), -1); if ((active < 0) && value) { if (!strcmp (value, NM_OPENSWAN_PW_TYPE_ASK)) active = 1; } gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, _("Not Required"), -1); if ((active < 0) && value) { if (!strcmp (value, NM_OPENSWAN_PW_TYPE_UNUSED)) active = 2; } widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, combo_name)); g_assert (widget); gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store)); g_object_unref (store); gtk_combo_box_set_active (GTK_COMBO_BOX (widget), active < 0 ? default_idx : active); pw_type_changed_helper (self, widget); g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (pw_type_combo_changed_cb), self); }