diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2001-07-23 10:04:14 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2001-07-23 10:04:14 +0800 |
commit | 97cc1d57adcdefb5b63a704f42f692e3cffb4014 (patch) | |
tree | 8cf6ca737156fa7ae603a5b479813f6a6c5830d5 /calendar/gui | |
parent | 13c7f54818b9b6a25a47289768d17e5a885cec7a (diff) | |
download | gsoc2013-evolution-97cc1d57adcdefb5b63a704f42f692e3cffb4014.tar.gz gsoc2013-evolution-97cc1d57adcdefb5b63a704f42f692e3cffb4014.tar.zst gsoc2013-evolution-97cc1d57adcdefb5b63a704f42f692e3cffb4014.zip |
Add an extra @type arg to the xferFolder and removeFolder methods in
the ShellComponent interface. Updated the EvolutionShellComponent
GTK+ wrapper and all the component accordingly. Get the calendar to
use this so it can delete both tasks and calendar folders.
svn path=/trunk/; revision=11300
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/calendar-component.c | 38 | ||||
-rw-r--r-- | calendar/gui/component-factory.c | 38 |
2 files changed, 74 insertions, 2 deletions
diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c index dd161a46dc..4b47fe697d 100644 --- a/calendar/gui/calendar-component.c +++ b/calendar/gui/calendar-component.c @@ -53,6 +53,20 @@ static const EvolutionShellComponentFolderType folder_types[] = { }; +/* Utility functions. */ + +static const char * +get_local_file_name_for_folder_type (const char *type) +{ + if (strcmp (type, "calendar") == 0) + return "calendar.ics"; + else if (strcmp (type, "tasks") == 0) + return "tasks.ics"; + else + return NULL; +} + + /* EvolutionShellComponent methods and signals. */ static EvolutionShellComponentResult @@ -107,10 +121,12 @@ create_folder (EvolutionShellComponent *shell_component, static void remove_folder (EvolutionShellComponent *shell_component, const char *physical_uri, + const char *type, const GNOME_Evolution_ShellComponentListener listener, void *closure) { CORBA_Environment ev; + const char *file_name; gchar *path; int rv; @@ -128,8 +144,17 @@ remove_folder (EvolutionShellComponent *shell_component, /* FIXME: check if there are subfolders? */ + file_name = get_local_file_name_for_folder_type (type); + if (file_name == NULL) { + GNOME_Evolution_ShellComponentListener_notifyResult (listener, + GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, + &ev); + CORBA_exception_free (&ev); + return; + } + /* remove the .ics file */ - path = g_concat_dir_and_file (physical_uri + 7, "calendar.ics"); + path = g_concat_dir_and_file (physical_uri + 7, file_name); rv = unlink (path); g_free (path); if (rv == 0) { @@ -169,6 +194,7 @@ static void xfer_folder (EvolutionShellComponent *shell_component, const char *source_physical_uri, const char *destination_physical_uri, + const char *type, gboolean remove_source, const GNOME_Evolution_ShellComponentListener listener, void *closure) @@ -182,6 +208,7 @@ xfer_folder (EvolutionShellComponent *shell_component, GnomeVFSURI *uri; GnomeVFSFileSize out; char *buf; + const char *file_name; CORBA_exception_init (&ev); @@ -196,6 +223,15 @@ xfer_folder (EvolutionShellComponent *shell_component, return; } + file_name = get_local_file_name_for_folder_type (type); + if (file_name == NULL) { + GNOME_Evolution_ShellComponentListener_notifyResult (listener, + GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, + &ev); + CORBA_exception_free (&ev); + return; + } + /* open source and destination files */ source_path = g_concat_dir_and_file (source_physical_uri + 7, "calendar.ics"); diff --git a/calendar/gui/component-factory.c b/calendar/gui/component-factory.c index dd161a46dc..4b47fe697d 100644 --- a/calendar/gui/component-factory.c +++ b/calendar/gui/component-factory.c @@ -53,6 +53,20 @@ static const EvolutionShellComponentFolderType folder_types[] = { }; +/* Utility functions. */ + +static const char * +get_local_file_name_for_folder_type (const char *type) +{ + if (strcmp (type, "calendar") == 0) + return "calendar.ics"; + else if (strcmp (type, "tasks") == 0) + return "tasks.ics"; + else + return NULL; +} + + /* EvolutionShellComponent methods and signals. */ static EvolutionShellComponentResult @@ -107,10 +121,12 @@ create_folder (EvolutionShellComponent *shell_component, static void remove_folder (EvolutionShellComponent *shell_component, const char *physical_uri, + const char *type, const GNOME_Evolution_ShellComponentListener listener, void *closure) { CORBA_Environment ev; + const char *file_name; gchar *path; int rv; @@ -128,8 +144,17 @@ remove_folder (EvolutionShellComponent *shell_component, /* FIXME: check if there are subfolders? */ + file_name = get_local_file_name_for_folder_type (type); + if (file_name == NULL) { + GNOME_Evolution_ShellComponentListener_notifyResult (listener, + GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, + &ev); + CORBA_exception_free (&ev); + return; + } + /* remove the .ics file */ - path = g_concat_dir_and_file (physical_uri + 7, "calendar.ics"); + path = g_concat_dir_and_file (physical_uri + 7, file_name); rv = unlink (path); g_free (path); if (rv == 0) { @@ -169,6 +194,7 @@ static void xfer_folder (EvolutionShellComponent *shell_component, const char *source_physical_uri, const char *destination_physical_uri, + const char *type, gboolean remove_source, const GNOME_Evolution_ShellComponentListener listener, void *closure) @@ -182,6 +208,7 @@ xfer_folder (EvolutionShellComponent *shell_component, GnomeVFSURI *uri; GnomeVFSFileSize out; char *buf; + const char *file_name; CORBA_exception_init (&ev); @@ -196,6 +223,15 @@ xfer_folder (EvolutionShellComponent *shell_component, return; } + file_name = get_local_file_name_for_folder_type (type); + if (file_name == NULL) { + GNOME_Evolution_ShellComponentListener_notifyResult (listener, + GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, + &ev); + CORBA_exception_free (&ev); + return; + } + /* open source and destination files */ source_path = g_concat_dir_and_file (source_physical_uri + 7, "calendar.ics"); |