Changeset 3466

Show
Ignore:
Timestamp:
03/05/08 15:03:20
Author:
pvanhoof
Message:

2008-03-05 Philip Van Hoof <pvanhoof@gnome.org>

        • This was a minor API change
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r3462 r3466  
     12008-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 
    172008-03-04  Philip Van Hoof <pvanhoof@gnome.org> 
    28 
  • trunk/libtinymail-camel/tny-camel-folder.c

    r3415 r3466  
    875875 
    876876        info->change = tny_folder_change_new (info->self); 
     877        tny_folder_change_set_check_duplicates (info->change, TRUE); 
    877878 
    878879        tny_camel_folder_add_msg_shared (info->self, info->adding_msg,  
     
    10221023 
    10231024        change = tny_folder_change_new (self); 
     1025        tny_folder_change_set_check_duplicates (change, TRUE); 
    10241026 
    10251027        if (tny_camel_folder_add_msg_shared (self, msg, change, err)) 
    10261028        { 
    1027  
     1029                /* TNY Question: should change contain the new header? */ 
    10281030                tny_folder_change_set_new_all_count (change, priv->cached_length); 
    10291031                tny_folder_change_set_new_unread_count (change, priv->unread_length); 
     
    10941096        /* Notify header has been removed */ 
    10951097        change = tny_folder_change_new (self); 
     1098        tny_folder_change_set_check_duplicates (change, TRUE); 
    10961099        tny_folder_change_add_expunged_header (change, header); 
    10971100        notify_folder_observers_about_in_idle (self, change); 
     
    11511154 
    11521155        change = tny_folder_change_new (self); 
     1156        tny_folder_change_set_check_duplicates (change, TRUE); 
     1157 
    11531158        iter = tny_list_create_iterator (headers); 
    11541159        while (!tny_iterator_is_done (iter)) { 
     
    22212226        { 
    22222227                change = tny_folder_change_new (info->self); 
     2228                tny_folder_change_set_check_duplicates (change, TRUE); 
    22232229                tny_folder_change_set_received_msg (change, info->msg); 
    22242230                notify_folder_observers_about (info->self, change); 
     
    24892495        { 
    24902496                change = tny_folder_change_new (self); 
     2497                tny_folder_change_set_check_duplicates (change, TRUE); 
    24912498                tny_folder_change_set_received_msg (change, retval); 
    24922499                notify_folder_observers_about_in_idle (self, change); 
     
    35013508        TnyFolderChange *fromchange = tny_folder_change_new (from); 
    35023509        TnyIterator *iter; 
     3510 
     3511        tny_folder_change_set_check_duplicates (tochange, TRUE); 
     3512        tny_folder_change_set_check_duplicates (fromchange, TRUE); 
    35033513 
    35043514        iter = tny_list_create_iterator (new_header_list); 
  • trunk/libtinymail/tny-folder-change.c

    r3320 r3466  
    4545        gchar *oldname, *newname; 
    4646        TnyFolderChangeChanged changed; 
    47         TnyMsg *msg; 
     47        TnyMsg *msg; gboolean check_duplicates; 
    4848}; 
    4949 
     
    5151        (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_TYPE_FOLDER_CHANGE, TnyFolderChangePriv)) 
    5252 
     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 **/ 
     65gboolean  
     66tny_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 **/ 
     84void  
     85tny_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 
    5392/** 
    5493 * tny_folder_change_set_received_msg: 
     
    5796 * 
    5897 * 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. 
    6099 * 
    61100 * since: 1.0 
     
    493532        g_mutex_lock (priv->lock); 
    494533 
     534        priv->check_duplicates = FALSE; 
    495535        priv->msg = NULL; 
    496536        priv->changed = 0; 
  • trunk/libtinymail/tny-folder-change.h

    r3079 r3466  
    8686void tny_folder_change_reset (TnyFolderChange *self); 
    8787TnyFolder* tny_folder_change_get_folder (TnyFolderChange *self); 
     88gboolean tny_folder_change_get_check_duplicates (TnyFolderChange *self); 
     89void tny_folder_change_set_check_duplicates (TnyFolderChange *self, gboolean check_duplicates); 
     90 
    8891TnyFolderChangeChanged tny_folder_change_get_changed  (TnyFolderChange *self); 
    8992 
  • trunk/libtinymail/tny-folder-monitor.c

    r3304 r3466  
    167167 
    168168static 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); 
     169foreach_list_add_header (TnyFolderMonitorPriv *priv, TnyHeader *header, gint length, gboolean check_duplicates) 
     170
     171        TnyIterator *iter = tny_list_create_iterator (priv->lists); 
     172 
    175173        while (!tny_iterator_is_done (iter)) 
    176174        { 
    177175                TnyList *list = TNY_LIST (tny_iterator_get_current (iter)); 
    178176 
    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                } 
    186181 
    187182                tny_list_prepend (list, (GObject *) header); 
     
    251246                { 
    252247                        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)); 
    254250                        g_object_unref (header); 
    255251                        tny_iterator_next (iter);