From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- include/svx/srchdlg.hxx | 270 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 include/svx/srchdlg.hxx (limited to 'include/svx/srchdlg.hxx') diff --git a/include/svx/srchdlg.hxx b/include/svx/srchdlg.hxx new file mode 100644 index 000000000..2b975e435 --- /dev/null +++ b/include/svx/srchdlg.hxx @@ -0,0 +1,270 @@ +/* -*- 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_SVX_SRCHDLG_HXX +#define INCLUDED_SVX_SRCHDLG_HXX + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class SvxSearchItem; +class SfxStyleSheetBasePool; +class SvxJSearchOptionsPage; +class SvxSearchController; +class VclAbstractDialog; +struct SearchDlg_Impl; +enum class ModifyFlags; +enum class TransliterationFlags; + +struct SearchAttrItem +{ + sal_uInt16 nSlot; + SfxPoolItem* pItem; +}; + +typedef std::vector SrchAttrItemList; + +class SVX_DLLPUBLIC SearchAttrItemList : private SrchAttrItemList +{ +public: + SearchAttrItemList() {} + SearchAttrItemList( const SearchAttrItemList& rList ); + SearchAttrItemList( SearchAttrItemList&& rList ); + ~SearchAttrItemList(); + + void Put( const SfxItemSet& rSet ); + SfxItemSet& Get( SfxItemSet& rSet ); + void Clear(); + sal_uInt16 Count() const { return SrchAttrItemList::size(); } + SearchAttrItem& operator[](sal_uInt16 nPos) + { return SrchAttrItemList::operator[]( nPos ); } + SearchAttrItem& GetObject( sal_uInt16 nPos ) + { return SrchAttrItemList::operator[]( nPos ); } + + // the pointer to the item is not being copied, so don't delete + void Insert( const SearchAttrItem& rItem ) + { SrchAttrItemList::push_back( rItem ); } + // deletes the pointer to the items + void Remove(size_t nPos); +}; + +enum class SearchLabel +{ + Empty, + End, + Start, + EndSheet, + NotFound, + StartWrapped, + EndWrapped, + NavElementNotFound, + ReminderStartWrapped, + ReminderEndWrapped +}; + +class SvxSearchDialog; +class SVX_DLLPUBLIC SvxSearchDialogWrapper final : public SfxChildWindow +{ + std::shared_ptr dialog; +public: + SvxSearchDialogWrapper( vcl::Window*pParent, sal_uInt16 nId, + SfxBindings* pBindings, SfxChildWinInfo const * pInfo ); + + virtual ~SvxSearchDialogWrapper () override; + SvxSearchDialog *getDialog () { return dialog.get();} + static void SetSearchLabel(const SearchLabel& rSL); + static void SetSearchLabel(const OUString& sStr); + static OUString GetSearchLabel(); + SFX_DECL_CHILDWINDOW_WITHID(SvxSearchDialogWrapper); +}; + +/** + In this modeless dialog the attributes for a search are configured + and a search is started from it. Several search types + (search, search all, replace, replace all) are possible. + + */ + +class SVX_DLLPUBLIC SvxSearchDialog final : public SfxModelessDialogController +{ +friend class SvxSearchController; +friend class SvxSearchDialogWrapper; +friend class SvxJSearchOptionsDialog; + +public: + SvxSearchDialog(weld::Window* pParent, SfxChildWindow* pChildWin, SfxBindings& rBind ); + virtual ~SvxSearchDialog() override; + + virtual void ChildWinDispose() override; + virtual void Close() override; + + // Window + virtual void Activate() override; + + const SearchAttrItemList* GetSearchItemList() const + { return pSearchList.get(); } + const SearchAttrItemList* GetReplaceItemList() const + { return pReplaceList.get(); } + + TransliterationFlags GetTransliterationFlags() const; + + void SetSaveToModule(bool b); + + void SetSearchLabel(const OUString& rStr); + + // bring this window back to the foreground + void Present(); + +private: + SfxBindings& rBindings; + Timer m_aPresentIdle; + bool bWriter; + bool bSearch; + bool bFormat; + bool bReplaceBackwards; + SearchOptionFlags nOptions; + bool bSet; + bool bConstruct; + ModifyFlags nModifyFlag; + OUString aStylesStr; + OUString aLayoutStr; + OUString aLayoutWriterStr; + OUString aLayoutCalcStr; + OUString aCalcStr; + sal_uInt16 nRememberSize; + + std::vector aSearchStrings; + std::vector aReplaceStrings; + + std::unique_ptr pImpl; + std::unique_ptr pSearchList; + std::unique_ptr pReplaceList; + std::unique_ptr pSearchItem; + + std::unique_ptr pSearchController; + std::unique_ptr pOptionsController; + std::unique_ptr pFamilyController; + + mutable TransliterationFlags + nTransliterationFlags; + + bool m_executingSubDialog = false; + + std::unique_ptr m_xSearchFrame; + std::unique_ptr m_xSearchLB; + std::unique_ptr m_xSearchTmplLB; + std::unique_ptr m_xSearchAttrText; + std::unique_ptr m_xSearchLabel; + + std::unique_ptr m_xReplaceFrame; + std::unique_ptr m_xReplaceLB; + std::unique_ptr m_xReplaceTmplLB; + std::unique_ptr m_xReplaceAttrText; + + std::unique_ptr m_xSearchBtn; + std::unique_ptr m_xBackSearchBtn; + std::unique_ptr m_xSearchAllBtn; + std::unique_ptr m_xReplaceBtn; + std::unique_ptr m_xReplaceAllBtn; + + std::unique_ptr m_xComponentFrame; + std::unique_ptr m_xSearchComponent1PB; + std::unique_ptr m_xSearchComponent2PB; + + std::unique_ptr m_xMatchCaseCB; + std::unique_ptr m_xSearchFormattedCB; + std::unique_ptr m_xWordBtn; + + std::unique_ptr m_xCloseBtn; + std::unique_ptr m_xIncludeDiacritics; + std::unique_ptr m_xIncludeKashida; + std::unique_ptr m_xOtherOptionsExpander; + std::unique_ptr m_xSelectionBtn; + std::unique_ptr m_xRegExpBtn; + std::unique_ptr m_xWildcardBtn; + std::unique_ptr m_xSimilarityBox; + std::unique_ptr m_xSimilarityBtn; + std::unique_ptr m_xLayoutBtn; + std::unique_ptr m_xNotesBtn; + std::unique_ptr m_xJapMatchFullHalfWidthCB; + std::unique_ptr m_xJapOptionsCB; + std::unique_ptr m_xReplaceBackwardsCB; + std::unique_ptr m_xJapOptionsBtn; + + std::unique_ptr m_xAttributeBtn; + std::unique_ptr m_xFormatBtn; + std::unique_ptr m_xNoFormatBtn; + + std::unique_ptr m_xCalcGrid; + std::unique_ptr m_xCalcSearchInFT; + std::unique_ptr m_xCalcSearchInLB; + std::unique_ptr m_xCalcSearchDirFT; + std::unique_ptr m_xRowsBtn; + std::unique_ptr m_xColumnsBtn; + std::unique_ptr m_xAllSheetsCB; + std::unique_ptr m_xCalcStrFT; + + DECL_DLLPRIVATE_LINK( ModifyHdl_Impl, weld::ComboBox&, void ); + DECL_DLLPRIVATE_LINK( FlagHdl_Impl, weld::Toggleable&, void ); + DECL_DLLPRIVATE_LINK( CommandHdl_Impl, weld::Button&, void ); + DECL_DLLPRIVATE_LINK(TemplateHdl_Impl, weld::Toggleable&, void); + DECL_DLLPRIVATE_LINK( FocusHdl_Impl, weld::Widget&, void ); + DECL_DLLPRIVATE_LINK( LBSelectHdl_Impl, weld::ComboBox&, void ); + DECL_DLLPRIVATE_LINK(LoseFocusHdl_Impl, weld::Widget&, void); + DECL_DLLPRIVATE_LINK(FormatHdl_Impl, weld::Button&, void); + DECL_DLLPRIVATE_LINK(NoFormatHdl_Impl, weld::Button&, void); + DECL_DLLPRIVATE_LINK(AttributeHdl_Impl, weld::Button&, void); + DECL_DLLPRIVATE_LINK( TimeoutHdl_Impl, Timer*, void ); + SVX_DLLPRIVATE void ClickHdl_Impl(const weld::Widget* pCtrl); + + SVX_DLLPRIVATE void Construct_Impl(); + SVX_DLLPRIVATE void InitControls_Impl(); + SVX_DLLPRIVATE void ShowOptionalControls_Impl(); + SVX_DLLPRIVATE void Init_Impl( bool bHasItemSet ); + SVX_DLLPRIVATE void InitAttrList_Impl( const SfxItemSet* pSSet, + const SfxItemSet* pRSet ); + SVX_DLLPRIVATE void Remember_Impl( const OUString &rStr, bool bSearch ); + SVX_DLLPRIVATE void PaintAttrText_Impl(); + SVX_DLLPRIVATE OUString& BuildAttrText_Impl( OUString& rStr, bool bSrchFlag ) const; + + SVX_DLLPRIVATE void TemplatesChanged_Impl( SfxStyleSheetBasePool& rPool ); + SVX_DLLPRIVATE void EnableControls_Impl( const SearchOptionFlags nFlags ); + SVX_DLLPRIVATE void EnableControl_Impl(const weld::Widget& rCtrl); + SVX_DLLPRIVATE void SetItem_Impl( const SvxSearchItem* pItem ); + + SVX_DLLPRIVATE void SetModifyFlag_Impl(const weld::Widget* pCtrl); + SVX_DLLPRIVATE void SaveToModule_Impl(); + + SVX_DLLPRIVATE void ApplyTransliterationFlags_Impl( TransliterationFlags nSettings ); + SVX_DLLPRIVATE bool IsOtherOptionsExpanded() const; + + SVX_DLLPRIVATE short executeSubDialog(VclAbstractDialog * dialog); + + DECL_DLLPRIVATE_LINK(PresentTimeoutHdl_Impl, Timer*, void); +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3