diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2015-04-22 23:31:43 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2015-05-27 09:26:37 +0000 |
commit | 42b521f800a08b11432cf906ce1bdf9fcbfffdeb (patch) | |
tree | a6cd65cf6b476ad99697a36800c11ecc53b7cf83 /xmloff | |
parent | 03f36c0a88d1a87c6febbadca4e549d08c6095b1 (diff) |
tdf#88056: Implement ODF import/export of page title field
to/from loext namespace, since new tag's needed for the new field
and it isn't approved by ODF-TC yet
Change-Id: I70ceb4e16e1199663520dbdf3beae31423bc81d0
Reviewed-on: https://gerrit.libreoffice.org/15485
Tested-by: Michael Stahl <mstahl@redhat.com>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/inc/txtflde.hxx | 1 | ||||
-rw-r--r-- | xmloff/inc/txtfldi.hxx | 22 | ||||
-rw-r--r-- | xmloff/source/core/xmltoken.cxx | 1 | ||||
-rw-r--r-- | xmloff/source/text/txtflde.cxx | 16 | ||||
-rw-r--r-- | xmloff/source/text/txtfldi.cxx | 31 | ||||
-rw-r--r-- | xmloff/source/text/txtimp.cxx | 2 |
6 files changed, 73 insertions, 0 deletions
diff --git a/xmloff/inc/txtflde.hxx b/xmloff/inc/txtflde.hxx index 50614776caa6..79014b626218 100644 --- a/xmloff/inc/txtflde.hxx +++ b/xmloff/inc/txtflde.hxx @@ -57,6 +57,7 @@ enum FieldIdEnum { FIELD_ID_AUTHOR, FIELD_ID_DATE, // current date FIELD_ID_TIME, // current time (+date) + FIELD_ID_PAGENAME, // page/slide name FIELD_ID_PAGENUMBER, // page number FIELD_ID_PAGESTRING, // page contination string (page number string) FIELD_ID_REFPAGE_SET, // set reference page diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 4023aacf2c93..42a3263c3c49 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1131,6 +1131,28 @@ protected: ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE; }; +/** import page|slide name fields (<text:page-name>) */ +class XMLPageNameFieldImportContext : public XMLTextFieldImportContext +{ +public: + TYPEINFO_OVERRIDE(); + + XMLPageNameFieldImportContext( + SvXMLImport& rImport, /// XML Import + XMLTextImportHelper& rHlp, /// Text import helper + sal_uInt16 nPrfx, /// namespace prefix + const OUString& sLocalName); /// element name w/o prefix + + /// process attribute values + virtual void ProcessAttribute( sal_uInt16 nAttrToken, + const OUString& sAttrValue ) SAL_OVERRIDE; + + /// prepare XTextField for insertion into document + virtual void PrepareField( + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE; +}; + /** import hyperlinks as URL fields (Calc, Impress, Draw) (<office:a>) */ class XMLUrlFieldImportContext : public XMLTextFieldImportContext { diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx index 323e0739dafd..e15cf964ccae 100644 --- a/xmloff/source/core/xmltoken.cxx +++ b/xmloff/source/core/xmltoken.cxx @@ -1373,6 +1373,7 @@ namespace xmloff { namespace token { TOKEN( "page-height", XML_PAGE_HEIGHT ), TOKEN( "page-master", XML_PAGE_MASTER ), TOKEN( "page-master-name", XML_PAGE_MASTER_NAME ), + TOKEN( "page-name", XML_PAGE_NAME ), TOKEN( "page-number", XML_PAGE_NUMBER ), TOKEN( "page-start-margin", XML_PAGE_START_MARGIN ), TOKEN( "page-style-name", XML_PAGE_STYLE_NAME ), diff --git a/xmloff/source/text/txtflde.cxx b/xmloff/source/text/txtflde.cxx index f1f8442dce8b..7c20b5cc087e 100644 --- a/xmloff/source/text/txtflde.cxx +++ b/xmloff/source/text/txtflde.cxx @@ -141,6 +141,7 @@ static sal_Char const FIELD_SERVICE_OBJECT_COUNT[] = "EmbeddedObjectCount"; static sal_Char const FIELD_SERVICE_REFERENCE_PAGE_SET[] = "ReferencePageSet"; static sal_Char const FIELD_SERVICE_REFERENCE_PAGE_GET[] = "ReferencePageGet"; static sal_Char const FIELD_SERVICE_SHEET_NAME[] = "SheetName"; +static sal_Char const FIELD_SERVICE_PAGE_NAME[] = "PageName"; static sal_Char const FIELD_SERVICE_MACRO[] = "Macro"; static sal_Char const FIELD_SERVICE_GET_REFERENCE[] = "GetReference"; static sal_Char const FIELD_SERVICE_DDE[] = "DDE"; @@ -234,6 +235,7 @@ SvXMLEnumStringMapEntry const aFieldServiceNameMapping[] = // non-writer fields ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SHEET_NAME, FIELD_ID_SHEET_NAME ), + ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_PAGE_NAME, FIELD_ID_PAGENAME ), ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_URL, FIELD_ID_URL ), ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_MEASURE, FIELD_ID_MEASURE ), @@ -611,6 +613,7 @@ enum FieldIdEnum XMLTextFieldExport::MapFieldName( case FIELD_ID_FILE_NAME: case FIELD_ID_META: case FIELD_ID_SHEET_NAME: + case FIELD_ID_PAGENAME: case FIELD_ID_MEASURE: case FIELD_ID_URL: case FIELD_ID_TABLE_FORMULA: @@ -718,6 +721,7 @@ bool XMLTextFieldExport::IsStringField( case FIELD_ID_TEXT_INPUT: case FIELD_ID_SENDER: case FIELD_ID_AUTHOR: + case FIELD_ID_PAGENAME: case FIELD_ID_PAGESTRING: case FIELD_ID_SHEET_NAME: case FIELD_ID_MEASURE: @@ -932,6 +936,7 @@ void XMLTextFieldExport::ExportFieldAutoStyle( case FIELD_ID_DOCINFO_REVISION: case FIELD_ID_DOCINFO_SAVE_AUTHOR: case FIELD_ID_SEQUENCE: + case FIELD_ID_PAGENAME: case FIELD_ID_PAGENUMBER: case FIELD_ID_PAGESTRING: case FIELD_ID_AUTHOR: @@ -1669,6 +1674,16 @@ void XMLTextFieldExport::ExportFieldHelper( ExportElement(XML_SHEET_NAME, sPresentation); break; + case FIELD_ID_PAGENAME: + { + if (SvtSaveOptions().GetODFDefaultVersion() > SvtSaveOptions::ODFVER_012) + { + SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_LO_EXT, XML_PAGE_NAME, false, false ); + GetExport().Characters( sPresentation ); + } + break; + } + case FIELD_ID_URL: { // this field is a special case because it gets mapped onto a @@ -1848,6 +1863,7 @@ void XMLTextFieldExport::ExportFieldHelper( } break; + case FIELD_ID_UNKNOWN: default: OSL_FAIL("unknown field type encountered!"); diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 6b7c9ad541a8..274ff5293585 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -129,6 +129,7 @@ const sal_Char sAPI_macro[] = "Macro"; const sal_Char sAPI_dde[] = "DDE"; const sal_Char sAPI_get_reference[] = "GetReference"; const sal_Char sAPI_sheet_name[] = "SheetName"; +const sal_Char sAPI_pagename[] = "PageName"; const sal_Char sAPI_url[] = "URL"; const sal_Char sAPI_bibliography[] = "Bibliography"; const sal_Char sAPI_annotation[] = "Annotation"; @@ -538,6 +539,11 @@ XMLTextFieldImportContext::CreateTextFieldImportContext( nPrefix, rName ); break; + case XML_TOK_TEXT_PAGE_NAME: + pContext = new XMLPageNameFieldImportContext( rImport, rHlp, + nPrefix, rName ); + break; + case XML_TOK_TEXT_BIBLIOGRAPHY_MARK: pContext = new XMLBibliographyFieldImportContext( rImport, rHlp, nPrefix, rName ); @@ -3267,6 +3273,31 @@ void XMLSheetNameImportContext::PrepareField( // no attributes -> nothing to be done } +/** import page|slide name fields (<text:page-name>) */ +TYPEINIT1( XMLPageNameFieldImportContext, XMLTextFieldImportContext ); + +XMLPageNameFieldImportContext::XMLPageNameFieldImportContext( + SvXMLImport& rImport, /// XML Import + XMLTextImportHelper& rHlp, /// Text import helper + sal_uInt16 nPrfx, /// namespace prefix + const OUString& sLocalName) /// element name w/o prefix +: XMLTextFieldImportContext(rImport, rHlp, sAPI_pagename, nPrfx, sLocalName ) +{ + bValid = true; +} + +/// process attribute values +void XMLPageNameFieldImportContext::ProcessAttribute( sal_uInt16, + const OUString& ) +{ +} + +/// prepare XTextField for insertion into document +void XMLPageNameFieldImportContext::PrepareField( + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySet> &) +{ +} // URL fields (Calc, Impress, Draw) diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx index 6c74084d08bf..2ea64ce78fe2 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -269,6 +269,8 @@ static const SvXMLTokenMapEntry aTextPElemTokenMap[] = // draw fields { XML_NAMESPACE_TEXT, XML_MEASURE, XML_TOK_TEXT_MEASURE }, + { XML_NAMESPACE_LO_EXT, XML_PAGE_NAME, XML_TOK_TEXT_PAGE_NAME }, + { XML_NAMESPACE_TEXT, XML_PAGE_NAME, XML_TOK_TEXT_PAGE_NAME }, // RDF metadata { XML_NAMESPACE_TEXT, XML_META, XML_TOK_TEXT_META }, |