diff options
10 files changed, 24 insertions, 3 deletions
diff --git a/filter/source/config/cache/constant.hxx b/filter/source/config/cache/constant.hxx index a6e28b55554a..0102b329989c 100644 --- a/filter/source/config/cache/constant.hxx +++ b/filter/source/config/cache/constant.hxx @@ -69,6 +69,7 @@ #define PROPNAME_USERDATA "UserData" #define PROPNAME_TEMPLATENAME "TemplateName" #define PROPNAME_FILEFORMATVERSION "FileFormatVersion" +#define PROPNAME_EXPORTEXTENSION "ExportExtension" /** @short used to identify a frame loader or detect service item property against the configuration API and can be used diff --git a/filter/source/config/cache/filtercache.cxx b/filter/source/config/cache/filtercache.cxx index e6e1e4fd6b9c..220eeaac2551 100644 --- a/filter/source/config/cache/filtercache.cxx +++ b/filter/source/config/cache/filtercache.cxx @@ -1825,6 +1825,7 @@ CacheItem FilterCache::impl_loadItem(const css::uno::Reference< css::container:: aItem[PROPNAME_UICOMPONENT ] = xItem->getByName(PROPNAME_UICOMPONENT ); aItem[PROPNAME_FILTERSERVICE ] = xItem->getByName(PROPNAME_FILTERSERVICE ); aItem[PROPNAME_DOCUMENTSERVICE ] = xItem->getByName(PROPNAME_DOCUMENTSERVICE ); + aItem[PROPNAME_EXPORTEXTENSION ] = xItem->getByName(PROPNAME_EXPORTEXTENSION ); // special handling for flags! Convert it from a list of names to its // int representation ... diff --git a/filter/source/config/fragments/filters/Text.xcu b/filter/source/config/fragments/filters/Text.xcu index 4a703d3ac35c..4629f89af11c 100644 --- a/filter/source/config/fragments/filters/Text.xcu +++ b/filter/source/config/fragments/filters/Text.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value>TEXT</value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>txt</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.text.TextDocument</value></prop> diff --git a/filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu b/filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu index 29ad18a64281..0332e3e65d4c 100644 --- a/filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu +++ b/filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value>TEXT</value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>txt</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.text.WebDocument</value></prop> diff --git a/filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu b/filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu index f15fe5a3b05e..498057ca3e6c 100644 --- a/filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu +++ b/filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value></value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>csv</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.sheet.SpreadsheetDocument</value></prop> diff --git a/filter/source/config/fragments/filters/Text__encoded_.xcu b/filter/source/config/fragments/filters/Text__encoded_.xcu index a27c3c7cf5a1..af05106394a6 100644 --- a/filter/source/config/fragments/filters/Text__encoded_.xcu +++ b/filter/source/config/fragments/filters/Text__encoded_.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value>TEXT_DLG</value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>txt</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.text.TextDocument</value></prop> diff --git a/filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu b/filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu index d4fd201ae225..239ce3135d48 100644 --- a/filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu +++ b/filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value>TEXT_DLG</value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>txt</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.text.GlobalDocument</value></prop> diff --git a/filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu b/filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu index b347977765e5..3bde7e7c0230 100644 --- a/filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu +++ b/filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu @@ -4,6 +4,7 @@ <prop oor:name="FilterService"/> <prop oor:name="UserData"><value>TEXT_DLG</value></prop> <prop oor:name="FileFormatVersion"><value>0</value></prop> + <prop oor:name="ExportExtension"><value>txt</value></prop> <prop oor:name="Type"><value>generic_Text</value></prop> <prop oor:name="TemplateName"/> <prop oor:name="DocumentService"><value>com.sun.star.text.WebDocument</value></prop> diff --git a/officecfg/registry/schema/org/openoffice/TypeDetection/Filter.xcs b/officecfg/registry/schema/org/openoffice/TypeDetection/Filter.xcs index f87846f00c99..ce76d8aebd94 100644 --- a/officecfg/registry/schema/org/openoffice/TypeDetection/Filter.xcs +++ b/officecfg/registry/schema/org/openoffice/TypeDetection/Filter.xcs @@ -69,6 +69,9 @@ <prop oor:name="UIName" oor:localized="true" oor:type="xs:string"> <info><desc>Localized name of the filter, whch can be shown at the UI.</desc></info> </prop> + <prop oor:name="ExportExtension" oor:type="xs:string" oor:nillable="true"> + <info><desc>Extension to use when exporting content using this filter. When this value is not given, it is inferred from the Type associated with this filter.</desc></info> + </prop> </group> </templates> <component> diff --git a/sfx2/source/bastyp/fltfnc.cxx b/sfx2/source/bastyp/fltfnc.cxx index 72b35900575e..4a13f997e9b9 100644 --- a/sfx2/source/bastyp/fltfnc.cxx +++ b/sfx2/source/bastyp/fltfnc.cxx @@ -989,6 +989,13 @@ void SfxFilterContainer::ReadSingleFilter_Impl( { lFilterProperties[nFilterProperty].Value >>= sServiceName; } + else if (lFilterProperties[nFilterProperty].Name == "ExportExtension") + { + // Extension preferred by the filter. This takes precedence + // over those that are given in the file format type. + lFilterProperties[nFilterProperty].Value >>= sExtension; + sExtension = rtl::OUString("*.") + sExtension; + } else if ( lFilterProperties[nFilterProperty].Name == "Type" ) { lFilterProperties[nFilterProperty].Value >>= sType; @@ -1025,9 +1032,12 @@ void SfxFilterContainer::ReadSingleFilter_Impl( } else if ( lTypeProperties[nTypeProperty].Name == "Extensions" ) { - ::com::sun::star::uno::Sequence< ::rtl::OUString > lExtensions; - lTypeProperties[nTypeProperty].Value >>= lExtensions; - sExtension = implc_convertStringlistToString( lExtensions, ';', DEFINE_CONST_UNICODE("*.") ); + if (sExtension.isEmpty()) + { + ::com::sun::star::uno::Sequence< ::rtl::OUString > lExtensions; + lTypeProperties[nTypeProperty].Value >>= lExtensions; + sExtension = implc_convertStringlistToString( lExtensions, ';', DEFINE_CONST_UNICODE("*.") ); + } } else if ( lTypeProperties[nTypeProperty].Name == "URLPattern" ) { |