blob: 37846fd1fff6bd2185fca15fe36dc6e5a1cacdde [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SVX_SRCHDLG_HXX
#define _SVX_SRCHDLG_HXX
// include ---------------------------------------------------------------
#include <svtools/stdctrl.hxx>
#include <vcl/combobox.hxx>
#include <vcl/edit.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/button.hxx>
#include <vcl/group.hxx>
#include <vcl/fixed.hxx>
#include <vcl/dialog.hxx>
#include <sfx2/childwin.hxx>
#include <sfx2/basedlgs.hxx>
#include <svl/svarray.hxx>
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#include <svtools/svmedit.hxx>
#include <svl/srchdefs.hxx>
#include "svx/svxdllapi.h"
// forward ---------------------------------------------------------------
class SvxSearchItem;
class MoreButton;
class SfxStyleSheetBasePool;
class SvxJSearchOptionsPage;
class SvxSearchController;
struct SearchDlg_Impl;
#ifndef NO_SVX_SEARCH
// struct SearchAttrItem -------------------------------------------------
struct SearchAttrItem
{
sal_uInt16 nSlot;
SfxPoolItem* pItem;
};
// class SearchAttrItemList ----------------------------------------------
SV_DECL_VARARR_VISIBILITY(SrchAttrItemList, SearchAttrItem, 8, 8, SVX_DLLPUBLIC)
class SVX_DLLPUBLIC SearchAttrItemList : private SrchAttrItemList
{
public:
SearchAttrItemList() {}
SearchAttrItemList( const SearchAttrItemList& rList );
~SearchAttrItemList();
void Put( const SfxItemSet& rSet );
SfxItemSet& Get( SfxItemSet& rSet );
void Clear();
sal_uInt16 Count() const { return SrchAttrItemList::Count(); }
SearchAttrItem& operator[](sal_uInt16 nPos) const
{ return SrchAttrItemList::operator[]( nPos ); }
SearchAttrItem& GetObject( sal_uInt16 nPos ) const
{ return SrchAttrItemList::GetObject( nPos ); }
// der Pointer auf das Item wird nicht kopiert!!! (also nicht l"oschen)
void Insert( const SearchAttrItem& rItem )
{ SrchAttrItemList::Insert( rItem, SrchAttrItemList::Count() ); }
// l"oscht die Pointer auf die Items
void Remove( sal_uInt16 nPos, sal_uInt16 nLen = 1 );
};
#ifndef SV_NODIALOG
// class SvxSearchDialogWrapper ------------------------------------------
#include <sfx2/layout.hxx>
#include <sfx2/layout-pre.hxx>
class SvxSearchDialog;
class SVX_DLLPUBLIC SvxSearchDialogWrapper : public SfxChildWindow
{
SvxSearchDialog *dialog;
public:
SvxSearchDialogWrapper( Window*pParent, sal_uInt16 nId,
SfxBindings* pBindings, SfxChildWinInfo* pInfo );
~SvxSearchDialogWrapper ();
SvxSearchDialog *getDialog ();
SFX_DECL_CHILDWINDOW(SvxSearchDialogWrapper);
};
// class SvxSearchDialog -------------------------------------------------
/*
{k:\svx\prototyp\dialog\svx/srchdlg.hxx}
[Beschreibung]
In diesem Modeless-Dialog werden die Attribute einer Suche eingestellt
und damit eine Suche gestartet. Es sind mehrere Sucharten
( Suchen, Alle suchen, Ersetzen, Alle ersetzen ) m"oglich.
[Items]
<SvxSearchItem><SID_ATTR_SEARCH>
*/
class SvxSearchDialog : public SfxModelessDialog
{
friend class SvxSearchController;
friend class SvxSearchDialogWrapper;
friend class SvxJSearchOptionsDialog;
public:
SvxSearchDialog( Window* pParent, SfxBindings& rBind );
SvxSearchDialog( Window* pParent, SfxChildWindow* pChildWin, SfxBindings& rBind );
~SvxSearchDialog();
virtual sal_Bool Close();
// Window
virtual void Activate();
void GetSearchItems( SfxItemSet& rSet );
void GetReplaceItems( SfxItemSet& rSet );
const SearchAttrItemList* GetSearchItemList() const
{ return pSearchList; }
const SearchAttrItemList* GetReplaceItemList() const
{ return pReplaceList; }
inline sal_Bool HasSearchAttributes() const;
inline sal_Bool HasReplaceAttributes() const;
PushButton& GetReplaceBtn() { return aReplaceBtn; }
sal_Int32 GetTransliterationFlags() const;
void SetDocWin( Window* pDocWin ) { mpDocWin = pDocWin; }
Window* GetDocWin() { return mpDocWin; }
void SetSrchFlag( sal_Bool bSuccess = sal_False ) { mbSuccess = bSuccess; }
sal_Bool GetSrchFlag() { return mbSuccess; }
virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >
GetComponentInterface( sal_Bool bCreate );
private:
Window* mpDocWin;
sal_Bool mbSuccess;
FixedText aSearchText;
ComboBox aSearchLB;
ListBox aSearchTmplLB;
FixedInfo aSearchAttrText;
FixedText aReplaceText;
ComboBox aReplaceLB;
ListBox aReplaceTmplLB;
FixedInfo aReplaceAttrText;
PushButton aSearchBtn;
PushButton aSearchAllBtn;
FixedLine aSearchCmdLine;
PushButton aReplaceBtn;
PushButton aReplaceAllBtn;
FixedLine aSearchComponentFL;
PushButton aSearchComponent1PB;
PushButton aSearchComponent2PB;
CheckBox aMatchCaseCB;
CheckBox aWordBtn;
FixedLine aButtonsFL;
MoreButton* pMoreBtn;
HelpButton aHelpBtn;
CancelButton aCloseBtn;
FixedLine aOptionsFL;
CheckBox aSelectionBtn;
CheckBox aBackwardsBtn;
CheckBox aRegExpBtn;
CheckBox aSimilarityBox;
PushButton aSimilarityBtn;
CheckBox aLayoutBtn;
CheckBox aNotesBtn;
CheckBox aJapMatchFullHalfWidthCB;
CheckBox aJapOptionsCB;
PushButton aJapOptionsBtn;
PushButton aAttributeBtn;
PushButton aFormatBtn;
PushButton aNoFormatBtn;
FixedLine aCalcFL;
FixedText aCalcSearchInFT;
ListBox aCalcSearchInLB;
FixedText aCalcSearchDirFT;
RadioButton aRowsBtn;
RadioButton aColumnsBtn;
CheckBox aAllSheetsCB;
SfxBindings& rBindings;
sal_Bool bWriter;
sal_Bool bSearch;
sal_Bool bFormat;
sal_uInt16 nOptions;
FASTBOOL bSet;
FASTBOOL bReadOnly;
FASTBOOL bConstruct;
sal_uIntPtr nModifyFlag;
String aStylesStr;
String aLayoutStr;
LocalizedString aCalcStr;
SvStringsDtor aSearchStrings;
SvStringsDtor aReplaceStrings;
SearchDlg_Impl* pImpl;
SearchAttrItemList* pSearchList;
SearchAttrItemList* pReplaceList;
SvxSearchItem* pSearchItem;
SvxSearchController* pSearchController;
SvxSearchController* pOptionsController;
SvxSearchController* pFamilyController;
SvxSearchController* pSearchSetController;
SvxSearchController* pReplaceSetController;
mutable sal_Int32 nTransliterationFlags;
#ifdef _SVX_SRCHDLG_CXX
DECL_LINK( ModifyHdl_Impl, ComboBox* pEdit );
DECL_LINK( FlagHdl_Impl, Control* pCtrl );
DECL_LINK( CommandHdl_Impl, Button* pBtn );
DECL_LINK( TemplateHdl_Impl, Button* );
DECL_LINK( FocusHdl_Impl, Control* );
DECL_LINK( LoseFocusHdl_Impl, Control* );
DECL_LINK( FormatHdl_Impl, Button* );
DECL_LINK( NoFormatHdl_Impl, Button* );
DECL_LINK( AttributeHdl_Impl, Button* );
DECL_LINK( TimeoutHdl_Impl, Timer* );
void Construct_Impl();
void InitControls_Impl();
void CalculateDelta_Impl();
void Init_Impl( int bHasItemSet );
void InitAttrList_Impl( const SfxItemSet* pSSet,
const SfxItemSet* pRSet );
void Remember_Impl( const String &rStr,sal_Bool bSearch );
void PaintAttrText_Impl();
String& BuildAttrText_Impl( String& rStr, sal_Bool bSrchFlag ) const;
void TemplatesChanged_Impl( SfxStyleSheetBasePool& rPool );
void EnableControls_Impl( const sal_uInt16 nFlags );
void EnableControl_Impl( Control* pCtrl );
void SetItem_Impl( const SvxSearchItem* pItem );
void SetModifyFlag_Impl( const Control* pCtrl );
void SaveToModule_Impl();
void ApplyTransliterationFlags_Impl( sal_Int32 nSettings );
#endif
};
#include <sfx2/layout-post.hxx>
inline sal_Bool SvxSearchDialog::HasSearchAttributes() const
{
int bLen = aSearchAttrText.GetText().Len();
return ( aSearchAttrText.IsEnabled() && bLen );
}
inline sal_Bool SvxSearchDialog::HasReplaceAttributes() const
{
int bLen = aReplaceAttrText.GetText().Len();
return ( aReplaceAttrText.IsEnabled() && bLen );
}
//////////////////////////////////////////////////////////////////////
#endif // SV_NODIALOG
#endif // NO_SVX_SEARCH
#endif