aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2001-10-13 06:09:57 +0800
committerJP Rosevear <jpr@src.gnome.org>2001-10-13 06:09:57 +0800
commit1bd22eb65b2d1fa1cb8a589871337290c1cb258f (patch)
tree1fb6480c5a86900e4a3bcc34ac80964b9f471162
parent02c6e327892d45a00722a7f5e5d8c7ef62d3edf7 (diff)
downloadgsoc2013-evolution-1bd22eb65b2d1fa1cb8a589871337290c1cb258f.tar.gz
gsoc2013-evolution-1bd22eb65b2d1fa1cb8a589871337290c1cb258f.tar.zst
gsoc2013-evolution-1bd22eb65b2d1fa1cb8a589871337290c1cb258f.zip
return fill_component success
2001-10-12 JP Rosevear <jpr@ximian.com> * gui/dialogs/alarm-page.c: return fill_component success * gui/dialogs/task-page.c: ditto * gui/dialogs/task-details-page.c: ditto * gui/dialogs/schedule-page.c: ditto * gui/dialogs/recurrence-page.c: ditto * gui/dialogs/event-page.c: ditto * gui/dialogs/meeting-page.c: use e_notice instead of duplicate_error (meeting_page_get_cancel_comp): duh, deleted_attendees is an array now (meeting_page_fill_component): spew gui errors if there is no organizer or no attendees, return success * gui/dialogs/event-editor.c (event_editor_send_comp): always call parent method and don't send the cancellation comp if the method is publish (refresh_meeting_cmd): use the orginal comp to refresh (forward_cmd): prompt the user for the version they want to send (current, original) * gui/dialogs/task-editor.c (forward_cmd): as above (refresh_task_cmd): ditto * gui/dialogs/comp-editor-page.c (comp_editor_page_fill_component): return boolean of whether the component could be filled or not * gui/dialogs/comp-editor-page.h: update proto * gui/dialogs/comp-editor.c (prompt_to_save_changes): take a param on whether to try and send or not (comp_editor_get_current_comp): only fill component if its changed (comp_editor_save_comp): prompt user as well * gui/dialogs/comp-editor.h: change proto * gui/itip-utils.c: replace error_dialog with e_notice (comp_content_type): specify charset svn path=/trunk/; revision=13635
-rw-r--r--calendar/ChangeLog47
-rw-r--r--calendar/gui/dialogs/alarm-page.c10
-rw-r--r--calendar/gui/dialogs/comp-editor-page.c14
-rw-r--r--calendar/gui/dialogs/comp-editor-page.h6
-rw-r--r--calendar/gui/dialogs/comp-editor.c230
-rw-r--r--calendar/gui/dialogs/comp-editor.h3
-rw-r--r--calendar/gui/dialogs/event-editor.c19
-rw-r--r--calendar/gui/dialogs/event-page.c6
-rw-r--r--calendar/gui/dialogs/meeting-page.c36
-rw-r--r--calendar/gui/dialogs/recurrence-page.c11
-rw-r--r--calendar/gui/dialogs/schedule-page.c6
-rw-r--r--calendar/gui/dialogs/task-details-page.c6
-rw-r--r--calendar/gui/dialogs/task-editor.c5
-rw-r--r--calendar/gui/dialogs/task-page.c6
-rw-r--r--calendar/gui/itip-utils.c23
15 files changed, 252 insertions, 176 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index e49218709c..e479fff38f 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,50 @@
+2001-10-12 JP Rosevear <jpr@ximian.com>
+
+ * gui/dialogs/alarm-page.c: return fill_component success
+
+ * gui/dialogs/task-page.c: ditto
+
+ * gui/dialogs/task-details-page.c: ditto
+
+ * gui/dialogs/schedule-page.c: ditto
+
+ * gui/dialogs/recurrence-page.c: ditto
+
+ * gui/dialogs/event-page.c: ditto
+
+ * gui/dialogs/meeting-page.c: use e_notice instead of
+ duplicate_error
+ (meeting_page_get_cancel_comp): duh, deleted_attendees is an array
+ now
+ (meeting_page_fill_component): spew gui errors if there is no
+ organizer or no attendees, return success
+
+ * gui/dialogs/event-editor.c (event_editor_send_comp): always call
+ parent method and don't send the cancellation comp if the method
+ is publish
+ (refresh_meeting_cmd): use the orginal comp to refresh
+ (forward_cmd): prompt the user for the version they want to send
+ (current, original)
+
+ * gui/dialogs/task-editor.c (forward_cmd): as above
+ (refresh_task_cmd): ditto
+
+ * gui/dialogs/comp-editor-page.c
+ (comp_editor_page_fill_component): return boolean of whether the
+ component could be filled or not
+
+ * gui/dialogs/comp-editor-page.h: update proto
+
+ * gui/dialogs/comp-editor.c (prompt_to_save_changes): take a param
+ on whether to try and send or not
+ (comp_editor_get_current_comp): only fill component if its changed
+ (comp_editor_save_comp): prompt user as well
+
+ * gui/dialogs/comp-editor.h: change proto
+
+ * gui/itip-utils.c: replace error_dialog with e_notice
+ (comp_content_type): specify charset
+
2001-10-11 Larry Ewing <lewing@ximian.com>
* gui/e-itip-control.c: large reworking of i18n tagging and now
diff --git a/calendar/gui/dialogs/alarm-page.c b/calendar/gui/dialogs/alarm-page.c
index 649a86f025..0824f410c5 100644
--- a/calendar/gui/dialogs/alarm-page.c
+++ b/calendar/gui/dialogs/alarm-page.c
@@ -119,7 +119,7 @@ static void alarm_page_destroy (GtkObject *object);
static GtkWidget *alarm_page_get_widget (CompEditorPage *page);
static void alarm_page_focus_main_widget (CompEditorPage *page);
static void alarm_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void alarm_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean alarm_page_fill_component (CompEditorPage *page, CalComponent *comp);
static void alarm_page_set_summary (CompEditorPage *page, const char *summary);
static void alarm_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates);
@@ -359,9 +359,7 @@ get_alarm_string (CalComponentAlarm *alarm)
CalAlarmAction action;
CalAlarmTrigger trigger;
char string[256];
- char *base;
- char *str;
- char *dur;
+ char *base, *str = NULL, *dur;
string [0] = '\0';
@@ -536,7 +534,7 @@ alarm_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the alarm page */
-static void
+static gboolean
alarm_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
AlarmPage *apage;
@@ -576,6 +574,8 @@ alarm_page_fill_component (CompEditorPage *page, CalComponent *comp)
cal_component_add_alarm (comp, alarm_copy);
cal_component_alarm_free (alarm_copy);
}
+
+ return TRUE;
}
/* set_summary handler for the alarm page */
diff --git a/calendar/gui/dialogs/comp-editor-page.c b/calendar/gui/dialogs/comp-editor-page.c
index 27f4041d3a..9f006a9979 100644
--- a/calendar/gui/dialogs/comp-editor-page.c
+++ b/calendar/gui/dialogs/comp-editor-page.c
@@ -239,16 +239,20 @@ comp_editor_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
* Takes the data from the widgets of an editor page and sets it on a calendar
* component, replacing the contents of the properties that the editor page
* knows how to manipulate.
+ *
+ * Returns: TRUE if the component could be filled, FALSE otherwise
**/
-void
+gboolean
comp_editor_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
- g_return_if_fail (page != NULL);
- g_return_if_fail (IS_COMP_EDITOR_PAGE (page));
- g_return_if_fail (comp != NULL);
+ g_return_val_if_fail (page != NULL, FALSE);
+ g_return_val_if_fail (IS_COMP_EDITOR_PAGE (page), FALSE);
+ g_return_val_if_fail (comp != NULL, FALSE);
if (CLASS (page)->fill_component != NULL)
- (* CLASS (page)->fill_component) (page, comp);
+ return (* CLASS (page)->fill_component) (page, comp);
+
+ return TRUE;
}
/**
diff --git a/calendar/gui/dialogs/comp-editor-page.h b/calendar/gui/dialogs/comp-editor-page.h
index af8fe1f389..caf0486337 100644
--- a/calendar/gui/dialogs/comp-editor-page.h
+++ b/calendar/gui/dialogs/comp-editor-page.h
@@ -68,8 +68,8 @@ typedef struct {
GtkWidget *(* get_widget) (CompEditorPage *page);
void (* focus_main_widget) (CompEditorPage *page);
- void (* fill_widgets) (CompEditorPage *page, CalComponent *comp);
- void (* fill_component) (CompEditorPage *page, CalComponent *comp);
+ void (* fill_widgets) (CompEditorPage *page, CalComponent *comp);
+ gboolean (* fill_component) (CompEditorPage *page, CalComponent *comp);
void (* set_summary) (CompEditorPage *page, const char *summary);
void (* set_dates) (CompEditorPage *page, CompEditorPageDates *dates);
@@ -81,7 +81,7 @@ GtkWidget *comp_editor_page_get_widget (CompEditorPage *page);
void comp_editor_page_focus_main_widget (CompEditorPage *page);
void comp_editor_page_fill_widgets (CompEditorPage *page,
CalComponent *comp);
-void comp_editor_page_fill_component (CompEditorPage *page,
+gboolean comp_editor_page_fill_component (CompEditorPage *page,
CalComponent *comp);
void comp_editor_page_set_cal_client (CompEditorPage *page,
CalClient *client);
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 6a51cf75a3..b6d6e233db 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -79,8 +79,6 @@ static void comp_editor_destroy (GtkObject *object);
static void real_set_cal_client (CompEditor *editor, CalClient *client);
static void real_edit_comp (CompEditor *editor, CalComponent *comp);
static void real_send_comp (CompEditor *editor, CalComponentItipMethod method);
-static void save_comp (CompEditor *editor);
-static void save_comp_with_send (CompEditor *editor);
static void delete_comp (CompEditor *editor);
static void close_dialog (CompEditor *editor);
@@ -273,6 +271,117 @@ comp_editor_destroy (GtkObject *object)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
+
+static gboolean
+save_comp (CompEditor *editor)
+{
+ CompEditorPrivate *priv;
+ CalComponent *clone;
+ GList *l;
+
+ priv = editor->priv;
+
+ if (!priv->changed)
+ return TRUE;
+
+ clone = cal_component_clone (priv->comp);
+ for (l = priv->pages; l != NULL; l = l->next) {
+ if (!comp_editor_page_fill_component (l->data, clone)) {
+ gtk_object_unref (GTK_OBJECT (clone));
+ return FALSE;
+ }
+ }
+ cal_component_commit_sequence (clone);
+ gtk_object_unref (GTK_OBJECT (priv->comp));
+ priv->comp = clone;
+
+ priv->updating = TRUE;
+
+ if (!cal_client_update_object (priv->client, priv->comp)) {
+ g_message ("save_comp (): Could not update the object!");
+ return FALSE;
+ } else {
+ priv->changed = FALSE;
+ }
+
+ priv->updating = FALSE;
+
+ return TRUE;
+}
+
+static gboolean
+save_comp_with_send (CompEditor *editor)
+{
+ CompEditorPrivate *priv;
+ gboolean send;
+
+ priv = editor->priv;
+
+ send = priv->changed && priv->needs_send;
+
+ if (!save_comp (editor))
+ return FALSE;
+
+ if (send && send_component_dialog (priv->comp))
+ comp_editor_send_comp (editor, CAL_COMPONENT_METHOD_REQUEST);
+
+ return TRUE;
+}
+
+static void
+delete_comp (CompEditor *editor)
+{
+ CompEditorPrivate *priv;
+ const char *uid;
+
+ priv = editor->priv;
+
+ cal_component_get_uid (priv->comp, &uid);
+ priv->updating = TRUE;
+ cal_client_remove_object (priv->client, uid);
+ priv->updating = FALSE;
+ close_dialog (editor);
+}
+
+static gboolean
+prompt_to_save_changes (CompEditor *editor, gboolean send)
+{
+ CompEditorPrivate *priv;
+
+ priv = editor->priv;
+
+ if (!priv->changed)
+ return TRUE;
+
+ switch (save_component_dialog (GTK_WINDOW (priv->window))) {
+ case 0: /* Save */
+ if (send && save_comp_with_send (editor))
+ return TRUE;
+ else if (!send && save_comp (editor))
+ return TRUE;
+ else
+ return FALSE;
+ case 1: /* Discard */
+ return TRUE;
+ case 2: /* Cancel */
+ default:
+ return FALSE;
+ }
+}
+
+/* Closes the dialog box and emits the appropriate signals */
+static void
+close_dialog (CompEditor *editor)
+{
+ CompEditorPrivate *priv;
+
+ priv = editor->priv;
+
+ g_assert (priv->window != NULL);
+
+ gtk_object_destroy (GTK_OBJECT (editor));
+}
+
/**
@@ -676,18 +785,20 @@ comp_editor_edit_comp (CompEditor *editor, CalComponent *comp)
CalComponent *
comp_editor_get_current_comp (CompEditor *editor)
{
- CompEditorPrivate *priv;
+ CompEditorPrivate *priv;
CalComponent *comp;
GList *l;
-
+
g_return_val_if_fail (editor != NULL, NULL);
g_return_val_if_fail (IS_COMP_EDITOR (editor), NULL);
priv = editor->priv;
comp = cal_component_clone (priv->comp);
- for (l = priv->pages; l != NULL; l = l->next)
- comp_editor_page_fill_component (l->data, comp);
+ if (priv->changed) {
+ for (l = priv->pages; l != NULL; l = l->next)
+ comp_editor_page_fill_component (l->data, comp);
+ }
return comp;
}
@@ -698,10 +809,10 @@ comp_editor_get_current_comp (CompEditor *editor)
*
*
**/
-void
-comp_editor_save_comp (CompEditor *editor)
+gboolean
+comp_editor_save_comp (CompEditor *editor, gboolean send)
{
- save_comp (editor);
+ return prompt_to_save_changes (editor, send);
}
/**
@@ -823,99 +934,6 @@ comp_editor_focus (CompEditor *editor)
raise_and_focus (priv->window);
}
-static void
-save_comp (CompEditor *editor)
-{
- CompEditorPrivate *priv;
- GList *l;
-
- priv = editor->priv;
-
- if (!priv->changed)
- return;
-
- for (l = priv->pages; l != NULL; l = l->next)
- comp_editor_page_fill_component (l->data, priv->comp);
- cal_component_commit_sequence (priv->comp);
-
- priv->updating = TRUE;
-
- if (!cal_client_update_object (priv->client, priv->comp))
- g_message ("save_comp (): Could not update the object!");
- else
- priv->changed = FALSE;
-
- priv->updating = FALSE;
-}
-
-static void
-save_comp_with_send (CompEditor *editor)
-{
- CompEditorPrivate *priv;
- gboolean send;
-
- priv = editor->priv;
-
- send = priv->changed && priv->needs_send;
-
- save_comp (editor);
-
- if (send && send_component_dialog (priv->comp))
- comp_editor_send_comp (editor, CAL_COMPONENT_METHOD_REQUEST);
-}
-
-static void
-delete_comp (CompEditor *editor)
-{
- CompEditorPrivate *priv;
- const char *uid;
-
- priv = editor->priv;
-
- cal_component_get_uid (priv->comp, &uid);
- priv->updating = TRUE;
- cal_client_remove_object (priv->client, uid);
- priv->updating = FALSE;
- close_dialog (editor);
-}
-
-static gboolean
-prompt_to_save_changes (CompEditor *editor)
-{
- CompEditorPrivate *priv;
-
- priv = editor->priv;
-
- if (!priv->changed)
- return TRUE;
-
- switch (save_component_dialog (GTK_WINDOW (priv->window))) {
- case 0: /* Save */
- /* FIXME: If an error occurs here, we should popup a dialog
- and then return FALSE. */
- save_comp_with_send (editor);
- return TRUE;
- case 1: /* Discard */
- return TRUE;
- case 2: /* Cancel */
- default:
- return FALSE;
- }
-}
-
-/* Closes the dialog box and emits the appropriate signals */
-static void
-close_dialog (CompEditor *editor)
-{
- CompEditorPrivate *priv;
-
- priv = editor->priv;
-
- g_assert (priv->window != NULL);
-
- gtk_object_destroy (GTK_OBJECT (editor));
-}
-
/* Menu Commands */
static void
save_cmd (GtkWidget *widget, gpointer data)
@@ -930,8 +948,8 @@ save_close_cmd (GtkWidget *widget, gpointer data)
{
CompEditor *editor = COMP_EDITOR (data);
- save_comp_with_send (editor);
- close_dialog (editor);
+ if (save_comp_with_send (editor))
+ close_dialog (editor);
}
static void
@@ -1090,7 +1108,7 @@ close_cmd (GtkWidget *widget, gpointer data)
{
CompEditor *editor = COMP_EDITOR (data);
- if (prompt_to_save_changes (editor))
+ if (prompt_to_save_changes (editor, TRUE))
close_dialog (editor);
}
@@ -1200,7 +1218,7 @@ delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
{
CompEditor *editor = COMP_EDITOR (data);
- if (prompt_to_save_changes (editor))
+ if (prompt_to_save_changes (editor, TRUE))
close_dialog (editor);
return TRUE;
diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h
index f19ac706b6..d03f67ac9b 100644
--- a/calendar/gui/dialogs/comp-editor.h
+++ b/calendar/gui/dialogs/comp-editor.h
@@ -77,7 +77,8 @@ CalClient *comp_editor_get_cal_client (CompEditor *editor);
void comp_editor_edit_comp (CompEditor *ee,
CalComponent *comp);
CalComponent *comp_editor_get_current_comp (CompEditor *editor);
-void comp_editor_save_comp (CompEditor *editor);
+gboolean comp_editor_save_comp (CompEditor *editor,
+ gboolean send);
void comp_editor_delete_comp (CompEditor *editor);
void comp_editor_send_comp (CompEditor *editor,
CalComponentItipMethod method);
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index f464015fb0..435cfeefb5 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -286,16 +286,18 @@ event_editor_send_comp (CompEditor *editor, CalComponentItipMethod method)
priv = ee->priv;
- /* Don't cancel more than once */
- if (method == CAL_COMPONENT_METHOD_CANCEL)
- return;
+ /* Don't cancel more than once or when just publishing */
+ if (method == CAL_COMPONENT_METHOD_PUBLISH ||
+ method == CAL_COMPONENT_METHOD_CANCEL)
+ goto parent;
comp = meeting_page_get_cancel_comp (priv->meet_page);
if (comp != NULL) {
itip_send_comp (CAL_COMPONENT_METHOD_CANCEL, comp);
gtk_object_unref (GTK_OBJECT (comp));
}
-
+
+ parent:
if (parent_class->send_comp)
parent_class->send_comp (editor, method);
}
@@ -369,8 +371,7 @@ static void
refresh_meeting_cmd (GtkWidget *widget, gpointer data)
{
EventEditor *ee = EVENT_EDITOR (data);
-
- comp_editor_save_comp (COMP_EDITOR (ee));
+
comp_editor_send_comp (COMP_EDITOR (ee), CAL_COMPONENT_METHOD_REFRESH);
}
@@ -391,9 +392,9 @@ static void
forward_cmd (GtkWidget *widget, gpointer data)
{
EventEditor *ee = EVENT_EDITOR (data);
-
- comp_editor_save_comp (COMP_EDITOR (ee));
- comp_editor_send_comp (COMP_EDITOR (ee), CAL_COMPONENT_METHOD_PUBLISH);
+
+ if (comp_editor_save_comp (COMP_EDITOR (ee), TRUE))
+ comp_editor_send_comp (COMP_EDITOR (ee), CAL_COMPONENT_METHOD_PUBLISH);
}
static void
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 8a1415b9d2..c57a849a24 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -96,7 +96,7 @@ static void event_page_destroy (GtkObject *object);
static GtkWidget *event_page_get_widget (CompEditorPage *page);
static void event_page_focus_main_widget (CompEditorPage *page);
static void event_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void event_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean event_page_fill_component (CompEditorPage *page, CalComponent *comp);
static void event_page_set_summary (CompEditorPage *page, const char *summary);
static void event_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates);
@@ -550,7 +550,7 @@ event_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the event page */
-static void
+static gboolean
event_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
EventPage *epage;
@@ -684,6 +684,8 @@ event_page_fill_component (CompEditorPage *page, CalComponent *comp)
/* Contacts */
comp_editor_contacts_to_component (priv->contacts_entry, comp);
+
+ return TRUE;
}
/* set_summary handler for the event page */
diff --git a/calendar/gui/dialogs/meeting-page.c b/calendar/gui/dialogs/meeting-page.c
index 22c8f6e05a..bef302cb9f 100644
--- a/calendar/gui/dialogs/meeting-page.c
+++ b/calendar/gui/dialogs/meeting-page.c
@@ -37,9 +37,8 @@
#include <gtk/gtkwindow.h>
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-stock.h>
-#include <libgnomeui/gnome-dialog-util.h>
#include <glade/glade.h>
+#include <libgnomeui/gnome-stock.h>
#include <gal/e-table/e-cell-combo.h>
#include <gal/e-table/e-cell-text.h>
#include <gal/e-table/e-table-simple.h>
@@ -128,7 +127,7 @@ static void meeting_page_destroy (GtkObject *object);
static GtkWidget *meeting_page_get_widget (CompEditorPage *page);
static void meeting_page_focus_main_widget (CompEditorPage *page);
static void meeting_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void meeting_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean meeting_page_fill_component (CompEditorPage *page, CalComponent *comp);
static gint right_click_cb (ETable *etable, gint row, gint col, GdkEvent *event, gpointer data);
@@ -409,13 +408,13 @@ meeting_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the meeting page */
-static void
+static gboolean
meeting_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
MeetingPage *mpage;
MeetingPagePrivate *priv;
CalComponentOrganizer organizer = {NULL, NULL, NULL, NULL};
-
+
mpage = MEETING_PAGE (page);
priv = mpage->priv;
@@ -438,10 +437,12 @@ meeting_page_fill_component (CompEditorPage *page, CalComponent *comp)
g_free (str);
}
- if (addr == NULL || strlen (addr) == 0) {
+ if (addr == NULL || strlen (addr) == 0) {
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("An organizer is required."));
g_free (addr);
- g_free (cn);
- return;
+ g_free (cn);
+ return FALSE;
} else {
gchar *tmp;
@@ -457,7 +458,14 @@ meeting_page_fill_component (CompEditorPage *page, CalComponent *comp)
g_free (cn);
}
+ if (e_meeting_model_count_attendees (priv->model) < 1) {
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ "Atleast one attendee is required.");
+ return FALSE;
+ }
set_attendees (comp, e_meeting_model_get_attendees (priv->model));
+
+ return TRUE;
}
@@ -505,13 +513,6 @@ get_widgets (MeetingPage *mpage)
}
static void
-duplicate_error (void)
-{
- GtkWidget *dlg = gnome_error_dialog (_("That person is already attending the meeting!"));
- gnome_dialog_run_and_close (GNOME_DIALOG (dlg));
-}
-
-static void
invite_entry_changed (BonoboListener *listener,
char *event_name,
CORBA_any *arg,
@@ -760,7 +761,8 @@ popup_delegate_cb (GtkWidget *widget, gpointer data)
/* Make sure we can add the new delegatee person */
if (e_meeting_model_find_attendee (priv->model, address, NULL) != NULL) {
- duplicate_error ();
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("That person is already attending the meeting!"));
goto cleanup;
}
@@ -963,7 +965,7 @@ meeting_page_get_cancel_comp (MeetingPage *mpage)
priv = mpage->priv;
- if (priv->deleted_attendees == NULL)
+ if (priv->deleted_attendees->len == 0)
return NULL;
set_attendees (priv->comp, priv->deleted_attendees);
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index ddd37fa3b2..28858bd950 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -33,8 +33,9 @@
#include <libgnome/gnome-i18n.h>
#include <glade/glade.h>
#include <gal/widgets/e-unicode.h>
-#include "e-util/e-dialog-widgets.h"
-#include "widgets/misc/e-dateedit.h"
+#include <e-util/e-dialog-widgets.h>
+#include <e-util/e-time-utils.h>
+#include <widgets/misc/e-dateedit.h>
#include <cal-util/timeutil.h>
#include "../calendar-config.h"
#include "../tag-calendar.h"
@@ -173,7 +174,7 @@ static void recurrence_page_destroy (GtkObject *object);
static GtkWidget *recurrence_page_get_widget (CompEditorPage *page);
static void recurrence_page_focus_main_widget (CompEditorPage *page);
static void recurrence_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void recurrence_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean recurrence_page_fill_component (CompEditorPage *page, CalComponent *comp);
static void recurrence_page_set_summary (CompEditorPage *page, const char *summary);
static void recurrence_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates);
@@ -1712,13 +1713,15 @@ recurrence_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the recurrence page */
-static void
+static gboolean
recurrence_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
RecurrencePage *rpage;
rpage = RECURRENCE_PAGE (page);
fill_component (rpage, comp);
+
+ return TRUE;
}
/* set_summary handler for the recurrence page */
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index 37d94c76b7..510bd3070b 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -85,7 +85,7 @@ static void schedule_page_destroy (GtkObject *object);
static GtkWidget *schedule_page_get_widget (CompEditorPage *page);
static void schedule_page_focus_main_widget (CompEditorPage *page);
static void schedule_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void schedule_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean schedule_page_fill_component (CompEditorPage *page, CalComponent *comp);
static CompEditorPageClass *parent_class = NULL;
@@ -245,7 +245,7 @@ schedule_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the schedule page */
-static void
+static gboolean
schedule_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
SchedulePage *spage;
@@ -253,6 +253,8 @@ schedule_page_fill_component (CompEditorPage *page, CalComponent *comp)
spage = SCHEDULE_PAGE (page);
priv = spage->priv;
+
+ return TRUE;
}
diff --git a/calendar/gui/dialogs/task-details-page.c b/calendar/gui/dialogs/task-details-page.c
index 3196994bd1..1128d54deb 100644
--- a/calendar/gui/dialogs/task-details-page.c
+++ b/calendar/gui/dialogs/task-details-page.c
@@ -91,7 +91,7 @@ static void task_details_page_destroy (GtkObject *object);
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 gboolean task_details_page_fill_component (CompEditorPage *page, CalComponent *comp);
static CompEditorPageClass *parent_class = NULL;
@@ -374,7 +374,7 @@ task_details_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the task page */
-static void
+static gboolean
task_details_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
TaskDetailsPage *tdpage;
@@ -436,6 +436,8 @@ task_details_page_fill_component (CompEditorPage *page, CalComponent *comp)
cal_component_set_url (comp, url);
if (url)
g_free (url);
+
+ return TRUE;
}
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
index 774a9cc1c3..03c4f87a54 100644
--- a/calendar/gui/dialogs/task-editor.c
+++ b/calendar/gui/dialogs/task-editor.c
@@ -306,7 +306,6 @@ 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);
}
@@ -328,8 +327,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);
+ if (comp_editor_save_comp (COMP_EDITOR (te), TRUE))
+ comp_editor_send_comp (COMP_EDITOR (te), CAL_COMPONENT_METHOD_PUBLISH);
}
static void
diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c
index 2c3f8d18ec..dd2b3839cc 100644
--- a/calendar/gui/dialogs/task-page.c
+++ b/calendar/gui/dialogs/task-page.c
@@ -96,7 +96,7 @@ static void task_page_destroy (GtkObject *object);
static GtkWidget *task_page_get_widget (CompEditorPage *page);
static void task_page_focus_main_widget (CompEditorPage *page);
static void task_page_fill_widgets (CompEditorPage *page, CalComponent *comp);
-static void task_page_fill_component (CompEditorPage *page, CalComponent *comp);
+static gboolean task_page_fill_component (CompEditorPage *page, CalComponent *comp);
static void task_page_set_summary (CompEditorPage *page, const char *summary);
static void task_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates);
@@ -455,7 +455,7 @@ task_page_fill_widgets (CompEditorPage *page, CalComponent *comp)
}
/* fill_component handler for the task page */
-static void
+static gboolean
task_page_fill_component (CompEditorPage *page, CalComponent *comp)
{
TaskPage *tpage;
@@ -565,6 +565,8 @@ task_page_fill_component (CompEditorPage *page, CalComponent *comp)
/* Contacts */
comp_editor_contacts_to_component (priv->contacts_entry, comp);
+
+ return TRUE;
}
/* set_summary handler for the task page */
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 9180fbc400..356690855a 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -32,9 +32,8 @@
#include <bonobo-conf/bonobo-config-database.h>
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-dialog.h>
-#include <libgnomeui/gnome-dialog-util.h>
#include <gtk/gtkwidget.h>
+#include <gal/widgets/e-gui-utils.h>
#include <gal/util/e-util.h>
#include <e-util/e-unicode-i18n.h>
#include <ical.h>
@@ -69,15 +68,6 @@ static icalproperty_method itip_methods_enum[] = {
ICAL_METHOD_DECLINECOUNTER,
};
-static void
-error_dialog (gchar *str)
-{
- GtkWidget *dlg;
-
- dlg = gnome_error_dialog (str);
- gnome_dialog_run_and_close (GNOME_DIALOG (dlg));
-}
-
static Bonobo_ConfigDatabase db = NULL;
static ItipAddress *
@@ -250,7 +240,8 @@ comp_to_list (CalComponentItipMethod method, CalComponent *comp)
cal_component_get_attendee_list (comp, &attendees);
len = g_slist_length (attendees);
if (len <= 0) {
- error_dialog (_("Atleast one attendee is necessary"));
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("Atleast one attendee is necessary"));
cal_component_free_attendee_list (attendees);
return NULL;
}
@@ -280,7 +271,8 @@ comp_to_list (CalComponentItipMethod method, CalComponent *comp)
case CAL_COMPONENT_METHOD_DECLINECOUNTER:
cal_component_get_organizer (comp, &organizer);
if (organizer.value == NULL) {
- error_dialog (_("An organizer must be set."));
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("An organizer must be set."));
return NULL;
}
@@ -336,7 +328,7 @@ comp_content_type (CalComponentItipMethod method)
{
char tmp[256];
- sprintf (tmp, "text/calendar;METHOD=%s", itip_methods[method]);
+ sprintf (tmp, "text/calendar; charset=utf-8; METHOD=%s", itip_methods[method]);
return CORBA_string_dup (tmp);
}
@@ -575,7 +567,8 @@ comp_minimal (CalComponent *comp, gboolean attendee)
cal_component_set_attendee_list (clone, attendees);
if (!comp_limit_attendees (clone)) {
- error_dialog ("You are not an attendee!");
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("You must be an attendee of the event."));
goto error;
}
}