int config_get_sensor_position(const char *);
void config_set_sensor_position(const char *, int);
-
#endif
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
+#include <stdlib.h>
+
#include "cfg.h"
#include "slog.h"
#include "ui.h"
ui_window_update(ui);
gtk_window_present(GTK_WINDOW(ui->main_window));
}
+
+static int cmp_sensors(const void *p1, const void *p2)
+{
+ const struct psensor *s1, *s2;
+ int pos1, pos2;
+
+ s1 = *(void **)p1;
+ s2 = *(void **)p2;
+
+ pos1 = config_get_sensor_position(s1->id);
+ pos2 = config_get_sensor_position(s2->id);
+
+ return pos1 - pos2;
+}
+
+struct psensor **ui_get_sensors_ordered_by_position(struct ui_psensor *ui)
+{
+ struct psensor **result;
+
+ result = psensor_list_copy(ui->sensors);
+ qsort(result,
+ psensor_list_size(result),
+ sizeof(struct psensor *),
+ cmp_sensors);
+
+ return result;
+}
gtk_tree_path_free(path);
}
-static int cmp_sensors(const void *p1, const void *p2)
-{
- const struct psensor *s1, *s2;
- int pos1, pos2;
-
- s1 = *(void **)p1;
- s2 = *(void **)p2;
-
- pos1 = config_get_sensor_position(s1->id);
- pos2 = config_get_sensor_position(s2->id);
-
- return pos1 - pos2;
-}
-
void ui_sensorlist_create(struct ui_psensor *ui)
{
GtkListStore *store;
renderer,
"text", COL_EMPTY, NULL);
- ordered_sensors = psensor_list_copy(ui->sensors);
- qsort(ordered_sensors,
- psensor_list_size(ordered_sensors),
- sizeof(struct psensor *),
- cmp_sensors);
+ ordered_sensors = ui_get_sensors_ordered_by_position(ui);
store = ui->sensors_store;
for (s_cur = ordered_sensors; *s_cur; s_cur++) {
struct cb_data cbdata;
GtkTreeIter iter;
struct sensor_pref *spref;
+ struct psensor **ordered_sensors;
gboolean valid;
GtkTreeModel *model;
store = GTK_LIST_STORE(gtk_builder_get_object(builder,
"sensors_liststore"));
- for (s_cur = ui->sensors; *s_cur; s_cur++) {
+ ordered_sensors = ui_get_sensors_ordered_by_position(ui);
+ for (s_cur = ordered_sensors; *s_cur; s_cur++) {
s = *s_cur;
gtk_list_store_append(store, &iter);
if (s == sensor)
update_pref(spref, ui->config, builder);
}
+ free(ordered_sensors);
selection = gtk_tree_view_get_selection(w_sensors_list);
g_signal_connect(selection, "changed", G_CALLBACK(on_changed), &cbdata);