[anjal] Make way to save restore search.



commit bf1aab5ef9e96365adbf03e2d0bc7eba9dfa9db7
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Mon Jun 1 13:53:51 2009 +0530

    Make way to save restore search.
---
 src/mail-folder-view.c |   17 ++++++++---------
 src/mail-folder-view.h |    1 +
 src/mail-search.c      |   12 +++++++++---
 src/mail-search.h      |    1 +
 src/mail-shell.c       |    2 ++
 src/mail-view.c        |   27 +++++++++++++++++++++------
 src/mail-view.h        |    3 ++-
 7 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/src/mail-folder-view.c b/src/mail-folder-view.c
index 5588ae2..9f5be4e 100644
--- a/src/mail-folder-view.c
+++ b/src/mail-folder-view.c
@@ -58,7 +58,6 @@ struct  _MailFolderViewPrivate {
 
 	CamelFolder *folder;
 	char *uid;
-	char *search;
 	
 	int sort_selected;
 	gboolean sort_ascending;
@@ -223,7 +222,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;
+	shell->search = NULL;
 	if (shell->priv->light) 
 		shell->model = mail_sqlite_store_new ();
 	else {
@@ -296,15 +295,15 @@ db_read_exec (struct _db_read_msg *m)
 		else {
 			char *str;
 
-			if (!mfv->priv->search && m->load)
+			if (!mfv->search && m->load)
 				em_tree_store_add_folder ((EMTreeStore *)mfv->model, folder, mfv->priv->expr, TRUE);
 			else {
 
-				str = g_strdup_printf("(and %s %s)", mfv->priv->expr, mfv->priv->search);
+				str = g_strdup_printf("(and %s %s)", mfv->priv->expr, mfv->search);
 				if (m->load)
 					em_tree_store_add_folder ((EMTreeStore *)mfv->model, folder, str, TRUE);
 				else
-					em_tree_store_search_folder ((EMTreeStore *)mfv->model, folder, mfv->priv->search ? str : mfv->priv->expr, TRUE);
+					em_tree_store_search_folder ((EMTreeStore *)mfv->model, folder, mfv->search ? str : mfv->priv->expr, TRUE);
 
 				g_free(str);
 			}
@@ -1593,15 +1592,15 @@ mail_folder_view_search_done (MailFolderView *mfv, CamelFolder *folder, const ch
 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 (mfv->search) {
+		g_free (mfv->search);
+		mfv->search = NULL;
 	}
 
 	if (search|| 1) {
 		struct _db_read_msg *m;
 
-		mfv->priv->search = search ? g_strdup(search) : NULL;
+		mfv->search = search ? g_strdup(search) : NULL;
 
 		gtk_tree_view_set_model (GTK_TREE_VIEW (mfv->tree), NULL);
 		m = mail_msg_new (&db_read_info);
diff --git a/src/mail-folder-view.h b/src/mail-folder-view.h
index 1816855..0a0d9ac 100644
--- a/src/mail-folder-view.h
+++ b/src/mail-folder-view.h
@@ -53,6 +53,7 @@ typedef struct _MailFolderView {
 	GtkWidget *menu_label;
 	
 	MailFolderViewPrivate *priv;
+	char *search;
 	char *search_state;
 } MailFolderView;
 
diff --git a/src/mail-search.c b/src/mail-search.c
index 08b22f2..07e3f8a 100644
--- a/src/mail-search.c
+++ b/src/mail-search.c
@@ -142,12 +142,12 @@ mail_search_config_search(EFilterBar *efb, FilterRule *rule, int id, const char
 static void
 mail_search_activate (EFilterBar *bar, MailSearch *search)
 {
-	char *word;
+	char *word, *state;
 	ESearchBar *esb = (ESearchBar *)bar;
 
 	g_object_get (esb, "query", &word, NULL);
-	
-	mail_view_set_search (search->view, word);
+	g_object_get (esb, "state", &state, NULL);
+	mail_view_set_search (search->view, word, state);
 }
 
 
@@ -179,3 +179,9 @@ mail_search_new ()
 	return shell;
 }
 
+void 
+mail_search_set_state (MailSearch *search, const char *word, const char *state)
+{
+	//printf("Search: %s:%s\n", word, state);
+}
+
diff --git a/src/mail-search.h b/src/mail-search.h
index 6ad9d74..8443f8e 100644
--- a/src/mail-search.h
+++ b/src/mail-search.h
@@ -52,6 +52,7 @@ typedef struct _MailSearchClass {
 } MailSearchClass;
 
 MailSearch * mail_search_new (void);
+void mail_search_set_state (MailSearch *, const char *, const char *);
 
 #endif
 
diff --git a/src/mail-shell.c b/src/mail-shell.c
index e0aa4b1..03affc4 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -391,6 +391,8 @@ mail_shell_construct (MailShell *shell)
 	tmp = gtk_vpaned_new ();
 	mail_view_set_folder_tree_widget ((MailView *)shell->mail_component->mail_view, tmp);
 	((MailSearch *)priv->search_entry)->view = (MailView *)shell->mail_component->mail_view;	
+	mail_view_init_search ((MailView *)shell->mail_component->mail_view, priv->search_entry);
+
 	shell->priv->folder_pane = tmp;
 //	gtk_box_pack_start (priv->side_pane, tmp, FALSE, FALSE, 0);
 	gtk_paned_add1 ((GtkPaned *)priv->side_pane, tmp);
diff --git a/src/mail-view.c b/src/mail-view.c
index dcb15ee..8837e8b 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -31,6 +31,7 @@
 #include "mail-conv-view.h"
 #include "mail-settings-view.h"
 #include "mail-account-view.h"
+#include "mail-search.h"
 #include "mail/em-folder-tree.h"
 #include <e-util/e-icon-factory.h>
 
@@ -41,6 +42,7 @@ struct  _MailViewPrivate {
 	GList *children;
 	MailViewChild *current_view;
 	GtkWidget *new;
+	MailSearch *search;
 };
 
 #undef MV_NEW_TAB
@@ -114,9 +116,11 @@ mv_switch (GtkNotebook     *notebook,GtkNotebookPage *page, guint page_num, gpoi
 			 mail_composer_view_activate ((MailComposerView *)child, shell->folder_tree, shell->check_mail, shell->sort_by, TRUE);
 		else if (child->type == MAIL_VIEW_MESSAGE)
 			 mail_conv_view_activate ((MailConvView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, FALSE);
-		else if (child->type == MAIL_VIEW_FOLDER) /* For some reason, Im not able to get right type */
+		else if (child->type == MAIL_VIEW_FOLDER) /* For some reason, Im not able to get right type */ {
 			 mail_folder_view_activate ((MailFolderView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, TRUE);
-		else if (child->type == MAIL_VIEW_ACCOUNT)
+		 	mail_search_set_state (shell->priv->search, ((MailFolderView *)child)->search, ((MailFolderView *)child)->search_state);
+
+		} else if (child->type == MAIL_VIEW_ACCOUNT)
 			mail_account_view_activate ((MailAccountView *)child, shell->tree, shell->folder_tree, shell->check_mail, shell->sort_by, FALSE);
 		
 		
@@ -236,9 +240,10 @@ mv_close_mcv (MailViewChild *mfv, MailView *mv)
 		 mail_composer_view_activate ((MailComposerView *)child, mv->folder_tree, mv->check_mail, mv->sort_by, TRUE);
 	else if (child->type == MAIL_VIEW_MESSAGE)
 		 mail_conv_view_activate ((MailConvView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
-	else if (child->type == MAIL_VIEW_FOLDER)  /* For some reason, the child type for mfv isn't getting right: FIXME later*/
+	else if (child->type == MAIL_VIEW_FOLDER) {
 		 mail_folder_view_activate ((MailFolderView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, TRUE);
-	else if (child->type == MAIL_VIEW_ACCOUNT)
+		 mail_search_set_state (mv->priv->search, ((MailFolderView *)mfv)->search, ((MailFolderView *)mfv)->search_state);
+	} else if (child->type == MAIL_VIEW_ACCOUNT)
 		mail_account_view_activate ((MailAccountView *)child, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE);
 
 	
@@ -588,11 +593,21 @@ mail_view_save (MailView *mv)
 }
 
 void
-mail_view_set_search (MailView *mv, const char *search)
+mail_view_set_search (MailView *mv, const char *search, char *state)
 {
 	MailViewChild *child = (MailViewChild *)mv->priv->current_view;
 
 	if (child->type == MAIL_VIEW_FOLDER) {
-		mail_folder_view_set_search ((MailFolderView *)child, search);
+		MailFolderView *mfv = (MailFolderView *)child;
+		if (mfv->search_state)
+			g_free (mfv->search_state);
+		mfv->search_state = state;
+		mail_folder_view_set_search (mfv, search);
 	}
 }
+
+void
+mail_view_init_search (MailView *mv, GtkWidget *search)
+{
+	mv->priv->search = (MailSearch *)search;
+}
diff --git a/src/mail-view.h b/src/mail-view.h
index b74f2d2..8ed64df 100644
--- a/src/mail-view.h
+++ b/src/mail-view.h
@@ -75,7 +75,8 @@ void mail_view_set_folder_tree_widget (MailView *mv, GtkWidget *tree);
 void mail_view_set_folder_tree (MailView *mv, GtkWidget *tree);
 void mail_view_save (MailView *mv);
 MailViewChild * mail_view_add_page (MailView *mv, guint16 type, gpointer data);
-void mail_view_set_search (MailView *view, const char *search);
+void mail_view_set_search (MailView *view, const char *search, char *state);
 void mail_view_set_slider (MailView *mv, GtkWidget *slider);
+void mail_view_init_search (MailView *mv, GtkWidget *search);
 
 #endif



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