Changeset 3466
- Timestamp:
- 03/05/08 15:03:20
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (7 diffs)
- trunk/libtinymail/tny-folder-change.c (modified) (4 diffs)
- trunk/libtinymail/tny-folder-change.h (modified) (1 diff)
- trunk/libtinymail/tny-folder-monitor.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r3462 r3466 1 2008-03-05 Philip Van Hoof <pvanhoof@gnome.org> 2 3 * Check-for-duplicates in TnyFolderObserver and TnyFolderMonitor 4 5 * This was a minor API change 6 1 7 2008-03-04 Philip Van Hoof <pvanhoof@gnome.org> 2 8 trunk/libtinymail-camel/tny-camel-folder.c
r3415 r3466 875 875 876 876 info->change = tny_folder_change_new (info->self); 877 tny_folder_change_set_check_duplicates (info->change, TRUE); 877 878 878 879 tny_camel_folder_add_msg_shared (info->self, info->adding_msg, … … 1022 1023 1023 1024 change = tny_folder_change_new (self); 1025 tny_folder_change_set_check_duplicates (change, TRUE); 1024 1026 1025 1027 if (tny_camel_folder_add_msg_shared (self, msg, change, err)) 1026 1028 { 1027 1029 /* TNY Question: should change contain the new header? */ 1028 1030 tny_folder_change_set_new_all_count (change, priv->cached_length); 1029 1031 tny_folder_change_set_new_unread_count (change, priv->unread_length); … … 1094 1096 /* Notify header has been removed */ 1095 1097 change = tny_folder_change_new (self); 1098 tny_folder_change_set_check_duplicates (change, TRUE); 1096 1099 tny_folder_change_add_expunged_header (change, header); 1097 1100 notify_folder_observers_about_in_idle (self, change); … … 1151 1154 1152 1155 change = tny_folder_change_new (self); 1156 tny_folder_change_set_check_duplicates (change, TRUE); 1157 1153 1158 iter = tny_list_create_iterator (headers); 1154 1159 while (!tny_iterator_is_done (iter)) { … … 2221 2226 { 2222 2227 change = tny_folder_change_new (info->self); 2228 tny_folder_change_set_check_duplicates (change, TRUE); 2223 2229 tny_folder_change_set_received_msg (change, info->msg); 2224 2230 notify_folder_observers_about (info->self, change); … … 2489 2495 { 2490 2496 change = tny_folder_change_new (self); 2497 tny_folder_change_set_check_duplicates (change, TRUE); 2491 2498 tny_folder_change_set_received_msg (change, retval); 2492 2499 notify_folder_observers_about_in_idle (self, change); … … 3501 3508 TnyFolderChange *fromchange = tny_folder_change_new (from); 3502 3509 TnyIterator *iter; 3510 3511 tny_folder_change_set_check_duplicates (tochange, TRUE); 3512 tny_folder_change_set_check_duplicates (fromchange, TRUE); 3503 3513 3504 3514 iter = tny_list_create_iterator (new_header_list); trunk/libtinymail/tny-folder-change.c
r3320 r3466 45 45 gchar *oldname, *newname; 46 46 TnyFolderChangeChanged changed; 47 TnyMsg *msg; 47 TnyMsg *msg; gboolean check_duplicates; 48 48 }; 49 49 … … 51 51 (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_TYPE_FOLDER_CHANGE, TnyFolderChangePriv)) 52 52 53 54 /** 55 * tny_folder_change_get_check_duplicates: 56 * @self: a #TnyFolderChange 57 * 58 * Get whether or not the observer must check for duplicates in its 59 * tny_folder_observer_update() implementation. 60 * 61 * returns: whether or not to check duplicates 62 * since: 1.0 63 * audience: tinymail-developer 64 **/ 65 gboolean 66 tny_folder_change_get_check_duplicates (TnyFolderChange *self) 67 { 68 TnyFolderChangePriv *priv = TNY_FOLDER_CHANGE_GET_PRIVATE (self); 69 return priv->check_duplicates; 70 } 71 72 73 /** 74 * tny_folder_change_set_check_duplicates: 75 * @self: a #TnyFolderChange 76 * @check_duplicates: whether or not to check for duplicates 77 * 78 * Set whether or not the observer must check for duplicates in its 79 * tny_folder_observer_update() implementation. Default value is FALSE. 80 * 81 * since: 1.0 82 * audience: tinymail-developer 83 **/ 84 void 85 tny_folder_change_set_check_duplicates (TnyFolderChange *self, gboolean check_duplicates) 86 { 87 TnyFolderChangePriv *priv = TNY_FOLDER_CHANGE_GET_PRIVATE (self); 88 priv->check_duplicates = check_duplicates; 89 return; 90 } 91 53 92 /** 54 93 * tny_folder_change_set_received_msg: … … 57 96 * 58 97 * Set the message that got received in @self. This is an internal function not 59 * intended for application developers to alter. 98 * intended for application developers to alter. Default value is FALSE. 60 99 * 61 100 * since: 1.0 … … 493 532 g_mutex_lock (priv->lock); 494 533 534 priv->check_duplicates = FALSE; 495 535 priv->msg = NULL; 496 536 priv->changed = 0; trunk/libtinymail/tny-folder-change.h
r3079 r3466 86 86 void tny_folder_change_reset (TnyFolderChange *self); 87 87 TnyFolder* tny_folder_change_get_folder (TnyFolderChange *self); 88 gboolean tny_folder_change_get_check_duplicates (TnyFolderChange *self); 89 void tny_folder_change_set_check_duplicates (TnyFolderChange *self, gboolean check_duplicates); 90 88 91 TnyFolderChangeChanged tny_folder_change_get_changed (TnyFolderChange *self); 89 92 trunk/libtinymail/tny-folder-monitor.c
r3304 r3466 167 167 168 168 static void 169 foreach_list_add_header (TnyFolderMonitorPriv *priv, TnyHeader *header, gint length) 170 { 171 TnyIterator *iter; 172 const gchar *uid = (length<100)?tny_header_get_uid (header):NULL; 173 174 iter = tny_list_create_iterator (priv->lists); 169 foreach_list_add_header (TnyFolderMonitorPriv *priv, TnyHeader *header, gint length, gboolean check_duplicates) 170 { 171 TnyIterator *iter = tny_list_create_iterator (priv->lists); 172 175 173 while (!tny_iterator_is_done (iter)) 176 174 { 177 175 TnyList *list = TNY_LIST (tny_iterator_get_current (iter)); 178 176 179 /* If the length is larger than 100, we're bulk receiving 180 * a lot of headers. It's probably not an IDLE situation and 181 * we can therefore assume that we'll for sure wont have 182 * duplicates. */ 183 184 if (uid) 185 tny_list_remove_matches (list, uid_matcher, (gpointer) uid); 177 if (check_duplicates) { 178 tny_list_remove_matches (list, uid_matcher, 179 (gpointer) tny_header_get_uid (header)); 180 } 186 181 187 182 tny_list_prepend (list, (GObject *) header); … … 251 246 { 252 247 TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter)); 253 foreach_list_add_header (priv, header, length); 248 foreach_list_add_header (priv, header, length, 249 tny_folder_change_get_check_duplicates (change)); 254 250 g_object_unref (header); 255 251 tny_iterator_next (iter);
