Changeset 2173

Show
Ignore:
Timestamp:
06/15/07 10:12:42
Author:
pvanhoof
Message:

Unread and total count updating

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r2171 r2173  
    33        * Connection failure handling in the IMAP code 
    44        * Experimental timeout for hostname lookups 
     5        * Unread and total count updating 
    56 
    672007-06-14  Philip Van Hoof  <pvanhoof@gnome.org> 
  • trunk/libtinymail-camel/tny-camel-folder.c

    r2170 r2173  
    141141        TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 
    142142 
     143        priv->cached_length = camel_folder_get_message_count (priv->folder); 
    143144        priv->unread_length = camel_folder_get_unread_message_count (priv->folder); 
    144145        tny_folder_change_set_new_unread_count (change, priv->unread_length); 
     146        tny_folder_change_set_new_all_count (change, priv->cached_length); 
    145147        notify_folder_observers_about (TNY_FOLDER (self), change); 
    146148        g_object_unref (change); 
     
    553555 
    554556        camel_folder_sync (priv->folder, expunge, &ex); 
     557 
     558        _tny_camel_folder_check_unread_count (TNY_CAMEL_FOLDER (self)); 
    555559 
    556560        g_static_rec_mutex_unlock (priv->folder_lock); 
  • trunk/tests/c-demo/tny-demoui-summary-view.c

    r2156 r2173  
    550550} 
    551551 
     552 
     553typedef struct 
     554{ 
     555        TnyDemouiSummaryView *self; 
     556        TnyHeader *header; 
     557} OnGetMsgInfo; 
     558 
     559static void 
     560status_update_on_get_msg (GObject *sender, TnyStatus *status, gpointer user_data) 
     561{ 
     562        OnGetMsgInfo *info = user_data; 
     563        status_update (sender, status, info->self); 
     564        return; 
     565} 
     566 
    552567static void 
    553568on_get_msg (TnyFolder *folder, gboolean cancelled, TnyMsg *msg, GError **err, gpointer user_data) 
    554569{ 
    555         TnyDemouiSummaryView *self  = user_data; 
     570        OnGetMsgInfo *info = user_data; 
     571        TnyDemouiSummaryView *self = info->self; 
     572        TnyHeader *header = info->header; 
    556573        TnyDemouiSummaryViewPriv *priv = TNY_DEMOUI_SUMMARY_VIEW_GET_PRIVATE (self); 
    557574        GError *merr = *err; 
     
    559576        g_idle_add (cleanup_statusbar, priv); 
    560577 
    561         if (cancelled) 
     578        if (cancelled) { 
     579                g_object_unref (self); 
     580                g_object_unref (header); 
     581                g_slice_free (OnGetMsgInfo, info); 
    562582                return; 
    563  
    564         if (msg) 
     583        } 
     584 
     585        if (msg) { 
     586                TnyHeaderFlags flags = tny_header_get_flags (header); 
     587                if (!(flags & TNY_HEADER_FLAG_SEEN)) 
     588                        tny_header_set_flags (header, flags | TNY_HEADER_FLAG_SEEN); 
    565589                tny_msg_view_set_msg (priv->msg_view, msg); 
    566         else  
     590        } else  
    567591                tny_msg_view_set_unavailable (priv->msg_view); 
    568592 
     
    581605                gtk_widget_show_all (edialog); 
    582606        } 
     607 
     608        g_object_unref (self); 
     609        g_object_unref (header); 
     610        g_slice_free (OnGetMsgInfo, info); 
     611 
     612        return; 
    583613} 
    584614 
     
    606636                        if (folder) 
    607637                        { 
     638                                OnGetMsgInfo *info = g_slice_new (OnGetMsgInfo); 
     639                                info->self = TNY_DEMOUI_SUMMARY_VIEW (g_object_ref (self)); 
     640                                info->header = TNY_HEADER (g_object_ref (header)); 
    608641                                gtk_widget_show (GTK_WIDGET (priv->progress)); 
    609  
    610642                                tny_folder_get_msg_async (folder, header,  
    611                                         on_get_msg, status_update, self); 
     643                                        on_get_msg, status_update_on_get_msg, info); 
    612644                                g_object_unref (G_OBJECT (folder)); 
    613645                        }