blob: 81712bd5c5a18334acf0bae98ea37863e95d452e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: workbooksettings.hxx,v $
* $Revision: 1.3 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef OOX_XLS_WORKBOOKSETTINGS_HXX
#define OOX_XLS_WORKBOOKSETTINGS_HXX
#include "oox/xls/workbookhelper.hxx"
namespace com { namespace sun { namespace star { namespace util { struct Date; } } } }
namespace oox {
namespace xls {
// ============================================================================
/** Settings for workbook write protection. */
struct FileSharingModel
{
::rtl::OUString maUserName; /// User who added the write protection password.
sal_uInt16 mnPasswordHash; /// Hash value of the write protection password.
bool mbRecommendReadOnly; /// True = recommend read-only mode on opening.
explicit FileSharingModel();
};
// ============================================================================
/** Global workbook settings. */
struct WorkbookSettingsModel
{
::rtl::OUString maCodeName; /// VBA codename for the workbook.
sal_Int32 mnShowObjectMode; /// Specifies how objects are shown.
sal_Int32 mnUpdateLinksMode; /// Specifies how external links are updated.
sal_Int32 mnDefaultThemeVer; /// Default theme version.
bool mbDateMode1904; /// True = null date is 1904-01-01.
bool mbSaveExtLinkValues; /// True = save cached cell values for external links.
explicit WorkbookSettingsModel();
/** Sets OOBIN or BIFF object visibility mode. */
void setBinObjectMode( sal_uInt16 nObjMode );
};
// ============================================================================
/** Workbook calculation settings. */
struct CalcSettingsModel
{
double mfIterateDelta; /// Minimum change in circular references.
sal_Int32 mnCalcId; /// Calculation engine identifier.
sal_Int32 mnRefMode; /// Cell reference mode: A1 or R1C1.
sal_Int32 mnCalcMode; /// Automatic or manual recalculation.
sal_Int32 mnIterateCount; /// Number of iterations in circular references.
sal_Int32 mnProcCount; /// Number of processors for concurrent calculation.
bool mbCalcOnSave; /// True = always recalculate formulas before save.
bool mbCalcCompleted; /// True = formulas have been recalculated before save.
bool mbFullPrecision; /// True = use full precision on calculation.
bool mbIterate; /// True = allow circular references.
bool mbConcurrent; /// True = concurrent calculation enabled.
bool mbUseNlr; /// True = use natural language references in formulas.
explicit CalcSettingsModel();
};
// ============================================================================
class WorkbookSettings : public WorkbookHelper
{
public:
explicit WorkbookSettings( const WorkbookHelper& rHelper );
/** Imports the fileSharing element containing write protection settings. */
void importFileSharing( const AttributeList& rAttribs );
/** Imports the workbookPr element containing global workbook settings. */
void importWorkbookPr( const AttributeList& rAttribs );
/** Imports the calcPr element containing workbook calculation settings. */
void importCalcPr( const AttributeList& rAttribs );
/** Imports the FILESHARING record containing write protection settings. */
void importFileSharing( RecordInputStream& rStrm );
/** Imports the WORKBOOKPR record containing global workbook settings. */
void importWorkbookPr( RecordInputStream& rStrm );
/** Imports the CALCPR record containing workbook calculation settings. */
void importCalcPr( RecordInputStream& rStrm );
/** Sets the save external linked values flag, e.g. from the WSBOOL record. */
void setSaveExtLinkValues( bool bSaveExtLinks );
/** Imports the FILESHARING record. */
void importFileSharing( BiffInputStream& rStrm );
/** Imports the BOOKBOOL record. */
void importBookBool( BiffInputStream& rStrm );
/** Imports the CALCCOUNT record. */
void importCalcCount( BiffInputStream& rStrm );
/** Imports the CALCMODE record. */
void importCalcMode( BiffInputStream& rStrm );
/** Imports the CODENAME record. */
void importCodeName( BiffInputStream& rStrm );
/** Imports the DATEMODE record. */
void importDateMode( BiffInputStream& rStrm );
/** Imports the DELTA record. */
void importDelta( BiffInputStream& rStrm );
/** Imports the HIDEOBJ record. */
void importHideObj( BiffInputStream& rStrm );
/** Imports the ITERATION record. */
void importIteration( BiffInputStream& rStrm );
/** Imports the PRECISION record. */
void importPrecision( BiffInputStream& rStrm );
/** Imports the REFMODE record. */
void importRefMode( BiffInputStream& rStrm );
/** Imports the SAVERECALC record. */
void importSaveRecalc( BiffInputStream& rStrm );
/** Imports the UNCALCED record. */
void importUncalced( BiffInputStream& rStrm );
/** Imports the USESELFS record. */
void importUsesElfs( BiffInputStream& rStrm );
/** Converts the imported workbook settings. */
void finalizeImport();
/** Returns the show objects mode (considered a view setting in Calc). */
sal_Int16 getApiShowObjectMode() const;
/** Returns the nulldate of this workbook. */
::com::sun::star::util::Date getNullDate() const;
private:
/** Updates date mode and unit converter nulldate. */
void setDateMode( bool bDateMode1904 );
private:
FileSharingModel maFileSharing;
WorkbookSettingsModel maBookSettings;
CalcSettingsModel maCalcSettings;
};
// ============================================================================
} // namespace xls
} // namespace oox
#endif
|