Author: juha Date: 2008-03-12 21:35:19 +0000 (Wed, 12 Mar 2008) New Revision: 26678
Modified: xfcalendar/trunk/configure.in.in xfcalendar/trunk/src/appointment.c xfcalendar/trunk/src/appointment.h xfcalendar/trunk/src/event-list.c xfcalendar/trunk/src/ical-code.c xfcalendar/trunk/src/ical-code.h xfcalendar/trunk/src/mainbox.c Log: 4.5.13.7 Bug 3917 - Todo without due date Made it possible to have todo without due date Modified: xfcalendar/trunk/configure.in.in =================================================================== --- xfcalendar/trunk/configure.in.in 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/configure.in.in 2008-03-12 21:35:19 UTC (rev 26678) @@ -9,7 +9,7 @@ dnl dnl Version information -m4_define([orage_version], [4.5.13.6-svn]) +m4_define([orage_version], [4.5.13.7-svn]) m4_define([gtk_minimum_version], [2.6.0]) m4_define([xfce_minimum_version], [4.4.0]) Modified: xfcalendar/trunk/src/appointment.c =================================================================== --- xfcalendar/trunk/src/appointment.c 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/appointment.c 2008-03-12 21:35:19 UTC (rev 26678) @@ -186,15 +186,24 @@ static void set_time_sensitivity(appt_win *apptw) { - gboolean dur_act, allDay_act, completed_act; + gboolean dur_act, allDay_act, comp_act, due_act; dur_act = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(apptw->Dur_checkbutton)); + GTK_TOGGLE_BUTTON(apptw->Dur_checkbutton)); allDay_act = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(apptw->AllDay_checkbutton)); - completed_act = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(apptw->AllDay_checkbutton)); + comp_act = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(apptw->Completed_checkbutton)); + /* todo can be without due date, but event always has end date. + * Journal has none, but we show it similarly than event */ + if (gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(apptw->Type_todo_rb))) + due_act = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(apptw->End_checkbutton)); + else + due_act = TRUE; + gtk_widget_set_sensitive(apptw->Dur_checkbutton, due_act); if (allDay_act) { gtk_widget_set_sensitive(apptw->StartTime_spin_hh, FALSE); gtk_widget_set_sensitive(apptw->StartTime_spin_mm, FALSE); @@ -209,22 +218,17 @@ gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, FALSE); gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, FALSE); gtk_widget_set_sensitive(apptw->CompletedTimezone_button, FALSE); + gtk_widget_set_sensitive(apptw->CompletedDate_button, comp_act); if (dur_act) { gtk_widget_set_sensitive(apptw->EndDate_button, FALSE); - gtk_widget_set_sensitive(apptw->Dur_spin_dd, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, TRUE); + gtk_widget_set_sensitive(apptw->Dur_spin_dd, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, due_act); } else { - gtk_widget_set_sensitive(apptw->EndDate_button, TRUE); + gtk_widget_set_sensitive(apptw->EndDate_button, due_act); gtk_widget_set_sensitive(apptw->Dur_spin_dd, FALSE); gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, FALSE); } - if (completed_act) { - gtk_widget_set_sensitive(apptw->CompletedDate_button, TRUE); - } - else { - gtk_widget_set_sensitive(apptw->CompletedDate_button, FALSE); - } } else { gtk_widget_set_sensitive(apptw->StartTime_spin_hh, TRUE); @@ -235,18 +239,18 @@ gtk_widget_set_sensitive(apptw->EndTime_spin_hh, FALSE); gtk_widget_set_sensitive(apptw->EndTime_spin_mm, FALSE); gtk_widget_set_sensitive(apptw->EndTimezone_button, FALSE); - gtk_widget_set_sensitive(apptw->Dur_spin_dd, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_hh, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_hh_label, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_mm, TRUE); - gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, TRUE); + gtk_widget_set_sensitive(apptw->Dur_spin_dd, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_hh, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_hh_label, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_mm, due_act); + gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, due_act); } else { - gtk_widget_set_sensitive(apptw->EndDate_button, TRUE); - gtk_widget_set_sensitive(apptw->EndTime_spin_hh, TRUE); - gtk_widget_set_sensitive(apptw->EndTime_spin_mm, TRUE); - gtk_widget_set_sensitive(apptw->EndTimezone_button, TRUE); + gtk_widget_set_sensitive(apptw->EndDate_button, due_act); + gtk_widget_set_sensitive(apptw->EndTime_spin_hh, due_act); + gtk_widget_set_sensitive(apptw->EndTime_spin_mm, due_act); + gtk_widget_set_sensitive(apptw->EndTimezone_button, due_act); gtk_widget_set_sensitive(apptw->Dur_spin_dd, FALSE); gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, FALSE); gtk_widget_set_sensitive(apptw->Dur_spin_hh, FALSE); @@ -254,18 +258,10 @@ gtk_widget_set_sensitive(apptw->Dur_spin_mm, FALSE); gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, FALSE); } - if (completed_act) { - gtk_widget_set_sensitive(apptw->CompletedDate_button, TRUE); - gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, TRUE); - gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, TRUE); - gtk_widget_set_sensitive(apptw->CompletedTimezone_button, TRUE); - } - else { - gtk_widget_set_sensitive(apptw->CompletedDate_button, FALSE); - gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, FALSE); - gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, FALSE); - gtk_widget_set_sensitive(apptw->CompletedTimezone_button, FALSE); - } + gtk_widget_set_sensitive(apptw->CompletedDate_button, comp_act); + gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, comp_act); + gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, comp_act); + gtk_widget_set_sensitive(apptw->CompletedTimezone_button, comp_act); } } @@ -352,6 +348,7 @@ gtk_label_set_text(GTK_LABEL(apptw->End_label), _("End")); gtk_widget_show(apptw->Availability_label); gtk_widget_show(apptw->Availability_cb); + gtk_widget_hide(apptw->End_checkbutton); gtk_widget_hide(apptw->Completed_label); gtk_widget_hide(apptw->Completed_hbox); gtk_widget_set_sensitive(apptw->Alarm_notebook_page, TRUE); @@ -369,6 +366,7 @@ gtk_label_set_text(GTK_LABEL(apptw->End_label), _("Due")); gtk_widget_hide(apptw->Availability_label); gtk_widget_hide(apptw->Availability_cb); + gtk_widget_show(apptw->End_checkbutton); gtk_widget_show(apptw->Completed_label); gtk_widget_show(apptw->Completed_hbox); gtk_widget_set_sensitive(apptw->Alarm_notebook_page, TRUE); @@ -386,6 +384,7 @@ gtk_label_set_text(GTK_LABEL(apptw->End_label), _("End")); gtk_widget_hide(apptw->Availability_label); gtk_widget_hide(apptw->Availability_cb); + gtk_widget_hide(apptw->End_checkbutton); gtk_widget_hide(apptw->Completed_label); gtk_widget_hide(apptw->Completed_hbox); gtk_widget_set_sensitive(apptw->Alarm_notebook_page, FALSE); @@ -398,6 +397,7 @@ gtk_widget_set_sensitive(apptw->EndTime_hbox, FALSE); gtk_widget_set_sensitive(apptw->Dur_hbox, FALSE); } + set_time_sensitivity(apptw); /* todo has different settings */ } static void set_sound_sensitivity(appt_win *apptw) @@ -511,20 +511,13 @@ mark_appointment_changed((appt_win *)user_data); } -static void appDur_checkbutton_clicked_cb(GtkCheckButton *cb +static void app_time_checkbutton_clicked_cb(GtkCheckButton *cb , gpointer user_data) { set_time_sensitivity((appt_win *)user_data); mark_appointment_changed((appt_win *)user_data); } -static void appCompleted_checkbutton_clicked_cb(GtkCheckButton *cb - , gpointer user_data) -{ - set_time_sensitivity((appt_win *)user_data); - mark_appointment_changed((appt_win *)user_data); -} - static void app_recur_checkbutton_clicked_cb(GtkCheckButton *checkbutton , gpointer user_data) { @@ -697,12 +690,6 @@ g_free(appSound_entry_filename); } -static void on_appAllDay_clicked_cb(GtkCheckButton *cb, gpointer user_data) -{ - set_time_sensitivity((appt_win *)user_data); - mark_appointment_changed((appt_win *)user_data); -} - static void app_free_memory(appt_win *apptw) { /* remove myself from event list appointment monitoring list */ @@ -961,6 +948,8 @@ /* end date and time. * Note that timezone is kept upto date all the time */ + appt->use_due_time = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(apptw->End_checkbutton)); current_t = orage_i18_date_to_tm_date(gtk_button_get_label( GTK_BUTTON(apptw->EndDate_button))); g_sprintf(endtime, "%02d:%02d" @@ -1314,6 +1303,8 @@ g_warning("fill_appt_window_times: starttime wrong %s", appt->uid); /* end time */ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + apptw->End_checkbutton), appt->use_due_time); if (strlen(appt->endtime) > 6 ) { tm_date = orage_icaltime_to_tm_time(appt->endtime, TRUE); enddate_to_display = orage_tm_date_to_i18_date(&tm_date); @@ -2331,6 +2322,13 @@ /* end time */ apptw->End_label = gtk_label_new(_("End")); + apptw->End_hbox = gtk_hbox_new(FALSE, 0); + /* translators: leave some spaces after this so that it looks better on + * the screen */ + apptw->End_checkbutton = + gtk_check_button_new_with_mnemonic(_("Set ")); + gtk_box_pack_start(GTK_BOX(apptw->End_hbox) + , apptw->End_checkbutton, FALSE, FALSE, 0); apptw->EndDate_button = gtk_button_new(); apptw->EndTime_spin_hh = gtk_spin_button_new_with_range(0, 23, 1); apptw->EndTime_spin_mm = gtk_spin_button_new_with_range(0, 59, 1); @@ -2340,8 +2338,10 @@ apptw->EndTime_spin_hh, apptw->EndTime_spin_mm, apptw->EndTimezone_button); + gtk_box_pack_end(GTK_BOX(apptw->End_hbox) + , apptw->EndTime_hbox, TRUE, TRUE, 0); orage_table_add_row(apptw->TableGeneral - , apptw->End_label, apptw->EndTime_hbox + , apptw->End_label, apptw->End_hbox , ++row, (GTK_SHRINK | GTK_FILL), (GTK_SHRINK | GTK_FILL)); /* duration */ @@ -2450,7 +2450,7 @@ g_signal_connect((gpointer)apptw->Type_journal_rb, "clicked" , G_CALLBACK(app_type_checkbutton_clicked_cb), apptw); g_signal_connect((gpointer)apptw->AllDay_checkbutton, "clicked" - , G_CALLBACK(on_appAllDay_clicked_cb), apptw); + , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw); g_signal_connect((gpointer)apptw->StartDate_button, "clicked" , G_CALLBACK(on_Date_button_clicked_cb), apptw); g_signal_connect((gpointer)apptw->StartTime_spin_hh, "changed" @@ -2459,6 +2459,8 @@ , G_CALLBACK(on_app_spin_button_changed_cb), apptw); g_signal_connect((gpointer)apptw->StartTimezone_button, "clicked" , G_CALLBACK(on_appStartTimezone_clicked_cb), apptw); + g_signal_connect((gpointer)apptw->End_checkbutton, "clicked" + , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw); g_signal_connect((gpointer)apptw->EndDate_button, "clicked" , G_CALLBACK(on_Date_button_clicked_cb), apptw); g_signal_connect((gpointer)apptw->EndTime_spin_hh, "changed" @@ -2468,7 +2470,7 @@ g_signal_connect((gpointer)apptw->EndTimezone_button, "clicked" , G_CALLBACK(on_appEndTimezone_clicked_cb), apptw); g_signal_connect((gpointer)apptw->Dur_checkbutton, "clicked" - , G_CALLBACK(appDur_checkbutton_clicked_cb), apptw); + , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw); g_signal_connect((gpointer)apptw->Dur_spin_dd, "value-changed" , G_CALLBACK(on_app_spin_button_changed_cb), apptw); g_signal_connect((gpointer)apptw->Dur_spin_hh, "value-changed" @@ -2476,7 +2478,7 @@ g_signal_connect((gpointer)apptw->Dur_spin_mm, "value-changed" , G_CALLBACK(on_app_spin_button_changed_cb), apptw); g_signal_connect((gpointer)apptw->Completed_checkbutton, "clicked" - , G_CALLBACK(appCompleted_checkbutton_clicked_cb), apptw); + , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw); g_signal_connect((gpointer)apptw->CompletedDate_button, "clicked" , G_CALLBACK(on_Date_button_clicked_cb), apptw); g_signal_connect((gpointer)apptw->CompletedTime_spin_hh, "changed" Modified: xfcalendar/trunk/src/appointment.h =================================================================== --- xfcalendar/trunk/src/appointment.h 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/appointment.h 2008-03-12 21:35:19 UTC (rev 26678) @@ -64,14 +64,16 @@ GtkWidget *Location_entry; GtkWidget *AllDay_checkbutton; GtkWidget *Start_label; + GtkWidget *StartTime_hbox; GtkWidget *StartDate_button; - GtkWidget *StartTime_hbox; GtkWidget *StartTime_spin_hh; GtkWidget *StartTime_spin_mm; GtkWidget *StartTimezone_button; GtkWidget *End_label; + GtkWidget *End_hbox; + GtkWidget *End_checkbutton; + GtkWidget *EndTime_hbox; GtkWidget *EndDate_button; - GtkWidget *EndTime_hbox; GtkWidget *EndTime_spin_hh; GtkWidget *EndTime_spin_mm; GtkWidget *EndTimezone_button; @@ -87,8 +89,8 @@ GtkWidget *Completed_label; GtkWidget *Completed_hbox; GtkWidget *Completed_checkbutton; + GtkWidget *CompletedTime_hbox; GtkWidget *CompletedDate_button; - GtkWidget *CompletedTime_hbox; GtkWidget *CompletedTime_spin_hh; GtkWidget *CompletedTime_spin_mm; GtkWidget *CompletedTimezone_button; Modified: xfcalendar/trunk/src/event-list.c =================================================================== --- xfcalendar/trunk/src/event-list.c 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/event-list.c 2008-03-12 21:35:19 UTC (rev 26678) @@ -198,20 +198,30 @@ result[i++] = ' '; i += append_time(result, start_ical_time, i); i = g_strlcat(result, "- ", 50); - if (!same_date) { + if (el->page == TODO_PAGE && !appt->use_due_time) { + i = g_strlcat(result, "...", 50); + } + else { + if (!same_date) { + t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE); + tmp = orage_tm_date_to_i18_date(&t); + i = g_strlcat(result, tmp, 50); + result[i++] = ' '; + } + i += append_time(result, end_ical_time, i); + } + } + else {/* date only */ + i = g_strlcat(result, " - ", 50); + if (el->page == TODO_PAGE && !appt->use_due_time) { + i = g_strlcat(result, "...", 50); + } + else { t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE); tmp = orage_tm_date_to_i18_date(&t); i = g_strlcat(result, tmp, 50); - result[i++] = ' '; } - i += append_time(result, end_ical_time, i); } - else {/* date only */ - i = g_strlcat(result, " - ", 50); - t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE); - tmp = orage_tm_date_to_i18_date(&t); - i = g_strlcat(result, tmp, 50); - } } return(result); @@ -239,7 +249,7 @@ , GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { el_win *el = (el_win *)user_data; - gchar *stime, *etime; + gchar *stime, *etime, *stime2; gchar start_time[17], end_time[17]; gint len; @@ -303,7 +313,11 @@ len = 8; } strncpy(start_time, stime, len); - strncpy(end_time, stime+len, len); + gtk_tree_model_get(model, iter, COL_TIME, &stime2, -1); + if (g_str_has_suffix(stime2, "- ...")) /* no due time */ + strncpy(end_time, "99999", len); /* long in the future*/ + else /* normal due time*/ + strncpy(end_time, stime+len, len); if (strncmp(end_time, el->date_now, len) < 0) { /* gone */ g_object_set(rend , "foreground", "Red" @@ -385,7 +399,7 @@ flags[4] = 'E'; else if (appt->type == XFICAL_TYPE_TODO) flags[4] = 'T'; - else + else /* Journal */ flags[4] = 'J'; flags[5] = '\0'; Modified: xfcalendar/trunk/src/ical-code.c =================================================================== --- xfcalendar/trunk/src/ical-code.c 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/ical-code.c 2008-03-12 21:35:19 UTC (rev 26678) @@ -1719,7 +1719,10 @@ /* journal has no duration nor enddate or due * journal also has no priority or transparent setting * journal also has not alarms or repeat settings */ - if (appt->use_duration) { + if (!appt->use_due_time && (appt->type == XFICAL_TYPE_TODO)) { + ; /* done with due time */ + } + else if (appt->use_duration) { /* both event and todo can have duration */ duration = icaldurationtype_from_int(appt->duration); icalcomponent_add_property(icmp @@ -1834,8 +1837,8 @@ } /* add EVENT/TODO/JOURNAL type ical appointment to ical file - * app: pointer to filled xfical_appt structure, which is stored - * Caller is responsible for filling and allocating and freeing it. + * appt: pointer to filled xfical_appt structure, which is to be stored + * Caller is responsible for filling and allocating and freeing it. * returns: NULL if failed and new ical id if successfully added. * This ical id is owned by the routine. Do not deallocate it. * It will be overwrittewritten by next invocation of this function. @@ -2107,6 +2110,7 @@ appt->end_tz_loc = "floating"; } } + appt->use_due_time = TRUE; } static void process_completed_date(xfical_appt *appt, icalproperty *p) @@ -2275,6 +2279,7 @@ appt.allDay = FALSE; appt.starttime[0] = '\0'; appt.start_tz_loc = NULL; + appt.use_due_time = FALSE; appt.endtime[0] = '\0'; appt.end_tz_loc = NULL; appt.use_duration = FALSE; @@ -2359,6 +2364,7 @@ break; case ICAL_DURATION_PROPERTY: appt.use_duration = TRUE; + appt.use_due_time = TRUE; duration = icalproperty_get_duration(p); appt.duration = icaldurationtype_as_int(duration); break; @@ -4235,12 +4241,6 @@ if (!ORAGE_STR_EXISTS(str)) return(NULL); if (first) { - /* FIXME: it would be good idea to convert to upper case. - * then we should not need to care about case and search would - * be more user friendly. - * Note: This is not easy since UID must not be converted upper case - * or it will not be found. - */ if (!g_file_get_contents(search_file, &text, &text_len, NULL)) { orage_message(250, P_N "Could not open Orage ical file (%s)", search_file); return(NULL); Modified: xfcalendar/trunk/src/ical-code.h =================================================================== --- xfcalendar/trunk/src/ical-code.h 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/ical-code.h 2008-03-12 21:35:19 UTC (rev 26678) @@ -66,6 +66,7 @@ */ gchar starttime[17]; gchar *start_tz_loc; + gboolean use_due_time; /* VTODO has due date or not */ gchar endtime[17]; gchar *end_tz_loc; gboolean use_duration; Modified: xfcalendar/trunk/src/mainbox.c =================================================================== --- xfcalendar/trunk/src/mainbox.c 2008-03-12 10:19:10 UTC (rev 26677) +++ xfcalendar/trunk/src/mainbox.c 2008-03-12 21:35:19 UTC (rev 26678) @@ -383,18 +383,24 @@ len = 15; else /* date only */ len = 8; - if (strncmp(appt->endtimecur, l_time, len) < 0) /* gone */ + if (appt->use_due_time) + e_time = g_strndup(appt->endtimecur, len); + else + e_time = g_strdup("99999"); + if (strncmp(e_time, l_time, len) < 0) /* gone */ gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &cal->mRed); - else if (strncmp(appt->starttimecur, l_time, len) <= 0 - && strncmp(appt->endtimecur, l_time, len) >= 0) + else if (strncmp(appt->starttimecur, l_time, len) <= 0 + && strncmp(e_time, l_time, len) >= 0) gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &cal->mBlue); + g_free(e_time); } /***** set hint *****/ s_time = g_strdup(orage_icaltime_to_i18_time(appt->starttimecur)); - e_time = g_strdup(orage_icaltime_to_i18_time(appt->endtimecur)); if (todo) { na = _("Never"); + e_time = g_strdup(appt->use_due_time + ? orage_icaltime_to_i18_time(appt->endtimecur) : na); c_time = g_strdup(appt->completed ? orage_icaltime_to_i18_time(appt->completedtime) : na); tip = g_strdup_printf(_("Title: %s\n Start:\t%s\n Due:\t%s\n Done:\t%s\nNote:\n%s") @@ -402,6 +408,7 @@ g_free(c_time); } else { /* it is event */ + e_time = g_strdup(orage_icaltime_to_i18_time(appt->endtimecur)); tip = g_strdup_printf(_("Title: %s\n Start:\t%s\n End:\t%s\n Note:\n%s") , appt->title, s_time, e_time, appt->note); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits