| | 386 | } else { |
|---|
| | 387 | gchar *msg = err?err->message:"User canceled the operation"; |
|---|
| | 388 | GtkWidget *dialog = gtk_message_dialog_new ( |
|---|
| | 389 | GTK_WINDOW (gtk_widget_get_parent (GTK_WIDGET (priv->shell))), |
|---|
| | 390 | GTK_DIALOG_DESTROY_WITH_PARENT, |
|---|
| | 391 | GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, msg); |
|---|
| | 392 | g_signal_connect_swapped (dialog, "response", |
|---|
| | 393 | G_CALLBACK (gtk_widget_destroy), dialog); |
|---|
| | 394 | gtk_widget_show_all (dialog); |
|---|
| | 400 | } |
|---|
| | 401 | |
|---|
| | 402 | typedef struct { |
|---|
| | 403 | TMutFolderView *self; |
|---|
| | 404 | TnyFolder *folder; |
|---|
| | 405 | TnyHeader *header; |
|---|
| | 406 | } OnWentOnlineInfo; |
|---|
| | 407 | |
|---|
| | 408 | static void |
|---|
| | 409 | on_went_online (TnyCamelAccount *account, gboolean canceled, GError *err, gpointer user_data) |
|---|
| | 410 | { |
|---|
| | 411 | OnWentOnlineInfo *info = (OnWentOnlineInfo *) user_data; |
|---|
| | 412 | TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (info->self); |
|---|
| | 413 | |
|---|
| | 414 | if (!canceled && !err && (tny_account_get_connection_status (TNY_ACCOUNT (account)) == TNY_CONNECTION_STATUS_CONNECTED)) { |
|---|
| | 415 | tny_folder_get_msg_async (info->folder, info->header, |
|---|
| | 416 | tmut_folder_view_on_got_msg, status_update, |
|---|
| | 417 | g_object_ref (info->self)); |
|---|
| | 418 | } else { |
|---|
| | 419 | gchar *msg; |
|---|
| | 420 | GtkWidget *dialog; |
|---|
| | 421 | |
|---|
| | 422 | if (err) |
|---|
| | 423 | msg = g_strdup_printf ("Can't get message: %s", |
|---|
| | 424 | err->message); |
|---|
| | 425 | else { |
|---|
| | 426 | if (tny_account_get_connection_status (TNY_ACCOUNT (account)) != TNY_CONNECTION_STATUS_CONNECTED) |
|---|
| | 427 | msg = g_strdup ("Can't get message: account not online"); |
|---|
| | 428 | else |
|---|
| | 429 | msg = g_strdup ("Can't get message: User canceled the operation"); |
|---|
| | 430 | } |
|---|
| | 431 | |
|---|
| | 432 | dialog = gtk_message_dialog_new ( |
|---|
| | 433 | GTK_WINDOW (gtk_widget_get_parent (GTK_WIDGET (priv->shell))), |
|---|
| | 434 | GTK_DIALOG_DESTROY_WITH_PARENT, |
|---|
| | 435 | GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, msg); |
|---|
| | 436 | g_signal_connect_swapped (dialog, "response", |
|---|
| | 437 | G_CALLBACK (gtk_widget_destroy), dialog); |
|---|
| | 438 | gtk_widget_show_all (dialog); |
|---|
| | 439 | } |
|---|
| | 440 | |
|---|
| | 441 | g_object_unref (info->self); |
|---|
| | 442 | g_object_unref (info->header); |
|---|
| | 443 | g_object_unref (info->folder); |
|---|
| | 444 | g_slice_free (OnWentOnlineInfo, info); |
|---|
| 413 | | tny_folder_get_msg_async (folder, header, |
|---|
| 414 | | tmut_folder_view_on_got_msg, status_update, |
|---|
| 415 | | g_object_ref (self)); |
|---|
| 416 | | |
|---|
| | 468 | TnyDevice *device = tny_account_store_get_device (priv->account_store); |
|---|
| | 469 | if (!tny_device_is_online (device)) { |
|---|
| | 470 | OnWentOnlineInfo *info = g_slice_new0 (OnWentOnlineInfo); |
|---|
| | 471 | TnyAccount *account = tny_folder_get_account (folder); |
|---|
| | 472 | //tny_device_force_online (device); |
|---|
| | 473 | info->folder = g_object_ref (folder); |
|---|
| | 474 | info->header = g_object_ref (header); |
|---|
| | 475 | info->self = g_object_ref (self); |
|---|
| | 476 | tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (account), |
|---|
| | 477 | TRUE, on_went_online, info); |
|---|
| | 478 | g_object_unref (account); |
|---|
| | 479 | } else { |
|---|
| | 480 | tny_folder_get_msg_async (folder, header, |
|---|
| | 481 | tmut_folder_view_on_got_msg, status_update, |
|---|
| | 482 | g_object_ref (self)); |
|---|
| | 483 | } |
|---|
| | 484 | g_object_unref (device); |
|---|