aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'calendar')
-rw-r--r--calendar/ChangeLog9
-rw-r--r--calendar/gui/gnome-cal.c48
-rw-r--r--calendar/pcs/cal-factory.c2
3 files changed, 51 insertions, 8 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index a03ae43994..40507324bb 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,12 @@
+2001-08-22 Rodrigo Moya <rodrigo@ximian.com>
+
+ * gui/gnome-cal.c (gnome_calendar_open): open the tasks folder
+ associated with the calendar being opened, and not always the local
+ tasks.ics file
+
+ * pcs/cal-factory.c (open_fn): use gnome_vfs_uri_new_private when
+ parsing the URI to allow non-registered URIs
+
2001-08-21 Federico Mena Quintero <federico@ximian.com>
* gui/dialogs/alarm-options.c (alarm_to_palarm_widgets): Handle
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 6d0e7cbb53..5c7227bf73 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -35,6 +35,7 @@
#include <libgnome/gnome-util.h>
#include <libgnomeui/gnome-dialog.h>
#include <libgnomeui/gnome-dialog-util.h>
+#include <libgnomevfs/gnome-vfs-uri.h>
#include <liboaf/liboaf.h>
#include <gal/e-paned/e-hpaned.h>
#include <gal/e-paned/e-vpaned.h>
@@ -1596,6 +1597,7 @@ gnome_calendar_open (GnomeCalendar *gcal, const char *str_uri)
GnomeCalendarPrivate *priv;
char *tasks_uri;
gboolean success;
+ GnomeVFSURI *uri;
g_return_val_if_fail (gcal != NULL, FALSE);
g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), FALSE);
@@ -1618,15 +1620,47 @@ gnome_calendar_open (GnomeCalendar *gcal, const char *str_uri)
add_alarms (str_uri);
- /* Open the appropriate Tasks folder to show in the TaskPad.
- Currently we just show the folder named "Tasks", but it will be
- a per-calendar option in future. */
+ /* Open the appropriate Tasks folder to show in the TaskPad */
- tasks_uri = g_strdup_printf ("%s/local/Tasks/tasks.ics", evolution_dir);
- success = cal_client_open_calendar (priv->task_pad_client, tasks_uri, FALSE);
+ uri = gnome_vfs_uri_new_private (str_uri, TRUE, TRUE, TRUE);
+ if (!uri) {
+ tasks_uri = g_strdup_printf ("%s/local/Tasks/tasks.ics", evolution_dir);
+ success = cal_client_open_calendar (priv->task_pad_client, tasks_uri, FALSE);
- add_alarms (tasks_uri);
- g_free (tasks_uri);
+ add_alarms (tasks_uri);
+ g_free (tasks_uri);
+ }
+ else {
+ if (gnome_vfs_uri_is_local (uri)) {
+ tasks_uri = g_strdup_printf ("%s/local/Tasks/tasks.ics", evolution_dir);
+ success = cal_client_open_calendar (priv->task_pad_client, tasks_uri, FALSE);
+
+ add_alarms (tasks_uri);
+ g_free (tasks_uri);
+ }
+ else {
+ CalendarModel *model;
+
+ /* we use the same CalClient for tasks than for events */
+ gtk_object_unref (GTK_OBJECT (priv->task_pad_client));
+ gtk_object_ref (GTK_OBJECT (priv->client));
+ priv->task_pad_client = priv->client;
+
+ gtk_signal_connect (GTK_OBJECT (priv->task_pad_client), "cal_opened",
+ GTK_SIGNAL_FUNC (client_cal_opened_cb), gcal);
+ gtk_signal_connect (GTK_OBJECT (priv->task_pad_client), "categories_changed",
+ GTK_SIGNAL_FUNC (client_categories_changed_cb), gcal);
+
+ model = e_calendar_table_get_model (E_CALENDAR_TABLE (priv->todo));
+ g_assert (model != NULL);
+
+ calendar_model_set_cal_client (model, priv->task_pad_client, CALOBJ_TYPE_TODO);
+
+ success = TRUE;
+ }
+
+ gnome_vfs_uri_unref (uri);
+ }
if (!success) {
g_message ("gnome_calendar_open(): Could not issue the request");
diff --git a/calendar/pcs/cal-factory.c b/calendar/pcs/cal-factory.c
index d01349fb8f..86090fc2bb 100644
--- a/calendar/pcs/cal-factory.c
+++ b/calendar/pcs/cal-factory.c
@@ -323,7 +323,7 @@ open_fn (gpointer data)
/* Check the URI */
- uri = gnome_vfs_uri_new (jd->uri);
+ uri = gnome_vfs_uri_new_private (jd->uri, TRUE, TRUE, TRUE);
g_free (jd->uri);
only_if_exists = jd->only_if_exists;