blob: b532138ce2cc7f4e1db123ef9b017c2342506032 [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.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svl.hxx"
// include ---------------------------------------------------------------
#include <svl/srchitem.hxx>
#include <unotools/searchopt.hxx>
#include <com/sun/star/util/XReplaceable.hpp>
#include <com/sun/star/util/XSearchable.hpp>
#include <com/sun/star/util/XSearchDescriptor.hpp>
#include <com/sun/star/util/XPropertyReplace.hpp>
#include <com/sun/star/util/XReplaceDescriptor.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <svl/memberid.hrc>
#include <i18npool/mslangid.hxx>
using namespace utl;
using namespace com::sun::star::beans;
using namespace com::sun::star::i18n;
using namespace com::sun::star::lang;
using namespace com::sun::star::uno;
using namespace com::sun::star::util;
#define CFG_ROOT_NODE "Office.Common/SearchOptions"
#define SRCH_PARAMS 11
#define SRCH_PARA_OPTIONS "Options"
#define SRCH_PARA_FAMILY "Family"
#define SRCH_PARA_COMMAND "Command"
#define SRCH_PARA_CELLTYPE "CellType"
#define SRCH_PARA_APPFLAG "AppFlag"
#define SRCH_PARA_ROWDIR "RowDirection"
#define SRCH_PARA_ALLTABLES "AllTables"
#define SRCH_PARA_BACKWARD "Backward"
#define SRCH_PARA_PATTERN "Pattern"
#define SRCH_PARA_CONTENT "Content"
#define SRCH_PARA_ASIANOPT "AsianOptions"
// STATIC DATA -----------------------------------------------------------
TYPEINIT1_FACTORY(SvxSearchItem, SfxPoolItem, new SvxSearchItem(0));
// -----------------------------------------------------------------------
static Sequence< ::rtl::OUString > lcl_GetNotifyNames()
{
// names of transliteration relevant properties
static const char* aTranslitNames[] =
{
"IsMatchCase", // 0
"Japanese/IsMatchFullHalfWidthForms", // 1
"Japanese/IsMatchHiraganaKatakana", // 2
"Japanese/IsMatchContractions", // 3
"Japanese/IsMatchMinusDashCho-on", // 4
"Japanese/IsMatchRepeatCharMarks", // 5
"Japanese/IsMatchVariantFormKanji", // 6
"Japanese/IsMatchOldKanaForms", // 7
"Japanese/IsMatch_DiZi_DuZu", // 8
"Japanese/IsMatch_BaVa_HaFa", // 9
"Japanese/IsMatch_TsiThiChi_DhiZi", // 10
"Japanese/IsMatch_HyuIyu_ByuVyu", // 11
"Japanese/IsMatch_SeShe_ZeJe", // 12
"Japanese/IsMatch_IaIya", // 13
"Japanese/IsMatch_KiKu", // 14
"Japanese/IsIgnorePunctuation", // 15
"Japanese/IsIgnoreWhitespace", // 16
"Japanese/IsIgnoreProlongedSoundMark", // 17
"Japanese/IsIgnoreMiddleDot" // 18
};
const int nCount = sizeof( aTranslitNames ) / sizeof( aTranslitNames[0] );
Sequence< ::rtl::OUString > aNames( nCount );
::rtl::OUString* pNames = aNames.getArray();
for (sal_Int32 i = 0; i < nCount; ++i)
pNames[i] = ::rtl::OUString::createFromAscii( aTranslitNames[i] );
return aNames;
}
// -----------------------------------------------------------------------
SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) :
SfxPoolItem( nId ),
ConfigItem( ::rtl::OUString::createFromAscii( CFG_ROOT_NODE ) ),
aSearchOpt ( SearchAlgorithms_ABSOLUTE,
SearchFlags::LEV_RELAXED,
::rtl::OUString(),
::rtl::OUString(),
Locale(),
2, 2, 2,
TransliterationModules_IGNORE_CASE ),
eFamily ( SFX_STYLE_FAMILY_PARA ),
nCommand ( 0 ),
nCellType ( SVX_SEARCHIN_FORMULA ),
nAppFlag ( SVX_SEARCHAPP_WRITER ),
bRowDirection ( sal_True ),
bAllTables ( sal_False ),
bNotes ( sal_False),
bBackward ( sal_False ),
bPattern ( sal_False ),
bContent ( sal_False ),
bAsianOptions ( sal_False )
{
EnableNotification( lcl_GetNotifyNames() );
SvtSearchOptions aOpt;
bBackward = aOpt.IsBackwards();
bAsianOptions = aOpt.IsUseAsianOptions();
bNotes = aOpt.IsNotes();
if (aOpt.IsUseRegularExpression())
aSearchOpt.algorithmType = SearchAlgorithms_REGEXP;
if (aOpt.IsSimilaritySearch())
aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE;
if (aOpt.IsWholeWordsOnly())
aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY;
sal_Int32 &rFlags = aSearchOpt.transliterateFlags;
if (!aOpt.IsMatchCase())
rFlags |= TransliterationModules_IGNORE_CASE;
if ( aOpt.IsMatchFullHalfWidthForms())
rFlags |= TransliterationModules_IGNORE_WIDTH;
if ( bAsianOptions )
{
if ( aOpt.IsMatchHiraganaKatakana())
rFlags |= TransliterationModules_IGNORE_KANA;
if ( aOpt.IsMatchContractions())
rFlags |= TransliterationModules_ignoreSize_ja_JP;
if ( aOpt.IsMatchMinusDashChoon())
rFlags |= TransliterationModules_ignoreMinusSign_ja_JP;
if ( aOpt.IsMatchRepeatCharMarks())
rFlags |= TransliterationModules_ignoreIterationMark_ja_JP;
if ( aOpt.IsMatchVariantFormKanji())
rFlags |= TransliterationModules_ignoreTraditionalKanji_ja_JP;
if ( aOpt.IsMatchOldKanaForms())
rFlags |= TransliterationModules_ignoreTraditionalKana_ja_JP;
if ( aOpt.IsMatchDiziDuzu())
rFlags |= TransliterationModules_ignoreZiZu_ja_JP;
if ( aOpt.IsMatchBavaHafa())
rFlags |= TransliterationModules_ignoreBaFa_ja_JP;
if ( aOpt.IsMatchTsithichiDhizi())
rFlags |= TransliterationModules_ignoreTiJi_ja_JP;
if ( aOpt.IsMatchHyuiyuByuvyu())
rFlags |= TransliterationModules_ignoreHyuByu_ja_JP;
if ( aOpt.IsMatchSesheZeje())
rFlags |= TransliterationModules_ignoreSeZe_ja_JP;
if ( aOpt.IsMatchIaiya())
rFlags |= TransliterationModules_ignoreIandEfollowedByYa_ja_JP;
if ( aOpt.IsMatchKiku())
rFlags |= TransliterationModules_ignoreKiKuFollowedBySa_ja_JP;
if ( aOpt.IsIgnorePunctuation())
rFlags |= TransliterationModules_ignoreSeparator_ja_JP;
if ( aOpt.IsIgnoreWhitespace())
rFlags |= TransliterationModules_ignoreSpace_ja_JP;
if ( aOpt.IsIgnoreProlongedSoundMark())
rFlags |= TransliterationModules_ignoreProlongedSoundMark_ja_JP;
if ( aOpt.IsIgnoreMiddleDot())
rFlags |= TransliterationModules_ignoreMiddleDot_ja_JP;
}
}
// -----------------------------------------------------------------------
SvxSearchItem::SvxSearchItem( const SvxSearchItem& rItem ) :
SfxPoolItem ( rItem ),
ConfigItem( ::rtl::OUString::createFromAscii( CFG_ROOT_NODE ) ),
aSearchOpt ( rItem.aSearchOpt ),
eFamily ( rItem.eFamily ),
nCommand ( rItem.nCommand ),
nCellType ( rItem.nCellType ),
nAppFlag ( rItem.nAppFlag ),
bRowDirection ( rItem.bRowDirection ),
bAllTables ( rItem.bAllTables ),
bNotes ( rItem.bNotes),
bBackward ( rItem.bBackward ),
bPattern ( rItem.bPattern ),
bContent ( rItem.bContent ),
bAsianOptions ( rItem.bAsianOptions )
{
EnableNotification( lcl_GetNotifyNames() );
}
// -----------------------------------------------------------------------
SvxSearchItem::~SvxSearchItem()
{
}
// -----------------------------------------------------------------------
SfxPoolItem* SvxSearchItem::Clone( SfxItemPool *) const
{
return new SvxSearchItem(*this);
}
// -----------------------------------------------------------------------
//! used below
static sal_Bool operator == ( const SearchOptions& rItem1, const SearchOptions& rItem2 )
{
return rItem1.algorithmType == rItem2.algorithmType &&
rItem1.searchFlag == rItem2.searchFlag &&
rItem1.searchString == rItem2.searchString &&
rItem1.replaceString == rItem2.replaceString &&
//rItem1.Locale == rItem2.Locale &&
rItem1.changedChars == rItem2.changedChars &&
rItem1.deletedChars == rItem2.deletedChars &&
rItem1.insertedChars == rItem2.insertedChars &&
rItem1.transliterateFlags == rItem2.transliterateFlags;
}
int SvxSearchItem::operator==( const SfxPoolItem& rItem ) const
{
DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal which or type" );
const SvxSearchItem &rSItem = (SvxSearchItem &) rItem;
return ( nCommand == rSItem.nCommand ) &&
( bBackward == rSItem.bBackward ) &&
( bPattern == rSItem.bPattern ) &&
( bContent == rSItem.bContent ) &&
( eFamily == rSItem.eFamily ) &&
( bRowDirection == rSItem.bRowDirection ) &&
( bAllTables == rSItem.bAllTables ) &&
( nCellType == rSItem.nCellType ) &&
( nAppFlag == rSItem.nAppFlag ) &&
( bAsianOptions == rSItem.bAsianOptions ) &&
( aSearchOpt == rSItem.aSearchOpt ) &&
( bNotes == rSItem.bNotes );
}
//------------------------------------------------------------------------
SfxItemPresentation SvxSearchItem::GetPresentation
(
SfxItemPresentation ,
SfxMapUnit ,
SfxMapUnit ,
XubString& ,
const IntlWrapper *
) const
{
return SFX_ITEM_PRESENTATION_NONE;
}
void SvxSearchItem::GetFromDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& rDescr )
{
SetSearchString( rDescr->getSearchString() );
::com::sun::star::uno::Any aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchWords") ) );
sal_Bool bTemp = false;
aAny >>= bTemp ;
SetWordOnly( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchCaseSensitive") ) );
aAny >>= bTemp ;
SetExact( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchBackwards") ) );
aAny >>= bTemp ;
SetBackward( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchInSelection") ) );
aAny >>= bTemp ;
SetSelection( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchRegularExpression") ) );
aAny >>= bTemp ;
SetRegExp( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ) );
aAny >>= bTemp ;
SetLevenshtein( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRelax") ) );
aAny >>= bTemp ;
SetLEVRelaxed( bTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityExchange") ) );
sal_Int16 nTemp = 0;
aAny >>= nTemp ;
SetLEVOther( nTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRemove") ) );
aAny >>= nTemp ;
SetLEVShorter( nTemp );
aAny = rDescr->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityAdd") ) );
aAny >>= nTemp ;
SetLEVLonger( nTemp );
}
void SvxSearchItem::SetToDescriptor( ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > & rDescr )
{
rDescr->setSearchString( GetSearchString() );
::com::sun::star::uno::Any aAny;
aAny <<= GetWordOnly() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchWords") ), aAny );
aAny <<= GetExact() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchCaseSensitive") ), aAny );
aAny <<= GetBackward() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchBackwards") ), aAny );
aAny <<= GetSelection() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchInSelection") ), aAny );
aAny <<= GetRegExp() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchRegularExpression") ), aAny );
aAny <<= IsLevenshtein() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ), aAny );
aAny <<= IsLEVRelaxed() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRelax") ), aAny );
aAny <<= GetLEVOther() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityExchange") ), aAny );
aAny <<= GetLEVShorter() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRemove") ), aAny );
aAny <<= GetLEVLonger() ;
rDescr->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityAdd") ), aAny );
}
void SvxSearchItem::Notify( const Sequence< ::rtl::OUString > & )
{
// applies transliteration changes in the configuration database
// to the current SvxSearchItem
SetTransliterationFlags( SvtSearchOptions().GetTransliterationFlags() );
}
void SvxSearchItem::Commit()
{
}
void SvxSearchItem::SetMatchFullHalfWidthForms( sal_Bool bVal )
{
if (bVal)
aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_WIDTH;
else
aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_WIDTH;
}
void SvxSearchItem::SetWordOnly( sal_Bool bVal )
{
if (bVal)
aSearchOpt.searchFlag |= SearchFlags::NORM_WORD_ONLY;
else
aSearchOpt.searchFlag &= ~SearchFlags::NORM_WORD_ONLY;
}
void SvxSearchItem::SetExact( sal_Bool bVal )
{
if (!bVal)
aSearchOpt.transliterateFlags |= TransliterationModules_IGNORE_CASE;
else
aSearchOpt.transliterateFlags &= ~TransliterationModules_IGNORE_CASE;
}
void SvxSearchItem::SetSelection( sal_Bool bVal )
{
if (bVal)
{
aSearchOpt.searchFlag |= (SearchFlags::REG_NOT_BEGINOFLINE |
SearchFlags::REG_NOT_ENDOFLINE);
}
else
{
aSearchOpt.searchFlag &= ~(SearchFlags::REG_NOT_BEGINOFLINE |
SearchFlags::REG_NOT_ENDOFLINE);
}
}
void SvxSearchItem::SetRegExp( sal_Bool bVal )
{
if ( bVal )
aSearchOpt.algorithmType = SearchAlgorithms_REGEXP;
else if ( SearchAlgorithms_REGEXP == aSearchOpt.algorithmType )
aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE;
}
void SvxSearchItem::SetLEVRelaxed( sal_Bool bVal )
{
if (bVal)
aSearchOpt.searchFlag |= SearchFlags::LEV_RELAXED;
else
aSearchOpt.searchFlag &= ~SearchFlags::LEV_RELAXED;
}
void SvxSearchItem::SetLevenshtein( sal_Bool bVal )
{
if ( bVal )
aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE;
else if ( SearchAlgorithms_APPROXIMATE == aSearchOpt.algorithmType )
aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE;
}
void SvxSearchItem::SetTransliterationFlags( sal_Int32 nFlags )
{
aSearchOpt.transliterateFlags = nFlags;
}
sal_Bool SvxSearchItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
{
nMemberId &= ~CONVERT_TWIPS;
switch ( nMemberId )
{
case 0 :
{
Sequence< PropertyValue > aSeq( SRCH_PARAMS );
aSeq[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_OPTIONS ) );
aSeq[0].Value <<= aSearchOpt;
aSeq[1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_FAMILY ));
aSeq[1].Value <<= sal_Int16( eFamily );
aSeq[2].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_COMMAND ));
aSeq[2].Value <<= nCommand;
aSeq[3].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_CELLTYPE ));
aSeq[3].Value <<= nCellType;
aSeq[4].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_APPFLAG ));
aSeq[4].Value <<= nAppFlag;
aSeq[5].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ROWDIR ));
aSeq[5].Value <<= bRowDirection;
aSeq[6].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ALLTABLES ));
aSeq[6].Value <<= bAllTables;
aSeq[7].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_BACKWARD ));
aSeq[7].Value <<= bBackward;
aSeq[8].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_PATTERN ));
aSeq[8].Value <<= bPattern;
aSeq[9].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_CONTENT ));
aSeq[9].Value <<= bContent;
aSeq[10].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SRCH_PARA_ASIANOPT ));
aSeq[10].Value <<= bAsianOptions;
rVal <<= aSeq;
}
break;
case MID_SEARCH_COMMAND:
rVal <<= (sal_Int16) nCommand; break;
case MID_SEARCH_STYLEFAMILY:
rVal <<= (sal_Int16) eFamily; break;
case MID_SEARCH_CELLTYPE:
rVal <<= (sal_Int32) nCellType; break;
case MID_SEARCH_ROWDIRECTION:
rVal <<= (sal_Bool) bRowDirection; break;
case MID_SEARCH_ALLTABLES:
rVal <<= (sal_Bool) bAllTables; break;
case MID_SEARCH_BACKWARD:
rVal <<= (sal_Bool) bBackward; break;
case MID_SEARCH_PATTERN:
rVal <<= (sal_Bool) bPattern; break;
case MID_SEARCH_CONTENT:
rVal <<= (sal_Bool) bContent; break;
case MID_SEARCH_ASIANOPTIONS:
rVal <<= (sal_Bool) bAsianOptions; break;
case MID_SEARCH_ALGORITHMTYPE:
rVal <<= (sal_Int16) aSearchOpt.algorithmType; break;
case MID_SEARCH_FLAGS:
rVal <<= aSearchOpt.searchFlag; break;
case MID_SEARCH_SEARCHSTRING:
rVal <<= aSearchOpt.searchString; break;
case MID_SEARCH_REPLACESTRING:
rVal <<= aSearchOpt.replaceString; break;
case MID_SEARCH_CHANGEDCHARS:
rVal <<= aSearchOpt.changedChars; break;
case MID_SEARCH_DELETEDCHARS:
rVal <<= aSearchOpt.deletedChars; break;
case MID_SEARCH_INSERTEDCHARS:
rVal <<= aSearchOpt.insertedChars; break;
case MID_SEARCH_TRANSLITERATEFLAGS:
rVal <<= aSearchOpt.transliterateFlags; break;
case MID_SEARCH_LOCALE:
{
sal_Int16 nLocale;
if (aSearchOpt.Locale.Language.getLength() || aSearchOpt.Locale.Country.getLength() )
nLocale = MsLangId::convertLocaleToLanguage( aSearchOpt.Locale );
else
nLocale = LANGUAGE_NONE;
rVal <<= nLocale;
break;
}
default:
DBG_ERRORFILE( "SvxSearchItem::QueryValue(): Unknown MemberId" );
return sal_False;
}
return sal_True;
}
// -----------------------------------------------------------------------
sal_Bool SvxSearchItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
{
nMemberId &= ~CONVERT_TWIPS;
sal_Bool bRet = sal_False;
sal_Int32 nInt = 0;
switch ( nMemberId )
{
case 0 :
{
Sequence< PropertyValue > aSeq;
if ( ( rVal >>= aSeq ) && ( aSeq.getLength() == SRCH_PARAMS ) )
{
sal_Int16 nConvertedCount( 0 );
for ( sal_Int32 i = 0; i < aSeq.getLength(); ++i )
{
if ( aSeq[i].Name.equalsAscii( SRCH_PARA_OPTIONS ) )
{
if ( ( aSeq[i].Value >>= aSearchOpt ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_FAMILY ) )
{
sal_uInt16 nTemp( 0 );
if ( ( aSeq[i].Value >>= nTemp ) == sal_True )
{
eFamily = SfxStyleFamily( nTemp );
++nConvertedCount;
}
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_COMMAND ) )
{
if ( ( aSeq[i].Value >>= nCommand ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_CELLTYPE ) )
{
if ( ( aSeq[i].Value >>= nCellType ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_APPFLAG ) )
{
if ( ( aSeq[i].Value >>= nAppFlag ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ROWDIR ) )
{
if ( ( aSeq[i].Value >>= bRowDirection ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ALLTABLES ) )
{
if ( ( aSeq[i].Value >>= bAllTables ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_BACKWARD ) )
{
if ( ( aSeq[i].Value >>= bBackward ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_PATTERN ) )
{
if ( ( aSeq[i].Value >>= bPattern ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_CONTENT ) )
{
if ( ( aSeq[i].Value >>= bContent ) == sal_True )
++nConvertedCount;
}
else if ( aSeq[i].Name.equalsAscii( SRCH_PARA_ASIANOPT ) )
{
if ( ( aSeq[i].Value >>= bAsianOptions ) == sal_True )
++nConvertedCount;
}
}
bRet = ( nConvertedCount == SRCH_PARAMS );
}
break;
}
case MID_SEARCH_COMMAND:
bRet = (rVal >>= nInt); nCommand = (sal_uInt16) nInt; break;
case MID_SEARCH_STYLEFAMILY:
bRet = (rVal >>= nInt); eFamily = (SfxStyleFamily) (sal_Int16) nInt; break;
case MID_SEARCH_CELLTYPE:
bRet = (rVal >>= nInt); nCellType = (sal_uInt16) nInt; break;
case MID_SEARCH_ROWDIRECTION:
bRet = (rVal >>= bRowDirection); break;
case MID_SEARCH_ALLTABLES:
bRet = (rVal >>= bAllTables); break;
case MID_SEARCH_BACKWARD:
bRet = (rVal >>= bBackward); break;
case MID_SEARCH_PATTERN:
bRet = (rVal >>= bPattern); break;
case MID_SEARCH_CONTENT:
bRet = (rVal >>= bContent); break;
case MID_SEARCH_ASIANOPTIONS:
bRet = (rVal >>= bAsianOptions); break;
case MID_SEARCH_ALGORITHMTYPE:
bRet = (rVal >>= nInt); aSearchOpt.algorithmType = (SearchAlgorithms)(sal_Int16)nInt; break;
case MID_SEARCH_FLAGS:
bRet = (rVal >>= aSearchOpt.searchFlag); break;
case MID_SEARCH_SEARCHSTRING:
bRet = (rVal >>= aSearchOpt.searchString); break;
case MID_SEARCH_REPLACESTRING:
bRet = (rVal >>= aSearchOpt.replaceString); break;
case MID_SEARCH_CHANGEDCHARS:
bRet = (rVal >>= aSearchOpt.changedChars); break;
case MID_SEARCH_DELETEDCHARS:
bRet = (rVal >>= aSearchOpt.deletedChars); break;
case MID_SEARCH_INSERTEDCHARS:
bRet = (rVal >>= aSearchOpt.insertedChars); break;
case MID_SEARCH_TRANSLITERATEFLAGS:
bRet = (rVal >>= aSearchOpt.transliterateFlags); break;
case MID_SEARCH_LOCALE:
{
bRet = (rVal >>= nInt);
if ( bRet )
{
if ( nInt == LANGUAGE_NONE )
{
aSearchOpt.Locale = ::com::sun::star::lang::Locale();
}
else
{
MsLangId::convertLanguageToLocale( (sal_Int16) nInt, aSearchOpt.Locale );
}
}
break;
}
default:
DBG_ERROR( "Unknown MemberId" );
}
return bRet;
}