diff options
author | Chenthill Palanisamy <pchen@src.gnome.org> | 2006-07-10 18:42:58 +0800 |
---|---|---|
committer | Chenthill Palanisamy <pchen@src.gnome.org> | 2006-07-10 18:42:58 +0800 |
commit | 79e662f99e144d6ad8d14d720315f131325ee2ae (patch) | |
tree | 29ad10dff71d302fe8709a8f1e1f373eacd4512d /calendar/gui/dialogs/cal-prefs-dialog.c | |
parent | 24b40b9a896d39e08abf8fdb6f89bf0534c559ea (diff) | |
download | gsoc2013-evolution-79e662f99e144d6ad8d14d720315f131325ee2ae.tar.gz gsoc2013-evolution-79e662f99e144d6ad8d14d720315f131325ee2ae.tar.zst gsoc2013-evolution-79e662f99e144d6ad8d14d720315f131325ee2ae.zip |
Fixes #332911
svn path=/trunk/; revision=32268
Diffstat (limited to 'calendar/gui/dialogs/cal-prefs-dialog.c')
-rw-r--r-- | calendar/gui/dialogs/cal-prefs-dialog.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c index c88f14c85d..6e1aa165d3 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.c +++ b/calendar/gui/dialogs/cal-prefs-dialog.c @@ -130,12 +130,28 @@ static void timezone_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { icaltimezone *zone; + icalcomponent *icalcomp, *dl_comp; zone = e_timezone_entry_get_timezone (E_TIMEZONE_ENTRY (prefs->timezone)); + icalcomp = icaltimezone_get_component (zone); + + if (!(dl_comp = icalcomponent_get_first_component (icalcomp, ICAL_XDAYLIGHT_COMPONENT))) + gtk_widget_set_sensitive ((GtkWidget *) prefs->daylight_saving, FALSE); + else + gtk_widget_set_sensitive ((GtkWidget *) prefs->daylight_saving, TRUE); + calendar_config_set_timezone (icaltimezone_get_location (zone)); } static void +daylight_saving_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) +{ + gboolean set = gtk_toggle_button_get_active ((GtkToggleButton *) prefs->daylight_saving); + calendar_config_set_daylight_saving (set); + timezone_changed (widget, prefs); +} + +static void start_of_day_changed (GtkWidget *widget, CalendarPrefsDialog *prefs) { int start_hour, start_minute, end_hour, end_minute; @@ -351,6 +367,7 @@ setup_changes (CalendarPrefsDialog *prefs) g_signal_connect (G_OBJECT (prefs->working_days[i]), "toggled", G_CALLBACK (working_days_changed), prefs); g_signal_connect (G_OBJECT (prefs->timezone), "changed", G_CALLBACK (timezone_changed), prefs); + g_signal_connect (G_OBJECT (prefs->daylight_saving), "toggled", G_CALLBACK (daylight_saving_changed), prefs); g_signal_connect (G_OBJECT (prefs->start_of_day), "changed", G_CALLBACK (start_of_day_changed), prefs); g_signal_connect (G_OBJECT (prefs->end_of_day), "changed", G_CALLBACK (end_of_day_changed), prefs); @@ -479,12 +496,25 @@ show_config (CalendarPrefsDialog *prefs) CalWeekdays working_days; gint mask, day, week_start_day, time_divisions; icaltimezone *zone; - gboolean sensitive; + gboolean sensitive, set = FALSE; + icalcomponent *icalcomp, *dl_comp; + char *location; /* Timezone. */ - zone = calendar_config_get_icaltimezone (); + location = calendar_config_get_timezone (); + zone = icaltimezone_get_builtin_timezone (location); e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (prefs->timezone), zone); + g_free (location); + icalcomp = icaltimezone_get_component (zone); + if (!(dl_comp = icalcomponent_get_first_component (icalcomp, ICAL_XDAYLIGHT_COMPONENT))) + gtk_widget_set_sensitive ((GtkWidget *) prefs->daylight_saving, FALSE); + else + gtk_widget_set_sensitive ((GtkWidget *) prefs->daylight_saving, TRUE); + + set = calendar_config_get_daylight_saving (); + gtk_toggle_button_set_active ((GtkToggleButton *) prefs->daylight_saving, set); + /* Working Days. */ working_days = calendar_config_get_working_days (); mask = 1 << 0; @@ -609,6 +639,7 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs) /* General tab */ prefs->timezone = glade_xml_get_widget (gui, "timezone"); + prefs->daylight_saving = glade_xml_get_widget (gui, "daylight_cb"); for (i = 0; i < 7; i++) prefs->working_days[i] = glade_xml_get_widget (gui, working_day_names[i]); prefs->week_start_day = glade_xml_get_widget (gui, "week_start_day"); |