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