aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/calendar-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/calendar-config.c')
-rw-r--r--calendar/gui/calendar-config.c271
1 files changed, 200 insertions, 71 deletions
diff --git a/calendar/gui/calendar-config.c b/calendar/gui/calendar-config.c
index 591bd4343f..699644767a 100644
--- a/calendar/gui/calendar-config.c
+++ b/calendar/gui/calendar-config.c
@@ -70,6 +70,9 @@ typedef struct
CalUnits hide_completed_tasks_units;
gint hide_completed_tasks_value;
gboolean confirm_delete;
+ gboolean use_default_reminder;
+ int default_reminder_interval;
+ CalUnits default_reminder_units;
} CalendarConfig;
@@ -99,7 +102,7 @@ calendar_config_init (void)
case the user can choose between 12 and 24-hour time formats. */
gboolean
calendar_config_locale_supports_12_hour_format (void)
-{
+{
char s[16];
time_t t = 0;
@@ -115,9 +118,9 @@ config_read (void)
char *units;
CORBA_exception_init (&ev);
-
+
db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
-
+
if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
CORBA_exception_free (&ev);
return;
@@ -130,17 +133,17 @@ config_read (void)
config->default_tasks_uri = bonobo_config_get_string (db,
"/Calendar/DefaultTasksUri", NULL);
-
- config->timezone = bonobo_config_get_string (db,
+
+ config->timezone = bonobo_config_get_string (db,
"/Calendar/Display/Timezone", NULL);
- config->working_days = bonobo_config_get_long_with_default (db,
+ config->working_days = bonobo_config_get_long_with_default (db,
"/Calendar/Display/WorkingDays", CAL_MONDAY | CAL_TUESDAY |
CAL_WEDNESDAY | CAL_THURSDAY | CAL_FRIDAY, NULL);
-
- config->week_start_day = bonobo_config_get_long_with_default (db,
+
+ config->week_start_day = bonobo_config_get_long_with_default (db,
"/Calendar/Display/WeekStartDay", 1, NULL);
-
+
/* If the locale defines 'am' and 'pm' strings then the user has the
choice of 12-hour or 24-hour time format, with 12-hour as the
default. If the locale doesn't have 'am' and 'pm' strings we have
@@ -151,43 +154,43 @@ config_read (void)
config->use_24_hour_format = TRUE;
}
- config->week_start_day = bonobo_config_get_long_with_default (db,
+ config->week_start_day = bonobo_config_get_long_with_default (db,
"/Calendar/Display/WeekStartDay", 1, NULL);
-
- config->day_start_hour = bonobo_config_get_long_with_default (db,
+
+ config->day_start_hour = bonobo_config_get_long_with_default (db,
"/Calendar/Display/DayStartHour", 9, NULL);
-
- config->day_start_minute = bonobo_config_get_long_with_default (db,
+
+ config->day_start_minute = bonobo_config_get_long_with_default (db,
"/Calendar/Display/DayStartMinute", 0, NULL);
-
- config->day_end_hour = bonobo_config_get_long_with_default (db,
+
+ config->day_end_hour = bonobo_config_get_long_with_default (db,
"/Calendar/Display/DayEndHour", 17, NULL);
- config->day_end_minute = bonobo_config_get_long_with_default (db,
+ config->day_end_minute = bonobo_config_get_long_with_default (db,
"/Calendar/Display/DayEndMinute", 0, NULL);
- config->time_divisions = bonobo_config_get_long_with_default (db,
+ config->time_divisions = bonobo_config_get_long_with_default (db,
"/Calendar/Display/TimeDivisions", 30, NULL);
- config->view = bonobo_config_get_long_with_default (db,
+ config->view = bonobo_config_get_long_with_default (db,
"/Calendar/Display/View", 0, NULL);
- config->hpane_pos = bonobo_config_get_float_with_default (db,
+ config->hpane_pos = bonobo_config_get_float_with_default (db,
"/Calendar/Display/HPanePosition", 1.0, NULL);
- config->vpane_pos = bonobo_config_get_float_with_default (db,
+ config->vpane_pos = bonobo_config_get_float_with_default (db,
"/Calendar/Display/VPanePosition", 1.0, NULL);
- config->month_hpane_pos = bonobo_config_get_float_with_default (db,
+ config->month_hpane_pos = bonobo_config_get_float_with_default (db,
"/Calendar/Display/MonthHPanePosition", 0.0, NULL);
- config->month_vpane_pos = bonobo_config_get_float_with_default (db,
+ config->month_vpane_pos = bonobo_config_get_float_with_default (db,
"/Calendar/Display/MonthVPanePosition", 1.0, NULL);
config->compress_weekend = bonobo_config_get_boolean_with_default (db,
"/Calendar/Display/CompressWeekend", TRUE, NULL);
- config->show_event_end = bonobo_config_get_boolean_with_default (db,
+ config->show_event_end = bonobo_config_get_boolean_with_default (db,
"/Calendar/Display/ShowEventEndTime", TRUE, NULL);
/* 'DateNavigator' settings. */
@@ -216,27 +219,69 @@ config_read (void)
else
config->hide_completed_tasks_units = CAL_DAYS;
+ g_free (units);
+
config->hide_completed_tasks_value = bonobo_config_get_long_with_default (
db, "/Calendar/Tasks/HideCompletedTasksValue", 1, NULL);
+ /* Confirmation */
config->confirm_delete = bonobo_config_get_boolean_with_default (
db, "/Calendar/Other/ConfirmDelete", TRUE, NULL);
+ /* Default reminders */
+ config->use_default_reminder = bonobo_config_get_boolean_with_default (
+ db, "/Calendar/Other/UseDefaultReminder", FALSE, NULL);
+
+ config->default_reminder_interval = bonobo_config_get_long_with_default (
+ db, "/Calendar/Other/DefaultReminderInterval", 15, NULL);
+
+ units = bonobo_config_get_string_with_default (db,
+ "/Calendar/Other/DefaultReminderUnits", "minutes", NULL);
+
+ if (!strcmp (units, "days"))
+ config->default_reminder_units = CAL_DAYS;
+ else if (!strcmp (units, "hours"))
+ config->default_reminder_units = CAL_HOURS;
+ else
+ config->default_reminder_units = CAL_MINUTES; /* changed from above because
+ * if bonobo-config fucks up
+ * we want minutes, not days!
+ */
+ g_free (units);
+
bonobo_object_release_unref (db, NULL);
}
+/* Returns the string representation of a units value */
+static const char *
+units_to_string (CalUnits units)
+{
+ switch (units) {
+ case CAL_DAYS:
+ return "days";
+
+ case CAL_HOURS:
+ return "hours";
+
+ case CAL_MINUTES:
+ return "minutes";
+
+ default:
+ g_assert_not_reached ();
+ return NULL;
+ }
+}
void
calendar_config_write (void)
{
Bonobo_ConfigDatabase db;
CORBA_Environment ev;
- char *units;
CORBA_exception_init (&ev);
-
+
db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
-
+
if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
CORBA_exception_free (&ev);
return;
@@ -251,58 +296,61 @@ calendar_config_write (void)
config->default_tasks_uri, NULL);
if (config->timezone)
- bonobo_config_set_string (db, "/Calendar/Display/Timezone",
+ bonobo_config_set_string (db, "/Calendar/Display/Timezone",
config->timezone, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/WorkingDays",
+ bonobo_config_set_long (db, "/Calendar/Display/WorkingDays",
config->working_days, NULL);
- bonobo_config_set_boolean (db, "/Calendar/Display/Use24HourFormat",
+ bonobo_config_set_boolean (db, "/Calendar/Display/Use24HourFormat",
config->use_24_hour_format, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/WeekStartDay",
+ bonobo_config_set_long (db, "/Calendar/Display/WeekStartDay",
config->week_start_day, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/DayStartHour",
+ bonobo_config_set_long (db, "/Calendar/Display/DayStartHour",
config->day_start_hour, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/DayStartMinute",
+ bonobo_config_set_long (db, "/Calendar/Display/DayStartMinute",
config->day_start_minute, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/DayEndHour",
+ bonobo_config_set_long (db, "/Calendar/Display/DayEndHour",
config->day_end_hour, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/DayEndMinute",
+ bonobo_config_set_long (db, "/Calendar/Display/DayEndMinute",
config->day_end_minute, NULL);
- bonobo_config_set_boolean (db, "/Calendar/Display/CompressWeekend",
+ bonobo_config_set_boolean (db, "/Calendar/Display/CompressWeekend",
config->compress_weekend, NULL);
- bonobo_config_set_boolean (db, "/Calendar/Display/ShowEventEndTime",
+ bonobo_config_set_boolean (db, "/Calendar/Display/ShowEventEndTime",
config->show_event_end, NULL);
- bonobo_config_set_boolean (db,
- "/Calendar/DateNavigator/ShowWeekNumbers",
+ bonobo_config_set_boolean (db,
+ "/Calendar/DateNavigator/ShowWeekNumbers",
config->dnav_show_week_no, NULL);
- bonobo_config_set_string (db, "/Calendar/Tasks/Colors/TasksDueToday",
+ bonobo_config_set_string (db, "/Calendar/Tasks/Colors/TasksDueToday",
config->tasks_due_today_color, NULL);
- bonobo_config_set_string (db, "/Calendar/Tasks/Colors/TasksOverdue",
+ bonobo_config_set_string (db, "/Calendar/Tasks/Colors/TasksOverdue",
config->tasks_overdue_color, NULL);
- bonobo_config_set_boolean (db, "/Calendar/Tasks/HideCompletedTasks",
+ bonobo_config_set_boolean (db, "/Calendar/Tasks/HideCompletedTasks",
config->hide_completed_tasks, NULL);
- if (config->hide_completed_tasks_units == CAL_MINUTES)
- units = "minutes";
- else if (config->hide_completed_tasks_units == CAL_HOURS)
- units = "hours";
- else
- units = "days";
bonobo_config_set_string (db,
- "/Calendar/Tasks/HideCompletedTasksUnits",
- units, NULL);
- bonobo_config_set_long (db,
- "/Calendar/Tasks/HideCompletedTasksValue",
+ "/Calendar/Tasks/HideCompletedTasksUnits",
+ units_to_string (config->hide_completed_tasks_units), NULL);
+ bonobo_config_set_long (db,
+ "/Calendar/Tasks/HideCompletedTasksValue",
config->hide_completed_tasks_value, NULL);
bonobo_config_set_boolean (db, "/Calendar/Other/ConfirmDelete", config->confirm_delete, NULL);
+ bonobo_config_set_boolean (db, "/Calendar/Other/UseDefaultReminder",
+ config->use_default_reminder, NULL);
+
+ bonobo_config_set_long (db, "/Calendar/Other/DefaultReminderInterval",
+ config->default_reminder_interval, NULL);
+
+ bonobo_config_set_string (db, "/Calendar/Other/DefaultReminderUnits",
+ units_to_string (config->default_reminder_units), NULL);
+
Bonobo_ConfigDatabase_sync (db, &ev);
-
+
bonobo_object_release_unref (db, NULL);
CORBA_exception_free (&ev);
@@ -317,27 +365,27 @@ calendar_config_write_on_exit (void)
CORBA_exception_init (&ev);
db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
-
+
if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
CORBA_exception_free (&ev);
return;
}
- bonobo_config_set_long (db, "/Calendar/Display/View",
+ bonobo_config_set_long (db, "/Calendar/Display/View",
config->view, NULL);
- bonobo_config_set_long (db, "/Calendar/Display/TimeDivisions",
+ bonobo_config_set_long (db, "/Calendar/Display/TimeDivisions",
config->time_divisions, NULL);
- bonobo_config_set_float (db, "/Calendar/Display/HPanePosition",
+ bonobo_config_set_float (db, "/Calendar/Display/HPanePosition",
config->hpane_pos, NULL);
- bonobo_config_set_float (db, "/Calendar/Display/VPanePosition",
+ bonobo_config_set_float (db, "/Calendar/Display/VPanePosition",
config->vpane_pos, NULL);
- bonobo_config_set_float (db, "/Calendar/Display/MonthHPanePosition",
+ bonobo_config_set_float (db, "/Calendar/Display/MonthHPanePosition",
config->month_hpane_pos, NULL);
- bonobo_config_set_float (db, "/Calendar/Display/MonthVPanePosition",
+ bonobo_config_set_float (db, "/Calendar/Display/MonthVPanePosition",
config->month_vpane_pos, NULL);
Bonobo_ConfigDatabase_sync (db, &ev);
-
+
bonobo_object_release_unref (db, NULL);
CORBA_exception_free (&ev);
@@ -689,10 +737,10 @@ calendar_config_set_hide_completed_tasks_value (gint value)
/**
* calendar_config_get_confirm_delete:
- *
+ *
* Queries the configuration value for whether a confirmation dialog is
* presented when deleting calendar/tasks items.
- *
+ *
* Return value: Whether confirmation is required when deleting items.
**/
gboolean
@@ -704,7 +752,7 @@ calendar_config_get_confirm_delete (void)
/**
* calendar_config_set_confirm_delete:
* @confirm: Whether confirmation is required when deleting items.
- *
+ *
* Sets the configuration value for whether a confirmation dialog is presented
* when deleting calendar/tasks items.
**/
@@ -915,9 +963,9 @@ on_timezone_dialog_delete_event (GnomeDialog *dialog,
/**
* calendar_config_get_tasks_due_today_color:
- *
+ *
* Queries the color to be used to display tasks that are due today.
- *
+ *
* Return value: An X color specification.
**/
const char *
@@ -930,7 +978,7 @@ calendar_config_get_tasks_due_today_color (void)
/**
* calendar_config_set_tasks_due_today_color:
* @color: X color specification
- *
+ *
* Sets the color to be used to display tasks that are due today.
**/
void
@@ -946,9 +994,9 @@ calendar_config_set_tasks_due_today_color (const char *color)
/**
* calendar_config_get_tasks_overdue_color:
- *
+ *
* Queries the color to be used to display overdue tasks.
- *
+ *
* Return value: An X color specification.
**/
const char *
@@ -961,7 +1009,7 @@ calendar_config_get_tasks_overdue_color (void)
/**
* calendar_config_set_tasks_overdue_color:
* @color: X color specification
- *
+ *
* Sets the color to be used to display overdue tasks.
**/
void
@@ -975,10 +1023,91 @@ calendar_config_set_tasks_overdue_color (const char *color)
config->tasks_overdue_color = g_strdup (color);
}
+/**
+ * calendar_config_get_use_default_reminder:
+ *
+ * Queries whether new appointments should be created with a default reminder.
+ *
+ * Return value: Boolean value indicating whether new appointments should be
+ * created with a default reminder from the values of
+ * calendar_config_get_default_reminder_interval() and
+ * calendar_config_get_default_reminder_units().
+ **/
+gboolean
+calendar_config_get_use_default_reminder (void)
+{
+ return config->use_default_reminder;
+}
+
+/**
+ * calendar_config_set_use_default_reminder:
+ * @value: Whether to create new appointments with a default reminder.
+ *
+ * Sets whether newly-created appointments should get a default reminder set
+ * them.
+ **/
+void
+calendar_config_set_use_default_reminder (gboolean value)
+{
+ config->use_default_reminder = value;
+}
+
+/**
+ * calendar_config_get_default_reminder_interval:
+ *
+ * Queries the interval for the default reminder of newly-created
+ * appointments, i.e. 5 in "5 minutes".
+ *
+ * Return value: Interval for default reminders.
+ **/
+int
+calendar_config_get_default_reminder_interval (void)
+{
+ return config->default_reminder_interval;
+}
+
+/**
+ * calendar_config_set_default_reminder_interval:
+ * @interval: Interval value, e.g. 5 for "5 minutes".
+ *
+ * Sets the interval that should be used for the default reminder in new
+ * appointments.
+ **/
+void
+calendar_config_set_default_reminder_interval (int interval)
+{
+ config->default_reminder_interval = interval;
+}
+
+/**
+ * calendar_config_get_default_reminder_units:
+ *
+ * Queries the units of time in which default reminders should be created for
+ * new appointments, e.g. CAL_MINUTES for "5 minutes".
+ *
+ * Return value: Time units for default reminders.
+ **/
+CalUnits
+calendar_config_get_default_reminder_units (void)
+{
+ return config->default_reminder_units;
+}
+
+/**
+ * calendar_config_set_default_reminder_units:
+ * @units: Time units, e.g. CAL_MINUTES for "5 minutes".
+ *
+ * Sets the units to be used for default reminders in new appointments.
+ **/
+void
+calendar_config_set_default_reminder_units (CalUnits units)
+{
+ config->default_reminder_units = units;
+}
/**
* calendar_config_get_hide_completed_tasks_sexp:
- *
+ *
* Returns the subexpression to use to filter out completed tasks according
* to the config settings. The returned sexp should be freed.
**/