summaryrefslogtreecommitdiff
path: root/mateweather
diff options
context:
space:
mode:
Diffstat (limited to 'mateweather')
-rw-r--r--mateweather/src/mateweather-applet.c84
1 files changed, 40 insertions, 44 deletions
diff --git a/mateweather/src/mateweather-applet.c b/mateweather/src/mateweather-applet.c
index 55ac3900..ca07d686 100644
--- a/mateweather/src/mateweather-applet.c
+++ b/mateweather/src/mateweather-applet.c
@@ -400,51 +400,44 @@ update_finish (WeatherInfo *info, gpointer data)
#ifdef HAVE_LIBNOTIFY
char *message, *detail;
#endif
- char *s;
MateWeatherApplet *gw_applet = (MateWeatherApplet *)data;
- gint nxtSunEvent;
- const gchar *icon_name;
/* Update timer */
if (gw_applet->timeout_tag > 0)
g_source_remove(gw_applet->timeout_tag);
if (gw_applet->mateweather_pref.update_enabled)
{
- gw_applet->timeout_tag =
- g_timeout_add_seconds (
- gw_applet->mateweather_pref.update_interval,
- timeout_cb, gw_applet);
-
- nxtSunEvent = weather_info_next_sun_event(gw_applet->mateweather_info);
- if (nxtSunEvent >= 0)
- gw_applet->suncalc_timeout_tag =
- g_timeout_add_seconds (nxtSunEvent,
- suncalc_timeout_cb, gw_applet);
+ gint nxtSunEvent;
+
+ gw_applet->timeout_tag
+ = g_timeout_add_seconds (gw_applet->mateweather_pref.update_interval,
+ timeout_cb, gw_applet);
+
+ if ((info != NULL) && ((nxtSunEvent = weather_info_next_sun_event (info)) >= 0))
+ {
+ gw_applet->suncalc_timeout_tag
+ = g_timeout_add_seconds (nxtSunEvent,
+ suncalc_timeout_cb, gw_applet);
+ }
}
- if ((TRUE == weather_info_is_valid (info)) ||
- (gw_fault_counter >= MAX_CONSECUTIVE_FAULTS))
+ if ((info != NULL) && weather_info_is_valid (info))
{
- gw_fault_counter = 0;
- icon_name = weather_info_get_icon_name (gw_applet->mateweather_info);
- gtk_image_set_from_icon_name (GTK_IMAGE(gw_applet->image),
- icon_name, GTK_ICON_SIZE_BUTTON);
+ char *s;
- gtk_label_set_text (GTK_LABEL (gw_applet->label),
- weather_info_get_temp_summary(
- gw_applet->mateweather_info));
+ gw_fault_counter = 0;
- s = weather_info_get_weather_summary (gw_applet->mateweather_info);
- gtk_widget_set_tooltip_text (GTK_WIDGET (gw_applet->applet), s);
- g_free (s);
+ /* update tooltip */
+ s = weather_info_get_weather_summary (info);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (gw_applet->applet), s);
+ g_free (s);
- /* Update dialog -- if one is present */
- if (gw_applet->details_dialog) {
- mateweather_dialog_update (MATEWEATHER_DIALOG (gw_applet->details_dialog));
- }
+ /* Update dialog -- if one is present */
+ if (gw_applet->details_dialog)
+ mateweather_dialog_update (MATEWEATHER_DIALOG (gw_applet->details_dialog));
- /* update applet */
- place_widgets(gw_applet);
+ /* update applet */
+ place_widgets (gw_applet);
#ifdef HAVE_LIBNOTIFY
if (gw_applet->mateweather_pref.show_notifications)
@@ -488,13 +481,22 @@ update_finish (WeatherInfo *info, gpointer data)
}
}
#endif
- }
- else
- {
- /* there has been an error during retrival
- * just update the fault counter
- */
- gw_fault_counter++;
+ } else {
+ if (gw_fault_counter >= MAX_CONSECUTIVE_FAULTS) {
+ gw_fault_counter = 0;
+
+ /* Update dialog -- if one is present */
+ if (gw_applet->details_dialog)
+ mateweather_dialog_update (MATEWEATHER_DIALOG (gw_applet->details_dialog));
+
+ /* update applet */
+ place_widgets (gw_applet);
+ } else {
+ /* there has been an error during retrival
+ * just update the fault counter
+ */
+ gw_fault_counter++;
+ }
}
}
@@ -509,13 +511,7 @@ gint suncalc_timeout_cb (gpointer data)
void mateweather_update (MateWeatherApplet *gw_applet)
{
WeatherPrefs prefs;
- const gchar *icon_name = NULL;
-
- if (gw_applet->mateweather_info)
- icon_name = weather_info_get_icon_name (gw_applet->mateweather_info);
- gtk_image_set_from_icon_name (GTK_IMAGE (gw_applet->image),
- icon_name, GTK_ICON_SIZE_BUTTON);
gtk_widget_set_tooltip_text (GTK_WIDGET(gw_applet->applet), _("Updating..."));
/* Set preferred forecast type */