[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - editeng/source include/editeng include/xmloff offapi/com sd/source xmloff/inc xmloff/source

Katarina Behrens Katarina.Behrens at cib.de
Wed May 27 02:27:11 PDT 2015


 editeng/source/items/flditem.cxx            |    2 -
 editeng/source/uno/unofield.cxx             |    9 ++++++++
 include/editeng/flditem.hxx                 |    2 -
 include/xmloff/txtimp.hxx                   |    1 
 include/xmloff/xmltoken.hxx                 |    1 
 offapi/com/sun/star/text/textfield/Type.idl |    2 -
 sd/source/ui/app/sdmod2.cxx                 |    6 +++++
 sd/source/ui/app/strings.src                |   10 +++++++++
 sd/source/ui/inc/strings.hrc                |    2 +
 sd/source/ui/unoidl/unomodel.cxx            |    6 +++++
 xmloff/inc/txtflde.hxx                      |    1 
 xmloff/inc/txtfldi.hxx                      |   22 +++++++++++++++++++
 xmloff/source/core/xmltoken.cxx             |    1 
 xmloff/source/text/txtflde.cxx              |   16 ++++++++++++++
 xmloff/source/text/txtfldi.cxx              |   31 ++++++++++++++++++++++++++++
 xmloff/source/text/txtimp.cxx               |    2 +
 16 files changed, 111 insertions(+), 3 deletions(-)

New commits:
commit 42b521f800a08b11432cf906ce1bdf9fcbfffdeb
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Wed Apr 22 23:31:43 2015 +0200

    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 at redhat.com>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index 57f1e2a..4e144ed 100644
--- a/editeng/source/items/flditem.cxx
+++ b/editeng/source/items/flditem.cxx
@@ -117,7 +117,7 @@ SvxFieldData* SvxFieldData::Create(const uno::Reference<text::XTextContent>& xTe
                 return new SvxPageField();
             case text::textfield::Type::PAGES:
                 return new SvxPagesField();
-            case text::textfield::Type::PAGE_TITLE:
+            case text::textfield::Type::PAGE_NAME:
                 return new SvxPageTitleField();
             case text::textfield::Type::DOCINFO_TITLE:
                 return new SvxFileField();
diff --git a/editeng/source/uno/unofield.cxx b/editeng/source/uno/unofield.cxx
index 7c7cae9..b507d3b 100644
--- a/editeng/source/uno/unofield.cxx
+++ b/editeng/source/uno/unofield.cxx
@@ -504,6 +504,9 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw()
     case text::textfield::Type::PRESENTATION_DATE_TIME:
         pData = new SvxDateTimeField();
         break;
+    case text::textfield::Type::PAGE_NAME:
+        pData = new SvxPageTitleField();
+        break;
     };
 
     return pData;
@@ -606,6 +609,8 @@ OUString SAL_CALL SvxUnoTextField::getPresentation( sal_Bool bShowCommand )
                 return OUString("Footer");
             case text::textfield::Type::PRESENTATION_DATE_TIME:
                 return OUString("DateTime");
+            case text::textfield::Type::PAGE_NAME:
+                return OUString("PageName");
             default:
                 return OUString("Unknown");
         }
@@ -853,6 +858,10 @@ uno::Sequence< OUString > SAL_CALL SvxUnoTextField::getSupportedServiceNames()
             pServices[2] = "com.sun.star.presentation.TextField.DateTime";
             pServices[3] = "com.sun.star.presentation.textfield.DateTime";
         break;
+        case text::textfield::Type::PAGE_NAME:
+            pServices[2] = "com.sun.star.text.TextField.PageName";
+            pServices[3] = "com.sun.star.text.textfield.PageName";
+        break;
         default:
             aSeq.realloc(0);
     }
diff --git a/include/editeng/flditem.hxx b/include/editeng/flditem.hxx
index e35e503..554a2b1 100644
--- a/include/editeng/flditem.hxx
+++ b/include/editeng/flditem.hxx
@@ -194,7 +194,7 @@ public:
 class EDITENG_DLLPUBLIC SvxPageTitleField : public SvxFieldData
 {
 public:
-    SV_DECL_PERSIST1( SvxPageTitleField, SvxFieldData, com::sun::star::text::textfield::Type::PAGE_TITLE )
+    SV_DECL_PERSIST1( SvxPageTitleField, SvxFieldData, com::sun::star::text::textfield::Type::PAGE_NAME )
     SvxPageTitleField();
 
     virtual SvxFieldData*   Clone() const SAL_OVERRIDE;
diff --git a/include/xmloff/txtimp.hxx b/include/xmloff/txtimp.hxx
index 592c834..96df6f1 100644
--- a/include/xmloff/txtimp.hxx
+++ b/include/xmloff/txtimp.hxx
@@ -210,6 +210,7 @@ enum XMLTextPElemTokens
     XML_TOK_TEXT_SEQUENCE_REF,
     XML_TOK_TEXT_NOTE_REF,
     XML_TOK_TEXT_SHEET_NAME,
+    XML_TOK_TEXT_PAGE_NAME,
     XML_TOK_TEXT_BIBLIOGRAPHY_MARK,
     XML_TOK_TEXT_ANNOTATION,
     XML_TOK_TEXT_ANNOTATION_END,
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 9639326..21b584d 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -1368,6 +1368,7 @@ namespace xmloff { namespace token {
         XML_PAGE_HEIGHT,
         XML_PAGE_MASTER,
         XML_PAGE_MASTER_NAME,
+        XML_PAGE_NAME,
         XML_PAGE_NUMBER,
         XML_PAGE_START_MARGIN,
         XML_PAGE_STYLE_NAME,
diff --git a/offapi/com/sun/star/text/textfield/Type.idl b/offapi/com/sun/star/text/textfield/Type.idl
index 42fcb8b..d2fa81f 100644
--- a/offapi/com/sun/star/text/textfield/Type.idl
+++ b/offapi/com/sun/star/text/textfield/Type.idl
@@ -42,7 +42,7 @@ constants Type
     const long PRESENTATION_HEADER    = 11;
     const long PRESENTATION_FOOTER    = 12;
     const long PRESENTATION_DATE_TIME = 13;
-    const long PAGE_TITLE    = 14;
+    const long PAGE_NAME    = 14;
 };
 
 }; }; }; }; };
diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx
index dd5c666..8f2d3a2 100644
--- a/sd/source/ui/app/sdmod2.cxx
+++ b/sd/source/ui/app/sdmod2.cxx
@@ -268,6 +268,12 @@ IMPL_LINK(SdModule, CalcFieldValueHdl, EditFieldInfo*, pInfo)
             {
                 aRepresentation = pPage->GetName();
             }
+            else
+            {
+                aRepresentation = ( ( pDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
+                                    ? SdResId(STR_FIELD_PLACEHOLDER_SLIDENAME).toString()
+                                    : SdResId(STR_FIELD_PLACEHOLDER_PAGENAME).toString() );
+            }
 
             pInfo->SetRepresentation( aRepresentation );
         }
diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src
index 06b0fcf..c46b5ef 100644
--- a/sd/source/ui/app/strings.src
+++ b/sd/source/ui/app/strings.src
@@ -1066,6 +1066,16 @@ String STR_FIELD_PLACEHOLDER_COUNT
     Text [ en-US ] = "<count>" ;
 };
 
+String STR_FIELD_PLACEHOLDER_SLIDENAME
+{
+    Text [ en-US ] = "<slide-name>" ;
+};
+
+String STR_FIELD_PLACEHOLDER_PAGENAME
+{
+    Text [ en-US ] = "<page-name>" ;
+};
+
 String STR_PLACEHOLDER_DESCRIPTION_NOTES
 {
     Text [ en-US ] = "Notes Area";
diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc
index 1fa282c..2c4c79e 100644
--- a/sd/source/ui/inc/strings.hrc
+++ b/sd/source/ui/inc/strings.hrc
@@ -367,6 +367,8 @@
 
 #define STR_UNDO_HANGULHANJACONVERSION                  (RID_APP_START+696)
 #define STR_FIELD_PLACEHOLDER_COUNT             (RID_APP_START+697)
+#define STR_FIELD_PLACEHOLDER_SLIDENAME         (RID_APP_START+698)
+#define STR_FIELD_PLACEHOLDER_PAGENAME          (RID_APP_START+699)
 
 #define STR_LEFT_PANE_DRAW_TITLE                        (RID_APP_START+700)
 #define STR_LEFT_PANE_IMPRESS_TITLE                     (RID_APP_START+701)
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index b461f87..2d72378 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -929,6 +929,12 @@ css::uno::Reference<css::uno::XInterface> SdXImpressDocument::create(
         return (::cppu::OWeakObject * )new SvxUnoTextField( text::textfield::Type::PRESENTATION_DATE_TIME );
     }
 
+    if( aServiceSpecifier == "com.sun.star.text.TextField.PageName" ||
+        aServiceSpecifier == "com.sun.star.text.textfield.PageName" )
+    {
+        return (::cppu::OWeakObject * )new SvxUnoTextField( text::textfield::Type::PAGE_NAME );
+    }
+
     if( aServiceSpecifier == "com.sun.star.xml.NamespaceMap" )
     {
         static sal_uInt16 aWhichIds[] = { SDRATTR_XMLATTRIBUTES, EE_CHAR_XMLATTRIBS, EE_PARA_XMLATTRIBS, 0 };
diff --git a/xmloff/inc/txtflde.hxx b/xmloff/inc/txtflde.hxx
index 5061477..79014b6 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 4023aac..42a3263 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 323e073..e15cf96 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 f1f8442..7c20b5c 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 6b7c9ad..274ff52 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 6c74084..2ea64ce 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 },


More information about the Libreoffice-commits mailing list