gchar **password, gboolean *cancel, gboolean *remember, ModestWidgetFactory *self);
static void on_item_not_found (ModestHeaderView* header_view, ModestItemType type,
- ModestWidgetFactory *self);
+ gboolean *retry, ModestWidgetFactory *self);
/* list my signals */
static void
on_item_not_found (ModestHeaderView* header_view, ModestItemType type,
- ModestWidgetFactory *self)
+ gboolean *retry, ModestWidgetFactory *self)
{
/* FIXME ==> ask from UI... */
GtkWidget *dialog;
priv = MODEST_WIDGET_FACTORY_GET_PRIVATE(self);
device = tny_account_store_get_device (priv->account_store);
+ *retry = FALSE;
online = tny_device_is_online (device);
if (online) {
gtk_window_set_default_size (GTK_WINDOW(dialog), 300, 300);
gdk_threads_enter ();
- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
tny_device_force_online (device);
+ *retry = TRUE;
+ }
gdk_threads_leave ();
}
gtk_widget_destroy (dialog);
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (ModestHeaderViewClass,item_not_found),
NULL, NULL,
- g_cclosure_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
+ modest_marshal_VOID__INT_POINTER,
+ G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_POINTER);
signals[STATUS_UPDATE_SIGNAL] =
g_signal_new ("status_update",
{
GetMsgAsyncHelper *helper;
TnyHeaderFlags header_flags;
+ gboolean retry;
helper = (GetMsgAsyncHelper *) user_data;
/* mark message as seen; _set_flags crashes, bug in tinymail? */
header_flags = tny_header_get_flags (helper->header);
tny_header_set_flags (helper->header, header_flags | TNY_HEADER_FLAG_SEEN);
- } else
- g_signal_emit (G_OBJECT(helper->self), signals[ITEM_NOT_FOUND_SIGNAL], 0,
- MODEST_ITEM_TYPE_MESSAGE);
+ } else {
+ g_signal_emit (G_OBJECT(helper->self),
+ signals[ITEM_NOT_FOUND_SIGNAL], 0,
+ MODEST_ITEM_TYPE_MESSAGE, &retry);
+ if (retry)
+ tny_folder_get_msg_async (TNY_FOLDER(folder), helper->header,
+ get_msg_cb, helper);
+ }
- /* Frees */
- g_slice_free (GetMsgAsyncHelper, helper);
+ /* Frees */
+ if (!retry)
+ g_slice_free (GetMsgAsyncHelper, helper);
}
static void