pidgin/prefs/pidginprefs.c

changeset 41653
0a37c380d760
parent 41620
c6f7795ae294
child 41947
7b3312d0760c
equal deleted inserted replaced
41652:fd32ea10d1cb 41653:0a37c380d760
362 362
363 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); 363 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active);
364 364
365 g_signal_connect(G_OBJECT(combo->combo), "changed", 365 g_signal_connect(G_OBJECT(combo->combo), "changed",
366 G_CALLBACK(bind_dropdown_set), combo); 366 G_CALLBACK(bind_dropdown_set), combo);
367 }
368
369 static void
370 bind_combo_row_set(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec,
371 gpointer data)
372 {
373 const gchar *key = data;
374 GtkStringObject *item = NULL;
375 const gchar *value = NULL;
376
377 item = adw_combo_row_get_selected_item(ADW_COMBO_ROW(obj));
378 value = gtk_string_object_get_string(item);
379 purple_prefs_set_string(key, value);
380 }
381
382 void
383 pidgin_prefs_bind_combo_row(const gchar *key, GtkWidget *widget) {
384 GListModel *model = NULL;
385 const char *pref_value = NULL;
386 guint selected = GTK_INVALID_LIST_POSITION;
387
388 pref_value = purple_prefs_get_string(key);
389 model = adw_combo_row_get_model(ADW_COMBO_ROW(widget));
390
391 for(guint i = 0; i < g_list_model_get_n_items(model); i++) {
392 GtkStringObject *obj = g_list_model_get_item(model, i);
393 const gchar *value = gtk_string_object_get_string(obj);
394
395 if (purple_strequal(pref_value, value)) {
396 selected = i;
397 break;
398 }
399 }
400
401 adw_combo_row_set_selected(ADW_COMBO_ROW(widget), selected);
402
403 g_signal_connect(widget, "notify::selected",
404 G_CALLBACK(bind_combo_row_set), (gpointer)key);
367 } 405 }
368 406
369 static void 407 static void
370 set_bool_pref(GtkWidget *w, const char *key) 408 set_bool_pref(GtkWidget *w, const char *key)
371 { 409 {

mercurial