[anjal] Support to search in folder view.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Support to search in folder view.
- Date: Fri, 15 May 2009 13:56:21 -0400 (EDT)
commit e4aed60091620648cad10c9656118f7e5f553718
Author: Srinivasa Ragavan <sragavan novell com>
Date: Fri May 15 23:28:19 2009 +0530
Support to search in folder view.
---
src/mail-folder-view.c | 62 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/src/mail-folder-view.c b/src/mail-folder-view.c
index ac82d89..205d68d 100644
--- a/src/mail-folder-view.c
+++ b/src/mail-folder-view.c
@@ -57,6 +57,7 @@ struct _MailFolderViewPrivate {
CamelFolder *folder;
char *uid;
+ char *search;
int sort_selected;
gboolean sort_ascending;
@@ -222,6 +223,7 @@ mail_folder_view_init (MailFolderView *shell)
shell->priv->show_thread = g_getenv("ANJAL_THREAD") != NULL;
shell->priv->show_children = g_getenv("ANJAL_CHILDREN") != NULL;
shell->priv->folder = NULL;
+ shell->priv->search = NULL;
if (shell->priv->light)
shell->model = mail_sqlite_store_new ();
else {
@@ -270,8 +272,9 @@ struct _db_read_msg {
MailFolderView *mfv;
CamelFolder *folder;
const char *uri;
-
- void (*done) (char *uri, CamelFolder *folder, void *data);
+ gboolean load;
+
+ void (*done) (char *uri, CamelFolder *folder, void *data);
};
static void
@@ -286,8 +289,22 @@ db_read_exec (struct _db_read_msg *m)
if (mfv->priv->light)
mail_sqlite_store_set_folder (mfv->model, folder, NULL);
- else
- em_tree_store_add_folder (mfv->model, folder, mfv->priv->expr, TRUE);
+ else {
+ char *str;
+
+ if (!mfv->priv->search && m->load)
+ em_tree_store_add_folder (mfv->model, folder, mfv->priv->expr, TRUE);
+ else {
+
+ str = g_strdup_printf("(and %s %s)", mfv->priv->expr, mfv->priv->search);
+ if (m->load)
+ em_tree_store_add_folder (mfv->model, folder, str, TRUE);
+ else
+ em_tree_store_search_folder (mfv->model, folder, mfv->priv->search ? str : mfv->priv->expr, TRUE);
+
+ g_free(str);
+ }
+ }
/* FIXME: Set a signal emit and listen for it at note book and set the title appropriately */
}
@@ -296,7 +313,8 @@ db_read_exec (struct _db_read_msg *m)
static void
db_read_done (struct _db_read_msg *m)
{
- m->done (m->mfv, m->folder, m->uri);
+ if (m->done)
+ m->done (m->mfv, m->folder, m->uri);
}
@@ -321,6 +339,7 @@ mfv_db_load (MailFolderView *mfv, const char *uri, CamelFolder *folder)
m = mail_msg_new (&db_read_info);
m->mfv = mfv;
+ m->load = TRUE;
m->uri = g_strdup(uri);
m->folder = folder;
m->done = mail_folder_view_set_folder;
@@ -1293,7 +1312,7 @@ mail_folder_view_construct (MailFolderView *shell)
the first up-arrow. I takes ~2 secs to respond. I bypass it by this.*/
column->editable_widget = (gpointer)0xdeadbeef;
- gtk_tree_view_column_set_fixed_width (column, 750);
+ gtk_tree_view_column_set_fixed_width (column, 720);
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_title (column, _("Messages"));
gtk_tree_view_append_column (GTK_TREE_VIEW (shell->tree), column);
@@ -1561,3 +1580,34 @@ mail_folder_view_save (MailFolderView *mfv)
{
mfv_save(mfv);
}
+
+static void
+mail_folder_view_search_done (MailFolderView *mfv, CamelFolder *folder, const char *uri)
+{
+ gtk_tree_view_set_model (GTK_TREE_VIEW (mfv->tree), mfv->model);
+}
+
+void
+mail_folder_view_set_search (MailFolderView *mfv, const char *search)
+{
+ if (mfv->priv->search) {
+ g_free (mfv->priv->search);
+ mfv->priv->search = NULL;
+ }
+
+ if (search|| 1) {
+ struct _db_read_msg *m;
+
+ mfv->priv->search = search ? g_strdup(search) : NULL;
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (mfv->tree), NULL);
+ m = mail_msg_new (&db_read_info);
+ m->mfv = mfv;
+ m->load = FALSE;
+ m->uri = g_strdup(mfv->uri);
+ m->folder = mfv->priv->folder;
+ m->done = mail_folder_view_search_done;
+ mail_msg_unordered_push (m);
+ }
+
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]