summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/source/config/cache/constant.hxx1
-rw-r--r--filter/source/config/cache/filtercache.cxx1
-rw-r--r--filter/source/config/fragments/filters/Text.xcu1
-rw-r--r--filter/source/config/fragments/filters/Text__StarWriter_Web_.xcu1
-rw-r--r--filter/source/config/fragments/filters/Text___txt___csv__StarCalc_.xcu1
-rw-r--r--filter/source/config/fragments/filters/Text__encoded_.xcu1
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_GlobalDocument_.xcu1
-rw-r--r--filter/source/config/fragments/filters/Text__encoded___StarWriter_Web_.xcu1
-rw-r--r--officecfg/registry/schema/org/openoffice/TypeDetection/Filter.xcs3
-rw-r--r--sfx2/source/bastyp/fltfnc.cxx16
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" )
{