allow saving attachments only, without other msg parts
This commit is contained in:
parent
c18a2f85c5
commit
da7ac9b355
|
@ -102,7 +102,8 @@ static gboolean mimeview_scrolled (GtkWidget *widget,
|
|||
GdkEventScroll *event,
|
||||
MimeView *mimeview);
|
||||
|
||||
static void mimeview_save_all (MimeView *mimeview);
|
||||
static void mimeview_save_all (MimeView *mimeview,
|
||||
gboolean attachments_only);
|
||||
#ifndef G_OS_WIN32
|
||||
static void mimeview_open_part_with (MimeView *mimeview,
|
||||
MimeInfo *partinfo,
|
||||
|
@ -203,7 +204,12 @@ static void mimeview_save_as_cb(GtkAction *action, gpointer data)
|
|||
|
||||
static void mimeview_save_all_cb(GtkAction *action, gpointer data)
|
||||
{
|
||||
mimeview_save_all((MimeView *)data);
|
||||
mimeview_save_all((MimeView *)data, FALSE);
|
||||
}
|
||||
|
||||
static void mimeview_save_all_attachments_cb(GtkAction *action, gpointer data)
|
||||
{
|
||||
mimeview_save_all((MimeView *)data, TRUE);
|
||||
}
|
||||
|
||||
static void mimeview_select_next_part_cb(GtkAction *action, gpointer data)
|
||||
|
@ -227,6 +233,7 @@ static GtkActionEntry mimeview_menu_actions[] = {
|
|||
{ "MimeView/DisplayAsText", NULL, N_("_Display as text"), NULL, "Display as text", G_CALLBACK(mimeview_display_as_text_cb) },
|
||||
{ "MimeView/SaveAs", NULL, N_("_Save as..."), NULL, "Save as", G_CALLBACK(mimeview_save_as_cb) },
|
||||
{ "MimeView/SaveAll", NULL, N_("Save _all..."), NULL, "Save all parts", G_CALLBACK(mimeview_save_all_cb) },
|
||||
{ "MimeView/SaveAllAttachments", NULL, N_("Save all attachments..."), NULL, "Save all attachments", G_CALLBACK(mimeview_save_all_attachments_cb) },
|
||||
{ "MimeView/NextPart", NULL, N_("Next part"), NULL, "Next part", G_CALLBACK(mimeview_select_next_part_cb) },
|
||||
{ "MimeView/PrevPart", NULL, N_("Previous part"), NULL, "Previous part", G_CALLBACK(mimeview_select_prev_part_cb) }
|
||||
};
|
||||
|
@ -448,6 +455,9 @@ MimeView *mimeview_create(MainWindow *mainwin)
|
|||
MENUITEM_ADDUI_MANAGER(mimeview->ui_manager,
|
||||
"/Menus/MimeView/", "SaveAll", "MimeView/SaveAll",
|
||||
GTK_UI_MANAGER_MENUITEM);
|
||||
MENUITEM_ADDUI_MANAGER(mimeview->ui_manager,
|
||||
"/Menus/MimeView/", "SaveAllAttachments", "MimeView/SaveAllAttachments",
|
||||
GTK_UI_MANAGER_MENUITEM);
|
||||
MENUITEM_ADDUI_MANAGER(mimeview->ui_manager,
|
||||
"/Menus/MimeView/", "NextPart", "MimeView/NextPart",
|
||||
GTK_UI_MANAGER_MENUITEM);
|
||||
|
@ -1888,7 +1898,7 @@ static void mimeview_save_all_info(gint errors, gint total)
|
|||
* Menu callback: Save all attached files
|
||||
* \param mimeview Current display
|
||||
*/
|
||||
static void mimeview_save_all(MimeView *mimeview)
|
||||
static void mimeview_save_all(MimeView *mimeview, gboolean attachments_only)
|
||||
{
|
||||
MimeInfo *partinfo;
|
||||
gchar *dirname;
|
||||
|
@ -1933,10 +1943,14 @@ static void mimeview_save_all(MimeView *mimeview)
|
|||
}
|
||||
|
||||
while (partinfo != NULL) {
|
||||
if (partinfo->type != MIMETYPE_MESSAGE &&
|
||||
partinfo->type != MIMETYPE_MULTIPART &&
|
||||
(partinfo->disposition != DISPOSITIONTYPE_INLINE
|
||||
|| get_real_part_name(partinfo) != NULL)) {
|
||||
if (!attachments_only &&
|
||||
(partinfo->type != MIMETYPE_MESSAGE &&
|
||||
partinfo->type != MIMETYPE_MULTIPART &&
|
||||
(partinfo->disposition != DISPOSITIONTYPE_INLINE ||
|
||||
get_real_part_name(partinfo) != NULL)) ||
|
||||
attachments_only &&
|
||||
(partinfo->disposition == DISPOSITIONTYPE_ATTACHMENT &&
|
||||
get_real_part_name(partinfo) != NULL)) {
|
||||
gchar *filename = mimeview_get_filename_for_part(
|
||||
partinfo, dirname, number++);
|
||||
|
||||
|
|
Loading…
Reference in a new issue