(fe_node_to_shell_path): Use node->name and node->full_name to generate

2001-08-16  Peter Williams  <peterw@ximian.com>

	(fe_node_to_shell_path): Use node->name and node->full_name to generate
	the the shell path of this item. Don't need to escape the URL, and
	handle cases when dir_sep != '/'
	(fe_done_subscribing): Use fe_node_to_shell_path instead of the CamelURL.
	Third time's the charm...

svn path=/trunk/; revision=12101
This commit is contained in:
Peter Williams
2001-08-16 17:47:15 +00:00
committed by Peter Williams
parent 46c82f851c
commit ba9b1480dd
2 changed files with 51 additions and 6 deletions

View File

@ -2,7 +2,12 @@
* subscribe-dialog.c (fe_done_subscribing): Instead of hackfully
getting the path, use a CamelURL so that escaping is handled. Silly
me.
me. -- See below --
(fe_node_to_shell_path): Use node->name and node->full_name to generate
the the shell path of this item. Don't need to escape the URL, and
handle cases when dir_sep != '/'
(fe_done_subscribing): Use fe_node_to_shell_path instead of the CamelURL.
Third time's the charm...
2001-08-15 Jeffrey Stedfast <fejj@ximian.com>

View File

@ -758,29 +758,69 @@ fe_get_first_child (ETreeModel *model, ETreePath path)
/* subscribing */
static gchar *
fe_node_to_shell_path (ftree_node *node)
{
gchar *path = NULL;
int name_len, full_name_len;
name_len = strlen (ftree_node_get_name (node));
full_name_len = strlen (ftree_node_get_full_name (node));
if (name_len != full_name_len) {
char *full_name;
gchar *iter;
gchar sep;
/* so, we don't know the heirarchy separator. But
* full_name = blahXblahXname, where X = separator
* and name = .... name. So we can determine it.
* (imap_store->dir_sep isn't really private, I guess,
* so we could use that if we had the store. But also
* we don't "know" that it is an IMAP store anyway.)
*/
full_name = ftree_node_get_full_name (node);
sep = full_name[full_name_len - (name_len + 1)];
if (sep != '/') {
path = g_new (gchar, full_name_len + 2);
path[0] = '/';
strcpy (path + 1, full_name);
while ((iter = strchr (path, sep)) != NULL)
*iter = '/';
}
}
if (!path)
path = g_strdup_printf ("/%s", ftree_node_get_full_name (node));
return path;
}
static void
fe_done_subscribing (const char *full_name, const char *name, gboolean subscribe, gboolean success, gpointer user_data)
{
ftree_op_data *closure = (ftree_op_data *) user_data;
if (success) {
CamelURL *url;
gchar *path;
url = camel_url_new (ftree_node_get_uri (closure->data), NULL);
path = fe_node_to_shell_path (closure->data);
if (subscribe) {
closure->data->flags |= FTREE_NODE_SUBSCRIBED;
recursive_add_folder (closure->ftree->e_storage,
url->path, name,
path, name,
ftree_node_get_uri (closure->data));
} else {
closure->data->flags &= ~FTREE_NODE_SUBSCRIBED;
/* FIXME: recursively remove folder as well? Possible? */
evolution_storage_removed_folder (closure->ftree->e_storage, url->path);
evolution_storage_removed_folder (closure->ftree->e_storage, path);
}
camel_url_free (url);
g_free (path);
e_tree_model_node_data_changed (E_TREE_MODEL (closure->ftree), closure->path);
}