parameters (user callback function).
* Add a new user callback funciton to destroy ifnromation
banner about progress of paste operation.
* Fixes: NB#62302
pmo-trunk-r2559
TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
&header, -1);
+ gtk_tree_path_free (path);
return header;
}
}
g_free (path_string);
}
+ gtk_tree_path_free (path);
return result;
} else {
return TRUE;
return TRUE;
}
+ gtk_tree_path_free (path);
}
return FALSE;
}
return TRUE;
}
+ gtk_tree_path_free (path);
return FALSE;
}
gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
&header, -1);
flags = tny_header_get_flags (header);
+ gtk_tree_path_free (path);
}
modest_msg_view_set_priority (MODEST_MSG_VIEW(priv->msg_view), flags);
}
void
-modest_platform_information_banner (GtkWidget *widget,
+modest_platform_information_banner (GtkWidget *parent,
const gchar *icon_name,
const gchar *text)
{
- hildon_banner_show_information (widget, icon_name, text);
+ hildon_banner_show_information (parent, icon_name, text);
+}
+
+GtkWidget *
+modest_platform_animation_banner (GtkWidget *parent,
+ const gchar *animation_name,
+ const gchar *text)
+{
+ GtkWidget *inf_note = NULL;
+
+ g_return_val_if_fail (text != NULL, NULL);
+
+ inf_note = hildon_banner_show_animation (parent, animation_name, text);
+
+ return inf_note;
}
header = tny_msg_get_header (new_msg);
if (priority_flags != 0)
tny_header_set_flags (header, priority_flags);
+ g_object_unref (G_OBJECT(header));
/* Call mail operation */
modest_mail_operation_send_mail (self, transport_account, new_msg);
/* Note: This can fail (with a warning) if the message is not really already in a folder,
* because this function requires it to have a UID. */
tny_folder_remove_msg (folder, header, NULL);
+ tny_header_set_flags (header, TNY_HEADER_FLAG_DELETED);
g_object_unref (header);
}
}
/* add priority flags */
header = tny_msg_get_header (msg);
tny_header_set_flags (header, priority_flags);
+ g_object_unref (G_OBJECT(header));
folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (transport_account), TNY_FOLDER_TYPE_DRAFTS);
if (!folder) {
header = tny_msg_get_header (draft_msg);
/* Remove the old draft expunging it */
tny_folder_remove_msg (folder, header, NULL);
+ tny_header_set_flags (header, TNY_HEADER_FLAG_DELETED);
tny_folder_sync (folder, FALSE, &(priv->error)); /* FALSE --> don't expunge */
g_object_unref (header);
}
TNY_FOLDER_TYPE_TRASH);
/* TODO: error_handling */
modest_mail_operation_xfer_folder (self, folder,
- TNY_FOLDER_STORE (trash_folder), TRUE);
+ TNY_FOLDER_STORE (trash_folder),
+ TRUE, NULL, NULL);
} else {
TnyFolderStore *parent = tny_folder_get_folder_store (folder);
ModestMailOperation *self;
ModestMailOperationPrivate *priv;
ModestMailOperationState *state;
+ XFerMsgAsyncHelper *helper;
g_return_if_fail (status != NULL);
g_return_if_fail (status->code == TNY_FOLDER_STATUS_CODE_COPY_FOLDER);
- self = MODEST_MAIL_OPERATION (user_data);
+ helper = (XFerMsgAsyncHelper *) user_data;
+ g_return_if_fail (helper != NULL);
+
+ self = helper->mail_op;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
priv->done = status->position;
GError **err,
gpointer user_data)
{
+ XFerMsgAsyncHelper *helper;
ModestMailOperation *self = NULL;
ModestMailOperationPrivate *priv = NULL;
- self = MODEST_MAIL_OPERATION (user_data);
+ helper = (XFerMsgAsyncHelper *) user_data;
+ g_return_if_fail (helper != NULL);
- priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
+ self = helper->mail_op;
+ priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
if (*err) {
priv->error = g_error_copy (*err);
priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
}
+ /* Notify about operation end */
+ modest_mail_operation_notify_end (self);
+
+ /* If user defined callback function was defined, call it */
+ if (helper->user_callback) {
+ gdk_threads_enter ();
+ helper->user_callback (priv->source, helper->user_data);
+ gdk_threads_leave ();
+ }
+
/* Free */
+ g_object_unref (helper->mail_op);
+ g_slice_free (XFerMsgAsyncHelper, helper);
g_object_unref (folder);
g_object_unref (into);
-
- /* Notify about operation end */
- modest_mail_operation_notify_end (self);
}
void
modest_mail_operation_xfer_folder (ModestMailOperation *self,
TnyFolder *folder,
TnyFolderStore *parent,
- gboolean delete_original)
+ gboolean delete_original,
+ XferMsgsAsynUserCallback user_callback,
+ gpointer user_data)
{
ModestMailOperationPrivate *priv = NULL;
ModestTnyFolderRules parent_rules = 0, rules;
+ XFerMsgAsyncHelper *helper = NULL;
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
g_return_if_fail (TNY_IS_FOLDER (folder));
g_object_ref (folder);
g_object_ref (parent);
+ /* Create the helper */
+ helper = g_slice_new0 (XFerMsgAsyncHelper);
+ helper->mail_op = g_object_ref(self);
+ helper->dest_folder = NULL;
+ helper->headers = NULL;
+ helper->user_callback = user_callback;
+ helper->user_data = user_data;
+
/* Move/Copy folder */
tny_folder_copy_async (folder,
parent,
delete_original,
transfer_folder_cb,
transfer_folder_status_cb,
- self);
+ helper);
+/* self); */
}
}
{
ModestMailOperationPrivate *priv;
ModestTnyFolderRules rules;
+ XFerMsgAsyncHelper *helper;
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
g_return_if_fail (TNY_IS_FOLDER_STORE (folder));
} else {
TnyFolderStore *into;
+ /* Create the helper */
+ helper = g_slice_new0 (XFerMsgAsyncHelper);
+ helper->mail_op = g_object_ref(self);
+ helper->dest_folder = NULL;
+ helper->headers = NULL;
+ helper->user_callback = NULL;
+ helper->user_data = NULL;
+
/* Rename. Camel handles folder subscription/unsubscription */
into = tny_folder_get_folder_store (folder);
tny_folder_copy_async (folder, into, name, TRUE,
transfer_folder_cb,
transfer_folder_status_cb,
- self);
+ helper);
+/* self); */
if (into)
g_object_unref (into);
}
* @folder: a #TnyFolder
* @parent: the new parent of the folder as #TnyFolderStore
* @delete_original: wheter or not delete the original folder
+ * @user_callback: a #XferMsgsAsynUserCallback function to call after tinymail callback execution.
+ * @user_data: generic user data which will be passed to @user_callback function.
*
* Sets the given @folder as child of a provided #TnyFolderStore. This
* operation also transfers all the messages contained in the folder
void modest_mail_operation_xfer_folder (ModestMailOperation *self,
TnyFolder *folder,
TnyFolderStore *parent,
- gboolean delete_original);
+ gboolean delete_original,
+ XferMsgsAsynUserCallback user_callback,
+ gpointer user_data);
+
/* Functions that performs msg operations */
const gchar *icon_name,
const gchar *text);
+GtkWidget *
+modest_platform_animation_banner (GtkWidget *parent,
+ const gchar *annimation_name,
+ const gchar *text);
+
G_END_DECLS
#endif /* __MODEST_PLATFORM_UTILS_H__ */
}
}
+
+static void
+paste_msgs_cb (const GObject *object, gpointer user_data)
+{
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW (object));
+ g_return_if_fail (GTK_IS_WIDGET (user_data));
+
+ /* destroy information note */
+ gtk_widget_destroy (GTK_WIDGET(user_data));
+}
+
void
modest_ui_actions_on_paste (GtkAction *action,
ModestWindow *window)
{
- GtkWidget *focused_widget;
+ GtkWidget *focused_widget = NULL;
+ GtkWidget *inf_note = NULL;
ModestMailOperation *mail_op = NULL;
focused_widget = gtk_window_get_focus (GTK_WINDOW (window));
/* Get destination folder */
folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (focused_widget));
+ /* Launch notification */
+ inf_note = modest_platform_animation_banner (GTK_WIDGET (window), NULL,
+ _CS("ckct_nw_pasting"));
+ if (inf_note != NULL) {
+ gtk_window_set_modal (GTK_WINDOW(inf_note), FALSE);
+ gtk_widget_show (GTK_WIDGET(inf_note));
+ }
+
/* transfer messages */
if (data != NULL) {
modest_mail_operation_xfer_msgs (mail_op,
data,
TNY_FOLDER (folder_store),
delete,
- NULL,
- NULL);
+ paste_msgs_cb,
+ inf_note);
} else if (src_folder != NULL) {
modest_mail_operation_xfer_folder (mail_op,
src_folder,
folder_store,
- delete);
+ delete,
+ paste_msgs_cb,
+ inf_note);
}
/* Free */
}
}
+
void
modest_ui_actions_on_select_all (GtkAction *action,
ModestWindow *window)
}
+
static void
transfer_msgs_from_viewer_cb (const GObject *object, gpointer user_data)
{
modest_mail_operation_xfer_folder (mail_op,
TNY_FOLDER (src_folder),
folder_store,
- TRUE);
+ TRUE,
+ NULL,
+ NULL);
/* Unref mail operation */
g_object_unref (G_OBJECT (mail_op));
}
/* Create and run the dialog */
dialog = create_move_to_dialog (MODEST_WINDOW (win), folder_view, &tree_view);
result = gtk_dialog_run (GTK_DIALOG(dialog));
- g_object_ref (tree_view);
if (result == GTK_RESPONSE_ACCEPT) {
TnyFolderStore *folder_store;
gint response;
- folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (tree_view));
-
/* Create header list */
header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
-
+ g_return_if_fail (header != NULL);
+
headers = tny_simple_list_new ();
tny_list_prepend (headers, G_OBJECT (header));
g_object_unref (header);
/* Ask user for confirmation. MSG-NOT404 */
+ folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (g_object_ref (tree_view)));
response = msgs_move_to_confirmation (GTK_WINDOW (win),
TNY_FOLDER (folder_store),
headers);
const gchar *account,
gpointer user_data)
{
- ModestFolderView *self = MODEST_FOLDER_VIEW (user_data);
+ ModestFolderView *self = NULL;
ModestFolderViewPrivate *priv;
+ g_return_if_fail (MODEST_IS_FOLDER_VIEW (user_data));
+ self = MODEST_FOLDER_VIEW (user_data);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
+
if (!priv->visible_account_id)
modest_widget_memory_restore (modest_runtime_get_conf(), G_OBJECT(self),
MODEST_CONF_FOLDER_VIEW_KEY);
on_accounts_reloaded (TnyAccountStore *account_store,
gpointer user_data)
{
+ g_return_if_fail (MODEST_IS_FOLDER_VIEW (user_data));
modest_folder_view_update_model (MODEST_FOLDER_VIEW (user_data), account_store);
}
/* TnyAccount *local_account; */
TnyList *model_as_list;
+ g_return_val_if_fail (MODEST_IS_FOLDER_VIEW (self), FALSE);
g_return_val_if_fail (account_store, FALSE);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self);
modest_mail_operation_xfer_folder (mail_op,
folder,
parent_folder,
- helper->delete_source);
+ helper->delete_source,
+ NULL,
+ NULL);
/* Frees */
g_object_unref (G_OBJECT (parent_folder));