Remove "mailstorage", since it's not needed any more. (storage_activate):

* component-factory.c (folder_types): Remove "mailstorage", since
	it's not needed any more.
	(storage_activate): Gone, although some of it is moved to
	storage_connect.
	(create_view): Remove mailstorage code.
	(add_storage): Connect to the storage's open_folder signal.
	Instead of creating a "mailstorage" folder, call
	evolution_storage_has_subfolders to let the shell know we haven't
	finished filling it in yet.
	(storage_connect): Handler for the storage's asyncOpenFolder
	signal. Call mail_note_store() to try to connect.
	(storage_connected): Callback for above. If the connection attempt
	failed, call evolution_storage_has_subfolders again to make the
	shell re-close the storage.

	* mail-folder-cache.c (update_folders): Remove a piece of
	mailstorage legacy code from here.

svn path=/trunk/; revision=16170
This commit is contained in:
Dan Winship
2002-03-14 22:23:06 +00:00
parent 86b700d089
commit 7df203024e
3 changed files with 47 additions and 44 deletions

View File

@ -1,3 +1,23 @@
2002-03-14 Dan Winship <danw@ximian.com>
* component-factory.c (folder_types): Remove "mailstorage", since
it's not needed any more.
(storage_activate): Gone, although some of it is moved to
storage_connect.
(create_view): Remove mailstorage code.
(add_storage): Connect to the storage's open_folder signal.
Instead of creating a "mailstorage" folder, call
evolution_storage_has_subfolders to let the shell know we haven't
finished filling it in yet.
(storage_connect): Handler for the storage's asyncOpenFolder
signal. Call mail_note_store() to try to connect.
(storage_connected): Callback for above. If the connection attempt
failed, call evolution_storage_has_subfolders again to make the
shell re-close the storage.
* mail-folder-cache.c (update_folders): Remove a piece of
mailstorage legacy code from here.
2002-03-14 Radek Doulik <rodo@ximian.com>
* mail-config.c (get_new_signature_filename): create new signature

View File

@ -37,7 +37,7 @@
#include "evolution-shell-component.h"
#include "evolution-shell-component-dnd.h"
#include "folder-browser.h"
#include "mail.h" /* YUCK FIXME */
#include "mail.h"
#include "mail-config.h"
#include "mail-tools.h"
#include "mail-ops.h"
@ -98,7 +98,6 @@ static char *exported_dnd_types[] = {
static const EvolutionShellComponentFolderType folder_types[] = {
{ "mail", "evolution-inbox.png", N_("Mail"), N_("Folder containing mail"), TRUE, accepted_dnd_types, exported_dnd_types },
{ "mailstorage", "evolution-inbox.png", "Mailstorage", N_("Mail storage folder (internal)"), FALSE, NULL, NULL },
{ "vtrash", "evolution-trash.png", N_("Virtual Trash"), N_("Virtual Trash folder"), FALSE, accepted_dnd_types, exported_dnd_types },
{ NULL, NULL, NULL, NULL, FALSE, NULL, NULL }
};
@ -110,35 +109,6 @@ static const char *schema_types[] = {
/* EvolutionShellComponent methods and signals. */
static void
storage_activate (BonoboControl *control, gboolean activate,
const char *physical_uri)
{
CamelService *store;
EvolutionStorage *storage;
CamelException ex;
if (!activate)
return;
camel_exception_init (&ex);
store = camel_session_get_service (session, physical_uri,
CAMEL_PROVIDER_STORE, &ex);
if (!store) {
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Cannot connect to store: %s"),
camel_exception_get_description (&ex));
camel_exception_clear (&ex);
return;
}
camel_exception_clear (&ex);
storage = g_hash_table_lookup (storages_hash, store);
if (storage && !gtk_object_get_data (GTK_OBJECT (storage), "connected"))
mail_note_store (CAMEL_STORE(store), storage, CORBA_OBJECT_NIL, NULL, NULL);
camel_object_unref (CAMEL_OBJECT (store));
}
static BonoboControl *
create_noselect_control (void)
{
@ -175,14 +145,6 @@ create_view (EvolutionShellComponent *shell_component,
control = folder_browser_factory_new_control (physical_uri,
corba_shell);
camel_url_free (url);
} else if (!g_strcasecmp (folder_type, "mailstorage")) {
char *uri_dup = g_strdup (physical_uri);
control = create_noselect_control ();
gtk_object_set_data_full (GTK_OBJECT (control), "physical_uri",
uri_dup, g_free);
gtk_signal_connect (GTK_OBJECT (control), "activate",
storage_activate, uri_dup);
} else if (!g_strcasecmp (folder_type, "vtrash")) {
if (!g_strncasecmp (physical_uri, "file:", 5))
control = folder_browser_factory_new_control ("vtrash:file:/", corba_shell);
@ -1202,6 +1164,27 @@ storage_xfer_folder (EvolutionStorage *storage,
camel_exception_clear (&ex);
}
static void
storage_connected (CamelStore *store, CamelFolderInfo *info, void *storage)
{
if (!info) {
/* Let it know the connection failed by calling
* has_subfolders again.
*/
evolution_storage_has_subfolders (storage, "/",
_("Connecting..."));
}
}
static void
storage_connect (EvolutionStorage *storage,
const char *path,
CamelStore *store)
{
mail_note_store (CAMEL_STORE(store), storage, CORBA_OBJECT_NIL,
storage_connected, storage);
}
static void
add_storage (const char *name, const char *uri, CamelService *store,
GNOME_Evolution_Shell corba_shell, CamelException *ex)
@ -1210,7 +1193,7 @@ add_storage (const char *name, const char *uri, CamelService *store,
EvolutionStorageResult res;
storage = evolution_storage_new (name);
evolution_storage_new_folder (storage, "/", name, "mailstorage", uri, "", 0);
gtk_signal_connect (GTK_OBJECT (storage), "open_folder", storage_connect, store);
gtk_signal_connect (GTK_OBJECT (storage), "create_folder", storage_create_folder, store);
gtk_signal_connect (GTK_OBJECT (storage), "remove_folder", storage_remove_folder, store);
gtk_signal_connect ((GtkObject *)storage, "xfer_folder", storage_xfer_folder, store);
@ -1219,11 +1202,14 @@ add_storage (const char *name, const char *uri, CamelService *store,
switch (res) {
case EVOLUTION_STORAGE_OK:
evolution_storage_has_subfolders (storage, "/",
_("Connecting..."));
mail_hash_storage (store, storage);
mail_note_store((CamelStore *)store, storage, CORBA_OBJECT_NIL, NULL, NULL);
/* falllll */
case EVOLUTION_STORAGE_ERROR_ALREADYREGISTERED:
case EVOLUTION_STORAGE_ERROR_EXISTS:
bonobo_object_unref (BONOBO_OBJECT (storage));
return;
default:
camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM,

View File

@ -711,11 +711,8 @@ update_folders(CamelStore *store, CamelFolderInfo *fi, void *data)
/* otherwise its not, and we're on our own and free anyway */
e_dlist_remove((EDListNode *)ud);
if (fi) {
if (si->storage)
gtk_object_set_data (GTK_OBJECT (si->storage), "connected", GINT_TO_POINTER (TRUE));
if (fi)
create_folders(fi, si);
}
}
UNLOCK(info_lock);