aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'calendar')
-rw-r--r--calendar/gui/gnome-cal.c417
-rw-r--r--calendar/gui/gnome-cal.h8
2 files changed, 0 insertions, 425 deletions
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index c1b321f781..987d3dad9c 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -78,10 +78,6 @@ struct _GnomeCalendarPrivate {
ECalModel *model;
- /* The clients for display */
- GHashTable *clients;
- ECal *default_client;
-
/*
* Fields for the calendar view
*/
@@ -165,8 +161,6 @@ static gboolean gnome_calendar_hpane_resized (GtkWidget *w, GdkEventButton *e, G
static void update_todo_view (GnomeCalendar *gcal);
static void update_memo_view (GnomeCalendar *gcal);
-static void default_client_cal_opened_cb (ECal *ecal, ECalendarStatus status, GnomeCalendar *gcal);
-static void client_cal_opened_cb (ECal *ecal, ECalendarStatus status, GnomeCalendar *gcal);
/* Simple asynchronous message dispatcher */
typedef struct _Message Message;
@@ -1365,8 +1359,6 @@ gnome_calendar_init (GnomeCalendar *gcal)
priv = g_new0 (GnomeCalendarPrivate, 1);
gcal->priv = priv;
- priv->clients = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-
if (non_intrusive_error_table == NULL)
non_intrusive_error_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
@@ -1420,18 +1412,6 @@ gnome_calendar_destroy (GtkObject *object)
priv->model = NULL;
}
- g_hash_table_destroy (priv->clients);
-
- priv->clients = NULL;
-
- if (priv->default_client) {
- g_signal_handlers_disconnect_matched (priv->default_client,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, gcal);
- g_object_unref (priv->default_client);
- }
- priv->default_client = NULL;
-
for (l = priv->notifications; l; l = l->next)
calendar_config_remove_notification (GPOINTER_TO_UINT (l->data));
g_list_free (priv->notifications);
@@ -1820,299 +1800,12 @@ gnome_calendar_display_view (GnomeCalendar *gcal,
}
-struct _mclient_msg {
- Message header;
- ECalModel *model;
- ECal *client;
-};
-
-static void
-add_mclient_async (struct _mclient_msg *msg)
-{
- e_cal_model_add_client (msg->model, msg->client);
-
- g_object_unref (msg->client);
- g_object_unref (msg->model);
- g_slice_free (struct _mclient_msg, msg);
-}
-
-static void
-add_mclient (ECalModel *model, ECal *client)
-{
- struct _mclient_msg *msg;
-
- msg = g_slice_new0 (struct _mclient_msg);
- msg->header.func = (MessageFunc) add_mclient_async;
- msg->model = g_object_ref (model);
- msg->client = g_object_ref (client);
-
- message_push ((Message *) msg);
-}
-
static void
non_intrusive_error_remove(GtkWidget *w, gpointer data)
{
g_hash_table_remove(non_intrusive_error_table, data);
}
-static void
-client_cal_opened_cb (ECal *ecal, ECalendarStatus status, GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- ESource *source;
- ECalModel *model;
- ECalLoadState state;
- gchar *msg;
- GtkWidget *w = NULL;
- gpointer parent;
- gchar *id;
-
- priv = gcal->priv;
-
- parent = gtk_widget_get_toplevel (GTK_WIDGET (gcal));
- parent = gtk_widget_is_toplevel (parent) ? parent : NULL;
-
- source = e_cal_get_source (ecal);
- state = e_cal_get_load_state (ecal);
-
- if (status == E_CALENDAR_STATUS_AUTHENTICATION_FAILED || status == E_CALENDAR_STATUS_AUTHENTICATION_REQUIRED)
- e_auth_cal_forget_password (ecal);
-
- switch (status) {
- case E_CALENDAR_STATUS_OK:
- break;
- case E_CALENDAR_STATUS_BUSY:
- if (state == E_CAL_LOAD_NOT_LOADED)
- e_cal_open_async (ecal, FALSE);
- else
- gcal_update_status_message (gcal, NULL, -1);
- return;
- case E_CALENDAR_STATUS_INVALID_SERVER_VERSION:
- id = g_strdup ("calendar:server-version");
-
- if (g_hash_table_lookup(non_intrusive_error_table, id)) {
- /* We already have it */
- g_message("Error occurred while existing dialog active:\n");
- gcal_update_status_message (gcal, NULL, -1);
- return;
- }
-
- w = e_alert_dialog_new_for_args (parent, "calendar:server-version", NULL);
- /*e_calendar_utils_show_error_silent (w); KILL-BONOBO */
- g_hash_table_insert (non_intrusive_error_table, id, g_object_ref(w));
- g_signal_connect(w, "destroy", G_CALLBACK(non_intrusive_error_remove), id);
-
- break;
- case E_CALENDAR_STATUS_AUTHENTICATION_FAILED:
- /* try to reopen calendar - it'll ask for a password once again */
- e_cal_open_async (ecal, FALSE);
- return;
- case E_CALENDAR_STATUS_REPOSITORY_OFFLINE:
- /* check to see if we have dialog already running for this operation */
- id = g_strdup ("calendar:unable-to-load-the-calendar");
-
- if (g_hash_table_lookup(non_intrusive_error_table, id)) {
- /* We already have it */
- g_message("Error occurred while existing dialog active:\n");
- gcal_update_status_message (gcal, NULL, -1);
- return;
- }
-
- w = e_alert_dialog_new_for_args (parent, "calendar:unable-to-load-the-calendar", e_cal_get_error_message (status), NULL);
- /*e_calendar_utils_show_error_silent (w); KILL-BONOBO */
- g_hash_table_insert (non_intrusive_error_table, id, g_object_ref(w));
- g_signal_connect(w, "destroy", G_CALLBACK(non_intrusive_error_remove), id);
- default:
- /* Make sure the source doesn't disappear on us */
- g_object_ref (source);
-
- g_hash_table_remove (priv->clients, e_source_peek_uid (source));
-
- g_signal_emit (gcal, signals[SOURCE_REMOVED], 0, source);
- g_object_unref (source);
-
- g_warning ("Unable to load the calendar %s \n", e_cal_get_error_message (status));
- gcal_update_status_message (gcal, NULL, -1);
-
- return;
- }
-
- g_signal_handlers_disconnect_matched (ecal, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, client_cal_opened_cb, NULL);
-
- msg = g_strdup_printf (_("Loading appointments at %s"), e_cal_get_uri (ecal));
- gcal_update_status_message (gcal, msg, -1);
- g_free (msg);
-
- /* add client to the views */
- model = gnome_calendar_get_model (gcal);
- add_mclient (model, ecal);
-
- /* update date navigator query */
- gnome_calendar_update_query (gcal);
-
- gcal_update_status_message (gcal, NULL, -1);
-}
-
-static void
-default_client_cal_opened_cb (ECal *ecal, ECalendarStatus status, GnomeCalendar *gcal)
-{
- GnomeCalendarPrivate *priv;
- ESource *source;
- ECalLoadState state;
- ECalModel *model;
-
- priv = gcal->priv;
-
- source = e_cal_get_source (ecal);
- state = e_cal_get_load_state (ecal);
-
- if (status == E_CALENDAR_STATUS_AUTHENTICATION_FAILED || status == E_CALENDAR_STATUS_AUTHENTICATION_REQUIRED)
- e_auth_cal_forget_password (ecal);
-
- switch (status) {
- case E_CALENDAR_STATUS_OK:
- break;
- case E_CALENDAR_STATUS_BUSY:
- if (state == E_CAL_LOAD_NOT_LOADED)
- e_cal_open_async (ecal, FALSE);
- else
- gcal_update_status_message (gcal, NULL, -1.0);
- return;
- case E_CALENDAR_STATUS_AUTHENTICATION_FAILED:
- /* try to reopen calendar - it'll ask for a password once again */
- e_cal_open_async (ecal, FALSE);
- return;
- case E_CALENDAR_STATUS_INVALID_SERVER_VERSION:
- e_alert_run_dialog_for_args (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (gcal))), "calendar:server-version", NULL);
- default:
- /* Make sure the source doesn't disappear on us */
- g_object_ref (source);
-
- g_signal_handlers_disconnect_matched (ecal, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, gcal);
-
- /* FIXME should we do this to prevent multiple error dialogs? */
- g_hash_table_remove (priv->clients, e_source_peek_uid (source));
-
- /* FIXME Is there a better way to handle this? */
- if (priv->default_client)
- g_object_unref (priv->default_client);
- priv->default_client = NULL;
-
- g_signal_emit (gcal, signals[SOURCE_REMOVED], 0, source);
- g_object_unref (source);
-
- g_warning ("Unable to load the calendar %s \n", e_cal_get_error_message (status));
- gcal_update_status_message (gcal, NULL, -1.0);
-
- return;
- }
-
- g_signal_handlers_disconnect_matched (ecal, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, default_client_cal_opened_cb, NULL);
-
- model = gnome_calendar_get_model (gcal);
- e_cal_model_set_default_client (model, ecal);
- gcal_update_status_message (gcal, NULL, -1.0);
-}
-
-typedef void (*open_func) (ECal *, ECalendarStatus, GnomeCalendar *);
-
-static gboolean
-open_ecal (GnomeCalendar *gcal, ECal *cal, gboolean only_if_exists, open_func of)
-{
- gchar *msg;
- icaltimezone *zone;
-
- zone = calendar_config_get_icaltimezone ();
- e_cal_set_default_timezone (cal, zone, NULL);
-
- msg = g_strdup_printf (_("Opening %s"), e_cal_get_uri (cal));
- gcal_update_status_message (gcal, msg, -1.0);
-
- g_free (msg);
-
- g_signal_connect (G_OBJECT (cal), "cal_opened", G_CALLBACK (of), gcal);
- e_cal_open_async (cal, only_if_exists);
-
- return TRUE;
-}
-
-/* Callback when we get an error message from the backend */
-static void
-backend_error_cb (ECal *client, const gchar *message, gpointer data)
-{
- GnomeCalendar *gcal;
- GtkDialog *dialog;
- gpointer parent;
- gchar *uristr;
- gchar *id;
-
- gcal = GNOME_CALENDAR (data);
-
- parent = gtk_widget_get_toplevel (GTK_WIDGET (gcal));
- parent = gtk_widget_is_toplevel (parent) ? parent : NULL;
-
- uristr = get_uri_without_password (e_cal_get_uri (client));
- id = g_strdup ("calendar:error-on-loading-the-calendar");
-
- if (g_hash_table_lookup(non_intrusive_error_table,id)) {
- /* We already have it */
- g_message("Error occurred while existing dialog active:\n");
- return;
- }
-
- dialog = (GtkDialog *)e_alert_new(parent, "calendar:error-on-loading-the-calendar", uristr, message, NULL);
- /* e_calendar_utils_show_error_silent(GTK_WIDGET (dialog)); KILL-BONOBO */
-
- g_hash_table_insert (non_intrusive_error_table, id, g_object_ref(dialog));
- g_signal_connect(GTK_WIDGET (dialog), "destroy", G_CALLBACK(non_intrusive_error_remove), id);
-
- g_free (uristr);
-}
-
-/* Callback when the backend dies */
-static void
-backend_died_cb (ECal *ecal, gpointer data)
-{
- GnomeCalendar *gcal;
- GnomeCalendarPrivate *priv;
- ESource *source;
- gpointer parent;
- const gchar *id;
- GtkWidget *w = NULL;
-
- gcal = GNOME_CALENDAR (data);
- priv = gcal->priv;
-
- parent = gtk_widget_get_toplevel (GTK_WIDGET (gcal));
- parent = gtk_widget_is_toplevel (parent) ? parent : NULL;
-
- /* FIXME What about default sources? */
-
- /* Make sure the source doesn't go away on us since we use it below */
- source = g_object_ref (e_cal_get_source (ecal));
-
- g_hash_table_remove (priv->clients, e_source_peek_uid (source));
-
- id = g_strdup ("calendar:calendar-crashed");
-
- gcal_update_status_message (gcal, NULL, -1);
-
- g_signal_emit (gcal, signals[SOURCE_REMOVED], 0, source);
-
- g_object_unref (source);
-
- if (g_hash_table_lookup(non_intrusive_error_table,id)) {
- /* We already have it */
- g_message("Error occurred while existing dialog active:\n");
- return;
- }
-
- w = e_alert_dialog_new_for_args (parent, "calendar:backend_died", NULL);
- /* e_calendar_utils_show_error_silent (w); KILL-BONOBO */
- g_hash_table_insert (non_intrusive_error_table, (gpointer) id, g_object_ref(w));
- g_signal_connect((GtkObject *)w, "destroy", G_CALLBACK(non_intrusive_error_remove), (gpointer) id);
-}
-
GtkWidget *
gnome_calendar_new (EShellSettings *shell_settings)
{
@@ -2177,116 +1870,6 @@ gnome_calendar_get_model (GnomeCalendar *gcal)
return gcal->priv->model;
}
-/**
- * gnome_calendar_remove_source
- * @gcal: A #GnomeCalendar.
- * @source: #ESource to be removed from the clients.
- *
- * Removes the given source from the list of clients being shown by the
- * calendar views.
- *
- * Returns: TRUE if successful, FALSE otherwise.
- */
-gboolean
-gnome_calendar_remove_source (GnomeCalendar *gcal, ESource *source)
-{
- gboolean result;
-
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), FALSE);
- g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
-
- result = gnome_calendar_remove_source_by_uid (gcal, e_source_peek_uid (source));
- if (result)
- g_signal_emit (gcal, signals[SOURCE_REMOVED], 0, source);
-
- return result;
-}
-
-gboolean
-gnome_calendar_remove_source_by_uid (GnomeCalendar *gcal, const gchar *uid)
-{
- GnomeCalendarPrivate *priv;
- ECal *client;
- ECalModel *model;
- GList *l;
-
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), FALSE);
- g_return_val_if_fail (uid != NULL, FALSE);
-
- priv = gcal->priv;
-
- client = g_hash_table_lookup (priv->clients, uid);
- if (!client)
- return TRUE;
-
- g_signal_handlers_disconnect_matched (client, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, gcal);
-
- /* remove the query for this client */
- for (l = priv->dn_queries; l != NULL; l = l->next) {
- ECalView *query = l->data;
-
- if (query && (client == e_cal_view_get_client (query))) {
- g_signal_handlers_disconnect_matched (query, G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, gcal);
- priv->dn_queries = g_list_remove (priv->dn_queries, query);
- g_object_unref (query);
- break;
- }
- }
-
- model = gnome_calendar_get_model (gcal);
- e_cal_model_remove_client (model, client);
-
- /* update date navigator query */
- gnome_calendar_update_query (gcal);
-
- g_hash_table_remove (priv->clients, uid);
-
- return TRUE;
-}
-
-/**
- * gnome_calendar_set_default_source:
- * @gcal: A calendar view
- * @source: The #ESource to use as default
- *
- * Set the default uri on the given calendar view, the default uri
- * will be used as the default when creating events in the view.
-
- *
- * Return value: TRUE if the uri was already added and is set, FALSE
- * otherwise
- **/
-gboolean
-gnome_calendar_set_default_source (GnomeCalendar *gcal, ESource *source)
-{
- GnomeCalendarPrivate *priv;
- ECal *client;
-
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), FALSE);
- g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
-
- priv = gcal->priv;
-
- client = g_hash_table_lookup (priv->clients, e_source_peek_uid (source));
-
- if (priv->default_client)
- g_object_unref (priv->default_client);
-
- if (client) {
- priv->default_client = g_object_ref (client);
- } else {
- priv->default_client = e_auth_new_cal_from_source (source, E_CAL_SOURCE_TYPE_EVENT);
- if (!priv->default_client)
- return FALSE;
- }
-
- open_ecal (gcal, priv->default_client, FALSE, default_client_cal_opened_cb);
-
- return TRUE;
-}
-
gboolean
gnome_calendar_get_range_selected (GnomeCalendar *gcal)
{
diff --git a/calendar/gui/gnome-cal.h b/calendar/gui/gnome-cal.h
index 5703b99811..91d80f0c20 100644
--- a/calendar/gui/gnome-cal.h
+++ b/calendar/gui/gnome-cal.h
@@ -122,14 +122,6 @@ void gnome_calendar_set_date_navigator
(GnomeCalendar *gcal,
ECalendar *date_navigator);
ECalModel * gnome_calendar_get_model (GnomeCalendar *gcal);
-gboolean gnome_calendar_remove_source (GnomeCalendar *gcal,
- ESource *source);
-gboolean gnome_calendar_remove_source_by_uid
- (GnomeCalendar *gcal,
- const gchar *uid);
-gboolean gnome_calendar_set_default_source
- (GnomeCalendar *gcal,
- ESource *source);
void gnome_calendar_update_query (GnomeCalendar *gcal);
void gnome_calendar_set_search_query (GnomeCalendar *gcal,
const gchar *sexp,