X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-init.c;h=a9568d5b04708289d3ada2e2943fe150637164dd;hp=d17f137f3a88a205d09845c4830145af0d75f91f;hb=d57f2c3462ad26c4758c033f91b2289ff8455137;hpb=1f6bcb80a516f8212bc404ba39165ef8dcde423e diff --git a/src/modest-init.c b/src/modest-init.c index d17f137..a9568d5 100644 --- a/src/modest-init.c +++ b/src/modest-init.c @@ -28,6 +28,7 @@ */ #include +#include #include #include #include @@ -36,51 +37,48 @@ #include #include #include +#include +#include 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 const ModestLocalFolderType LOCAL_FOLDERS[] = { - MODEST_LOCAL_FOLDER_TYPE_OUTBOX, - MODEST_LOCAL_FOLDER_TYPE_DRAFTS, - MODEST_LOCAL_FOLDER_TYPE_SENT, - MODEST_LOCAL_FOLDER_TYPE_ARCHIVE -}; - static ModestTnyPlatformFactory* get_platform_factory (void) @@ -112,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; @@ -126,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)) { @@ -169,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; @@ -186,36 +215,77 @@ gboolean modest_init_local_folders (void) { int i; - gchar *path; + gchar *maildir_path; static const gchar* maildirs[] = { "cur", "new", "tmp" }; - path = g_build_filename (g_get_home_dir(), ".modest", NULL); - - if (g_access (path, W_OK) != 0) { - g_printerr ("modest: cannot write into %s\n", path); - g_free (path); - return FALSE; - } + 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 (path, "local_folders", + 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 (path); + 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; +}