1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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 .
20 #ifndef INCLUDED_SC_INC_DOCOPTIO_HXX
21 #define INCLUDED_SC_INC_DOCOPTIO_HXX
23 #include <unotools/configitem.hxx>
24 #include <svl/poolitem.hxx>
25 #include <svl/itemprop.hxx>
28 #include "optutil.hxx"
30 #include <formula/grammar.hxx>
32 class SC_DLLPUBLIC ScDocOptions
34 double fIterEps
; // epsilon value dazu
35 sal_uInt16 nIterCount
; ///< number
36 sal_uInt16 nPrecStandardFormat
; ///< precision for standard format
37 sal_uInt16 nDay
; ///< Null date:
40 sal_uInt16 nYear2000
; ///< earlier 19YY is assumed, 20YY otherwise (if only YY of year is given)
41 sal_uInt16 nTabDistance
; ///< distance of standard tabs
42 bool bIsIgnoreCase
; ///< ignore case for comparisons?
43 bool bIsIter
; ///< iterations for circular refs
44 bool bCalcAsShown
; ///< calculate as shown (wrt precision)
45 bool bMatchWholeCell
; ///< search criteria must match the whole cell
46 bool bDoAutoSpell
; ///< auto-spelling
47 bool bLookUpColRowNames
; ///< determine column-/row titles automagically
48 bool bFormulaRegexEnabled
; ///< regular expressions in formulas enabled
51 ScDocOptions( const ScDocOptions
& rCpy
);
54 bool IsLookUpColRowNames() const { return bLookUpColRowNames
; }
55 void SetLookUpColRowNames( bool bVal
) { bLookUpColRowNames
= bVal
; }
56 bool IsAutoSpell() const { return bDoAutoSpell
; }
57 void SetAutoSpell( bool bVal
) { bDoAutoSpell
= bVal
; }
58 bool IsMatchWholeCell() const { return bMatchWholeCell
; }
59 void SetMatchWholeCell( bool bVal
) { bMatchWholeCell
= bVal
; }
60 bool IsIgnoreCase() const { return bIsIgnoreCase
; }
61 void SetIgnoreCase( bool bVal
) { bIsIgnoreCase
= bVal
; }
62 bool IsIter() const { return bIsIter
; }
63 void SetIter( bool bVal
) { bIsIter
= bVal
; }
64 sal_uInt16
GetIterCount() const { return nIterCount
; }
65 void SetIterCount( sal_uInt16 nCount
) { nIterCount
= nCount
; }
66 double GetIterEps() const { return fIterEps
; }
67 void SetIterEps( double fEps
) { fIterEps
= fEps
; }
69 void GetDate( sal_uInt16
& rD
, sal_uInt16
& rM
, sal_uInt16
& rY
) const
70 { rD
= nDay
; rM
= nMonth
; rY
= nYear
;}
71 void SetDate (sal_uInt16 nD
, sal_uInt16 nM
, sal_uInt16 nY
)
72 { nDay
= nD
; nMonth
= nM
; nYear
= nY
; }
73 sal_uInt16
GetTabDistance() const { return nTabDistance
;}
74 void SetTabDistance( sal_uInt16 nTabDist
) {nTabDistance
= nTabDist
;}
76 void ResetDocOptions();
78 inline const ScDocOptions
& operator=( const ScDocOptions
& rOpt
);
79 inline bool operator==( const ScDocOptions
& rOpt
) const;
80 inline bool operator!=( const ScDocOptions
& rOpt
) const;
82 sal_uInt16
GetStdPrecision() const { return nPrecStandardFormat
; }
83 void SetStdPrecision( sal_uInt16 n
) { nPrecStandardFormat
= n
; }
85 bool IsCalcAsShown() const { return bCalcAsShown
; }
86 void SetCalcAsShown( bool bVal
) { bCalcAsShown
= bVal
; }
88 void SetYear2000( sal_uInt16 nVal
) { nYear2000
= nVal
; }
89 sal_uInt16
GetYear2000() const { return nYear2000
; }
91 void SetFormulaRegexEnabled( bool bVal
) { bFormulaRegexEnabled
= bVal
; }
92 bool IsFormulaRegexEnabled() const { return bFormulaRegexEnabled
; }
96 inline const ScDocOptions
& ScDocOptions::operator=( const ScDocOptions
& rCpy
)
98 bIsIgnoreCase
= rCpy
.bIsIgnoreCase
;
99 bIsIter
= rCpy
.bIsIter
;
100 nIterCount
= rCpy
.nIterCount
;
101 fIterEps
= rCpy
.fIterEps
;
102 nPrecStandardFormat
= rCpy
.nPrecStandardFormat
;
104 nMonth
= rCpy
.nMonth
;
106 nYear2000
= rCpy
.nYear2000
;
107 nTabDistance
= rCpy
.nTabDistance
;
108 bCalcAsShown
= rCpy
.bCalcAsShown
;
109 bMatchWholeCell
= rCpy
.bMatchWholeCell
;
110 bDoAutoSpell
= rCpy
.bDoAutoSpell
;
111 bLookUpColRowNames
= rCpy
.bLookUpColRowNames
;
112 bFormulaRegexEnabled
= rCpy
.bFormulaRegexEnabled
;
117 inline bool ScDocOptions::operator==( const ScDocOptions
& rOpt
) const
120 rOpt
.bIsIgnoreCase
== bIsIgnoreCase
121 && rOpt
.bIsIter
== bIsIter
122 && rOpt
.nIterCount
== nIterCount
123 && rOpt
.fIterEps
== fIterEps
124 && rOpt
.nPrecStandardFormat
== nPrecStandardFormat
126 && rOpt
.nMonth
== nMonth
127 && rOpt
.nYear
== nYear
128 && rOpt
.nYear2000
== nYear2000
129 && rOpt
.nTabDistance
== nTabDistance
130 && rOpt
.bCalcAsShown
== bCalcAsShown
131 && rOpt
.bMatchWholeCell
== bMatchWholeCell
132 && rOpt
.bDoAutoSpell
== bDoAutoSpell
133 && rOpt
.bLookUpColRowNames
== bLookUpColRowNames
134 && rOpt
.bFormulaRegexEnabled
== bFormulaRegexEnabled
138 inline bool ScDocOptions::operator!=( const ScDocOptions
& rOpt
) const
140 return !(operator==(rOpt
));
143 // Item for preferences dialog - calculation
145 class SC_DLLPUBLIC ScTpCalcItem
: public SfxPoolItem
149 ScTpCalcItem( sal_uInt16 nWhich
,
150 const ScDocOptions
& rOpt
);
151 ScTpCalcItem( const ScTpCalcItem
& rItem
);
152 virtual ~ScTpCalcItem();
154 virtual OUString
GetValueText() const;
155 virtual bool operator==( const SfxPoolItem
& ) const SAL_OVERRIDE
;
156 virtual SfxPoolItem
* Clone( SfxItemPool
*pPool
= 0 ) const SAL_OVERRIDE
;
158 const ScDocOptions
& GetDocOptions() const { return theOptions
; }
161 ScDocOptions theOptions
;
164 // Config Item containing document options
166 class ScDocCfg
: public ScDocOptions
168 ScLinkConfigItem aCalcItem
;
169 ScLinkConfigItem aLayoutItem
;
171 DECL_LINK( CalcCommitHdl
, void* );
172 DECL_LINK( LayoutCommitHdl
, void* );
174 com::sun::star::uno::Sequence
<OUString
> GetCalcPropertyNames();
175 com::sun::star::uno::Sequence
<OUString
> GetLayoutPropertyNames();
180 void SetOptions( const ScDocOptions
& rNew
);
185 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */