[anjal] Make way to save restore search.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Make way to save restore search.
- Date: Tue, 2 Jun 2009 02:16:29 -0400 (EDT)
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]