/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef _OFA_AUTOCDLG_HXX #define _OFA_AUTOCDLG_HXX #include #include #include #include #include #include #include #include "svtools/treelistentry.hxx" #include #include #include #include #include class CharClass; class CollatorWrapper; class SmartTagMgr; namespace editeng { class SortedAutoCompleteStrings; } // class OfaAutoCorrDlg -------------------------------------------------- class OfaAutoCorrDlg : public SfxTabDialog { VclContainer* m_pLanguageBox; SvxLanguageBox* m_pLanguageLB; sal_uInt16 m_nReplacePageId; sal_uInt16 m_nExceptionsPageId; DECL_LINK(SelectLanguageHdl, ListBox*); public: OfaAutoCorrDlg(Window* pParent, const SfxItemSet *pSet); void EnableLanguage(bool bEnable); }; // class OfaACorrCheckListBox ------------------------------------------ class OfaACorrCheckListBox : public SvxSimpleTable { using SvxSimpleTable::SetTabs; using SvTreeListBox::GetCheckButtonState; using SvTreeListBox::SetCheckButtonState; protected: virtual void SetTabs(); virtual void HBarClick(); virtual void KeyInput( const KeyEvent& rKEvt ); public: OfaACorrCheckListBox(SvxSimpleTableContainer& rParent, WinBits nBits = WB_BORDER) : SvxSimpleTable(rParent, nBits) { } inline void *GetUserData(sal_uLong nPos) { return GetEntry(nPos)->GetUserData(); } inline void SetUserData(sal_uLong nPos, void *pData ) { GetEntry(nPos)->SetUserData(pData); } inline sal_uLong GetSelectEntryPos() { return GetModel()->GetAbsPos(FirstSelected()); } sal_Bool IsChecked(sal_uLong nPos, sal_uInt16 nCol = 0); void CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, sal_Bool bChecked); SvButtonState GetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol ) const; void SetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol, SvButtonState ); }; // class OfaAutocorrOptionsPage ------------------------------------------ class OfaAutocorrOptionsPage : public SfxTabPage { using TabPage::ActivatePage; private: SvxCheckListBox aCheckLB; String sInput; String sDoubleCaps; String sStartCap; String sBoldUnderline; String sURL; String sNoDblSpaces; String sDash; String sNonBrkSpace; String sFirst; String sAccidentalCaps; public: OfaAutocorrOptionsPage( Window* pParent, const SfxItemSet& rSet ); ~OfaAutocorrOptionsPage(); static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet); virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet ); virtual void ActivatePage( const SfxItemSet& ); }; // class OfaSwAutoFmtOptionsPage ---------------------------------------------------- class OfaSwAutoFmtOptionsPage : public SfxTabPage { using TabPage::ActivatePage; SvxSimpleTableContainer m_aCheckLBContainer; OfaACorrCheckListBox aCheckLB; PushButton aEditPB; FixedText aHeader1Expl; FixedText aHeader2Expl; String sHeader1; String sHeader2; String sDeleteEmptyPara; String sUseReplaceTbl; String sCptlSttWord; String sCptlSttSent; String sUserStyle; String sBullet; String sByInputBullet; String sBoldUnder; String sNoDblSpaces; String sCorrectCapsLock; String sDetectURL; String sDash; String sNonBrkSpace; String sOrdinal; String sRightMargin; String sNum; String sBorder; String sTable; String sReplaceTemplates; String sDelSpaceAtSttEnd; String sDelSpaceBetweenLines; String sMargin; String sBulletChar; String sByInputBulletChar; Font aBulletFont; Font aByInputBulletFont; sal_uInt16 nPercent; SvLBoxButtonData* pCheckButtonData; DECL_LINK(SelectHdl, OfaACorrCheckListBox*); DECL_LINK(EditHdl, void *); SvTreeListEntry* CreateEntry(String& rTxt, sal_uInt16 nCol); OfaSwAutoFmtOptionsPage( Window* pParent, const SfxItemSet& rSet ); ~OfaSwAutoFmtOptionsPage(); public: static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet); virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet ); virtual void ActivatePage( const SfxItemSet& ); }; // class AutoCorrEdit ---------------------------------------------------- class AutoCorrEdit : public Edit { Link aActionLink; sal_Bool bSpaces; public: AutoCorrEdit(Window* pParent, const ResId& rResId) : Edit(pParent, rResId), bSpaces(sal_False){} AutoCorrEdit(Window* pParent) : Edit(pParent), bSpaces(sal_False){} void SetActionHdl( const Link& rLink ) { aActionLink = rLink;} void SetSpaces(sal_Bool bSet) {bSpaces = bSet;} virtual void KeyInput( const KeyEvent& rKEvent ); }; // class OfaAutocorrReplacePage ------------------------------------------ struct DoubleString { String sShort; String sLong; void* pUserData; ///< CheckBox -> form. Text Bool -> selection text }; typedef std::vector DoubleStringArray; typedef std::map DoubleStringTable; struct StringChangeList { DoubleStringArray aNewEntries; DoubleStringArray aDeletedEntries; }; typedef std::map StringChangeTable; class OfaAutocorrReplacePage : public SfxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: StringChangeTable aChangesTable; CheckBox* m_pTextOnlyCB; AutoCorrEdit* m_pShortED; AutoCorrEdit* m_pReplaceED; SvTabListBox* m_pReplaceTLB; PushButton* m_pNewReplacePB; PushButton* m_pDeleteReplacePB; OUString sModify; OUString sNew; std::set aFormatText; DoubleStringTable aDoubleStringTable; CollatorWrapper* pCompareClass; CharClass* pCharClass; LanguageType eLang; sal_Bool bHasSelectionText; sal_Bool bFirstSelect:1; sal_Bool bReplaceEditChanged:1; sal_Bool bSWriter:1; DECL_LINK(SelectHdl, SvTabListBox*); DECL_LINK(NewDelHdl, PushButton*); DECL_LINK(ModifyHdl, Edit*); void RefillReplaceBox( sal_Bool bFromReset, LanguageType eOldLanguage, LanguageType eNewLanguage); public: OfaAutocorrReplacePage( Window* pParent, const SfxItemSet& rSet ); ~OfaAutocorrReplacePage(); static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet); virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet ); virtual void ActivatePage( const SfxItemSet& ); virtual int DeactivatePage( SfxItemSet* pSet = 0 ); virtual void Resize(); void SetLanguage(LanguageType eSet); void DeleteEntry(String sShort, String sLong); void NewEntry(String sShort, String sLong); }; // class OfaAutocorrExceptPage --------------------------------------------- struct StringsArrays { std::vector aAbbrevStrings; std::vector aDoubleCapsStrings; StringsArrays() { } }; typedef std::map StringsTable; class OfaAutocorrExceptPage : public SfxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: AutoCorrEdit* m_pAbbrevED; ListBox* m_pAbbrevLB; PushButton* m_pNewAbbrevPB; PushButton* m_pDelAbbrevPB; CheckBox* m_pAutoAbbrevCB; AutoCorrEdit* m_pDoubleCapsED; ListBox* m_pDoubleCapsLB; PushButton* m_pNewDoublePB; PushButton* m_pDelDoublePB; CheckBox* m_pAutoCapsCB; StringsTable aStringsTable; CollatorWrapper* pCompareClass; LanguageType eLang; DECL_LINK(NewDelHdl, PushButton*); DECL_LINK(SelectHdl, ListBox*); DECL_LINK(ModifyHdl, Edit*); /// Box filled with new language void RefillReplaceBoxes(sal_Bool bFromReset, LanguageType eOldLanguage, LanguageType eNewLanguage); public: OfaAutocorrExceptPage( Window* pParent, const SfxItemSet& rSet ); ~OfaAutocorrExceptPage(); static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet); virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet ); virtual void ActivatePage( const SfxItemSet& ); virtual int DeactivatePage( SfxItemSet* pSet = 0 ); void SetLanguage(LanguageType eSet); }; // class OfaQuoteTabPage ------------------------------------------------- class OfaQuoteTabPage : public SfxTabPage { using TabPage::ActivatePage; private: /// For anything but writer SvxCheckListBox aCheckLB; /// Just for writer SvxSimpleTableContainer m_aSwCheckLBContainer; OfaACorrCheckListBox aSwCheckLB; String sHeader1; String sHeader2; String sNonBrkSpace; String sOrdinal; SvLBoxButtonData* pCheckButtonData; FixedLine aSingleFL; CheckBox aSingleTypoCB; FixedText aSglStartQuoteFT; PushButton aSglStartQuotePB; FixedText aSglStartExFT; FixedText aSglEndQuoteFT; PushButton aSglEndQuotePB; FixedText aSglEndExFT; PushButton aSglStandardPB; FixedLine aDoubleFL; CheckBox aTypoCB; FixedText aStartQuoteFT; PushButton aStartQuotePB; FixedText aDblStartExFT; FixedText aEndQuoteFT; PushButton aEndQuotePB; FixedText aDblEndExFT; PushButton aDblStandardPB; String sStartQuoteDlg; String sEndQuoteDlg; String sStandard; sal_UCS4 cSglStartQuote; sal_UCS4 cSglEndQuote; sal_UCS4 cStartQuote; sal_UCS4 cEndQuote; DECL_LINK( QuoteHdl, PushButton* ); DECL_LINK( StdQuoteHdl, PushButton* ); String ChangeStringExt_Impl( sal_UCS4 ); SvTreeListEntry* CreateEntry(String& rTxt, sal_uInt16 nCol); OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ); public: ~OfaQuoteTabPage(); static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet); virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet ); virtual void ActivatePage( const SfxItemSet& ); }; // class OfaAutoCompleteTabPage --------------------------------------------- class OfaAutoCompleteTabPage : public SfxTabPage { using TabPage::ActivatePage; class AutoCompleteMultiListBox : public MultiListBox { OfaAutoCompleteTabPage& rPage; public: AutoCompleteMultiListBox( OfaAutoCompleteTabPage& rPg, const ResId& rResId ) : MultiListBox( &rPg, rResId ), rPage( rPg ) {} virtual long PreNotify( NotifyEvent& rNEvt ); }; CheckBox aCBActiv; ///