balsa r7940 - in trunk: . libbalsa



Author: PeterB
Date: Thu Jun  5 21:14:16 2008
New Revision: 7940
URL: http://svn.gnome.org/viewvc/balsa?rev=7940&view=rev

Log:
new method libbalsa_mailbox_index_entry_clear

Modified:
   trunk/ChangeLog
   trunk/libbalsa/mailbox.c
   trunk/libbalsa/mailbox.h
   trunk/libbalsa/mailbox_imap.c

Modified: trunk/libbalsa/mailbox.c
==============================================================================
--- trunk/libbalsa/mailbox.c	(original)
+++ trunk/libbalsa/mailbox.c	Thu Jun  5 21:14:16 2008
@@ -350,8 +350,8 @@
 }
 #endif                          /*BALSA_USE_THREADS */
 
-void
-libbalsa_mailbox_index_entry_free(LibBalsaMailboxIndexEntry *entry)
+static void
+lbm_index_entry_free(LibBalsaMailboxIndexEntry *entry)
 {
     if(entry) {
 #ifdef BALSA_USE_THREADS
@@ -365,6 +365,22 @@
     }
 }
 
+void
+libbalsa_mailbox_index_entry_clear(LibBalsaMailbox * mailbox, guint msgno)
+{
+    g_return_if_fail(LIBBALSA_IS_MAILBOX(mailbox));
+    g_return_if_fail(msgno > 0);
+
+    if (msgno <= mailbox->mindex->len) {
+        LibBalsaMailboxIndexEntry **entry = (LibBalsaMailboxIndexEntry **)
+            & g_ptr_array_index(mailbox->mindex, msgno - 1);
+        lbm_index_entry_free(*entry);
+        *entry = NULL;
+
+        libbalsa_mailbox_msgno_changed(mailbox, msgno);
+    }
+}
+
 #ifdef BALSA_USE_THREADS
 #  define VALID_ENTRY(entry) \
     ((entry) && !((LibBalsaMailboxIndexEntry *) (entry))->idle_pending)
@@ -497,8 +513,7 @@
         unsigned i;
         /* we could have used g_ptr_array_foreach but it is >=2.4.0 */
         for(i=0; i<mailbox->mindex->len; i++)
-            libbalsa_mailbox_index_entry_free
-                (g_ptr_array_index(mailbox->mindex, i));
+            lbm_index_entry_free(g_ptr_array_index(mailbox->mindex, i));
         g_ptr_array_free(mailbox->mindex, TRUE);
         mailbox->mindex = NULL;
     }
@@ -1334,8 +1349,8 @@
                     decrease_post, &dt);
 
     if (seqno <= mailbox->mindex->len) {
-        libbalsa_mailbox_index_entry_free(g_ptr_array_index(mailbox->mindex,
-                                                            seqno - 1));
+        lbm_index_entry_free(g_ptr_array_index(mailbox->mindex,
+                                               seqno - 1));
         g_ptr_array_remove_index(mailbox->mindex, seqno - 1);
     }
 
@@ -4269,26 +4284,19 @@
     g_return_if_fail(LIBBALSA_IS_MAILBOX(mailbox));
     if (!mailbox->mindex)
         return;
+    g_return_if_fail(msgno > 0);
+    g_return_if_fail(LIBBALSA_IS_MESSAGE(message));
+
+    if (mailbox->mindex->len < msgno)
+        g_ptr_array_set_size(mailbox->mindex, msgno);
+
+    entry = g_ptr_array_index(mailbox->mindex, msgno - 1);
 
-    if (message) {
-        while (mailbox->mindex->len < msgno)
-            g_ptr_array_add(mailbox->mindex, NULL);
-
-        entry = g_ptr_array_index(mailbox->mindex, msgno - 1);
-
-        if (!entry)
-            g_ptr_array_index(mailbox->mindex, msgno - 1) =
-                libbalsa_mailbox_index_entry_new_from_msg(message);
+    if (!entry)
+        g_ptr_array_index(mailbox->mindex, msgno - 1) =
+            libbalsa_mailbox_index_entry_new_from_msg(message);
 #if BALSA_USE_THREADS
-        else if (entry->idle_pending)
-            lbm_index_entry_populate_from_msg(entry, message);
+    else if (entry->idle_pending)
+        lbm_index_entry_populate_from_msg(entry, message);
 #endif                          /* BALSA_USE_THREADS */
-        else
-            return;
-    } else if (msgno <= mailbox->mindex->len) {
-        libbalsa_mailbox_index_entry_free(g_ptr_array_index
-                                          (mailbox->mindex, msgno - 1));
-        g_ptr_array_index(mailbox->mindex, msgno - 1) = NULL;
-        libbalsa_mailbox_msgno_changed(mailbox, msgno);
-    }
 }

Modified: trunk/libbalsa/mailbox.h
==============================================================================
--- trunk/libbalsa/mailbox.h	(original)
+++ trunk/libbalsa/mailbox.h	Thu Jun  5 21:14:16 2008
@@ -500,7 +500,8 @@
                            (LibBalsaMessage *msg);
 void libbalsa_mailbox_index_entry_set_no(LibBalsaMailboxIndexEntry *entry,
                                          unsigned no);
-void libbalsa_mailbox_index_entry_free(LibBalsaMailboxIndexEntry *entry);
+void libbalsa_mailbox_index_entry_clear(LibBalsaMailbox * mailbox,
+                                        guint msgno);
 void libbalsa_mailbox_index_set_flags(LibBalsaMailbox *mailbox,
 				      unsigned msgno, LibBalsaMessageFlag f);
 gboolean libbalsa_mailbox_set_view_filter(LibBalsaMailbox * mailbox,

Modified: trunk/libbalsa/mailbox_imap.c
==============================================================================
--- trunk/libbalsa/mailbox_imap.c	(original)
+++ trunk/libbalsa/mailbox_imap.c	Thu Jun  5 21:14:16 2008
@@ -802,7 +802,7 @@
                     g_free(msgid);
                     g_ptr_array_index(mimap->msgids, i) = NULL;
                 }
-                libbalsa_mailbox_cache_message(mailbox, i + 1, NULL);
+                libbalsa_mailbox_index_entry_clear(mailbox, i + 1);
             }
             for(i=mimap->messages_info->len; i>cnt; i--) {
                 g_array_remove_index(mimap->messages_info, i-1);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]