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 : * This file incorporates work covered by the following license notice:
10 : *
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 .
18 : */
19 : #ifndef INCLUDED_CUI_SOURCE_INC_AUTOCDLG_HXX
20 : #define INCLUDED_CUI_SOURCE_INC_AUTOCDLG_HXX
21 :
22 : #include <sfx2/tabdlg.hxx>
23 : #include <svtools/langtab.hxx>
24 : #include <svtools/simptabl.hxx>
25 : #include <svtools/svtabbx.hxx>
26 : #include <svtools/treelistentry.hxx>
27 : #include <svx/checklbx.hxx>
28 : #include <svx/langbox.hxx>
29 : #include <vcl/button.hxx>
30 : #include <vcl/fixed.hxx>
31 : #include <vcl/field.hxx>
32 : #include <vcl/group.hxx>
33 : #include <vcl/lstbox.hxx>
34 : #include <vcl/metric.hxx>
35 :
36 : class CharClass;
37 : class CollatorWrapper;
38 : class SmartTagMgr;
39 :
40 : namespace editeng { class SortedAutoCompleteStrings; }
41 :
42 : // class OfaAutoCorrDlg --------------------------------------------------
43 :
44 : class OfaAutoCorrDlg : public SfxTabDialog
45 : {
46 : VclPtr<VclContainer> m_pLanguageBox;
47 : VclPtr<SvxLanguageBox> m_pLanguageLB;
48 :
49 : sal_uInt16 m_nReplacePageId;
50 : sal_uInt16 m_nExceptionsPageId;
51 :
52 : DECL_LINK(SelectLanguageHdl, ListBox*);
53 : public:
54 :
55 : OfaAutoCorrDlg(vcl::Window* pParent, const SfxItemSet *pSet);
56 : virtual ~OfaAutoCorrDlg();
57 : virtual void dispose() SAL_OVERRIDE;
58 :
59 : void EnableLanguage(bool bEnable);
60 : };
61 :
62 : // class OfaACorrCheckListBox ------------------------------------------
63 :
64 0 : class OfaACorrCheckListBox : public SvSimpleTable
65 : {
66 : using SvSimpleTable::SetTabs;
67 : using SvTreeListBox::GetCheckButtonState;
68 : using SvTreeListBox::SetCheckButtonState;
69 :
70 : protected:
71 : virtual void SetTabs() SAL_OVERRIDE;
72 : virtual void HBarClick() SAL_OVERRIDE;
73 : virtual void KeyInput( const KeyEvent& rKEvt ) SAL_OVERRIDE;
74 :
75 : public:
76 0 : OfaACorrCheckListBox(SvSimpleTableContainer& rParent, WinBits nBits = WB_BORDER)
77 0 : : SvSimpleTable(rParent, nBits)
78 : {
79 0 : }
80 :
81 0 : inline void *GetUserData(sal_uLong nPos) { return GetEntry(nPos)->GetUserData(); }
82 0 : inline void SetUserData(sal_uLong nPos, void *pData ) { GetEntry(nPos)->SetUserData(pData); }
83 0 : inline sal_uLong GetSelectEntryPos() { return GetModel()->GetAbsPos(FirstSelected()); }
84 :
85 : bool IsChecked(sal_uLong nPos, sal_uInt16 nCol = 0);
86 : void CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, bool bChecked);
87 : static SvButtonState GetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol );
88 : void SetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol, SvButtonState );
89 : };
90 :
91 : // class OfaAutocorrOptionsPage ------------------------------------------
92 :
93 :
94 : class OfaAutocorrOptionsPage : public SfxTabPage
95 : {
96 : using TabPage::ActivatePage;
97 :
98 : private:
99 : VclPtr<SvxCheckListBox> m_pCheckLB;
100 :
101 : OUString m_sInput;
102 : OUString m_sDoubleCaps;
103 : OUString m_sStartCap;
104 : OUString m_sBoldUnderline;
105 : OUString m_sURL;
106 : OUString m_sNoDblSpaces;
107 : OUString m_sDash;
108 : OUString m_sAccidentalCaps;
109 :
110 : public:
111 : OfaAutocorrOptionsPage(vcl::Window* pParent, const SfxItemSet& rSet);
112 : virtual ~OfaAutocorrOptionsPage();
113 : virtual void dispose() SAL_OVERRIDE;
114 :
115 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
116 : const SfxItemSet* rAttrSet);
117 :
118 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
119 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
120 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
121 :
122 : };
123 :
124 : // class OfaSwAutoFmtOptionsPage ----------------------------------------------------
125 :
126 : class OfaSwAutoFmtOptionsPage : public SfxTabPage
127 : {
128 : friend class VclPtr<OfaSwAutoFmtOptionsPage>;
129 : using TabPage::ActivatePage;
130 :
131 : VclPtr<OfaACorrCheckListBox> m_pCheckLB;
132 : VclPtr<PushButton> m_pEditPB;
133 :
134 : OUString sDeleteEmptyPara;
135 : OUString sUseReplaceTbl;
136 : OUString sCapitalStartWord;
137 : OUString sCapitalStartSentence;
138 : OUString sUserStyle;
139 : OUString sBullet;
140 : OUString sBoldUnder;
141 : OUString sNoDblSpaces;
142 : OUString sCorrectCapsLock;
143 : OUString sDetectURL;
144 : OUString sDash;
145 : OUString sRightMargin;
146 : OUString sNum;
147 : OUString sBorder;
148 : OUString sTable;
149 : OUString sReplaceTemplates;
150 : OUString sDelSpaceAtSttEnd;
151 : OUString sDelSpaceBetweenLines;
152 :
153 : OUString sMargin;
154 : OUString sBulletChar;
155 : OUString sByInputBulletChar;
156 :
157 : vcl::Font aBulletFont;
158 : vcl::Font aByInputBulletFont;
159 : sal_uInt16 nPercent;
160 :
161 : SvLBoxButtonData* pCheckButtonData;
162 :
163 : DECL_LINK(SelectHdl, OfaACorrCheckListBox*);
164 : DECL_LINK(EditHdl, void *);
165 : SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol);
166 :
167 :
168 : OfaSwAutoFmtOptionsPage( vcl::Window* pParent,
169 : const SfxItemSet& rSet );
170 : virtual ~OfaSwAutoFmtOptionsPage();
171 : virtual void dispose() SAL_OVERRIDE;
172 :
173 : public:
174 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
175 : const SfxItemSet* rAttrSet);
176 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
177 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
178 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
179 : };
180 :
181 : // class AutoCorrEdit ----------------------------------------------------
182 :
183 0 : class AutoCorrEdit : public Edit
184 : {
185 : Link<> aActionLink;
186 : bool bSpaces;
187 :
188 : public:
189 : AutoCorrEdit(vcl::Window* pParent, const ResId& rResId) :
190 : Edit(pParent, rResId), bSpaces(false){}
191 0 : AutoCorrEdit(vcl::Window* pParent) :
192 0 : Edit(pParent), bSpaces(false){}
193 :
194 0 : void SetActionHdl( const Link<>& rLink )
195 0 : { aActionLink = rLink;}
196 :
197 0 : void SetSpaces(bool bSet)
198 0 : {bSpaces = bSet;}
199 :
200 : virtual void KeyInput( const KeyEvent& rKEvent ) SAL_OVERRIDE;
201 : };
202 :
203 : // class OfaAutocorrReplacePage ------------------------------------------
204 :
205 :
206 0 : struct DoubleString
207 : {
208 : OUString sShort;
209 : OUString sLong;
210 : void* pUserData; ///< CheckBox -> form. Text Bool -> selection text
211 : };
212 :
213 : typedef std::vector<DoubleString> DoubleStringArray;
214 : typedef std::map<LanguageType, DoubleStringArray> DoubleStringTable;
215 :
216 0 : struct StringChangeList
217 : {
218 : DoubleStringArray aNewEntries;
219 : DoubleStringArray aDeletedEntries;
220 : };
221 :
222 : typedef std::map<LanguageType, StringChangeList> StringChangeTable;
223 :
224 : class OfaAutocorrReplacePage : public SfxTabPage
225 : {
226 : using TabPage::ActivatePage;
227 : using TabPage::DeactivatePage;
228 :
229 : private:
230 :
231 : StringChangeTable aChangesTable;
232 :
233 : VclPtr<CheckBox> m_pTextOnlyCB;
234 : VclPtr<AutoCorrEdit> m_pShortED;
235 : VclPtr<AutoCorrEdit> m_pReplaceED;
236 : VclPtr<SvTabListBox> m_pReplaceTLB;
237 : VclPtr<PushButton> m_pNewReplacePB;
238 : VclPtr<PushButton> m_pDeleteReplacePB;
239 :
240 : OUString sModify;
241 : OUString sNew;
242 :
243 : std::set<OUString> aFormatText;
244 : DoubleStringTable aDoubleStringTable;
245 : CollatorWrapper* pCompareClass;
246 : CharClass* pCharClass;
247 : LanguageType eLang;
248 :
249 : bool bHasSelectionText;
250 : bool bFirstSelect:1;
251 : bool bReplaceEditChanged:1;
252 : bool bSWriter:1;
253 :
254 : DECL_LINK(SelectHdl, SvTabListBox*);
255 : DECL_LINK(NewDelHdl, PushButton*);
256 : DECL_LINK(ModifyHdl, Edit*);
257 :
258 : void RefillReplaceBox( bool bFromReset,
259 : LanguageType eOldLanguage,
260 : LanguageType eNewLanguage);
261 :
262 : void setTabs();
263 : public:
264 : OfaAutocorrReplacePage( vcl::Window* pParent, const SfxItemSet& rSet );
265 : virtual ~OfaAutocorrReplacePage();
266 : virtual void dispose() SAL_OVERRIDE;
267 :
268 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rAttrSet);
269 :
270 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
271 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
272 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
273 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
274 : virtual void Resize() SAL_OVERRIDE;
275 : virtual void StateChanged(StateChangedType nStateChange) SAL_OVERRIDE;
276 :
277 : void SetLanguage(LanguageType eSet);
278 : void DeleteEntry(const OUString& sShort, const OUString& sLong);
279 : void NewEntry(const OUString& sShort, const OUString& sLong, bool bKeepSourceFormatting);
280 : };
281 :
282 : // class OfaAutocorrExceptPage ---------------------------------------------
283 :
284 0 : struct StringsArrays
285 : {
286 : std::vector<OUString> aAbbrevStrings;
287 : std::vector<OUString> aDoubleCapsStrings;
288 :
289 0 : StringsArrays() { }
290 : };
291 : typedef std::map<LanguageType, StringsArrays> StringsTable;
292 :
293 : class OfaAutocorrExceptPage : public SfxTabPage
294 : {
295 : using TabPage::ActivatePage;
296 : using TabPage::DeactivatePage;
297 :
298 : private:
299 : VclPtr<AutoCorrEdit> m_pAbbrevED;
300 : VclPtr<ListBox> m_pAbbrevLB;
301 : VclPtr<PushButton> m_pNewAbbrevPB;
302 : VclPtr<PushButton> m_pDelAbbrevPB;
303 : VclPtr<CheckBox> m_pAutoAbbrevCB;
304 :
305 : VclPtr<AutoCorrEdit> m_pDoubleCapsED;
306 : VclPtr<ListBox> m_pDoubleCapsLB;
307 : VclPtr<PushButton> m_pNewDoublePB;
308 : VclPtr<PushButton> m_pDelDoublePB;
309 : VclPtr<CheckBox> m_pAutoCapsCB;
310 :
311 : StringsTable aStringsTable;
312 : CollatorWrapper* pCompareClass;
313 : LanguageType eLang;
314 :
315 : DECL_LINK(NewDelHdl, void*);
316 : DECL_LINK(SelectHdl, ListBox*);
317 : DECL_LINK(ModifyHdl, Edit*);
318 : /// Box filled with new language
319 : void RefillReplaceBoxes(bool bFromReset,
320 : LanguageType eOldLanguage,
321 : LanguageType eNewLanguage);
322 : public:
323 : OfaAutocorrExceptPage( vcl::Window* pParent, const SfxItemSet& rSet );
324 : virtual ~OfaAutocorrExceptPage();
325 : virtual void dispose() SAL_OVERRIDE;
326 :
327 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
328 : const SfxItemSet* rAttrSet);
329 :
330 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
331 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
332 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
333 : virtual sfxpg DeactivatePage( SfxItemSet* pSet = 0 ) SAL_OVERRIDE;
334 : void SetLanguage(LanguageType eSet);
335 :
336 : };
337 :
338 : // class OfaQuoteTabPage -------------------------------------------------
339 :
340 : class OfaQuoteTabPage : public SfxTabPage
341 : {
342 : friend class VclPtr<OfaQuoteTabPage>;
343 : using TabPage::ActivatePage;
344 :
345 : private:
346 : /// For anything but writer
347 : VclPtr<SvxCheckListBox> m_pCheckLB;
348 :
349 : /// Just for writer
350 : VclPtr<OfaACorrCheckListBox> m_pSwCheckLB;
351 :
352 : OUString sNonBrkSpace;
353 : OUString sOrdinal;
354 :
355 : SvLBoxButtonData* pCheckButtonData;
356 :
357 : VclPtr<CheckBox> m_pSingleTypoCB;
358 : VclPtr<PushButton> m_pSglStartQuotePB;
359 : VclPtr<FixedText> m_pSglStartExFT;
360 : VclPtr<PushButton> m_pSglEndQuotePB;
361 : VclPtr<FixedText> m_pSglEndExFT;
362 : VclPtr<PushButton> m_pSglStandardPB;
363 :
364 : VclPtr<CheckBox> m_pDoubleTypoCB;
365 : VclPtr<PushButton> m_pDblStartQuotePB;
366 : VclPtr<FixedText> m_pDblStartExFT;
367 : VclPtr<PushButton> m_pDblEndQuotePB;
368 : VclPtr<FixedText> m_pDblEndExFT;
369 : VclPtr<PushButton> m_pDblStandardPB;
370 :
371 : OUString m_sStartQuoteDlg;
372 : OUString m_sEndQuoteDlg;
373 :
374 : OUString m_sStandard;
375 :
376 :
377 : sal_UCS4 cSglStartQuote;
378 : sal_UCS4 cSglEndQuote;
379 :
380 : sal_UCS4 cStartQuote;
381 : sal_UCS4 cEndQuote;
382 :
383 : DECL_LINK( QuoteHdl, PushButton* );
384 : DECL_LINK( StdQuoteHdl, PushButton* );
385 :
386 : OUString ChangeStringExt_Impl( sal_UCS4 );
387 :
388 : SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol);
389 :
390 : OfaQuoteTabPage( vcl::Window* pParent, const SfxItemSet& rSet );
391 : public:
392 : virtual ~OfaQuoteTabPage();
393 : virtual void dispose() SAL_OVERRIDE;
394 :
395 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
396 : const SfxItemSet* rAttrSet);
397 :
398 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
399 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
400 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
401 : };
402 :
403 : // class OfaAutoCompleteTabPage ---------------------------------------------
404 :
405 : class OfaAutoCompleteTabPage : public SfxTabPage
406 : {
407 : friend class VclPtr<OfaAutoCompleteTabPage>;
408 : public:
409 : class AutoCompleteMultiListBox : public MultiListBox
410 : {
411 : VclPtr<OfaAutoCompleteTabPage> m_pPage;
412 : public:
413 0 : AutoCompleteMultiListBox(vcl::Window *pParent, WinBits nBits)
414 : : MultiListBox(pParent, nBits)
415 0 : , m_pPage(NULL)
416 : {
417 0 : }
418 : virtual ~AutoCompleteMultiListBox();
419 : virtual void dispose() SAL_OVERRIDE;
420 0 : void SetPage(OfaAutoCompleteTabPage *pPage) { m_pPage = pPage; }
421 : virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
422 : };
423 :
424 : private:
425 : using TabPage::ActivatePage;
426 : VclPtr<CheckBox> m_pCBActiv; ///<Enable word completion
427 : VclPtr<CheckBox> m_pCBAppendSpace;///<Append space
428 : VclPtr<CheckBox> m_pCBAsTip; ///<Show as tip
429 :
430 : VclPtr<CheckBox> m_pCBCollect;///<Collect words
431 : VclPtr<CheckBox> m_pCBRemoveList;///<...save the list for later use...
432 :
433 : VclPtr<ListBox> m_pDCBExpandKey;
434 : VclPtr<NumericField> m_pNFMinWordlen;
435 : VclPtr<NumericField> m_pNFMaxEntries;
436 : VclPtr<AutoCompleteMultiListBox> m_pLBEntries;
437 : VclPtr<PushButton> m_pPBEntries;
438 : editeng::SortedAutoCompleteStrings* m_pAutoCompleteList;
439 : sal_uInt16 m_nAutoCmpltListCnt;
440 :
441 : DECL_LINK( CheckHdl, CheckBox* );
442 :
443 : OfaAutoCompleteTabPage( vcl::Window* pParent,
444 : const SfxItemSet& rSet );
445 : public:
446 : virtual ~OfaAutoCompleteTabPage();
447 : virtual void dispose() SAL_OVERRIDE;
448 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent,
449 : const SfxItemSet* rAttrSet);
450 :
451 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
452 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
453 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
454 :
455 : void CopyToClipboard() const;
456 : DECL_LINK(DeleteHdl, void *);
457 : };
458 :
459 : // class OfaSmartTagOptionsTabPage ---------------------------------------------
460 :
461 : /** Smart tag options tab page
462 :
463 : This tab page is used to enable/disable smart tag types
464 : */
465 : class OfaSmartTagOptionsTabPage : public SfxTabPage
466 : {
467 : using TabPage::ActivatePage;
468 :
469 : private:
470 :
471 : // controls
472 : VclPtr<CheckBox> m_pMainCB;
473 : VclPtr<SvxCheckListBox> m_pSmartTagTypesLB;
474 : VclPtr<PushButton> m_pPropertiesPB;
475 :
476 : /** Inserts items into m_aSmartTagTypesLB
477 :
478 : Reads out the smart tag types supported by the SmartTagMgr and
479 : inserts the associated strings into the list box.
480 : */
481 : void FillListBox( const SmartTagMgr& rSmartTagMgr );
482 :
483 : /** Clears the m_aSmartTagTypesLB
484 : */
485 : void ClearListBox();
486 :
487 : /** Handler for the check box
488 :
489 : Enables/disables all controls in the tab page (except from the
490 : check box.
491 : */
492 : DECL_LINK(CheckHdl, void *);
493 :
494 : /** Handler for the push button
495 :
496 : Calls the displayPropertyPage function of the smart tag recognizer
497 : associated with the currently selected smart tag type.
498 : */
499 : DECL_LINK(ClickHdl, void *);
500 :
501 : /** Handler for the list box
502 :
503 : Enables/disables the properties push button if selection in the
504 : smart tag types list box changes.
505 : */
506 : DECL_LINK(SelectHdl, void *);
507 :
508 : public:
509 : /// construction via Create()
510 : OfaSmartTagOptionsTabPage( vcl::Window* pParent, const SfxItemSet& rSet );
511 : virtual ~OfaSmartTagOptionsTabPage();
512 : virtual void dispose() SAL_OVERRIDE;
513 :
514 : static VclPtr<SfxTabPage> Create( vcl::Window* pParent, const SfxItemSet* rAttrSet);
515 :
516 : virtual bool FillItemSet( SfxItemSet* rSet ) SAL_OVERRIDE;
517 : virtual void Reset( const SfxItemSet* rSet ) SAL_OVERRIDE;
518 : virtual void ActivatePage( const SfxItemSet& ) SAL_OVERRIDE;
519 : };
520 :
521 : #endif
522 :
523 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|