* modest-tny-account-store.[ch]:
[modest] / src / modest-init.c
index de67233..a9568d5 100644 (file)
  */
 
 #include <config.h>
+#include <modest-defs.h>
 #include <widgets/modest-header-view.h>
 #include <widgets/modest-folder-view.h>
 #include <modest-tny-platform-factory.h>
 #include <modest-widget-memory.h>
 #include <modest-widget-memory-priv.h>
+#include <modest-local-folder-info.h>
 #include <modest-init.h>
+#include <glib/gstdio.h>
+#include <modest-account-mgr.h>
+#include <modest-account-mgr-helpers.h>
 
 typedef struct {
        ModestHeaderViewColumn col;
        guint                  width;
 } FolderCols;
 
-
-#if MODEST_PLATFORM_ID==1   /*gtk*/
-static const FolderCols INBOX_COLUMNS[] = {
-       {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 20},
-       {MODEST_HEADER_VIEW_COLUMN_ATTACH,  20},
-       {MODEST_HEADER_VIEW_COLUMN_FROM,    50},
-       {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 50},
-       {MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE, 50},
-       {MODEST_HEADER_VIEW_COLUMN_SIZE, 30},
+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[] = {
-        {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 20},
-        {MODEST_HEADER_VIEW_COLUMN_ATTACH,  20},
-        {MODEST_HEADER_VIEW_COLUMN_TO,    50},
-        {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 50},
-        {MODEST_HEADER_VIEW_COLUMN_SENT_DATE, 50},
-        {MODEST_HEADER_VIEW_COLUMN_SIZE, 30},
+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}
 };
-#elif MODEST_PLATFORM==2  /*maemo*/
-static const FolderCols INBOX_COLUMNS = {
-       {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 20},
-       {MODEST_HEADER_VIEW_COLUMN_ATTACH,  20},
-       {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN,150},
+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 FolderCols OUTBOX_COLUMNS = {
-        {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 20},
-        {MODEST_HEADER_VIEW_COLUMN_ATTACH,  20},
-        {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,150},
+        
+static const TnyFolderType LOCAL_FOLDERS[] = {
+       TNY_FOLDER_TYPE_OUTBOX,
+       TNY_FOLDER_TYPE_DRAFTS,
+       TNY_FOLDER_TYPE_SENT,
+       TNY_FOLDER_TYPE_ARCHIVE 
 };
-#endif /*MODEST_PLATFORM*/
-
 
 static ModestTnyPlatformFactory*
 get_platform_factory (void)
@@ -103,13 +110,29 @@ get_modest_conf (void)
 }
 
 
+static ModestAccountMgr*
+get_account_mgr (void)
+{
+       ModestTnyPlatformFactory *fact =
+               get_platform_factory ();
+       ModestAccountMgr *acc_mgr =
+               modest_tny_platform_factory_get_account_mgr_instance (fact);
+       if (!acc_mgr) {
+               g_printerr ("modest: cannot get modest account mgr instance\n");
+               return NULL;
+       }
+       return acc_mgr;
+}
+
+
 /* 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, const FolderCols* cols,
-                    guint col_num, gboolean overwrite)
+save_header_settings (ModestConf *conf, TnyFolderType type,
+                     ModestHeaderViewStyle style,  const FolderCols* cols,
+                     guint col_num, gboolean overwrite)
 {
        int i;
        gchar *key;
@@ -117,9 +140,9 @@ save_header_settings (ModestConf *conf, TnyFolderType type, const FolderCols* co
 
        g_return_val_if_fail (cols, FALSE);
 
-       key = _modest_widget_memory_get_keyname_with_type ("header-view",
-                                                          type,
-                                                          MODEST_WIDGET_MEMORY_PARAM_COLUMN_WIDTH);
+       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)) {
@@ -160,14 +183,29 @@ modest_init_header_columns (gboolean overwrite)
                case TNY_FOLDER_TYPE_OUTBOX:
                case TNY_FOLDER_TYPE_SENT:
                case TNY_FOLDER_TYPE_DRAFTS:
-                       save_header_settings (conf, folder_type, OUTBOX_COLUMNS,
-                                             G_N_ELEMENTS(OUTBOX_COLUMNS),
-                                             overwrite);
-                       break;
+               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, INBOX_COLUMNS,
-                                             G_N_ELEMENTS(INBOX_COLUMNS),
-                                             overwrite);
+               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;
@@ -176,5 +214,78 @@ modest_init_header_columns (gboolean overwrite)
 gboolean
 modest_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);
+}
+
+
+gboolean
+modest_init_default_account_maybe  (void)
+{
+       ModestAccountMgr *acc_mgr;
+
+       GSList *all_accounts = NULL;
+       gchar *default_account;
+       gboolean retval = TRUE;
+       
+       acc_mgr = get_account_mgr ();
+       if (!acc_mgr) {
+               g_printerr ("modest: cannot get modest account mgr\n");
+               return FALSE;
+       }
+
+       all_accounts = modest_account_mgr_account_names (acc_mgr, NULL);
+       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;
+}