Removed, use em_utils_selection_get_uidlist() instead. (drop_uid_list):
2003-10-22 Jeffrey Stedfast <fejj@ximian.com> * mail-component.c (parse_uid_list): Removed, use em_utils_selection_get_uidlist() instead. (drop_uid_list): Use em_utils_selection_get_uidlist() to parse the x-uid-list selection data and use mail_tool_uri_to_folder() directly since we have the uri (originally we expected the first component of the selection data to be the e-storage-set-view folder path rather than the uri). (folder_receive_drop_cb): Call gtk_drag_finish() here. * message-list.c: s/x-evolution-message/x-uid-list/ * em-utils.c: Same. svn path=/trunk/; revision=23004
This commit is contained in:
committed by
Jeffrey Stedfast
parent
17dacd6a97
commit
3df2a75e72
@ -1,3 +1,18 @@
|
||||
2003-10-22 Jeffrey Stedfast <fejj@ximian.com>
|
||||
|
||||
* mail-component.c (parse_uid_list): Removed, use
|
||||
em_utils_selection_get_uidlist() instead.
|
||||
(drop_uid_list): Use em_utils_selection_get_uidlist() to parse the
|
||||
x-uid-list selection data and use mail_tool_uri_to_folder()
|
||||
directly since we have the uri (originally we expected the first
|
||||
component of the selection data to be the e-storage-set-view
|
||||
folder path rather than the uri).
|
||||
(folder_receive_drop_cb): Call gtk_drag_finish() here.
|
||||
|
||||
* message-list.c: s/x-evolution-message/x-uid-list/
|
||||
|
||||
* em-utils.c: Same.
|
||||
|
||||
2003-10-22 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* mail-component.c (impl_createControls): Use
|
||||
|
||||
@ -1790,7 +1790,7 @@ em_utils_selection_get_mailbox(GtkSelectionData *data, CamelFolder *folder)
|
||||
* @uri:
|
||||
* @uids:
|
||||
*
|
||||
* Sets a "x-evolution-message" format selection data.
|
||||
* Sets a "x-uid-list" format selection data.
|
||||
*
|
||||
* FIXME: be nice if this could take a folder argument rather than uri
|
||||
**/
|
||||
@ -1801,8 +1801,7 @@ em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArra
|
||||
int i;
|
||||
|
||||
/* format: "uri\0uid1\0uid2\0uid3\0...\0uidn\0" */
|
||||
/* NB: original form missed trailing \0 */
|
||||
|
||||
|
||||
g_byte_array_append(array, uri, strlen(uri)+1);
|
||||
|
||||
for (i=0; i<uids->len; i++)
|
||||
@ -1818,7 +1817,7 @@ em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArra
|
||||
* @urip: Pointer to uri string, to be free'd by caller
|
||||
* @uidsp: Pointer to an array of uid's.
|
||||
*
|
||||
* Convert an x-evolution-message type to a uri and a uid list.
|
||||
* Convert an x-uid-list type to a uri and a uid list.
|
||||
*
|
||||
* Return value: The number of uid's found. If 0, then @urip and
|
||||
* @uidsp will be empty.
|
||||
|
||||
@ -578,55 +578,27 @@ folder_dragged_cb (EStorageSetView *view, const char *path, GdkDragContext *cont
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
parse_uid_list (const char *in, int inlen, char **path, GPtrArray **uids)
|
||||
{
|
||||
const char *inptr, *inend;
|
||||
|
||||
inend = in + inlen;
|
||||
|
||||
*path = g_strdup (in);
|
||||
|
||||
*uids = g_ptr_array_new ();
|
||||
|
||||
inptr = in + inlen + 1;
|
||||
while (inptr < inend) {
|
||||
g_ptr_array_add (*uids, g_strdup (inptr));
|
||||
inptr += strlen (inptr) + 1;
|
||||
}
|
||||
|
||||
if ((*uids)->len == 0) {
|
||||
g_ptr_array_free (*uids, TRUE);
|
||||
g_free (*path);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
drop_uid_list (EStorageSetView *view, const char *path, gboolean move, GtkSelectionData *selection, gpointer user_data)
|
||||
{
|
||||
CamelFolder *src, *dest;
|
||||
CamelException ex;
|
||||
GPtrArray *uids;
|
||||
char *src_path;
|
||||
char *src_uri;
|
||||
|
||||
if (!parse_uid_list (selection->data, selection->length, &src_path, &uids))
|
||||
return;
|
||||
em_utils_selection_get_uidlist (selection, &src_uri, &uids);
|
||||
|
||||
camel_exception_init (&ex);
|
||||
|
||||
if (!(src = foo_get_folder (view, src_path, &ex))) {
|
||||
if (!(src = mail_tool_uri_to_folder (src_uri, 0, &ex))) {
|
||||
/* FIXME: report error to user? */
|
||||
camel_exception_clear (&ex);
|
||||
em_utils_uids_free (uids);
|
||||
g_free (src_path);
|
||||
g_free (src_uri);
|
||||
return;
|
||||
}
|
||||
|
||||
g_free (src_path);
|
||||
g_free (src_uri);
|
||||
|
||||
if (!(dest = foo_get_folder (view, path, &ex))) {
|
||||
/* FIXME: report error to user? */
|
||||
@ -846,22 +818,28 @@ folder_receive_drop_cb (EStorageSetView *view, const char *path, GdkDragContext
|
||||
case DND_DROP_TYPE_UID_LIST:
|
||||
/* import a list of uids from another evo folder */
|
||||
drop_uid_list (view, path, move, selection, user_data);
|
||||
printf ("* dropped a x-uid-list\n");
|
||||
break;
|
||||
case DND_DROP_TYPE_FOLDER:
|
||||
/* rename a folder */
|
||||
drop_folder (view, path, move, selection, user_data);
|
||||
printf ("* dropped a x-folder\n");
|
||||
break;
|
||||
case DND_DROP_TYPE_MESSAGE_RFC822:
|
||||
/* import a message/rfc822 stream */
|
||||
drop_message_rfc822 (view, path, selection, user_data);
|
||||
printf ("* dropped a message/rfc822\n");
|
||||
break;
|
||||
case DND_DROP_TYPE_TEXT_URI_LIST:
|
||||
/* import an mbox, maildir, or mh folder? */
|
||||
drop_text_uri_list (view, path, selection, user_data);
|
||||
printf ("* dropped a text/uri-list\n");
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
gtk_drag_finish (context, TRUE, TRUE, time);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -717,7 +717,7 @@ void
|
||||
message_list_paste(MessageList *ml)
|
||||
{
|
||||
gtk_selection_convert(ml->priv->invisible, GDK_SELECTION_CLIPBOARD,
|
||||
gdk_atom_intern("x-evolution-message", FALSE),
|
||||
gdk_atom_intern ("x-uid-list", FALSE),
|
||||
GDK_CURRENT_TIME);
|
||||
}
|
||||
|
||||
@ -1425,12 +1425,12 @@ ml_selection_get(GtkWidget *widget, GtkSelectionData *data, guint info, guint ti
|
||||
return;
|
||||
|
||||
if (info & 2) {
|
||||
/* text_plain */
|
||||
/* text/plain */
|
||||
printf("setting text/plain selection for uids\n");
|
||||
em_utils_selection_set_mailbox(data, ml->folder, uids);
|
||||
} else {
|
||||
/* x-evolution-message */
|
||||
printf("setting x-evolution-message selection for uids\n");
|
||||
/* x-uid-list */
|
||||
printf("setting x-uid-list selection for uids\n");
|
||||
em_utils_selection_set_uidlist(data, ml->folder_uri, uids);
|
||||
}
|
||||
}
|
||||
@ -1479,7 +1479,7 @@ ml_selection_received_uidlist(MessageList *ml, GtkSelectionData *data)
|
||||
static void
|
||||
ml_selection_received(GtkWidget *widget, GtkSelectionData *data, guint time, MessageList *ml)
|
||||
{
|
||||
if (data->target != gdk_atom_intern("x-evolution-message", FALSE)) {
|
||||
if (data->target != gdk_atom_intern ("x-uid-list", FALSE)) {
|
||||
printf("Unknown selection received by message-list\n");
|
||||
|
||||
return;
|
||||
@ -1489,7 +1489,7 @@ ml_selection_received(GtkWidget *widget, GtkSelectionData *data, guint time, Mes
|
||||
}
|
||||
|
||||
static GtkTargetEntry ml_drag_types[] = {
|
||||
{ "x-evolution-message", 0, 0 },
|
||||
{ "x-uid-list", 0, 0 },
|
||||
{ "message/rfc822", 0, 1 },
|
||||
/* not included in dest types */
|
||||
{ "text/uri-list", 0, 2 },
|
||||
@ -1506,7 +1506,7 @@ ml_tree_drag_data_get (ETree *tree, int row, ETreePath path, int col,
|
||||
|
||||
if (uids->len > 0) {
|
||||
switch (info) {
|
||||
case 0 /*DND_TARGET_TYPE_X_EVOLUTION_MESSAGE*/:
|
||||
case 0 /*DND_TARGET_TYPE_X_UID_LIST */:
|
||||
em_utils_selection_set_uidlist(data, ml->folder_uri, uids);
|
||||
break;
|
||||
case 1 /*DND_TARGET_TYPE_MESSAGE_RFC822*/:
|
||||
@ -1578,7 +1578,7 @@ message_list_init (GtkObject *object)
|
||||
g_object_ref(p->invisible);
|
||||
gtk_object_sink((GtkObject *)p->invisible);
|
||||
|
||||
matom = gdk_atom_intern("x-evolution-message", FALSE);
|
||||
matom = gdk_atom_intern ("x-uid-list", FALSE);
|
||||
gtk_selection_add_target(p->invisible, GDK_SELECTION_CLIPBOARD, matom, 0);
|
||||
gtk_selection_add_target(p->invisible, GDK_SELECTION_PRIMARY, matom, 1);
|
||||
gtk_selection_add_target(p->invisible, GDK_SELECTION_CLIPBOARD, GDK_SELECTION_TYPE_STRING, 2);
|
||||
|
||||
Reference in New Issue
Block a user