Changeset 2466

Show
Ignore:
Timestamp:
07/12/07 12:47:43
Author:
pvanhoof
Message:

Fixed the POP unread count problems

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r2465 r2466  
     12007-07-12  Philip Van Hoof  <pvanhoof@gnome.org> 
     2 
     3        * Fixed the POP unread count problems 
     4 
    152007-07-12  Murray Cumming  <murrayc@murrayc.com> 
    26 
  • trunk/libtinymail-camel/camel-lite/camel/providers/pop3/camel-pop3-folder.c

    r2451 r2466  
    760760        CamelFolderSummary *summary = folder->summary; 
    761761        CamelMessageInfoBase *mi; gboolean im_certain=FALSE; 
    762         int old_flags = 0; 
    763762 
    764763        g_static_rec_mutex_lock (pop3_store->eng_lock); 
     
    927926 
    928927        mi = (CamelMessageInfoBase *) camel_folder_summary_uid (summary, uid); 
    929         if (mi) { 
    930                 old_flags = mi->flags; 
    931                 camel_folder_summary_remove (summary, (CamelMessageInfo *) mi); 
    932         } 
    933  
    934         mi = (CamelMessageInfoBase *) camel_folder_summary_info_new_from_message (summary, message); 
    935         if (mi->uid) 
    936                 g_free (mi->uid); 
    937         mi->uid = g_strdup (uid); 
    938  
    939         if (old_flags) 
    940                 mi->flags = old_flags; 
    941  
    942         camel_folder_summary_add (summary, (CamelMessageInfo *)mi); 
     928        if (!mi) { 
     929                mi = (CamelMessageInfoBase *) camel_folder_summary_info_new_from_message (summary, message); 
     930                if (mi->uid) 
     931                        g_free (mi->uid); 
     932                mi->uid = g_strdup (uid); 
     933                camel_folder_summary_add (summary, (CamelMessageInfo *)mi); 
     934        } 
    943935 
    944936done: 
     
    966958        CamelFolderSummary *summary = folder->summary; 
    967959        CamelMessageInfoBase *mi; 
    968         int old_flags = 0; 
    969960 
    970961        g_static_rec_mutex_lock (pop3_store->eng_lock); 
     
    10791070 
    10801071        mi = (CamelMessageInfoBase *) camel_folder_summary_uid (summary, uid); 
    1081         if (mi) { 
    1082                 old_flags = mi->flags; 
    1083                 camel_folder_summary_remove (summary, (CamelMessageInfo *) mi); 
    1084         } 
    1085  
    1086         mi = (CamelMessageInfoBase *) camel_folder_summary_info_new_from_message (summary, message); 
    1087  
    1088         if (mi->uid) 
    1089                 g_free (mi->uid); 
    1090         mi->uid = g_strdup(uid); 
    1091  
    1092         if (old_flags) 
    1093                 mi->flags = old_flags; 
    1094  
    1095         camel_folder_summary_add (summary, (CamelMessageInfo *)mi); 
     1072        if (!mi) { 
     1073                mi = (CamelMessageInfoBase *) camel_folder_summary_info_new_from_message (summary, message); 
     1074                if (mi->uid) 
     1075                        g_free (mi->uid); 
     1076                mi->uid = g_strdup(uid); 
     1077                camel_folder_summary_add (summary, (CamelMessageInfo *)mi); 
     1078        } 
    10961079 
    10971080done: 
  • trunk/libtinymail-camel/camel-lite/camel/providers/pop3/camel-pop3-store.c

    r2378 r2466  
    9696static CamelFolder *get_trash  (CamelStore *store, CamelException *ex); 
    9797 
     98static void pop3_get_folder_status (CamelStore *store, const char *folder_name, int *unseen, int *messages, int *uidnext); 
     99 
    98100 
    99101 
     
    165167 
    166168static CamelFolderInfo * 
    167 pop3_build_folder_info(CamelPOP3Store *store, const char *folder_name) 
     169pop3_build_folder_info (CamelPOP3Store *store, const char *folder_name) 
    168170{ 
    169171        const char *name; 
     
    240242{ 
    241243        CamelFolderInfo *info =  pop3_get_folder_info_offline (store, top, flags, ex); 
    242  
    243         /* TODO: get read and unread count into info->unread & info->total */ 
     244        gint unseen = -1, messages = -1, uidnext = -1; 
     245 
     246        pop3_get_folder_status (store, "INBOX", &unseen, &messages, &uidnext); 
     247 
     248        if (messages != -1) 
     249                info->total = messages; 
    244250 
    245251        return info; 
     
    840846        if (info->items != -1) { 
    841847                *messages = info->items; 
    842                 if (*unseen == -1) 
    843                         *unseen = 0; 
     848                if (*unseen == -1) { 
     849                        CamelFolderInfo *inf = pop3_build_folder_info ( 
     850                                CAMEL_POP3_STORE (store), "INBOX"); 
     851                        *unseen = inf->unread; 
     852                        camel_folder_info_free (inf); 
     853                } 
    844854        } 
    845855 
  • trunk/tests/c-demo/tny-demoui-summary-view.c

    r2384 r2466  
    740740                TnyHeaderFlags flags = tny_header_get_flags (header); 
    741741                if (!(flags & TNY_HEADER_FLAG_SEEN)) 
    742                         tny_header_set_flags (header, flags | TNY_HEADER_FLAG_SEEN); 
     742                        tny_header_set_flags (header, TNY_HEADER_FLAG_SEEN); 
    743743                tny_msg_view_set_msg (priv->msg_view, msg); 
    744744        } else