LibreOffice Module xmloff (master)  1
xmlnumfi.hxx
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 #ifndef INCLUDED_XMLOFF_XMLNUMFI_HXX
21 #define INCLUDED_XMLOFF_XMLNUMFI_HXX
22 
23 #include <sal/config.h>
24 #include <xmloff/dllapi.h>
25 #include <sal/types.h>
26 #include <xmloff/xmlstyle.hxx>
27 #include <rtl/ustrbuf.hxx>
28 #include <i18nlangtag/lang.h>
29 #include <memory>
30 #include <vector>
31 
32 namespace com::sun::star::uno { class XComponentContext; }
33 namespace com::sun::star::util { class XNumberFormatsSupplier; }
34 namespace com::sun::star::xml::sax { class XAttributeList; }
35 
36 #define XML_NUMBERSTYLES "NumberStyles"
37 
39 {
43  DATE_STYLE,
44  TIME_STYLE,
47 };
48 
50 {
57 };
58 
59 class Color;
60 class SvXMLNumImpData;
61 class SvXMLImport;
62 struct SvXMLNumberInfo;
63 class SvNumberFormatter;
64 class LocaleDataWrapper;
65 
66 
67 // use SvXMLNumFmtHelper in the context for <office:styles> to create
68 // child contexts for data styles
69 
71 {
72  std::unique_ptr<SvXMLNumImpData> pData;
73 
74 public:
76  const css::uno::Reference< css::util::XNumberFormatsSupplier >& rSupp,
77  const css::uno::Reference< css::uno::XComponentContext >& rxContext );
78 
80  SvNumberFormatter* pNumberFormatter,
81  const css::uno::Reference< css::uno::XComponentContext >& rxContext );
82 
84 
86  sal_Int32 nElement,
87  const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
88  SvXMLStylesContext& rStyles);
89 
90  SvXMLNumImpData* getData() { return pData.get(); }
91 
92  LanguageType GetLanguageForKey(sal_Int32 nKey);
93 
94 // sal_uInt32 GetKeyForName( const OUString& rName );
95 };
96 
97 // SvXMLNumFmtDefaults is used in import and export
98 
100 {
101 public:
102  // return value is NfIndexTableOffset
103  static sal_uInt16 GetDefaultDateFormat( SvXMLDateElementAttributes eDOW,
107  bool bSystem );
108 };
109 
111 {
112  OUString sCondition;
113  OUString sMapName;
114 };
115 
117 {
118 public:
120  {
125  SECONDARY_FROM_OTHER
126  };
127 
128 private:
129 
132  std::vector <MyCondition> aMyConditions;
134  sal_Int32 nKey;
135 // OUString sFormatName;
136  OUString sFormatTitle;
137 // OUString sMapName;
138  OUString sCalendar;
139  OUString aImplicitCalendar[2];
144  bool bTruncate;
145  bool bAutoDec; // set in AddNumber
146  bool bAutoInt; // set in AddNumber
149  OUStringBuffer aFormatCode{64};
150  OUStringBuffer aConditions{32};
154 
155  // contained date elements, used to recognize default date formats
164 
165  SAL_DLLPRIVATE sal_Int32 PrivateGetKey();
166 
167 public:
169  sal_Int32 nElement,
170  SvXMLNumImpData* pNewData,
171  SvXMLStylesTokens nNewType,
172  const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList,
173  SvXMLStylesContext& rStyles );
175  const OUString& rName,
176  const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList,
177  const sal_Int32 nKey,
178  LanguageType nLang,
179  SvXMLStylesContext& rStyles );
180  virtual ~SvXMLNumFormatContext() override;
181 
182  virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
183  sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
184  virtual void CreateAndInsert(bool bOverwrite) override;
185 
186  sal_Int32 GetKey();
187  sal_Int32 CreateAndInsert( SvNumberFormatter* pFormatter );
188  sal_Int32 CreateAndInsert( css::uno::Reference< css::util::XNumberFormatsSupplier > const & xFormatsSupplier );
189  SvXMLStylesTokens GetType() const { return nType; } // SvXMLStylesTokens
190 
191  bool HasLongDoW() const { return bHasLongDoW; }
192  void SetHasLongDoW(bool bSet) { bHasLongDoW = bSet; }
193  void SetHasTrailingEmptyText(bool bSet) { bHasTrailingEmptyText = bSet; }
194 
195  void UpdateCalendar( const OUString& rNewCalendar );
196  ImplicitCalendar GetImplicitCalendarState() const { return eImplicitCalendar; }
197 
198  const LocaleDataWrapper& GetLocaleData() const;
199 
200  void AddToCode( std::u16string_view rString );
201  void AddToCode( sal_Unicode c );
202  void AddNumber( const SvXMLNumberInfo& rInfo );
203  void AddCurrency( const OUString& rContent, LanguageType nLang );
204 
205  void AddNfKeyword( sal_uInt16 nIndex );
206  bool ReplaceNfKeyword( sal_uInt16 nOld, sal_uInt16 nNew );
207  void AddCondition( const sal_Int32 nIndex );
208  void AddCondition( const OUString& rCondition, const OUString& rApplyName );
209  void AddColor( Color nColor );
210 
212  bool IsSystemLanguage() const;
213 };
214 
215 #endif
216 
217 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SvXMLStylesTokens nType
Definition: xmlnumfi.hxx:133
LanguageType nFormatLang
Definition: xmlnumfi.hxx:141
OUString sCondition
Definition: xmlnumfi.hxx:112
void SetHasTrailingEmptyText(bool bSet)
Definition: xmlnumfi.hxx:193
ImplicitCalendar eImplicitCalendar
Definition: xmlnumfi.hxx:140
SvXMLDateElementAttributes eDateSecs
Definition: xmlnumfi.hxx:162
SvXMLDateElementAttributes eDateDay
Definition: xmlnumfi.hxx:157
SvXMLStyleContext * CreateChildContext(SvXMLImport &rImport, sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList, SvXMLStylesContext &rStyles)
Definition: xmlnumfi.cxx:2176
sal_uInt16 sal_Unicode
SvXMLNumImpData * pData
Definition: xmlnumfi.hxx:130
std::vector< MyCondition > aMyConditions
Definition: xmlnumfi.hxx:132
SvXMLStylesContext * pStyles
Definition: xmlnumfi.hxx:131
OUString sMapName
Definition: xmlnumfi.hxx:113
LanguageType GetLanguageForKey(sal_Int32 nKey)
Definition: xmlnumfi.cxx:2213
SvXMLDateElementAttributes eDateMonth
Definition: xmlnumfi.hxx:158
SvXMLDateElementAttributes
Definition: xmlnumfi.hxx:49
void SetHasLongDoW(bool bSet)
Definition: xmlnumfi.hxx:192
SvXMLDateElementAttributes eDateDOW
Definition: xmlnumfi.hxx:156
SvXMLStylesTokens
Definition: xmlnumfi.hxx:38
SvXMLDateElementAttributes eDateHours
Definition: xmlnumfi.hxx:160
ImplicitCalendar GetImplicitCalendarState() const
Definition: xmlnumfi.hxx:196
SvXMLNumImpData * getData()
Definition: xmlnumfi.hxx:90
SvXMLNumFmtHelper(const css::uno::Reference< css::util::XNumberFormatsSupplier > &rSupp, const css::uno::Reference< css::uno::XComponentContext > &rxContext)
virtual void CreateAndInsert(bool bOverwrite)
Definition: xmlstyle.cxx:129
std::unique_ptr< SvXMLNumImpData > pData
Definition: xmlnumfi.hxx:72
virtual css::uno::Reference< XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > &Attribs) override
Definition: xmlictxt.cxx:59
static sal_uInt16 GetDefaultDateFormat(SvXMLDateElementAttributes eDOW, SvXMLDateElementAttributes eDay, SvXMLDateElementAttributes eMonth, SvXMLDateElementAttributes eYear, SvXMLDateElementAttributes eHours, SvXMLDateElementAttributes eMins, SvXMLDateElementAttributes eSecs, bool bSystem)
Definition: xmlnumfi.cxx:1095
SvXMLStylesTokens GetType() const
Definition: xmlnumfi.hxx:189
bool HasLongDoW() const
Definition: xmlnumfi.hxx:191
SvXMLDateElementAttributes eDateMins
Definition: xmlnumfi.hxx:161
SvXMLDateElementAttributes eDateYear
Definition: xmlnumfi.hxx:159
#define XMLOFF_DLLPUBLIC
Definition: dllapi.h:29
const LocaleDataWrapper & GetLocaleData()