| 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 { |