/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
GTK_WIDGET_PTR(mimeview->textview));
}
+static gboolean any_part_is_signed(MimeInfo *mimeinfo)
+{
+ while (mimeinfo) {
+ if (privacy_mimeinfo_is_signed(mimeinfo))
+ return TRUE;
+ mimeinfo = procmime_mimeinfo_next(mimeinfo);
+ }
+
+ return FALSE;
+}
+
void mimeview_show_message(MimeView *mimeview, MimeInfo *mimeinfo,
const gchar *file)
{
g_signal_handlers_block_by_func(G_OBJECT(ctree), mimeview_selected,
mimeview);
+ /* check if the mail's signed - it can change the mail structure */
+
+ if (any_part_is_signed(mimeinfo))
+ debug_print("signed mail\n");
+
mimeview_set_multipart_tree(mimeview, mimeinfo, NULL);
+ icon_list_clear(mimeview);
icon_list_create(mimeview, mimeinfo);
g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
(GTK_CTREE(mimeview->ctree), mimeview->opened);
}
+gint mimeview_get_selected_part_num(MimeView *mimeview)
+{
+ gint i = 0;
+ GList *rows = GTK_CLIST(mimeview->ctree)->row_list;
+ while (rows) {
+ if (mimeview->opened == GTK_CTREE_NODE(rows))
+ return i;
+ i++;
+ rows = rows->next;
+ }
+ return -1;
+}
+
+void mimeview_select_part_num(MimeView *mimeview, gint i)
+{
+ if (i < 0)
+ return;
+ gtk_clist_unselect_all(GTK_CLIST(mimeview->ctree));
+ gtk_clist_select_row(GTK_CLIST(mimeview->ctree), i, -1);
+ gtkut_clist_set_focus_row(GTK_CLIST(mimeview->ctree), i);
+}
+
static void mimeview_set_multipart_tree(MimeView *mimeview,
MimeInfo *mimeinfo,
GtkCTreeNode *parent)
g_free(prefs_common.attach_save_dir);
g_free(startdir);
- prefs_common.attach_save_dir = g_strdup(dirname);
+ prefs_common.attach_save_dir = g_filename_to_utf8(dirname,
+ -1, NULL, NULL, NULL);
}
static MimeInfo *mimeview_get_part_to_use(MimeView *mimeview)
filedir = g_path_get_dirname(filename);
if (filedir && strcmp(filedir, ".")) {
g_free(prefs_common.attach_save_dir);
- prefs_common.attach_save_dir = g_strdup(filedir);
+ prefs_common.attach_save_dir = g_filename_to_utf8(filedir, -1, NULL, NULL, NULL);
}
g_free(filedir);
{
GtkCTreeNode *node;
node = gtk_ctree_find_by_row_data(GTK_CTREE(mimeview->ctree), NULL, partinfo);
+
if (node)
gtk_ctree_select(GTK_CTREE(mimeview->ctree), node);
}
GINT_TO_POINTER(mimeview->icon_count));
g_object_set_data(G_OBJECT(button), "partinfo",
mimeinfo);
-
+
switch (mimeinfo->type) {
case MIMETYPE_TEXT:
{
GList *child;
GtkAdjustment *adj;
-
+
child = gtk_container_children(GTK_CONTAINER(mimeview->icon_vbox));
for (; child != NULL; child = g_list_next(child)) {
gtkut_container_remove(GTK_CONTAINER(mimeview->icon_vbox),