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