From a185556cfbf5881f994da3575777ebdcafd91091 Mon Sep 17 00:00:00 2001 From: hiro Date: Wed, 21 Dec 2005 08:19:23 +0000 Subject: some modification of searching. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@848 ee746299-78ed-0310-b773-934348b2243d --- src/compose.c | 2 ++ src/folderview.c | 1 + src/prefs_folder_item.c | 4 +++- src/summary_search.c | 11 +++++++---- src/summaryview.c | 24 ++++++++++++++++++------ 5 files changed, 31 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/compose.c b/src/compose.c index 123d4df1..b1d12dcc 100644 --- a/src/compose.c +++ b/src/compose.c @@ -768,6 +768,7 @@ void compose_reply(MsgInfo *msginfo, FolderItem *item, ComposeMode mode, MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED); MSG_SET_PERM_FLAGS(msginfo->flags, MSG_REPLIED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); msginfo->folder->mark_dirty = TRUE; if (MSG_IS_IMAP(msginfo->flags)) imap_msg_set_perm_flags(msginfo, MSG_REPLIED); @@ -859,6 +860,7 @@ void compose_forward(GSList *mlist, FolderItem *item, gboolean as_attach, msginfo = (MsgInfo *)cur->data; MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_REPLIED); MSG_SET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); msginfo->folder->mark_dirty = TRUE; } msginfo = (MsgInfo *)mlist->data; diff --git a/src/folderview.c b/src/folderview.c index 8dca27ae..d79dd587 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -1601,6 +1601,7 @@ static gboolean folderview_menu_popup(FolderView *folderview, } if (item->stype == F_VIRTUAL) { rename_folder = delete_folder = TRUE; + search_folder = FALSE; } if (FOLDER_TYPE(folder) == F_IMAP || FOLDER_TYPE(folder) == F_NEWS) { diff --git a/src/prefs_folder_item.c b/src/prefs_folder_item.c index 9d777eba..37ad6be2 100644 --- a/src/prefs_folder_item.c +++ b/src/prefs_folder_item.c @@ -253,6 +253,8 @@ static void prefs_folder_item_general_create(PrefsFolderItemDialog *dialog) gtk_widget_set_sensitive(optmenu, FALSE); gtk_widget_set_sensitive(vbox2, FALSE); } + if (dialog->item->stype == F_VIRTUAL) + gtk_widget_set_sensitive(optmenu, FALSE); dialog->name_entry = name_entry; dialog->id_label = id_label; @@ -527,7 +529,7 @@ static void prefs_folder_item_apply_cb(GtkWidget *widget, type = (SpecialFolderItemType) g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID); - if (item->stype != type) { + if (item->stype != type && item->stype != F_VIRTUAL) { switch (type) { case F_NORMAL: break; diff --git a/src/summary_search.c b/src/summary_search.c index e63f1ef9..a5ff8f76 100644 --- a/src/summary_search.c +++ b/src/summary_search.c @@ -60,6 +60,7 @@ #include "manage_window.h" #include "alertpanel.h" #include "foldersel.h" +#include "statusbar.h" #include "procmsg.h" #include "procheader.h" #include "folder.h" @@ -176,7 +177,7 @@ void summary_search(FolderItem *item) else gtk_widget_hide(search_window.window); - if (item) { + if (item && item->stype != F_VIRTUAL) { id = folder_item_get_identifier(item); gtk_entry_set_text(GTK_ENTRY(search_window.folder_entry), id); g_free(id); @@ -515,6 +516,7 @@ static void summary_search_query(void) gtk_button_set_label(GTK_BUTTON(search_window.search_btn), GTK_STOCK_FIND); gtk_label_set_text(GTK_LABEL(search_window.status_label), _("Done.")); + statusbar_pop_all(); if (search_window.cancelled) debug_print("* query search cancelled.\n"); @@ -533,7 +535,7 @@ static void summary_search_folder(FolderItem *item) gint count = 1, total; GTimeVal tv_prev, tv_cur; - if (!item->path) + if (!item->path || item->stype == F_VIRTUAL) return; folder_name = g_path_get_basename(item->path); @@ -729,7 +731,7 @@ static void summary_select_folder(GtkButton *button, gpointer data) gchar *id; item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL); - if (!item) + if (!item || item->stype == F_VIRTUAL) return; id = folder_item_get_identifier(item); @@ -779,7 +781,7 @@ static void summary_search_save_dialog_select_folder(GtkButton *button, gchar *id; item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL); - if (!item) + if (!item || item->no_sub || item->stype == F_VIRTUAL) return; id = folder_item_get_identifier(item); @@ -929,6 +931,7 @@ static FolderItem *summary_search_create_vfolder(FolderItem *parent, item = folder_item_new(name, path); item->stype = F_VIRTUAL; + item->no_sub = TRUE; folder_item_append(parent, item); g_free(path); diff --git a/src/summaryview.c b/src/summaryview.c index bf10d2a7..39940ce1 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -2271,6 +2271,7 @@ static void summary_display_msg_full(SummaryView *summaryview, MSG_IS_UNREAD(msginfo->flags)) { MSG_UNSET_PERM_FLAGS (msginfo->flags, MSG_NEW | MSG_UNREAD); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summaryview->folder_item->mark_dirty = TRUE; if (MSG_IS_IMAP(msginfo->flags)) imap_msg_unset_perm_flags @@ -2450,15 +2451,17 @@ static void summary_mark_row(SummaryView *summaryview, GtkTreeIter *iter) GET_MSG_INFO(msginfo, iter); msginfo->to_folder = NULL; - if (MSG_IS_DELETED(msginfo->flags)) + if (MSG_IS_DELETED(msginfo->flags)) { summaryview->deleted--; + MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + } if (MSG_IS_MOVE(msginfo->flags)) summaryview->moved--; if (MSG_IS_COPY(msginfo->flags)) summaryview->copied--; - MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY); MSG_SET_PERM_FLAGS(msginfo->flags, MSG_MARKED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summaryview->folder_item->mark_dirty = TRUE; summary_set_row(summaryview, iter, msginfo); @@ -2508,6 +2511,7 @@ static void summary_mark_row_as_read(SummaryView *summaryview, summaryview->folder_item->unread--; if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) { MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_NEW | MSG_UNREAD); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summaryview->folder_item->mark_dirty = TRUE; summary_set_row(summaryview, iter, msginfo); debug_print(_("Message %d is marked as being read\n"), @@ -2597,6 +2601,7 @@ static void summary_mark_row_as_unread(SummaryView *summaryview, debug_print(_("Message %d is marked as unread\n"), msginfo->msgnum); } + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summary_set_row(summaryview, iter, msginfo); } @@ -2646,6 +2651,7 @@ static void summary_delete_row(SummaryView *summaryview, GtkTreeIter *iter) summaryview->copied--; MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY); MSG_SET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summaryview->deleted++; summaryview->folder_item->mark_dirty = TRUE; @@ -2771,6 +2777,7 @@ static void summary_unmark_row(SummaryView *summaryview, GtkTreeIter *iter) summaryview->copied--; MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_MARKED | MSG_DELETED); MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE | MSG_COPY); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summaryview->folder_item->mark_dirty = TRUE; summary_set_row(summaryview, iter, msginfo); @@ -2818,9 +2825,11 @@ static void summary_move_row_to(SummaryView *summaryview, GtkTreeIter *iter, GET_MSG_INFO(msginfo, iter); msginfo->to_folder = to_folder; - if (MSG_IS_DELETED(msginfo->flags)) + if (MSG_IS_DELETED(msginfo->flags)) { summaryview->deleted--; - MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); + } MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_COPY); if (!MSG_IS_MOVE(msginfo->flags)) { MSG_SET_TMP_FLAGS(msginfo->flags, MSG_MOVE); @@ -2889,9 +2898,11 @@ static void summary_copy_row_to(SummaryView *summaryview, GtkTreeIter *iter, GET_MSG_INFO(msginfo, iter); msginfo->to_folder = to_folder; - if (MSG_IS_DELETED(msginfo->flags)) + if (MSG_IS_DELETED(msginfo->flags)) { summaryview->deleted--; - MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_DELETED); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); + } MSG_UNSET_TMP_FLAGS(msginfo->flags, MSG_MOVE); if (!MSG_IS_COPY(msginfo->flags)) { MSG_SET_TMP_FLAGS(msginfo->flags, MSG_COPY); @@ -4254,6 +4265,7 @@ void summary_set_colorlabel(SummaryView *summaryview, guint labelcolor, MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_CLABEL_FLAG_MASK); MSG_SET_COLORLABEL_VALUE(msginfo->flags, labelcolor); + MSG_SET_TMP_FLAGS(msginfo->flags, MSG_FLAG_CHANGED); summary_set_row(summaryview, &iter, msginfo); } -- cgit v1.2.3