correctly update sensor row when name/color/graph is modified
authorJean-Philippe Orsini <jeanfi@gmail.com>
Fri, 29 Mar 2013 18:33:17 +0000 (18:33 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Fri, 29 Mar 2013 18:33:17 +0000 (18:33 +0000)
src/main.c
src/ui_sensorlist.c
src/ui_sensorlist.h
src/ui_sensorpref.c

index 90d26ac..c904764 100644 (file)
@@ -212,7 +212,7 @@ gboolean ui_refresh_thread(gpointer data)
 
        graph_update(ui->sensors, ui->w_graph, ui->config, ui->main_window);
 
-       ui_sensorlist_update(ui);
+       ui_sensorlist_update(ui, 0);
 
        if (is_appindicator_supported() || is_status_supported())
                indicators_update(ui);
index 59d9d79..522004c 100644 (file)
@@ -55,9 +55,9 @@ static int col_index_to_col(int idx)
        return idx;
 }
 
-void ui_sensorlist_update(struct ui_psensor *ui)
+void ui_sensorlist_update(struct ui_psensor *ui, bool complete)
 {
-       char *str;
+       char *str, *scolor;
        struct psensor *s;
        GtkTreeIter iter;
        struct ui_sensorlist *ui_sl = ui->ui_sensorlist;
@@ -65,6 +65,7 @@ void ui_sensorlist_update(struct ui_psensor *ui)
            = gtk_tree_view_get_model(ui_sl->treeview);
        gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
        int use_celcius;
+       GdkColor color;
 
        use_celcius = ui->config->temperature_unit == CELCIUS;
 
@@ -90,6 +91,25 @@ void ui_sensorlist_update(struct ui_psensor *ui)
                                   COL_TEMP_MAX, str, -1);
                free(str);
 
+               if (complete) {
+                       color.red = s->color->red;
+                       color.green = s->color->green;
+                       color.blue = s->color->blue;
+                       
+                       scolor = gdk_color_to_string(&color);
+                       
+                       gtk_list_store_set(GTK_LIST_STORE(model),
+                                          &iter, COL_NAME, s->name, -1);
+                       
+                       gtk_list_store_set(GTK_LIST_STORE(model),
+                                          &iter, COL_COLOR_STR, scolor, -1);
+                       
+                       gtk_list_store_set(GTK_LIST_STORE(model),
+                                          &iter, COL_ENABLED, s->enabled, -1);
+                       
+                       free(scolor);
+               }
+
                valid = gtk_tree_model_iter_next(model, &iter);
        }
 }
@@ -143,40 +163,6 @@ static int get_col_index_at_pos(GtkTreeView *view, int x)
        return -1;
 }
 
-void ui_sensorlist_update_sensors_preferences(struct ui_psensor *ui)
-{
-       GtkTreeIter iter;
-       GtkTreeModel *model
-           = gtk_tree_view_get_model(ui->ui_sensorlist->treeview);
-       gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
-       struct psensor **sensor = ui->ui_sensorlist->sensors;
-
-       while (valid && *sensor) {
-               GdkColor color;
-               gchar *scolor;
-
-               color.red = (*sensor)->color->red;
-               color.green = (*sensor)->color->green;
-               color.blue = (*sensor)->color->blue;
-
-               scolor = gdk_color_to_string(&color);
-
-               gtk_list_store_set(GTK_LIST_STORE(model),
-                                  &iter, COL_NAME, (*sensor)->name, -1);
-
-               gtk_list_store_set(GTK_LIST_STORE(model),
-                                  &iter, COL_COLOR_STR, scolor, -1);
-
-               gtk_list_store_set(GTK_LIST_STORE(model),
-                                  &iter, COL_ENABLED, (*sensor)->enabled, -1);
-
-               free(scolor);
-
-               valid = gtk_tree_model_iter_next(model, &iter);
-               sensor++;
-       }
-}
-
 static void on_preferences_activated(GtkWidget *menu_item, gpointer data)
 {
        struct cb_data *cb_data = data;
@@ -237,7 +223,7 @@ static int on_clicked(GtkWidget *widget, GdkEventButton *event, gpointer data)
                if (coli == COL_COLOR) {
                        if (ui_change_color(_("Select foreground color"),
                                            sensor->color)) {
-                               ui_sensorlist_update_sensors_preferences(ui);
+                               ui_sensorlist_update(ui, 1);
                                config_set_sensor_color(sensor->id,
                                                        sensor->color);
                        }
index 221f588..0e8ffe0 100644 (file)
@@ -33,7 +33,7 @@ struct ui_sensorlist {
 void ui_sensorlist_create(struct ui_psensor *);
 
 /* Update values current/min/max */
-void ui_sensorlist_update(struct ui_psensor *ui);
+void ui_sensorlist_update(struct ui_psensor *ui, bool complete);
 
 void ui_sensorlist_update_sensors_preferences(struct ui_psensor *);
 
index 4108175..9c17475 100644 (file)
@@ -546,7 +546,7 @@ void ui_sensorpref_dialog_run(struct psensor *sensor, struct ui_psensor *ui)
 
        if (result == GTK_RESPONSE_ACCEPT) {
                apply_prefs(cbdata.prefs, ui->sensors, ui->config);
-               ui_sensorlist_update_sensors_preferences(ui);
+               ui_sensorlist_update(ui, 1);
 #if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
                ui_appindicator_update_menu(ui);
 #endif