include/svl/srchdefs.hxx | 5 +- include/svl/srchitem.hxx | 17 +++++++- include/svx/srchdlg.hxx | 1 offapi/com/sun/star/util/SearchDescriptor.idl | 22 ++++++++++ sc/inc/unonames.hxx | 1 sc/source/ui/unoobj/srchuno.cxx | 4 + svl/source/items/srchitem.cxx | 24 ++++++++++- svx/source/dialog/srchdlg.cxx | 55 ++++++++++++++++++++++++-- svx/uiconfig/ui/findreplacedialog.ui | 29 ++++++++++--- unotools/source/config/searchopt.cxx | 2 10 files changed, 143 insertions(+), 17 deletions(-)
New commits: commit 393f11f88648e1c7cace6224aa7afcbf9d68ddd6 Author: Eike Rathke <er...@redhat.com> Date: Fri Feb 26 00:13:07 2016 +0100 add Wildcards to Find&Replace dialog Enabled only for Calc. Writer needs to be adapted to support wildcards. The global escape character is '\' set in SvxSearchItem ctor. Change-Id: I1af78f296deff81e023ee9f0e936f5f506f80c83 diff --git a/include/svl/srchdefs.hxx b/include/svl/srchdefs.hxx index 8fb303c..8c84b03 100644 --- a/include/svl/srchdefs.hxx +++ b/include/svl/srchdefs.hxx @@ -39,11 +39,12 @@ enum class SearchOptionFlags MORE = 0x0800, SIMILARITY = 0x1000, CONTENT = 0x2000, - ALL = 0x3fff + WILDCARD = 0x4000, + ALL = 0x7fff }; namespace o3tl { - template<> struct typed_flags<SearchOptionFlags> : is_typed_flags<SearchOptionFlags, 0x3fff> {}; + template<> struct typed_flags<SearchOptionFlags> : is_typed_flags<SearchOptionFlags, 0x7fff> {}; } #endif diff --git a/include/svx/srchdlg.hxx b/include/svx/srchdlg.hxx index cc4beda..cd08fc8 100644 --- a/include/svx/srchdlg.hxx +++ b/include/svx/srchdlg.hxx @@ -180,6 +180,7 @@ private: VclPtr<CheckBox> m_pSelectionBtn; VclPtr<CheckBox> m_pBackwardsBtn; VclPtr<CheckBox> m_pRegExpBtn; + VclPtr<CheckBox> m_pWildcardBtn; VclPtr<CheckBox> m_pSimilarityBox; VclPtr<PushButton> m_pSimilarityBtn; VclPtr<CheckBox> m_pLayoutBtn; diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx index d0424bc..d54cce8 100644 --- a/svx/source/dialog/srchdlg.cxx +++ b/svx/source/dialog/srchdlg.cxx @@ -97,6 +97,7 @@ using namespace comphelper; #define MODIFY_COLUMNS 0x00002000 #define MODIFY_ALLTABLES 0x00004000 #define MODIFY_NOTES 0x00008000 +#define MODIFY_WILDCARD 0x00010000 namespace { @@ -304,6 +305,7 @@ SvxSearchDialog::SvxSearchDialog( vcl::Window* pParent, SfxChildWindow* pChildWi get(m_pSelectionBtn, "selection"); get(m_pBackwardsBtn, "backwards"); get(m_pRegExpBtn, "regexp"); + get(m_pWildcardBtn, "wildcard"); get(m_pSimilarityBox, "similarity"); get(m_pSimilarityBtn, "similaritybtn"); get(m_pLayoutBtn, "layout"); @@ -384,6 +386,7 @@ void SvxSearchDialog::dispose() m_pSelectionBtn.clear(); m_pBackwardsBtn.clear(); m_pRegExpBtn.clear(); + m_pWildcardBtn.clear(); m_pSimilarityBox.clear(); m_pSimilarityBtn.clear(); m_pLayoutBtn.clear(); @@ -552,6 +555,7 @@ bool SvxSearchDialog::Close() aOpt.SetWholeWordsOnly ( m_pWordBtn->IsChecked() ); aOpt.SetBackwards ( m_pBackwardsBtn->IsChecked() ); aOpt.SetUseRegularExpression ( m_pRegExpBtn->IsChecked() ); + aOpt.SetUseWildcard ( m_pWildcardBtn->IsChecked() ); aOpt.SetSearchForStyles ( m_pLayoutBtn->IsChecked() ); aOpt.SetSimilaritySearch ( m_pSimilarityBox->IsChecked() ); aOpt.SetUseAsianOptions ( m_pJapOptionsCB->IsChecked() ); @@ -651,6 +655,7 @@ void SvxSearchDialog::InitControls_Impl() m_pSelectionBtn->SetClickHdl( aLink2 ); m_pMatchCaseCB->SetClickHdl( aLink2 ); m_pRegExpBtn->SetClickHdl( aLink2 ); + m_pWildcardBtn->SetClickHdl( aLink2 ); m_pBackwardsBtn->SetClickHdl( aLink2 ); m_pNotesBtn->SetClickHdl( aLink2 ); m_pSimilarityBox->SetClickHdl( aLink2 ); @@ -706,6 +711,7 @@ void SvxSearchDialog::ShowOptionalControls_Impl() m_pNotesBtn->Show(bWriterApp); m_pBackwardsBtn->Show(); m_pRegExpBtn->Show(!bDrawApp); + m_pWildcardBtn->Show(bCalcApp); /* TODO:WILDCARD enable for other apps if hey handle it */ m_pSimilarityBox->Show(); m_pSimilarityBtn->Show(); m_pSelectionBtn->Show(); @@ -780,6 +786,8 @@ void SvxSearchDialog::Init_Impl( bool bSearchPattern ) m_pSelectionBtn->Check( pSearchItem->GetSelection() ); if ( ( nModifyFlag & MODIFY_REGEXP ) == 0 ) m_pRegExpBtn->Check( pSearchItem->GetRegExp() ); + if ( ( nModifyFlag & MODIFY_WILDCARD ) == 0 ) + m_pWildcardBtn->Check( pSearchItem->GetWildcard() ); if ( ( nModifyFlag & MODIFY_LAYOUT ) == 0 ) m_pLayoutBtn->Check( pSearchItem->GetPattern() ); if (m_pNotesBtn->IsChecked()) @@ -854,6 +862,7 @@ void SvxSearchDialog::Init_Impl( bool bSearchPattern ) m_pSearchAllBtn->Hide(); m_pRegExpBtn->Hide(); + m_pWildcardBtn->Hide(); m_pLayoutBtn->Hide(); // only look for formatting in Writer @@ -863,6 +872,8 @@ void SvxSearchDialog::Init_Impl( bool bSearchPattern ) } else { + m_pWildcardBtn->Hide(); /* TODO:WILDCARD do not hide for other apps if they handle it */ + if ( !pSearchList ) { // Get attribute sets, if it not has been done already @@ -942,6 +953,7 @@ void SvxSearchDialog::Init_Impl( bool bSearchPattern ) m_pWordBtn->Disable(); m_pRegExpBtn->Disable(); + m_pWildcardBtn->Disable(); m_pMatchCaseCB->Disable(); bDisableSearch = !m_pSearchTmplLB->GetEntryCount(); @@ -980,6 +992,7 @@ void SvxSearchDialog::Init_Impl( bool bSearchPattern ) m_pReplaceTmplLB->Hide(); EnableControl_Impl(m_pRegExpBtn); + EnableControl_Impl(m_pWildcardBtn); EnableControl_Impl(m_pMatchCaseCB); if ( m_pRegExpBtn->IsChecked() ) @@ -1121,6 +1134,8 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) m_pSimilarityBtn->Enable(); m_pRegExpBtn->Check( false ); m_pRegExpBtn->Disable(); + m_pWildcardBtn->Check( false ); + m_pWildcardBtn->Disable(); EnableControl_Impl(m_pWordBtn); if ( m_pLayoutBtn->IsChecked() ) @@ -1129,6 +1144,7 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) m_pLayoutBtn->Check( false ); } m_pRegExpBtn->Disable(); + m_pWildcardBtn->Disable(); m_pLayoutBtn->Disable(); m_pFormatBtn->Disable(); m_pNoFormatBtn->Disable(); @@ -1137,6 +1153,7 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) else { EnableControl_Impl(m_pRegExpBtn); + EnableControl_Impl(m_pWildcardBtn); if (!m_pNotesBtn->IsChecked()) EnableControl_Impl(m_pLayoutBtn); EnableControl_Impl(m_pFormatBtn); @@ -1167,6 +1184,8 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) m_pWordBtn->Disable(); m_pRegExpBtn->Check( false ); m_pRegExpBtn->Disable(); + m_pWildcardBtn->Check( false ); + m_pWildcardBtn->Disable(); m_pMatchCaseCB->Check( false ); m_pMatchCaseCB->Disable(); m_pNotesBtn->Disable(); @@ -1182,6 +1201,7 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) else { EnableControl_Impl(m_pRegExpBtn); + EnableControl_Impl(m_pWildcardBtn); EnableControl_Impl(m_pMatchCaseCB); EnableControl_Impl(m_pNotesBtn); @@ -1189,6 +1209,17 @@ void SvxSearchDialog::ClickHdl_Impl(void* pCtrl) { m_pWordBtn->Check( false ); m_pWordBtn->Disable(); + m_pWildcardBtn->Check( false ); + m_pWildcardBtn->Disable(); + m_pSimilarityBox->Check( false ); + m_pSimilarityBox->Disable(); + m_pSimilarityBtn->Disable(); + } + else if ( m_pWildcardBtn->IsChecked() ) + { + m_pRegExpBtn->Check( false ); + m_pRegExpBtn->Disable(); + m_pSimilarityBox->Check( false ); m_pSimilarityBox->Disable(); m_pSimilarityBtn->Disable(); } @@ -1254,9 +1285,12 @@ IMPL_LINK_TYPED( SvxSearchDialog, CommandHdl_Impl, Button *, pBtn, void ) } pSearchItem->SetRegExp( false ); + pSearchItem->SetWildcard( false ); pSearchItem->SetLevenshtein( false ); if (GetCheckBoxValue(m_pRegExpBtn)) pSearchItem->SetRegExp( true ); + else if (GetCheckBoxValue(m_pWildcardBtn)) + pSearchItem->SetWildcard( true ); else if (GetCheckBoxValue(m_pSimilarityBox)) pSearchItem->SetLevenshtein( true ); @@ -1652,6 +1686,10 @@ void SvxSearchDialog::EnableControls_Impl( const SearchOptionFlags nFlags ) m_pRegExpBtn->Enable(); else m_pRegExpBtn->Disable(); + if ( ( SearchOptionFlags::WILDCARD & nOptions ) ) + m_pWildcardBtn->Enable(); + else + m_pWildcardBtn->Disable(); if ( ( SearchOptionFlags::EXACT & nOptions ) ) m_pMatchCaseCB->Enable(); else @@ -1735,11 +1773,17 @@ void SvxSearchDialog::EnableControl_Impl( Control* pCtrl ) return; } if ( m_pRegExpBtn == pCtrl && ( SearchOptionFlags::REG_EXP & nOptions ) - && !m_pSimilarityBox->IsChecked()) + && !m_pSimilarityBox->IsChecked() && !m_pWildcardBtn->IsChecked()) { m_pRegExpBtn->Enable(); return; } + if ( m_pWildcardBtn == pCtrl && ( SearchOptionFlags::WILDCARD & nOptions ) + && !m_pSimilarityBox->IsChecked() && !m_pRegExpBtn->IsChecked()) + { + m_pWildcardBtn->Enable(); + return; + } if ( m_pMatchCaseCB == pCtrl && ( SearchOptionFlags::EXACT & nOptions ) ) { if (!m_pJapOptionsCB->IsChecked()) @@ -1772,8 +1816,8 @@ void SvxSearchDialog::EnableControl_Impl( Control* pCtrl ) m_pNoFormatBtn->Enable(); return; } - if ( m_pSimilarityBox == pCtrl && - ( SearchOptionFlags::SIMILARITY & nOptions ) ) + if ( m_pSimilarityBox == pCtrl && ( SearchOptionFlags::SIMILARITY & nOptions ) + && !m_pRegExpBtn->IsChecked() && !m_pWildcardBtn->IsChecked()) { m_pSimilarityBox->Enable(); @@ -2132,6 +2176,8 @@ void SvxSearchDialog::SetModifyFlag_Impl( const Control* pCtrl ) nModifyFlag |= MODIFY_SELECTION; else if ( m_pRegExpBtn == pCtrl ) nModifyFlag |= MODIFY_REGEXP; + else if ( m_pWildcardBtn == pCtrl ) + nModifyFlag |= MODIFY_WILDCARD; else if ( m_pLayoutBtn == pCtrl ) nModifyFlag |= MODIFY_LAYOUT; else if ( m_pSimilarityBox == pCtrl ) @@ -2169,9 +2215,12 @@ void SvxSearchDialog::SaveToModule_Impl() } pSearchItem->SetRegExp( false ); + pSearchItem->SetWildcard( false ); pSearchItem->SetLevenshtein( false ); if (GetCheckBoxValue(m_pRegExpBtn)) pSearchItem->SetRegExp( true ); + else if (GetCheckBoxValue(m_pWildcardBtn)) + pSearchItem->SetWildcard( true ); else if (GetCheckBoxValue(m_pSimilarityBox)) pSearchItem->SetLevenshtein( true ); diff --git a/svx/uiconfig/ui/findreplacedialog.ui b/svx/uiconfig/ui/findreplacedialog.ui index aa25614..bf2989c 100644 --- a/svx/uiconfig/ui/findreplacedialog.ui +++ b/svx/uiconfig/ui/findreplacedialog.ui @@ -510,6 +510,21 @@ </packing> </child> <child> + <object class="GtkCheckButton" id="wildcard"> + <property name="label" translatable="yes">Wil_dcards</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="no_show_all">True</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> <object class="GtkButtonBox" id="buttonbox1"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -561,7 +576,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">5</property> + <property name="top_attach">6</property> <property name="width">2</property> </packing> </child> @@ -607,7 +622,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">4</property> + <property name="top_attach">5</property> </packing> </child> <child> @@ -652,7 +667,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">2</property> + <property name="top_attach">3</property> </packing> </child> <child> @@ -742,7 +757,7 @@ </object> <packing> <property name="left_attach">0</property> - <property name="top_attach">3</property> + <property name="top_attach">4</property> </packing> </child> <child> @@ -757,7 +772,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="top_attach">3</property> + <property name="top_attach">4</property> </packing> </child> <child> @@ -772,7 +787,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="top_attach">4</property> + <property name="top_attach">5</property> </packing> </child> </object> @@ -823,7 +838,7 @@ <property name="can_focus">False</property> <property name="no_show_all">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Search _direction:</property> + <property name="label" translatable="yes">Search direction:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">calcsearchin</property> </object> commit 82e23b52acf52fe8334d0fcba62d6b956d222445 Author: Eike Rathke <er...@redhat.com> Date: Thu Feb 25 21:22:53 2016 +0100 add missing comma this ended up as IsSearchFormattedIsUseWildcard ... Change-Id: Iaa39f51b0e5ef49d65a636b0a2d926d30a2a1dd8 diff --git a/unotools/source/config/searchopt.cxx b/unotools/source/config/searchopt.cxx index be8716f..79e1030 100644 --- a/unotools/source/config/searchopt.cxx +++ b/unotools/source/config/searchopt.cxx @@ -150,7 +150,7 @@ Sequence< OUString > SvtSearchOptions_Impl::GetPropertyNames() "IsNotes", // 25 "IsIgnoreDiacritics_CTL", // 26 "IsIgnoreKashida_CTL", // 27 - "IsSearchFormatted" // 28 + "IsSearchFormatted", // 28 "IsUseWildcard" // 29 }; commit 8555034abf9e53190fa559c1a705868766a5677f Author: Eike Rathke <er...@redhat.com> Date: Thu Feb 25 20:06:23 2016 +0100 handle SearchWildcard API option Change-Id: I5350167638a5831e1f125728397fecfc637ee004 diff --git a/sc/inc/unonames.hxx b/sc/inc/unonames.hxx index c031789..415399e 100644 --- a/sc/inc/unonames.hxx +++ b/sc/inc/unonames.hxx @@ -368,6 +368,7 @@ #define SC_UNO_SRCHBYROW "SearchByRow" #define SC_UNO_SRCHCASE "SearchCaseSensitive" #define SC_UNO_SRCHREGEXP "SearchRegularExpression" +#define SC_UNO_SRCHWILDCARD "SearchWildcard" #define SC_UNO_SRCHSIM "SearchSimilarity" #define SC_UNO_SRCHSIMADD "SearchSimilarityAdd" #define SC_UNO_SRCHSIMEX "SearchSimilarityExchange" diff --git a/sc/source/ui/unoobj/srchuno.cxx b/sc/source/ui/unoobj/srchuno.cxx index edc4809..1ad31eb 100644 --- a/sc/source/ui/unoobj/srchuno.cxx +++ b/sc/source/ui/unoobj/srchuno.cxx @@ -46,6 +46,7 @@ static const SfxItemPropertyMapEntry* lcl_GetSearchPropertyMap() {OUString(SC_UNO_SRCHBYROW), 0, cppu::UnoType<bool>::get(), 0, 0}, {OUString(SC_UNO_SRCHCASE), 0, cppu::UnoType<bool>::get(), 0, 0}, {OUString(SC_UNO_SRCHREGEXP), 0, cppu::UnoType<bool>::get(), 0, 0}, + {OUString(SC_UNO_SRCHWILDCARD), 0, cppu::UnoType<bool>::get(), 0, 0}, {OUString(SC_UNO_SRCHSIM), 0, cppu::UnoType<bool>::get(), 0, 0}, {OUString(SC_UNO_SRCHSIMADD), 0, cppu::UnoType<sal_Int16>::get(), 0, 0}, {OUString(SC_UNO_SRCHSIMEX), 0, cppu::UnoType<sal_Int16>::get(), 0, 0}, @@ -74,6 +75,7 @@ ScCellSearchObj::ScCellSearchObj() : pSearchItem->SetBackward(false); pSearchItem->SetSelection(false); pSearchItem->SetRegExp(false); + pSearchItem->SetWildcard(false); pSearchItem->SetPattern(false); pSearchItem->SetLevenshtein(false); pSearchItem->SetLEVRelaxed(false); @@ -146,6 +148,7 @@ void SAL_CALL ScCellSearchObj::setPropertyValue( else if (aString == SC_UNO_SRCHBYROW) pSearchItem->SetRowDirection( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if (aString == SC_UNO_SRCHCASE) pSearchItem->SetExact( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if (aString == SC_UNO_SRCHREGEXP) pSearchItem->SetRegExp( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); + else if (aString == SC_UNO_SRCHWILDCARD) pSearchItem->SetWildcard( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if (aString == SC_UNO_SRCHSIM) pSearchItem->SetLevenshtein( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if (aString == SC_UNO_SRCHSIMREL) pSearchItem->SetLEVRelaxed( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if (aString == SC_UNO_SRCHSTYLES) pSearchItem->SetPattern( ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); @@ -170,6 +173,7 @@ uno::Any SAL_CALL ScCellSearchObj::getPropertyValue( const OUString& aPropertyNa else if (aString == SC_UNO_SRCHBYROW) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetRowDirection() ); else if (aString == SC_UNO_SRCHCASE) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetExact() ); else if (aString == SC_UNO_SRCHREGEXP) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetRegExp() ); + else if (aString == SC_UNO_SRCHWILDCARD) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetWildcard() ); else if (aString == SC_UNO_SRCHSIM) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->IsLevenshtein() ); else if (aString == SC_UNO_SRCHSIMREL) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->IsLEVRelaxed() ); else if (aString == SC_UNO_SRCHSTYLES) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetPattern() ); commit ced11176337a1b37ed32ca9ea2aa3af0b2459b02 Author: Eike Rathke <er...@redhat.com> Date: Thu Feb 25 19:51:31 2016 +0100 add optional boolean SearchWildcard to css::util::SearchDescriptor service Change-Id: Iec1b0d8c0f03074acea2640a6e5d309921f04c59 diff --git a/offapi/com/sun/star/util/SearchDescriptor.idl b/offapi/com/sun/star/util/SearchDescriptor.idl index 4057420..8d7e68d 100644 --- a/offapi/com/sun/star/util/SearchDescriptor.idl +++ b/offapi/com/sun/star/util/SearchDescriptor.idl @@ -49,6 +49,9 @@ published service SearchDescriptor [property] boolean SearchWords; /** If `TRUE`, the search string is evaluated as a regular expression. + + <p> SearchRegularExpression, SearchWildcard and SearchSimilarity + are mutually exclusive, only one can be `TRUE` at the same time. </p> */ [property] boolean SearchRegularExpression; @@ -72,6 +75,9 @@ published service SearchDescriptor <li>SearchSimilarityExchange </li> </ul> + + <p> SearchRegularExpression, SearchWildcard and SearchSimilarity + are mutually exclusive, only one can be `TRUE` at the same time. </p> */ [property] boolean SearchSimilarity; @@ -107,6 +113,22 @@ published service SearchDescriptor */ [property] short SearchSimilarityExchange; + /** If `TRUE`, the search string is evaluated as a wildcard pattern. + + <p> Wildcards are '*' (asterisk) for any sequence of characters, + including an empty sequence, and '?' (question mark) for exactly + one character. Escape character is '\' (U+005C REVERSE SOLIDUS) + aka backslash, it escapes the special meaning of a question + mark, asterisk or escape character that follows immediately + after the escape character. </p> + + <p> SearchRegularExpression, SearchWildcard and SearchSimilarity + are mutually exclusive, only one can be `TRUE` at the same time. </p> + + @since LibreOffice 5.2 + */ + [optional, property] boolean SearchWildcard; + }; commit 3a0abd3019ec3ca29b8f1378cdb32ebf741e6306 Author: Eike Rathke <er...@redhat.com> Date: Thu Feb 25 18:02:25 2016 +0100 add SvxSearchItem::GetWildcard() SetWildcard() Change-Id: I0aeb7fbcedad381a385ffe6649ac51e8c961ca11 diff --git a/include/svl/srchitem.hxx b/include/svl/srchitem.hxx index dd7afac..6c997d5 100644 --- a/include/svl/srchitem.hxx +++ b/include/svl/srchitem.hxx @@ -135,6 +135,9 @@ public: inline bool GetRegExp() const; void SetRegExp( bool bVal ); + inline bool GetWildcard() const; + void SetWildcard( bool bVal ); + bool GetPattern() const { return m_bPattern; } void SetPattern(bool bNewPattern) { m_bPattern = bNewPattern; } @@ -239,7 +242,17 @@ bool SvxSearchItem::GetRegExp() const // adapted to use only new types. assert( (m_aSearchOpt.algorithmType == css::util::SearchAlgorithms_REGEXP) == (m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::REGEXP)); - return m_aSearchOpt.algorithmType == css::util::SearchAlgorithms_REGEXP ; + return m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::REGEXP ; +} + +bool SvxSearchItem::GetWildcard() const +{ + // Ensure old and new algorithm types are in sync, in this case old is not + // REGEXP or APPROXIMATE. + assert( (m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::WILDCARD) ? + (m_aSearchOpt.algorithmType != css::util::SearchAlgorithms_REGEXP && + m_aSearchOpt.algorithmType != css::util::SearchAlgorithms_APPROXIMATE) : true ); + return m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::WILDCARD ; } bool SvxSearchItem::IsLEVRelaxed() const @@ -283,7 +296,7 @@ bool SvxSearchItem::IsLevenshtein() const // adapted to use only new types. assert( (m_aSearchOpt.algorithmType == css::util::SearchAlgorithms_APPROXIMATE) == (m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::APPROXIMATE)); - return m_aSearchOpt.algorithmType == css::util::SearchAlgorithms_APPROXIMATE; + return m_aSearchOpt.AlgorithmType2 == css::util::SearchAlgorithms2::APPROXIMATE; } const css::util::SearchOptions2 & SvxSearchItem::GetSearchOptions() const diff --git a/svl/source/items/srchitem.cxx b/svl/source/items/srchitem.cxx index 99d1a56..881c464 100644 --- a/svl/source/items/srchitem.cxx +++ b/svl/source/items/srchitem.cxx @@ -137,6 +137,11 @@ SvxSearchItem::SvxSearchItem( const sal_uInt16 nId ) : m_bAsianOptions = aOpt.IsUseAsianOptions(); m_bNotes = aOpt.IsNotes(); + if (aOpt.IsUseWildcard()) + { + m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::WILDCARD; + m_aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; // something valid + } if (aOpt.IsUseRegularExpression()) { m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::REGEXP; @@ -348,7 +353,22 @@ void SvxSearchItem::SetRegExp( bool bVal ) m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::REGEXP; m_aSearchOpt.algorithmType = SearchAlgorithms_REGEXP; } - else if ( SearchAlgorithms_REGEXP == m_aSearchOpt.algorithmType ) + else if ( SearchAlgorithms2::REGEXP == m_aSearchOpt.AlgorithmType2 ) + { + m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::ABSOLUTE; + m_aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; + } +} + + +void SvxSearchItem::SetWildcard( bool bVal ) +{ + if ( bVal ) + { + m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::WILDCARD; + m_aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; // something valid + } + else if ( SearchAlgorithms2::REGEXP == m_aSearchOpt.AlgorithmType2 ) { m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::ABSOLUTE; m_aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; @@ -372,7 +392,7 @@ void SvxSearchItem::SetLevenshtein( bool bVal ) m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::APPROXIMATE; m_aSearchOpt.algorithmType = SearchAlgorithms_APPROXIMATE; } - else if ( SearchAlgorithms_APPROXIMATE == m_aSearchOpt.algorithmType ) + else if ( SearchAlgorithms2::APPROXIMATE == m_aSearchOpt.AlgorithmType2 ) { m_aSearchOpt.AlgorithmType2 = SearchAlgorithms2::ABSOLUTE; m_aSearchOpt.algorithmType = SearchAlgorithms_ABSOLUTE; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits