Changeset 2593
- Timestamp:
- 08/08/07 16:37:35
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-account.c (modified) (2 diffs)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (11 diffs)
- trunk/libtinymail-camel/tny-camel-folder.h (modified) (2 diffs)
- trunk/libtinymail-camel/tny-camel-store-account.c (modified) (7 diffs)
- trunk/libtinymail/tny-folder.c (modified) (3 diffs)
- trunk/libtinymail/tny-folder.h (modified) (4 diffs)
- trunk/libtinymail/tny-merge-folder.c (modified) (4 diffs)
- trunk/libtinymail/tny-shared.h (modified) (3 diffs)
- trunk/libtinymailui-gtk/tny-gtk-folder-store-tree-model.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r2587 r2593 2 2 3 3 * Code cleanups in TnyCamelSendQueue 4 * Introduction of tny_folder_add_msg_async 5 * Better handling of offline (because service is unavailable) cases 6 7 * This was a major API change 4 8 5 9 2007-08-07 Philip Van Hoof <pvanhoof@gnome.org> trunk/libtinymail-camel/tny-camel-account.c
r2576 r2593 127 127 g_slice_free (ReconInfo, info); 128 128 return NULL; 129 } 130 131 static gboolean 132 cancelled_refresh (gpointer user_data) 133 { 134 return FALSE; 135 } 136 137 static void 138 cancelled_refresh_destroy (gpointer user_data) 139 { 140 ReconInfo *info = (ReconInfo *) user_data; 141 g_object_unref (info->self); 142 g_slice_free (ReconInfo, info); 143 return; 129 144 } 130 145 … … 217 232 218 233 _tny_camel_queue_launch_wflags (aspriv->queue, 219 reconnect_thread, NULL, NULL, NULL, info, 234 reconnect_thread, cancelled_refresh, 235 cancelled_refresh_destroy, NULL, info, 220 236 TNY_CAMEL_QUEUE_RECONNECT_ITEM, 221 237 __FUNCTION__); trunk/libtinymail-camel/tny-camel-folder.c
r2583 r2593 86 86 87 87 88 89 90 /* When using a #GMainLoop this method will execute a callback using 91 * g_idle_add_full. Note that without a #GMainLoop, the callbacks 92 * could happen in a worker thread (depends on who call it) at an 93 * unknown moment in time (check your locking in this case). */ 94 95 static void 96 execute_callback (gint depth, 97 gint priority, 98 GSourceFunc idle_func, 99 gpointer data, 100 GDestroyNotify destroy_func) 101 { 102 if (depth > 0){ 103 g_idle_add_full (priority, idle_func, data, destroy_func); 104 } else { 105 idle_func (data); 106 destroy_func (data); 107 } 108 } 109 110 88 111 typedef struct { 89 112 GObject *self; … … 627 650 g_static_rec_mutex_unlock (priv->folder_lock); 628 651 } 652 653 654 655 typedef struct 656 { 657 TnyFolder *self; 658 TnyFolderCallback callback; 659 TnyStatusCallback status_callback; 660 gpointer user_data; 661 TnyMsg *adding_msg; 662 gboolean cancelled; 663 TnyIdleStopper* stopper; 664 guint depth; 665 GError *err; 666 TnySessionCamel *session; 667 668 GCond* condition; 669 gboolean had_callback; 670 GMutex *mutex; 671 672 } AddMsgFolderInfo; 673 674 675 static void 676 tny_camel_folder_add_msg_async_destroyer (gpointer thr_user_data) 677 { 678 AddMsgFolderInfo *info = thr_user_data; 679 TnyFolder *self = info->self; 680 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 681 682 if (info->adding_msg) 683 g_object_unref (info->adding_msg); 684 685 /* thread reference */ 686 _tny_camel_folder_unreason (priv); 687 g_object_unref (self); 688 689 if (info->err) 690 g_error_free (info->err); 691 692 _tny_session_stop_operation (info->session); 693 694 tny_idle_stopper_destroy (info->stopper); 695 info->stopper = NULL; 696 697 if (info->condition) { 698 g_mutex_lock (info->mutex); 699 g_cond_broadcast (info->condition); 700 info->had_callback = TRUE; 701 g_mutex_unlock (info->mutex); 702 } 703 704 return; 705 } 706 707 static gboolean 708 tny_camel_folder_add_msg_async_callback (gpointer thr_user_data) 709 { 710 AddMsgFolderInfo *info = thr_user_data; 711 TnyFolder *self = info->self; 712 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 713 TnyFolderChange *change = tny_folder_change_new (self); 714 715 tny_folder_change_set_new_all_count (change, priv->cached_length); 716 tny_folder_change_set_new_unread_count (change, priv->unread_length); 717 notify_folder_observers_about (self, change); 718 g_object_unref (change); 719 720 if (info->callback) { 721 tny_lockable_lock (info->session->priv->ui_lock); 722 info->callback (info->self, info->cancelled, info->err, info->user_data); 723 tny_lockable_unlock (info->session->priv->ui_lock); 724 } 725 726 tny_idle_stopper_stop (info->stopper); 727 728 return FALSE; 729 } 730 731 732 static void 733 tny_camel_folder_add_msg_async_status (struct _CamelOperation *op, const char *what, int sofar, int oftotal, void *thr_user_data) 734 { 735 AddMsgFolderInfo *oinfo = thr_user_data; 736 TnyProgressInfo *info = NULL; 737 738 info = tny_progress_info_new (G_OBJECT (oinfo->self), oinfo->status_callback, 739 TNY_FOLDER_STATUS, TNY_FOLDER_STATUS_CODE_XFER_MSGS, what, sofar, 740 oftotal, oinfo->stopper, oinfo->session->priv->ui_lock, oinfo->user_data); 741 742 execute_callback (oinfo->depth, G_PRIORITY_HIGH, 743 tny_progress_info_idle_func, info, 744 tny_progress_info_destroy); 745 746 return; 747 } 748 749 750 static gpointer 751 tny_camel_folder_add_msg_async_thread (gpointer thr_user_data) 752 { 753 AddMsgFolderInfo *info = thr_user_data; 754 TnyFolder *self = info->self; 755 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 756 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (priv->account); 757 CamelException ex = CAMEL_EXCEPTION_INITIALISER; 758 759 g_static_rec_mutex_lock (priv->folder_lock); 760 761 _tny_camel_account_start_camel_operation (TNY_CAMEL_ACCOUNT (priv->account), 762 tny_camel_folder_add_msg_async_status, info, 763 "Adding message"); 764 765 tny_folder_add_msg (info->self, info->adding_msg, &info->err); 766 767 info->cancelled = FALSE; 768 if (info->err != NULL) { 769 if (strcasestr (info->err->message, "cancel") != NULL) 770 info->cancelled = TRUE; 771 } 772 773 priv->cached_length = camel_folder_get_message_count (priv->folder); 774 priv->unread_length = (guint)camel_folder_get_unread_message_count (priv->folder); 775 update_iter_counts (priv); 776 777 _tny_camel_account_stop_camel_operation (TNY_CAMEL_ACCOUNT (priv->account)); 778 779 g_static_rec_mutex_unlock (priv->folder_lock); 780 781 info->mutex = g_mutex_new (); 782 info->condition = g_cond_new (); 783 info->had_callback = FALSE; 784 785 execute_callback (info->depth, G_PRIORITY_DEFAULT, 786 tny_camel_folder_add_msg_async_callback, info, 787 tny_camel_folder_add_msg_async_destroyer); 788 789 790 /* Wait on the queue for the mainloop callback to be finished */ 791 g_mutex_lock (info->mutex); 792 if (!info->had_callback) 793 g_cond_wait (info->condition, info->mutex); 794 g_mutex_unlock (info->mutex); 795 796 g_mutex_free (info->mutex); 797 g_cond_free (info->condition); 798 799 g_slice_free (AddMsgFolderInfo, thr_user_data); 800 801 return NULL; 802 } 803 804 static void 805 tny_camel_folder_add_msg_async_cancelled_destroyer (gpointer thr_user_data) 806 { 807 AddMsgFolderInfo *info = thr_user_data; 808 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (info->self); 809 810 if (info->adding_msg) 811 g_object_unref (info->adding_msg); 812 813 /* thread reference */ 814 _tny_camel_folder_unreason (priv); 815 g_object_unref (info->self); 816 817 if (info->err) 818 g_error_free (info->err); 819 g_slice_free (AddMsgFolderInfo, thr_user_data); 820 return; 821 } 822 823 static gboolean 824 tny_camel_folder_add_msg_async_cancelled_callback (gpointer thr_user_data) 825 { 826 AddMsgFolderInfo *info = thr_user_data; 827 if (info->callback) { 828 tny_lockable_lock (info->session->priv->ui_lock); 829 info->callback (info->self, TRUE, info->err, info->user_data); 830 tny_lockable_unlock (info->session->priv->ui_lock); 831 } 832 return FALSE; 833 } 834 835 836 static void 837 tny_camel_folder_add_msg_async (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 838 { 839 TNY_CAMEL_FOLDER_GET_CLASS (self)->add_msg_async_func (self, msg, callback, status_callback, user_data); 840 return; 841 } 842 843 static void 844 tny_camel_folder_add_msg_async_default (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 845 { 846 847 AddMsgFolderInfo *info; 848 GError *err = NULL; 849 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 850 851 /* Idle info for the callbacks */ 852 info = g_slice_new (AddMsgFolderInfo); 853 info->session = TNY_FOLDER_PRIV_GET_SESSION (priv); 854 info->self = self; 855 info->callback = callback; 856 info->status_callback = status_callback; 857 info->user_data = user_data; 858 info->depth = g_main_depth (); 859 info->condition = NULL; 860 info->adding_msg = msg; 861 info->err = NULL; 862 863 if (!_tny_session_check_operation (TNY_FOLDER_PRIV_GET_SESSION(priv), priv->account, &err, 864 TNY_FOLDER_ERROR, TNY_FOLDER_ERROR_ADD_MSG)) 865 { 866 if (callback) { 867 info->err = g_error_copy (err); 868 g_object_ref (info->self); 869 g_object_ref (info->adding_msg); 870 _tny_camel_folder_reason (priv); 871 execute_callback (info->depth, G_PRIORITY_DEFAULT, 872 tny_camel_folder_add_msg_async_cancelled_callback, info, 873 tny_camel_folder_add_msg_async_cancelled_destroyer); 874 } 875 g_error_free (err); 876 return; 877 } 878 879 info->stopper = tny_idle_stopper_new(); 880 881 g_object_ref (info->adding_msg); 882 883 /* thread reference */ 884 g_object_ref (info->self); 885 _tny_camel_folder_reason (priv); 886 887 _tny_camel_queue_launch (TNY_FOLDER_PRIV_GET_QUEUE (priv), 888 tny_camel_folder_add_msg_async_thread, 889 tny_camel_folder_add_msg_async_cancelled_callback, 890 tny_camel_folder_add_msg_async_cancelled_destroyer, &info->cancelled, 891 info, __FUNCTION__); 892 893 return; 894 } 895 629 896 630 897 static void … … 990 1257 } 991 1258 992 /* When using a #GMainLoop this method will execute a callback using993 * g_idle_add_full. Note that without a #GMainLoop, the callbacks994 * could happen in a worker thread (depends on who call it) at an995 * unknown moment in time (check your locking in this case). */996 997 static void998 execute_callback (gint depth,999 gint priority,1000 GSourceFunc idle_func,1001 gpointer data,1002 GDestroyNotify destroy_func)1003 {1004 if (depth > 0){1005 g_idle_add_full (priority, idle_func, data, destroy_func);1006 } else {1007 idle_func (data);1008 destroy_func (data);1009 }1010 }1011 1259 1012 1260 … … 1064 1312 { 1065 1313 TnyFolder *self; 1066 Tny SyncFolderCallback callback;1314 TnyFolderCallback callback; 1067 1315 TnyStatusCallback status_callback; 1068 1316 gpointer user_data; … … 1243 1491 1244 1492 void 1245 tny_camel_folder_sync_async_default (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)1493 tny_camel_folder_sync_async_default (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 1246 1494 { 1247 1495 SyncFolderInfo *info; … … 1291 1539 1292 1540 void 1293 tny_camel_folder_sync_async (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)1541 tny_camel_folder_sync_async (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 1294 1542 { 1295 1543 TNY_CAMEL_FOLDER_GET_CLASS (self)->sync_async_func (self, expunge, callback, status_callback, user_data); … … 1300 1548 { 1301 1549 TnyFolder *self; 1302 Tny RefreshFolderCallback callback;1550 TnyFolderCallback callback; 1303 1551 TnyStatusCallback status_callback; 1304 1552 gpointer user_data; … … 1453 1701 1454 1702 static void 1455 tny_camel_folder_refresh_async (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)1703 tny_camel_folder_refresh_async (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 1456 1704 { 1457 1705 TNY_CAMEL_FOLDER_GET_CLASS (self)->refresh_async_func (self, callback, status_callback, user_data); … … 1502 1750 1503 1751 static void 1504 tny_camel_folder_refresh_async_default (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)1752 tny_camel_folder_refresh_async_default (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 1505 1753 { 1506 1754 RefreshFolderInfo *info; … … 5049 5297 TnyFolderIface *klass = (TnyFolderIface *)g; 5050 5298 5299 klass->add_msg_async_func = tny_camel_folder_add_msg_async; 5051 5300 klass->get_msg_remove_strategy_func = tny_camel_folder_get_msg_remove_strategy; 5052 5301 klass->set_msg_remove_strategy_func = tny_camel_folder_set_msg_remove_strategy; … … 5111 5360 object_class->finalize = tny_camel_folder_finalize; 5112 5361 5362 class->add_msg_async_func = tny_camel_folder_add_msg_async_default; 5113 5363 class->get_msg_receive_strategy_func = tny_camel_folder_get_msg_receive_strategy_default; 5114 5364 class->set_msg_receive_strategy_func = tny_camel_folder_set_msg_receive_strategy_default; trunk/libtinymail-camel/tny-camel-folder.h
r2537 r2593 54 54 55 55 /* virtual methods */ 56 void (*remove_msg_func) (TnyFolder *self, TnyHeader *header, GError **err); 56 57 void (*add_msg_func) (TnyFolder *self, TnyMsg *msg, GError **err); 57 void (* remove_msg_func) (TnyFolder *self, TnyHeader *header, GError **err);58 void (*add_msg_async_func) (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 58 59 void (*sync_func) (TnyFolder *self, gboolean expunge, GError **err); 59 void (*sync_async_func) (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);60 void (*sync_async_func) (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 60 61 TnyMsgRemoveStrategy* (*get_msg_remove_strategy_func) (TnyFolder *self); 61 62 void (*set_msg_remove_strategy_func) (TnyFolder *self, TnyMsgRemoveStrategy *st); … … 75 76 guint (*get_local_size_func) (TnyFolder *self); 76 77 gboolean (*is_subscribed_func) (TnyFolder *self); 77 void (*refresh_async_func) (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);78 void (*refresh_async_func) (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 78 79 void (*refresh_func) (TnyFolder *self, GError **err); 79 80 void (*transfer_msgs_func) (TnyFolder *self, TnyList *headers, TnyFolder *folder_dst, gboolean delete_originals, GError **err); trunk/libtinymail-camel/tny-camel-store-account.c
r2584 r2593 1064 1064 g_assert (CAMEL_IS_SESSION (apriv->session)); 1065 1065 1066 /* 1066 1067 if (!_tny_session_check_operation (apriv->session, TNY_ACCOUNT (self), err, 1067 1068 TNY_FOLDER_STORE_ERROR, TNY_FOLDER_STORE_ERROR_GET_FOLDERS)) 1068 1069 return; 1069 1070 */ 1070 1071 if (query != NULL) 1071 1072 g_assert (TNY_IS_FOLDER_STORE_QUERY (query)); … … 1162 1163 } 1163 1164 } 1165 /* 1164 1166 _tny_session_stop_operation (apriv->session); 1167 */ 1165 1168 return; 1166 1169 } … … 1253 1256 info->cancelled = FALSE; 1254 1257 if (info->err != NULL) { 1255 if (strcasestr ( err->message, "cancel") != NULL)1258 if (strcasestr (info->err->message, "cancel") != NULL) 1256 1259 info->cancelled = TRUE; 1257 1260 } … … 1336 1339 info->depth = g_main_depth (); 1337 1340 1338 if (!_tny_session_check_operation (apriv->session, TNY_ACCOUNT (self), &err,1339 TNY_FOLDER_STORE_ERROR, TNY_FOLDER_STORE_ERROR_GET_FOLDERS))1340 {1341 if (callback) {1342 info->err = g_error_copy (err);1343 if (info->query)1344 g_object_ref (info->query);1345 g_object_ref (info->self);1346 g_object_ref (info->list);1347 1348 execute_callback (info->depth, G_PRIORITY_DEFAULT,1349 tny_camel_store_account_get_folders_async_cancelled_callback, info,1350 tny_camel_store_account_get_folders_async_cancelled_destroyer);1351 }1352 g_error_free (err);1353 return;1354 }1355 1356 1341 /* thread reference */ 1357 1342 g_object_ref (info->self); … … 1360 1345 g_object_ref (info->query); 1361 1346 1362 _tny_camel_queue_launch (priv->queue,1347 _tny_camel_queue_launch_wflags (priv->queue, 1363 1348 tny_camel_store_account_get_folders_async_thread, 1364 1349 tny_camel_store_account_get_folders_async_cancelled_callback, 1365 1350 tny_camel_store_account_get_folders_async_cancelled_destroyer, 1366 &info->cancelled, info, __FUNCTION__); 1351 &info->cancelled, info, TNY_CAMEL_QUEUE_NORMAL_ITEM| 1352 TNY_CAMEL_QUEUE_PRIORITY_ITEM, __FUNCTION__); 1367 1353 1368 1354 return; … … 1716 1702 * url-string and/or proto setting of @self). */ 1717 1703 1704 static gboolean 1705 cancelled_conn (gpointer user_data) 1706 { 1707 return FALSE; 1708 } 1709 1710 static void 1711 cancelled_conn_destroy (gpointer user_data) 1712 { 1713 GoingOnlineInfo *info = (GoingOnlineInfo *) user_data; 1714 g_object_unref (info->self); 1715 camel_object_unref (info->session); 1716 g_slice_free (GoingOnlineInfo, info); 1717 return; 1718 } 1719 1718 1720 void 1719 1721 _tny_camel_store_account_queue_going_online (TnyCamelStoreAccount *self, TnySessionCamel *session, gboolean online, go_online_callback_func done_func, gpointer user_data) … … 1740 1742 /* It's indeed a very typical queue operation */ 1741 1743 1742 _tny_camel_queue_launch (priv->queue, 1744 _tny_camel_queue_remove_items (priv->queue, 1745 TNY_CAMEL_QUEUE_RECONNECT_ITEM); 1746 1747 _tny_camel_queue_launch_wflags (priv->queue, 1743 1748 tny_camel_store_account_queue_going_online_thread, 1744 NULL, NULL, NULL, 1745 info, __FUNCTION__); 1749 cancelled_conn, cancelled_conn_destroy, NULL, 1750 info, TNY_CAMEL_QUEUE_RECONNECT_ITEM, 1751 __FUNCTION__); 1746 1752 1747 1753 return; trunk/libtinymail/tny-folder.c
r2579 r2593 586 586 **/ 587 587 void 588 tny_folder_sync_async (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)588 tny_folder_sync_async (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 589 589 { 590 590 #ifdef DBC /* require */ … … 596 596 return; 597 597 } 598 599 600 /** 601 * tny_folder_add_msg_async: 602 * @self: a #TnyFolder object 603 * @msg: a #TnyMsg object 604 * @callback: a callback that'll happen when adding is finished 605 * @status_callback: a status callback 606 * @user_data: user data for the status callback and callback 607 * 608 * Add a message to a folder. It's recommended to destroy @msg afterwards because 609 * after receiving the same message from the folder again, the instance wont be 610 * the same anymore and a property like the tny_msg_get_id might have changed 611 * and assigned too. 612 * 613 * Folder observers of @self will get a header-added trigger caused by this 614 * action. 615 **/ 616 void 617 tny_folder_add_msg_async (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 618 { 619 #ifdef DBC /* require */ 620 g_assert (TNY_IS_FOLDER (self)); 621 g_assert (msg); 622 g_assert (TNY_IS_MSG (msg)); 623 g_assert (TNY_FOLDER_GET_IFACE (self)->add_msg_async_func != NULL); 624 #endif 625 TNY_FOLDER_GET_IFACE (self)->add_msg_async_func (self, msg, callback, status_callback, user_data); 626 return; 627 } 628 598 629 599 630 /** … … 744 775 **/ 745 776 void 746 tny_folder_refresh_async (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)777 tny_folder_refresh_async (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 747 778 { 748 779 #ifdef DBC /* require */ trunk/libtinymail/tny-folder.h
r2537 r2593 91 91 void (*remove_msg_func) (TnyFolder *self, TnyHeader *header, GError **err); 92 92 void (*add_msg_func) (TnyFolder *self, TnyMsg *msg, GError **err); 93 void (*add_msg_async_func) (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 93 94 void (*sync_func) (TnyFolder *self, gboolean expunge, GError **err); 94 void (*sync_async_func) (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);95 void (*sync_async_func) (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 95 96 TnyMsgRemoveStrategy* (*get_msg_remove_strategy_func) (TnyFolder *self); 96 97 void (*set_msg_remove_strategy_func) (TnyFolder *self, TnyMsgRemoveStrategy *st); … … 110 111 guint (*get_local_size_func) (TnyFolder *self); 111 112 gboolean (*is_subscribed_func) (TnyFolder *self); 112 void (*refresh_async_func) (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);113 void (*refresh_async_func) (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 113 114 void (*refresh_func) (TnyFolder *self, GError **err); 114 115 void (*transfer_msgs_func) (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, GError **err); … … 133 134 void tny_folder_set_msg_receive_strategy (TnyFolder *self, TnyMsgReceiveStrategy *st); 134 135 void tny_folder_remove_msg (TnyFolder *self, TnyHeader *header, GError **err); 136 void tny_folder_remove_msg_async (TnyFolder *self, TnyHeader *header, GError **err); 135 137 void tny_folder_add_msg (TnyFolder *self, TnyMsg *msg, GError **err); 138 void tny_folder_add_msg_async (TnyFolder *self, TnyMsg *msg, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 136 139 void tny_folder_sync (TnyFolder *self, gboolean expunge, GError **err); 137 void tny_folder_sync_async (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);140 void tny_folder_sync_async (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 138 141 TnyMsg* tny_folder_get_msg (TnyFolder *self, TnyHeader *header, GError **err); 139 142 TnyMsg* tny_folder_find_msg (TnyFolder *self, const gchar *url_string, GError **err); … … 149 152 guint tny_folder_get_local_size (TnyFolder *self); 150 153 gboolean tny_folder_is_subscribed (TnyFolder *self); 151 void tny_folder_refresh_async (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data);154 void tny_folder_refresh_async (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data); 152 155 void tny_folder_refresh (TnyFolder *self, GError **err); 153 156 void tny_folder_transfer_msgs (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, GError **err); trunk/libtinymail/tny-merge-folder.c
r2576 r2593 138 138 { 139 139 TnyFolder *self; 140 Tny RefreshFolderCallback callback;140 TnyFolderCallback callback; 141 141 TnyStatusCallback status_callback; 142 142 gpointer user_data; … … 235 235 236 236 static void 237 tny_merge_folder_sync_async (TnyFolder *self, gboolean expunge, Tny SyncFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)237 tny_merge_folder_sync_async (TnyFolder *self, gboolean expunge, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 238 238 { 239 239 SyncFolderInfo *info; … … 817 817 { 818 818 TnyFolder *self; 819 Tny RefreshFolderCallback callback;819 TnyFolderCallback callback; 820 820 TnyStatusCallback status_callback; 821 821 gpointer user_data; … … 927 927 928 928 static void 929 tny_merge_folder_refresh_async (TnyFolder *self, Tny RefreshFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data)929 tny_merge_folder_refresh_async (TnyFolder *self, TnyFolderCallback callback, TnyStatusCallback status_callback, gpointer user_data) 930 930 { 931 931 RefreshFolderInfo *info; trunk/libtinymail/tny-shared.h
r2574 r2593 57 57 typedef struct _TnyStream TnyStream; 58 58 typedef struct _TnyStreamIface TnyStreamIface; 59 typedef gchar* (*TnyGetPassFunc) (TnyAccount *self, const gchar *prompt, gboolean *cancel);60 typedef void (*TnyForgetPassFunc) (TnyAccount *self);61 typedef void (*TnyRefreshFolderCallback) (TnyFolder *self, gboolean cancelled, GError *err, gpointer user_data);62 typedef void (*TnyGetHeadersCallback) (TnyFolder *self, gboolean cancelled, TnyList *headers, GError *err, gpointer user_data);63 typedef void (*TnyGetMsgCallback) (TnyFolder *folder, gboolean cancelled, TnyMsg *msg, GError *err, gpointer user_data);64 typedef void (*TnySyncFolderCallback) (TnyFolder *folder, gboolean cancelled, GError *err, gpointer user_data);65 typedef void (*TnyTransferMsgsCallback) (TnyFolder *folder, gboolean cancelled, GError *err, gpointer user_data);66 typedef void (*TnyStatusCallback) (GObject *self, TnyStatus *status, gpointer user_data);67 59 typedef enum _TnyHeaderFlags TnyHeaderFlags; 68 60 typedef enum _TnyHeaderPriorityFlags TnyHeaderPriorityFlags; … … 82 74 typedef struct _TnyFolderStoreQueryItem TnyFolderStoreQueryItem; 83 75 typedef struct _TnyFolderStoreQueryItemClass TnyFolderStoreQueryItemClass; 84 typedef void (*TnyGetFoldersCallback) (TnyFolderStore *self, gboolean cancelled, TnyList *list, GError *err, gpointer user_data);85 typedef void (*TnyCopyFolderCallback) (TnyFolder *self, gboolean cancelled, TnyFolderStore *into, TnyFolder *new_folder, GError *err, gpointer user_data);86 76 typedef enum _TnyFolderSignal TnyFolderSignal; 87 77 typedef enum _TnyDeviceSignal TnyDeviceSignal; … … 125 115 typedef enum _TnyConnectionStatus TnyConnectionStatus; 126 116 117 typedef gchar* (*TnyGetPassFunc) (TnyAccount *self, const gchar *prompt, gboolean *cancel); 118 typedef void (*TnyForgetPassFunc) (TnyAccount *self); 119 typedef void (*TnyFolderCallback) (TnyFolder *self, gboolean cancelled, GError *err, gpointer user_data); 120 typedef void (*TnyGetHeadersCallback) (TnyFolder *self, gboolean cancelled, TnyList *headers, GError *err, gpointer user_data); 121 typedef void (*TnyGetMsgCallback) (TnyFolder *folder, gboolean cancelled, TnyMsg *msg, GError *err, gpointer user_data); 122 typedef void (*TnyTransferMsgsCallback) (TnyFolder *folder, gboolean cancelled, GError *err, gpointer user_data); 123 typedef void (*TnyStatusCallback) (GObject *self, TnyStatus *status, gpointer user_data); 124 typedef void (*TnyGetFoldersCallback) (TnyFolderStore *self, gboolean cancelled, TnyList *list, GError *err, gpointer user_data); 125 typedef void (*TnyCopyFolderCallback) (TnyFolder *self, gboolean cancelled, TnyFolderStore *into, TnyFolder *new_folder, GError *err, gpointer user_data); 126 127 127 G_END_DECLS 128 128 trunk/libtinymailui-gtk/tny-gtk-folder-store-tree-model.c
r2574 r2593 397 397 } 398 398 399 recurse_folders_sync (self, TNY_FOLDER_STORE (folder_store), &name_iter); 399 /* recurse_folders_sync (self, TNY_FOLDER_STORE (folder_store), &name_iter); */ 400 401 tny_folder_store_get_folders_async (TNY_FOLDER_STORE (folder_store), 402 folders, get_folders_cb, NULL, NULL, g_object_ref (self)); 400 403 401 404 /* Add an observer for the root folder store, so that we can observe … … 405 408 self->store_observables = g_list_prepend (self->store_observables, folder_store); 406 409 407 g_object_unref (G_OBJECT (folders));410 /* g_object_unref (G_OBJECT (folders)); */ 408 411 409 412 return;
