[877] in BarnOwl Developers
[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);
}