diff options
author | Dan Nicholson <dbn.lists@gmail.com> | 2012-05-27 08:21:27 -0700 |
---|---|---|
committer | Dan Nicholson <dbn.lists@gmail.com> | 2012-05-27 08:21:27 -0700 |
commit | 89214d98317a6f8a1a4c1efcfd84870f37495a75 (patch) | |
tree | cd5456f6a97be3f7565af75f0a30824c3aad3c6b | |
parent | 1613cd3e9ce1579f9dca43fecd74ae43581afae6 (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.c | 6 | ||||
-rw-r--r-- | src/evbp-mime.h | 1 | ||||
-rw-r--r-- | src/evbp-viewer.c | 14 | ||||
-rw-r--r-- | test/Makefile.am | 3 |
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 |