X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-init.c;h=b805bff5011f7856793681676630ce341814f210;hb=180a6c986b177f0818ca0e25d35da5bb702d2039;hp=7ea6bbb8b969eea6d5484b7d25e2f6822f878f4a;hpb=f5e5c3fb8192bf154558bfa1e08a889685532bf3;p=modest diff --git a/src/modest-init.c b/src/modest-init.c index 7ea6bbb..b805bff 100644 --- a/src/modest-init.c +++ b/src/modest-init.c @@ -49,10 +49,9 @@ #include "widgets/modest-global-settings-dialog.h" #include "modest-tny-msg.h" #ifdef MODEST_PLATFORM_MAEMO -#include -#else -#include +#include "modest-hildon-includes.h" #endif +#include static gboolean init_header_columns (ModestConf *conf, gboolean overwrite); static gboolean init_default_account_maybe (ModestAccountMgr *acc_mgr); @@ -72,6 +71,9 @@ typedef struct { gint sort; } FolderCols; + +static const guint MODEST_MAIN_PANED_POS = 280; + static const FolderCols INBOX_COLUMNS_DETAILS[] = { {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40, 0}, {MODEST_HEADER_VIEW_COLUMN_ATTACH, 40, 0}, @@ -119,9 +121,58 @@ static const TnyFolderType LOCAL_FOLDERS[] = { }; #endif /* MODEST_PLATFORM_MAEMO */ +static GList* new_cold_ids_gslist_from_array( const FolderCols* cols, guint col_num) +{ + GList *result = NULL; + + guint i = 0; + for (i = 0; i < col_num; ++i) { + result = g_list_append (result, GINT_TO_POINTER (cols[i].col)); + } + + return result; +} + +GList* +modest_init_get_default_header_view_column_ids (TnyFolderType folder_type, ModestHeaderViewStyle style) +{ + GList *result = NULL; + + switch (folder_type) { + case TNY_FOLDER_TYPE_SENT: + case TNY_FOLDER_TYPE_DRAFTS: + if (style == MODEST_HEADER_VIEW_STYLE_DETAILS) + result = new_cold_ids_gslist_from_array (OUTBOX_COLUMNS_DETAILS, + G_N_ELEMENTS(OUTBOX_COLUMNS_DETAILS)); + else if (style == MODEST_HEADER_VIEW_STYLE_TWOLINES) + result = new_cold_ids_gslist_from_array (SENT_COLUMNS_TWOLINES, + G_N_ELEMENTS(SENT_COLUMNS_TWOLINES)); + break; + case TNY_FOLDER_TYPE_OUTBOX: + if (style == MODEST_HEADER_VIEW_STYLE_TWOLINES) + result = new_cold_ids_gslist_from_array (OUTBOX_COLUMNS_TWOLINES, + G_N_ELEMENTS(OUTBOX_COLUMNS_TWOLINES)); + break; + + default: + if (style == MODEST_HEADER_VIEW_STYLE_DETAILS) + result = new_cold_ids_gslist_from_array (INBOX_COLUMNS_DETAILS, + G_N_ELEMENTS(INBOX_COLUMNS_DETAILS)); + else if (style == MODEST_HEADER_VIEW_STYLE_TWOLINES) + result = new_cold_ids_gslist_from_array (INBOX_COLUMNS_TWOLINES, + G_N_ELEMENTS(INBOX_COLUMNS_TWOLINES)); + }; + + if (!result) { + g_warning("DEBUG: %s: No default columns IDs found for " + "folder_type=%d, style=%d\n", __FUNCTION__, folder_type, style); + } + + return result; +} gboolean -modest_init_init_core (void) +modest_init_init_core (int argc, char *argv[]) { gboolean reset; static gboolean invoked = FALSE; @@ -137,10 +188,12 @@ modest_init_init_core (void) init_debug_g_type(); init_debug_logging(); - if (!g_thread_supported()) - g_thread_init(NULL); - - gdk_threads_init (); + if (!gnome_vfs_initialized()) { + if (!gnome_vfs_init ()) { + g_printerr ("modest: failed to init gnome-vfs\n"); + return FALSE; + } + } if (!modest_runtime_init()) { modest_init_uninit (); @@ -148,17 +201,17 @@ modest_init_init_core (void) return FALSE; } - + /* do an initial guess for the device name */ init_device_name (modest_runtime_get_conf()); - if (!modest_platform_init()) { + + if (!modest_platform_init(argc, argv)) { modest_init_uninit (); g_printerr ("modest: failed to run platform-specific initialization\n"); return FALSE; } - /* 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_runtime_get_conf(), reset)) { modest_init_uninit (); @@ -200,8 +253,11 @@ modest_init_init_ui (gint argc, gchar** argv) init_stock_icons (); /* Init notification system */ +#ifdef MODEST_HAVE_HILDON_NOTIFY notify_init ("Basics"); +#endif + return TRUE; } @@ -211,7 +267,10 @@ modest_init_uninit (void) { if (!modest_runtime_uninit()) g_printerr ("modest: failed to uninit runtime\n"); - + + if (gnome_vfs_initialized()) + gnome_vfs_shutdown (); + return TRUE; } @@ -229,6 +288,8 @@ save_header_settings (ModestConf *conf, TnyFolderType type, { int i; gchar *key; + gchar *sort_key; + gchar *sort_value; GString *str; g_return_val_if_fail (cols, FALSE); @@ -236,10 +297,14 @@ save_header_settings (ModestConf *conf, TnyFolderType type, key = _modest_widget_memory_get_keyname_with_double_type ("header-view", type, style, MODEST_WIDGET_MEMORY_PARAM_COLUMN_WIDTH); + sort_key = _modest_widget_memory_get_keyname_with_double_type ("header-view", + type, style, + MODEST_WIDGET_MEMORY_PARAM_COLUMN_SORT); /* 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); + g_free (sort_key); return TRUE; } @@ -252,6 +317,18 @@ save_header_settings (ModestConf *conf, TnyFolderType type, modest_conf_set_string (conf, key, str->str, NULL); g_free (key); g_string_free (str, TRUE); + + if ( col_num > 0 ) { + gint sort_col_id; + if (cols[i].col == MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT) + sort_col_id = TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN; + else + sort_col_id = TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN; + sort_value = g_strdup_printf("%d:%d:%d", sort_col_id, GTK_SORT_DESCENDING, 0); + modest_conf_set_string (conf, sort_key, sort_value, NULL); + g_free (sort_value); + } + g_free (sort_key); return TRUE; } @@ -269,6 +346,7 @@ static gboolean init_header_columns (ModestConf *conf, gboolean overwrite) { int folder_type; + gchar *key; for (folder_type = TNY_FOLDER_TYPE_UNKNOWN; folder_type <= TNY_FOLDER_TYPE_CALENDAR; ++folder_type) { @@ -308,6 +386,14 @@ init_header_columns (ModestConf *conf, gboolean overwrite) overwrite); }; } + + key = _modest_widget_memory_get_keyname (MODEST_CONF_MAIN_PANED_KEY, MODEST_WIDGET_MEMORY_PARAM_POS); + /* if we're not in overwrite mode, only write stuff it + * there was nothing before */ + if (overwrite || !modest_conf_key_exists(conf, key, NULL)) + modest_conf_set_int (conf, key, MODEST_MAIN_PANED_POS, NULL); + + g_free (key); return TRUE; } @@ -346,15 +432,31 @@ gboolean modest_init_one_local_folder (gchar *maildir_path) gboolean modest_init_local_folders (const gchar* location_filepath) { + gboolean retval = TRUE; + gchar *maildir_path = modest_local_folder_info_get_maildir_path (location_filepath); if (location_filepath) { - /* For instance, for memory card, just create the top-level .modest folder: */ + /* For instance, for memory card, just create the top-level .modest folder + * and one "archive" folder (so that messages can be put somewhere): + */ + + gchar *dir = g_build_filename (maildir_path, + "Archive", NULL); + const gboolean created = modest_init_one_local_folder (dir); + g_free(dir); + + if (!created) { + retval = FALSE; + } + + #if 0 + /* Do this if we only create the top-level dir: */ if (g_mkdir_with_parents (maildir_path, 0755) < 0) { g_printerr ("modest: %s: failed to create %s\n", __FUNCTION__, location_filepath); - g_free (maildir_path); - return FALSE; + retval = FALSE; } + #endif } else { /* Create each of the standard on-disk folders. @@ -368,14 +470,13 @@ modest_init_local_folders (const gchar* location_filepath) g_free(dir); if (!created) { - g_free (maildir_path); - return FALSE; + retval = FALSE; } } } g_free (maildir_path); - return TRUE; + return retval; } /** @@ -440,16 +541,20 @@ init_i18n (void) const gchar* gettext_package; /* Setup gettext, to use our .po files: */ /* GETTEXT_PACKAGE and MODEST_LOCALE_DIR are defined in config.h */ -#ifdef MODEST_HILDON_VERSION_0 - gettext_package = GETTEXT_PACKAGE; - bindtextdomain (gettext_package, MODEST_LOCALE_DIR); -#else - gettext_package = "osso-email"; /* HACK to use the localizations */ - bindtextdomain (gettext_package, "/usr/share/locale"); -#endif /*MODEST_HILDON_VERSION_0*/ +/* #ifdef MODEST_HILDON_VERSION_0 */ +/* gettext_package = GETTEXT_PACKAGE; */ +/* bindtextdomain (gettext_package, MODEST_LOCALE_DIR); */ +/* #else */ +/* gettext_package = "osso-email"; /\* HACK to use the localizations *\/ */ +/* bindtextdomain (gettext_package, "/usr/share/locale"); */ +/* #endif /\*MODEST_HILDON_VERSION_0*\/ */ + gettext_package = GETTEXT_PACKAGE; + bind_textdomain_codeset (gettext_package, "UTF-8"); textdomain (gettext_package); + + setlocale (LC_ALL, ""); } @@ -598,7 +703,7 @@ init_default_settings (ModestConf *conf) static void init_device_name (ModestConf *conf) { - int len = 255; /* max len */ + unsigned int len = 255; /* max len */ gchar *devname = NULL; if (!g_file_get_contents("/etc/hostname", &devname, &len, NULL) || len < 2 || len > 254) {