This is a manual merge of branch drop split view intro trunk.
[modest] / src / modest-runtime.c
index 6badb49..890b8db 100644 (file)
 #include <glib-object.h>
 #include <glib/gstdio.h>
 #include <modest-runtime.h>
+#include <modest-runtime-priv.h>
 #include <modest-defs.h>
 #include <modest-singletons.h>
 #include <widgets/modest-header-view.h>
 #include <widgets/modest-folder-view.h>
 #include <modest-tny-platform-factory.h>
+#include <modest-platform.h>
 #include <modest-widget-memory.h>
 #include <modest-widget-memory-priv.h>
 #include <modest-local-folder-info.h>
 #include <modest-account-mgr.h>
 #include <modest-account-mgr-helpers.h>
 #include <modest-icon-names.h>
+#include <modest-ui-actions.h>
+#include <modest-debug.h>
 
-#if MODEST_PLATFORM_ID==2 /* maemo/hildon */
-#include <libosso.h>
-static gboolean init_hildon (void);
-#endif /* MODEST_PLATFORM_ID==2 */
+static ModestSingletons       *_singletons    = NULL;
 
-static gboolean init_header_columns (ModestConf *conf, gboolean overwrite);
-static gboolean init_local_folders  (void);
-static gboolean init_default_account_maybe  (ModestAccountMgr *acc_mgr);
-static void     init_i18n (void);
-static void     init_stock_icons (void);
-static void     init_debug_g_type (void);
-static void     init_debug_logging (void);
-static void     init_test_accounts (ModestAccountMgr *acc_mgr);
-
-
-static ModestSingletons *_singletons = NULL;
+// we get the account store here instead of in Singletons
+// as it leads to various chicken & problems with initialization
+static ModestTnyAccountStore  *_account_store  = NULL;
 
+/* Signal handlers for the send queues */
+static GSList *_sig_handlers = NULL;
 
 /*
- * defaults for the column headers
+ * private functions declared in modest-runtime-priv.h -
+ * only to be called from modest-init.c 
  */
-typedef struct {
-       ModestHeaderViewColumn col;
-       guint                  width;
-} FolderCols;
-
-static const FolderCols INBOX_COLUMNS_DETAILS[] = {
-       {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40},
-       {MODEST_HEADER_VIEW_COLUMN_ATTACH,  40},
-       {MODEST_HEADER_VIEW_COLUMN_FROM,    80},
-       {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 80},
-       {MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE, 60},
-       {MODEST_HEADER_VIEW_COLUMN_SIZE, 50}
-};
-static const FolderCols INBOX_COLUMNS_TWOLINES[] = {
-       {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40},
-       {MODEST_HEADER_VIEW_COLUMN_ATTACH,  40},
-       {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN, 200}
-};
-
-static const FolderCols OUTBOX_COLUMNS_DETAILS[] = {
-        {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40},
-        {MODEST_HEADER_VIEW_COLUMN_ATTACH,  40},
-        {MODEST_HEADER_VIEW_COLUMN_TO,    80},
-        {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 80},
-        {MODEST_HEADER_VIEW_COLUMN_SENT_DATE, 80},
-        {MODEST_HEADER_VIEW_COLUMN_SIZE, 50}
-};
-static const FolderCols OUTBOX_COLUMNS_TWOLINES[] = {
-        {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40},
-        {MODEST_HEADER_VIEW_COLUMN_ATTACH,  40},
-        {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,200},
-};
-        
-static const TnyFolderType LOCAL_FOLDERS[] = {
-       TNY_FOLDER_TYPE_OUTBOX,
-       TNY_FOLDER_TYPE_DRAFTS,
-       TNY_FOLDER_TYPE_SENT,
-       TNY_FOLDER_TYPE_TRASH,
-       TNY_FOLDER_TYPE_ARCHIVE 
-};
-
-
+/*-----------------------------------------------------------------------------*/
 gboolean
 modest_runtime_init (void)
 {
-       ModestSingletons *my_singletons;
-       gboolean reset;
-       
        if (_singletons) {
-               g_printerr ("modest: modest_runtime_init can only be called once\n");
-               return FALSE;
-       }
-       
-       init_i18n();
-       init_debug_g_type();
-       init_debug_logging();
-
-       g_thread_init(NULL);
-       gdk_threads_init ();
-
-       my_singletons = modest_singletons_new ();
-       if (!my_singletons) {
-               g_printerr ("modest: failed to initialize singletons\n");
+               g_printerr ("modest: modest_runtime_init can only be run once\n");
                return FALSE;
        }
 
-#if MODEST_PLATFORM_ID==2 
-       if (!init_hildon ()) {
-               modest_runtime_uninit ();
-               g_printerr ("modest: failed to initialize hildon\n");
+       _singletons = modest_singletons_new ();
+       if (!_singletons) {
+               g_printerr ("modest: failed to create singletons\n");
                return FALSE;
        }
-#endif /* MODEST_PLATFORM_ID==2 */
 
-       /* based on the debug settings, we decide whether to overwrite old settings */
-       reset = modest_runtime_get_debug_flags () & MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS;
-       if (!init_header_columns(modest_singletons_get_conf (my_singletons), reset)) {
-               modest_runtime_uninit ();
-               g_printerr ("modest: failed to init header columns\n");
-               return FALSE;
-       }
-       
-       if (!init_local_folders()) {
-               modest_runtime_uninit ();
-               g_printerr ("modest: failed to init local folders\n");
-               return FALSE;
-       }
-       
-       if (!init_default_account_maybe(modest_singletons_get_account_mgr (my_singletons))) {
-               modest_runtime_uninit ();
-               g_printerr ("modest: failed to init default account\n");
-               return FALSE;
-       }
-
-       /* create the test accounts if the debug flag for that is set */
-       if (modest_runtime_get_debug_flags () & MODEST_RUNTIME_DEBUG_TINY_TEST_ACCOUNTS)
-               init_test_accounts (modest_singletons_get_account_mgr (my_singletons)); 
-       
-       /* don't initialize _singletons before all the other init stuff
-        * is done; thus, using any of the singleton stuff before
-        * runtime is fully init'ed  is avoided
-        */
-       _singletons = my_singletons;
-       
        return TRUE;
 }
 
-
 gboolean
-modest_runtime_init_ui (gint argc, gchar** argv)
+modest_runtime_uninit (void)
 {
-       if (!gtk_init_check(&argc, &argv)) {
-               g_printerr ("modest: failed to initialize graphical ui\n");
-               return FALSE;
+       if (!_singletons)
+               return TRUE;    /* uninit maybe called if runtime_init failed */
+       
+       g_return_val_if_fail (MODEST_IS_SINGLETONS(_singletons), FALSE);
+
+       g_debug ("%s: cleaning up", __FUNCTION__);
+
+       if (_sig_handlers) {
+               modest_signal_mgr_disconnect_all_and_destroy (_sig_handlers);
+               _sig_handlers = NULL;
        }
 
-       init_stock_icons ();
-       return TRUE;
-}
+       g_debug ("%s: cleaned up signal manager", __FUNCTION__);
 
+       MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_singletons,"");
+       g_object_unref(_singletons);
+       _singletons = NULL;
 
-gboolean
-modest_runtime_uninit (void)
-{
-       if (_singletons) {
-               g_object_unref (G_OBJECT(_singletons));
-               _singletons = NULL;
+       g_debug ("%s: cleaned up singletons", __FUNCTION__);
+
+       if (_account_store) {
+               MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_account_store,"");
+               g_object_unref(_account_store);
+               _account_store = NULL;
        }
-       modest_runtime_verify_object_death (_singletons, "_singletons");
+
+       g_debug ("%s: cleaned up the account store", __FUNCTION__);
+
+       
+       g_debug ("%s: all cleaned up", __FUNCTION__);
+
        
        return TRUE;
 }
-
+/*-----------------------------------------------------------------------------*/
+       
 
 ModestAccountMgr*
 modest_runtime_get_account_mgr   (void)
@@ -206,12 +126,36 @@ modest_runtime_get_account_mgr   (void)
        return modest_singletons_get_account_mgr (_singletons);
 }
 
+TnyStreamCache*
+modest_runtime_get_images_cache   (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_images_cache (_singletons);
+}
+
+ModestEmailClipboard*
+modest_runtime_get_email_clipboard   (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_email_clipboard (_singletons);
+}
+
 ModestTnyAccountStore*
 modest_runtime_get_account_store   (void)
 {
        g_return_val_if_fail (_singletons, NULL);
-       return modest_singletons_get_account_store (_singletons);
-
+       /* we get the account store here instead of in Singletons as
+          it leads to various chicken & egg problems with
+          initialization */
+       if (!_account_store) {
+               _account_store  = modest_tny_account_store_new (modest_runtime_get_account_mgr(),
+                                                               modest_runtime_get_device());
+               if (!_account_store) {
+                       g_printerr ("modest: cannot create modest tny account store instance\n");
+                       return NULL;
+               }
+       }
+       return _account_store;
 }
 
 ModestConf*
@@ -254,15 +198,13 @@ modest_runtime_get_platform_factory  (void)
        return modest_singletons_get_platform_factory (_singletons);
 }
 
-
-
-
 ModestTnySendQueue*
-modest_runtime_get_send_queue  (TnyTransportAccount *account)
+modest_runtime_get_send_queue  (TnyTransportAccount *account,
+                               gboolean create)
 {
        ModestCacheMgr *cache_mgr;
        GHashTable     *send_queue_cache;
-       gpointer       orig_key, send_queue;
+       gpointer       orig_key = NULL, send_queue = NULL;
        
        g_return_val_if_fail (_singletons, NULL);
        g_return_val_if_fail (TNY_IS_TRANSPORT_ACCOUNT(account), NULL);
@@ -271,16 +213,85 @@ modest_runtime_get_send_queue  (TnyTransportAccount *account)
        send_queue_cache = modest_cache_mgr_get_cache (cache_mgr,
                                                       MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE);
 
-       if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue)) {
-               send_queue = (gpointer)modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account));
-               g_hash_table_insert (send_queue_cache, account, send_queue);
+       /* Each modest account has its own send queue.
+        * Note that each modest account will have its own outbox folder, 
+        * returned by TnySendQueue::get_outbox_func().
+        */
+       if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue) &&
+           create) {
+               /* Note that this send queue will start sending messages from its outbox 
+                * as soon as it is instantiated: */
+               send_queue = modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account));
+
+               if (send_queue) {
+                       _sig_handlers = 
+                               modest_signal_mgr_connect (_sig_handlers, 
+                                                          send_queue, 
+                                                          "error_happened",
+                                                          G_CALLBACK (modest_ui_actions_on_send_queue_error_happened), 
+                                                          NULL);
+
+                       _sig_handlers = 
+                               modest_signal_mgr_connect (_sig_handlers, 
+                                                          send_queue, 
+                                                          "status_changed",
+                                                          G_CALLBACK (modest_ui_actions_on_send_queue_status_changed), 
+                                                          NULL);
+
+                       g_hash_table_insert (send_queue_cache, 
+                                            g_object_ref (account), 
+                                            send_queue);
+               }
        }
 
-       return MODEST_TNY_SEND_QUEUE(send_queue);
+       return (send_queue) ? MODEST_TNY_SEND_QUEUE(send_queue) : NULL;
 }
 
+void modest_runtime_remove_all_send_queues ()
+{
+       ModestCacheMgr *cache_mgr = modest_singletons_get_cache_mgr (_singletons);
+       
+       modest_cache_mgr_flush (cache_mgr, MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE);
+}
 
+void 
+modest_runtime_remove_send_queue (TnyTransportAccount *account)
+{
+
+       ModestCacheMgr *cache_mgr;
+       GHashTable     *send_queue_cache;
+
+       g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (account));  
+       g_return_if_fail (_singletons);
 
+       cache_mgr = modest_singletons_get_cache_mgr (_singletons);
+       send_queue_cache = modest_cache_mgr_get_cache (cache_mgr,
+                                                      MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); 
+
+       if (g_hash_table_lookup (send_queue_cache, account))
+               g_hash_table_remove (send_queue_cache, account);
+}
+
+ModestWindowMgr *
+modest_runtime_get_window_mgr (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_window_mgr (_singletons);
+}
+
+ModestPluginFactory *
+modest_runtime_get_plugin_factory (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_plugin_factory (_singletons);
+}
+
+ModestProtocolRegistry *
+modest_runtime_get_protocol_registry (void)
+{
+       g_return_val_if_fail (_singletons, NULL);
+       return modest_singletons_get_protocol_registry (_singletons);
+}
 
 /* http://primates.ximian.com/~federico/news-2006-04.html#memory-debugging-infrastructure*/
 ModestRuntimeDebugFlags
@@ -289,10 +300,10 @@ modest_runtime_get_debug_flags ()
        static const GDebugKey debug_keys[] = {
                { "abort-on-warning",   MODEST_RUNTIME_DEBUG_ABORT_ON_WARNING },
                { "log-actions",        MODEST_RUNTIME_DEBUG_LOG_ACTIONS },
-               { "debug-objects",      MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS },
-               { "debug-signals",      MODEST_RUNTIME_DEBUG_DEBUG_SIGNALS },
+               { "debug-objects",      MODEST_RUNTIME_DEBUG_OBJECTS },
+               { "debug-signals",      MODEST_RUNTIME_DEBUG_SIGNALS },
                { "factory-settings",   MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS},
-               { "tiny-test-accounts", MODEST_RUNTIME_DEBUG_TINY_TEST_ACCOUNTS}
+               { "debug-code",         MODEST_RUNTIME_DEBUG_CODE}
        };
        const gchar *str;
        static ModestRuntimeDebugFlags debug_flags = -1;
@@ -313,349 +324,3 @@ modest_runtime_get_debug_flags ()
 
 
 
-
-/* NOTE: the exact details of this format are important, as they
- * are also used in modest-widget-memory. FIXME: make a shared function
- * for this with widget-memory
- */
-static gboolean
-save_header_settings (ModestConf *conf, TnyFolderType type,
-                     ModestHeaderViewStyle style,  const FolderCols* cols,
-                     guint col_num, gboolean overwrite)
-{
-       int i;
-       gchar *key;
-       GString *str;
-
-       g_return_val_if_fail (cols, FALSE);
-
-       key = _modest_widget_memory_get_keyname_with_double_type ("header-view",
-                                                                 type, style,
-                                                                 MODEST_WIDGET_MEMORY_PARAM_COLUMN_WIDTH);
-       /* if we're not in overwrite mode, only write stuff it
-        * there was nothing before */
-       if (!overwrite &&  modest_conf_key_exists(conf, key, NULL)) {
-               g_free (key);
-               return TRUE;
-       }
-
-       /* the format is necessarily the same as the one in modest-widget-memory */
-       str = g_string_new (NULL);
-       for (i = 0; i != col_num; ++i) 
-               g_string_append_printf (str, "%d:%d ",
-                                       cols[i].col, cols[i].width); 
-
-       modest_conf_set_string (conf, key, str->str, NULL);
-       g_free (key);
-       g_string_free (str, TRUE);
-       
-       return TRUE;
-}
-
-/**
- * modest_init_header_columns:
- * @overwrite: write the setting, even if it already exists
- * 
- * will set defaults for the columns to show for folder,
- * if there are no such settings yet (in ModestWidgetMemory)
- * 
- * Returns: TRUE if succeeded, FALSE in case of error
- */
-static gboolean
-init_header_columns (ModestConf *conf, gboolean overwrite)
-{
-       int folder_type;
-       
-       for (folder_type = TNY_FOLDER_TYPE_UNKNOWN;
-            folder_type <= TNY_FOLDER_TYPE_CALENDAR; ++folder_type) {          
-               
-               switch (folder_type) {
-               case TNY_FOLDER_TYPE_OUTBOX:
-               case TNY_FOLDER_TYPE_SENT:
-               case TNY_FOLDER_TYPE_DRAFTS:
-               save_header_settings (conf, folder_type,
-                                     MODEST_HEADER_VIEW_STYLE_DETAILS,
-                                     OUTBOX_COLUMNS_DETAILS,
-                                     G_N_ELEMENTS(OUTBOX_COLUMNS_DETAILS),
-                                     overwrite);
-               save_header_settings (conf, folder_type,
-                                     MODEST_HEADER_VIEW_STYLE_TWOLINES,
-                                     OUTBOX_COLUMNS_TWOLINES,
-                                     G_N_ELEMENTS(OUTBOX_COLUMNS_TWOLINES),
-                                     overwrite);
-               break;
-
-               default:
-               save_header_settings (conf, folder_type,
-                                     MODEST_HEADER_VIEW_STYLE_DETAILS,
-                                     INBOX_COLUMNS_DETAILS,
-                                     G_N_ELEMENTS(INBOX_COLUMNS_DETAILS),
-                                     overwrite);
-               save_header_settings (conf, folder_type,
-                                     MODEST_HEADER_VIEW_STYLE_TWOLINES,
-                                     INBOX_COLUMNS_TWOLINES,
-                                     G_N_ELEMENTS(INBOX_COLUMNS_TWOLINES),
-                                     overwrite);
-               };
-       }
-       return TRUE;
-}
-
-/**
- * init_local_folders:
- * 
- * create the Local Folders folder under cache, if they
- * do not exist yet.
- * 
- * Returns: TRUE if the folder were already there, or
- * they were created, FALSE otherwise
- */
-static gboolean
-init_local_folders  (void)
-{
-       int i;
-       gchar *maildir_path;
-       static const gchar* maildirs[] = {
-               "cur", "new", "tmp"
-       };
-       
-       maildir_path = modest_local_folder_info_get_maildir_path ();
-
-       for (i = 0; i != G_N_ELEMENTS(LOCAL_FOLDERS); ++i) {
-               int j;
-               for (j = 0; j != G_N_ELEMENTS(maildirs); ++j) {
-                       gchar *dir;
-                       dir = g_build_filename (maildir_path,
-                                               modest_local_folder_info_get_type_name(LOCAL_FOLDERS[i]),
-                                               maildirs[j],
-                                               NULL);
-                       if (g_mkdir_with_parents (dir, 0755) < 0) {
-                               g_printerr ("modest: failed to create %s\n", dir);
-                               g_free (dir);
-                               g_free (maildir_path);
-                               return FALSE;
-                       }
-                       g_free(dir);
-               }
-       }
-       
-       g_free (maildir_path);
-       return TRUE;
-}
-
-
-
-static void
-free_element (gpointer data, gpointer user_data)
-{
-       g_free (data);
-}
-
-
-
-/**
- * init_default_account_maybe:
- *
- * if there are accounts defined, but there is no default account,
- * it will be defined.
- * 
- * Returns: TRUE if there was a default account already,
- *  or one has been created or there are no accounts yet,
- *  returns FALSE in case of error
- */
-static gboolean
-init_default_account_maybe  (ModestAccountMgr *acc_mgr)
-{
-       GSList *all_accounts = NULL;
-       gchar *default_account;
-       gboolean retval = TRUE;
-       
-       all_accounts = modest_account_mgr_account_names (acc_mgr);
-       if (all_accounts) { /* if there are any accounts, there should be a default one */
-               default_account = 
-                       modest_account_mgr_get_default_account (acc_mgr);
-               if (!default_account) {
-                       gchar *first_account;
-                       g_printerr ("modest: no default account defined\n");
-                       first_account = (gchar*)all_accounts->data;
-                       if ((retval = modest_account_mgr_set_default_account (acc_mgr, first_account)))
-                               g_printerr ("modest: set '%s' as the default account\n",
-                                           first_account);
-                       else
-                               g_printerr ("modest: failed to set '%s' as the default account\n",
-                                           first_account);
-                       g_free (default_account);
-               }
-               g_slist_foreach (all_accounts, free_element, NULL);
-               g_slist_free    (all_accounts);
-       }
-       return retval;
-}
-
-
-
-static void
-init_debug_g_type (void)
-{
-       GTypeDebugFlags gflags;
-       ModestRuntimeDebugFlags mflags;
-       
-       gflags = 0;
-       mflags = modest_runtime_get_debug_flags ();
-
-       if (mflags & MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS)
-               gflags |= G_TYPE_DEBUG_OBJECTS;
-       if (mflags & MODEST_RUNTIME_DEBUG_DEBUG_SIGNALS)
-               gflags |= G_TYPE_DEBUG_SIGNALS;
-
-       g_type_init_with_debug_flags (gflags);
-}
-
-static void
-init_debug_logging (void)
-{
-       ModestRuntimeDebugFlags mflags;
-       mflags = modest_runtime_get_debug_flags ();
-       
-       if (mflags & MODEST_RUNTIME_DEBUG_ABORT_ON_WARNING)
-               g_log_set_always_fatal (G_LOG_LEVEL_ERROR |
-                                       G_LOG_LEVEL_CRITICAL |
-                                       G_LOG_LEVEL_WARNING);
-}
-
-
-static void
-init_i18n (void)
-{
-       bindtextdomain (GETTEXT_PACKAGE, MODEST_LOCALEDIR);
-       bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-       textdomain (GETTEXT_PACKAGE);
-
-}
-
-
-#if MODEST_PLATFORM_ID==2 
-static gboolean
-init_hildon (void)
-{
-       osso_context_t *osso_context =
-               osso_initialize(PACKAGE, PACKAGE_VERSION,
-                               TRUE, NULL);    
-       if (!osso_context) {
-               g_printerr ("modest: failed to acquire osso context\n");
-               return FALSE;
-       }
-}
-#endif /* MODEST_PLATFORM_ID==2 */
-
-
-/* 
- *  This function registers our custom toolbar icons, so they can be
- *  themed. The idea of this function was taken from the gtk-demo
- */
-static void
-init_stock_icons (void)
-{
-       static gboolean registered = FALSE;
-  
-       if (!registered) {
-               GdkPixbuf *pixbuf;
-               GtkIconFactory *factory;
-               gint i;
-
-               static GtkStockItem items[] = {
-                       { MODEST_STOCK_MAIL_SEND, "send mail", 0, 0, NULL },
-                       { MODEST_STOCK_NEW_MAIL, "new mail", 0, 0, NULL },
-                       { MODEST_STOCK_SEND_RECEIVE, "send receive", 0, 0, NULL }, 
-                       { MODEST_STOCK_REPLY, "reply", 0, 0, NULL },
-                       { MODEST_STOCK_REPLY_ALL, "reply all", 0, 0, NULL },
-                       { MODEST_STOCK_FORWARD, "forward", 0, 0, NULL },
-                       { MODEST_STOCK_DELETE, "delete", 0, 0, NULL }, 
-/*                     { MODEST_STOCK_NEXT, "next", 0, 0, NULL }, */
-/*                     { MODEST_STOCK_PREV, "prev", 0, 0, NULL }, */
-/*                     { MODEST_STOCK_STOP, "stop", 0, 0, NULL } */
-               };
-      
-               static gchar *items_names [] = {
-                       MODEST_TOOLBAR_ICON_MAIL_SEND,
-                       MODEST_TOOLBAR_ICON_NEW_MAIL,
-                       MODEST_TOOLBAR_ICON_SEND_RECEIVE, 
-                       MODEST_TOOLBAR_ICON_REPLY,      
-                       MODEST_TOOLBAR_ICON_REPLY_ALL,
-                       MODEST_TOOLBAR_ICON_FORWARD,
-                       MODEST_TOOLBAR_ICON_DELETE, 
-/*                     MODEST_TOOLBAR_ICON_NEXT, */
-/*                     MODEST_TOOLBAR_ICON_PREV, */
-/*                     MODEST_TOOLBAR_ICON_STOP */
-               };
-
-               registered = TRUE;
-
-               /* Register our stock items */
-               gtk_stock_add (items, G_N_ELEMENTS (items));
-      
-               /* Add our custom icon factory to the list of defaults */
-               factory = gtk_icon_factory_new ();
-               gtk_icon_factory_add_default (factory);
-
-               /* Register icons to accompany stock items */
-               for (i = 0; i < G_N_ELEMENTS (items); i++) {
-                       pixbuf = NULL;
-                       pixbuf = gdk_pixbuf_new_from_file (items_names[i], NULL);
-
-                       if (pixbuf != NULL) {
-                               GtkIconSet *icon_set;
-                               GdkPixbuf *transparent;
-
-                               transparent = gdk_pixbuf_add_alpha (pixbuf, TRUE, 0xff, 0xff, 0xff);
-
-                               icon_set = gtk_icon_set_new_from_pixbuf (transparent);
-                               gtk_icon_factory_add (factory, items[i].stock_id, icon_set);
-                               gtk_icon_set_unref (icon_set);
-                               g_object_unref (pixbuf);
-                               g_object_unref (transparent);
-                       }
-                       else
-                               g_warning ("failed to load %s icon", items_names[i]);
-               }
-               /* Drop our reference to the factory, GTK will hold a reference. */
-               g_object_unref (factory);
-       }
-}
-
-
-static void
-init_test_accounts (ModestAccountMgr *acc_mgr)
-{
-       const gchar *imap_test = "TnyImapTest";
-       const gchar *pop_test  = "TnyPopTest";
-       const gchar *smtp_test = "TnySmtpTest";
-
-       if (!modest_account_mgr_account_exists (acc_mgr, imap_test, FALSE)) 
-               modest_account_mgr_add_server_account (acc_mgr,
-                                                      imap_test,
-                                                      "imap2.tinymail.org",
-                                                      "tnytest", "tnytest",
-                                                      MODEST_PROTOCOL_STORE_IMAP,
-                                                      MODEST_PROTOCOL_SECURITY_NONE,
-                                                      MODEST_PROTOCOL_AUTH_NONE);
-       if (!modest_account_mgr_account_exists (acc_mgr, pop_test, FALSE)) 
-               modest_account_mgr_add_server_account (acc_mgr,
-                                                      pop_test,
-                                                      "imap2.tinymail.org",
-                                                      "tnytest", "tnytest",
-                                                      MODEST_PROTOCOL_STORE_POP,
-                                                      MODEST_PROTOCOL_SECURITY_NONE,
-                                                      MODEST_PROTOCOL_AUTH_NONE);
-       if (!modest_account_mgr_account_exists (acc_mgr, smtp_test, FALSE)) 
-               modest_account_mgr_add_server_account (acc_mgr,
-                                                      smtp_test,
-                                                      "127.0.0.1",
-                                                      NULL,NULL,
-                                                      MODEST_PROTOCOL_TRANSPORT_SMTP,
-                                                      MODEST_PROTOCOL_SECURITY_NONE,
-                                                      MODEST_PROTOCOL_AUTH_NONE);
-       
-       modest_account_mgr_add_account (acc_mgr, imap_test, imap_test, smtp_test);
-       modest_account_mgr_add_account (acc_mgr,  pop_test, pop_test,  smtp_test);
-}