diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/calendar-config.c | 18 | ||||
-rw-r--r-- | calendar/gui/calendar-config.h | 4 | ||||
-rw-r--r-- | calendar/gui/dialogs/cal-prefs-dialog.c | 2 | ||||
-rw-r--r-- | calendar/gui/e-calendar-table.c | 41 | ||||
-rw-r--r-- | calendar/gui/e-calendar-table.h | 7 | ||||
-rw-r--r-- | calendar/gui/gnome-cal.c | 34 |
6 files changed, 94 insertions, 12 deletions
diff --git a/calendar/gui/calendar-config.c b/calendar/gui/calendar-config.c index dc726191be..0245a05f2a 100644 --- a/calendar/gui/calendar-config.c +++ b/calendar/gui/calendar-config.c @@ -43,6 +43,7 @@ typedef struct gint day_end_minute; gint time_divisions; gboolean dnav_show_week_no; + gint view; gfloat hpane_pos; gfloat vpane_pos; gfloat month_hpane_pos; @@ -93,6 +94,7 @@ config_read (void) config->day_end_hour = gnome_config_get_int ("DayEndHour=17"); config->day_end_minute = gnome_config_get_int ("DayEndMinute=0"); config->time_divisions = gnome_config_get_int ("TimeDivisions=30"); + config->view = gnome_config_get_int ("View=0"); config->hpane_pos = gnome_config_get_float ("HPanePosition=1"); config->vpane_pos = gnome_config_get_float ("VPanePosition=1"); config->month_hpane_pos = gnome_config_get_float ("MonthHPanePosition=0"); @@ -168,6 +170,7 @@ calendar_config_write_on_exit (void) gnome_config_push_prefix (prefix); g_free (prefix); + gnome_config_set_int ("View", config->view); gnome_config_set_int ("TimeDivisions", config->time_divisions); gnome_config_set_float ("HPanePosition", config->hpane_pos); gnome_config_set_float ("VPanePosition", config->vpane_pos); @@ -302,6 +305,21 @@ calendar_config_set_dnav_show_week_no (gboolean show_week_no) } +/* The view to show on start-up, 0 = Day, 1 = WorkWeek, 2 = Week, 3 = Month. */ +gint +calendar_config_get_default_view (void) +{ + return config->view; +} + + +void +calendar_config_set_default_view (gint view) +{ + config->view = view; +} + + /* The positions of the panes in the normal and month views. */ gfloat calendar_config_get_hpane_pos (void) diff --git a/calendar/gui/calendar-config.h b/calendar/gui/calendar-config.h index a636e3f185..aa9bdefb80 100644 --- a/calendar/gui/calendar-config.h +++ b/calendar/gui/calendar-config.h @@ -96,6 +96,10 @@ void calendar_config_set_compress_weekend (gboolean compress); gboolean calendar_config_get_dnav_show_week_no (void); void calendar_config_set_dnav_show_week_no (gboolean show_week_no); +/* The view to show on start-up, 0 = Day, 1 = WorkWeek, 2 = Week, 3 = Month. */ +gint calendar_config_get_default_view (void); +void calendar_config_set_default_view (gint view); + /* The positions of the panes in the normal and month views. */ gfloat calendar_config_get_hpane_pos (void); void calendar_config_set_hpane_pos (gfloat hpane_pos); diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c index 9a50db60b6..dd97690727 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.c +++ b/calendar/gui/dialogs/cal-prefs-dialog.c @@ -330,8 +330,6 @@ cal_prefs_dialog_use_24_hour_toggled (GtkWidget *button, priv = prefs->priv; - g_print ("In cal_prefs_dialog_use_24_hour_toggled\n"); - use_24_hour = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_24_hour)); e_date_edit_set_use_24_hour_format (E_DATE_EDIT (priv->start_of_day), diff --git a/calendar/gui/e-calendar-table.c b/calendar/gui/e-calendar-table.c index b771b338e6..7f7b25ada8 100644 --- a/calendar/gui/e-calendar-table.c +++ b/calendar/gui/e-calendar-table.c @@ -28,6 +28,8 @@ */ #include <config.h> +#include <sys/stat.h> +#include <unistd.h> #include <gnome.h> #include <gal/e-table/e-table-scrolled.h> #include <gal/e-table/e-cell-checkbox.h> @@ -220,7 +222,9 @@ e_calendar_table_init (ECalendarTable *cal_table) /* Create the table */ - table = e_table_scrolled_new (model, extras, E_CALENDAR_TABLE_SPEC, NULL); + table = e_table_scrolled_new (model, extras, E_CALENDAR_TABLE_SPEC, + NULL); + cal_table->etable = table; gtk_table_attach (GTK_TABLE (cal_table), table, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (table); @@ -272,8 +276,6 @@ void e_calendar_table_set_cal_client (ECalendarTable *cal_table, CalClient *client) { - g_print ("In e_calendar_table_set_cal_client\n"); - calendar_model_set_cal_client (cal_table->model, client, CALOBJ_TYPE_TODO); } @@ -284,8 +286,6 @@ e_calendar_table_on_double_click (ETable *table, gint row, ECalendarTable *cal_table) { - g_print ("In e_calendar_table_on_double_click row:%i\n", row); - e_calendar_table_open_task (cal_table, row); } @@ -375,11 +375,7 @@ e_calendar_table_on_key_press (ETable *table, GdkEventKey *event, ECalendarTable *cal_table) { - g_print ("In e_calendar_table_on_key_press\n"); - if (event->keyval == GDK_Delete) { - g_print (" delete key!!!\n"); - calendar_model_delete_task (cal_table->model, row); } @@ -402,3 +398,30 @@ e_calendar_table_open_task (ECalendarTable *cal_table, } +/* Loads the state of the table (headers shown etc.) from the given file. */ +void +e_calendar_table_load_state (ECalendarTable *cal_table, + gchar *filename) +{ + struct stat st; + + g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table)); + + if (stat (filename, &st) == 0 && st.st_size > 0 + && S_ISREG (st.st_mode)) { + e_table_scrolled_load_state (E_TABLE_SCROLLED (cal_table->etable), filename); + } +} + + +/* Saves the state of the table (headers shown etc.) to the given file. */ +void +e_calendar_table_save_state (ECalendarTable *cal_table, + gchar *filename) +{ + + g_return_if_fail (E_IS_CALENDAR_TABLE (cal_table)); + + e_table_scrolled_save_state (E_TABLE_SCROLLED (cal_table->etable), + filename); +} diff --git a/calendar/gui/e-calendar-table.h b/calendar/gui/e-calendar-table.h index 38e3eafea3..1265a80a72 100644 --- a/calendar/gui/e-calendar-table.h +++ b/calendar/gui/e-calendar-table.h @@ -59,6 +59,7 @@ struct _ECalendarTable CalendarModel *model; + GtkWidget *etable; /* Colors for drawing. */ GdkColor colors[E_CALENDAR_TABLE_COLOR_LAST]; @@ -77,6 +78,12 @@ GtkWidget* e_calendar_table_new (void); void e_calendar_table_set_cal_client (ECalendarTable *cal_table, CalClient *client); +/* These load and save the state of the table (headers shown etc.) to/from + the given file. */ +void e_calendar_table_load_state (ECalendarTable *cal_table, + gchar *filename); +void e_calendar_table_save_state (ECalendarTable *cal_table, + gchar *filename); #ifdef __cplusplus } diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index 46eb66e58e..379bbfec95 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -24,6 +24,7 @@ #include "e-week-view.h" #include "event-editor.h" #include "gnome-cal.h" +#include "component-factory.h" #include "calendar-commands.h" #include "calendar-config.h" @@ -197,6 +198,7 @@ setup_widgets (GnomeCalendar *gcal) { GnomeCalendarPrivate *priv; GtkWidget *w; + gchar *filename; priv = gcal->priv; @@ -245,6 +247,10 @@ setup_widgets (GnomeCalendar *gcal) e_paned_pack2 (E_PANED (priv->vpane), priv->todo, TRUE, TRUE); gtk_widget_show (priv->todo); + filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir); + e_calendar_table_load_state (E_CALENDAR_TABLE (priv->todo), filename); + g_free (filename); + /* The Day View. */ priv->day_view = e_day_view_new (); e_day_view_set_calendar (E_DAY_VIEW (priv->day_view), gcal); @@ -337,6 +343,7 @@ gnome_calendar_destroy (GtkObject *object) { GnomeCalendar *gcal; GnomeCalendarPrivate *priv; + gchar *filename; g_return_if_fail (object != NULL); g_return_if_fail (GNOME_IS_CALENDAR (object)); @@ -344,6 +351,11 @@ gnome_calendar_destroy (GtkObject *object) gcal = GNOME_CALENDAR (object); priv = gcal->priv; + /* Save the TaskPad layout. */ + filename = g_strdup_printf ("%s/config/TaskPad", evolution_dir); + e_calendar_table_save_state (E_CALENDAR_TABLE (priv->todo), filename); + g_free (filename); + priv->load_state = LOAD_STATE_NOT_LOADED; if (priv->loading_uri) { @@ -604,6 +616,8 @@ gnome_calendar_set_view_internal (GnomeCalendar *gcal, priv->current_view_type = view; priv->range_selected = range_selected; + calendar_config_set_default_view (view); + gtk_notebook_set_page (GTK_NOTEBOOK (priv->notebook), view); if (focus) @@ -1280,6 +1294,8 @@ GtkWidget * gnome_calendar_construct (GnomeCalendar *gcal) { GnomeCalendarPrivate *priv; + gint view; + gchar *page; g_return_val_if_fail (gcal != NULL, NULL); g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL); @@ -1304,7 +1320,23 @@ gnome_calendar_construct (GnomeCalendar *gcal) e_week_view_set_cal_client (E_WEEK_VIEW (priv->week_view), priv->client); e_week_view_set_cal_client (E_WEEK_VIEW (priv->month_view), priv->client); - gnome_calendar_set_view (gcal, "dayview", FALSE, FALSE); + view = calendar_config_get_default_view (); + switch (view) { + case 1: + page = "workweekview"; + break; + case 2: + page = "weekview"; + break; + case 3: + page = "monthview"; + break; + default: + page = "dayview"; + break; + } + + gnome_calendar_set_view (gcal, page, FALSE, FALSE); return GTK_WIDGET (gcal); } |