summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <dbn.lists@gmail.com>2012-05-27 08:21:27 -0700
committerDan Nicholson <dbn.lists@gmail.com>2012-05-27 08:21:27 -0700
commit89214d98317a6f8a1a4c1efcfd84870f37495a75 (patch)
treecd5456f6a97be3f7565af75f0a30824c3aad3c6b
parent1613cd3e9ce1579f9dca43fecd74ae43581afae6 (diff)
Add suffix to default save filename from mime rules
When we try to construct the filename from the document title, use the mime type mappings to get a suffix.
-rw-r--r--src/evbp-mime.c6
-rw-r--r--src/evbp-mime.h1
-rw-r--r--src/evbp-viewer.c14
-rw-r--r--test/Makefile.am3
4 files changed, 17 insertions, 7 deletions
diff --git a/src/evbp-mime.c b/src/evbp-mime.c
index 0cf1f73..5009f13 100644
--- a/src/evbp-mime.c
+++ b/src/evbp-mime.c
@@ -52,8 +52,8 @@ static const struct {
};
static const int n_mime_suffix = sizeof(mime_suffix) / sizeof(mime_suffix[0]);
-static const gchar *
-get_suffix(const gchar *type)
+const gchar *
+evbp_mime_get_suffix(const gchar *type)
{
int i;
@@ -71,7 +71,7 @@ add_one_mime(EvTypeInfo *type, gpointer udata)
const gchar *suffix;
for (mime = type->mime_types; *mime; mime++) {
- suffix = get_suffix(*mime);
+ suffix = evbp_mime_get_suffix(*mime);
if (!suffix)
continue;
g_string_append_printf(mime_desc, "%s%s:%s:%s",
diff --git a/src/evbp-mime.h b/src/evbp-mime.h
index 8656b71..ca2a1c1 100644
--- a/src/evbp-mime.h
+++ b/src/evbp-mime.h
@@ -22,6 +22,7 @@
#include <glib.h>
+const gchar *evbp_mime_get_suffix(const gchar *type);
GString *evbp_mime_get_description(void);
#endif /* _EVBP_PLUGIN_H */
diff --git a/src/evbp-viewer.c b/src/evbp-viewer.c
index 73d3d68..1c7ad70 100644
--- a/src/evbp-viewer.c
+++ b/src/evbp-viewer.c
@@ -19,7 +19,9 @@
#include <config.h>
#include "evbp-viewer.h"
+#include "evbp-mime.h"
#include "ev-page-action.h"
+#include <string.h>
#include <gtk/gtk.h>
G_DEFINE_TYPE(EvbpViewer, evbp_viewer, GTK_TYPE_BOX)
@@ -103,9 +105,15 @@ evbp_viewer_save_copy(GtkAction *action, EvbpViewer *viewer)
* mozilla is likely a garbage temporary name, so try the document title
* first. */
title = ev_document_get_title(viewer->document);
- if (title)
- filename = g_strdup(title);
- else {
+ if (title) {
+ EvTypeInfo *typeinfo;
+ const gchar *suffix;
+
+ typeinfo = ev_backends_manager_get_document_type_info(viewer->document);
+ suffix = evbp_mime_get_suffix(*typeinfo->mime_types);
+ filename = g_strdup_printf("%s.%s", title, suffix);
+ g_free(typeinfo);
+ } else {
const gchar *uri;
gchar *path;
diff --git a/test/Makefile.am b/test/Makefile.am
index 7cb9744..ee981d3 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -9,4 +9,5 @@ previewer_SOURCES = previewer.c \
$(top_srcdir)/src/evbp-viewer.h $(top_srcdir)/src/evbp-viewer.c \
$(top_srcdir)/src/ev-page-action.h $(top_srcdir)/src/ev-page-action.c \
$(top_srcdir)/src/ev-page-action-widget.h \
- $(top_srcdir)/src/ev-page-action-widget.c
+ $(top_srcdir)/src/ev-page-action-widget.c \
+ $(top_srcdir)/src/evbp-mime.h $(top_srcdir)/src/evbp-mime.c