* ui-actions, mail-operation:
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 28 Feb 2007 00:05:22 +0000 (00:05 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 28 Feb 2007 00:05:22 +0000 (00:05 +0000)
- try to improve send/receive.
* runtime:
- add option "tny-test-accounts", to automagically add
  the tny test accounts
* tny-account-store:
- fix bug with getting transport account
- cache the accounts

pmo-trunk-r865

src/modest-mail-operation.c
src/modest-runtime.c
src/modest-runtime.h
src/modest-tny-account-store.c
src/modest-tny-account.c
src/modest-ui-actions.c

index 2337bcc..9e1cec7 100644 (file)
@@ -205,6 +205,8 @@ modest_mail_operation_send_mail (ModestMailOperation *self,
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
        g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (transport_account));
 
+       g_message ("modest: send mail");
+       
        send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
        if (!TNY_IS_SEND_QUEUE(send_queue))
                g_printerr ("modest: could not find send queue for account\n");
@@ -215,7 +217,8 @@ modest_mail_operation_send_mail (ModestMailOperation *self,
                        g_printerr ("modest: error adding msg to send queue: %s\n",
                                    err->message);
                        g_error_free (err);
-               }
+               } else
+                       g_message ("modest: message added to send queue");
        }
 }
 
@@ -468,10 +471,12 @@ folder_refresh_cb (TnyFolder *folder, gboolean canceled, GError **err, gpointer
                g_slice_free (RefreshFolderAsyncHelper, helper);
        } else {
                TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
-               tny_folder_refresh_async (folder, folder_refresh_cb,
-                                         status_update_cb, 
-                                         helper);
-               g_object_unref (G_OBJECT(folder));
+               if (folder) {
+                       g_message ("modest: refreshing folder %s",
+                                  tny_folder_get_name (folder));
+                       tny_folder_refresh_async (folder, folder_refresh_cb, status_update_cb, helper);
+                       g_object_unref (G_OBJECT(folder)); // FIXME: don't unref yet
+               }
        }
        g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
 }
@@ -506,9 +511,12 @@ update_folders_cb (TnyFolderStore *folder_store, TnyList *list, GError **err, gp
 
        /* Async refresh folders */
        folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
-       tny_folder_refresh_async (folder, folder_refresh_cb,
-                                 status_update_cb, helper);
-       g_object_unref (G_OBJECT(folder));
+       if (folder) {
+               g_message ("modest: refreshing folder %s", tny_folder_get_name (folder));
+               tny_folder_refresh_async (folder, folder_refresh_cb,
+                                         status_update_cb, helper);
+       }
+       //g_object_unref (G_OBJECT(folder)); /* FIXME -==> don't unref yet... */
 }
 
 gboolean
@@ -530,8 +538,8 @@ modest_mail_operation_update_account (ModestMailOperation *self,
        tny_folder_store_query_add_item (query, NULL, TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED);
        tny_folder_store_get_folders_async (TNY_FOLDER_STORE (store_account),
                                            folders, update_folders_cb, query, self);
-       g_object_unref (query);
-
+       g_object_unref (query); /* FIXME */
+       
        return TRUE;
 }
 
@@ -679,7 +687,8 @@ modest_mail_operation_remove_folder (ModestMailOperation *self,
                tny_folder_store_remove_folder (parent, folder, &(priv->error));
                CHECK_EXCEPTION (priv, MODEST_MAIL_OPERATION_STATUS_FAILED, );
 
-               if (parent) g_object_unref (G_OBJECT (parent));
+               if (parent)
+                       g_object_unref (G_OBJECT (parent));
        }
        g_object_unref (G_OBJECT (account));
 }
@@ -818,11 +827,13 @@ modest_mail_operation_xfer_msg (ModestMailOperation *self,
 
        tny_list_prepend (headers, G_OBJECT (header));
        tny_folder_transfer_msgs_async (src_folder, headers, folder, 
-                                       delete_original, transfer_msgs_cb, self);
+                                       delete_original, transfer_msgs_cb, 
+                                       g_object_ref(self));
 
        /* Free */
-       g_object_unref (headers);
-       g_object_unref (src_folder);
+       /* FIXME: don't free 'm yet */
+       ///g_object_unref (headers);
+       ///g_object_unref (src_folder);
 
        return TRUE;
 }
index 687c573..6badb49 100644 (file)
@@ -56,6 +56,8 @@ 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;
 
@@ -157,6 +159,10 @@ modest_runtime_init (void)
                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
@@ -281,11 +287,12 @@ ModestRuntimeDebugFlags
 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 },
-               { "factory-settings", MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS }
+               { "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 },
+               { "factory-settings",   MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS},
+               { "tiny-test-accounts", MODEST_RUNTIME_DEBUG_TINY_TEST_ACCOUNTS}
        };
        const gchar *str;
        static ModestRuntimeDebugFlags debug_flags = -1;
@@ -559,11 +566,11 @@ init_stock_icons (void)
                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_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_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 } */
@@ -572,11 +579,11 @@ init_stock_icons (void)
                static gchar *items_names [] = {
                        MODEST_TOOLBAR_ICON_MAIL_SEND,
                        MODEST_TOOLBAR_ICON_NEW_MAIL,
-/*                     MODEST_TOOLBAR_ICON_SEND_RECEIVE, */
+                       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_DELETE, 
 /*                     MODEST_TOOLBAR_ICON_NEXT, */
 /*                     MODEST_TOOLBAR_ICON_PREV, */
 /*                     MODEST_TOOLBAR_ICON_STOP */
@@ -615,3 +622,40 @@ init_stock_icons (void)
                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);
+}
index e0d9ee8..099a02f 100644 (file)
@@ -49,7 +49,8 @@ typedef enum {
        MODEST_RUNTIME_DEBUG_LOG_ACTIONS           = 1 << 1, /* not in use atm */
        MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS         = 1 << 2, /* for g_type_init */
        MODEST_RUNTIME_DEBUG_DEBUG_SIGNALS         = 1 << 3, /* for g_type_init */
-       MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS      = 1 << 4  /* reset to factory defaults */
+       MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS      = 1 << 4, /* reset to factory defaults */
+       MODEST_RUNTIME_DEBUG_TINY_TEST_ACCOUNTS    = 1 << 5
 } ModestRuntimeDebugFlags;
 
 /**
index 558cb0c..5d88be9 100644 (file)
@@ -386,7 +386,7 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, TnyDevice *device)
 
        GObject *obj;
        ModestTnyAccountStorePrivate *priv;
-/*     TnyList *list; */
+       TnyList *list; 
        
        g_return_val_if_fail (account_mgr, NULL);
        g_return_val_if_fail (device, NULL);
@@ -404,12 +404,13 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, TnyDevice *device)
        
        tny_session_camel_set_ui_locker (priv->session,  tny_gtk_lockable_new ());
        /* FIXME: unref this in the end? */
-
+       tny_session_camel_set_async_connecting (priv->session, TRUE);
+       
 /*     /\* force a cache fill... ugly *\/ */
-/*     list = TNY_LIST(tny_simple_list_new()); */
-/*     tny_account_store_get_accounts (TNY_ACCOUNT_STORE(obj), list, */
-/*                                     TNY_ACCOUNT_STORE_BOTH); */
-/*     g_object_unref(list); */
+       list = TNY_LIST(tny_simple_list_new());
+       tny_account_store_get_accounts (TNY_ACCOUNT_STORE(obj), list,
+                                       TNY_ACCOUNT_STORE_BOTH);
+       g_object_unref(list);
        
        /* Connect signals */
        g_signal_connect (G_OBJECT(account_mgr), "account_changed",
@@ -437,6 +438,8 @@ get_cached_accounts (TnyAccountStore *self, TnyList *list, TnyAccountType type)
        }
 }
 
+
+
 /* this function fills the TnyList, and also returns a GSList of the accounts,
  * for caching purposes
  */
@@ -482,11 +485,10 @@ get_accounts  (TnyAccountStore *self, TnyList *list, TnyAccountType type)
                        modest_tny_account_new_for_local_folders (priv->account_mgr, priv->session);
                tny_list_prepend (list, G_OBJECT(tny_account));
                accounts = g_slist_append (accounts, tny_account); /* cache it */
-       }
-
+       }       
        return accounts;
-}
-       
+}      
+
 
 static void
 modest_tny_account_store_get_accounts  (TnyAccountStore *self, TnyList *list,
@@ -671,7 +673,7 @@ modest_tny_account_store_get_tny_account_by_id  (ModestTnyAccountStore *self, co
        for (cursor = priv->store_accounts; cursor ; cursor = cursor->next) {
                const gchar *acc_id = tny_account_get_id (TNY_ACCOUNT(cursor->data));
                if (acc_id && strcmp (acc_id, id) == 0) {
-                       account = TNY_ACCOUNT(cursor->data);
+               account = TNY_ACCOUNT(cursor->data);
                        break;
                }
        }
index 641f076..cd653c6 100644 (file)
@@ -266,4 +266,3 @@ modest_tny_account_new_for_local_folders (ModestAccountMgr *account_mgr, TnySess
        return TNY_ACCOUNT(tny_account);
 }
 
-
index 71cfcc4..991491d 100644 (file)
@@ -192,13 +192,35 @@ modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win)
 void
 modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win)
 {
-       GtkWidget *account_win;
-       account_win = modest_account_view_window_new ();
-
-       if (win)
-               gtk_window_set_transient_for (GTK_WINDOW (account_win), GTK_WINDOW (win));
+       /* GtkDialog *account_win; */
+/*     account_win = GTK_DIALOG(modest_account_view_window_new ()); */
+       
 
-       gtk_widget_show (account_win);
+/*     gtk_dialog_run (account_win); */
+       //gtk_widget_destroy (GTK_WIDGET(account_win));
+ GtkWidget *dialog, *label;
+   
+   /* Create the widgets */
+   
+   dialog = gtk_dialog_new_with_buttons ("Message",
+                                         GTK_WINDOW(win),
+                                         GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         GTK_STOCK_OK,
+                                         GTK_RESPONSE_NONE,
+                                         NULL);
+   label = gtk_label_new ("Hello World!");
+   
+   /* Ensure that the dialog box is destroyed when the user responds. */
+   
+   g_signal_connect_swapped (dialog, "response", 
+                             G_CALLBACK (gtk_widget_destroy),
+                             dialog);
+
+   /* Add the label, and show everything we've added to the dialog. */
+
+   gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),
+                      label);
+   gtk_widget_show_all (dialog);
 }
 
 void
@@ -484,7 +506,8 @@ modest_ui_actions_on_send_receive (GtkAction *action,  ModestWindow *win)
 {
        gchar *account_name;
        TnyAccount *tny_account;
-       ModestTnySendQueue *send_queue;
+       //ModestTnySendQueue *send_queue;
+       ModestMailOperation *mail_op;
        
        account_name =
                g_strdup(modest_window_get_active_account(MODEST_WINDOW(win)));
@@ -494,21 +517,42 @@ modest_ui_actions_on_send_receive (GtkAction *action,  ModestWindow *win)
                g_printerr ("modest: cannot get account\n");
                return;
        }
-       
+       /* FIXME */
+#if 0
        tny_account = 
                modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(),
                                                                     account_name,
                                                                     TNY_ACCOUNT_TYPE_TRANSPORT);
        if (!tny_account) {
-               g_printerr ("modest: cannot get tny transport account\n");
+               g_printerr ("modest: cannot get tny transport account for %s\n", account_name);
                return;
        }
 
        send_queue = modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(tny_account));
+       if (!send_queue) {
+               g_object_unref (G_OBJECT(tny_account));
+               g_printerr ("modest: cannot get send queue for %s\n", account_name);
+               return;
+       } 
        modest_tny_send_queue_flush (send_queue);
 
        g_object_unref (G_OBJECT(send_queue));
        g_object_unref (G_OBJECT(tny_account));
+#endif /*  0 */
+       tny_account = 
+               modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(),
+                                                                    account_name,
+                                                                    TNY_ACCOUNT_TYPE_STORE);
+       if (!tny_account) {
+               g_printerr ("modest: cannot get tny store account for %s\n", account_name);
+               return;
+       }
+
+       mail_op = modest_mail_operation_new ();
+       modest_mail_operation_update_account (mail_op, TNY_STORE_ACCOUNT(tny_account));
+
+       g_object_unref (G_OBJECT(tny_account));
+       /* g_object_unref (G_OBJECT(mail_op)); FIXME: this is still in use... */
 }