Cleanup restoring last position
[LibreOffice.git] / sw / inc / modcfg.hxx
blob5ed47511c56b1e5951e60bcc492a2fd90dad5f6b
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
19 #ifndef INCLUDED_SW_INC_MODCFG_HXX
20 #define INCLUDED_SW_INC_MODCFG_HXX
22 #include <unotools/configitem.hxx>
23 #include "swdllapi.h"
24 #include "authratr.hxx"
25 #include "SwCapObjType.hxx"
26 #include "tblenum.hxx"
27 #include "itabenum.hxx"
28 #include <caption.hxx>
29 #include <tools/globname.hxx>
30 #include <o3tl/typed_flags_set.hxx>
32 #include <vector>
33 #include <memory>
35 class InsCaptionOpt;
37 // text format for the sending of messages ------------------------------
38 enum class MailTextFormats
40 NONE = 0x00,
41 HTML = 0x01,
42 RTF = 0x02,
43 OFFICE = 0x04
45 namespace o3tl
47 template<> struct typed_flags<MailTextFormats> : is_typed_flags<MailTextFormats, 0x07> {};
51 class InsCaptionOptArr
53 private:
54 typedef std::vector<std::unique_ptr<InsCaptionOpt>> InsCapOptArr;
55 InsCapOptArr m_InsCapOptArr;
56 public:
57 InsCaptionOpt* Find(const SwCapObjType eType, const SvGlobalName *pOleId = nullptr);
58 void Insert(InsCaptionOpt* pObj);
61 class SAL_DLLPUBLIC_RTTI SwRevisionConfig final : public utl::ConfigItem
63 friend class SwModuleOptions;
65 AuthorCharAttr m_aInsertAttr; //Revision/TextDisplay/Insert/Attribute // Redlining: author character attributes
66 //Revision/TextDisplay/Insert/Color
67 AuthorCharAttr m_aDeletedAttr; //Revision/TextDisplay/Delete/Attribute
68 //Revision/TextDisplay/Delete/Color
69 AuthorCharAttr m_aFormatAttr; //Revision/TextDisplay/ChangeAttribute/Attribute
70 //Revision/TextDisplay/ChangeAttribute/Color
71 sal_uInt16 m_nMarkAlign; //Revision/LinesChanged/Mark
72 Color m_aMarkColor; //Revision/LinesChanged/Color
74 static const css::uno::Sequence<OUString>& GetPropertyNames();
76 virtual void ImplCommit() override;
78 public:
79 SwRevisionConfig();
80 virtual ~SwRevisionConfig() override;
82 virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
83 void Load();
84 using ConfigItem::SetModified;
87 enum class SwCompareMode
89 Auto = 0,
90 ByWord,
91 ByChar
94 class SAL_DLLPUBLIC_RTTI SwCompareConfig final : public utl::ConfigItem
96 friend class SwModuleOptions;
98 SwCompareMode m_eCmpMode; //Compare/CompareDocuments;
99 bool m_bUseRsid; //Compare/Settings/Use RSID
100 /// Compare/Settings/Store RSID
101 bool m_bStoreRsid;
102 bool m_bIgnorePieces; //Compare/Settings/Ignore pieces of length
103 sal_uInt16 m_nPieceLen; //Compare/Settings/Ignore pieces of length
105 static const css::uno::Sequence<OUString>& GetPropertyNames();
107 virtual void ImplCommit() override;
109 public:
110 SwCompareConfig();
111 virtual ~SwCompareConfig() override;
113 virtual void Notify( const css::uno::Sequence< OUString >& ) override { };
114 void Load();
115 using ConfigItem::SetModified;
118 class SAL_DLLPUBLIC_RTTI SwInsertConfig final : public utl::ConfigItem
120 friend class SwModuleOptions;
122 std::unique_ptr<InsCaptionOptArr> m_pCapOptions;
123 std::unique_ptr<InsCaptionOpt> m_pOLEMiscOpt;
125 SvGlobalName m_aGlobalNames[5];
127 bool m_bInsWithCaption; //Insert/Caption/Automatic
128 bool m_bCaptionOrderNumberingFirst; //#i61007# caption order starting with numbering
130 SwInsertTableOptions m_aInsTableOpts;
131 bool m_bIsWeb;
133 const css::uno::Sequence<OUString>& GetPropertyNames() const;
135 virtual void ImplCommit() override;
137 public:
138 SwInsertConfig(bool bWeb);
139 virtual ~SwInsertConfig() override;
141 virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
142 void Load();
143 using ConfigItem::SetModified;
146 class SAL_DLLPUBLIC_RTTI SwTableConfig final : public utl::ConfigItem
148 friend class SwModuleOptions;
150 sal_uInt16 m_nTableHMove; //int Table/Shift/Row
151 sal_uInt16 m_nTableVMove; //int Table/Shift/Column
152 sal_uInt16 m_nTableHInsert; //int Table/Insert/Row
153 sal_uInt16 m_nTableVInsert; //int Table/Insert/Column
154 TableChgMode m_eTableChgMode; //int Table/Change/Effect
156 bool m_bInsTableFormatNum; // Table/Input/NumberRecognition // Automatic recognition of numbers.
157 bool m_bInsTableChangeNumFormat; // Table/Input/NumberFormatRecognition // Automatic recognition of number formats.
158 bool m_bInsTableAlignNum; // Table/Input/Alignment // Align numbers.
159 bool m_bSplitVerticalByDefault; // Table/Input/SplitVerticalByDefault // Split vertical by default.
161 static const css::uno::Sequence<OUString>& GetPropertyNames();
163 virtual void ImplCommit() override;
165 public:
166 SwTableConfig(bool bWeb);
167 virtual ~SwTableConfig() override;
169 virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
170 void Load();
171 using ConfigItem::SetModified;
174 class SAL_DLLPUBLIC_RTTI SwMiscConfig final : public utl::ConfigItem
176 friend class SwModuleOptions;
178 OUString m_sWordDelimiter; // Statistics/WordNumber/Delimiter
179 bool m_bDefaultFontsInCurrDocOnly; // DefaultFont/Document
180 bool m_bShowIndexPreview; // Index/ShowPreview
181 bool m_bGrfToGalleryAsLnk; // Misc/GraphicToGalleryAsLink
182 bool m_bNumAlignSize; // Numbering/Graphic/KeepRatio
183 bool m_bSinglePrintJob; // FormLetter/PrintOutput/SinglePrintJobs
184 bool m_bIsNameFromColumn; // FormLetter/FileOutput/FileName/Generation
185 bool m_bIsPasswordFromColumn; // FormLetter/FileOutput/FilePassword/Generation
186 bool m_bAskForMailMergeInPrint; // Ask if documents containing fields should be 'mailmerged'
187 MailTextFormats m_nMailingFormats; // FormLetter/MailingOutput/Formats
188 OUString m_sNameFromColumn; // FormLetter/FileOutput/FileName/FromDatabaseField (string!)
189 OUString m_sPasswordFromColumn; // FormLetter/FileOutput/FilePassword/FromDatabaseField (string!)
190 OUString m_sMailingPath; // FormLetter/FileOutput/Path
191 OUString m_sMailName; // FormLetter/FileOutput/FileName/FromManualSetting (string!)
193 static const css::uno::Sequence<OUString>& GetPropertyNames();
195 virtual void ImplCommit() override;
197 public:
198 SwMiscConfig();
199 virtual ~SwMiscConfig() override;
201 virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
202 void Load();
203 using ConfigItem::SetModified;
206 class SW_DLLPUBLIC SwModuleOptions
208 SwRevisionConfig m_aRevisionConfig;
209 SwInsertConfig m_aInsertConfig;
210 SwInsertConfig m_aWebInsertConfig;
212 SwTableConfig m_aTableConfig;
213 SwTableConfig m_aWebTableConfig;
215 SwMiscConfig m_aMiscConfig;
217 SwCompareConfig m_aCompareConfig;
219 //fiscus: don't show tips of text fields - it's not part of the configuration!
220 bool m_bHideFieldTips : 1;
222 public:
223 SwModuleOptions();
225 TableChgMode GetTableMode() const { return m_aTableConfig.m_eTableChgMode;}
226 void SetTableMode( TableChgMode eSet ) { m_aTableConfig.m_eTableChgMode = eSet;
227 m_aTableConfig.SetModified();}
229 sal_uInt16 GetTableHMove() const { return m_aTableConfig.m_nTableHMove;}
230 void SetTableHMove( sal_uInt16 nSet ) { m_aTableConfig.m_nTableHMove = nSet;
231 m_aTableConfig.SetModified();}
233 sal_uInt16 GetTableVMove() const { return m_aTableConfig.m_nTableVMove;}
234 void SetTableVMove( sal_uInt16 nSet ) { m_aTableConfig.m_nTableVMove = nSet;
235 m_aTableConfig.SetModified();}
237 sal_uInt16 GetTableHInsert() const {return m_aTableConfig.m_nTableHInsert;}
238 void SetTableHInsert( sal_uInt16 nSet ) { m_aTableConfig.m_nTableHInsert = nSet;
239 m_aTableConfig.SetModified();}
241 sal_uInt16 GetTableVInsert() const {return m_aTableConfig.m_nTableVInsert;}
242 void SetTableVInsert( sal_uInt16 nSet ) { m_aTableConfig.m_nTableVInsert = nSet;
243 m_aTableConfig.SetModified();}
245 const AuthorCharAttr &GetInsertAuthorAttr() const { return m_aRevisionConfig.m_aInsertAttr; }
246 void SetInsertAuthorAttr( AuthorCharAttr const &rAttr ) { m_aRevisionConfig.m_aInsertAttr = rAttr;
247 m_aRevisionConfig.SetModified();}
249 const AuthorCharAttr &GetDeletedAuthorAttr() const { return m_aRevisionConfig.m_aDeletedAttr; }
250 void SetDeletedAuthorAttr( AuthorCharAttr const &rAttr ) { m_aRevisionConfig.m_aDeletedAttr = rAttr;
251 m_aRevisionConfig.SetModified();}
253 const AuthorCharAttr &GetFormatAuthorAttr() const { return m_aRevisionConfig.m_aFormatAttr; }
254 void SetFormatAuthorAttr( AuthorCharAttr const &rAttr ) { m_aRevisionConfig.m_aFormatAttr = rAttr;
255 m_aRevisionConfig.SetModified();}
257 sal_uInt16 GetMarkAlignMode() const { return m_aRevisionConfig.m_nMarkAlign; }
258 void SetMarkAlignMode(sal_uInt16 nMode) { m_aRevisionConfig.m_nMarkAlign = nMode;
259 m_aRevisionConfig.SetModified();}
261 const Color& GetMarkAlignColor() const { return m_aRevisionConfig.m_aMarkColor; }
262 void SetMarkAlignColor(const Color &rColor) { m_aRevisionConfig.m_aMarkColor = rColor;
263 m_aRevisionConfig.SetModified();}
265 bool IsInsWithCaption(bool bHTML) const
266 { return !bHTML && m_aInsertConfig.m_bInsWithCaption; }
267 void SetInsWithCaption( bool bHTML, bool b )
268 { if(!bHTML)
269 m_aInsertConfig.m_bInsWithCaption = b;
270 m_aInsertConfig.SetModified();}
272 bool IsCaptionOrderNumberingFirst() const { return m_aInsertConfig.m_bCaptionOrderNumberingFirst; }
273 void SetCaptionOrderNumberingFirst( bool bSet )
275 if(m_aInsertConfig.m_bCaptionOrderNumberingFirst != bSet)
277 m_aInsertConfig.m_bCaptionOrderNumberingFirst = bSet;
278 m_aInsertConfig.SetModified();
282 bool IsInsTableFormatNum(bool bHTML) const
283 { return bHTML ? m_aWebTableConfig.m_bInsTableFormatNum : m_aTableConfig.m_bInsTableFormatNum; }
284 void SetInsTableFormatNum( bool bHTML, bool b )
285 { auto & config = bHTML ? m_aWebTableConfig : m_aTableConfig;
286 config.m_bInsTableFormatNum = b;
287 config.SetModified();}
289 bool IsInsTableChangeNumFormat(bool bHTML) const
290 { return bHTML ? m_aWebTableConfig.m_bInsTableChangeNumFormat : m_aTableConfig.m_bInsTableChangeNumFormat; }
291 void SetInsTableChangeNumFormat( bool bHTML, bool b )
292 { auto & config = bHTML ? m_aWebTableConfig : m_aTableConfig;
293 config.m_bInsTableChangeNumFormat = b;
294 config.SetModified();}
296 bool IsInsTableAlignNum(bool bHTML) const
297 { return bHTML ? m_aWebTableConfig.m_bInsTableAlignNum : m_aTableConfig.m_bInsTableAlignNum; }
298 void SetInsTableAlignNum( bool bHTML, bool b )
299 { auto & config = bHTML ? m_aWebTableConfig : m_aTableConfig;
300 config.m_bInsTableAlignNum = b;
301 config.SetModified();}
303 const SwInsertTableOptions& GetInsTableFlags(bool bHTML) const
304 { return bHTML ? m_aWebInsertConfig.m_aInsTableOpts : m_aInsertConfig.m_aInsTableOpts;}
305 void SetInsTableFlags( bool bHTML, const SwInsertTableOptions& rOpts ) {
306 auto & config = bHTML ? m_aWebInsertConfig : m_aInsertConfig;
307 config.m_aInsTableOpts = rOpts;
308 config.SetModified();}
310 bool IsSplitVerticalByDefault(bool bHTML) const
311 { return bHTML ? m_aWebTableConfig.m_bSplitVerticalByDefault : m_aTableConfig.m_bSplitVerticalByDefault; }
312 void SetSplitVerticalByDefault(bool bHTML, bool b)
313 { auto & config = bHTML ? m_aWebTableConfig : m_aTableConfig;
314 config.m_bSplitVerticalByDefault = b;
315 config.SetModified();}
317 const InsCaptionOpt* GetCapOption(bool bHTML, const SwCapObjType eType, const SvGlobalName *pOleId);
318 bool SetCapOption(bool bHTML, const InsCaptionOpt* pOpt);
320 bool IsGrfToGalleryAsLnk() const { return m_aMiscConfig.m_bGrfToGalleryAsLnk; }
321 void SetGrfToGalleryAsLnk( bool b ) { m_aMiscConfig.m_bGrfToGalleryAsLnk = b;
322 m_aMiscConfig.SetModified();}
324 MailTextFormats GetMailingFormats() const { return m_aMiscConfig.m_nMailingFormats;}
325 void SetMailingFormats( MailTextFormats nSet ) { m_aMiscConfig.m_nMailingFormats = nSet;
326 m_aMiscConfig.SetModified();}
328 void SetSinglePrintJob( bool b ) { m_aMiscConfig.m_bSinglePrintJob = b;
329 m_aMiscConfig.SetModified();}
331 bool IsNameFromColumn() const { return m_aMiscConfig.m_bIsNameFromColumn; }
332 void SetIsNameFromColumn( bool bSet )
334 m_aMiscConfig.SetModified();
335 m_aMiscConfig.m_bIsNameFromColumn = bSet;
338 bool IsAskForMailMerge() const { return m_aMiscConfig.m_bAskForMailMergeInPrint;}
340 const OUString& GetNameFromColumn() const { return m_aMiscConfig.m_sNameFromColumn; }
341 void SetNameFromColumn( const OUString& rSet ) { m_aMiscConfig.m_sNameFromColumn = rSet;
342 m_aMiscConfig.SetModified();}
344 bool IsFileEncryptedFromColumn() const { return m_aMiscConfig.m_bIsPasswordFromColumn;}
345 void SetIsFileEncryptedFromColumn( bool bSet )
347 m_aMiscConfig.SetModified();
348 m_aMiscConfig.m_bIsPasswordFromColumn = bSet;
351 const OUString& GetPasswordFromColumn() const { return m_aMiscConfig.m_sPasswordFromColumn; }
352 void SetPasswordFromColumn( const OUString& rSet ) { m_aMiscConfig.m_sPasswordFromColumn = rSet;
353 m_aMiscConfig.SetModified();}
355 const OUString& GetMailingPath() const { return m_aMiscConfig.m_sMailingPath; }
356 void SetMailingPath(const OUString& sPath) { m_aMiscConfig.m_sMailingPath = sPath;
357 m_aMiscConfig.SetModified();}
359 const OUString& GetWordDelimiter() const { return m_aMiscConfig.m_sWordDelimiter; }
360 void SetWordDelimiter(const OUString& sDelim) { m_aMiscConfig.m_sWordDelimiter = sDelim;
361 m_aMiscConfig.SetModified();}
363 //convert word delimiter from or to user interface
364 static OUString ConvertWordDelimiter(const OUString& rDelim, bool bFromUI);
366 bool IsShowIndexPreview() const {return m_aMiscConfig.m_bShowIndexPreview;}
367 void SetShowIndexPreview(bool bSet)
368 {m_aMiscConfig.m_bShowIndexPreview = bSet;
369 m_aMiscConfig.SetModified();}
371 void SetDefaultFontInCurrDocOnly(bool bSet)
373 m_aMiscConfig.m_bDefaultFontsInCurrDocOnly = bSet;
374 m_aMiscConfig.SetModified();
377 bool IsHideFieldTips() const {return m_bHideFieldTips;}
378 void SetHideFieldTips(bool bSet) {m_bHideFieldTips = bSet;}
380 SwCompareMode GetCompareMode() const { return m_aCompareConfig.m_eCmpMode; }
381 void SetCompareMode( SwCompareMode eMode ) { m_aCompareConfig.m_eCmpMode = eMode;
382 m_aCompareConfig.SetModified(); }
384 bool IsUseRsid() const { return m_aCompareConfig.m_bUseRsid; }
385 void SetUseRsid( bool b ) { m_aCompareConfig.m_bUseRsid = b;
386 m_aCompareConfig.SetModified(); }
388 bool IsIgnorePieces() const { return m_aCompareConfig.m_bIgnorePieces; }
389 void SetIgnorePieces( bool b ) { m_aCompareConfig.m_bIgnorePieces = b;
390 m_aCompareConfig.SetModified(); }
392 sal_uInt16 GetPieceLen() const { return m_aCompareConfig.m_nPieceLen; }
393 void SetPieceLen( sal_uInt16 nLen ) { m_aCompareConfig.m_nPieceLen = nLen;
394 m_aCompareConfig.SetModified(); }
396 bool IsStoreRsid() const
398 return m_aCompareConfig.m_bStoreRsid;
400 void SetStoreRsid(bool bStoreRsid)
402 m_aCompareConfig.m_bStoreRsid = bStoreRsid;
403 m_aCompareConfig.SetModified();
407 #endif
409 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */