[Xfce4-commits] <xfce4-weather-plugin:master> * Make summary work

Colin Leroy noreply at xfce.org
Wed Nov 16 22:34:08 CET 2011


Updating branch refs/heads/master
         to caff57be41f6eca3e1e075811a5cda220028d5c0 (commit)
       from fa62c838ea0cbb589dfddf2b28d50a85eeee711d (commit)

commit caff57be41f6eca3e1e075811a5cda220028d5c0
Author: Colin Leroy <colin at colino.net>
Date:   Wed Nov 16 21:28:27 2011 +0100

    * Make summary work

 panel-plugin/weather-config.c    |    6 ++-
 panel-plugin/weather-data.c      |   33 +++++++---
 panel-plugin/weather-data.h      |    6 ++-
 panel-plugin/weather-parsers.c   |   73 +++++++++++++----------
 panel-plugin/weather-parsers.h   |    8 +-
 panel-plugin/weather-summary.c   |  124 ++++++++------------------------------
 panel-plugin/weather-translate.c |    5 +-
 panel-plugin/weather-translate.h |    2 +-
 panel-plugin/weather.c           |   12 +++-
 9 files changed, 118 insertions(+), 151 deletions(-)

diff --git a/panel-plugin/weather-config.c b/panel-plugin/weather-config.c
index 6027b26..59ed6ba 100644
--- a/panel-plugin/weather-config.c
+++ b/panel-plugin/weather-config.c
@@ -37,9 +37,13 @@ static const labeloption labeloptions[OPTIONS_N] = {
   {N_("Temperature (T)"), TEMPERATURE},
   {N_("Atmosphere pressure (P)"), PRESSURE},
   {N_("Wind speed (WS)"), WIND_SPEED},
+  {N_("Wind speed - Beaufort scale (WB)"), WIND_BEAUFORT},
   {N_("Wind direction (WD)"), WIND_DIRECTION},
+  {N_("Wind direction in degrees (WD)"), WIND_DIRECTION_DEG},
   {N_("Humidity (H)"), HUMIDITY},
-  {N_("Cloudiness (C)"), CLOUDINESS},
+  {N_("Low cloudiness (CL)"), CLOUDINESS_LOW},
+  {N_("Medium cloudiness (CM)"), CLOUDINESS_MED},
+  {N_("High cloudiness (CH)"), CLOUDINESS_HIGH},
   {N_("Fog (F)"), FOG},
   {N_("Precipitations (R)"), PRECIPITATIONS},
 };
diff --git a/panel-plugin/weather-data.c b/panel-plugin/weather-data.c
index 64d0768..5c17a8d 100644
--- a/panel-plugin/weather-data.c
+++ b/panel-plugin/weather-data.c
@@ -27,6 +27,11 @@
 
 #define CHK_NULL(s) ((s) ? (s):"")
 
+static gboolean need_interval(datas type)
+{
+	return type == PRECIPITATIONS || type == SYMBOL;
+}
+
 const gchar *
 get_data (xml_weather *data, datas type)
 {
@@ -36,7 +41,7 @@ get_data (xml_weather *data, datas type)
 	if (data == NULL)
 		return "";
 
-	timeslice = get_current_timeslice(data);
+	timeslice = get_current_timeslice(data, need_interval(type));
 	if (timeslice == NULL)
 		return "";
 
@@ -49,12 +54,20 @@ get_data (xml_weather *data, datas type)
 		return CHK_NULL(loc->pressure_value);
 	case WIND_SPEED:
 		return CHK_NULL( loc->wind_speed_mps);
+	case WIND_BEAUFORT:
+		return CHK_NULL( loc->wind_speed_beaufort);
 	case WIND_DIRECTION:
 		return CHK_NULL(loc->wind_dir_name);
+	case WIND_DIRECTION_DEG:
+		return CHK_NULL(loc->wind_dir_deg);
 	case HUMIDITY:
 		return CHK_NULL(loc->humidity_value);
-	case CLOUDINESS:
-		return CHK_NULL(loc->cloudiness_percent[CLOUDINESS_LOW]);
+	case CLOUDINESS_LOW:
+		return CHK_NULL(loc->cloudiness_percent[CLOUD_LOW]);
+	case CLOUDINESS_MED:
+		return CHK_NULL(loc->cloudiness_percent[CLOUD_MED]);
+	case CLOUDINESS_HIGH:
+		return CHK_NULL(loc->cloudiness_percent[CLOUD_HIGH]);
 	case FOG:
 		return CHK_NULL(loc->fog_percent);
 	case PRECIPITATIONS:
@@ -74,7 +87,7 @@ get_unit (xml_weather *data, units unit, datas type)
 	if (data == NULL)
 		return "";
 
-	timeslice = get_current_timeslice(data);
+	timeslice = get_current_timeslice(data, need_interval(type));
 	if (timeslice == NULL)
 		return "";
 
@@ -87,17 +100,19 @@ get_unit (xml_weather *data, units unit, datas type)
 		return CHK_NULL(loc->pressure_unit);
 	case WIND_SPEED:
 		return "m/s";
-	case WIND_DIRECTION:
-		return "";
+	case WIND_DIRECTION_DEG:
+		return "°";
 	case HUMIDITY:
-		return "%";
-	case CLOUDINESS:
-		return "%";
+	case CLOUDINESS_LOW:
+	case CLOUDINESS_MED:
+	case CLOUDINESS_HIGH:
 	case FOG:
 		return "%";
 	case PRECIPITATIONS:
 		return "mm";
 	case SYMBOL:
+	case WIND_BEAUFORT:
+	case WIND_DIRECTION:
 		return "";
 	}
 	return "";
diff --git a/panel-plugin/weather-data.h b/panel-plugin/weather-data.h
index 1d0b79a..5e80763 100644
--- a/panel-plugin/weather-data.h
+++ b/panel-plugin/weather-data.h
@@ -24,9 +24,13 @@ typedef enum {
 	TEMPERATURE,
 	PRESSURE,
 	WIND_SPEED,
+	WIND_BEAUFORT,
 	WIND_DIRECTION,
+	WIND_DIRECTION_DEG,
 	HUMIDITY,
-	CLOUDINESS,
+	CLOUDINESS_LOW,
+	CLOUDINESS_MED,
+	CLOUDINESS_HIGH,
 	FOG,
 	PRECIPITATIONS,
 	SYMBOL
diff --git a/panel-plugin/weather-parsers.c b/panel-plugin/weather-parsers.c
index d7e90ec..18ef180 100644
--- a/panel-plugin/weather-parsers.c
+++ b/panel-plugin/weather-parsers.c
@@ -92,6 +92,8 @@ void parse_time (xmlNode * cur_node, xml_weather * data) {
 	struct tm start_t, end_t;
 	time_t start_ts, end_ts;
 	time_t cur_ts;
+	xml_time *timeslice;
+	xmlNode *child_node;
 
 	if (xmlStrcasecmp(datatype, "forecast")) {
 		xmlFree(datatype);
@@ -120,31 +122,19 @@ void parse_time (xmlNode * cur_node, xml_weather * data) {
 	start_ts = my_timegm(&start_t);
 	end_ts = my_timegm(&end_t);
 	
-	/* time elements with end == start are the ones with temperatures etc.
-	 * They seem to be for each three hours (6 after 4 days).
-	 */
-	if (end_ts == start_ts && start_ts > time(NULL) + 4 * 24 * 3600)
-		start_ts -= 6 * 3600;
-	else if (end_ts == start_ts)
-		start_ts -= 3 * 3600;
-
-	/* split per-hour */
-	for (cur_ts = start_ts; cur_ts < end_ts; cur_ts += 3600) {
-		xml_time *timeslice = get_timeslice(data, cur_ts, cur_ts + 3600);
-		xmlNode *child_node;
-
-		if (!timeslice) {
-			g_warning("no timeslice");
-			return;
-		}
-		for (child_node = cur_node->children; child_node;
-		     child_node = child_node->next) {
-			if (NODE_IS_TYPE (child_node, "location")) {
-				if (timeslice->location == NULL)
-					timeslice->location =
-						g_slice_new0(xml_location);
-				parse_location(child_node, timeslice->location);
-			}
+	timeslice = get_timeslice(data, start_ts, end_ts);
+	
+	if (!timeslice) {
+		g_warning("no timeslice");
+		return;
+	}
+	for (child_node = cur_node->children; child_node;
+	     child_node = child_node->next) {
+		if (NODE_IS_TYPE (child_node, "location")) {
+			if (timeslice->location == NULL)
+				timeslice->location =
+					g_slice_new0(xml_location);
+			parse_location(child_node, timeslice->location);
 		}
 	}
 }
@@ -168,16 +158,35 @@ xml_time *get_timeslice(xml_weather *data, time_t start, time_t end)
 	return data->timeslice[data->num_timeslices - 1];
 }
 
-xml_time *get_current_timeslice(xml_weather *data)
+xml_time *get_current_timeslice(xml_weather *data, gboolean interval)
 {
 	time_t now = time(NULL);
+	int closest = -1;
+	int min_found = 7 * 24 * 3600;
 	int i;
 
 	for (i = 0; i < data->num_timeslices; i++) {
+		if (interval != 
+		    (data->timeslice[i]->start != data->timeslice[i]->end))
+			continue;
 		if (data->timeslice[i]->start <= now
 		 && data->timeslice[i]->end >= now)
 			return data->timeslice[i];
+		/* we also search for the closest before */
+		if (data->timeslice[i]->end < now
+		 && data->timeslice[i]->end - now < min_found) {
+			min_found = data->timeslice[i]->end - now;
+			closest = i;
+		}
+		/* and after */
+		if (data->timeslice[i]->start > now
+		 && data->timeslice[i]->start - now < min_found) {
+			min_found = data->timeslice[i]->start - now;
+			closest = i;
+		}
 	}
+	if (closest != -1)
+		return data->timeslice[closest];
 
 	return NULL;	
 }
@@ -223,16 +232,16 @@ void parse_location (xmlNode * cur_node, xml_location *loc)
 			loc->fog_percent = PROP(child_node, "percent");
 		}
 		if (NODE_IS_TYPE (child_node, "lowClouds")) {
-			g_free(loc->cloudiness_percent[CLOUDINESS_LOW]);
-			loc->cloudiness_percent[CLOUDINESS_LOW] = PROP(child_node, "percent");
+			g_free(loc->cloudiness_percent[CLOUD_LOW]);
+			loc->cloudiness_percent[CLOUD_LOW] = PROP(child_node, "percent");
 		}
 		if (NODE_IS_TYPE (child_node, "mediumClouds")) {
-			g_free(loc->cloudiness_percent[CLOUDINESS_MED]);
-			loc->cloudiness_percent[CLOUDINESS_MED] = PROP(child_node, "percent");
+			g_free(loc->cloudiness_percent[CLOUD_MED]);
+			loc->cloudiness_percent[CLOUD_MED] = PROP(child_node, "percent");
 		}
 		if (NODE_IS_TYPE (child_node, "highClouds")) {
-			g_free(loc->cloudiness_percent[CLOUDINESS_HIGH]);
-			loc->cloudiness_percent[CLOUDINESS_HIGH] = PROP(child_node, "percent");
+			g_free(loc->cloudiness_percent[CLOUD_HIGH]);
+			loc->cloudiness_percent[CLOUD_HIGH] = PROP(child_node, "percent");
 		}
 		if (NODE_IS_TYPE (child_node, "precipitation")) {
 			g_free(loc->precipitation_unit);
diff --git a/panel-plugin/weather-parsers.h b/panel-plugin/weather-parsers.h
index 3b56da0..ccfd5cf 100644
--- a/panel-plugin/weather-parsers.h
+++ b/panel-plugin/weather-parsers.h
@@ -30,9 +30,9 @@ G_BEGIN_DECLS
 
 enum
 {
-	CLOUDINESS_LOW = 0,
-	CLOUDINESS_MED,
-	CLOUDINESS_HIGH,
+	CLOUD_LOW = 0,
+	CLOUD_MED,
+	CLOUD_HIGH,
 	NUM_CLOUDINESS
 };
 
@@ -85,7 +85,7 @@ void parse_time (xmlNode * cur_node, xml_weather * data);
 void parse_location (xmlNode * cur_node, xml_location *location);
 
 xml_time *get_timeslice(xml_weather *data, time_t start, time_t end);
-xml_time *get_current_timeslice(xml_weather *data);
+xml_time *get_current_timeslice(xml_weather *data, gboolean interval);
 
 void xml_weather_free (xml_weather * data);
 
diff --git a/panel-plugin/weather-summary.c b/panel-plugin/weather-summary.c
index 1703525..bcfe690 100644
--- a/panel-plugin/weather-summary.c
+++ b/panel-plugin/weather-summary.c
@@ -44,7 +44,7 @@ static gboolean lnk_clicked (GtkTextTag *tag, GObject *obj,
 #define APPEND_TEXT_ITEM(text, item)     value = g_strdup_printf("\t%s%s%s %s\n",\
                                                                  text, text?": ":"", \
                                                                  get_data(data->weatherdata, item),\
-                                                                 get_unit(data->unit, item));\
+                                                                 get_unit(data->weatherdata, data->unit, item));\
                                          APPEND_TEXT_ITEM_REAL(value);
 #define APPEND_LINK_ITEM(prefix, text, url, lnk_tag) \
 					 gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer), \
@@ -230,12 +230,14 @@ create_summary_tab (xfceweather_data *data)
 {
   GtkTextBuffer *buffer;
   GtkTextIter    iter;
-  GtkTextTag    *btag, *ltag0, *ltag1, *ltag2, *ltag3, *ltag4;
-  gchar         *value, *date, *wind, *sun_val, *vis;
+  GtkTextTag    *btag, *ltag1;
+  gchar         *value, *wind, *sun_val, *vis;
   GtkWidget     *view, *frame, *scrolled;
   GdkColor       lnk_color;
   GtkAdjustment *adj;
   GtkWidget     *weather_channel_icon;
+  gchar         *start;
+  xml_time      *timeslice;
 
   view = gtk_text_view_new ();
   gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
@@ -258,132 +260,58 @@ create_summary_tab (xfceweather_data *data)
                                 NULL);
 
   gdk_color_parse("#0000ff", &lnk_color);
-  ltag0 = gtk_text_buffer_create_tag(buffer, "lnk0", "foreground-gdk", &lnk_color, NULL);
   ltag1 = gtk_text_buffer_create_tag(buffer, "lnk1", "foreground-gdk", &lnk_color, NULL);
-  ltag2 = gtk_text_buffer_create_tag(buffer, "lnk2", "foreground-gdk", &lnk_color, NULL);
-  ltag3 = gtk_text_buffer_create_tag(buffer, "lnk3", "foreground-gdk", &lnk_color, NULL);
-  ltag4 = gtk_text_buffer_create_tag(buffer, "lnk4", "foreground-gdk", &lnk_color, NULL);
 
   /* head */
   value = g_strdup_printf (_("Weather report for: %s.\n\n"), data->location_name);
   APPEND_BTEXT (value);
   g_free (value);
-#if 0
-  date = translate_lsup (get_data (data->weatherdata, LSUP));
-  value = g_strdup_printf (_("Observation station located in %s\nLast update: %s.\n"),
-                           get_data (data->weatherdata, OBST), date ? date : get_data (data->weatherdata, LSUP));
-  g_free (date);
+
+  timeslice = get_current_timeslice(data->weatherdata, FALSE);
+  value = g_strdup_printf (_("Coordinates: lat %s lon %s\nData applies to: %s.\n"),
+                           data->lat, data->lon, ctime(&timeslice->start));
   APPEND_TEXT_ITEM_REAL (value);
 
   /* Temperature */
   APPEND_BTEXT (_("\nTemperature\n"));
-  APPEND_TEXT_ITEM (_("Temperature"), TEMP);
-  APPEND_TEXT_ITEM (_("Windchill"), FLIK);
-
-  /* special case for TRANS because of translate_desc */
-  value = g_strdup_printf ("\t%s: %s\n", _("Description"),
-                           translate_desc (get_data (data->weatherdata, TRANS)));
-  APPEND_TEXT_ITEM_REAL (value);
-  APPEND_TEXT_ITEM (_("Dew point"), DEWP);
+  APPEND_TEXT_ITEM (_("Temperature"), TEMPERATURE);
 
   /* Wind */
   APPEND_BTEXT (_("\nWind\n"));
-  wind = translate_wind_speed (get_data (data->weatherdata, WIND_SPEED), data->unit);
-  value = g_strdup_printf ("\t%s: %s\n", _("Speed"), wind);
+  wind = translate_wind_speed (data->weatherdata, get_data (data->weatherdata, WIND_SPEED), data->unit);
+  value = g_strdup_printf ("\t%s: %s (%s on the Beaufort scale)\n", _("Speed"), wind,
+		get_data (data->weatherdata, WIND_BEAUFORT));
   g_free (wind);
   APPEND_TEXT_ITEM_REAL (value);
 
   wind = translate_wind_direction (get_data (data->weatherdata, WIND_DIRECTION));
-  value = g_strdup_printf ("\t%s: %s\n", _("Direction"),
-                           wind ? wind : get_data (data->weatherdata, WIND_DIRECTION));
+  value = g_strdup_printf ("\t%s: %s (%s%s)\n", _("Direction"),
+                           wind ? wind : get_data (data->weatherdata, WIND_DIRECTION),
+			   get_data (data->weatherdata, WIND_DIRECTION_DEG),
+			   get_unit (data->weatherdata, data->unit, WIND_DIRECTION_DEG));
   g_free (wind);
   APPEND_TEXT_ITEM_REAL (value);
 
-  wind = translate_wind_speed (get_data (data->weatherdata, WIND_GUST), data->unit);
-  value = g_strdup_printf ("\t%s: %s\n", _("Gusts"), wind);
-  g_free (wind);
-  APPEND_TEXT_ITEM_REAL (value);
-
-  /* UV */
-  APPEND_BTEXT (_("\nUV\n"));
-  APPEND_TEXT_ITEM (_("Index"), UV_INDEX);
-  value = g_strdup_printf ("\t%s: %s\n", _("Risk"),
-                           translate_risk (get_data (data->weatherdata, UV_TRANS)));
-  APPEND_TEXT_ITEM_REAL (value);
-
   /* Atmospheric pressure */
   APPEND_BTEXT (_("\nAtmospheric pressure\n"));
-  APPEND_TEXT_ITEM (_("Pressure"), BAR_R);
-
-  value = g_strdup_printf ("\t%s: %s\n",  _("State"),
-                           translate_bard (get_data (data->weatherdata, BAR_D)));
-  APPEND_TEXT_ITEM_REAL (value);
-
-  /* Sun */
-  APPEND_BTEXT (_("\nSun\n"));
-  sun_val = translate_time (get_data (data->weatherdata, SUNR));
-  value = g_strdup_printf ("\t%s: %s\n",
-                           _("Rise"), sun_val ? sun_val : get_data (data->weatherdata, SUNR));
-  g_free (sun_val);
-  APPEND_TEXT_ITEM_REAL (value);
-
-  sun_val = translate_time (get_data (data->weatherdata, SUNS));
-  value = g_strdup_printf ("\t%s: %s\n",
-                           _("Set"), sun_val ? sun_val : get_data (data->weatherdata, SUNS));
-  g_free (sun_val);
-  APPEND_TEXT_ITEM_REAL (value);
+  APPEND_TEXT_ITEM (_("Pressure"), PRESSURE);
 
   /* Other */
   APPEND_BTEXT (_("\nOther\n"));
-  APPEND_TEXT_ITEM (_("Humidity"), HMID);
-  vis = translate_visibility (get_data (data->weatherdata, VIS), data->unit);
-  value = g_strdup_printf ("\t%s: %s\n", _("Visibility"), vis);
-  g_free (vis);
-  APPEND_TEXT_ITEM_REAL (value);
+  APPEND_TEXT_ITEM (_("Humidity"), HUMIDITY);
+  APPEND_TEXT_ITEM (_("Low clouds"), CLOUDINESS_LOW);
+  APPEND_TEXT_ITEM (_("Medium clouds"), CLOUDINESS_MED);
+  APPEND_TEXT_ITEM (_("High clouds"), CLOUDINESS_HIGH);
+  APPEND_TEXT_ITEM (_("Fog"), FOG);
 
-  APPEND_BTEXT (_("\nMore on weather.com\n"));
-  value = g_strdup_printf("http://www.weather.com/?par=xoap&site=wx_logo&cm_ven=bd_oap&cm_cat=%s&cm_pla=HomePage&cm_ite=Logo",
-  		PARTNER_ID);
-  g_object_set_data_full(G_OBJECT(ltag0), "url", value, g_free);
+  APPEND_BTEXT (_("\nData from The Norwegian Meteorological Institute\n"));
+  APPEND_LINK_ITEM ("\t", "Thanks to met.no", "http://met.no/", ltag1);
 
-  APPEND_LINK_ITEM ("\t", get_data (data->weatherdata, LNK1_TXT), get_data (data->weatherdata, LNK1), ltag1);
-  APPEND_LINK_ITEM ("\t", get_data (data->weatherdata, LNK2_TXT), get_data (data->weatherdata, LNK2), ltag2);
-  APPEND_LINK_ITEM ("\t", get_data (data->weatherdata, LNK3_TXT), get_data (data->weatherdata, LNK3), ltag3);
-  APPEND_LINK_ITEM ("\t", get_data (data->weatherdata, LNK4_TXT), get_data (data->weatherdata, LNK4), ltag4);
-#endif
   g_signal_connect(G_OBJECT(view), "motion-notify-event",
 		   G_CALLBACK(view_motion_notify), view);
   g_signal_connect(G_OBJECT(view), "leave-notify-event",
 		   G_CALLBACK(view_leave_notify), view);
-#if 0
-  weather_channel_icon = weather_summary_get_logo(data);
-
-  if (weather_channel_icon) {
-    weather_channel_evt = gtk_event_box_new();
-    gtk_container_add(GTK_CONTAINER(weather_channel_evt), weather_channel_icon);
-    gtk_text_view_add_child_in_window(GTK_TEXT_VIEW(view), weather_channel_evt,
-                                      GTK_TEXT_WINDOW_TEXT, 0, 0);
-    gtk_widget_show_all(weather_channel_evt);
-    adj = gtk_scrolled_window_get_vadjustment(
-	    GTK_SCROLLED_WINDOW(scrolled));
-    g_signal_connect(G_OBJECT(adj), "value-changed",
-		     G_CALLBACK(view_scrolled_cb), view);
-    g_signal_connect(G_OBJECT(view), "size_allocate",
-		     G_CALLBACK(view_size_allocate_cb),
-		     view);
-    g_signal_connect(G_OBJECT(weather_channel_evt), "button-release-event",
-		     G_CALLBACK(icon_clicked),
-		     ltag0);
-    g_signal_connect(G_OBJECT(weather_channel_evt), "enter-notify-event",
-		     G_CALLBACK(icon_motion_notify), view);
-    g_signal_connect(G_OBJECT(weather_channel_evt), "visibility-notify-event",
-		     G_CALLBACK(icon_motion_notify), view);
-    g_signal_connect(G_OBJECT(weather_channel_evt), "motion-notify-event",
-		     G_CALLBACK(icon_motion_notify), view);
-    g_signal_connect(G_OBJECT(weather_channel_evt), "leave-notify-event",
-		     G_CALLBACK(view_leave_notify), view);
-  }
-#endif
+
   if (hand_cursor == NULL)
     hand_cursor = gdk_cursor_new(GDK_HAND2);
   if (text_cursor == NULL)
diff --git a/panel-plugin/weather-translate.c b/panel-plugin/weather-translate.c
index 7afb3e2..4649c46 100644
--- a/panel-plugin/weather-translate.c
+++ b/panel-plugin/weather-translate.c
@@ -438,7 +438,8 @@ translate_wind_direction (const gchar *wdir)
 
 /* calm or a number */
 gchar *
-translate_wind_speed (const gchar *wspeed,
+translate_wind_speed (xml_weather *data,
+                      const gchar *wspeed,
                       units        unit)
 {
   gchar *wspeed_loc;
@@ -449,7 +450,7 @@ translate_wind_speed (const gchar *wspeed,
     wspeed_loc = g_strdup (_("N/A"));
   else
     wspeed_loc =
-      g_strdup_printf ("%s %s", wspeed, get_unit (/* FIXME */NULL, unit, WIND_SPEED));
+      g_strdup_printf ("%s %s", wspeed, get_unit (data, unit, WIND_SPEED));
 
   return wspeed_loc;
 }
diff --git a/panel-plugin/weather-translate.h b/panel-plugin/weather-translate.h
index e9e170f..7ef4674 100644
--- a/panel-plugin/weather-translate.h
+++ b/panel-plugin/weather-translate.h
@@ -36,7 +36,7 @@ gchar *translate_day (const gchar *);
 
 gchar *translate_wind_direction (const gchar *);
 
-gchar *translate_wind_speed (const gchar *, units);
+gchar *translate_wind_speed (xml_weather *data, const gchar *, units);
 
 gchar *translate_time (const gchar *);
 
diff --git a/panel-plugin/weather.c b/panel-plugin/weather.c
index 2e12f45..497bf7b 100644
--- a/panel-plugin/weather.c
+++ b/panel-plugin/weather.c
@@ -121,8 +121,14 @@ make_label (xml_weather    *weatherdata,
     case HUMIDITY:
       lbl = _("H");
       break;
-    case CLOUDINESS:
-      lbl = _("C");
+    case CLOUDINESS_LOW:
+      lbl = _("CL");
+      break;
+    case CLOUDINESS_MED:
+      lbl = _("CM");
+      break;
+    case CLOUDINESS_HIGH:
+      lbl = _("CH");
       break;
     case FOG:
       lbl = _("F");
@@ -155,7 +161,7 @@ make_label (xml_weather    *weatherdata,
       value = translate_wind_direction (rawvalue);
       break;
     case WIND_SPEED:
-      value = translate_wind_speed (rawvalue, unit);
+      value = translate_wind_speed (weatherdata, rawvalue, unit);
       break;
     default:
       value = NULL;


More information about the Xfce4-commits mailing list