aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/cal-prefs-dialog.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-07-01 12:59:24 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-07-01 12:59:24 +0800
commita0afdf4f53224a55425a8826c0563faa510fa6c5 (patch)
tree0b73a44325df455ee96053f0b6983a1d5f9a7592 /calendar/gui/dialogs/cal-prefs-dialog.c
parent21f1aedda2c1c38589c1f0abb550cabeab8f551f (diff)
downloadgsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar.gz
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar.bz2
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar.lz
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar.xz
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.tar.zst
gsoc2013-evolution-a0afdf4f53224a55425a8826c0563faa510fa6c5.zip
Fixes bug #1406.
2001-06-30 Federico Mena Quintero <federico@ximian.com> Fixes bug #1406. * gui/calendar-config.c (config_read): Handle the options for the task list colors. (calendar_config_write): Ditto. (calendar_config_get_tasks_due_today_color): New function. (calendar_config_set_tasks_due_today_color): New function. (calendar_config_get_tasks_overdue_color): New function. (calendar_config_set_tasks_overdue_color): New function. (calendar_config_configure_e_calendar_table): Use e_table_model_changed() for the colors. * gui/dialogs/cal-prefs-dialog.glade: Updated the options for the task list and alarms. * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_show_config): Update the task list settings. (cal_prefs_dialog_update_config): Ditto. * gui/calendar-model.c (get_color): Deal with tasks for today as well as overdue tasks. Make it cleaner, even though we have to duplicate a chunk of is_overdue(). * gui/calendar-commands.c (preferences_cmd): Renamed from properties_cmd(). svn path=/trunk/; revision=10648
Diffstat (limited to 'calendar/gui/dialogs/cal-prefs-dialog.c')
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
index 3451f6e4a5..de3cbf2483 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ b/calendar/gui/dialogs/cal-prefs-dialog.c
@@ -29,6 +29,7 @@
*/
#include <config.h>
+#include <libgnomeui/gnome-color-picker.h>
#include <glade/glade.h>
#include <gal/util/e-util.h>
#include <e-util/e-dialog-widgets.h>
@@ -57,6 +58,10 @@ struct _CalPrefsDialogPrivate {
GtkWidget *show_end_times;
GtkWidget *compress_weekend;
GtkWidget *dnav_show_week_no;
+
+ /* Widgets for the task list options */
+ GtkWidget *tasks_due_today_color;
+ GtkWidget *tasks_overdue_color;
};
static const int week_start_day_map[] = {
@@ -209,6 +214,9 @@ get_widgets (CalPrefsDialog *prefs)
priv->compress_weekend = GW ("compress_weekend");
priv->dnav_show_week_no = GW ("dnav_show_week_no");
+ priv->tasks_due_today_color = GW ("tasks_due_today_color");
+ priv->tasks_overdue_color = GW ("tasks_overdue_color");
+
#undef GW
return (priv->dialog
@@ -343,6 +351,37 @@ cal_prefs_dialog_use_24_hour_toggled (GtkWidget *button,
use_24_hour);
}
+/* Sets the color in a color picker from an X color spec */
+static void
+set_color_picker (GtkWidget *picker, const char *spec)
+{
+ GdkColor color;
+
+ g_assert (spec != NULL);
+
+ if (!gdk_color_parse (spec, &color)) {
+ color.red = color.green = color.blue = 0;
+ return;
+ }
+
+ gnome_color_picker_set_i16 (GNOME_COLOR_PICKER (picker),
+ color.red,
+ color.green,
+ color.blue,
+ 65535);
+}
+
+/* Shows the current task list settings in the dialog */
+static void
+show_task_list_config (CalPrefsDialog *prefs)
+{
+ CalPrefsDialogPrivate *priv;
+
+ priv = prefs->priv;
+
+ set_color_picker (priv->tasks_due_today_color, calendar_config_get_tasks_due_today_color ());
+ set_color_picker (priv->tasks_overdue_color, calendar_config_get_tasks_overdue_color ());
+}
/* Shows the current config settings in the dialog. */
static void
@@ -403,8 +442,38 @@ cal_prefs_dialog_show_config (CalPrefsDialog *prefs)
/* Date Navigator - Show Week Numbers. */
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->dnav_show_week_no), calendar_config_get_dnav_show_week_no ());
+
+ /* Task list */
+
+ show_task_list_config (prefs);
+}
+
+/* Returns a pointer to a static string with an X color spec for the current
+ * value of a color picker.
+ */
+static const char *
+spec_from_picker (GtkWidget *picker)
+{
+ static char spec[8];
+ guint8 r, g, b;
+
+ gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (picker), &r, &g, &b, NULL);
+ g_snprintf (spec, sizeof (spec), "#%02x%02x%02x", r, g, b);
+
+ return spec;
}
+/* Updates the task list config values from the settings in the dialog */
+static void
+update_task_list_config (CalPrefsDialog *prefs)
+{
+ CalPrefsDialogPrivate *priv;
+
+ priv = prefs->priv;
+
+ calendar_config_set_tasks_due_today_color (spec_from_picker (priv->tasks_due_today_color));
+ calendar_config_set_tasks_overdue_color (spec_from_picker (priv->tasks_overdue_color));
+}
/* Updates the config values based on the settings in the dialog. */
static void
@@ -465,6 +534,9 @@ cal_prefs_dialog_update_config (CalPrefsDialog *prefs)
/* Date Navigator - Show Week Numbers. */
calendar_config_set_dnav_show_week_no (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->dnav_show_week_no)));
+ /* Task list */
+ update_task_list_config (prefs);
+
calendar_config_write ();
update_all_config_settings ();
e_tasks_update_all_config_settings ();