aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.ja6
-rw-r--r--libsylph/prefs_common.c1
-rw-r--r--libsylph/prefs_common.h1
-rw-r--r--src/mainwindow.c24
-rw-r--r--src/summaryview.c18
-rw-r--r--src/summaryview.h3
7 files changed, 56 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 15121d8b..00f43dd2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2006-01-17
+ * libsylph/prefs_common.[ch]
+ src/summaryview.[ch]
+ src/mainwindow.c: enabled toggle of the searchbar.
+
+2006-01-17
+
* src/summaryview.[ch]
src/mainwindow.c: implemented quick search of the summary view.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index a4ee68e6..b2dcfc79 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,11 @@
2006-01-17
+ * libsylph/prefs_common.[ch]
+ src/summaryview.[ch]
+ src/mainwindow.c: 検索バーの切り替えができるようにした。
+
+2006-01-17
+
* src/summaryview.[ch]
src/mainwindow.c: サマリビューのクイックサーチを実装。
diff --git a/libsylph/prefs_common.c b/libsylph/prefs_common.c
index ad18467f..5b96a5a9 100644
--- a/libsylph/prefs_common.c
+++ b/libsylph/prefs_common.c
@@ -125,6 +125,7 @@ static PrefParam param[] = {
{"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL},
{"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM},
+ {"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL},
{"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL},
{"summary_col_show_mark", "TRUE",
diff --git a/libsylph/prefs_common.h b/libsylph/prefs_common.h
index eee87b3a..a317e235 100644
--- a/libsylph/prefs_common.h
+++ b/libsylph/prefs_common.h
@@ -107,6 +107,7 @@ struct _PrefsCommon
gboolean bold_unread;
ToolbarStyle toolbar_style;
+ gboolean show_searchbar;
gboolean show_statusbar;
/* Summary columns visibility, position and size */
diff --git a/src/mainwindow.c b/src/mainwindow.c
index f8a41f1d..e42f6f89 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -254,6 +254,9 @@ static void toggle_message_cb (MainWindow *mainwin,
static void toggle_toolbar_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+static void toggle_searchbar_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
static void toggle_statusbar_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
@@ -528,6 +531,8 @@ static GtkItemFactoryEntry mainwin_entries[] =
NULL, toggle_toolbar_cb, TOOLBAR_TEXT, "/View/Show or hide/Toolbar/Icon and text"},
{N_("/_View/Show or hi_de/_Toolbar/_None"),
NULL, toggle_toolbar_cb, TOOLBAR_NONE, "/View/Show or hide/Toolbar/Icon and text"},
+ {N_("/_View/Show or hi_de/_Search bar"),
+ NULL, toggle_searchbar_cb, 0, "<ToggleItem>"},
{N_("/_View/Show or hi_de/Status _bar"),
NULL, toggle_statusbar_cb, 0, "<ToggleItem>"},
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
@@ -1042,6 +1047,12 @@ MainWindow *main_window_create(SeparateType type)
}
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
+ gtk_widget_hide(summaryview->search_hbox);
+ menuitem = gtk_item_factory_get_item
+ (ifactory, "/View/Show or hide/Search bar");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),
+ prefs_common.show_searchbar);
+
gtk_widget_hide(mainwin->statusbar);
menuitem = gtk_item_factory_get_item
(ifactory, "/View/Show or hide/Status bar");
@@ -2973,6 +2984,19 @@ static void toggle_toolbar_cb(MainWindow *mainwin, guint action,
prefs_common.toolbar_style = (ToolbarStyle)action;
}
+static void toggle_searchbar_cb(MainWindow *mainwin, guint action,
+ GtkWidget *widget)
+{
+ if (GTK_CHECK_MENU_ITEM(widget)->active) {
+ gtk_widget_show(mainwin->summaryview->search_hbox);
+ prefs_common.show_searchbar = TRUE;
+ } else {
+ gtk_widget_hide(mainwin->summaryview->search_hbox);
+ summary_qsearch_reset(mainwin->summaryview);
+ prefs_common.show_searchbar = FALSE;
+ }
+}
+
static void toggle_statusbar_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
diff --git a/src/summaryview.c b/src/summaryview.c
index 58b2d592..ebb0cfc8 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -4690,6 +4690,15 @@ void summary_get_column_order(SummaryView *summaryview)
void summary_qsearch_reset(SummaryView *summaryview)
{
+ if (!summaryview->on_filter)
+ return;
+
+ gtk_entry_set_text(GTK_ENTRY(summaryview->search_entry), "");
+
+ summaryview->on_filter = FALSE;
+ g_slist_free(summaryview->flt_mlist);
+ summaryview->flt_mlist = NULL;
+
summary_lock(summaryview);
main_window_cursor_wait(summaryview->mainwin);
@@ -4713,9 +4722,8 @@ void summary_qsearch(SummaryView *summaryview)
GSList *flt_mlist = NULL;
GSList *cur;
- summaryview->on_filter = FALSE;
- g_slist_free(summaryview->flt_mlist);
- summaryview->flt_mlist = NULL;
+ if (!summaryview->all_mlist)
+ return;
key = gtk_entry_get_text(GTK_ENTRY(summaryview->search_entry));
if (!key || *key == '\0') {
@@ -4723,6 +4731,10 @@ void summary_qsearch(SummaryView *summaryview)
return;
}
+ summaryview->on_filter = FALSE;
+ g_slist_free(summaryview->flt_mlist);
+ summaryview->flt_mlist = NULL;
+
cond = filter_cond_new(FLT_COND_HEADER, FLT_CONTAIN, 0, "Subject", key);
cond_list = g_slist_append(cond_list, cond);
cond = filter_cond_new(FLT_COND_HEADER, FLT_CONTAIN, 0, "From", key);
diff --git a/src/summaryview.h b/src/summaryview.h
index 9de8f4cf..490a18da 100644
--- a/src/summaryview.h
+++ b/src/summaryview.h
@@ -259,4 +259,7 @@ void summary_set_colorlabel (SummaryView *summaryview,
void summary_set_column_order (SummaryView *summaryview);
void summary_get_column_order (SummaryView *summaryview);
+void summary_qsearch_reset (SummaryView *summaryview);
+void summary_qsearch (SummaryView *summaryview);
+
#endif /* __SUMMARY_H__ */