pidgin/pidginstatusprimitivechooser.c

changeset 42189
4784cd60a1f8
parent 41925
103594fbcf6b
child 42198
4df23def5fe0
equal deleted inserted replaced
42188:04c0398f1046 42189:4784cd60a1f8
23 #include <pidgin/pidginstatusprimitivechooser.h> 23 #include <pidgin/pidginstatusprimitivechooser.h>
24 24
25 #include <pidgin/pidginiconname.h> 25 #include <pidgin/pidginiconname.h>
26 26
27 struct _PidginStatusPrimitiveChooser { 27 struct _PidginStatusPrimitiveChooser {
28 AdwBin parent; 28 AdwComboRow parent;
29
30 GtkDropDown *chooser;
31 }; 29 };
32 30
33 G_DEFINE_TYPE(PidginStatusPrimitiveChooser, pidgin_status_primitive_chooser, 31 G_DEFINE_TYPE(PidginStatusPrimitiveChooser, pidgin_status_primitive_chooser,
34 ADW_TYPE_BIN) 32 ADW_TYPE_COMBO_ROW)
35 33
36 /****************************************************************************** 34 /******************************************************************************
37 * Helpers 35 * Helpers
38 *****************************************************************************/ 36 *****************************************************************************/
39 static PurpleStatusPrimitive 37 static PurpleStatusPrimitive
108 106
109 /* Widget template */ 107 /* Widget template */
110 gtk_widget_class_set_template_from_resource( 108 gtk_widget_class_set_template_from_resource(
111 widget_class, "/im/pidgin/Pidgin3/statusprimitivechooser.ui"); 109 widget_class, "/im/pidgin/Pidgin3/statusprimitivechooser.ui");
112 110
113 gtk_widget_class_bind_template_child(widget_class,
114 PidginStatusPrimitiveChooser,
115 chooser);
116
117 gtk_widget_class_bind_template_callback(widget_class, 111 gtk_widget_class_bind_template_callback(widget_class,
118 pidgin_status_primitive_chooser_icon_name_cb); 112 pidgin_status_primitive_chooser_icon_name_cb);
119 gtk_widget_class_bind_template_callback(widget_class, 113 gtk_widget_class_bind_template_callback(widget_class,
120 pidgin_status_primitive_chooser_label_cb); 114 pidgin_status_primitive_chooser_label_cb);
121 } 115 }
134 const char *value = NULL; 128 const char *value = NULL;
135 129
136 g_return_val_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser), 130 g_return_val_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser),
137 PURPLE_STATUS_UNSET); 131 PURPLE_STATUS_UNSET);
138 132
139 selected = gtk_drop_down_get_selected_item(chooser->chooser); 133 selected = adw_combo_row_get_selected_item(ADW_COMBO_ROW(chooser));
140 value = gtk_string_object_get_string(selected); 134 value = gtk_string_object_get_string(selected);
141 135
142 return pidgin_status_primitive_chooser_primitive_from_string(value); 136 return pidgin_status_primitive_chooser_primitive_from_string(value);
143 } 137 }
144 138
145 void 139 void
146 pidgin_status_primitive_chooser_set_selected(PidginStatusPrimitiveChooser *chooser, 140 pidgin_status_primitive_chooser_set_selected(PidginStatusPrimitiveChooser *chooser,
147 PurpleStatusPrimitive primitive) 141 PurpleStatusPrimitive primitive)
148 { 142 {
149 GListModel *model = NULL; 143 GListModel *model = NULL;
144 GtkStringList *list = NULL;
150 145
151 g_return_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser)); 146 g_return_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser));
152 147
153 model = gtk_drop_down_get_model(chooser->chooser); 148 model = adw_combo_row_get_model(ADW_COMBO_ROW(chooser));
149 list = GTK_STRING_LIST(model);
154 for(guint i = 0; i < g_list_model_get_n_items(model); i++) { 150 for(guint i = 0; i < g_list_model_get_n_items(model); i++) {
155 PurpleStatusPrimitive candidate = PURPLE_STATUS_UNSET; 151 PurpleStatusPrimitive candidate = PURPLE_STATUS_UNSET;
156 GtkStringObject *str = NULL;
157 const char *value = NULL; 152 const char *value = NULL;
158 153
159 str = g_list_model_get_item(model, i); 154 value = gtk_string_list_get_string(list, i);
160 value = gtk_string_object_get_string(str);
161
162 candidate = pidgin_status_primitive_chooser_primitive_from_string(value); 155 candidate = pidgin_status_primitive_chooser_primitive_from_string(value);
163 g_clear_object(&str);
164 156
165 if(primitive == candidate) { 157 if(primitive == candidate) {
166 gtk_drop_down_set_selected(chooser->chooser, i); 158 adw_combo_row_set_selected(ADW_COMBO_ROW(chooser), i);
159 break;
167 } 160 }
168 } 161 }
169 } 162 }

mercurial