LibreOffice Module xmloff (master)  1
csmaphdl.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include "csmaphdl.hxx"
21 #include <xmloff/xmltoken.hxx>
22 #include <xmloff/xmluconv.hxx>
23 #include <xmloff/xmlement.hxx>
24 #include <rtl/ustrbuf.hxx>
25 #include <com/sun/star/style/CaseMap.hpp>
26 #include <com/sun/star/uno/Any.hxx>
27 
28 using namespace ::com::sun::star;
29 using namespace ::xmloff::token;
30 
32 {
33  { XML_NONE, style::CaseMap::NONE },
34  { XML_CASEMAP_LOWERCASE, style::CaseMap::LOWERCASE },
35  { XML_CASEMAP_UPPERCASE, style::CaseMap::UPPERCASE },
36  { XML_CASEMAP_CAPITALIZE, style::CaseMap::TITLE },
37  { XML_TOKEN_INVALID, 0 }
38 };
39 
40 
42 {
43  // nothing to do
44 }
45 
46 bool XMLCaseMapPropHdl::importXML( const OUString& rStrImpValue, uno::Any& rValue, const SvXMLUnitConverter& ) const
47 {
48  sal_uInt16 nVal;
50  nVal, rStrImpValue, pXML_Casemap_Enum );
51  if( bRet )
52  rValue <<= nVal;
53 
54  return bRet;
55 }
56 
57 bool XMLCaseMapPropHdl::exportXML( OUString& rStrExpValue, const uno::Any& rValue, const SvXMLUnitConverter& ) const
58 {
59  bool bRet = false;
60  sal_uInt16 nValue = sal_uInt16();
61 
62  if( rValue >>= nValue )
63  {
64  OUStringBuffer aOut;
66  aOut, nValue, pXML_Casemap_Enum );
67  if( bRet )
68  rStrExpValue = aOut.makeStringAndClear();
69  }
70 
71  return bRet;
72 }
73 
74 
76 {
77  // nothing to do
78 }
79 
80 bool XMLCaseMapVariantHdl::importXML( const OUString& rStrImpValue, uno::Any& rValue, const SvXMLUnitConverter& ) const
81 {
82  bool bRet = false;
83 
84  if( IsXMLToken( rStrImpValue, XML_CASEMAP_SMALL_CAPS ) )
85  {
86  rValue <<= sal_Int16(style::CaseMap::SMALLCAPS);
87  bRet = true;
88  }
89  else if( IsXMLToken( rStrImpValue, XML_NORMAL ) )
90  {
91  rValue <<= sal_Int16(style::CaseMap::NONE);
92  bRet = true;
93  }
94 
95  return bRet;
96 }
97 
98 bool XMLCaseMapVariantHdl::exportXML( OUString& rStrExpValue, const uno::Any& rValue, const SvXMLUnitConverter& ) const
99 {
100  sal_uInt16 nValue = sal_uInt16();
101  OUStringBuffer aOut;
102 
103  if( rValue >>= nValue )
104  {
105  switch( nValue )
106  {
107  case style::CaseMap::NONE:
108  aOut.append( GetXMLToken(XML_NORMAL) );
109  break;
110  case style::CaseMap::SMALLCAPS:
111  aOut.append( GetXMLToken(XML_CASEMAP_SMALL_CAPS) );
112  break;
113  }
114  }
115 
116  rStrExpValue = aOut.makeStringAndClear();
117  return !rStrExpValue.isEmpty();
118 }
119 
120 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool IsXMLToken(const OUString &rString, enum XMLTokenEnum eToken)
compare eToken to the string
Definition: xmltoken.cxx:3434
virtual bool importXML(const OUString &rStrImpValue, css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const override
Imports the given value according to the XML-data-type corresponding to the derived class...
Definition: csmaphdl.cxx:80
static bool convertEnum(EnumT &rEnum, const OUString &rValue, const SvXMLEnumMapEntry< EnumT > *pMap)
convert string to enum using given enum map, if the enum is not found in the map, this method will re...
Definition: xmluconv.hxx:128
the SvXMLTypeConverter converts values of various types from their internal representation to the tex...
Definition: xmluconv.hxx:77
virtual bool exportXML(OUString &rStrExpValue, const css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const override
Exports the given value according to the XML-data-type corresponding to the derived class...
Definition: csmaphdl.cxx:57
const SvXMLEnumMapEntry< sal_uInt16 > pXML_Casemap_Enum[]
Definition: csmaphdl.cxx:31
css::uno::Any const & rValue
Definition: ImageStyle.hxx:38
virtual bool exportXML(OUString &rStrExpValue, const css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const override
Exports the given value according to the XML-data-type corresponding to the derived class...
Definition: csmaphdl.cxx:98
virtual ~XMLCaseMapVariantHdl() override
Definition: csmaphdl.cxx:75
virtual bool importXML(const OUString &rStrImpValue, css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const override
Imports the given value according to the XML-data-type corresponding to the derived class...
Definition: csmaphdl.cxx:46
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
Definition: xmltoken.cxx:3378
Handling of tokens in XML:
virtual ~XMLCaseMapPropHdl() override
Definition: csmaphdl.cxx:41
sal_Int16 nValue