Line data Source code
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 :
10 : #include "colorscale.hxx"
11 : #include "conditio.hxx"
12 : #include <formula/funcutl.hxx>
13 :
14 : namespace condformat {
15 :
16 : namespace entry {
17 :
18 : enum ScCondFrmtEntryType
19 : {
20 : CONDITION,
21 : FORMULA,
22 : COLORSCALE2,
23 : COLORSCALE3,
24 : DATABAR,
25 : ICONSET,
26 : DATE
27 : };
28 :
29 : }
30 :
31 : }
32 :
33 : class ScCondFrmtEntry : public Control
34 : {
35 : private:
36 : bool mbActive;
37 :
38 : Link maClickHdl;
39 :
40 : //general ui elements
41 : FixedText maFtCondNr;
42 : FixedText maFtCondition;
43 :
44 : sal_Int32 mnIndex;
45 : rtl::OUString maStrCondition;
46 : protected:
47 : ListBox maLbType;
48 :
49 : ScDocument* mpDoc;
50 : ScAddress maPos;
51 :
52 : DECL_LINK( EdModifyHdl, Edit* );
53 :
54 : void Select();
55 : void Deselect();
56 :
57 : virtual rtl::OUString GetExpressionString() = 0;
58 :
59 : public:
60 : ScCondFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos );
61 : virtual ~ScCondFrmtEntry();
62 :
63 : virtual long Notify( NotifyEvent& rNEvt );
64 :
65 : bool IsSelected() const;
66 : void SetIndex(sal_Int32 nIndex);
67 : sal_Int32 GetIndex() const { return mnIndex; }
68 : void SetHeight();
69 :
70 : virtual ScFormatEntry* GetEntry() const = 0;
71 : virtual void SetActive() = 0;
72 : virtual void SetInactive() = 0;
73 :
74 : virtual condformat::entry::ScCondFrmtEntryType GetType() = 0;
75 : };
76 :
77 0 : class ScConditionFrmtEntry : public ScCondFrmtEntry
78 : {
79 : //cond format ui elements
80 : ListBox maLbCondType;
81 : formula::RefEdit maEdVal1;
82 : formula::RefEdit maEdVal2;
83 : FixedText maFtStyle;
84 : ListBox maLbStyle;
85 : SvxFontPrevWindow maWdPreview;
86 :
87 : ScFormatEntry* createConditionEntry() const;
88 :
89 : virtual rtl::OUString GetExpressionString();
90 : void Init();
91 : DECL_LINK( StyleSelectHdl, void* );
92 : DECL_LINK( ConditionTypeSelectHdl, void* );
93 :
94 : public:
95 : ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry = NULL );
96 :
97 : virtual ScFormatEntry* GetEntry() const;
98 : virtual void SetActive();
99 : virtual void SetInactive();
100 :
101 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::CONDITION; }
102 : };
103 :
104 0 : class ScFormulaFrmtEntry : public ScCondFrmtEntry
105 : {
106 : FixedText maFtStyle;
107 : ListBox maLbStyle;
108 : SvxFontPrevWindow maWdPreview;
109 : formula::RefEdit maEdFormula;
110 :
111 : ScFormatEntry* createFormulaEntry() const;
112 : virtual rtl::OUString GetExpressionString();
113 : void Init();
114 :
115 : DECL_LINK( StyleSelectHdl, void* );
116 :
117 : public:
118 : ScFormulaFrmtEntry( Window* pParent, ScDocument* PDoc, const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry = NULL );
119 :
120 : virtual ScFormatEntry* GetEntry() const;
121 : virtual void SetActive();
122 : virtual void SetInactive();
123 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::FORMULA; }
124 : };
125 :
126 0 : class ScColorScale2FrmtEntry : public ScCondFrmtEntry
127 : {
128 :
129 : //color format ui elements
130 : ListBox maLbColorFormat;
131 :
132 : //color scale ui elements
133 : ListBox maLbEntryTypeMin;
134 : ListBox maLbEntryTypeMax;
135 :
136 : Edit maEdMin;
137 : Edit maEdMax;
138 :
139 : ColorListBox maLbColMin;
140 : ColorListBox maLbColMax;
141 :
142 : ScFormatEntry* createColorscaleEntry() const;
143 :
144 : virtual rtl::OUString GetExpressionString();
145 : void Init();
146 :
147 : DECL_LINK( EntryTypeHdl, ListBox* );
148 : public:
149 : ScColorScale2FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = NULL );
150 : virtual ScFormatEntry* GetEntry() const;
151 : virtual void SetActive();
152 : virtual void SetInactive();
153 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::COLORSCALE2; }
154 : };
155 :
156 0 : class ScColorScale3FrmtEntry : public ScCondFrmtEntry
157 : {
158 :
159 : //color format ui elements
160 : ListBox maLbColorFormat;
161 :
162 : //color scale ui elements
163 : ListBox maLbEntryTypeMin;
164 : ListBox maLbEntryTypeMiddle;
165 : ListBox maLbEntryTypeMax;
166 :
167 : Edit maEdMin;
168 : Edit maEdMiddle;
169 : Edit maEdMax;
170 :
171 : ColorListBox maLbColMin;
172 : ColorListBox maLbColMiddle;
173 : ColorListBox maLbColMax;
174 :
175 : ScFormatEntry* createColorscaleEntry() const;
176 :
177 : virtual rtl::OUString GetExpressionString();
178 : void Init();
179 :
180 : DECL_LINK( EntryTypeHdl, ListBox* );
181 : public:
182 : ScColorScale3FrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = NULL );
183 : virtual ScFormatEntry* GetEntry() const;
184 : virtual void SetActive();
185 : virtual void SetInactive();
186 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::COLORSCALE3; }
187 : };
188 :
189 0 : class ScDataBarFrmtEntry : public ScCondFrmtEntry
190 : {
191 : //color format ui elements
192 : ListBox maLbColorFormat;
193 :
194 : //data bar ui elements
195 : ListBox maLbDataBarMinType;
196 : ListBox maLbDataBarMaxType;
197 : Edit maEdDataBarMin;
198 : Edit maEdDataBarMax;
199 :
200 : PushButton maBtOptions;
201 :
202 : boost::scoped_ptr<ScDataBarFormatData> mpDataBarData;
203 :
204 : ScFormatEntry* createDatabarEntry() const;
205 :
206 : virtual rtl::OUString GetExpressionString();
207 : void Init();
208 :
209 : DECL_LINK( OptionBtnHdl, void* );
210 : DECL_LINK( DataBarTypeSelectHdl, void* );
211 : public:
212 : ScDataBarFrmtEntry( Window* pParemt, ScDocument* pDoc, const ScAddress& rPos, const ScDataBarFormat* pFormat = NULL );
213 : virtual ScFormatEntry* GetEntry() const;
214 : virtual void SetActive();
215 : virtual void SetInactive();
216 :
217 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::DATABAR; }
218 : };
219 :
220 0 : class ScDateFrmtEntry : public ScCondFrmtEntry
221 : {
222 : public:
223 : ScDateFrmtEntry( Window* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat = NULL );
224 : virtual ScFormatEntry* GetEntry() const;
225 : virtual void SetActive();
226 : virtual void SetInactive();
227 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::DATE; }
228 :
229 : protected:
230 : virtual rtl::OUString GetExpressionString();
231 :
232 : private:
233 : void Init();
234 :
235 : DECL_LINK( StyleSelectHdl, void* );
236 :
237 : ListBox maLbDateEntry;
238 : FixedText maFtStyle;
239 : ListBox maLbStyle;
240 : SvxFontPrevWindow maWdPreview;
241 : };
242 :
243 0 : class ScIconSetFrmtEntry : public ScCondFrmtEntry
244 : {
245 : //color format ui elements
246 : ListBox maLbColorFormat;
247 :
248 : // icon set ui elements
249 : ListBox maLbIconSetType;
250 :
251 0 : class ScIconSetFrmtDataEntry : public Control
252 : {
253 : private:
254 : FixedImage maImgIcon;
255 : FixedText maFtEntry;
256 : Edit maEdEntry;
257 : ListBox maLbEntryType;
258 :
259 : public:
260 : ScIconSetFrmtDataEntry( Window* pParent, ScIconSetType eType, sal_Int32 i, const ScColorScaleEntry* pEntry = NULL );
261 :
262 : ScColorScaleEntry* CreateEntry(ScDocument* pDoc, const ScAddress& rPos) const;
263 :
264 : void SetLastEntry();
265 : };
266 : typedef boost::ptr_vector<ScIconSetFrmtDataEntry> ScIconSetFrmtDateEntriesType;
267 : ScIconSetFrmtDateEntriesType maEntries;
268 :
269 : virtual rtl::OUString GetExpressionString();
270 :
271 : void Init();
272 :
273 : DECL_LINK( IconSetTypeHdl, void* );
274 :
275 : public:
276 : ScIconSetFrmtEntry( Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScIconSetFormat* pFormat = NULL );
277 : virtual ScFormatEntry* GetEntry() const;
278 : virtual void SetActive();
279 : virtual void SetInactive();
280 0 : virtual condformat::entry::ScCondFrmtEntryType GetType() { return condformat::entry::ICONSET; }
281 : };
282 :
283 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|