| 2346 |
2346 |
| 2347 return ret; |
2347 return ret; |
| 2348 } |
2348 } |
| 2349 |
2349 |
| 2350 static void |
2350 static void |
| 2351 change_master_password_cb(GtkWidget * button, gpointer ptr) |
2351 change_master_password_cb(GtkWidget *button, gpointer ptr) |
| 2352 { |
2352 { |
| 2353 purple_keyring_change_master(NULL, NULL); |
2353 purple_keyring_change_master(NULL, NULL); |
| 2354 } |
2354 } |
| 2355 |
2355 |
| 2356 static void |
2356 static void |
| 2357 keyring_page_pref_changed(const char *name, PurplePrefType type, gconstpointer val, gpointer data) |
2357 keyring_page_pref_changed(const char *name, PurplePrefType type, gconstpointer val, gpointer data) |
| 2358 { |
2358 { |
| 2359 GtkWidget * button = data; |
2359 GtkWidget *button = data; |
| 2360 PurpleKeyring * keyring; |
2360 PurpleKeyring *keyring; |
| 2361 |
2361 |
| 2362 g_return_if_fail(type == PURPLE_PREF_STRING); |
2362 g_return_if_fail(type == PURPLE_PREF_STRING); |
| 2363 g_return_if_fail(g_strcmp0(name,"/purple/keyring/active") == 0); |
2363 g_return_if_fail(g_strcmp0(name, "/purple/keyring/active") == 0); |
| 2364 |
2364 |
| 2365 /** |
2365 /** |
| 2366 * This part is annoying. |
2366 * This part is annoying. |
| 2367 * Since we do not know if purple_keyring_inuse was changed yet, |
2367 * Since we do not know if purple_keyring_inuse was changed yet, |
| 2368 * as we do not know the order the callbacks are called in, we |
2368 * as we do not know the order the callbacks are called in, we |
| 2371 */ |
2371 */ |
| 2372 |
2372 |
| 2373 keyring = purple_keyring_get_keyring_by_id(val); |
2373 keyring = purple_keyring_get_keyring_by_id(val); |
| 2374 |
2374 |
| 2375 if (purple_keyring_get_change_master(keyring)) |
2375 if (purple_keyring_get_change_master(keyring)) |
| 2376 gtk_widget_set_sensitive(button,TRUE); |
2376 gtk_widget_set_sensitive(button, TRUE); |
| 2377 else |
2377 else |
| 2378 gtk_widget_set_sensitive(button,FALSE); |
2378 gtk_widget_set_sensitive(button, FALSE); |
| 2379 } |
2379 } |
| 2380 |
|
| 2381 |
2380 |
| 2382 static GtkWidget * |
2381 static GtkWidget * |
| 2383 keyring_page(void) |
2382 keyring_page(void) |
| 2384 { |
2383 { |
| 2385 GtkWidget *ret; |
2384 GtkWidget *ret; |
| 2386 GtkWidget *vbox; |
2385 GtkWidget *vbox; |
| 2387 GtkWidget * button; |
2386 GtkWidget *button; |
| 2388 GList *names; |
2387 GList *names; |
| 2389 void * prefs; |
2388 void *prefs; |
| 2390 const char * keyring_id; |
2389 const char *keyring_id; |
| 2391 PurpleKeyring * keyring; |
2390 PurpleKeyring *keyring; |
| 2392 |
2391 |
| 2393 keyring_id = purple_prefs_get_string("/purple/keyring/active"); |
2392 keyring_id = purple_prefs_get_string("/purple/keyring/active"); |
| 2394 keyring = purple_keyring_get_keyring_by_id(keyring_id); |
2393 keyring = purple_keyring_get_keyring_by_id(keyring_id); |
| 2395 |
2394 |
| 2396 prefs = purple_prefs_get_handle(); |
2395 prefs = purple_prefs_get_handle(); |
| 2397 |
2396 |
| 2398 ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); |
2397 ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); |
| 2399 gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); |
2398 gtk_container_set_border_width(GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); |
| 2400 |
2399 |
| 2401 /* Keyring selection */ |
2400 /* Keyring selection */ |
| 2402 vbox = pidgin_make_frame (ret, _("Keyring")); |
2401 vbox = pidgin_make_frame(ret, _("Keyring")); |
| 2403 names = purple_keyring_get_options(); |
2402 names = purple_keyring_get_options(); |
| 2404 pidgin_prefs_dropdown_from_list(vbox, _("Keyring :"), PURPLE_PREF_STRING, |
2403 pidgin_prefs_dropdown_from_list(vbox, _("Keyring :"), PURPLE_PREF_STRING, |
| 2405 "/purple/keyring/active", names); |
2404 "/purple/keyring/active", names); |
| 2406 g_list_free(names); |
2405 g_list_free(names); |
| 2407 |
2406 |
| 2410 |
2409 |
| 2411 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(change_master_password_cb), NULL); |
2410 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(change_master_password_cb), NULL); |
| 2412 purple_prefs_connect_callback (prefs, "/purple/keyring/active", keyring_page_pref_changed, button); |
2411 purple_prefs_connect_callback (prefs, "/purple/keyring/active", keyring_page_pref_changed, button); |
| 2413 |
2412 |
| 2414 if (purple_keyring_get_change_master(keyring)) |
2413 if (purple_keyring_get_change_master(keyring)) |
| 2415 gtk_widget_set_sensitive(button,TRUE); |
2414 gtk_widget_set_sensitive(button, TRUE); |
| 2416 else |
2415 else |
| 2417 gtk_widget_set_sensitive(button,FALSE); |
2416 gtk_widget_set_sensitive(button, FALSE); |
| 2418 |
2417 |
| 2419 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 1); |
2418 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 1); |
| 2420 gtk_widget_show_all(ret); |
2419 gtk_widget_show_all(ret); |
| |
2420 |
| 2421 return ret; |
2421 return ret; |
| 2422 } |
2422 } |
| 2423 |
2423 |
| 2424 #ifndef _WIN32 |
2424 #ifndef _WIN32 |
| 2425 static gint |
2425 static gint |