#include "prefs_account.h"
#include "gtkutils.h"
#include "utils.h"
-#include "rfc2015.h"
#include "send_message.h"
#include "stock_pixmap.h"
#include "hooks.h"
#include "filtering.h"
-#include "pop.h"
+#include "partial_download.h"
static GList *messageview_list = NULL;
MsgInfo *msginfo);
static void partial_recv_show (NoticeView *noticeview,
MsgInfo *msginfo);
-static void partial_recv_dload_clicked (NoticeView *noticeview,
+static void partial_recv_dload_clicked (NoticeView *noticeview,
+ MsgInfo *msginfo);
+static void partial_recv_del_clicked (NoticeView *noticeview,
+ MsgInfo *msginfo);
+static void partial_recv_unmark_clicked (NoticeView *noticeview,
MsgInfo *msginfo);
static void save_as_cb (gpointer data,
guint action,
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), _("Sylpheed - Message View"));
- gtk_window_set_wmclass(GTK_WINDOW(window), "message_view", "Sylpheed");
- gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
+ gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
gtk_widget_set_size_request(window, prefs_common.msgwin_width,
prefs_common.msgwin_height);
"Return path: %s\n"
"It is advised to not to send the return "
"receipt."), to, buf);
- val = alertpanel(_("Warning"), message, _("Send"),
- _("+Don't Send"), NULL);
+ val = alertpanel_with_type(_("Warning"), message, _("Send"),
+ _("+Don't Send"), NULL, NULL, ALERT_WARNING);
g_free(message);
if (val != G_ALERTDEFAULT)
return -1;
/* Message ID */
generate_msgid(account->address, buf, sizeof buf);
- fprintf(fp, "Message-Id: <%s>\n", buf);
+ fprintf(fp, "Message-ID: <%s>\n", buf);
if (fclose(fp) == EOF) {
FILE_OP_ERROR(tmp, "fclose");
textview_set_all_headers(messageview->mimeview->textview, all_headers);
mimeview_show_message(messageview->mimeview, mimeinfo, file);
+ messageview_set_position(messageview, 0);
if (messageview->msginfo->partial_recv)
- partial_recv_show(messageview->noticeview, messageview->msginfo);
+ partial_recv_show(messageview->noticeview,
+ messageview->msginfo);
else if ((messageview->msginfo->dispositionnotificationto ||
messageview->msginfo->returnreceiptto) &&
!MSG_IS_RETRCPT_SENT(messageview->msginfo->flags))
- return_receipt_show(messageview->noticeview, messageview->msginfo);
+ return_receipt_show(messageview->noticeview,
+ messageview->msginfo);
else
noticeview_hide(messageview->noticeview);
Xstrdup_a(filename, msginfo->subject, return);
subst_for_filename(filename);
}
- dest = filesel_select_file(_("Save as"), filename);
+ dest = filesel_select_file_save(_("Save as"), filename);
if (!dest) return;
if (is_file_exist(dest)) {
AlertValue aval;
static void return_receipt_show(NoticeView *noticeview, MsgInfo *msginfo)
{
- noticeview_set_text(noticeview, _("This message asks for a return receipt"));
+ noticeview_set_text(noticeview, _("This message asks for a return receipt."));
noticeview_set_button_text(noticeview, _("Send receipt"));
noticeview_set_button_press_callback(noticeview,
GTK_SIGNAL_FUNC(return_receipt_send_clicked),
static void partial_recv_show(NoticeView *noticeview, MsgInfo *msginfo)
{
gchar *text = NULL;
- if (!msginfo->planned_download) {
- text = g_strdup_printf(_("This message has been partially retrieved; it is %dKB large."),
- msginfo->total_size/1024);
- noticeview_set_text(noticeview, text);
- g_free(text);
- noticeview_set_button_text(noticeview, _("Mark for download"));
- noticeview_set_button_press_callback(noticeview,
- GTK_SIGNAL_FUNC(partial_recv_dload_clicked),
- (gpointer) msginfo);
- noticeview_show(noticeview);
+ gchar *button1 = NULL;
+ gchar *button2 = NULL;
+ void *button1_cb = NULL;
+ void *button2_cb = NULL;
+
+ if (!partial_msg_in_uidl_list(msginfo)) {
+ text = g_strdup_printf(_("This message has been partially "
+ "retrieved,\nand has been deleted from the "
+ "server."));
} else {
- text = g_strdup_printf(_("This message has been partially retrieved and is planned for download; it is %dKB large."),
- msginfo->total_size/1024);
- noticeview_set_text(noticeview, text);
- noticeview_set_button_text(noticeview, NULL);
- g_free(text);
- noticeview_show(noticeview);
+ switch (msginfo->planned_download) {
+ case POP3_PARTIAL_DLOAD_UNKN:
+ text = g_strdup_printf(_("This message has been "
+ "partially retrieved;\nit is %s."),
+ to_human_readable(
+ (off_t)(msginfo->total_size)));
+ button1 = _("Mark for download");
+ button2 = _("Mark for deletion");
+ button1_cb = partial_recv_dload_clicked;
+ button2_cb = partial_recv_del_clicked;
+ break;
+ case POP3_PARTIAL_DLOAD_DLOAD:
+ text = g_strdup_printf(_("This message has been "
+ "partially retrieved;\nit is %s and "
+ "will be downloaded."),
+ to_human_readable(
+ (off_t)(msginfo->total_size)));
+ button1 = _("Unmark");
+ button1_cb = partial_recv_unmark_clicked;
+ button2 = _("Mark for deletion");
+ button2_cb = partial_recv_del_clicked;
+ break;
+ case POP3_PARTIAL_DLOAD_DELE:
+ text = g_strdup_printf(_("This message has been "
+ "partially retrieved;\nit is %s and "
+ "will be deleted."),
+ to_human_readable(
+ (off_t)(msginfo->total_size)));
+ button1 = _("Mark for download");
+ button1_cb = partial_recv_dload_clicked;
+ button2 = _("Unmark");
+ button2_cb = partial_recv_unmark_clicked;
+ break;
+ default:
+ return;
+ }
}
+
+ noticeview_set_text(noticeview, text);
+ g_free(text);
+ noticeview_set_button_text(noticeview, button1);
+ noticeview_set_button_press_callback(noticeview,
+ GTK_SIGNAL_FUNC(button1_cb), (gpointer) msginfo);
+
+ noticeview_set_2ndbutton_text(noticeview, button2);
+ noticeview_set_2ndbutton_press_callback(noticeview,
+ GTK_SIGNAL_FUNC(button2_cb), (gpointer) msginfo);
+
+ noticeview_show(noticeview);
}
-static void partial_recv_dload_clicked(NoticeView *noticeview, MsgInfo *msginfo)
+static void partial_recv_dload_clicked(NoticeView *noticeview,
+ MsgInfo *msginfo)
{
- MsgInfo *tmpmsginfo;
- gchar *file;
-
- file = procmsg_get_message_file_path(msginfo);
- if (!file) {
- g_warning("can't get message file path.\n");
- return;
+ if (partial_mark_for_download(msginfo) == 0) {
+ partial_recv_show(noticeview, msginfo);
}
+}
- tmpmsginfo = procheader_parse_file(file, msginfo->flags, TRUE, TRUE);
- tmpmsginfo->folder = msginfo->folder;
- tmpmsginfo->msgnum = msginfo->msgnum;
-
- if (pop3_mark_for_download(tmpmsginfo->account_server, tmpmsginfo->account_login,
- tmpmsginfo->partial_recv, file) == 0) {
- msginfo->planned_download = 1;
+static void partial_recv_del_clicked(NoticeView *noticeview,
+ MsgInfo *msginfo)
+{
+ if (partial_mark_for_delete(msginfo) == 0) {
partial_recv_show(noticeview, msginfo);
}
+}
- procmsg_msginfo_free(tmpmsginfo);
- g_free(file);
+static void partial_recv_unmark_clicked(NoticeView *noticeview,
+ MsgInfo *msginfo)
+{
+ if (partial_unmark(msginfo) == 0) {
+ partial_recv_show(noticeview, msginfo);
+ }
}
static void select_account_cb(GtkWidget *w, gpointer data)
{
- *(gint*)data = GPOINTER_TO_INT(gtk_object_get_user_data(GTK_OBJECT(w)));
+ *(gint*)data = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), MENU_VAL_ID));
}
static PrefsAccount *select_account_from_list(GList *ac_list)
g_return_val_if_fail(ac_list->data != NULL, NULL);
optmenu = gtk_option_menu_new();
- menu = gtkut_account_menu_new(ac_list, select_account_cb, &account_id);
+ menu = gtkut_account_menu_new(ac_list,
+ G_CALLBACK(select_account_cb),
+ &account_id);
if (!menu)
return NULL;
gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
textview = messageview_get_current_textview(msgview);
g_return_val_if_fail(textview != NULL, NULL);
- edit = GTK_EDITABLE(textview->text);
+ edit = GTK_TEXT_VIEW(textview->text);
g_return_val_if_fail(edit != NULL, NULL);
body_pos = textview->body_pos;