1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23 #ifndef _SFX_SRCHITEM_HXX
24 #define _SFX_SRCHITEM_HXX
25
26 #include "sal/config.h"
27 #include "svl/svldllapi.h"
28 #include <com/sun/star/util/XSearchDescriptor.hpp>
29 #include <com/sun/star/util/SearchOptions.hpp>
30 #include <com/sun/star/util/SearchFlags.hpp>
31 #include <com/sun/star/i18n/TransliterationModules.hpp>
32 #include <unotools/configitem.hxx>
33 #include <rsc/rscsfx.hxx>
34 #include <tools/string.hxx>
35 #include <svl/poolitem.hxx>
36 #include <svl/srchdefs.hxx>
37
38 // defines ---------------------------------------------------------------
39
40 // commands
41 #define SVX_SEARCHCMD_FIND ((sal_uInt16)0)
42 #define SVX_SEARCHCMD_FIND_ALL ((sal_uInt16)1)
43 #define SVX_SEARCHCMD_REPLACE ((sal_uInt16)2)
44 #define SVX_SEARCHCMD_REPLACE_ALL ((sal_uInt16)3)
45
46 // search flags
47 #define SVX_SEARCHIN_FORMULA ((sal_uInt16)0)
48 #define SVX_SEARCHIN_VALUE ((sal_uInt16)1)
49 #define SVX_SEARCHIN_NOTE ((sal_uInt16)2)
50 #define SVX_SEARCHAPP_WRITER ((sal_uInt16)0)
51 #define SVX_SEARCHAPP_CALC ((sal_uInt16)1)
52 #define SVX_SEARCHAPP_DRAW ((sal_uInt16)2)
53 #define SVX_SEARCHAPP_BASE ((sal_uInt16)3)
54
55 // class SvxSearchItem ---------------------------------------------------
56
57 class SVL_DLLPUBLIC SvxSearchItem :
58 public SfxPoolItem,
59 public utl::ConfigItem
60 {
61 com::sun::star::util::SearchOptions aSearchOpt;
62
63 SfxStyleFamily eFamily; // Vorlagen-Familie
64
65 sal_uInt16 nCommand; // Kommando (Suchen, Alle Suchen, Ersetzen, Alle Ersetzen)
66
67 // Calc-Spezifische Daten
68 sal_uInt16 nCellType; // Suche in Formeln/Werten/Notizen
69 sal_uInt16 nAppFlag; // Fuer welche Applikation ist der Dialog ueberhaupt
70 sal_Bool bRowDirection; // Suchrichtung Zeilenweise/Spaltenweise
71 sal_Bool bAllTables; // in alle Tabellen suchen
72
73 // Writer-spezifisch
74 sal_Bool bNotes;
75
76 sal_Bool bBackward; // Suche Rueckwaerts
77 sal_Bool bPattern; // Suche nach Vorlagen
78 sal_Bool bContent; // Suche im Inhalt
79 sal_Bool bAsianOptions; // use asian options?
80
81 public:
82 TYPEINFO();
83
84 SvxSearchItem( const sal_uInt16 nId );
85 SvxSearchItem( const SvxSearchItem& rItem );
86 virtual ~SvxSearchItem();
87
88 virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const;
89 virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 );
90 virtual int operator == ( const SfxPoolItem& ) const;
91 virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
92 virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
93 SfxMapUnit eCoreMetric,
94 SfxMapUnit ePresMetric,
95 String &rText, const IntlWrapper * = 0 ) const;
96
97 // ConfigItem
98 virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames );
99 virtual void Commit();
100
GetCommand() const101 sal_uInt16 GetCommand() const { return nCommand; }
SetCommand(sal_uInt16 nNewCommand)102 void SetCommand(sal_uInt16 nNewCommand) { nCommand = nNewCommand; }
103
104 inline const String GetSearchString() const;
105 inline void SetSearchString(const String& rNewString);
106
107 inline const String GetReplaceString() const;
108 inline void SetReplaceString(const String& rNewString);
109
110 inline sal_Bool GetWordOnly() const;
111 void SetWordOnly(sal_Bool bNewWordOnly);
112
113 inline sal_Bool GetExact() const;
114 void SetExact(sal_Bool bNewExact);
115
GetBackward() const116 sal_Bool GetBackward() const { return bBackward; }
SetBackward(sal_Bool bNewBackward)117 void SetBackward(sal_Bool bNewBackward) { bBackward = bNewBackward; }
118
119 inline sal_Bool GetSelection() const;
120 void SetSelection(sal_Bool bNewSelection);
121
122 inline sal_Bool GetRegExp() const;
123 void SetRegExp( sal_Bool bVal );
124
GetPattern() const125 sal_Bool GetPattern() const { return bPattern; }
SetPattern(sal_Bool bNewPattern)126 void SetPattern(sal_Bool bNewPattern) { bPattern = bNewPattern; }
127
IsContent() const128 sal_Bool IsContent() const { return bContent; }
SetContent(sal_Bool bNew)129 void SetContent( sal_Bool bNew ) { bContent = bNew; }
130
GetFamily() const131 SfxStyleFamily GetFamily() const { return eFamily; }
SetFamily(SfxStyleFamily eNewFamily)132 void SetFamily( SfxStyleFamily eNewFamily )
133 { eFamily = eNewFamily; }
134
GetRowDirection() const135 sal_Bool GetRowDirection() const { return bRowDirection; }
SetRowDirection(sal_Bool bNewRowDirection)136 void SetRowDirection(sal_Bool bNewRowDirection) { bRowDirection = bNewRowDirection; }
137
IsAllTables() const138 sal_Bool IsAllTables() const { return bAllTables; }
SetAllTables(sal_Bool bNew)139 void SetAllTables(sal_Bool bNew) { bAllTables = bNew; }
140
GetCellType() const141 sal_uInt16 GetCellType() const { return nCellType; }
SetCellType(sal_uInt16 nNewCellType)142 void SetCellType(sal_uInt16 nNewCellType) { nCellType = nNewCellType; }
143
GetNotes() const144 sal_Bool GetNotes() const { return bNotes; }
SetNotes(sal_Bool bNew)145 void SetNotes(sal_Bool bNew) { bNotes = bNew; }
146
GetAppFlag() const147 sal_uInt16 GetAppFlag() const { return nAppFlag; }
SetAppFlag(sal_uInt16 nNewAppFlag)148 void SetAppFlag(sal_uInt16 nNewAppFlag) { nAppFlag = nNewAppFlag; }
149
150 inline sal_Bool IsLevenshtein() const;
151 void SetLevenshtein( sal_Bool bVal );
152
153 inline sal_Bool IsLEVRelaxed() const;
154 void SetLEVRelaxed(sal_Bool bSet);
155
156 inline sal_uInt16 GetLEVOther() const;
157 inline void SetLEVOther(sal_uInt16 nSet);
158
159 inline sal_uInt16 GetLEVShorter() const;
160 inline void SetLEVShorter(sal_uInt16 nSet);
161
162 inline sal_uInt16 GetLEVLonger() const;
163 inline void SetLEVLonger(sal_uInt16 nSet);
164
165 void GetFromDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr );
166 void SetToDescriptor( ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr );
167
168 inline const com::sun::star::util::SearchOptions &
169 GetSearchOptions() const;
170 inline void SetSearchOptions( const com::sun::star::util::SearchOptions &rOpt );
171
172 inline sal_Int32 GetTransliterationFlags() const;
173 void SetTransliterationFlags( sal_Int32 nFlags );
174
175 inline sal_Bool IsMatchFullHalfWidthForms() const;
176 void SetMatchFullHalfWidthForms( sal_Bool bVal );
177
IsUseAsianOptions() const178 inline sal_Bool IsUseAsianOptions() const { return bAsianOptions; }
SetUseAsianOptions(sal_Bool bVal)179 inline void SetUseAsianOptions( sal_Bool bVal ) { bAsianOptions = bVal; }
180 };
181
GetSearchString() const182 const String SvxSearchItem::GetSearchString() const
183 {
184 return aSearchOpt.searchString;
185 }
186
SetSearchString(const String & rNewString)187 void SvxSearchItem::SetSearchString(const String& rNewString)
188 {
189 aSearchOpt.searchString = rNewString;
190 }
191
GetReplaceString() const192 const String SvxSearchItem::GetReplaceString() const
193 {
194 return aSearchOpt.replaceString;
195 }
196
SetReplaceString(const String & rNewString)197 void SvxSearchItem::SetReplaceString(const String& rNewString)
198 {
199 aSearchOpt.replaceString = rNewString;
200 }
201
GetWordOnly() const202 sal_Bool SvxSearchItem::GetWordOnly() const
203 {
204 return 0 != (aSearchOpt.searchFlag &
205 com::sun::star::util::SearchFlags::NORM_WORD_ONLY);
206 }
207
GetExact() const208 sal_Bool SvxSearchItem::GetExact() const
209 {
210 return 0 == (aSearchOpt.transliterateFlags &
211 com::sun::star::i18n::TransliterationModules_IGNORE_CASE);
212 }
213
GetSelection() const214 sal_Bool SvxSearchItem::GetSelection() const
215 {
216 return 0 != (aSearchOpt.searchFlag &
217 com::sun::star::util::SearchFlags::REG_NOT_BEGINOFLINE);
218 }
219
GetRegExp() const220 sal_Bool SvxSearchItem::GetRegExp() const
221 {
222 return aSearchOpt.algorithmType == com::sun::star::util::SearchAlgorithms_REGEXP ;
223 }
224
IsLEVRelaxed() const225 sal_Bool SvxSearchItem::IsLEVRelaxed() const
226 {
227 return 0 != (aSearchOpt.searchFlag &
228 com::sun::star::util::SearchFlags::LEV_RELAXED);
229 }
230
GetLEVOther() const231 sal_uInt16 SvxSearchItem::GetLEVOther() const
232 {
233 return (sal_Int16) aSearchOpt.changedChars;
234 }
235
SetLEVOther(sal_uInt16 nVal)236 void SvxSearchItem::SetLEVOther( sal_uInt16 nVal )
237 {
238 aSearchOpt.changedChars = nVal;
239 }
240
GetLEVShorter() const241 sal_uInt16 SvxSearchItem::GetLEVShorter() const
242 {
243 return (sal_Int16) aSearchOpt.insertedChars;
244 }
245
SetLEVShorter(sal_uInt16 nVal)246 void SvxSearchItem::SetLEVShorter( sal_uInt16 nVal )
247 {
248 aSearchOpt.insertedChars = nVal;
249 }
250
GetLEVLonger() const251 sal_uInt16 SvxSearchItem::GetLEVLonger() const
252 {
253 return (sal_Int16) aSearchOpt.deletedChars;
254 }
255
SetLEVLonger(sal_uInt16 nVal)256 void SvxSearchItem::SetLEVLonger( sal_uInt16 nVal )
257 {
258 aSearchOpt.deletedChars = nVal;
259 }
260
IsLevenshtein() const261 sal_Bool SvxSearchItem::IsLevenshtein() const
262 {
263 return aSearchOpt.algorithmType == com::sun::star::util::SearchAlgorithms_APPROXIMATE;
264 }
265
GetSearchOptions() const266 const com::sun::star::util::SearchOptions & SvxSearchItem::GetSearchOptions() const
267 {
268 return aSearchOpt;
269 }
270
SetSearchOptions(const com::sun::star::util::SearchOptions & rOpt)271 void SvxSearchItem::SetSearchOptions( const com::sun::star::util::SearchOptions &rOpt )
272 {
273 aSearchOpt = rOpt;
274 }
275
GetTransliterationFlags() const276 sal_Int32 SvxSearchItem::GetTransliterationFlags() const
277 {
278 return aSearchOpt.transliterateFlags;
279 }
280
IsMatchFullHalfWidthForms() const281 sal_Bool SvxSearchItem::IsMatchFullHalfWidthForms() const
282 {
283 return 0 != (aSearchOpt.transliterateFlags &
284 com::sun::star::i18n::TransliterationModules_IGNORE_WIDTH);
285 }
286
287 #endif
288
289
290