[877] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[D-O-H] r865 - branches/barnowl_sqlite/owl

daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:10:40 2009

Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@mit.edu
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Mon, 14 Jan 2008 02:20:37 -0500 (EST)

Author: nelhage
Date: 2008-01-14 02:20:36 -0500 (Mon, 14 Jan 2008)
New Revision: 865

Modified:
   branches/barnowl_sqlite/owl/messagelist.c
   branches/barnowl_sqlite/owl/owl.h
   branches/barnowl_sqlite/owl/view.c
Log:
Make owl_view actually a view into the global message list

Modified: branches/barnowl_sqlite/owl/messagelist.c
===================================================================
--- branches/barnowl_sqlite/owl/messagelist.c	2008-01-14 05:24:43 UTC (rev 864)
+++ branches/barnowl_sqlite/owl/messagelist.c	2008-01-14 07:20:36 UTC (rev 865)
@@ -48,21 +48,6 @@
   return(owl_list_append_element(&(ml->list), element));
 }
 
-/* do we really still want this? */
-int owl_messagelist_delete_element(owl_messagelist *ml, int n)
-{
-  /* mark a message as deleted */
-  owl_message_mark_delete(owl_list_get_element(&(ml->list), n));
-  return(0);
-}
-
-int owl_messagelist_undelete_element(owl_messagelist *ml, int n)
-{
-  /* mark a message as deleted */
-  owl_message_unmark_delete(owl_list_get_element(&(ml->list), n));
-  return(0);
-}
-
 int owl_messagelist_expunge(owl_messagelist *ml)
 {
   /* expunge deleted messages */

Modified: branches/barnowl_sqlite/owl/owl.h
===================================================================
--- branches/barnowl_sqlite/owl/owl.h	2008-01-14 05:24:43 UTC (rev 864)
+++ branches/barnowl_sqlite/owl/owl.h	2008-01-14 07:20:36 UTC (rev 865)
@@ -437,7 +437,7 @@
 typedef struct _owl_view {
   char *name;
   owl_filter *filter;
-  owl_messagelist ml;
+  owl_list messages;
   owl_style *style;
 } owl_view;
 

Modified: branches/barnowl_sqlite/owl/view.c
===================================================================
--- branches/barnowl_sqlite/owl/view.c	2008-01-14 05:24:43 UTC (rev 864)
+++ branches/barnowl_sqlite/owl/view.c	2008-01-14 07:20:36 UTC (rev 865)
@@ -8,7 +8,7 @@
   v->name=owl_strdup(name);
   v->filter=f;
   v->style=s;
-  owl_messagelist_create(&(v->ml));
+  owl_list_create(&(v->messages));
   owl_view_recalculate(v);
 }
 
@@ -21,7 +21,8 @@
 void owl_view_consider_message(owl_view *v, owl_message *m)
 {
   if (owl_filter_message_match(v->filter, m)) {
-    owl_messagelist_append_element(&(v->ml), m);
+    owl_list_append_element(&(v->messages),
+                            (void*)owl_message_get_id(m));
   }
 }
 
@@ -32,22 +33,22 @@
 {
   int i, j;
   owl_messagelist *gml;
-  owl_messagelist *ml;
+  owl_list *ml;
   owl_message *m;
 
   gml=owl_global_get_msglist(&g);
-  ml=&(v->ml);
+  ml=&(v->messages);
 
   /* nuke the old list */
-  owl_list_free_simple((owl_list *) ml);
-  owl_messagelist_create(&(v->ml));
+  owl_list_free_simple(ml);
+  owl_list_create(ml);
 
   /* find all the messages we want */
   j=owl_messagelist_get_size(gml);
   for (i=0; i<j; i++) {
     m=owl_messagelist_get_element(gml, i);
     if (owl_filter_message_match(v->filter, m)) {
-      owl_messagelist_append_element(ml, m);
+      owl_list_append_element(ml, (void*)owl_message_get_id(m));
     }
   }
 }
@@ -74,22 +75,23 @@
 
 owl_message *owl_view_get_element(owl_view *v, int index)
 {
-  return(owl_messagelist_get_element(&(v->ml), index));
+  int id = (int)owl_list_get_element(&(v->messages), index);
+  return owl_messagelist_get_by_id(owl_global_get_msglist(&g), id);
 }
 
 void owl_view_delete_element(owl_view *v, int index)
 {
-  owl_messagelist_delete_element(&(v->ml), index);
+  owl_message_mark_delete(owl_view_get_element(v, index));
 }
 
 void owl_view_undelete_element(owl_view *v, int index)
 {
-  owl_messagelist_undelete_element(&(v->ml), index);
+  owl_message_unmark_delete(owl_view_get_element(v, index));
 }
 
 int owl_view_get_size(owl_view *v)
 {
-  return(owl_messagelist_get_size(&(v->ml)));
+  return(owl_list_get_size(&(v->messages)));
 }
 
 /* Returns the position in the view with a message closest 
@@ -102,7 +104,7 @@
   last = max = owl_view_get_size(v) - 1;
   while (first <= last) {
     mid = (first + last) / 2;
-    curid = owl_message_get_id(owl_view_get_element(v, mid));
+    curid = (int)owl_list_get_element(&(v->messages), mid);
     if (curid == targetid) {
       return(mid);
     } else if (curid < targetid) {
@@ -113,11 +115,11 @@
   }
   bestdist = abs(targetid-curid);
   if (curid < targetid && mid+1 < max) {
-    curid = owl_message_get_id(owl_view_get_element(v, mid+1));
+    curid = (int)owl_list_get_element(&(v->messages), mid+1);
     mid = (bestdist < abs(targetid-curid)) ? mid : mid+1;
   }
   else if (curid > targetid && mid-1 >= 0) {
-    curid = owl_message_get_id(owl_view_get_element(v, mid-1));
+    curid = (int)owl_list_get_element(&(v->messages), mid-1);
     mid = (bestdist < abs(targetid-curid)) ? mid : mid-1;
   }
   return mid;
@@ -162,6 +164,6 @@
 
 void owl_view_free(owl_view *v)
 {
-  owl_list_free_simple((owl_list *) &(v->ml));
+  owl_list_free_simple(&(v->messages));
   if (v->name) owl_free(v->name);
 }


home help back first fref pref prev next nref lref last post