X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-maemo-utils.c;h=40269d6765ad30b3b598a74cbe83a45c89d94de0;hp=573c78f3f6b84e979bf8b357db55f93e5b8fd944;hb=2dea0f12d724484854dd1bf75c0bad05fa151ab2;hpb=4db44f57690ed2e6f418a12a2e0eeddf4cf22084 diff --git a/src/hildon2/modest-maemo-utils.c b/src/hildon2/modest-maemo-utils.c index 573c78f..40269d6 100644 --- a/src/hildon2/modest-maemo-utils.c +++ b/src/hildon2/modest-maemo-utils.c @@ -53,10 +53,16 @@ #include "modest-platform.h" #include "modest-ui-constants.h" #include +#ifdef MODEST_USE_IPHB +#include +#endif /* Label child of a captioned */ #define CAPTIONED_LABEL_CHILD "captioned-label" +#ifdef MODEST_PLATFORM_MAEMO +#define INTERNAL_MMC_USB_MODE "/system/osso/af/internal-mmc-used-over-usb" +#endif static osso_context_t *__osso_context = NULL; /* urgh global */ @@ -64,18 +70,12 @@ osso_context_t * modest_maemo_utils_get_osso_context (void) { if (!__osso_context) - g_debug ("%s: __osso_context == NULL", __FUNCTION__); + __osso_context = osso_initialize(PACKAGE,PACKAGE_VERSION, + FALSE, NULL); 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; -} - static void get_properties_cb (DBusMessage *message) { @@ -199,7 +199,10 @@ modest_maemo_utils_get_device_name (void) get_default_adapter_cb (conn, msg); dbus_message_unref (msg); } + dbus_message_unref (request); + if (dbus_error_is_set (&error)) + dbus_error_free (&error); } void @@ -212,14 +215,19 @@ modest_maemo_utils_setup_images_filechooser (GtkFileChooser *chooser) g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - conf_folder = modest_conf_get_string (modest_runtime_get_conf (), MODEST_CONF_LATEST_INSERT_IMAGE_PATH, NULL); + conf_folder = modest_conf_get_string (modest_runtime_get_conf (), + MODEST_CONF_LATEST_INSERT_IMAGE_PATH, NULL); if (conf_folder && conf_folder[0] != '\0') { gtk_file_chooser_set_current_folder_uri (chooser, conf_folder); } else { gchar *images_folder; /* Set the default folder to images folder */ - images_folder = g_build_filename (g_getenv (MODEST_MAEMO_UTILS_MYDOCS_ENV), - MODEST_MAEMO_UTILS_DEFAULT_IMAGE_FOLDER, NULL); + images_folder = (gchar *) g_strdup(g_get_user_special_dir (G_USER_DIRECTORY_PICTURES)); + if (!images_folder) { + /* fallback */ + images_folder = g_build_filename (g_getenv (MODEST_MAEMO_UTILS_MYDOCS_ENV), + MODEST_MAEMO_UTILS_DEFAULT_IMAGE_FOLDER, NULL); + } gtk_file_chooser_set_current_folder (chooser, images_folder); g_free (images_folder); } @@ -227,33 +235,15 @@ modest_maemo_utils_setup_images_filechooser (GtkFileChooser *chooser) /* Set the images mime filter */ file_filter = gtk_file_filter_new (); -#ifdef MODEST_HAVE_HILDON0_WIDGETS - image_mimetypes_list = osso_mime_get_mime_types_for_category (OSSO_MIME_CATEGORY_IMAGES); -#else image_mimetypes_list = hildon_mime_get_mime_types_for_category (HILDON_MIME_CATEGORY_IMAGES); -#endif for (node = image_mimetypes_list; node != NULL; node = g_list_next (node)) { gtk_file_filter_add_mime_type (file_filter, node->data); } gtk_file_chooser_set_filter (chooser, file_filter); -#ifdef MODEST_HAVE_HILDON0_WIDGETS - osso_mime_types_list_free (image_mimetypes_list); -#else hildon_mime_types_list_free (image_mimetypes_list); -#endif } -void -modest_maemo_set_thumbable_scrollbar (GtkScrolledWindow *win, - gboolean thumbable) -{ - g_return_if_fail (GTK_IS_SCROLLED_WINDOW(win)); -#ifdef MODEST_HAVE_HILDON1_WIDGETS - hildon_helper_set_thumb_scrollbar (win, thumbable); -#endif /* MODEST_HAVE_HILDON1_WIDGETS */ -} - GtkWidget * modest_maemo_utils_get_manager_menubar_as_menu (GtkUIManager *manager, const gchar *item_name) @@ -527,6 +517,7 @@ modest_maemo_utils_select_attachments (GtkWindow *window, TnyList *att_list, gbo selector = GTK_WIDGET (hildon_touch_selector_new ()); renderer = gtk_cell_renderer_text_new (); + g_object_set((GObject *) renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); hildon_touch_selector_append_column (HILDON_TOUCH_SELECTOR (selector), model, renderer, "text", 0, NULL); hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector), @@ -570,3 +561,132 @@ modest_maemo_utils_select_attachments (GtkWindow *window, TnyList *att_list, gbo return result; } + +#ifdef MODEST_PLATFORM_MAEMO +gboolean +modest_maemo_utils_in_usb_mode () +{ + return modest_conf_get_bool (modest_runtime_get_conf (), INTERNAL_MMC_USB_MODE, NULL); +} +#endif + +#ifdef MODEST_USE_IPHB + +typedef struct _ModestHeartbeatSource { + GSource source; + iphb_t iphb; + GPollFD poll; + gint interval; +} ModestHeartbeatSource; + +static gboolean modest_heartbeat_prepare (GSource* source, gint *timeout) +{ + *timeout = -1; + return FALSE; +} + +static gboolean +modest_heartbeat_check(GSource* source) +{ + return ((ModestHeartbeatSource *) source)->poll.revents != 0; +} + +static gboolean modest_heartbeat_dispatch (GSource *source, GSourceFunc callback, gpointer userdata) +{ + if (callback(userdata)) + { + ModestHeartbeatSource *hb_source = (ModestHeartbeatSource *) source; + + g_source_remove_poll (source, &(hb_source->poll)); + + int min = MAX(hb_source->interval - 30, 5); + iphb_wait(hb_source->iphb, min, min + 60, 0); + + hb_source->poll.fd = iphb_get_fd(hb_source->iphb); + hb_source->poll.events = G_IO_IN; + hb_source->poll.revents = 0; + + g_source_add_poll(source, &(hb_source->poll)); + + return TRUE; + } else { + return FALSE; + } +} + +static void +modest_heartbeat_finalize (GSource* source) +{ + ModestHeartbeatSource* hb_source = (ModestHeartbeatSource *) source; + hb_source->iphb = iphb_close(hb_source->iphb); +} + +GSourceFuncs modest_heartbeat_funcs = +{ + modest_heartbeat_prepare, + modest_heartbeat_check, + modest_heartbeat_dispatch, + modest_heartbeat_finalize, + NULL, + NULL +}; + +static GSource * +modest_heartbeat_source_new (void) +{ + GSource *source; + ModestHeartbeatSource *hb_source; + iphb_t iphb; + int hb_interval; + + source = NULL; + hb_interval = 0; + + iphb = iphb_open (&hb_interval); + + if (iphb != 0) { + int min; + source = g_source_new (&modest_heartbeat_funcs, sizeof (ModestHeartbeatSource)); + hb_source = (ModestHeartbeatSource *) source; + g_source_set_priority (source, G_PRIORITY_DEFAULT_IDLE); + hb_source->iphb = iphb; + hb_source->interval = hb_interval; + + min = MAX(hb_interval - 30, 5); + iphb_wait(hb_source->iphb, min, min + 60, 0); + + hb_source->poll.fd = iphb_get_fd(hb_source->iphb); + hb_source->poll.events = G_IO_IN; + hb_source->poll.revents = 0; + + g_source_add_poll(source, &(hb_source->poll)); + } else { + source = g_idle_source_new (); + } + + return source; +} + +guint +modest_heartbeat_add (GSourceFunc function, + gpointer userdata) +{ + GSource *source; + guint id; + + source = modest_heartbeat_source_new (); + g_source_set_callback (source, function, userdata, NULL); + id = g_source_attach (source, NULL); + g_source_unref (source); + + return id; +} + +#else +guint +modest_heartbeat_add (GSourceFunc function, + gpointer userdata) +{ + return g_idle_add (function, userdata); +} +#endif