Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <svl/srchitem.hxx>
21 : #include <sal/macros.h>
22 :
23 : #include <unotools/searchopt.hxx>
24 : #include <com/sun/star/util/XReplaceable.hpp>
25 : #include <com/sun/star/util/XSearchable.hpp>
26 : #include <com/sun/star/util/XSearchDescriptor.hpp>
27 : #include <com/sun/star/util/XPropertyReplace.hpp>
28 : #include <com/sun/star/util/XReplaceDescriptor.hpp>
29 : #include <com/sun/star/lang/Locale.hpp>
30 : #include <svl/memberid.hrc>
31 : #include <i18nlangtag/languagetag.hxx>
32 : #include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
33 :
34 : using namespace utl;
35 : using namespace com::sun::star::beans;
36 : using namespace com::sun::star::i18n;
37 : using namespace com::sun::star::lang;
38 : using namespace com::sun::star::uno;
39 : using namespace com::sun::star::util;
40 :
41 : #define CFG_ROOT_NODE "Office.Common/SearchOptions"
42 :
43 : #define SRCH_PARAMS 12
44 : #define SRCH_PARA_OPTIONS "Options"
45 : #define SRCH_PARA_FAMILY "Family"
46 : #define SRCH_PARA_COMMAND "Command"
47 : #define SRCH_PARA_CELLTYPE "CellType"
48 : #define SRCH_PARA_APPFLAG "AppFlag"
49 : #define SRCH_PARA_ROWDIR "RowDirection"
50 : #define SRCH_PARA_ALLTABLES "AllTables"
51 : #define SRCH_PARA_SEARCHFILTERED "SearchFiltered"
52 : #define SRCH_PARA_BACKWARD "Backward"
53 : #define SRCH_PARA_PATTERN "Pattern"
54 : #define SRCH_PARA_CONTENT "Content"
55 : #define SRCH_PARA_ASIANOPT "AsianOptions"
56 :
57 : // STATIC DATA -----------------------------------------------------------
58 :
59 102 : TYPEINIT1_FACTORY(SvxSearchItem, SfxPoolItem, new SvxSearchItem(0));
60 :
61 : // -----------------------------------------------------------------------
62 :
63 138 : static Sequence< OUString > lcl_GetNotifyNames()
64 : {
65 : // names of transliteration relevant properties
66 : static const char* aTranslitNames[] =
67 : {
68 : "IsMatchCase", // 0
69 : "Japanese/IsMatchFullHalfWidthForms", // 1
70 : "Japanese/IsMatchHiraganaKatakana", // 2
71 : "Japanese/IsMatchContractions", // 3
72 : "Japanese/IsMatchMinusDashCho-on", // 4
73 : "Japanese/IsMatchRepeatCharMarks", // 5
74 : "Japanese/IsMatchVariantFormKanji", // 6
75 : "Japanese/IsMatchOldKanaForms", // 7
76 : "Japanese/IsMatch_DiZi_DuZu", // 8
77 : "Japanese/IsMatch_BaVa_HaFa", // 9
78 : "Japanese/IsMatch_TsiThiChi_DhiZi", // 10
79 : "Japanese/IsMatch_HyuIyu_ByuVyu", // 11
80 : "Japanese/IsMatch_SeShe_ZeJe", // 12
81 : "Japanese/IsMatch_IaIya", // 13
82 : "Japanese/IsMatch_KiKu", // 14
83 : "Japanese/IsIgnorePunctuation", // 15
84 : "Japanese/IsIgnoreWhitespace", // 16
85 : "Japanese/IsIgnoreProlongedSoundMark", // 17
86 : "Japanese/IsIgnoreMiddleDot", // 18
87 : "IsIgnoreDiacritics_CTL" // 19
88 : };
89 :
90 138 : const int nCount = SAL_N_ELEMENTS( aTranslitNames );
91 138 : Sequence< OUString > aNames( nCount );
92 138 : OUString* pNames = aNames.getArray();
93 2898 : for (sal_Int32 i = 0; i < nCount; ++i)
94 2760 : pNames[i] = OUString::createFromAscii( aTranslitNames[i] );
95 :
96 138 : return aNames;
97 : }
98 :
99 : // -----------------------------------------------------------------------
100 80 : SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) :
101 :
102 : SfxPoolItem( nId ),
103 : ConfigItem( OUString(CFG_ROOT_NODE ) ),
104 :
105 : aSearchOpt ( SearchAlgorithms_ABSOLUTE,
106 : SearchFlags::LEV_RELAXED,
107 : OUString(),
108 : OUString(),
109 : Locale(),
110 : 2, 2, 2,
111 : TransliterationModules_IGNORE_CASE ),
112 : eFamily ( SFX_STYLE_FAMILY_PARA ),
113 : nCommand ( 0 ),
114 : nCellType ( SVX_SEARCHIN_FORMULA ),
115 : nAppFlag ( SVX_SEARCHAPP_WRITER ),
116 : bRowDirection ( sal_True ),
117 : bAllTables ( sal_False ),
118 : bSearchFiltered ( sal_False ),
119 : bNotes ( sal_False),
120 : bBackward ( sal_False ),
121 : bPattern ( sal_False ),
122 : bContent ( sal_False ),
123 80 : bAsianOptions ( sal_False )
124 : {
125 80 : EnableNotification( lcl_GetNotifyNames() );
126 :
127 80 : SvtSearchOptions aOpt;
128 :
129 80 : bBackward = aOpt.IsBackwards();
130 80 : bAsianOptions = aOpt.IsUseAsianOptions();
131 80 : bNotes = aOpt.IsNotes();
132 :
133 80 : if (aOpt.IsUseRegularExpression())
134 0 : aSearchOpt.algorithmType = SearchAlgorithms_REGEXP;
135 80 : if (aOpt.IsSimilaritySearch())
136 0 : aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE;
137 80 : if (aOpt.IsWholeWordsOnly())
138 0 : aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY;
139 :
140 80 : sal_Int32 &rFlags = aSearchOpt.transliterateFlags;
141 :
142 80 : if (!aOpt.IsMatchCase())
143 80 : rFlags |= TransliterationModules_IGNORE_CASE;
144 80 : if ( aOpt.IsMatchFullHalfWidthForms())
145 80 : rFlags |= TransliterationModules_IGNORE_WIDTH;
146 80 : if ( aOpt.IsIgnoreDiacritics_CTL())
147 80 : rFlags |= TransliterationModulesExtra::ignoreDiacritics_CTL ;
148 80 : if ( bAsianOptions )
149 : {
150 0 : if ( aOpt.IsMatchHiraganaKatakana())
151 0 : rFlags |= TransliterationModules_IGNORE_KANA;
152 0 : if ( aOpt.IsMatchContractions())
153 0 : rFlags |= TransliterationModules_ignoreSize_ja_JP;
154 0 : if ( aOpt.IsMatchMinusDashChoon())
155 0 : rFlags |= TransliterationModules_ignoreMinusSign_ja_JP;
156 0 : if ( aOpt.IsMatchRepeatCharMarks())
157 0 : rFlags |= TransliterationModules_ignoreIterationMark_ja_JP;
158 0 : if ( aOpt.IsMatchVariantFormKanji())
159 0 : rFlags |= TransliterationModules_ignoreTraditionalKanji_ja_JP;
160 0 : if ( aOpt.IsMatchOldKanaForms())
161 0 : rFlags |= TransliterationModules_ignoreTraditionalKana_ja_JP;
162 0 : if ( aOpt.IsMatchDiziDuzu())
163 0 : rFlags |= TransliterationModules_ignoreZiZu_ja_JP;
164 0 : if ( aOpt.IsMatchBavaHafa())
165 0 : rFlags |= TransliterationModules_ignoreBaFa_ja_JP;
166 0 : if ( aOpt.IsMatchTsithichiDhizi())
167 0 : rFlags |= TransliterationModules_ignoreTiJi_ja_JP;
168 0 : if ( aOpt.IsMatchHyuiyuByuvyu())
169 0 : rFlags |= TransliterationModules_ignoreHyuByu_ja_JP;
170 0 : if ( aOpt.IsMatchSesheZeje())
171 0 : rFlags |= TransliterationModules_ignoreSeZe_ja_JP;
172 0 : if ( aOpt.IsMatchIaiya())
173 0 : rFlags |= TransliterationModules_ignoreIandEfollowedByYa_ja_JP;
174 0 : if ( aOpt.IsMatchKiku())
175 0 : rFlags |= TransliterationModules_ignoreKiKuFollowedBySa_ja_JP;
176 0 : if ( aOpt.IsIgnorePunctuation())
177 0 : rFlags |= TransliterationModules_ignoreSeparator_ja_JP;
178 0 : if ( aOpt.IsIgnoreWhitespace())
179 0 : rFlags |= TransliterationModules_ignoreSpace_ja_JP;
180 0 : if ( aOpt.IsIgnoreProlongedSoundMark())
181 0 : rFlags |= TransliterationModules_ignoreProlongedSoundMark_ja_JP;
182 0 : if ( aOpt.IsIgnoreMiddleDot())
183 0 : rFlags |= TransliterationModules_ignoreMiddleDot_ja_JP;
184 80 : }
185 :
186 80 : }
187 :
188 : // -----------------------------------------------------------------------
189 :
190 58 : SvxSearchItem::SvxSearchItem( const SvxSearchItem& rItem ) :
191 :
192 : SfxPoolItem ( rItem ),
193 : ConfigItem( OUString(CFG_ROOT_NODE ) ),
194 :
195 : aSearchOpt ( rItem.aSearchOpt ),
196 : eFamily ( rItem.eFamily ),
197 : nCommand ( rItem.nCommand ),
198 : nCellType ( rItem.nCellType ),
199 : nAppFlag ( rItem.nAppFlag ),
200 : bRowDirection ( rItem.bRowDirection ),
201 : bAllTables ( rItem.bAllTables ),
202 : bSearchFiltered ( rItem.bSearchFiltered ),
203 : bNotes ( rItem.bNotes),
204 : bBackward ( rItem.bBackward ),
205 : bPattern ( rItem.bPattern ),
206 : bContent ( rItem.bContent ),
207 58 : bAsianOptions ( rItem.bAsianOptions )
208 : {
209 58 : EnableNotification( lcl_GetNotifyNames() );
210 58 : }
211 :
212 : // -----------------------------------------------------------------------
213 :
214 192 : SvxSearchItem::~SvxSearchItem()
215 : {
216 192 : }
217 :
218 : // -----------------------------------------------------------------------
219 18 : SfxPoolItem* SvxSearchItem::Clone( SfxItemPool *) const
220 : {
221 18 : return new SvxSearchItem(*this);
222 : }
223 :
224 : // -----------------------------------------------------------------------
225 :
226 : //! used below
227 0 : static bool operator == ( const SearchOptions& rItem1, const SearchOptions& rItem2 )
228 : {
229 0 : return rItem1.algorithmType == rItem2.algorithmType &&
230 0 : rItem1.searchFlag == rItem2.searchFlag &&
231 0 : rItem1.searchString == rItem2.searchString &&
232 0 : rItem1.replaceString == rItem2.replaceString &&
233 : //rItem1.Locale == rItem2.Locale &&
234 0 : rItem1.changedChars == rItem2.changedChars &&
235 0 : rItem1.deletedChars == rItem2.deletedChars &&
236 0 : rItem1.insertedChars == rItem2.insertedChars &&
237 0 : rItem1.transliterateFlags == rItem2.transliterateFlags;
238 : }
239 :
240 :
241 0 : int SvxSearchItem::operator==( const SfxPoolItem& rItem ) const
242 : {
243 : DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal which or type" );
244 0 : const SvxSearchItem &rSItem = (SvxSearchItem &) rItem;
245 0 : return ( nCommand == rSItem.nCommand ) &&
246 0 : ( bBackward == rSItem.bBackward ) &&
247 0 : ( bPattern == rSItem.bPattern ) &&
248 0 : ( bContent == rSItem.bContent ) &&
249 0 : ( eFamily == rSItem.eFamily ) &&
250 0 : ( bRowDirection == rSItem.bRowDirection ) &&
251 0 : ( bAllTables == rSItem.bAllTables ) &&
252 0 : ( bSearchFiltered == rSItem.bSearchFiltered ) &&
253 0 : ( nCellType == rSItem.nCellType ) &&
254 0 : ( nAppFlag == rSItem.nAppFlag ) &&
255 0 : ( bAsianOptions == rSItem.bAsianOptions ) &&
256 0 : ( aSearchOpt == rSItem.aSearchOpt ) &&
257 0 : ( bNotes == rSItem.bNotes );
258 : }
259 :
260 :
261 : //------------------------------------------------------------------------
262 :
263 0 : SfxItemPresentation SvxSearchItem::GetPresentation
264 : (
265 : SfxItemPresentation ,
266 : SfxMapUnit ,
267 : SfxMapUnit ,
268 : OUString& ,
269 : const IntlWrapper *
270 : ) const
271 : {
272 0 : return SFX_ITEM_PRESENTATION_NONE;
273 : }
274 :
275 0 : void SvxSearchItem::Notify( const Sequence< OUString > & )
276 : {
277 : // applies transliteration changes in the configuration database
278 : // to the current SvxSearchItem
279 0 : SetTransliterationFlags( SvtSearchOptions().GetTransliterationFlags() );
280 0 : }
281 :
282 0 : void SvxSearchItem::Commit()
283 : {
284 0 : }
285 :
286 36 : void SvxSearchItem::SetMatchFullHalfWidthForms( bool bVal )
287 : {
288 36 : if (bVal)
289 0 : aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_WIDTH;
290 : else
291 36 : aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_WIDTH;
292 36 : }
293 :
294 :
295 51 : void SvxSearchItem::SetWordOnly( bool bVal )
296 : {
297 51 : if (bVal)
298 6 : aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY;
299 : else
300 45 : aSearchOpt.searchFlag &= ~SearchFlags::NORM_WORD_ONLY;
301 51 : }
302 :
303 :
304 56 : void SvxSearchItem::SetExact( bool bVal )
305 : {
306 56 : if (!bVal)
307 38 : aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_CASE;
308 : else
309 18 : aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_CASE;
310 56 : }
311 :
312 :
313 107 : void SvxSearchItem::SetSelection( bool bVal )
314 : {
315 107 : if (bVal)
316 : {
317 : aSearchOpt.searchFlag |= (SearchFlags::REG_NOT_BEGINOFLINE |
318 59 : SearchFlags::REG_NOT_ENDOFLINE);
319 : }
320 : else
321 : {
322 : aSearchOpt.searchFlag &= ~(SearchFlags::REG_NOT_BEGINOFLINE |
323 48 : SearchFlags::REG_NOT_ENDOFLINE);
324 : }
325 107 : }
326 :
327 :
328 57 : void SvxSearchItem::SetRegExp( bool bVal )
329 : {
330 57 : if ( bVal )
331 21 : aSearchOpt.algorithmType = SearchAlgorithms_REGEXP;
332 36 : else if ( SearchAlgorithms_REGEXP == aSearchOpt.algorithmType )
333 0 : aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE;
334 57 : }
335 :
336 :
337 39 : void SvxSearchItem::SetLEVRelaxed( bool bVal )
338 : {
339 39 : if (bVal)
340 2 : aSearchOpt.searchFlag |= SearchFlags::LEV_RELAXED;
341 : else
342 37 : aSearchOpt.searchFlag &= ~SearchFlags::LEV_RELAXED;
343 39 : }
344 :
345 :
346 39 : void SvxSearchItem::SetLevenshtein( bool bVal )
347 : {
348 39 : if ( bVal )
349 2 : aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE;
350 37 : else if ( SearchAlgorithms_APPROXIMATE == aSearchOpt.algorithmType )
351 1 : aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE;
352 39 : }
353 :
354 :
355 0 : void SvxSearchItem::SetTransliterationFlags( sal_Int32 nFlags )
356 : {
357 0 : aSearchOpt.transliterateFlags = nFlags;
358 0 : }
359 :
360 0 : bool SvxSearchItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
361 : {
362 0 : nMemberId &= ~CONVERT_TWIPS;
363 0 : switch ( nMemberId )
364 : {
365 : case 0 :
366 : {
367 0 : Sequence< PropertyValue > aSeq( SRCH_PARAMS );
368 0 : aSeq[0].Name = OUString( SRCH_PARA_OPTIONS );
369 0 : aSeq[0].Value <<= aSearchOpt;
370 0 : aSeq[1].Name = OUString( SRCH_PARA_FAMILY );
371 0 : aSeq[1].Value <<= sal_Int16( eFamily );
372 0 : aSeq[2].Name = OUString( SRCH_PARA_COMMAND );
373 0 : aSeq[2].Value <<= nCommand;
374 0 : aSeq[3].Name = OUString( SRCH_PARA_CELLTYPE );
375 0 : aSeq[3].Value <<= nCellType;
376 0 : aSeq[4].Name = OUString( SRCH_PARA_APPFLAG );
377 0 : aSeq[4].Value <<= nAppFlag;
378 0 : aSeq[5].Name = OUString( SRCH_PARA_ROWDIR );
379 0 : aSeq[5].Value <<= bRowDirection;
380 0 : aSeq[6].Name = OUString( SRCH_PARA_ALLTABLES );
381 0 : aSeq[6].Value <<= bAllTables;
382 0 : aSeq[6].Name = OUString( SRCH_PARA_SEARCHFILTERED );
383 0 : aSeq[6].Value <<= bSearchFiltered;
384 0 : aSeq[7].Name = OUString( SRCH_PARA_BACKWARD );
385 0 : aSeq[7].Value <<= bBackward;
386 0 : aSeq[8].Name = OUString( SRCH_PARA_PATTERN );
387 0 : aSeq[8].Value <<= bPattern;
388 0 : aSeq[9].Name = OUString( SRCH_PARA_CONTENT );
389 0 : aSeq[9].Value <<= bContent;
390 0 : aSeq[10].Name = OUString( SRCH_PARA_ASIANOPT );
391 0 : aSeq[10].Value <<= bAsianOptions;
392 0 : rVal <<= aSeq;
393 : }
394 0 : break;
395 : case MID_SEARCH_COMMAND:
396 0 : rVal <<= (sal_Int16) nCommand; break;
397 : case MID_SEARCH_STYLEFAMILY:
398 0 : rVal <<= (sal_Int16) eFamily; break;
399 : case MID_SEARCH_CELLTYPE:
400 0 : rVal <<= (sal_Int32) nCellType; break;
401 : case MID_SEARCH_ROWDIRECTION:
402 0 : rVal <<= (sal_Bool) bRowDirection; break;
403 : case MID_SEARCH_ALLTABLES:
404 0 : rVal <<= (sal_Bool) bAllTables; break;
405 : case MID_SEARCH_SEARCHFILTERED:
406 0 : rVal <<= (sal_Bool) bSearchFiltered; break;
407 : case MID_SEARCH_BACKWARD:
408 0 : rVal <<= (sal_Bool) bBackward; break;
409 : case MID_SEARCH_PATTERN:
410 0 : rVal <<= (sal_Bool) bPattern; break;
411 : case MID_SEARCH_CONTENT:
412 0 : rVal <<= (sal_Bool) bContent; break;
413 : case MID_SEARCH_ASIANOPTIONS:
414 0 : rVal <<= (sal_Bool) bAsianOptions; break;
415 : case MID_SEARCH_ALGORITHMTYPE:
416 0 : rVal <<= (sal_Int16) aSearchOpt.algorithmType; break;
417 : case MID_SEARCH_FLAGS:
418 0 : rVal <<= aSearchOpt.searchFlag; break;
419 : case MID_SEARCH_SEARCHSTRING:
420 0 : rVal <<= aSearchOpt.searchString; break;
421 : case MID_SEARCH_REPLACESTRING:
422 0 : rVal <<= aSearchOpt.replaceString; break;
423 : case MID_SEARCH_CHANGEDCHARS:
424 0 : rVal <<= aSearchOpt.changedChars; break;
425 : case MID_SEARCH_DELETEDCHARS:
426 0 : rVal <<= aSearchOpt.deletedChars; break;
427 : case MID_SEARCH_INSERTEDCHARS:
428 0 : rVal <<= aSearchOpt.insertedChars; break;
429 : case MID_SEARCH_TRANSLITERATEFLAGS:
430 0 : rVal <<= aSearchOpt.transliterateFlags; break;
431 : case MID_SEARCH_LOCALE:
432 : {
433 : sal_Int16 nLocale;
434 0 : if (!aSearchOpt.Locale.Language.isEmpty() || !aSearchOpt.Locale.Country.isEmpty() )
435 0 : nLocale = LanguageTag( aSearchOpt.Locale ).getLanguageType();
436 : else
437 0 : nLocale = LANGUAGE_NONE;
438 0 : rVal <<= nLocale;
439 0 : break;
440 : }
441 :
442 : default:
443 : SAL_WARN( "svl.items", "SvxSearchItem::QueryValue(): Unknown MemberId" );
444 0 : return false;
445 : }
446 :
447 0 : return true;
448 : }
449 :
450 : // -----------------------------------------------------------------------
451 :
452 0 : bool SvxSearchItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
453 : {
454 0 : nMemberId &= ~CONVERT_TWIPS;
455 0 : bool bRet = false;
456 0 : sal_Int32 nInt = 0;
457 0 : switch ( nMemberId )
458 : {
459 : case 0 :
460 : {
461 0 : Sequence< PropertyValue > aSeq;
462 0 : if ( ( rVal >>= aSeq ) && ( aSeq.getLength() == SRCH_PARAMS ) )
463 : {
464 0 : sal_Int16 nConvertedCount( 0 );
465 0 : for ( sal_Int32 i = 0; i < aSeq.getLength(); ++i )
466 : {
467 0 : if ( aSeq[i].Name == SRCH_PARA_OPTIONS )
468 : {
469 0 : if ( ( aSeq[i].Value >>= aSearchOpt ) == sal_True )
470 0 : ++nConvertedCount;
471 : }
472 0 : else if ( aSeq[i].Name == SRCH_PARA_FAMILY )
473 : {
474 0 : sal_uInt16 nTemp( 0 );
475 0 : if ( ( aSeq[i].Value >>= nTemp ) == sal_True )
476 : {
477 0 : eFamily = SfxStyleFamily( nTemp );
478 0 : ++nConvertedCount;
479 : }
480 : }
481 0 : else if ( aSeq[i].Name == SRCH_PARA_COMMAND )
482 : {
483 0 : if ( ( aSeq[i].Value >>= nCommand ) == sal_True )
484 0 : ++nConvertedCount;
485 : }
486 0 : else if ( aSeq[i].Name == SRCH_PARA_CELLTYPE )
487 : {
488 0 : if ( ( aSeq[i].Value >>= nCellType ) == sal_True )
489 0 : ++nConvertedCount;
490 : }
491 0 : else if ( aSeq[i].Name == SRCH_PARA_APPFLAG )
492 : {
493 0 : if ( ( aSeq[i].Value >>= nAppFlag ) == sal_True )
494 0 : ++nConvertedCount;
495 : }
496 0 : else if ( aSeq[i].Name == SRCH_PARA_ROWDIR )
497 : {
498 0 : if ( ( aSeq[i].Value >>= bRowDirection ) == sal_True )
499 0 : ++nConvertedCount;
500 : }
501 0 : else if ( aSeq[i].Name == SRCH_PARA_ALLTABLES )
502 : {
503 0 : if ( ( aSeq[i].Value >>= bAllTables ) == sal_True )
504 0 : ++nConvertedCount;
505 : }
506 0 : else if ( aSeq[i].Name == SRCH_PARA_SEARCHFILTERED )
507 : {
508 0 : if ( ( aSeq[i].Value >>= bSearchFiltered ) == sal_True )
509 0 : ++nConvertedCount;
510 : }
511 0 : else if ( aSeq[i].Name == SRCH_PARA_BACKWARD )
512 : {
513 0 : if ( ( aSeq[i].Value >>= bBackward ) == sal_True )
514 0 : ++nConvertedCount;
515 : }
516 0 : else if ( aSeq[i].Name == SRCH_PARA_PATTERN )
517 : {
518 0 : if ( ( aSeq[i].Value >>= bPattern ) == sal_True )
519 0 : ++nConvertedCount;
520 : }
521 0 : else if ( aSeq[i].Name == SRCH_PARA_CONTENT )
522 : {
523 0 : if ( ( aSeq[i].Value >>= bContent ) == sal_True )
524 0 : ++nConvertedCount;
525 : }
526 0 : else if ( aSeq[i].Name == SRCH_PARA_ASIANOPT )
527 : {
528 0 : if ( ( aSeq[i].Value >>= bAsianOptions ) == sal_True )
529 0 : ++nConvertedCount;
530 : }
531 : }
532 :
533 0 : bRet = ( nConvertedCount == SRCH_PARAMS );
534 : }
535 0 : break;
536 : }
537 : case MID_SEARCH_COMMAND:
538 0 : bRet = (rVal >>= nInt); nCommand = (sal_uInt16) nInt; break;
539 : case MID_SEARCH_STYLEFAMILY:
540 0 : bRet = (rVal >>= nInt); eFamily = (SfxStyleFamily) (sal_Int16) nInt; break;
541 : case MID_SEARCH_CELLTYPE:
542 0 : bRet = (rVal >>= nInt); nCellType = (sal_uInt16) nInt; break;
543 : case MID_SEARCH_ROWDIRECTION:
544 0 : bRet = (rVal >>= bRowDirection); break;
545 : case MID_SEARCH_ALLTABLES:
546 0 : bRet = (rVal >>= bAllTables); break;
547 : case MID_SEARCH_SEARCHFILTERED:
548 0 : bRet = (rVal >>= bSearchFiltered); break;
549 : case MID_SEARCH_BACKWARD:
550 0 : bRet = (rVal >>= bBackward); break;
551 : case MID_SEARCH_PATTERN:
552 0 : bRet = (rVal >>= bPattern); break;
553 : case MID_SEARCH_CONTENT:
554 0 : bRet = (rVal >>= bContent); break;
555 : case MID_SEARCH_ASIANOPTIONS:
556 0 : bRet = (rVal >>= bAsianOptions); break;
557 : case MID_SEARCH_ALGORITHMTYPE:
558 0 : bRet = (rVal >>= nInt); aSearchOpt.algorithmType = (SearchAlgorithms)(sal_Int16)nInt; break;
559 : case MID_SEARCH_FLAGS:
560 0 : bRet = (rVal >>= aSearchOpt.searchFlag); break;
561 : case MID_SEARCH_SEARCHSTRING:
562 0 : bRet = (rVal >>= aSearchOpt.searchString); break;
563 : case MID_SEARCH_REPLACESTRING:
564 0 : bRet = (rVal >>= aSearchOpt.replaceString); break;
565 : case MID_SEARCH_CHANGEDCHARS:
566 0 : bRet = (rVal >>= aSearchOpt.changedChars); break;
567 : case MID_SEARCH_DELETEDCHARS:
568 0 : bRet = (rVal >>= aSearchOpt.deletedChars); break;
569 : case MID_SEARCH_INSERTEDCHARS:
570 0 : bRet = (rVal >>= aSearchOpt.insertedChars); break;
571 : case MID_SEARCH_TRANSLITERATEFLAGS:
572 0 : bRet = (rVal >>= aSearchOpt.transliterateFlags); break;
573 : case MID_SEARCH_LOCALE:
574 : {
575 0 : bRet = (rVal >>= nInt);
576 0 : if ( bRet )
577 : {
578 0 : if ( nInt == LANGUAGE_NONE )
579 : {
580 0 : aSearchOpt.Locale = ::com::sun::star::lang::Locale();
581 : }
582 : else
583 : {
584 0 : aSearchOpt.Locale = LanguageTag( nInt).getLocale();
585 : }
586 : }
587 0 : break;
588 : }
589 : default:
590 : OSL_FAIL( "Unknown MemberId" );
591 : }
592 :
593 0 : return bRet;
594 : }
595 :
596 :
597 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|