From 09dfe9998a95da74c29035fd1a19332be0737cad Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Fri, 2 Nov 2007 14:19:32 +0000 Subject: [PATCH] * maintain the osso_context_t ptr in modest_maemo_utils, a global + accessors * do a proper osso_deinitialize before exiting modest * some small fixes / cleanups pmo-trunk-r3623 --- src/gnome/modest-platform.c | 6 +++ src/maemo/modest-maemo-utils.c | 23 ++++++++- src/maemo/modest-maemo-utils.h | 34 +++++++++++++ src/maemo/modest-platform.c | 105 +++++++++++++++++----------------------- src/modest-init.c | 3 ++ src/modest-platform.h | 23 +++++---- 6 files changed, 121 insertions(+), 73 deletions(-) diff --git a/src/gnome/modest-platform.c b/src/gnome/modest-platform.c index 2f62ecc..3c30170 100644 --- a/src/gnome/modest-platform.c +++ b/src/gnome/modest-platform.c @@ -43,6 +43,12 @@ modest_platform_init (int argc, char *argv[]) } +gboolean modest_platform_uninit (void) +{ + return TRUE; /*nothing to do */ +} + + TnyDevice* modest_platform_get_new_device (void) { diff --git a/src/maemo/modest-maemo-utils.c b/src/maemo/modest-maemo-utils.c index 6d50ee1..40da89c 100644 --- a/src/maemo/modest-maemo-utils.c +++ b/src/maemo/modest-maemo-utils.c @@ -65,7 +65,28 @@ #define BTNAME_MATCH_RULE "type='signal',interface='" BTNAME_SIGNAL_IF \ "',member='" BTNAME_SIG_CHANGED "'" -GQuark modest_maemo_utils_get_supported_secure_authentication_error_quark (void) + +static osso_context_t *__osso_context = NULL; /* urgh global */ + +osso_context_t * +modest_maemo_utils_get_osso_context (void) +{ + if (!__osso_context) + g_warning ("%s: __osso_context == NULL", __FUNCTION__); + + return __osso_context; +} + +void +modest_maemo_utils_set_osso_context (osso_context_t *osso_context) +{ + g_return_if_fail (osso_context); + __osso_context = osso_context; +} + + +GQuark +modest_maemo_utils_get_supported_secure_authentication_error_quark (void) { return g_quark_from_static_string("modest-maemo-utils-get-supported-secure-authentication-error-quark"); } diff --git a/src/maemo/modest-maemo-utils.h b/src/maemo/modest-maemo-utils.h index 42cef66..f2661cb 100644 --- a/src/maemo/modest-maemo-utils.h +++ b/src/maemo/modest-maemo-utils.h @@ -35,6 +35,8 @@ #include /* for FILE* */ #include #include +#include + #define MODEST_MAEMO_UTILS_MYDOCS_FOLDER "MyDocs" #define MODEST_MAEMO_UTILS_DEFAULT_IMAGE_FOLDER ".images" @@ -126,6 +128,18 @@ GList* modest_maemo_utils_get_supported_secure_authentication_methods (ModestTra */ void modest_maemo_utils_setup_images_filechooser (GtkFileChooser *chooser); + +/** + * modest_maemo_utils_get_osso_context: + * + * get the osso_context pointer for this application + * + * Return: the osso context pointer + */ +osso_context_t *modest_maemo_utils_get_osso_context (void); + + + /** modest_maemo_show_information_note_in_main_context_and_forget: * @parent_window: The window for which the note should be transient. * @message: The text to show. @@ -175,4 +189,24 @@ void modest_maemo_set_thumbable_scrollbar (GtkScrolledWindow *win, gboolean thum */ void modest_maemo_toggle_action_set_active_block_notify (GtkToggleAction *action, gboolean value); + +/** + * modest_maemo_get_osso_context: + * + * retrieve the osso context for this application + * + * Returns: the current osso_context_t ptr + */ +osso_context_t* modest_maemo_utils_get_osso_context (void); + +/** + * modest_maemo_set_osso_context: + * + * remember the osso-context for this application + * + * @osso_context: a valid osso_context_t pointer + * + */ +void modest_maemo_utils_set_osso_context (osso_context_t *osso_context); + #endif /*__MODEST_MAEMO_UTILS_H__*/ diff --git a/src/maemo/modest-platform.c b/src/maemo/modest-platform.c index 611800e..aa0ef8d 100644 --- a/src/maemo/modest-platform.c +++ b/src/maemo/modest-platform.c @@ -62,12 +62,9 @@ #endif /*MODEST_HAVE_LIBALARM*/ - #define HILDON_OSSO_URI_ACTION "uri-action" #define URI_ACTION_COPY "copy:" -static osso_context_t *osso_context = NULL; /* urgh global */ - static void on_modest_conf_update_interval_changed (ModestConf* self, const gchar *key, @@ -105,10 +102,12 @@ check_required_files (void) } - +/* the gpointer here is the osso_context. */ gboolean modest_platform_init (int argc, char *argv[]) { + osso_context_t *osso_context; + osso_hw_state_t hw_state = { 0 }; DBusConnection *con; GSList *acc_names; @@ -117,20 +116,18 @@ modest_platform_init (int argc, char *argv[]) g_printerr ("modest: missing required files\n"); return FALSE; } - - osso_context = - osso_initialize(PACKAGE,PACKAGE_VERSION, - FALSE, NULL); + osso_context = osso_initialize(PACKAGE,PACKAGE_VERSION, + FALSE, NULL); if (!osso_context) { g_printerr ("modest: failed to acquire osso context\n"); return FALSE; } + modest_maemo_utils_set_osso_context (osso_context); if ((con = osso_get_dbus_connection (osso_context)) == NULL) { g_printerr ("modest: could not get dbus connection\n"); return FALSE; - } /* Add a D-Bus handler to be used when the main osso-rpc @@ -155,20 +152,9 @@ modest_platform_init (int argc, char *argv[]) modest_dbus_req_handler, NULL /* user_data */); if (result != OSSO_OK) { g_printerr ("modest: Error setting D-BUS callback (%d)\n", result); - return FALSE; + return FALSE; } - /* Add handler for Exit D-BUS messages. - * Not used because osso_application_set_exit_cb() is deprecated and obsolete: - result = osso_application_set_exit_cb(osso_context, - modest_dbus_exit_event_handler, - (gpointer) NULL); - if (result != OSSO_OK) { - g_print("Error setting exit callback (%d)\n", result); - return OSSO_ERROR; - } - */ - /* Register hardware event dbus callback: */ hw_state.shutdown_ind = TRUE; osso_hw_set_event_cb(osso_context, NULL,/*&hw_state*/ modest_osso_cb_hw_state_handler, NULL); @@ -215,10 +201,23 @@ modest_platform_init (int argc, char *argv[]) } #endif /*MODEST_HAVE_ABOOK*/ + return TRUE; +} + +gboolean +modest_platform_uninit (void) +{ + osso_context_t *osso_context = + modest_maemo_utils_get_osso_context (); + if (osso_context) + osso_deinitialize (osso_context); return TRUE; } + + + TnyDevice* modest_platform_get_new_device (void) { @@ -308,7 +307,7 @@ modest_platform_activate_file (const gchar *path, const gchar *mime_type) gchar *uri_path = NULL; uri_path = g_strconcat ("file://", path, NULL); - con = osso_get_dbus_connection (osso_context); + con = osso_get_dbus_connection (modest_maemo_utils_get_osso_context()); if (mime_type) result = hildon_mime_open_file_with_mime_type (con, uri_path, mime_type); @@ -569,8 +568,9 @@ launch_sort_headers_dialog (GtkWindow *parent_window, header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(parent_window), MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW)); } - if (!header_view) return; - + if (!header_view) + return; + /* Add sorting keys */ cols = modest_header_view_get_columns (header_view); if (cols == NULL) return; @@ -620,8 +620,9 @@ launch_sort_headers_dialog (GtkWindow *parent_window, sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN; sort_ids[sort_key] = TNY_HEADER_FLAG_PRIORITY_MASK; priority_sort_id = sort_key; - - sortable = GTK_TREE_SORTABLE (gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view))))); + + sortable = GTK_TREE_SORTABLE (gtk_tree_model_filter_get_model + (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view))))); /* Launch dialogs */ if (!gtk_tree_sortable_get_sort_column_id (sortable, ¤t_sort_colid, ¤t_sort_type)) { @@ -1146,7 +1147,11 @@ modest_platform_run_sort_dialog (GtkWindow *parent_window, dialog = hildon_sort_dialog_new (parent_window); modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog)); - + + hildon_help_dialog_help_enable (GTK_DIALOG(dialog), + "applications_email_sort", + modest_maemo_utils_get_osso_context()); + /* Fill sort keys */ switch (type) { case MODEST_SORT_HEADERS: @@ -1396,12 +1401,11 @@ modest_platform_show_help (GtkWindow *parent_window, const gchar *help_id) { osso_return_t result; - g_return_if_fail (help_id); - g_return_if_fail (osso_context); - - result = hildon_help_show (osso_context, help_id, HILDON_HELP_SHOW_DIALOG); + result = hildon_help_show (modest_maemo_utils_get_osso_context(), + help_id, HILDON_HELP_SHOW_DIALOG); + if (result != OSSO_OK) { gchar *error_msg; error_msg = g_strdup_printf ("FIXME The help topic %s could not be found", help_id); @@ -1412,28 +1416,14 @@ modest_platform_show_help (GtkWindow *parent_window, } } -void -modest_platform_set_dialog_help (GtkDialog *parent_window, - const gchar *help_id) -{ - gboolean result; - g_return_if_fail (help_id); - g_return_if_fail (osso_context); - g_return_if_fail (GTK_IS_DIALOG (parent_window)); - - result = hildon_help_dialog_help_enable (parent_window, help_id, osso_context); - - if (!result) - g_warning ("Help topic %s not found", help_id); - -} - void modest_platform_show_search_messages (GtkWindow *parent_window) { osso_return_t result = OSSO_ERROR; - result = osso_rpc_run_with_defaults (osso_context, "osso_global_search", "search_email", NULL, DBUS_TYPE_INVALID); + result = osso_rpc_run_with_defaults (modest_maemo_utils_get_osso_context(), + "osso_global_search", + "search_email", NULL, DBUS_TYPE_INVALID); if (result != OSSO_OK) { g_warning ("%s: osso_rpc_run_with_defaults() failed.\n", __FUNCTION__); @@ -1445,7 +1435,9 @@ modest_platform_show_addressbook (GtkWindow *parent_window) { osso_return_t result = OSSO_ERROR; - result = osso_rpc_run_with_defaults (osso_context, "osso_addressbook", "top_application", NULL, DBUS_TYPE_INVALID); + result = osso_rpc_run_with_defaults (modest_maemo_utils_get_osso_context(), + "osso_addressbook", + "top_application", NULL, DBUS_TYPE_INVALID); if (result != OSSO_OK) { g_warning ("%s: osso_rpc_run_with_defaults() failed.\n", __FUNCTION__); @@ -1507,18 +1499,11 @@ on_timeout_check_account_is_online(gpointer user_data) { printf ("DEBUG: %s:\n", __FUNCTION__); CheckAccountIdleData *data = (CheckAccountIdleData*)user_data; + + g_return_val_if_fail (data && data->account, FALSE); - if (!data) { - g_warning ("%s: data is NULL.\n", __FUNCTION__); - } - - if (!(data->account)) { - g_warning ("%s: data->account is NULL.\n", __FUNCTION__); - } - - if (data && data->account) { - printf ("DEBUG: %s: tny_account_get_connection_status()==%d\n", __FUNCTION__, tny_account_get_connection_status (data->account)); - } + printf ("DEBUG: %s: tny_account_get_connection_status()==%d\n", __FUNCTION__, + tny_account_get_connection_status (data->account)); gboolean stop_trying = FALSE; if (data && data->account && diff --git a/src/modest-init.c b/src/modest-init.c index f313ed7..ddf2811 100644 --- a/src/modest-init.c +++ b/src/modest-init.c @@ -277,6 +277,9 @@ modest_init_uninit (void) if (!modest_runtime_uninit()) g_printerr ("modest: failed to uninit runtime\n"); + if (!modest_platform_uninit()) + g_printerr ("modest: failed to uninit platform\n"); + _is_initialized = FALSE; return TRUE; } diff --git a/src/modest-platform.h b/src/modest-platform.h index b7fd3f0..7f0d597 100644 --- a/src/modest-platform.h +++ b/src/modest-platform.h @@ -52,7 +52,17 @@ typedef enum _ModestSortDialogType { * Returns: TRUE if succeeded, FALSE otherwise */ gboolean modest_platform_init (int argc, char *argv[]); - + + +/** + * modest_platform_platform_init: + * + * platform specific un-initialization function + * + * Returns: TRUE if succeeded, FALSE otherwise + */ +gboolean modest_platform_uninit (void); + /** * modest_platform_get_new_device: @@ -295,17 +305,6 @@ void modest_platform_show_help (GtkWindow *parent_window, const gchar *help_id); /** - * modest_platform_set_dialog_help: - * @dialog: a #GtkDialog - * @help_id: the help topic id to be shown on requesting - * help in the dialog - * - * attachs a help topic to the dialog - **/ -void modest_platform_set_dialog_help (GtkDialog *parent_window, - const gchar *help_id); - -/** * modest_platform_show_search_messages: * @parent_window: window the dialog will be child of * -- 1.7.9.5