pidgin/prefs/pidgincredentialprefs.c

changeset 41659
c6edf4d87185
parent 41535
0dee7089dc5a
child 41947
7b3312d0760c
equal deleted inserted replaced
41658:eef0cabd6340 41659:c6edf4d87185
110 g_clear_error(&error); 110 g_clear_error(&error);
111 } 111 }
112 112
113 static void 113 static void
114 pidgin_credential_prefs_set_active_provider(PidginCredentialPrefs *prefs, 114 pidgin_credential_prefs_set_active_provider(PidginCredentialPrefs *prefs,
115 const gchar *new_id) 115 PurpleCredentialProvider *active)
116 { 116 {
117 GtkWidget *child = NULL; 117 GtkWidget *child = NULL;
118 118
119 for (child = gtk_widget_get_first_child(prefs->credential_list); 119 for (child = gtk_widget_get_first_child(prefs->credential_list);
120 child; 120 child;
121 child = gtk_widget_get_next_sibling(child)) 121 child = gtk_widget_get_next_sibling(child))
122 { 122 {
123 PidginCredentialProviderRow *row = NULL; 123 PidginCredentialProviderRow *row = NULL;
124 PurpleCredentialProvider *provider = NULL; 124 PurpleCredentialProvider *provider = NULL;
125 const gchar *id = NULL;
126 125
127 row = PIDGIN_CREDENTIAL_PROVIDER_ROW(child); 126 row = PIDGIN_CREDENTIAL_PROVIDER_ROW(child);
128 provider = pidgin_credential_provider_row_get_provider(row); 127 provider = pidgin_credential_provider_row_get_provider(row);
129 id = purple_credential_provider_get_id(provider);
130 128
131 pidgin_credential_provider_row_set_active(row, 129 pidgin_credential_provider_row_set_active(row, provider == active);
132 purple_strequal(new_id, id));
133 } 130 }
134 } 131 }
135 132
136 static void 133 static void
137 pidgin_credential_prefs_active_provider_changed_cb(const gchar *name, 134 pidgin_credential_prefs_active_provider_changed_cb(PurpleCredentialManager *manager,
138 PurplePrefType type, 135 PurpleCredentialProvider *previous,
139 gconstpointer value, 136 PurpleCredentialProvider *current,
140 gpointer data) 137 gpointer data)
141 { 138 {
142 PidginCredentialPrefs *prefs = PIDGIN_CREDENTIAL_PREFS(data); 139 PidginCredentialPrefs *prefs = PIDGIN_CREDENTIAL_PREFS(data);
143 140
144 pidgin_credential_prefs_set_active_provider(prefs, (const gchar *)value); 141 pidgin_credential_prefs_set_active_provider(prefs, current);
145 } 142 }
146 143
147 /****************************************************************************** 144 /******************************************************************************
148 * GObject Implementation 145 * GObject Implementation
149 *****************************************************************************/ 146 *****************************************************************************/
150 static void 147 static void
151 pidgin_credential_prefs_finalize(GObject *obj) {
152 purple_prefs_disconnect_by_handle(obj);
153
154 G_OBJECT_CLASS(pidgin_credential_prefs_parent_class)->finalize(obj);
155 }
156
157 static void
158 pidgin_credential_prefs_init(PidginCredentialPrefs *prefs) { 148 pidgin_credential_prefs_init(PidginCredentialPrefs *prefs) {
159 PurpleCredentialManager *manager = NULL; 149 PurpleCredentialManager *manager = NULL;
160 const gchar *active = NULL; 150 PurpleCredentialProvider *active = NULL;
161 151
162 gtk_widget_init_template(GTK_WIDGET(prefs)); 152 gtk_widget_init_template(GTK_WIDGET(prefs));
163 153
164 manager = purple_credential_manager_get_default(); 154 manager = purple_credential_manager_get_default();
165 purple_credential_manager_foreach( 155 purple_credential_manager_foreach(
167 pidgin_credential_prefs_create_row, 157 pidgin_credential_prefs_create_row,
168 prefs->credential_list); 158 prefs->credential_list);
169 gtk_list_box_set_sort_func(GTK_LIST_BOX(prefs->credential_list), 159 gtk_list_box_set_sort_func(GTK_LIST_BOX(prefs->credential_list),
170 pidgin_credential_prefs_sort_rows, NULL, NULL); 160 pidgin_credential_prefs_sort_rows, NULL, NULL);
171 161
172 purple_prefs_connect_callback(prefs, "/purple/credentials/active-provider", 162 g_signal_connect_object(manager, "active-changed",
173 pidgin_credential_prefs_active_provider_changed_cb, 163 G_CALLBACK(pidgin_credential_prefs_active_provider_changed_cb),
174 prefs); 164 prefs, 0);
175 165
176 active = purple_prefs_get_string("/purple/credentials/active-provider"); 166 active = purple_credential_manager_get_active(manager);
177 if(active != NULL) { 167 if(active != NULL) {
178 pidgin_credential_prefs_set_active_provider(prefs, active); 168 pidgin_credential_prefs_set_active_provider(prefs, active);
179 } 169 }
180 } 170 }
181 171
182 static void 172 static void
183 pidgin_credential_prefs_class_init(PidginCredentialPrefsClass *klass) { 173 pidgin_credential_prefs_class_init(PidginCredentialPrefsClass *klass) {
184 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
185 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); 174 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
186
187 obj_class->finalize = pidgin_credential_prefs_finalize;
188 175
189 gtk_widget_class_set_template_from_resource( 176 gtk_widget_class_set_template_from_resource(
190 widget_class, 177 widget_class,
191 "/im/pidgin/Pidgin3/Prefs/credentials.ui" 178 "/im/pidgin/Pidgin3/Prefs/credentials.ui"
192 ); 179 );

mercurial