#include <modest-account-mgr.h>
#include <modest-account-mgr-helpers.h>
#include <modest-icon-names.h>
+#include "widgets/modest-global-settings-dialog.h"
+#include "modest-tny-msg.h"
static gboolean init_header_columns (ModestConf *conf, gboolean overwrite);
static gboolean init_local_folders (void);
static void init_debug_g_type (void);
static void init_debug_logging (void);
static void init_default_settings (ModestConf *conf);
+static void init_device_name (ModestConf *conf);
/*
* defaults for the column headers
typedef struct {
ModestHeaderViewColumn col;
guint width;
+ gint sort;
} 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}
+ {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_ATTACH, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_FROM, 80, 0},
+ {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 80, 0},
+ {MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE, 60, 0},
+ {MODEST_HEADER_VIEW_COLUMN_SIZE, 50, 0}
};
static const FolderCols INBOX_COLUMNS_TWOLINES[] = {
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40},
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN, 180},
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE, 240}
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN, 180, 0},
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE, 240, -1}
};
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}
+ {MODEST_HEADER_VIEW_COLUMN_MSGTYPE, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_ATTACH, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_TO, 80, 0},
+ {MODEST_HEADER_VIEW_COLUMN_SUBJECT, 80, 0},
+ {MODEST_HEADER_VIEW_COLUMN_SENT_DATE, 80, 0},
+ {MODEST_HEADER_VIEW_COLUMN_SIZE, 50, 0}
};
static const FolderCols OUTBOX_COLUMNS_TWOLINES[] = {
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40},
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,180},
- {MODEST_HEADER_VIEW_COLUMN_STATUS, 240}
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,180, 0},
+ {MODEST_HEADER_VIEW_COLUMN_STATUS, 240, 0}
};
static const FolderCols SENT_COLUMNS_TWOLINES[] = {
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40},
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,180},
- {MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE, 240}
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, 40, 0},
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,180, 0},
+ {MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE, 240, -1}
};
#ifdef MODEST_PLATFORM_MAEMO
static const TnyFolderType LOCAL_FOLDERS[] = {
- TNY_FOLDER_TYPE_OUTBOX,
+/* TNY_FOLDER_TYPE_OUTBOX, */
TNY_FOLDER_TYPE_DRAFTS,
TNY_FOLDER_TYPE_SENT
};
#else
static const TnyFolderType LOCAL_FOLDERS[] = {
- TNY_FOLDER_TYPE_OUTBOX,
+/* TNY_FOLDER_TYPE_OUTBOX, */
TNY_FOLDER_TYPE_DRAFTS,
TNY_FOLDER_TYPE_SENT,
TNY_FOLDER_TYPE_TRASH,
init_debug_g_type();
init_debug_logging();
- g_thread_init(NULL);
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+
gdk_threads_init ();
if (!modest_runtime_init()) {
return FALSE;
}
+
+ /* do an initial guess for the device name */
+ init_device_name (modest_runtime_get_conf());
+
if (!modest_platform_init()) {
modest_init_uninit ();
g_printerr ("modest: failed to run platform-specific initialization\n");
/* Set application name */
g_set_application_name (modest_platform_get_app_name());
- g_warning (modest_platform_get_app_name());
+ /* g_message (modest_platform_get_app_name()); */
init_stock_icons ();
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);
+ g_string_append_printf (str, "%d:%d:%d ",
+ cols[i].col, cols[i].width, cols[i].sort);
modest_conf_set_string (conf, key, str->str, NULL);
g_free (key);
return TRUE;
}
+gboolean modest_init_one_local_folder (gchar *maildir_path)
+{
+ static const gchar* maildirs[] = {
+ "cur", "new", "tmp"
+ };
+
+ int j;
+ for (j = 0; j != G_N_ELEMENTS(maildirs); ++j) {
+ gchar *dir = g_build_filename (maildir_path,
+ maildirs[j],
+ NULL);
+ if (g_mkdir_with_parents (dir, 0755) < 0) {
+ g_printerr ("modest: failed to create %s\n", dir);
+ g_free (dir);
+ return FALSE;
+ }
+
+ g_free (dir);
+ }
+
+ return TRUE;
+}
+
/**
* init_local_folders:
*
*/
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 ();
+{
+ gchar *maildir_path = modest_local_folder_info_get_maildir_path ();
+ /* Create each of the standard on-disk folders.
+ * Per-account outbox folders will be created when first needed. */
+ int i;
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,
+ gchar *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);
+ NULL);
+ const gboolean created = modest_init_one_local_folder (dir);
+ g_free(dir);
+
+ if (!created) {
+ g_free (maildir_path);
+ return FALSE;
}
}
}
-
+/* TODO: This is a duplicate of modest_account_mgr_set_first_account_as_default(). */
/**
* init_default_account_maybe:
*
gchar *default_account;
gboolean retval = TRUE;
- all_accounts = modest_account_mgr_account_names (acc_mgr);
+ all_accounts = modest_account_mgr_account_names (acc_mgr, TRUE /* enabled accounts only */);
if (all_accounts) { /* if there are any accounts, there should be a default one */
default_account =
modest_account_mgr_get_default_account (acc_mgr);
init_debug_g_type (void)
{
GTypeDebugFlags gflags;
- ModestInitDebugFlags mflags;
+ ModestRuntimeDebugFlags mflags;
gflags = 0;
mflags = modest_runtime_get_debug_flags ();
- if (mflags & MODEST_INIT_DEBUG_DEBUG_OBJECTS)
+ if (mflags & MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS)
gflags |= G_TYPE_DEBUG_OBJECTS;
- if (mflags & MODEST_INIT_DEBUG_DEBUG_SIGNALS)
+ 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)
{
- ModestInitDebugFlags mflags;
+ ModestRuntimeDebugFlags mflags;
mflags = modest_runtime_get_debug_flags ();
- if (mflags & MODEST_INIT_DEBUG_ABORT_ON_WARNING)
+ 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)
{
+ const gchar* gettext_package;
/* Setup gettext, to use our .po files: */
/* GETTEXT_PACKAGE and MODEST_LOCALE_DIR are defined in config.h */
- bindtextdomain (GETTEXT_PACKAGE, MODEST_LOCALE_DIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
+#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*/
+
+ bind_textdomain_codeset (gettext_package, "UTF-8");
+ textdomain (gettext_package);
}
if (!modest_conf_key_exists (conf, MODEST_CONF_CONNECT_AT_STARTUP, NULL))
modest_conf_set_bool (conf, MODEST_CONF_CONNECT_AT_STARTUP, TRUE, NULL);
+ /* Global settings */
+ if (!modest_conf_key_exists (conf, MODEST_CONF_AUTO_UPDATE, NULL))
+ modest_conf_set_bool (conf, MODEST_CONF_AUTO_UPDATE, TRUE, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_UPDATE_WHEN_CONNECTED_BY, NULL))
+ modest_conf_set_int (conf, MODEST_CONF_UPDATE_WHEN_CONNECTED_BY, MODEST_CONNECTED_VIA_WLAN, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_UPDATE_INTERVAL, NULL))
+ modest_conf_set_int (conf, MODEST_CONF_UPDATE_INTERVAL, MODEST_UPDATE_INTERVAL_15_MIN, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_MSG_SIZE_LIMIT, NULL))
+ modest_conf_set_int (conf, MODEST_CONF_MSG_SIZE_LIMIT, 1000, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_PLAY_SOUND_MSG_ARRIVE, NULL))
+ modest_conf_set_bool (conf, MODEST_CONF_PLAY_SOUND_MSG_ARRIVE, FALSE, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, NULL))
+ modest_conf_set_bool (conf, MODEST_CONF_PREFER_FORMATTED_TEXT, TRUE, NULL);
+
+ if (!modest_conf_key_exists (conf, MODEST_CONF_REPLY_TYPE, NULL))
+ modest_conf_set_int (conf, MODEST_CONF_REPLY_TYPE, MODEST_TNY_MSG_REPLY_TYPE_QUOTE, NULL);
+}
+
+
+/* set the device name -- note this is an initial guess from /etc/hostname
+ * on maemo-device it will most probably be replaced with the Bluetooth device
+ * name later during starting (see maemo/modest-maemo-utils.[ch])
+ */
+static void
+init_device_name (ModestConf *conf)
+{
+ int len = 255; /* max len */
+ gchar *devname = NULL;
+
+ if (!g_file_get_contents("/etc/hostname", &devname, &len, NULL) || len < 2 || len > 254) {
+ g_printerr ("modest: failed to read hostname\n");
+ modest_conf_set_string (conf, MODEST_CONF_DEVICE_NAME,
+ MODEST_LOCAL_FOLDERS_DEFAULT_DISPLAY_NAME,
+ NULL);
+ } else {
+ /* remove the \n at the end */
+ if (devname[len-1] == '\n')
+ devname[len-1] = '\0';
+ else
+ devname[len] = '\0';
+
+ GError *err = NULL;
+ if (!modest_conf_set_string (conf, MODEST_CONF_DEVICE_NAME,devname, &err)) {
+ g_printerr ("modest: error setting device name '%s': %s",
+ devname, err ? err->message: "?");
+ g_error_free (err);
+ }
+ }
+
+ g_free (devname);
}