Remove progress frame
2001-08-09 JP Rosevear <jpr@ximian.com> * gui/dialogs/task-page.*: Remove progress frame * gui/dialogs/task-details-page.*: Put in progress frame, remove basics frame * gui/dialogs/task-editor.c (set_menu_sens): util function to set menu sensitivity based on state (task_editor_init): add meeting page (task_editor_edit_comp): show page if necessary (task_editor_destroy): unref meeting page (assign_task_cmd): bring up meeting page (refresh_task_cmd): save before sending (forward_cmd): ditto * gui/dialogs/comp-editor.c (save_cmd): implement new save command svn path=/trunk/; revision=11846
This commit is contained in:
@ -1,3 +1,21 @@
|
||||
2001-08-09 JP Rosevear <jpr@ximian.com>
|
||||
|
||||
* gui/dialogs/task-page.*: Remove progress frame
|
||||
|
||||
* gui/dialogs/task-details-page.*: Put in progress frame, remove
|
||||
basics frame
|
||||
|
||||
* gui/dialogs/task-editor.c (set_menu_sens): util function to set
|
||||
menu sensitivity based on state
|
||||
(task_editor_init): add meeting page
|
||||
(task_editor_edit_comp): show page if necessary
|
||||
(task_editor_destroy): unref meeting page
|
||||
(assign_task_cmd): bring up meeting page
|
||||
(refresh_task_cmd): save before sending
|
||||
(forward_cmd): ditto
|
||||
|
||||
* gui/dialogs/comp-editor.c (save_cmd): implement new save command
|
||||
|
||||
2001-08-09 Federico Mena Quintero <federico@ximian.com>
|
||||
|
||||
* gui/e-itip-control.c (destroy): Chain to the destroy handler in
|
||||
|
||||
@ -91,6 +91,7 @@ static void page_dates_changed_cb (GtkWidget *widget, CompEditorPageDates *dates
|
||||
static void obj_updated_cb (CalClient *client, const char *uid, gpointer data);
|
||||
static void obj_removed_cb (CalClient *client, const char *uid, gpointer data);
|
||||
|
||||
static void save_cmd (GtkWidget *widget, gpointer data);
|
||||
static void save_close_cmd (GtkWidget *widget, gpointer data);
|
||||
static void save_as_cmd (GtkWidget *widget, gpointer data);
|
||||
static void delete_cmd (GtkWidget *widget, gpointer data);
|
||||
@ -113,6 +114,7 @@ static EPixmap pixmaps [] =
|
||||
};
|
||||
|
||||
static BonoboUIVerb verbs [] = {
|
||||
BONOBO_UI_UNSAFE_VERB ("FileSave", save_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("FileSaveAndClose", save_close_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("FileSaveAs", save_as_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("FileDelete", delete_cmd),
|
||||
@ -804,6 +806,14 @@ close_dialog (CompEditor *editor)
|
||||
}
|
||||
|
||||
/* Menu Commands */
|
||||
static void
|
||||
save_cmd (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
CompEditor *editor = COMP_EDITOR (data);
|
||||
|
||||
save_comp_with_send (editor);
|
||||
}
|
||||
|
||||
static void
|
||||
save_close_cmd (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* Evolution calendar - Main page of the task editor dialog
|
||||
/* Evolution calendar - task details page
|
||||
*
|
||||
* Copyright (C) 2001 Ximian, Inc.
|
||||
*
|
||||
@ -47,23 +47,41 @@ struct _TaskDetailsPagePrivate {
|
||||
/* Widgets from the Glade file */
|
||||
GtkWidget *main;
|
||||
|
||||
GtkWidget *summary;
|
||||
GtkWidget *date_time;
|
||||
|
||||
GtkWidget *status;
|
||||
GtkWidget *priority;
|
||||
GtkWidget *percent_complete;
|
||||
|
||||
GtkWidget *completed_date;
|
||||
|
||||
GtkWidget *url;
|
||||
|
||||
GtkWidget *organizer;
|
||||
GtkWidget *organizer_lbl;
|
||||
GtkWidget *delegated_to;
|
||||
GtkWidget *delegated_to_lbl;
|
||||
GtkWidget *delegated_from;
|
||||
GtkWidget *delegated_from_lbl;
|
||||
|
||||
gboolean updating;
|
||||
};
|
||||
|
||||
/* Note that these two arrays must match. */
|
||||
static const int status_map[] = {
|
||||
ICAL_STATUS_NEEDSACTION,
|
||||
ICAL_STATUS_INPROCESS,
|
||||
ICAL_STATUS_COMPLETED,
|
||||
ICAL_STATUS_CANCELLED,
|
||||
-1
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
PRIORITY_HIGH,
|
||||
PRIORITY_NORMAL,
|
||||
PRIORITY_LOW,
|
||||
PRIORITY_UNDEFINED,
|
||||
} TaskEditorPriority;
|
||||
|
||||
static const int priority_map[] = {
|
||||
PRIORITY_HIGH,
|
||||
PRIORITY_NORMAL,
|
||||
PRIORITY_LOW,
|
||||
PRIORITY_UNDEFINED,
|
||||
-1
|
||||
};
|
||||
|
||||
|
||||
|
||||
static void task_details_page_class_init (TaskDetailsPageClass *class);
|
||||
@ -74,8 +92,6 @@ static GtkWidget *task_details_page_get_widget (CompEditorPage *page);
|
||||
static void task_details_page_focus_main_widget (CompEditorPage *page);
|
||||
static void task_details_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
|
||||
static void task_details_page_fill_component (CompEditorPage *page, CalComponent *comp);
|
||||
static void task_details_page_set_summary (CompEditorPage *page, const char *summary);
|
||||
static void task_details_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates);
|
||||
|
||||
static CompEditorPageClass *parent_class = NULL;
|
||||
|
||||
@ -130,8 +146,6 @@ task_details_page_class_init (TaskDetailsPageClass *class)
|
||||
editor_page_class->focus_main_widget = task_details_page_focus_main_widget;
|
||||
editor_page_class->fill_widgets = task_details_page_fill_widgets;
|
||||
editor_page_class->fill_component = task_details_page_fill_component;
|
||||
editor_page_class->set_summary = task_details_page_set_summary;
|
||||
editor_page_class->set_dates = task_details_page_set_dates;
|
||||
|
||||
object_class->destroy = task_details_page_destroy;
|
||||
}
|
||||
@ -148,8 +162,11 @@ task_details_page_init (TaskDetailsPage *tdpage)
|
||||
priv->xml = NULL;
|
||||
|
||||
priv->main = NULL;
|
||||
priv->summary = NULL;
|
||||
priv->date_time = NULL;
|
||||
|
||||
priv->status = NULL;
|
||||
priv->priority = NULL;
|
||||
priv->percent_complete = NULL;
|
||||
|
||||
priv->completed_date = NULL;
|
||||
priv->url = NULL;
|
||||
|
||||
@ -206,7 +223,52 @@ task_details_page_focus_main_widget (CompEditorPage *page)
|
||||
tdpage = TASK_DETAILS_PAGE (page);
|
||||
priv = tdpage->priv;
|
||||
|
||||
gtk_widget_grab_focus (priv->organizer);
|
||||
gtk_widget_grab_focus (priv->status);
|
||||
}
|
||||
|
||||
|
||||
static TaskEditorPriority
|
||||
priority_value_to_index (int priority_value)
|
||||
{
|
||||
TaskEditorPriority retval;
|
||||
|
||||
if (priority_value == 0)
|
||||
retval = PRIORITY_UNDEFINED;
|
||||
else if (priority_value <= 4)
|
||||
retval = PRIORITY_HIGH;
|
||||
else if (priority_value == 5)
|
||||
retval = PRIORITY_NORMAL;
|
||||
else
|
||||
retval = PRIORITY_LOW;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int
|
||||
priority_index_to_value (TaskEditorPriority priority)
|
||||
{
|
||||
int retval;
|
||||
|
||||
switch (priority) {
|
||||
case PRIORITY_UNDEFINED:
|
||||
retval = 0;
|
||||
break;
|
||||
case PRIORITY_HIGH:
|
||||
retval = 3;
|
||||
break;
|
||||
case PRIORITY_NORMAL:
|
||||
retval = 5;
|
||||
break;
|
||||
case PRIORITY_LOW:
|
||||
retval = 7;
|
||||
break;
|
||||
default:
|
||||
retval = -1;
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Fills the widgets with default values */
|
||||
@ -217,12 +279,6 @@ clear_widgets (TaskDetailsPage *tdpage)
|
||||
|
||||
priv = tdpage->priv;
|
||||
|
||||
/* Summary */
|
||||
gtk_label_set_text (GTK_LABEL (priv->summary), "");
|
||||
|
||||
/* Start date */
|
||||
gtk_label_set_text (GTK_LABEL (priv->date_time), "");
|
||||
|
||||
/* Date completed */
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), -1);
|
||||
|
||||
@ -236,12 +292,11 @@ task_details_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
|
||||
{
|
||||
TaskDetailsPage *tdpage;
|
||||
TaskDetailsPagePrivate *priv;
|
||||
GSList *list;
|
||||
CalComponentText text;
|
||||
CalComponentOrganizer organizer;
|
||||
int *priority_value, *percent;
|
||||
TaskEditorPriority priority;
|
||||
icalproperty_status status;
|
||||
const char *url;
|
||||
CompEditorPageDates dates;
|
||||
|
||||
|
||||
tdpage = TASK_DETAILS_PAGE (page);
|
||||
priv = tdpage->priv;
|
||||
|
||||
@ -250,37 +305,45 @@ task_details_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
|
||||
/* Clean the screen */
|
||||
clear_widgets (tdpage);
|
||||
|
||||
/* Summary */
|
||||
cal_component_get_summary (comp, &text);
|
||||
task_details_page_set_summary (page, text.value);
|
||||
/* Percent Complete. */
|
||||
cal_component_get_percent (comp, &percent);
|
||||
if (percent) {
|
||||
e_dialog_spin_set (priv->percent_complete, *percent);
|
||||
cal_component_free_percent (percent);
|
||||
} else {
|
||||
/* FIXME: Could check if task is completed and set 100%. */
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
}
|
||||
|
||||
/* Status. */
|
||||
cal_component_get_status (comp, &status);
|
||||
if (status == ICAL_STATUS_NONE) {
|
||||
/* Try to use the percent value. */
|
||||
if (percent) {
|
||||
if (*percent == 0)
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
else if (*percent == 100)
|
||||
status = ICAL_STATUS_COMPLETED;
|
||||
else
|
||||
status = ICAL_STATUS_INPROCESS;
|
||||
} else
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
}
|
||||
e_dialog_option_menu_set (priv->status, status, status_map);
|
||||
|
||||
/* Priority. */
|
||||
cal_component_get_priority (comp, &priority_value);
|
||||
if (priority_value) {
|
||||
priority = priority_value_to_index (*priority_value);
|
||||
cal_component_free_priority (priority_value);
|
||||
} else {
|
||||
priority = PRIORITY_UNDEFINED;
|
||||
}
|
||||
e_dialog_option_menu_set (priv->priority, priority, priority_map);
|
||||
|
||||
/* Dates */
|
||||
comp_editor_dates (&dates, comp);
|
||||
task_details_page_set_dates (page, &dates);
|
||||
|
||||
/* URL */
|
||||
cal_component_get_url (comp, &url);
|
||||
e_dialog_editable_set (priv->url, url);
|
||||
|
||||
/* Delegation */
|
||||
cal_component_get_organizer (comp, &organizer);
|
||||
if (organizer.value)
|
||||
e_dialog_editable_set (priv->organizer, organizer.value);
|
||||
|
||||
cal_component_get_attendee_list (comp, &list);
|
||||
if (list != NULL) {
|
||||
CalComponentAttendee *attendee;
|
||||
|
||||
attendee = list->data;
|
||||
if (attendee->delto)
|
||||
e_dialog_editable_set (priv->delegated_to, attendee->delto);
|
||||
if (attendee->delfrom) {
|
||||
gchar *s = e_utf8_to_gtk_string (priv->delegated_from, attendee->delfrom);
|
||||
gtk_label_set_text (GTK_LABEL (priv->delegated_from), s);
|
||||
g_free (s);
|
||||
}
|
||||
}
|
||||
cal_component_free_attendee_list (list);
|
||||
|
||||
priv->updating = FALSE;
|
||||
}
|
||||
@ -292,15 +355,28 @@ task_details_page_fill_component (CompEditorPage *page, CalComponent *comp)
|
||||
TaskDetailsPage *tdpage;
|
||||
TaskDetailsPagePrivate *priv;
|
||||
struct icaltimetype icaltime;
|
||||
GSList list;
|
||||
CalComponentOrganizer organizer;
|
||||
CalComponentAttendee attendee;
|
||||
icalproperty_status status;
|
||||
TaskEditorPriority priority;
|
||||
int priority_value, percent;
|
||||
char *url;
|
||||
gboolean date_set;
|
||||
|
||||
tdpage = TASK_DETAILS_PAGE (page);
|
||||
priv = tdpage->priv;
|
||||
|
||||
/* Percent Complete. */
|
||||
percent = e_dialog_spin_get_int (priv->percent_complete);
|
||||
cal_component_set_percent (comp, &percent);
|
||||
|
||||
/* Status. */
|
||||
status = e_dialog_option_menu_get (priv->status, status_map);
|
||||
cal_component_set_status (comp, status);
|
||||
|
||||
/* Priority. */
|
||||
priority = e_dialog_option_menu_get (priv->priority, priority_map);
|
||||
priority_value = priority_index_to_value (priority);
|
||||
cal_component_set_priority (comp, &priority_value);
|
||||
|
||||
icaltime = icaltime_null_time ();
|
||||
|
||||
/* COMPLETED must be in UTC. */
|
||||
@ -335,90 +411,6 @@ task_details_page_fill_component (CompEditorPage *page, CalComponent *comp)
|
||||
cal_component_set_url (comp, url);
|
||||
if (url)
|
||||
g_free (url);
|
||||
|
||||
/* Delegation */
|
||||
organizer.value = e_dialog_editable_get (priv->organizer);
|
||||
organizer.sentby = NULL;
|
||||
organizer.cn = NULL;
|
||||
organizer.language = NULL;
|
||||
cal_component_set_organizer (comp, &organizer);
|
||||
attendee.value = e_dialog_editable_get (priv->delegated_to);
|
||||
attendee.member = NULL;
|
||||
attendee.cutype = CAL_COMPONENT_CUTYPE_INDIVIDUAL;
|
||||
attendee.role = CAL_COMPONENT_ROLE_REQUIRED;
|
||||
attendee.status = CAL_COMPONENT_PARTSTAT_NEEDSACTION;
|
||||
attendee.rsvp = TRUE;
|
||||
attendee.delto = e_dialog_editable_get (priv->delegated_to);
|
||||
attendee.delfrom = NULL;
|
||||
attendee.sentby = NULL;
|
||||
attendee.cn = NULL;
|
||||
attendee.language = NULL;
|
||||
list.data = &attendee;
|
||||
list.next = NULL;
|
||||
cal_component_set_attendee_list (comp, &list);
|
||||
g_free ((char *)organizer.value);
|
||||
g_free ((char *)attendee.value);
|
||||
g_free ((char *)attendee.delto);
|
||||
g_free ((char *)attendee.delfrom);
|
||||
}
|
||||
|
||||
/* set_summary handler for the task page */
|
||||
static void
|
||||
task_details_page_set_summary (CompEditorPage *page, const char *summary)
|
||||
{
|
||||
TaskDetailsPage *tdpage;
|
||||
TaskDetailsPagePrivate *priv;
|
||||
gchar *s;
|
||||
|
||||
tdpage = TASK_DETAILS_PAGE (page);
|
||||
priv = tdpage->priv;
|
||||
|
||||
s = e_utf8_to_gtk_string (priv->summary, summary);
|
||||
gtk_label_set_text (GTK_LABEL (priv->summary), s);
|
||||
g_free (s);
|
||||
}
|
||||
|
||||
static void
|
||||
task_details_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates)
|
||||
{
|
||||
TaskDetailsPage *tdpage;
|
||||
TaskDetailsPagePrivate *priv;
|
||||
|
||||
tdpage = TASK_DETAILS_PAGE (page);
|
||||
priv = tdpage->priv;
|
||||
|
||||
if (priv->updating)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
comp_editor_date_label (dates, priv->date_time);
|
||||
|
||||
if (dates->complete) {
|
||||
if (icaltime_is_null_time (*dates->complete)) {
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), -1);
|
||||
} else {
|
||||
struct icaltimetype *tt = dates->complete;
|
||||
|
||||
/* Convert it from UTC to local time to display.
|
||||
FIXME: We should really use one timezone for the
|
||||
entire time the dialog is shown. Otherwise if the
|
||||
user changes the timezone, the COMPLETED date may
|
||||
get changed as well. */
|
||||
char *location = calendar_config_get_timezone ();
|
||||
icaltimezone *zone = icaltimezone_get_builtin_timezone (location);
|
||||
icaltimezone_convert_time (tt,
|
||||
icaltimezone_get_utc_timezone (),
|
||||
zone);
|
||||
|
||||
e_date_edit_set_date (E_DATE_EDIT (priv->completed_date),
|
||||
tt->year, tt->month, tt->day);
|
||||
e_date_edit_set_time_of_day (E_DATE_EDIT (priv->completed_date),
|
||||
tt->hour, tt->minute);
|
||||
}
|
||||
}
|
||||
|
||||
priv->updating = FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -440,44 +432,58 @@ get_widgets (TaskDetailsPage *tdpage)
|
||||
gtk_widget_ref (priv->main);
|
||||
gtk_widget_unparent (priv->main);
|
||||
|
||||
priv->summary = GW ("summary");
|
||||
priv->date_time = GW ("date-time");
|
||||
priv->status = GW ("status");
|
||||
priv->priority = GW ("priority");
|
||||
priv->percent_complete = GW ("percent-complete");
|
||||
|
||||
priv->completed_date = GW ("completed-date");
|
||||
|
||||
priv->url = GW ("url");
|
||||
|
||||
priv->organizer = GW ("organizer");
|
||||
priv->organizer_lbl = GW ("organizer-label");
|
||||
priv->delegated_to = GW ("delegated-to");
|
||||
priv->delegated_to_lbl = GW ("delegated-to-label");
|
||||
priv->delegated_from = GW ("delegated-from");
|
||||
priv->delegated_from_lbl = GW ("delegated-from-label");
|
||||
|
||||
#undef GW
|
||||
|
||||
return (priv->summary
|
||||
&& priv->date_time
|
||||
return (priv->status
|
||||
&& priv->priority
|
||||
&& priv->percent_complete
|
||||
&& priv->completed_date
|
||||
&& priv->url
|
||||
&& priv->organizer
|
||||
&& priv->organizer_lbl
|
||||
&& priv->delegated_to
|
||||
&& priv->delegated_to_lbl
|
||||
&& priv->delegated_from
|
||||
&& priv->delegated_from_lbl);
|
||||
&& priv->url);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
complete_date_changed (TaskDetailsPage *tdpage, time_t ctime, gboolean complete)
|
||||
{
|
||||
TaskDetailsPagePrivate *priv;
|
||||
CompEditorPageDates dates = {NULL, NULL, NULL, NULL};
|
||||
icaltimezone *zone;
|
||||
struct icaltimetype completed_tt = icaltime_null_time();
|
||||
|
||||
priv = tdpage->priv;
|
||||
|
||||
/* Get the current time in UTC. */
|
||||
zone = icaltimezone_get_utc_timezone ();
|
||||
completed_tt = icaltime_from_timet_with_zone (ctime, FALSE, zone);
|
||||
completed_tt.is_utc = TRUE;
|
||||
|
||||
dates.start = NULL;
|
||||
dates.end = NULL;
|
||||
dates.due = NULL;
|
||||
if (complete)
|
||||
dates.complete = &completed_tt;
|
||||
|
||||
/* Notify upstream */
|
||||
comp_editor_page_notify_dates_changed (COMP_EDITOR_PAGE (tdpage),
|
||||
&dates);
|
||||
}
|
||||
|
||||
/* Callback used when the start or end date widgets change. We check that the
|
||||
* start date < end date and we set the "all day task" button as appropriate.
|
||||
*/
|
||||
static void
|
||||
date_changed_cb (EDateEdit *dedit, gpointer data)
|
||||
{
|
||||
TaskDetailsPage *tdpage;
|
||||
TaskDetailsPagePrivate *priv;
|
||||
CompEditorPageDates dates;
|
||||
struct icaltimetype completed_tt = icaltime_null_time();
|
||||
CompEditorPageDates dates = {NULL, NULL, NULL, NULL};
|
||||
struct icaltimetype completed_tt;
|
||||
icalproperty_status status;
|
||||
gboolean date_set;
|
||||
|
||||
tdpage = TASK_DETAILS_PAGE (data);
|
||||
@ -493,18 +499,97 @@ date_changed_cb (EDateEdit *dedit, gpointer data)
|
||||
e_date_edit_get_time_of_day (E_DATE_EDIT (priv->completed_date),
|
||||
&completed_tt.hour,
|
||||
&completed_tt.minute);
|
||||
if (!date_set)
|
||||
if (!date_set) {
|
||||
completed_tt = icaltime_null_time ();
|
||||
|
||||
dates.start = NULL;
|
||||
dates.end = NULL;
|
||||
dates.due = NULL;
|
||||
dates.complete = &completed_tt;
|
||||
status = e_dialog_option_menu_get (priv->status, status_map);
|
||||
if (status == ICAL_STATUS_COMPLETED) {
|
||||
e_dialog_option_menu_set (priv->status, ICAL_STATUS_NEEDSACTION, status_map);
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
}
|
||||
} else {
|
||||
e_dialog_option_menu_set (priv->status, ICAL_STATUS_COMPLETED, status_map);
|
||||
e_dialog_spin_set (priv->percent_complete, 100);
|
||||
}
|
||||
|
||||
/* Notify upstream */
|
||||
comp_editor_page_notify_dates_changed (COMP_EDITOR_PAGE (tdpage), &dates);
|
||||
}
|
||||
|
||||
static void
|
||||
status_changed (GtkMenu *menu, TaskDetailsPage *tdpage)
|
||||
{
|
||||
TaskDetailsPagePrivate *priv;
|
||||
icalproperty_status status;
|
||||
time_t ctime = -1;
|
||||
|
||||
priv = tdpage->priv;
|
||||
|
||||
if (priv->updating)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
status = e_dialog_option_menu_get (priv->status, status_map);
|
||||
if (status == ICAL_STATUS_NEEDSACTION) {
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), ctime);
|
||||
complete_date_changed (tdpage, 0, FALSE);
|
||||
} else if (status == ICAL_STATUS_INPROCESS) {
|
||||
e_dialog_spin_set (priv->percent_complete, 50);
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), ctime);
|
||||
complete_date_changed (tdpage, 0, FALSE);
|
||||
} else if (status == ICAL_STATUS_COMPLETED) {
|
||||
e_dialog_spin_set (priv->percent_complete, 100);
|
||||
ctime = time (NULL);
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), ctime);
|
||||
complete_date_changed (tdpage, ctime, TRUE);
|
||||
}
|
||||
|
||||
priv->updating = FALSE;
|
||||
|
||||
comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tdpage));
|
||||
}
|
||||
|
||||
static void
|
||||
percent_complete_changed (GtkAdjustment *adj, TaskDetailsPage *tdpage)
|
||||
{
|
||||
TaskDetailsPagePrivate *priv;
|
||||
gint percent;
|
||||
icalproperty_status status;
|
||||
gboolean complete;
|
||||
time_t ctime = -1;
|
||||
|
||||
priv = tdpage->priv;
|
||||
|
||||
if (priv->updating)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
percent = e_dialog_spin_get_int (priv->percent_complete);
|
||||
if (percent == 100) {
|
||||
complete = TRUE;
|
||||
ctime = time (NULL);
|
||||
status = ICAL_STATUS_COMPLETED;
|
||||
} else {
|
||||
complete = FALSE;
|
||||
|
||||
if (percent == 0)
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
else
|
||||
status = ICAL_STATUS_INPROCESS;
|
||||
}
|
||||
|
||||
e_dialog_option_menu_set (priv->status, status, status_map);
|
||||
e_date_edit_set_time (E_DATE_EDIT (priv->completed_date), ctime);
|
||||
complete_date_changed (tdpage, ctime, complete);
|
||||
|
||||
priv->updating = FALSE;
|
||||
|
||||
comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tdpage));
|
||||
}
|
||||
|
||||
/* This is called when any field is changed; it notifies upstream. */
|
||||
static void
|
||||
field_changed_cb (GtkWidget *widget, gpointer data)
|
||||
@ -533,6 +618,22 @@ init_widgets (TaskDetailsPage *tdpage)
|
||||
(EDateEditGetTimeCallback) comp_editor_get_current_time,
|
||||
tdpage, NULL);
|
||||
|
||||
/* Connect signals. The Status, Percent Complete & Date Completed
|
||||
properties are closely related so whenever one changes we may need
|
||||
to update the other 2. */
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->status)->menu),
|
||||
"deactivate",
|
||||
GTK_SIGNAL_FUNC (status_changed), tdpage);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (priv->percent_complete)->adjustment),
|
||||
"value_changed",
|
||||
GTK_SIGNAL_FUNC (percent_complete_changed), tdpage);
|
||||
|
||||
/* Priority */
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->priority)->menu),
|
||||
"deactivate",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tdpage);
|
||||
|
||||
/* Completed Date */
|
||||
gtk_signal_connect (GTK_OBJECT (priv->completed_date), "changed",
|
||||
GTK_SIGNAL_FUNC (date_changed_cb), tdpage);
|
||||
@ -540,14 +641,6 @@ init_widgets (TaskDetailsPage *tdpage)
|
||||
/* URL */
|
||||
gtk_signal_connect (GTK_OBJECT (priv->url), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tdpage);
|
||||
|
||||
/* Delegation */
|
||||
gtk_signal_connect (GTK_OBJECT (priv->organizer), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tdpage);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (priv->delegated_to), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tdpage);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -609,31 +702,6 @@ task_details_page_new (void)
|
||||
return tdpage;
|
||||
}
|
||||
|
||||
void
|
||||
task_details_page_show_delegation (TaskDetailsPage *tdpage, gboolean show)
|
||||
{
|
||||
TaskDetailsPagePrivate *priv;
|
||||
|
||||
priv = tdpage->priv;
|
||||
|
||||
if (show) {
|
||||
gtk_widget_show (priv->organizer);
|
||||
gtk_widget_show (priv->organizer_lbl);
|
||||
gtk_widget_show (priv->delegated_to);
|
||||
gtk_widget_show (priv->delegated_to_lbl);
|
||||
gtk_widget_show (priv->delegated_from);
|
||||
gtk_widget_show (priv->delegated_from_lbl);
|
||||
comp_editor_page_notify_needs_send (COMP_EDITOR_PAGE (tdpage));
|
||||
} else {
|
||||
gtk_widget_hide (priv->organizer);
|
||||
gtk_widget_hide (priv->organizer_lbl);
|
||||
gtk_widget_hide (priv->delegated_to);
|
||||
gtk_widget_hide (priv->delegated_to_lbl);
|
||||
gtk_widget_hide (priv->delegated_from);
|
||||
gtk_widget_hide (priv->delegated_from_lbl);
|
||||
}
|
||||
}
|
||||
|
||||
GtkWidget *task_details_page_create_date_edit (void);
|
||||
|
||||
GtkWidget *
|
||||
|
||||
@ -33,8 +33,8 @@
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<label>Basics</label>
|
||||
<name>frame2</name>
|
||||
<label>Progress</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
@ -44,286 +44,216 @@
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<border_width>4</border_width>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>2</row_spacing>
|
||||
<column_spacing>2</column_spacing>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label15</name>
|
||||
<label>Summary:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<border_width>4</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>4</spacing>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label17</name>
|
||||
<label>_Status:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>False</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
<default_focus_target>status</default_focus_target>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>status</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Not Started
|
||||
In Progress
|
||||
Completed
|
||||
Cancelled
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label18</name>
|
||||
<label>_Priority:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<default_focus_target>priority</default_focus_target>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>priority</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>High
|
||||
Normal
|
||||
Low
|
||||
Undefined
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label19</name>
|
||||
<label>% Complete</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>percent-complete</name>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>False</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>1</value>
|
||||
<lower>0</lower>
|
||||
<upper>100</upper>
|
||||
<step>1</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label16</name>
|
||||
<label>Date/Time:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<border_width>4</border_width>
|
||||
<rows>1</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>2</row_spacing>
|
||||
<column_spacing>4</column_spacing>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>False</xfill>
|
||||
<yfill>False</yfill>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>date-time</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Date Completed:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>summary</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_LEFT</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
<widget>
|
||||
<class>Custom</class>
|
||||
<name>completed-date</name>
|
||||
<creation_function>task_details_page_create_date_edit</creation_function>
|
||||
<int1>0</int1>
|
||||
<int2>0</int2>
|
||||
<last_modification_time>Fri, 01 Jun 2001 18:58:51 GMT</last_modification_time>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<name>table2</name>
|
||||
<border_width>4</border_width>
|
||||
<rows>5</rows>
|
||||
<rows>1</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>2</row_spacing>
|
||||
<column_spacing>4</column_spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<name>url</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<name>delegated-to</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<name>organizer</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>delegated-from-label</name>
|
||||
<label>Delegated From:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>delegated-to-label</name>
|
||||
<label>Delegated To:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Date Completed:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
@ -334,32 +264,6 @@
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>organizer-label</name>
|
||||
<label>Organizer:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
@ -377,23 +281,21 @@
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>delegated-from</name>
|
||||
<label>No one</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<class>GtkEntry</class>
|
||||
<name>url</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
@ -401,29 +303,6 @@
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Custom</class>
|
||||
<name>completed-date</name>
|
||||
<creation_function>task_details_page_create_date_edit</creation_function>
|
||||
<int1>0</int1>
|
||||
<int2>0</int2>
|
||||
<last_modification_time>Fri, 01 Jun 2001 18:58:51 GMT</last_modification_time>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
@ -54,8 +54,6 @@ typedef struct {
|
||||
GtkType task_details_page_get_type (void);
|
||||
TaskDetailsPage *task_details_page_construct (TaskDetailsPage *tdpage);
|
||||
TaskDetailsPage *task_details_page_new (void);
|
||||
void task_details_page_show_delegation (TaskDetailsPage *tdpage,
|
||||
gboolean show);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -32,13 +32,16 @@
|
||||
|
||||
#include "task-page.h"
|
||||
#include "task-details-page.h"
|
||||
#include "recurrence-page.h"
|
||||
#include "meeting-page.h"
|
||||
#include "cancel-comp.h"
|
||||
#include "task-editor.h"
|
||||
|
||||
struct _TaskEditorPrivate {
|
||||
TaskPage *task_page;
|
||||
TaskDetailsPage *task_details_page;
|
||||
MeetingPage *meet_page;
|
||||
|
||||
gboolean meeting_shown;
|
||||
};
|
||||
|
||||
|
||||
@ -48,13 +51,13 @@ static void task_editor_init (TaskEditor *te);
|
||||
static void task_editor_edit_comp (CompEditor *editor, CalComponent *comp);
|
||||
static void task_editor_destroy (GtkObject *object);
|
||||
|
||||
static void delegate_task_cmd (GtkWidget *widget, gpointer data);
|
||||
static void assign_task_cmd (GtkWidget *widget, gpointer data);
|
||||
static void refresh_task_cmd (GtkWidget *widget, gpointer data);
|
||||
static void cancel_task_cmd (GtkWidget *widget, gpointer data);
|
||||
static void forward_cmd (GtkWidget *widget, gpointer data);
|
||||
|
||||
static BonoboUIVerb verbs [] = {
|
||||
BONOBO_UI_UNSAFE_VERB ("ActionDelegateTask", delegate_task_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("ActionAssignTask", assign_task_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("ActionRefreshTask", refresh_task_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("ActionCancelTask", cancel_task_cmd),
|
||||
BONOBO_UI_UNSAFE_VERB ("ActionForward", forward_cmd),
|
||||
@ -115,6 +118,24 @@ task_editor_class_init (TaskEditorClass *klass)
|
||||
object_class->destroy = task_editor_destroy;
|
||||
}
|
||||
|
||||
static void
|
||||
set_menu_sens (TaskEditor *te)
|
||||
{
|
||||
TaskEditorPrivate *priv;
|
||||
|
||||
priv = te->priv;
|
||||
|
||||
comp_editor_set_ui_prop (COMP_EDITOR (te),
|
||||
"/commands/ActionAssignTask",
|
||||
"sensitive", priv->meeting_shown ? "0" : "1");
|
||||
comp_editor_set_ui_prop (COMP_EDITOR (te),
|
||||
"/commands/ActionRefreshTask",
|
||||
"sensitive", priv->meeting_shown ? "1" : "0");
|
||||
comp_editor_set_ui_prop (COMP_EDITOR (te),
|
||||
"/commands/ActionCancelTask",
|
||||
"sensitive", priv->meeting_shown ? "1" : "0");
|
||||
}
|
||||
|
||||
/* Object initialization function for the event editor */
|
||||
static void
|
||||
task_editor_init (TaskEditor *te)
|
||||
@ -127,16 +148,24 @@ task_editor_init (TaskEditor *te)
|
||||
priv->task_page = task_page_new ();
|
||||
comp_editor_append_page (COMP_EDITOR (te),
|
||||
COMP_EDITOR_PAGE (priv->task_page),
|
||||
_("Task"));
|
||||
_("Basic"));
|
||||
|
||||
priv->task_details_page = task_details_page_new ();
|
||||
comp_editor_append_page (COMP_EDITOR (te),
|
||||
COMP_EDITOR_PAGE (priv->task_details_page),
|
||||
_("Details"));
|
||||
|
||||
priv->meet_page = meeting_page_new ();
|
||||
comp_editor_append_page (COMP_EDITOR (te),
|
||||
COMP_EDITOR_PAGE (priv->meet_page),
|
||||
_("Assignment"));
|
||||
|
||||
comp_editor_merge_ui (COMP_EDITOR (te), EVOLUTION_DATADIR
|
||||
"/gnome/ui/evolution-task-editor.xml",
|
||||
verbs);
|
||||
|
||||
priv->meeting_shown = TRUE;
|
||||
set_menu_sens (te);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -148,12 +177,13 @@ task_editor_edit_comp (CompEditor *editor, CalComponent *comp)
|
||||
|
||||
te = TASK_EDITOR (editor);
|
||||
priv = te->priv;
|
||||
|
||||
|
||||
cal_component_get_attendee_list (comp, &attendees);
|
||||
if (attendees == NULL)
|
||||
task_details_page_show_delegation (priv->task_details_page, FALSE);
|
||||
else
|
||||
task_details_page_show_delegation (priv->task_details_page, TRUE);
|
||||
if (attendees == NULL) {
|
||||
comp_editor_remove_page (editor, COMP_EDITOR_PAGE (priv->meet_page));
|
||||
priv->meeting_shown = FALSE;
|
||||
set_menu_sens (te);
|
||||
}
|
||||
cal_component_free_attendee_list (attendees);
|
||||
|
||||
if (parent_class->edit_comp)
|
||||
@ -175,6 +205,7 @@ task_editor_destroy (GtkObject *object)
|
||||
|
||||
gtk_object_unref (GTK_OBJECT (priv->task_page));
|
||||
gtk_object_unref (GTK_OBJECT (priv->task_details_page));
|
||||
gtk_object_unref (GTK_OBJECT (priv->meet_page));
|
||||
|
||||
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
||||
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
|
||||
@ -195,23 +226,31 @@ task_editor_new (void)
|
||||
}
|
||||
|
||||
static void
|
||||
delegate_task_cmd (GtkWidget *widget, gpointer data)
|
||||
assign_task_cmd (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
TaskEditor *te = TASK_EDITOR (data);
|
||||
TaskEditorPrivate *priv;
|
||||
|
||||
priv = te->priv;
|
||||
|
||||
task_details_page_show_delegation (priv->task_details_page, TRUE);
|
||||
if (!priv->meeting_shown) {
|
||||
comp_editor_append_page (COMP_EDITOR (te),
|
||||
COMP_EDITOR_PAGE (priv->meet_page),
|
||||
_("Assignment"));
|
||||
priv->meeting_shown = TRUE;
|
||||
set_menu_sens (te);
|
||||
}
|
||||
|
||||
comp_editor_show_page (COMP_EDITOR (te),
|
||||
COMP_EDITOR_PAGE (priv->task_details_page));
|
||||
COMP_EDITOR_PAGE (priv->meet_page));
|
||||
}
|
||||
|
||||
static void
|
||||
refresh_task_cmd (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
TaskEditor *te = TASK_EDITOR (data);
|
||||
|
||||
|
||||
comp_editor_save_comp (COMP_EDITOR (te));
|
||||
comp_editor_send_comp (COMP_EDITOR (te), CAL_COMPONENT_METHOD_REFRESH);
|
||||
}
|
||||
|
||||
@ -233,5 +272,8 @@ forward_cmd (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
TaskEditor *te = TASK_EDITOR (data);
|
||||
|
||||
comp_editor_save_comp (COMP_EDITOR (te));
|
||||
comp_editor_send_comp (COMP_EDITOR (te), CAL_COMPONENT_METHOD_PUBLISH);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -58,11 +58,6 @@ struct _TaskPagePrivate {
|
||||
GtkWidget *due_timezone;
|
||||
GtkWidget *start_timezone;
|
||||
|
||||
GtkWidget *percent_complete;
|
||||
|
||||
GtkWidget *status;
|
||||
GtkWidget *priority;
|
||||
|
||||
GtkWidget *description;
|
||||
|
||||
GtkWidget *classification_public;
|
||||
@ -78,30 +73,6 @@ struct _TaskPagePrivate {
|
||||
gboolean updating;
|
||||
};
|
||||
|
||||
/* Note that these two arrays must match. */
|
||||
static const int status_map[] = {
|
||||
ICAL_STATUS_NEEDSACTION,
|
||||
ICAL_STATUS_INPROCESS,
|
||||
ICAL_STATUS_COMPLETED,
|
||||
ICAL_STATUS_CANCELLED,
|
||||
-1
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
PRIORITY_HIGH,
|
||||
PRIORITY_NORMAL,
|
||||
PRIORITY_LOW,
|
||||
PRIORITY_UNDEFINED,
|
||||
} TaskEditorPriority;
|
||||
|
||||
static const int priority_map[] = {
|
||||
PRIORITY_HIGH,
|
||||
PRIORITY_NORMAL,
|
||||
PRIORITY_LOW,
|
||||
PRIORITY_UNDEFINED,
|
||||
-1
|
||||
};
|
||||
|
||||
static const int classification_map[] = {
|
||||
CAL_COMPONENT_CLASS_PUBLIC,
|
||||
CAL_COMPONENT_CLASS_PRIVATE,
|
||||
@ -197,8 +168,6 @@ task_page_init (TaskPage *tpage)
|
||||
priv->start_date = NULL;
|
||||
priv->due_timezone = NULL;
|
||||
priv->start_timezone = NULL;
|
||||
priv->percent_complete = NULL;
|
||||
priv->status = NULL;
|
||||
priv->description = NULL;
|
||||
priv->classification_public = NULL;
|
||||
priv->classification_private = NULL;
|
||||
@ -284,59 +253,10 @@ clear_widgets (TaskPage *tpage)
|
||||
e_dialog_radio_set (priv->classification_public,
|
||||
CAL_COMPONENT_CLASS_PRIVATE, classification_map);
|
||||
|
||||
/* Status, priority, complete percent */
|
||||
e_dialog_spin_set (priv->percent_complete, 0.0);
|
||||
e_dialog_option_menu_set (priv->status, ICAL_STATUS_NEEDSACTION, status_map);
|
||||
e_dialog_option_menu_set (priv->priority, PRIORITY_UNDEFINED, priority_map);
|
||||
|
||||
/* Categories */
|
||||
e_dialog_editable_set (priv->categories, NULL);
|
||||
}
|
||||
|
||||
static TaskEditorPriority
|
||||
priority_value_to_index (int priority_value)
|
||||
{
|
||||
TaskEditorPriority retval;
|
||||
|
||||
if (priority_value == 0)
|
||||
retval = PRIORITY_UNDEFINED;
|
||||
else if (priority_value <= 4)
|
||||
retval = PRIORITY_HIGH;
|
||||
else if (priority_value == 5)
|
||||
retval = PRIORITY_NORMAL;
|
||||
else
|
||||
retval = PRIORITY_LOW;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int
|
||||
priority_index_to_value (TaskEditorPriority priority)
|
||||
{
|
||||
int retval;
|
||||
|
||||
switch (priority) {
|
||||
case PRIORITY_UNDEFINED:
|
||||
retval = 0;
|
||||
break;
|
||||
case PRIORITY_HIGH:
|
||||
retval = 3;
|
||||
break;
|
||||
case PRIORITY_NORMAL:
|
||||
retval = 5;
|
||||
break;
|
||||
case PRIORITY_LOW:
|
||||
retval = 7;
|
||||
break;
|
||||
default:
|
||||
retval = -1;
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Decode the radio button group for classifications */
|
||||
static CalComponentClassification
|
||||
classification_get (GtkWidget *widget)
|
||||
@ -355,9 +275,6 @@ task_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
|
||||
CalComponentClassification cl;
|
||||
CalClientGetStatus get_tz_status;
|
||||
GSList *l;
|
||||
int *priority_value, *percent;
|
||||
icalproperty_status status;
|
||||
TaskEditorPriority priority;
|
||||
const char *categories;
|
||||
icaltimezone *zone;
|
||||
|
||||
@ -440,44 +357,6 @@ task_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
|
||||
|
||||
cal_component_free_datetime (&d);
|
||||
|
||||
|
||||
/* Percent Complete. */
|
||||
cal_component_get_percent (comp, &percent);
|
||||
if (percent) {
|
||||
e_dialog_spin_set (priv->percent_complete, *percent);
|
||||
cal_component_free_percent (percent);
|
||||
} else {
|
||||
/* FIXME: Could check if task is completed and set 100%. */
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
}
|
||||
|
||||
/* Status. */
|
||||
cal_component_get_status (comp, &status);
|
||||
if (status == ICAL_STATUS_NONE) {
|
||||
/* Try to user the percent value. */
|
||||
if (percent) {
|
||||
if (*percent == 0)
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
else if (*percent == 100)
|
||||
status = ICAL_STATUS_COMPLETED;
|
||||
else
|
||||
status = ICAL_STATUS_INPROCESS;
|
||||
} else
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
}
|
||||
e_dialog_option_menu_set (priv->status, status, status_map);
|
||||
|
||||
/* Priority. */
|
||||
cal_component_get_priority (comp, &priority_value);
|
||||
if (priority_value) {
|
||||
priority = priority_value_to_index (*priority_value);
|
||||
cal_component_free_priority (priority_value);
|
||||
} else {
|
||||
priority = PRIORITY_UNDEFINED;
|
||||
}
|
||||
e_dialog_option_menu_set (priv->priority, priority, priority_map);
|
||||
|
||||
|
||||
/* Classification. */
|
||||
cal_component_get_classification (comp, &cl);
|
||||
|
||||
@ -515,11 +394,7 @@ task_page_fill_component (CompEditorPage *page, CalComponent *comp)
|
||||
TaskPagePrivate *priv;
|
||||
CalComponentDateTime date;
|
||||
struct icaltimetype icaltime;
|
||||
icalproperty_status status;
|
||||
TaskEditorPriority priority;
|
||||
int priority_value, percent;
|
||||
char *cat;
|
||||
char *str;
|
||||
char *cat, *str;
|
||||
gboolean date_set;
|
||||
icaltimezone *zone;
|
||||
|
||||
@ -606,19 +481,6 @@ task_page_fill_component (CompEditorPage *page, CalComponent *comp)
|
||||
cal_component_set_dtstart (comp, NULL);
|
||||
}
|
||||
|
||||
/* Percent Complete. */
|
||||
percent = e_dialog_spin_get_int (priv->percent_complete);
|
||||
cal_component_set_percent (comp, &percent);
|
||||
|
||||
/* Status. */
|
||||
status = e_dialog_option_menu_get (priv->status, status_map);
|
||||
cal_component_set_status (comp, status);
|
||||
|
||||
/* Priority. */
|
||||
priority = e_dialog_option_menu_get (priv->priority, priority_map);
|
||||
priority_value = priority_index_to_value (priority);
|
||||
cal_component_set_priority (comp, &priority_value);
|
||||
|
||||
/* Classification. */
|
||||
cal_component_set_classification (comp, classification_get (priv->classification_public));
|
||||
|
||||
@ -658,26 +520,6 @@ task_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
if (dates->complete) {
|
||||
if (icaltime_is_null_time (*dates->complete)) {
|
||||
/* If the 'Completed Date' is set to 'None',
|
||||
we set the status to 'Not Started' and the
|
||||
percent-complete to 0. The task may
|
||||
actually be partially-complete, but we
|
||||
leave it to the user to set those
|
||||
fields. */
|
||||
e_dialog_option_menu_set (priv->status,
|
||||
ICAL_STATUS_NEEDSACTION,
|
||||
status_map);
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
} else {
|
||||
e_dialog_option_menu_set (priv->status,
|
||||
ICAL_STATUS_COMPLETED,
|
||||
status_map);
|
||||
e_dialog_spin_set (priv->percent_complete, 100);
|
||||
}
|
||||
}
|
||||
|
||||
priv->updating = FALSE;
|
||||
}
|
||||
@ -708,11 +550,6 @@ get_widgets (TaskPage *tpage)
|
||||
priv->due_timezone = GW ("due-timezone");
|
||||
priv->start_timezone = GW ("start-timezone");
|
||||
|
||||
priv->percent_complete = GW ("percent-complete");
|
||||
|
||||
priv->status = GW ("status");
|
||||
priv->priority = GW ("priority");
|
||||
|
||||
priv->description = GW ("description");
|
||||
|
||||
priv->classification_public = GW ("classification-public");
|
||||
@ -732,9 +569,6 @@ get_widgets (TaskPage *tpage)
|
||||
&& priv->start_date
|
||||
&& priv->due_timezone
|
||||
&& priv->start_timezone
|
||||
&& priv->percent_complete
|
||||
&& priv->status
|
||||
&& priv->priority
|
||||
&& priv->classification_public
|
||||
&& priv->classification_private
|
||||
&& priv->classification_confidential
|
||||
@ -845,98 +679,6 @@ field_changed_cb (GtkWidget *widget, gpointer data)
|
||||
comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tpage));
|
||||
}
|
||||
|
||||
static void
|
||||
complete_date_changed (TaskPage *tpage, gboolean complete)
|
||||
{
|
||||
TaskPagePrivate *priv;
|
||||
CompEditorPageDates dates;
|
||||
icaltimezone *zone;
|
||||
struct icaltimetype completed_tt = icaltime_null_time();
|
||||
|
||||
priv = tpage->priv;
|
||||
|
||||
/* Get the current time in UTC. */
|
||||
zone = icaltimezone_get_utc_timezone ();
|
||||
completed_tt = icaltime_from_timet_with_zone (time (NULL), FALSE, zone);
|
||||
completed_tt.is_utc = TRUE;
|
||||
|
||||
dates.start = NULL;
|
||||
dates.end = NULL;
|
||||
dates.due = NULL;
|
||||
dates.complete = &completed_tt;
|
||||
|
||||
/* Notify upstream */
|
||||
comp_editor_page_notify_dates_changed (COMP_EDITOR_PAGE (tpage),
|
||||
&dates);
|
||||
}
|
||||
|
||||
static void
|
||||
status_changed (GtkMenu *menu, TaskPage *tpage)
|
||||
{
|
||||
TaskPagePrivate *priv;
|
||||
icalproperty_status status;
|
||||
|
||||
priv = tpage->priv;
|
||||
|
||||
if (priv->updating)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
status = e_dialog_option_menu_get (priv->status, status_map);
|
||||
if (status == ICAL_STATUS_NEEDSACTION) {
|
||||
e_dialog_spin_set (priv->percent_complete, 0);
|
||||
complete_date_changed (tpage, FALSE);
|
||||
} else if (status == ICAL_STATUS_INPROCESS) {
|
||||
e_dialog_spin_set (priv->percent_complete, 50);
|
||||
complete_date_changed (tpage, FALSE);
|
||||
} else if (status == ICAL_STATUS_COMPLETED) {
|
||||
e_dialog_spin_set (priv->percent_complete, 100);
|
||||
complete_date_changed (tpage, TRUE);
|
||||
}
|
||||
|
||||
priv->updating = FALSE;
|
||||
|
||||
comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tpage));
|
||||
}
|
||||
|
||||
static void
|
||||
percent_complete_changed (GtkAdjustment *adj, TaskPage *tpage)
|
||||
{
|
||||
TaskPagePrivate *priv;
|
||||
gint percent;
|
||||
icalproperty_status status;
|
||||
gboolean complete;
|
||||
|
||||
priv = tpage->priv;
|
||||
|
||||
if (priv->updating)
|
||||
return;
|
||||
|
||||
priv->updating = TRUE;
|
||||
|
||||
percent = e_dialog_spin_get_int (priv->percent_complete);
|
||||
if (percent == 100) {
|
||||
complete = TRUE;
|
||||
status = ICAL_STATUS_COMPLETED;
|
||||
} else {
|
||||
complete = FALSE;
|
||||
|
||||
if (percent == 0)
|
||||
status = ICAL_STATUS_NEEDSACTION;
|
||||
else
|
||||
status = ICAL_STATUS_INPROCESS;
|
||||
}
|
||||
|
||||
e_dialog_option_menu_set (priv->status, status, status_map);
|
||||
complete_date_changed (tpage, complete);
|
||||
|
||||
priv->updating = FALSE;
|
||||
|
||||
comp_editor_page_notify_changed (COMP_EDITOR_PAGE (tpage));
|
||||
}
|
||||
|
||||
|
||||
/* Hooks the widget signals */
|
||||
static void
|
||||
init_widgets (TaskPage *tpage)
|
||||
@ -969,17 +711,6 @@ init_widgets (TaskPage *tpage)
|
||||
gtk_signal_connect (GTK_OBJECT (priv->start_timezone), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tpage);
|
||||
|
||||
/* Connect signals. The Status, Percent Complete & Date Completed
|
||||
properties are closely related so whenever one changes we may need
|
||||
to update the other 2. */
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->status)->menu),
|
||||
"deactivate",
|
||||
GTK_SIGNAL_FUNC (status_changed), tpage);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (priv->percent_complete)->adjustment),
|
||||
"value_changed",
|
||||
GTK_SIGNAL_FUNC (percent_complete_changed), tpage);
|
||||
|
||||
/* Classification */
|
||||
gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tpage);
|
||||
@ -995,9 +726,6 @@ init_widgets (TaskPage *tpage)
|
||||
|
||||
/* Connect the default signal handler to use to make sure the "changed"
|
||||
field gets set whenever a field is changed. */
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (priv->priority)->menu),
|
||||
"deactivate",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tpage);
|
||||
gtk_signal_connect (GTK_OBJECT (priv->description), "changed",
|
||||
GTK_SIGNAL_FUNC (field_changed_cb), tpage);
|
||||
gtk_signal_connect (GTK_OBJECT (priv->contacts), "changed",
|
||||
|
||||
@ -278,12 +278,10 @@
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkScrolledWindow</class>
|
||||
<name>scrolledwindow1</name>
|
||||
<hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
|
||||
<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
|
||||
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
@ -291,144 +289,42 @@
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkText</class>
|
||||
<name>description</name>
|
||||
<height>80</height>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text></text>
|
||||
<class>GtkLabel</class>
|
||||
<name>label18</name>
|
||||
<label>Description:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame23</name>
|
||||
<label>Progress</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<border_width>4</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>4</spacing>
|
||||
<class>GtkScrolledWindow</class>
|
||||
<name>scrolledwindow1</name>
|
||||
<hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
|
||||
<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
|
||||
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label7</name>
|
||||
<label>_Status:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<default_focus_target>status</default_focus_target>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>status</name>
|
||||
<class>GtkText</class>
|
||||
<name>description</name>
|
||||
<height>80</height>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Not Started
|
||||
In Progress
|
||||
Completed
|
||||
Cancelled
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label8</name>
|
||||
<label>_Priority:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<default_focus_target>priority</default_focus_target>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>priority</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>High
|
||||
Normal
|
||||
Low
|
||||
Undefined
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label9</name>
|
||||
<label>% Comp_lete:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<default_focus_target>percent-complete</default_focus_target>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>percent-complete</name>
|
||||
<width>60</width>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>False</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>0</value>
|
||||
<lower>0</lower>
|
||||
<upper>100</upper>
|
||||
<step>10</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
<editable>True</editable>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
Reference in New Issue
Block a user