Line data Source code
1 : /*
2 : * This file is part of the LibreOffice project.
3 : *
4 : * This Source Code Form is subject to the terms of the Mozilla Public
5 : * License, v. 2.0. If a copy of the MPL was not distributed with this
6 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 : *
8 : * This file incorporates work covered by the following license notice:
9 : *
10 : * Licensed to the Apache Software Foundation (ASF) under one or more
11 : * contributor license agreements. See the NOTICE file distributed
12 : * with this work for additional information regarding copyright
13 : * ownership. The ASF licenses this file to you under the Apache
14 : * License, Version 2.0 (the "License"); you may not use this file
15 : * except in compliance with the License. You may obtain a copy of
16 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 : */
18 : #ifndef _NBDTMG_HXX
19 : #define _NBDTMG_HXX
20 : #include "svx/svxdllapi.h"
21 : #include <boost/shared_ptr.hpp>
22 : #include <vector>
23 : #include <editeng/numitem.hxx>
24 : #include <vcl/font.hxx>
25 :
26 : namespace svx { namespace sidebar {
27 :
28 : #define DEFAULT_BULLET_TYPES 8
29 : #define DEFAULT_NONE 10
30 : #define DEFAULT_NUM_TYPE_MEMBER 5
31 : #define DEFAULT_NUM_VALUSET_COUNT 8
32 : #define DEFAULT_NUMBERING_CACHE_FORMAT_VERSION 0x10
33 :
34 : typedef sal_uInt16 NBOType;
35 : namespace eNBOType
36 : {
37 : const NBOType BULLETS = 0x01;
38 : const NBOType GRAPHICBULLETS = 0x02;
39 : const NBOType NUMBERING = 0x03;
40 : const NBOType OUTLINE = 0x04;
41 : const NBOType MIXBULLETS = 0x05;
42 : }
43 :
44 : typedef sal_uInt16 NBType;
45 : namespace eNBType
46 : {
47 : const NBOType BULLETS = 0x01;
48 : const NBOType GRAPHICBULLETS = 0x02;
49 : }
50 :
51 : class SVX_DLLPUBLIC NumSettings_Impl
52 : {
53 : public:
54 : short nNumberType;
55 : short nParentNumbering;
56 : SvxNumberFormat::LabelFollowedBy eLabelFollowedBy;
57 : long nTabValue;
58 : SvxAdjust eNumAlign;
59 : long nNumAlignAt;
60 : long nNumIndentAt;
61 : rtl::OUString sPrefix;
62 : rtl::OUString sSuffix;
63 : rtl::OUString sBulletChar;
64 : rtl::OUString sBulletFont;
65 : SvxBrushItem *pBrushItem;
66 : Size aSize;
67 :
68 : public:
69 0 : NumSettings_Impl()
70 : : nNumberType(0)
71 : , nParentNumbering(0)
72 : , pBrushItem(0)
73 0 : , aSize(0,0)
74 0 : {}
75 0 : ~NumSettings_Impl(){}
76 : };
77 :
78 : typedef NumSettings_Impl* NumSettings_ImplPtr;
79 : typedef std::vector< boost::shared_ptr<NumSettings_Impl> > NumSettingsArr_Impl;
80 :
81 : class SVX_DLLPUBLIC BulletsSettings
82 : {
83 : public:
84 : sal_Bool bIsCustomized;
85 : rtl::OUString sDescription;
86 : NBType eType;
87 : public:
88 0 : BulletsSettings(NBType eTy) :
89 : bIsCustomized(sal_False),
90 0 : eType(eTy)
91 0 : {}
92 0 : virtual ~BulletsSettings(){}
93 : };
94 :
95 : class SVX_DLLPUBLIC BulletsSettings_Impl:public BulletsSettings
96 : {
97 : public:
98 : sal_Unicode cBulletChar;
99 : //rtl::OUString sBulletFont;
100 : Font aFont;
101 :
102 : public:
103 0 : BulletsSettings_Impl(NBType eTy) :
104 0 : BulletsSettings(eTy)
105 0 : {}
106 0 : virtual ~BulletsSettings_Impl(){}
107 : };
108 :
109 : class SVX_DLLPUBLIC GrfBulDataRelation: public BulletsSettings
110 : {
111 : public:
112 : String sGrfName;
113 : sal_uInt16 nTabIndex;
114 : sal_uInt16 nGallaryIndex;
115 : const Graphic* pGrfObj;
116 : Size aSize;
117 0 : GrfBulDataRelation(NBType eTy):
118 : BulletsSettings(eTy),
119 : nTabIndex((sal_uInt16)0xFFFF),
120 : nGallaryIndex((sal_uInt16)0xFFFF),
121 : pGrfObj(0),
122 0 : aSize(0,0)
123 0 : {}
124 0 : virtual ~GrfBulDataRelation(){}
125 : };
126 :
127 : class SVX_DLLPUBLIC MixBulletsSettings_Impl
128 : {
129 : public:
130 : NBType eType;
131 : sal_uInt16 nIndex; //index in the tab page display
132 : sal_uInt16 nIndexDefault;
133 : BulletsSettings* pBullets;
134 : public:
135 0 : MixBulletsSettings_Impl(NBType eTy) :
136 : eType(eTy),
137 : nIndex((sal_uInt16)0xFFFF),
138 : nIndexDefault((sal_uInt16)0xFFFF),
139 0 : pBullets(0)
140 0 : {}
141 : ~MixBulletsSettings_Impl(){}
142 : };
143 :
144 : class SVX_DLLPUBLIC NumberSettings_Impl
145 : {
146 : public:
147 : sal_Bool bIsCustomized;
148 : rtl::OUString sDescription;
149 : sal_uInt16 nIndex; //index in the tab page display
150 : sal_uInt16 nIndexDefault;
151 : NumSettings_Impl *pNumSetting;
152 : public:
153 0 : NumberSettings_Impl() :
154 : bIsCustomized(sal_False),
155 : nIndex((sal_uInt16)0xFFFF),
156 : nIndexDefault((sal_uInt16)0xFFFF),
157 0 : pNumSetting(NULL)
158 0 : {}
159 0 : ~NumberSettings_Impl(){}
160 : };
161 :
162 : typedef NumberSettings_Impl* NumberSettings_ImplPtr;
163 : typedef std::vector< boost::shared_ptr<NumberSettings_Impl> > NumberSettingsArr_Impl;
164 :
165 : class SVX_DLLPUBLIC OutlineSettings_Impl
166 : {
167 : public:
168 : sal_Bool bIsCustomized;
169 : rtl::OUString sDescription;
170 : NumSettingsArr_Impl *pNumSettingsArr;
171 : public:
172 0 : OutlineSettings_Impl() :
173 : bIsCustomized(sal_False),
174 0 : pNumSettingsArr(NULL)
175 0 : {}
176 : ~OutlineSettings_Impl(){
177 : }
178 : };
179 :
180 : class SVX_DLLPUBLIC NBOTypeMgrBase
181 : {
182 : public:
183 : NBOType eType;
184 : private:
185 : const SfxItemSet* pSet;
186 : SfxMapUnit eCoreUnit;
187 : //Sym3_2508 store the attributes passed from pSet
188 : String aNumCharFmtName;
189 : void StoreBulCharFmtName_impl();
190 : void StoreMapUnit_impl();
191 :
192 : public:
193 0 : NBOTypeMgrBase(const NBOType aType)
194 : : eType(aType)
195 : , pSet(0)
196 : , eCoreUnit(SFX_MAPUNIT_TWIP)
197 : , aNumCharFmtName(String())
198 0 : , bIsLoading(false)
199 0 : {}
200 0 : NBOTypeMgrBase(const NBOType aType,const SfxItemSet* pArg)
201 : : eType(aType)
202 : , pSet(pArg)
203 : , eCoreUnit(SFX_MAPUNIT_TWIP)
204 : , aNumCharFmtName(String())
205 0 : , bIsLoading(false)
206 0 : {}
207 0 : NBOTypeMgrBase(const NBOTypeMgrBase& aTypeMgr)
208 0 : {
209 0 : eType = aTypeMgr.eType;
210 0 : pSet = aTypeMgr.pSet;
211 0 : eCoreUnit = aTypeMgr.eCoreUnit;
212 0 : aNumCharFmtName = aTypeMgr.aNumCharFmtName;
213 0 : bIsLoading = false;
214 0 : }
215 0 : virtual ~NBOTypeMgrBase() {}
216 : virtual void Init()=0;
217 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0)=0;
218 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF)=0;
219 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF, sal_Bool isDefault=false,sal_Bool isResetSize=false)=0;
220 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false)=0;
221 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex)=0;
222 : sal_uInt16 IsSingleLevel(sal_uInt16 nCurLevel);
223 : const SfxItemSet* GetItems() { return pSet;}
224 : //Sym3_2508 store the attributes passed from pSet
225 0 : void SetItems(const SfxItemSet* pArg) { pSet = pArg;StoreBulCharFmtName_impl();StoreMapUnit_impl();}
226 : protected:
227 : String GetBulCharFmtName();
228 : SfxMapUnit GetMapUnit();
229 : protected:
230 : bool bIsLoading;
231 : void ImplLoad(String filename);
232 : void ImplStore(String filename);
233 :
234 : };
235 :
236 :
237 : class SVX_DLLPUBLIC BulletsTypeMgr: public NBOTypeMgrBase
238 : {
239 : friend class OutlineTypeMgr;
240 : friend class NumberingTypeMgr;
241 : public:
242 : static sal_Unicode aDynamicBulletTypes[DEFAULT_BULLET_TYPES];
243 : static sal_Unicode aDynamicRTLBulletTypes[DEFAULT_BULLET_TYPES];
244 : static BulletsSettings_Impl* pActualBullets[DEFAULT_BULLET_TYPES];
245 : static BulletsTypeMgr* _instance;
246 : public:
247 : BulletsTypeMgr(const NBOType aType);
248 : BulletsTypeMgr(const NBOType aType,const SfxItemSet* pArg);
249 : BulletsTypeMgr(const BulletsTypeMgr& aTypeMgr);
250 0 : virtual ~BulletsTypeMgr() {}
251 : virtual void Init();
252 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0);
253 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF);
254 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF,sal_Bool isDefault=false,sal_Bool isResetSize=false);
255 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false);
256 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex);
257 : sal_Unicode GetBulChar(sal_uInt16 nIndex);
258 : Font GetBulCharFont(sal_uInt16 nIndex);
259 0 : static BulletsTypeMgr* GetInstance()
260 : {
261 0 : if ( _instance == 0 )
262 : {
263 0 : _instance = new BulletsTypeMgr(eNBOType::BULLETS);
264 : }
265 :
266 0 : return _instance;
267 : }
268 :
269 : };
270 :
271 : class SVX_DLLPUBLIC GraphyicBulletsTypeMgr: public NBOTypeMgrBase
272 : {
273 : friend class OutlineTypeMgr;
274 : friend class NumberingTypeMgr;
275 : public:
276 : typedef std::vector<GrfBulDataRelation*> ListType;
277 : ListType aGrfDataLst;
278 : static GraphyicBulletsTypeMgr* _instance;
279 : public:
280 : GraphyicBulletsTypeMgr(const NBOType aType);
281 : GraphyicBulletsTypeMgr(const NBOType aType,const SfxItemSet* pArg);
282 : GraphyicBulletsTypeMgr(const GraphyicBulletsTypeMgr& aTypeMgr);
283 : virtual ~GraphyicBulletsTypeMgr();
284 : virtual void Init();
285 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0);
286 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF);
287 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF,sal_Bool isDefault=false,sal_Bool isResetSize=false);
288 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false);
289 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex);
290 : String GetGrfName(sal_uInt16 nIndex);
291 0 : static GraphyicBulletsTypeMgr* GetInstance()
292 : {
293 0 : if ( _instance == 0 )
294 : {
295 0 : _instance = new GraphyicBulletsTypeMgr(eNBOType::BULLETS);
296 : }
297 :
298 0 : return _instance;
299 : }
300 :
301 : };
302 :
303 : class SVX_DLLPUBLIC MixBulletsTypeMgr: public NBOTypeMgrBase
304 : {
305 : friend class OutlineTypeMgr;
306 : friend class NumberingTypeMgr;
307 : public:
308 : static MixBulletsSettings_Impl* pActualBullets[DEFAULT_BULLET_TYPES];
309 : static MixBulletsSettings_Impl* pDefaultActualBullets[DEFAULT_BULLET_TYPES];
310 : static MixBulletsTypeMgr* _instance;
311 : public:
312 : MixBulletsTypeMgr(const NBOType aType);
313 : MixBulletsTypeMgr(const NBOType aType,const SfxItemSet* pArg);
314 : MixBulletsTypeMgr(const MixBulletsTypeMgr& aTypeMgr);
315 0 : virtual ~MixBulletsTypeMgr() {}
316 : virtual void Init();
317 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0);
318 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF);
319 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF,sal_Bool isDefault=false,sal_Bool isResetSize=false);
320 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false);
321 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex);
322 0 : static MixBulletsTypeMgr* GetInstance()
323 : {
324 0 : if ( _instance == 0 )
325 : {
326 0 : _instance = new MixBulletsTypeMgr(eNBOType::MIXBULLETS);
327 : }
328 :
329 0 : return _instance;
330 : }
331 :
332 : };
333 :
334 : class SVX_DLLPUBLIC NumberingTypeMgr: public NBOTypeMgrBase
335 : {
336 : public:
337 : //NumSettingsArr_Impl* pNumSettingsArr;
338 : NumberSettingsArr_Impl* pNumberSettingsArr;
339 : NumberSettingsArr_Impl* pDefaultNumberSettingsArr;
340 : static NumberingTypeMgr* _instance;
341 : public:
342 : NumberingTypeMgr(const NBOType aType);
343 : NumberingTypeMgr(const NBOType aType,const SfxItemSet* pArg);
344 : NumberingTypeMgr(const NumberingTypeMgr& aTypeMgr);
345 0 : virtual ~NumberingTypeMgr() {}
346 : virtual void Init();
347 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0);
348 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF);
349 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF,sal_Bool isDefault=false,sal_Bool isResetSize=false);
350 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false);
351 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex);
352 : sal_uInt16 GetNumCount() const;
353 : NumberSettings_Impl* GetNumSettingByIndex(sal_uInt16 nIndex) const;
354 0 : static NumberingTypeMgr* GetInstance()
355 : {
356 0 : if ( _instance == 0 )
357 : {
358 0 : _instance = new NumberingTypeMgr(eNBOType::NUMBERING);
359 : }
360 :
361 0 : return _instance;
362 : }
363 : };
364 :
365 : class SVX_DLLPUBLIC OutlineTypeMgr: public NBOTypeMgrBase
366 : {
367 : public:
368 : //NumSettingsArr_Impl* pNumSettingsArrs[DEFAULT_NUM_VALUSET_COUNT];
369 : OutlineSettings_Impl* pOutlineSettingsArrs[DEFAULT_NUM_VALUSET_COUNT];
370 : OutlineSettings_Impl* pDefaultOutlineSettingsArrs[DEFAULT_NUM_VALUSET_COUNT];
371 : static OutlineTypeMgr* _instance;
372 : public:
373 : OutlineTypeMgr(const NBOType aType);
374 : OutlineTypeMgr(const NBOType aType,const SfxItemSet* pArg);
375 : OutlineTypeMgr(const OutlineTypeMgr& aTypeMgr);
376 0 : virtual ~OutlineTypeMgr() {}
377 : virtual void Init();
378 : virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0);
379 : virtual sal_Bool RelplaceNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF);
380 : virtual sal_Bool ApplyNumRule(SvxNumRule& aNum,sal_uInt16 nIndex,sal_uInt16 mLevel=(sal_uInt16)0xFFFF,sal_Bool isDefault=false,sal_Bool isResetSize=false);
381 : virtual String GetDescription(sal_uInt16 nIndex,sal_Bool isDefault=false);
382 : virtual sal_Bool IsCustomized(sal_uInt16 nIndex);
383 0 : static OutlineTypeMgr* GetInstance()
384 : {
385 0 : if ( _instance == 0 )
386 : {
387 0 : _instance = new OutlineTypeMgr(eNBOType::OUTLINE);
388 : }
389 :
390 0 : return _instance;
391 : }
392 : };
393 : }}
394 : #endif
395 :
|