Updating branch refs/heads/master to cb6adc1b74e744b41ead4fe25b7626e676ce5d68 (commit) from ad3b9e2c597659742ddb90522dc7ad8a70800d08 (commit)
commit cb6adc1b74e744b41ead4fe25b7626e676ce5d68 Author: Juha Kautto <j...@xfce.org> Date: Tue Nov 29 13:20:20 2011 +0200 4.8.2.7: Improvement to read-only handling It is now impossible to modify read-only appointments in appointment window. This is a lot better than allowing changes and then giving error on save. configure.in.in | 2 +- src/appointment.c | 28 ++++++++++++++++++++++++++-- src/ical-code.c | 12 ++++++++---- src/ical-code.h | 1 + 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/configure.in.in b/configure.in.in index da69525..ec68bb3 100644 --- a/configure.in.in +++ b/configure.in.in @@ -9,7 +9,7 @@ dnl Written for Xfce by Juha Kautto <j...@xfce.org> dnl dnl Version information -m4_define([orage_version], [4.8.2.6-git]) +m4_define([orage_version], [4.8.2.7-git]) m4_define([gtk_minimum_version], [2.10.0]) m4_define([xfce_minimum_version], [4.6.0]) diff --git a/src/appointment.c b/src/appointment.c index a2b6596..f60f607 100644 --- a/src/appointment.c +++ b/src/appointment.c @@ -370,6 +370,27 @@ static void type_hide_show(appt_win *apptw) set_time_sensitivity(apptw); /* todo has different settings */ } +static void readonly_hide_show(appt_win *apptw) +{ + if (((xfical_appt *)apptw->xf_appt)->readonly) { + gtk_widget_set_sensitive(apptw->General_notebook_page, FALSE); + gtk_widget_set_sensitive(apptw->General_tab_label, FALSE); + gtk_widget_set_sensitive(apptw->Alarm_notebook_page, FALSE); + gtk_widget_set_sensitive(apptw->Alarm_tab_label, FALSE); + gtk_widget_set_sensitive(apptw->Recur_notebook_page, FALSE); + gtk_widget_set_sensitive(apptw->Recur_tab_label, FALSE); + + gtk_widget_set_sensitive(apptw->Save, FALSE); + gtk_widget_set_sensitive(apptw->File_menu_save, FALSE); + gtk_widget_set_sensitive(apptw->SaveClose, FALSE); + gtk_widget_set_sensitive(apptw->File_menu_saveclose, FALSE); + gtk_widget_set_sensitive(apptw->Revert, FALSE); + gtk_widget_set_sensitive(apptw->File_menu_revert, FALSE); + gtk_widget_set_sensitive(apptw->Delete, FALSE); + gtk_widget_set_sensitive(apptw->File_menu_delete, FALSE); + } +} + static void set_sound_sensitivity(appt_win *apptw) { gboolean sound_act, repeat_act; @@ -2301,10 +2322,12 @@ static void fill_appt_window(appt_win *apptw, char *action, char *par) apptw->appointment_new = FALSE; } else if (strcmp(action, "COPY") == 0) { - /* COPY uses old uid as base and adds new, so - * add == TRUE && new == FALSE */ + /* COPY uses old uid as base and adds new, so + * add == TRUE && new == FALSE */ apptw->appointment_add = TRUE; apptw->appointment_new = FALSE; + /* new copy is never readonly even though the original may have been */ + appt->readonly = FALSE; } else { g_error("fill_appt_window: unknown parameter\n"); @@ -3513,6 +3536,7 @@ appt_win *create_appt_win(char *action, char *par) gtk_widget_show_all(apptw->Window); recur_hide_show(apptw); type_hide_show(apptw); + readonly_hide_show(apptw); g_signal_connect((gpointer)apptw->Notebook, "switch-page" , G_CALLBACK(on_notebook_page_switch), apptw); gtk_widget_grab_focus(apptw->Title_entry); diff --git a/src/ical-code.c b/src/ical-code.c index 52b0749..70181bf 100644 --- a/src/ical-code.c +++ b/src/ical-code.c @@ -1936,6 +1936,7 @@ static void appt_init(xfical_appt *appt) appt->title = NULL; appt->location = NULL; appt->allDay = FALSE; + appt->readonly = FALSE; appt->starttime[0] = '\0'; appt->start_tz_loc = NULL; appt->use_due_time = FALSE; @@ -2310,17 +2311,20 @@ xfical_appt *xfical_appt_get(char *uid) file_type[4] = '\0'; ical_uid = uid+4; /* skip file id */ if (uid[0] == 'O') { - return(appt_get_any(ical_uid, ic_ical, file_type)); + appt = appt_get_any(ical_uid, ic_ical, file_type); } #ifdef HAVE_ARCHIVE else if (uid[0] == 'A') { - return(appt_get_any(ical_uid, ic_aical, file_type)); + appt = appt_get_any(ical_uid, ic_aical, file_type); } #endif else if (uid[0] == 'F') { sscanf(uid, "F%02d", &i); - if (i < g_par.foreign_count && ic_f_ical[i].ical != NULL) - return(appt_get_any(ical_uid, ic_f_ical[i].ical, file_type)); + if (i < g_par.foreign_count && ic_f_ical[i].ical != NULL) { + appt = appt_get_any(ical_uid, ic_f_ical[i].ical, file_type); + if (appt) + appt->readonly = g_par.foreign_data[i].read_only; + } else { orage_message(250, P_N "unknown foreign file number %s", uid); return(NULL); diff --git a/src/ical-code.h b/src/ical-code.h index 3e05f47..c412f9d 100644 --- a/src/ical-code.h +++ b/src/ical-code.h @@ -65,6 +65,7 @@ typedef struct _xfical_appt gchar *location; gboolean allDay; + gboolean readonly; /* time format must be: * yyyymmdd[Thhmiss[Z]] = %04d%02d%02dT%02d%02d%02d _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits