/* -*- 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 INCLUDED_CUI_SOURCE_INC_AUTOCDLG_HXX #define INCLUDED_CUI_SOURCE_INC_AUTOCDLG_HXX #include #include #include #include #include #include #include #include #include #include #include #include #include class CharClass; class CollatorWrapper; class SmartTagMgr; namespace editeng { class SortedAutoCompleteStrings; } // class OfaAutoCorrDlg -------------------------------------------------- class OfaAutoCorrDlg : public SfxTabDialog { VclPtr m_pLanguageBox; VclPtr m_pLanguageLB; sal_uInt16 m_nReplacePageId; sal_uInt16 m_nExceptionsPageId; DECL_LINK(SelectLanguageHdl, ListBox&, void); public: OfaAutoCorrDlg(vcl::Window* pParent, const SfxItemSet *pSet); virtual ~OfaAutoCorrDlg() override; virtual void dispose() override; void EnableLanguage(bool bEnable); }; // class OfaACorrCheckListBox ------------------------------------------ class OfaACorrCheckListBox : public SvSimpleTable { using SvSimpleTable::SetTabs; using SvTreeListBox::GetCheckButtonState; using SvTreeListBox::SetCheckButtonState; protected: virtual void SetTabs() override; virtual void HBarClick() override; virtual void KeyInput( const KeyEvent& rKEvt ) override; public: OfaACorrCheckListBox(SvSimpleTableContainer& rParent) : SvSimpleTable(rParent, WB_BORDER) { } void *GetUserData(sal_uLong nPos) { return GetEntry(nPos)->GetUserData(); } void SetUserData(sal_uLong nPos, void *pData ) { GetEntry(nPos)->SetUserData(pData); } sal_uLong GetSelectedEntryPos() { return GetModel()->GetAbsPos(FirstSelected()); } bool IsChecked(sal_uLong nPos, sal_uInt16 nCol = 0); void CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, bool bChecked); static SvButtonState GetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol ); void SetCheckButtonState( SvTreeListEntry*, sal_uInt16 nCol, SvButtonState ); }; // class OfaAutocorrOptionsPage ------------------------------------------ class OfaAutocorrOptionsPage : public SfxTabPage { using TabPage::ActivatePage; private: VclPtr m_pCheckLB; OUString m_sInput; OUString m_sDoubleCaps; OUString m_sStartCap; OUString m_sBoldUnderline; OUString m_sURL; OUString m_sNoDblSpaces; OUString m_sDash; OUString m_sAccidentalCaps; public: OfaAutocorrOptionsPage(vcl::Window* pParent, const SfxItemSet& rSet); virtual ~OfaAutocorrOptionsPage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; }; // class OfaSwAutoFmtOptionsPage ---------------------------------------------------- class OfaSwAutoFmtOptionsPage : public SfxTabPage { friend class VclPtr; using TabPage::ActivatePage; VclPtr m_pCheckLB; VclPtr m_pEditPB; OUString sDeleteEmptyPara; OUString sUseReplaceTbl; OUString sCapitalStartWord; OUString sCapitalStartSentence; OUString sUserStyle; OUString sBullet; OUString sBoldUnder; OUString sNoDblSpaces; OUString sCorrectCapsLock; OUString sDetectURL; OUString sDash; OUString sRightMargin; OUString sNum; OUString sBorder; OUString sTable; OUString sReplaceTemplates; OUString sDelSpaceAtSttEnd; OUString sDelSpaceBetweenLines; OUString sMargin; OUString sBulletChar; OUString sByInputBulletChar; vcl::Font aBulletFont; vcl::Font aByInputBulletFont; sal_uInt16 nPercent; std::unique_ptr m_xCheckButtonData; DECL_LINK(SelectHdl, SvTreeListBox*, void); DECL_LINK(EditHdl, Button*, void); DECL_LINK(DoubleClickEditHdl, SvTreeListBox*, bool); SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol); OfaSwAutoFmtOptionsPage( vcl::Window* pParent, const SfxItemSet& rSet ); virtual ~OfaSwAutoFmtOptionsPage() override; virtual void dispose() override; public: static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; }; // class AutoCorrEdit ---------------------------------------------------- class AutoCorrEdit : public Edit { Link aActionLink; VclPtr m_xReplaceTLB; sal_Int32 m_nCol; bool bSpaces; void dispose() override; public: AutoCorrEdit(vcl::Window* pParent) : Edit(pParent) , m_nCol(0) , bSpaces(false) { } virtual ~AutoCorrEdit() override; void SetActionHdl( const Link& rLink ) { aActionLink = rLink;} void ConnectColumn(const VclPtr& rTable, sal_Int32 nCol); void SetSpaces(bool bSet) {bSpaces = bSet;} virtual void KeyInput( const KeyEvent& rKEvent ) override; virtual void Resize() override; }; // class OfaAutocorrReplacePage ------------------------------------------ struct DoubleString { OUString sShort; OUString sLong; void* pUserData; ///< CheckBox -> form. Text Bool -> selection text }; typedef std::vector DoubleStringArray; struct StringChangeList { DoubleStringArray aNewEntries; DoubleStringArray aDeletedEntries; }; typedef std::map StringChangeTable; class OfaAutocorrReplacePage : public SfxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: StringChangeTable aChangesTable; VclPtr m_pTextOnlyCB; VclPtr m_pShortED; VclPtr m_pReplaceED; VclPtr m_pReplaceTLB; VclPtr m_pNewReplacePB; VclPtr m_pDeleteReplacePB; OUString sModify; OUString sNew; std::set aFormatText; std::map aDoubleStringTable; CollatorWrapper* pCompareClass; CharClass* pCharClass; LanguageType eLang; bool bHasSelectionText; bool bFirstSelect:1; bool bReplaceEditChanged:1; bool bSWriter:1; DECL_LINK(SelectHdl, SvTreeListBox*, void); DECL_LINK(NewDelButtonHdl, Button*, void); DECL_LINK(NewDelActionHdl, AutoCorrEdit&, bool); DECL_LINK(ModifyHdl, Edit&, void); bool NewDelHdl(void const *); void RefillReplaceBox( bool bFromReset, LanguageType eOldLanguage, LanguageType eNewLanguage); public: OfaAutocorrReplacePage( vcl::Window* pParent, const SfxItemSet& rSet ); virtual ~OfaAutocorrReplacePage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetLanguage(LanguageType eSet); void DeleteEntry(const OUString& sShort, const OUString& sLong); void NewEntry(const OUString& sShort, const OUString& sLong, bool bKeepSourceFormatting); }; // 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: VclPtr m_pAbbrevED; VclPtr m_pAbbrevLB; VclPtr m_pNewAbbrevPB; VclPtr m_pDelAbbrevPB; VclPtr m_pAutoAbbrevCB; VclPtr m_pDoubleCapsED; VclPtr m_pDoubleCapsLB; VclPtr m_pNewDoublePB; VclPtr m_pDelDoublePB; VclPtr m_pAutoCapsCB; StringsTable aStringsTable; CollatorWrapper* pCompareClass; LanguageType eLang; DECL_LINK(NewDelButtonHdl, Button*, void); DECL_LINK(NewDelActionHdl, AutoCorrEdit&, bool); DECL_LINK(SelectHdl, ListBox&, void); DECL_LINK(ModifyHdl, Edit&, void); bool NewDelHdl(void const *); /// Box filled with new language void RefillReplaceBoxes(bool bFromReset, LanguageType eOldLanguage, LanguageType eNewLanguage); public: OfaAutocorrExceptPage( vcl::Window* pParent, const SfxItemSet& rSet ); virtual ~OfaAutocorrExceptPage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetLanguage(LanguageType eSet); }; // class OfaQuoteTabPage ------------------------------------------------- class OfaQuoteTabPage : public SfxTabPage { friend class VclPtr; using TabPage::ActivatePage; private: /// For anything but writer VclPtr m_pCheckLB; /// Just for writer VclPtr m_pSwCheckLB; OUString sNonBrkSpace; OUString sOrdinal; std::unique_ptr m_xCheckButtonData; VclPtr m_pSingleTypoCB; VclPtr m_pSglStartQuotePB; VclPtr m_pSglStartExFT; VclPtr m_pSglEndQuotePB; VclPtr m_pSglEndExFT; VclPtr m_pSglStandardPB; VclPtr m_pDoubleTypoCB; VclPtr m_pDblStartQuotePB; VclPtr m_pDblStartExFT; VclPtr m_pDblEndQuotePB; VclPtr m_pDblEndExFT; VclPtr m_pDblStandardPB; OUString m_sStandard; sal_UCS4 cSglStartQuote; sal_UCS4 cSglEndQuote; sal_UCS4 cStartQuote; sal_UCS4 cEndQuote; DECL_LINK( QuoteHdl, Button*, void ); DECL_LINK( StdQuoteHdl, Button*, void ); OUString ChangeStringExt_Impl( sal_UCS4 ); SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol); OfaQuoteTabPage( vcl::Window* pParent, const SfxItemSet& rSet ); public: virtual ~OfaQuoteTabPage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; }; // class OfaAutoCompleteTabPage --------------------------------------------- class OfaAutoCompleteTabPage : public SfxTabPage { friend class VclPtr; public: class AutoCompleteMultiListBox : public MultiListBox { VclPtr m_pPage; public: AutoCompleteMultiListBox(vcl::Window *pParent, WinBits nBits) : MultiListBox(pParent, nBits) , m_pPage(nullptr) { } virtual ~AutoCompleteMultiListBox() override; virtual void dispose() override; void SetPage(OfaAutoCompleteTabPage *pPage) { m_pPage = pPage; } virtual bool PreNotify( NotifyEvent& rNEvt ) override; }; private: using TabPage::ActivatePage; VclPtr m_pCBActiv; /// m_pCBAppendSpace;/// m_pCBAsTip; /// m_pCBCollect;/// m_pCBRemoveList;///<...save the list for later use... VclPtr m_pDCBExpandKey; VclPtr m_pNFMinWordlen; VclPtr m_pNFMaxEntries; VclPtr m_pLBEntries; VclPtr m_pPBEntries; editeng::SortedAutoCompleteStrings* m_pAutoCompleteList; sal_uInt16 m_nAutoCmpltListCnt; DECL_LINK( CheckHdl, CheckBox&, void ); OfaAutoCompleteTabPage( vcl::Window* pParent, const SfxItemSet& rSet ); public: virtual ~OfaAutoCompleteTabPage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; void CopyToClipboard() const; DECL_LINK(DeleteHdl, Button*, void); }; // class OfaSmartTagOptionsTabPage --------------------------------------------- /** Smart tag options tab page This tab page is used to enable/disable smart tag types */ class OfaSmartTagOptionsTabPage : public SfxTabPage { using TabPage::ActivatePage; private: // controls VclPtr m_pMainCB; VclPtr m_pSmartTagTypesLB; VclPtr m_pPropertiesPB; /** Inserts items into m_aSmartTagTypesLB Reads out the smart tag types supported by the SmartTagMgr and inserts the associated strings into the list box. */ void FillListBox( const SmartTagMgr& rSmartTagMgr ); /** Clears the m_aSmartTagTypesLB */ void ClearListBox(); /** Handler for the check box Enables/disables all controls in the tab page (except from the check box. */ DECL_LINK(CheckHdl, CheckBox&, void); /** Handler for the push button Calls the displayPropertyPage function of the smart tag recognizer associated with the currently selected smart tag type. */ DECL_LINK(ClickHdl, Button*, void); /** Handler for the list box Enables/disables the properties push button if selection in the smart tag types list box changes. */ DECL_LINK(SelectHdl, SvTreeListBox*, void); public: /// construction via Create() OfaSmartTagOptionsTabPage( vcl::Window* pParent, const SfxItemSet& rSet ); virtual ~OfaSmartTagOptionsTabPage() override; virtual void dispose() override; static VclPtr Create( TabPageParent pParent, const SfxItemSet* rAttrSet); virtual bool FillItemSet( SfxItemSet* rSet ) override; virtual void Reset( const SfxItemSet* rSet ) override; virtual void ActivatePage( const SfxItemSet& ) override; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */