* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-
#include "defs.h"
#include <glib.h>
#define SUMMARY_COL_MARK_WIDTH 10
#define SUMMARY_COL_UNREAD_WIDTH 13
#define SUMMARY_COL_LOCKED_WIDTH 13
-#define SUMMARY_COL_MIME_WIDTH 10
+#define SUMMARY_COL_MIME_WIDTH 11
static GdkFont *boldfont;
static GdkFont *smallfont;
static GdkPixmap *clipxpm;
static GdkBitmap *clipxpmmask;
+static GdkPixmap *keyxpm;
+static GdkBitmap *keyxpmmask;
+static GdkPixmap *clipkeyxpm;
+static GdkBitmap *clipkeyxpmmask;
static void summary_free_msginfo_func (GtkCTree *ctree,
GtkCTreeNode *node,
static void summary_toggle_view (SummaryView *summaryview);
static void summary_set_row_marks (SummaryView *summaryview,
GtkCTreeNode *row);
+static void summaryview_subject_filter_init (PrefsFolderItem *prefs);
/* message handling */
static void summary_mark_row (SummaryView *summaryview,
&lockedxpm, &lockedxpmmask);
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_IGNORETHREAD,
&ignorethreadxpm, &ignorethreadxpmmask);
+ stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_KEY,
+ &clipkeyxpm, &clipkeyxpmmask);
+ stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_KEY,
+ &keyxpm, &keyxpmmask);
if (!small_style) {
small_style = gtk_style_copy
mlist = not_killed;
}
- if (item->prefs->enable_simplify_subject
- && item->prefs->simplify_subject_regexp != NULL
- && strlen(item->prefs->simplify_subject_regexp) != 0) {
- summary_simplify_subject(summaryview,
- item->prefs->simplify_subject_regexp,
- mlist);
- }
-
STATUSBAR_POP(summaryview->mainwin);
/* set ctree and hash table from the msginfo list
summaryview->important_score =
summaryview->folder_item->prefs->important_score;
}
+
+ summaryview_subject_filter_init(summaryview->folder_item->prefs);
if (summaryview->folder_item->threaded) {
GNode *root, *gnode;
static gchar *from_name = NULL;
static gchar col_number[11];
static gchar col_score[11];
+ static gchar buf[BUFFSIZE];
+ PrefsFolderItem *prefs = summaryview->folder_item->prefs;
gint *col_pos = summaryview->col_pos;
text[col_pos[S_COL_MARK]] = NULL;
}
}
- text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? msginfo->subject :
- _("(No Subject)");
+ if (prefs->enable_simplify_subject
+ && prefs->simplify_subject_preg != NULL )
+ text[col_pos[S_COL_SUBJECT]] = msginfo->subject ?
+ string_remove_match(buf, BUFFSIZE, msginfo->subject,
+ prefs->simplify_subject_preg) :
+
+ _("(No Subject)");
+ else
+ text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? msginfo->subject :
+ _("(No Subject)");
}
#define CHANGE_FLAGS(msginfo) \
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
MsgInfo *msginfo;
+ MsgFlags flags;
gchar *filename;
if (!new_window && summaryview->displayed == row) return;
summary_status_show(summaryview);
}
+ flags = msginfo->flags;
+
if (new_window) {
MessageView *msgview;
gtkut_ctree_node_move_if_on_the_edge(ctree, row);
}
- if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) {
+ if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags) ||
+ (MSG_IS_MIME(msginfo->flags) - MSG_IS_MIME(flags) != 0)) {
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_NEW | MSG_UNREAD);
CHANGE_FLAGS(msginfo);
summary_set_row_marks(summaryview, row);
gtk_ctree_node_set_text(ctree, row, col_pos[S_COL_LOCKED], NULL);
}
- if (MSG_IS_MIME(flags)) {
+ if (MSG_IS_MIME(flags) && MSG_IS_ENCRYPTED(flags)) {
+ gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
+ clipkeyxpm, clipkeyxpmmask);
+ } else if (MSG_IS_ENCRYPTED(flags)) {
+ gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
+ keyxpm, keyxpmmask);
+ } else if (MSG_IS_MIME(flags)) {
gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
clipxpm, clipxpmmask);
} else {
}
}
-void summary_simplify_subject(SummaryView *summaryview, gchar * rexp,
- GSList * mlist)
-{
- GSList * cur;
- for(cur = mlist ; cur != NULL ; cur = cur->next) {
- MsgInfo * msginfo = (MsgInfo *) cur->data;
- string_remove_all_matches(msginfo->subject, rexp,
- REG_EXTENDED, 0);
- }
-}
-
void summary_processing(SummaryView *summaryview, GSList * mlist)
{
GSList * processing_list;
g_hash_table_destroy(summaryview->folder_table);
summaryview->folder_table = NULL;
-
- summary_show(summaryview, summaryview->folder_item, FALSE);
}
debug_print(_("done.\n"));
main_window_cursor_normal(summaryview->mainwin);
summary_unlock(summaryview);
+
+ /* CLAWS: summary_show() only valid after having a lock. ideally
+ * we want the lock to be context aware... */
+ if (global_processing)
+ summary_show(summaryview, summaryview->folder_item, FALSE);
}
static void summary_filter_func(GtkCTree *ctree, GtkCTreeNode *node,
summaryview->folder_item != dest)
summary_move_row_to(summaryview, node, dest);
}
- else
+ else
filter_msginfo_move_or_delete(global_processing, msginfo,
summaryview->folder_table);
}
GtkWidget *widget;
widget = gtk_item_factory_get_item(gtk_item_factory_from_widget(summaryview->mainwin->menubar),
- "/Summary/Hide read messages");
+ "/View/Hide read messages");
gtk_object_set_data(GTK_OBJECT(widget), "dont_toggle",
GINT_TO_POINTER(1));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(widget), action);
gtk_object_set_data(GTK_OBJECT(widget), "dont_toggle",
GINT_TO_POINTER(0));
}
+static void summaryview_subject_filter_init(PrefsFolderItem *prefs)
+{
+ int err;
+ gchar buf[BUFFSIZE];
+ if (prefs->enable_simplify_subject) {
+ if (prefs->simplify_subject_regexp &&
+ *prefs->simplify_subject_regexp != 0x00) {
+
+ if (!prefs->simplify_subject_preg)
+ prefs->simplify_subject_preg = g_new(regex_t, 1);
+ else
+ regfree(prefs->simplify_subject_preg);
+
+ err = string_match_precompile(prefs->simplify_subject_regexp,
+ prefs->simplify_subject_preg, REG_EXTENDED);
+ if (err) {
+ regerror(err, prefs->simplify_subject_preg, buf, BUFFSIZE);
+ alertpanel_error(_("Regular expression (regexp) error:\n%s"), buf);
+ g_free(prefs->simplify_subject_preg);
+ prefs->simplify_subject_preg = NULL;
+ }
+ } else {
+ if (prefs->simplify_subject_preg) {
+ regfree(prefs->simplify_subject_preg);
+ g_free(prefs->simplify_subject_preg);
+ prefs->simplify_subject_preg = NULL;
+ }
+ }
+ }
+}
+
+
/*
* End of Source.
*/