summaryrefslogtreecommitdiff
path: root/svl/source/items/srchitem.cxx
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-06-28 12:08:16 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2023-06-28 12:43:01 +0200
commitdbd0f224cfaf669ccfcbf300ccc0c11c904ec037 (patch)
tree192a803a97e3ef2329a1b3c8f1829497ab85f013 /svl/source/items/srchitem.cxx
parent79241a1fd32ab03cd2bb34fb303ce7f2fa93e57e (diff)
Simplify SvxSearchItem::PutValue a bit
Change-Id: I2cbc5dce800b773e6c20cb3ea6f0e520a3f69db9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153688 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svl/source/items/srchitem.cxx')
-rw-r--r--svl/source/items/srchitem.cxx252
1 files changed, 110 insertions, 142 deletions
diff --git a/svl/source/items/srchitem.cxx b/svl/source/items/srchitem.cxx
index d3b2fad7c216..e8447dbb209c 100644
--- a/svl/source/items/srchitem.cxx
+++ b/svl/source/items/srchitem.cxx
@@ -31,6 +31,8 @@
#include <svl/memberid.h>
#include <i18nlangtag/languagetag.hxx>
+#include <unordered_set>
+
using namespace utl;
using namespace com::sun::star;
using namespace com::sun::star::beans;
@@ -489,191 +491,157 @@ bool SvxSearchItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId ) const
bool SvxSearchItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId )
{
nMemberId &= ~CONVERT_TWIPS;
- bool bRet = false;
- sal_Int32 nInt = 0;
+ auto ExtractNumericAny = [](const css::uno::Any& a, auto& target)
+ {
+ sal_Int32 nInt;
+ if (!(a >>= nInt))
+ return false;
+ target = static_cast<std::remove_reference_t<decltype(target)>>(nInt);
+ return true;
+ };
switch ( nMemberId )
{
case 0 :
{
Sequence< PropertyValue > aSeq;
- if ( ( rVal >>= aSeq ) && ( aSeq.getLength() == SRCH_PARAMS ) )
+ if (!(rVal >>= aSeq) || aSeq.getLength() != SRCH_PARAMS)
+ break;
+ std::unordered_set<OUString> aConvertedParams;
+ for (const auto& rProp : aSeq)
{
- sal_Int16 nConvertedCount( 0 );
- for ( const auto& rProp : std::as_const(aSeq) )
+ if (rProp.Name == SRCH_PARA_OPTIONS)
{
- if ( rProp.Name == SRCH_PARA_OPTIONS )
- {
- css::util::SearchOptions2 nTmpSearchOpt2;
- if ( rProp.Value >>= nTmpSearchOpt2 )
- {
- m_aSearchOpt = nTmpSearchOpt2;
- ++nConvertedCount;
- }
- }
- else if ( rProp.Name == SRCH_PARA_FAMILY )
- {
- sal_uInt16 nTemp( 0 );
- if ( rProp.Value >>= nTemp )
- {
- m_eFamily = SfxStyleFamily( nTemp );
- ++nConvertedCount;
- }
- }
- else if ( rProp.Name == SRCH_PARA_COMMAND )
- {
- sal_uInt16 nTmp;
- if ( rProp.Value >>= nTmp )
- {
- m_nCommand = static_cast<SvxSearchCmd>(nTmp);
- ++nConvertedCount;
- }
- }
- else if ( rProp.Name == SRCH_PARA_CELLTYPE )
+ if (css::util::SearchOptions2 nTmpSearchOpt2; rProp.Value >>= nTmpSearchOpt2)
{
- sal_uInt16 nTmp;
- if ( rProp.Value >>= nTmp )
- {
- m_nCellType = static_cast<SvxSearchCellType>(nTmp);
- ++nConvertedCount;
- }
- }
- else if ( rProp.Name == SRCH_PARA_APPFLAG )
- {
- sal_uInt16 nTmp;
- if ( rProp.Value >>= nTmp )
- {
- m_nAppFlag = static_cast<SvxSearchApp>(nTmp);
- ++nConvertedCount;
- }
- }
- else if ( rProp.Name == SRCH_PARA_ROWDIR )
- {
- if ( rProp.Value >>= m_bRowDirection )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_ALLTABLES )
- {
- if ( rProp.Value >>= m_bAllTables )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_SEARCHFILTERED )
- {
- if ( rProp.Value >>= m_bSearchFiltered )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_SEARCHFORMATTED )
- {
- if ( rProp.Value >>= m_bSearchFormatted )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_BACKWARD )
- {
- if ( rProp.Value >>= m_bBackward )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_PATTERN )
- {
- if ( rProp.Value >>= m_bPattern )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_CONTENT )
- {
- if ( rProp.Value >>= m_bContent )
- ++nConvertedCount;
- }
- else if ( rProp.Name == SRCH_PARA_ASIANOPT )
- {
- if ( rProp.Value >>= m_bAsianOptions )
- ++nConvertedCount;
+ m_aSearchOpt = nTmpSearchOpt2;
+ aConvertedParams.insert(rProp.Name);
}
}
-
- bRet = ( nConvertedCount == SRCH_PARAMS );
+ else if (rProp.Name == SRCH_PARA_FAMILY)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_STYLEFAMILY))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_COMMAND)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_COMMAND))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_CELLTYPE)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_CELLTYPE))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_APPFLAG)
+ {
+ if (ExtractNumericAny(rProp.Value, m_nAppFlag))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_ROWDIR)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_ROWDIRECTION))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_ALLTABLES)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_ALLTABLES))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_SEARCHFILTERED)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_SEARCHFILTERED))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_SEARCHFORMATTED)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_SEARCHFORMATTED))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_BACKWARD)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_BACKWARD))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_PATTERN)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_PATTERN))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_CONTENT)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_CONTENT))
+ aConvertedParams.insert(rProp.Name);
+ }
+ else if (rProp.Name == SRCH_PARA_ASIANOPT)
+ {
+ if (SvxSearchItem::PutValue(rProp.Value, MID_SEARCH_ASIANOPTIONS))
+ aConvertedParams.insert(rProp.Name);
+ }
}
- break;
+ return aConvertedParams.size() == SRCH_PARAMS;
}
case MID_SEARCH_COMMAND:
- bRet = (rVal >>= nInt); m_nCommand = static_cast<SvxSearchCmd>(nInt); break;
+ return ExtractNumericAny(rVal, m_nCommand);
case MID_SEARCH_STYLEFAMILY:
- bRet = (rVal >>= nInt); m_eFamily = static_cast<SfxStyleFamily>(static_cast<sal_Int16>(nInt)); break;
+ return ExtractNumericAny(rVal, m_eFamily);
case MID_SEARCH_CELLTYPE:
- bRet = (rVal >>= nInt); m_nCellType = static_cast<SvxSearchCellType>(nInt); break;
+ return ExtractNumericAny(rVal, m_nCellType);
case MID_SEARCH_ROWDIRECTION:
- bRet = (rVal >>= m_bRowDirection); break;
+ return (rVal >>= m_bRowDirection);
case MID_SEARCH_ALLTABLES:
- bRet = (rVal >>= m_bAllTables); break;
+ return (rVal >>= m_bAllTables);
case MID_SEARCH_SEARCHFILTERED:
- bRet = (rVal >>= m_bSearchFiltered); break;
+ return (rVal >>= m_bSearchFiltered);
case MID_SEARCH_SEARCHFORMATTED:
- bRet = (rVal >>= m_bSearchFormatted); break;
+ return (rVal >>= m_bSearchFormatted);
case MID_SEARCH_BACKWARD:
- bRet = (rVal >>= m_bBackward); break;
+ return (rVal >>= m_bBackward);
case MID_SEARCH_PATTERN:
- bRet = (rVal >>= m_bPattern); break;
+ return (rVal >>= m_bPattern);
case MID_SEARCH_CONTENT:
- bRet = (rVal >>= m_bContent); break;
+ return (rVal >>= m_bContent);
case MID_SEARCH_ASIANOPTIONS:
- bRet = (rVal >>= m_bAsianOptions); break;
+ return (rVal >>= m_bAsianOptions);
case MID_SEARCH_ALGORITHMTYPE:
- bRet = (rVal >>= nInt);
- if (bRet)
- m_aSearchOpt.AlgorithmType2 = i18nutil::upgradeSearchAlgorithms(static_cast<SearchAlgorithms>(static_cast<sal_Int16>(nInt)));
+ if (SearchAlgorithms eVal; ExtractNumericAny(rVal, eVal))
+ {
+ m_aSearchOpt.AlgorithmType2 = i18nutil::upgradeSearchAlgorithms(eVal);
+ return true;
+ }
break;
case MID_SEARCH_ALGORITHMTYPE2:
- bRet = (rVal >>= nInt);
- if (bRet)
- m_aSearchOpt.AlgorithmType2 = static_cast<sal_Int16>(nInt);
- break;
+ return (rVal >>= m_aSearchOpt.AlgorithmType2);
case MID_SEARCH_FLAGS:
- bRet = (rVal >>= m_aSearchOpt.searchFlag); break;
+ return (rVal >>= m_aSearchOpt.searchFlag);
case MID_SEARCH_SEARCHSTRING:
- bRet = (rVal >>= m_aSearchOpt.searchString); break;
+ return (rVal >>= m_aSearchOpt.searchString);
case MID_SEARCH_REPLACESTRING:
- bRet = (rVal >>= m_aSearchOpt.replaceString); break;
+ return (rVal >>= m_aSearchOpt.replaceString);
case MID_SEARCH_CHANGEDCHARS:
- bRet = (rVal >>= m_aSearchOpt.changedChars); break;
+ return (rVal >>= m_aSearchOpt.changedChars);
case MID_SEARCH_DELETEDCHARS:
- bRet = (rVal >>= m_aSearchOpt.deletedChars); break;
+ return (rVal >>= m_aSearchOpt.deletedChars);
case MID_SEARCH_INSERTEDCHARS:
- bRet = (rVal >>= m_aSearchOpt.insertedChars); break;
+ return (rVal >>= m_aSearchOpt.insertedChars);
case MID_SEARCH_TRANSLITERATEFLAGS:
- {
- bRet = (rVal >>= nInt);
- if (bRet)
- m_aSearchOpt.transliterateFlags = static_cast<TransliterationFlags>(nInt);
- break;
- }
+ return ExtractNumericAny(rVal, m_aSearchOpt.transliterateFlags);
case MID_SEARCH_LOCALE:
- {
- bRet = (rVal >>= nInt);
- if ( bRet )
+ if (LanguageType aVal; ExtractNumericAny(rVal, aVal))
{
- if ( LanguageType(nInt) == LANGUAGE_NONE )
- {
- m_aSearchOpt.Locale = css::lang::Locale();
- }
- else
- {
- m_aSearchOpt.Locale = LanguageTag::convertToLocale( LanguageType(nInt) );
- }
+ m_aSearchOpt.Locale = (aVal == LANGUAGE_NONE) ? css::lang::Locale()
+ : LanguageTag::convertToLocale(aVal);
+ return true;
}
break;
- }
case MID_SEARCH_STARTPOINTX:
- {
- bRet = (rVal >>= m_nStartPointX);
- break;
- }
+ return (rVal >>= m_nStartPointX);
case MID_SEARCH_STARTPOINTY:
- {
- bRet = (rVal >>= m_nStartPointY);
- break;
- }
+ return (rVal >>= m_nStartPointY);
default:
OSL_FAIL( "Unknown MemberId" );
}
- return bRet;
+ return false;
}
sal_Int32 SvxSearchItem::GetStartPointX() const