xref: /aoo42x/main/cui/source/inc/autocdlg.hxx (revision c4eee24d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _OFA_AUTOCDLG_HXX
24 #define _OFA_AUTOCDLG_HXX
25 
26 #include <svtools/langtab.hxx>
27 #include <sfx2/tabdlg.hxx>
28 #include <tools/table.hxx>
29 #include <svx/checklbx.hxx>
30 #include <vcl/fixed.hxx>
31 #include <vcl/field.hxx>
32 #include <vcl/metric.hxx>
33 #include <svx/langbox.hxx>
34 
35 class SvxAutoCorrect;
36 class CharClass;
37 class CollatorWrapper;
38 class SmartTagMgr;
39 
40 // class OfaAutoCorrDlg --------------------------------------------------
41 
42 class OfaAutoCorrDlg : public SfxTabDialog
43 {
44 	FixedText		aLanguageFT;
45 	SvxLanguageBox	aLanguageLB;
46 
47 	DECL_LINK(SelectLanguageHdl, ListBox*);
48 public:
49 
50 	OfaAutoCorrDlg(Window* pParent, const SfxItemSet *pSet );
51 
52 	void	EnableLanguage(sal_Bool bEnable)
53 			{	aLanguageFT.Enable(bEnable);
54 				aLanguageLB.Enable(bEnable);}
55 
56 };
57 
58 #ifdef _OFA_AUTOCDLG_CXX
59 #include <vcl/group.hxx>
60 #ifndef _SV_BUTTON_HXX
61 #include <vcl/button.hxx>
62 #endif
63 #include <vcl/lstbox.hxx>
64 #include <svtools/svtabbx.hxx>
65 #include <svx/simptabl.hxx>
66 
67 class SvStringsISortDtor;
68 
69 // class OfaACorrCheckListBox ------------------------------------------
70 
71 class OfaACorrCheckListBox : public SvxSimpleTable
72 {
73 	using SvxSimpleTable::SetTabs;
74 	using SvTreeListBox::GetCheckButtonState;
75 	using SvTreeListBox::SetCheckButtonState;
76 
77 	protected:
78 		virtual void	SetTabs();
79 		virtual void	HBarClick();
80         virtual void    KeyInput( const KeyEvent& rKEvt );
81 
82 	public:
83 		OfaACorrCheckListBox(Window* pParent, const ResId& rResId ) :
84 			SvxSimpleTable( pParent, rResId ){}
85 
86 		inline void *GetUserData(sal_uLong nPos) { return GetEntry(nPos)->GetUserData(); }
87 		inline void SetUserData(sal_uLong nPos, void *pData ) { GetEntry(nPos)->SetUserData(pData); }
88 		inline sal_uLong GetSelectEntryPos() { return GetModel()->GetAbsPos(FirstSelected()); }
89 
90 		sal_Bool			IsChecked(sal_uLong nPos, sal_uInt16 nCol = 0);
91 		void			CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, sal_Bool bChecked);
92 		SvButtonState	GetCheckButtonState( SvLBoxEntry*, sal_uInt16 nCol ) const;
93 		void			SetCheckButtonState( SvLBoxEntry*, sal_uInt16 nCol, SvButtonState );
94 };
95 
96 // class OfaAutocorrOptionsPage ------------------------------------------
97 
98 
99 class OfaAutocorrOptionsPage : public SfxTabPage
100 {
101 	using TabPage::ActivatePage;
102 
103 private:
104 	SvxCheckListBox	aCheckLB;
105 
106 	String		sInput;
107 	String		sDoubleCaps;
108 	String		sStartCap;
109 	String		sBoldUnderline;
110 	String		sURL;
111 	String		sNoDblSpaces;
112 	String		sDash;
113     String      sNonBrkSpace;
114 	String		sFirst;
115 
116 public:
117 						OfaAutocorrOptionsPage( Window* pParent, const SfxItemSet& rSet );
118 						~OfaAutocorrOptionsPage();
119 
120 	static SfxTabPage*	Create( Window* pParent,
121 								const SfxItemSet& rAttrSet);
122 
123 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
124 	virtual	void 		Reset( const SfxItemSet& rSet );
125 	virtual void		ActivatePage( const SfxItemSet& );
126 
127 };
128 
129 // class OfaSwAutoFmtOptionsPage ----------------------------------------------------
130 
131 class OfaSwAutoFmtOptionsPage : public SfxTabPage
132 {
133 	using TabPage::ActivatePage;
134 
135 	OfaACorrCheckListBox	aCheckLB;
136 	PushButton		aEditPB;
137 	FixedText		aHeader1Expl;
138 	FixedText		aHeader2Expl;
139 
140 	String			sHeader1;
141 	String			sHeader2;
142 
143 	String			sDeleteEmptyPara;
144 	String			sUseReplaceTbl;
145 	String			sCptlSttWord;
146 	String			sCptlSttSent;
147 	String			sUserStyle;
148 	String			sBullet;
149 	String			sByInputBullet;
150 	String			sBoldUnder;
151 	String			sNoDblSpaces;
152 	String			sDetectURL;
153 	String          sDash;
154     String          sNonBrkSpace;
155 	String			sOrdinal;
156 	String			sRightMargin;
157 	String			sNum;
158 	String			sBorder;
159 	String			sTable;
160 	String			sReplaceTemplates;
161 	String			sDelSpaceAtSttEnd;
162 	String			sDelSpaceBetweenLines;
163 
164 	String			sMargin;
165 	String			sBulletChar;
166 	String			sByInputBulletChar;
167 
168 	Font			aBulletFont;
169 	Font 			aByInputBulletFont;
170 	sal_uInt16			nPercent;
171 
172 	SvLBoxButtonData*	pCheckButtonData;
173 
174 		DECL_LINK(SelectHdl, OfaACorrCheckListBox*);
175 		DECL_LINK(EditHdl, PushButton*);
176 		SvLBoxEntry* CreateEntry(String& rTxt, sal_uInt16 nCol);
177 
178 
179 		OfaSwAutoFmtOptionsPage( Window* pParent,
180 							const SfxItemSet& rSet );
181 		~OfaSwAutoFmtOptionsPage();
182 
183 	public:
184 		static SfxTabPage*  Create( Window* pParent,
185 								const SfxItemSet& rAttrSet);
186 		virtual sal_Bool        FillItemSet( SfxItemSet& rSet );
187 		virtual void        Reset( const SfxItemSet& rSet );
188 		virtual void		ActivatePage( const SfxItemSet& );
189 };
190 
191 // class AutoCorrEdit ----------------------------------------------------
192 
193 class AutoCorrEdit : public Edit
194 {
195 	Link 	aActionLink;
196 	sal_Bool 	bSpaces;
197 
198 	public:
199 					AutoCorrEdit(Window* pParent, const ResId& rResId) :
200 						Edit(pParent, rResId), bSpaces(sal_False){}
201 
202 	void 			SetActionHdl( const Link& rLink )
203 								{ aActionLink = rLink;}
204 
205 	void 			SetSpaces(sal_Bool bSet)
206 								{bSpaces = bSet;}
207 
208 	virtual void	KeyInput( const KeyEvent& rKEvent );
209 };
210 
211 // class OfaAutocorrReplacePage ------------------------------------------
212 
213 class DoubleStringArray;
214 typedef DoubleStringArray* DoubleStringArrayPtr;
215 DECLARE_TABLE(DoubleStringTable, DoubleStringArrayPtr)
216 
217 class OfaAutocorrReplacePage : public SfxTabPage
218 {
219 		using TabPage::ActivatePage;
220 		using TabPage::DeactivatePage;
221 
222 private:
223 		CheckBox		aTextOnlyCB;
224 		FixedText       aShortFT;
225 		AutoCorrEdit 	aShortED;
226 		FixedText       aReplaceFT;
227 		AutoCorrEdit 	aReplaceED;
228 		SvTabListBox 	aReplaceTLB;
229 		PushButton 		aNewReplacePB;
230 		PushButton 		aDeleteReplacePB;
231 
232 		String			sModify;
233 		String			sNew;
234 
235 		SvStringsISortDtor* 	pFormatText;
236 		DoubleStringTable		aDoubleStringTable;
237 		CollatorWrapper* 		pCompareClass;
238         CollatorWrapper*        pCompareCaseClass;
239         CharClass*              pCharClass;
240 		LanguageType 			eLang;
241 
242 		sal_Bool			bHasSelectionText;
243 		sal_Bool			bFirstSelect:1;
244 		sal_Bool			bReplaceEditChanged:1;
245 		sal_Bool			bSWriter:1;
246 
247 		DECL_LINK(SelectHdl, SvTabListBox*);
248 		DECL_LINK(NewDelHdl, PushButton*);
249 		DECL_LINK(ModifyHdl, Edit*);
250 
251 		void 			RefillReplaceBox(sal_Bool bFromReset, //Box mit neuer Sprache fuellen
252 										LanguageType eOldLanguage,
253 										LanguageType eNewLanguage);
254 
255 public:
256 						OfaAutocorrReplacePage( Window* pParent, const SfxItemSet& rSet );
257 						~OfaAutocorrReplacePage();
258 
259 	static SfxTabPage*	Create( Window* pParent,
260 								const SfxItemSet& rAttrSet);
261 
262 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
263 	virtual	void 		Reset( const SfxItemSet& rSet );
264 	virtual void		ActivatePage( const SfxItemSet& );
265 	virtual int			DeactivatePage( SfxItemSet* pSet = 0 );
266 
267 	void				SetLanguage(LanguageType eSet);
268 };
269 
270 // class OfaAutocorrExceptPage ---------------------------------------------
271 
272 struct StringsArrays;
273 typedef StringsArrays* StringsArraysPtr;
274 DECLARE_TABLE(StringsTable, StringsArraysPtr)
275 
276 class OfaAutocorrExceptPage : public SfxTabPage
277 {
278 	using TabPage::ActivatePage;
279 	using TabPage::DeactivatePage;
280 
281 private:
282 		FixedLine		aAbbrevFL;
283 		AutoCorrEdit	aAbbrevED;
284 		ListBox			aAbbrevLB;
285 		PushButton		aNewAbbrevPB;
286 		PushButton		aDelAbbrevPB;
287 		CheckBox        aAutoAbbrevCB;
288 
289 		FixedLine		aDoubleCapsFL;
290 		AutoCorrEdit	aDoubleCapsED;
291 		ListBox			aDoubleCapsLB;
292 		PushButton		aNewDoublePB;
293 		PushButton		aDelDoublePB;
294 		CheckBox        aAutoCapsCB;
295 
296 		StringsTable	aStringsTable;
297 		CollatorWrapper* pCompareClass;
298 		LanguageType 	eLang;
299 
300 	DECL_LINK(NewDelHdl, PushButton*);
301 	DECL_LINK(SelectHdl, ListBox*);
302 	DECL_LINK(ModifyHdl, Edit*);
303 
304 	void 			RefillReplaceBoxes(sal_Bool bFromReset, //Box mit neuer Sprache fuellen
305 										LanguageType eOldLanguage,
306 										LanguageType eNewLanguage);
307 public:
308 						OfaAutocorrExceptPage( Window* pParent, const SfxItemSet& rSet );
309 						~OfaAutocorrExceptPage();
310 
311 	static SfxTabPage*	Create( Window* pParent,
312 								const SfxItemSet& rAttrSet);
313 
314 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
315 	virtual	void 		Reset( const SfxItemSet& rSet );
316 	virtual void		ActivatePage( const SfxItemSet& );
317 	virtual int			DeactivatePage( SfxItemSet* pSet = 0 );
318 	void				SetLanguage(LanguageType eSet);
319 
320 };
321 
322 // class OfaQuoteTabPage -------------------------------------------------
323 
324 class OfaQuoteTabPage : public SfxTabPage
325 {
326 	using TabPage::ActivatePage;
327 
328 private:
329     // For anything but writer
330 	SvxCheckListBox	aCheckLB;
331 
332     // Just for writer
333 	OfaACorrCheckListBox	aSwCheckLB;
334     String			sHeader1;
335 	String			sHeader2;
336 
337     String          sNonBrkSpace;
338     String          sOrdinal;
339 
340     SvLBoxButtonData*	pCheckButtonData;
341 
342 	FixedLine	aSingleFL;
343 	CheckBox    aSingleTypoCB;
344 	FixedText	aSglStartQuoteFT;
345 	PushButton  aSglStartQuotePB;
346 	FixedText	aSglStartExFT;
347 	FixedText	aSglEndQuoteFT;
348 	PushButton	aSglEndQuotePB;
349 	FixedText	aSglEndExFT;
350 	PushButton	aSglStandardPB;
351 
352 	FixedLine	aDoubleFL;
353 	CheckBox    aTypoCB;
354 	FixedText	aStartQuoteFT;
355 	PushButton  aStartQuotePB;
356 	FixedText	aDblStartExFT;
357 	FixedText	aEndQuoteFT;
358 	PushButton	aEndQuotePB;
359 	FixedText	aDblEndExFT;
360 	PushButton	aDblStandardPB;
361 
362 	String		sStartQuoteDlg;
363 	String		sEndQuoteDlg;
364 
365 	String 		sStandard;
366 
367 
368 	sal_UCS4	cSglStartQuote;
369 	sal_UCS4	cSglEndQuote;
370 
371 	sal_UCS4	cStartQuote;
372 	sal_UCS4	cEndQuote;
373 
374 	DECL_LINK( QuoteHdl, PushButton* );
375 	DECL_LINK( StdQuoteHdl, PushButton* );
376 
377 	String 				ChangeStringExt_Impl( sal_UCS4 );
378 
379     SvLBoxEntry* CreateEntry(String& rTxt, sal_uInt16 nCol);
380 
381 						OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet );
382 public:
383 						~OfaQuoteTabPage();
384 
385 	static SfxTabPage*	Create( Window* pParent,
386 								const SfxItemSet& rAttrSet);
387 
388 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
389 	virtual	void 		Reset( const SfxItemSet& rSet );
390 	virtual void		ActivatePage( const SfxItemSet& );
391 };
392 
393 // class OfaAutoCompleteTabPage ---------------------------------------------
394 
395 class OfaAutoCompleteTabPage : public SfxTabPage
396 {
397 	using TabPage::ActivatePage;
398 
399 	class AutoCompleteMultiListBox : public MultiListBox
400 	{
401 		OfaAutoCompleteTabPage& rPage;
402 	public:
403 		AutoCompleteMultiListBox( OfaAutoCompleteTabPage& rPg,
404 									const ResId& rResId )
405 			: MultiListBox( &rPg, rResId ), rPage( rPg ) {}
406 
407 		virtual long PreNotify( NotifyEvent& rNEvt );
408 	};
409 
410     CheckBox        aCBActiv; //Enable word completion
411     CheckBox        aCBAppendSpace;//Append space
412     CheckBox        aCBAsTip; //Show as tip
413 
414     CheckBox        aCBCollect;//Collect words
415     CheckBox        aCBRemoveList;//...save the list for later use...
416     //--removed--CheckBox        aCBEndless;//
417 
418     FixedText       aFTExpandKey;
419 	ListBox 		aDCBExpandKey;
420     FixedText       aFTMinWordlen;
421     NumericField    aNFMinWordlen;
422     FixedText       aFTMaxEntries;
423     NumericField    aNFMaxEntries;
424     AutoCompleteMultiListBox    aLBEntries;
425 	PushButton					aPBEntries;
426 	SvStringsISortDtor* 		pAutoCmpltList;
427 	sal_uInt16 						nAutoCmpltListCnt;
428 
429 	DECL_LINK( CheckHdl, CheckBox* );
430 
431 						OfaAutoCompleteTabPage( Window* pParent,
432 												const SfxItemSet& rSet );
433 public:
434 						virtual ~OfaAutoCompleteTabPage();
435 
436 	static SfxTabPage*	Create( Window* pParent,
437 								const SfxItemSet& rAttrSet);
438 
439 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
440 	virtual	void 		Reset( const SfxItemSet& rSet );
441 	virtual void		ActivatePage( const SfxItemSet& );
442 
443 	void CopyToClipboard() const;
444 	DECL_LINK( DeleteHdl, PushButton* );
445 };
446 
447 // class OfaSmartTagOptionsTabPage ---------------------------------------------
448 
449 /** Smart tag options tab page
450 
451     This tab page is used to enable/disable smart tag types
452 */
453 class OfaSmartTagOptionsTabPage : public SfxTabPage
454 {
455 	using TabPage::ActivatePage;
456 
457 private:
458 
459 	// controls
460     CheckBox				m_aMainCB;
461 	SvxCheckListBox			m_aSmartTagTypesLB;
462 	PushButton				m_aPropertiesPB;
463 	FixedText				m_aTitleFT;
464 
465     // construction via Create()
466     OfaSmartTagOptionsTabPage( Window* pParent,	const SfxItemSet& rSet );
467 
468     /** Inserts items into m_aSmartTagTypesLB
469 
470         Reads out the smart tag types supported by the SmartTagMgr and
471         inserts the associated strings into the list box.
472     */
473     void FillListBox( const SmartTagMgr& rSmartTagMgr );
474 
475     /** Clears the m_aSmartTagTypesLB
476     */
477     void ClearListBox();
478 
479     /** Handler for the check box
480 
481         Enables/disables all controls in the tab page (except from the
482         check box.
483     */
484 	DECL_LINK( CheckHdl, CheckBox* );
485 
486     /** Handler for the push button
487 
488         Calls the displayPropertyPage function of the smart tag recognizer
489         associated with the currently selected smart tag type.
490     */
491 	DECL_LINK( ClickHdl, PushButton* );
492 
493     /** Handler for the list box
494 
495         Enables/disables the properties push button if selection in the
496         smart tag types list box changes.
497     */
498     DECL_LINK( SelectHdl, SvxCheckListBox* );
499 
500 public:
501 
502 	virtual ~OfaSmartTagOptionsTabPage();
503 
504 	static SfxTabPage*	Create( Window* pParent, const SfxItemSet& rAttrSet);
505 
506 	virtual	sal_Bool 		FillItemSet( SfxItemSet& rSet );
507 	virtual	void 		Reset( const SfxItemSet& rSet );
508 	virtual void		ActivatePage( const SfxItemSet& );
509 };
510 
511 #endif // _OFA_AUTOCDLG_CXX
512 
513 #endif //
514 
515