| /************************************************************** |
| * |
| * 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_sw.hxx" |
| |
| #include "unosrch.hxx" |
| #include <doc.hxx> |
| #include <hints.hxx> |
| #include <unomap.hxx> |
| #include <unobaseclass.hxx> |
| #include <unomid.h> |
| |
| #include <vos/mutex.hxx> |
| #include <vcl/svapp.hxx> |
| #include "editeng/unolingu.hxx" |
| #include <com/sun/star/util/SearchOptions.hpp> |
| #include <com/sun/star/util/SearchFlags.hpp> |
| #include <com/sun/star/i18n/TransliterationModules.hpp> |
| #include <com/sun/star/beans/PropertyAttribute.hpp> |
| |
| using namespace ::com::sun::star; |
| using ::rtl::OUString; |
| |
| /****************************************************************************** |
| * |
| ******************************************************************************/ |
| |
| /* -----------------23.06.99 12:19------------------- |
| |
| --------------------------------------------------*/ |
| class SwSearchProperties_Impl |
| { |
| beans::PropertyValue** pValueArr; // |
| sal_uInt32 nArrLen; |
| const PropertyEntryVector_t aPropertyEntries; |
| public: |
| SwSearchProperties_Impl(); |
| ~SwSearchProperties_Impl(); |
| |
| void SetProperties(const uno::Sequence< beans::PropertyValue >& aSearchAttribs) |
| throw( beans::UnknownPropertyException, lang::IllegalArgumentException, uno::RuntimeException ); |
| const uno::Sequence< beans::PropertyValue > GetProperties() const; |
| |
| void FillItemSet(SfxItemSet& rSet, sal_Bool bIsValueSearch) const; |
| sal_Bool HasAttributes() const; |
| }; |
| /* -----------------23.06.99 13:08------------------- |
| |
| --------------------------------------------------*/ |
| SwSearchProperties_Impl::SwSearchProperties_Impl() : |
| nArrLen(0), |
| aPropertyEntries( aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR)->getPropertyMap()->getPropertyEntries()) |
| { |
| nArrLen = aPropertyEntries.size(); |
| pValueArr = new beans::PropertyValue*[nArrLen]; |
| for(sal_uInt32 i = 0; i < nArrLen; i++) |
| pValueArr[i] = 0; |
| } |
| /* -----------------23.06.99 13:08------------------- |
| |
| --------------------------------------------------*/ |
| SwSearchProperties_Impl::~SwSearchProperties_Impl() |
| { |
| for(sal_uInt32 i = 0; i < nArrLen; i++) |
| delete pValueArr[i]; |
| delete[] pValueArr; |
| } |
| /* -----------------23.06.99 13:09------------------- |
| |
| --------------------------------------------------*/ |
| void SwSearchProperties_Impl::SetProperties(const uno::Sequence< beans::PropertyValue >& aSearchAttribs) |
| throw( beans::UnknownPropertyException, lang::IllegalArgumentException, uno::RuntimeException ) |
| { |
| const beans::PropertyValue* pProps = aSearchAttribs.getConstArray(); |
| sal_uInt32 i; |
| |
| //delete all existing values |
| for( i = 0; i < nArrLen; i++) |
| { |
| delete pValueArr[i]; |
| pValueArr[i] = 0; |
| } |
| |
| sal_uInt32 nLen = aSearchAttribs.getLength(); |
| for(i = 0; i < nLen; i++) |
| { |
| sal_uInt16 nIndex = 0; |
| PropertyEntryVector_t::const_iterator aIt = aPropertyEntries.begin(); |
| while(pProps[i].Name != aIt->sName) |
| { |
| ++aIt; |
| nIndex++; |
| if( aIt == aPropertyEntries.end() ) |
| throw beans::UnknownPropertyException(); |
| } |
| pValueArr[nIndex] = new beans::PropertyValue(pProps[i]); |
| } |
| } |
| /* -----------------23.06.99 13:08------------------- |
| |
| --------------------------------------------------*/ |
| const uno::Sequence< beans::PropertyValue > SwSearchProperties_Impl::GetProperties() const |
| { |
| sal_uInt32 nPropCount = 0; |
| sal_uInt32 i; |
| for( i = 0; i < nArrLen; i++) |
| if(pValueArr[i]) |
| nPropCount++; |
| |
| uno::Sequence< beans::PropertyValue > aRet(nPropCount); |
| beans::PropertyValue* pProps = aRet.getArray(); |
| nPropCount = 0; |
| for(i = 0; i < nArrLen; i++) |
| { |
| if(pValueArr[i]) |
| { |
| pProps[nPropCount++] = *(pValueArr[i]); |
| } |
| } |
| return aRet; |
| } |
| /* -----------------23.06.99 13:06------------------- |
| |
| --------------------------------------------------*/ |
| void SwSearchProperties_Impl::FillItemSet(SfxItemSet& rSet, sal_Bool bIsValueSearch) const |
| { |
| // |
| |
| SfxPoolItem* pBoxItem = 0, |
| *pBreakItem = 0, |
| *pAutoKernItem = 0, |
| *pWLineItem = 0, |
| *pTabItem = 0, |
| *pSplitItem = 0, |
| *pRegItem = 0, |
| *pLineSpaceItem = 0, |
| *pLineNumItem = 0, |
| *pKeepItem = 0, |
| *pLRItem = 0, |
| *pULItem = 0, |
| *pBackItem = 0, |
| *pAdjItem = 0, |
| *pDescItem = 0, |
| *pInetItem = 0, |
| *pDropItem = 0, |
| *pWeightItem = 0, |
| *pULineItem = 0, |
| *pOLineItem = 0, |
| *pCharFmtItem = 0, |
| *pShadItem = 0, |
| *pPostItem = 0, |
| *pNHyphItem = 0, |
| *pLangItem = 0, |
| *pKernItem = 0, |
| *pFontSizeItem = 0, |
| *pFontItem = 0, |
| *pBlinkItem = 0, |
| *pEscItem = 0, |
| *pCrossedOutItem = 0, |
| *pContourItem = 0, |
| *pCharColorItem = 0, |
| *pCasemapItem = 0, |
| *pBrushItem = 0, |
| *pFontCJKItem = 0, |
| *pFontSizeCJKItem = 0, |
| *pCJKLangItem = 0, |
| *pCJKPostureItem = 0, |
| *pCJKWeightItem = 0, |
| *pFontCTLItem = 0, |
| *pFontSizeCTLItem = 0, |
| *pCTLLangItem = 0, |
| *pCTLPostureItem = 0, |
| *pCTLWeightItem = 0; |
| |
| PropertyEntryVector_t::const_iterator aIt = aPropertyEntries.begin(); |
| for(sal_uInt32 i = 0; i < nArrLen; i++, ++aIt) |
| { |
| if(pValueArr[i]) |
| { |
| SfxPoolItem* pTempItem = 0; |
| switch(aIt->nWID) |
| { |
| case RES_BOX: |
| if(!pBoxItem) |
| pBoxItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pBoxItem; |
| break; |
| case RES_BREAK: |
| if(!pBreakItem) |
| pBreakItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pBreakItem; |
| break; |
| case RES_CHRATR_AUTOKERN: |
| if(!pAutoKernItem) |
| pAutoKernItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pAutoKernItem; |
| break; |
| case RES_CHRATR_BACKGROUND: |
| if(!pBrushItem) |
| pBrushItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pBrushItem; |
| break; |
| case RES_CHRATR_CASEMAP: |
| if(!pCasemapItem) |
| pCasemapItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCasemapItem; |
| break; |
| case RES_CHRATR_COLOR: |
| if(!pCharColorItem) |
| pCharColorItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCharColorItem; |
| break; |
| case RES_CHRATR_CONTOUR: |
| if(!pContourItem) |
| pContourItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pContourItem; |
| break; |
| case RES_CHRATR_CROSSEDOUT: |
| if(!pCrossedOutItem) |
| pCrossedOutItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCrossedOutItem; |
| break; |
| case RES_CHRATR_ESCAPEMENT: |
| if(!pEscItem) |
| pEscItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pEscItem; |
| break; |
| case RES_CHRATR_BLINK: |
| if(!pBlinkItem) |
| pBlinkItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pBlinkItem; |
| break; |
| case RES_CHRATR_FONT: |
| if(!pFontItem) |
| pFontItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontItem; |
| break; |
| case RES_CHRATR_FONTSIZE: |
| if(!pFontSizeItem) |
| pFontSizeItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontSizeItem; |
| break; |
| case RES_CHRATR_KERNING: |
| if(!pKernItem) |
| pKernItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pKernItem; |
| break; |
| case RES_CHRATR_LANGUAGE: |
| if(!pLangItem) |
| pLangItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pLangItem; |
| break; |
| case RES_CHRATR_NOHYPHEN: |
| if(!pNHyphItem) |
| pNHyphItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pNHyphItem; |
| break; |
| case RES_CHRATR_POSTURE: |
| if(!pPostItem) |
| pPostItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pPostItem; |
| break; |
| case RES_CHRATR_SHADOWED: |
| if(!pShadItem) |
| pShadItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pShadItem; |
| break; |
| case RES_TXTATR_CHARFMT: |
| if(!pCharFmtItem) |
| pCharFmtItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCharFmtItem; |
| break; |
| case RES_CHRATR_UNDERLINE: |
| if(!pULineItem) |
| pULineItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pULineItem; |
| break; |
| case RES_CHRATR_OVERLINE: |
| if(!pOLineItem) |
| pOLineItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pOLineItem; |
| break; |
| case RES_CHRATR_WEIGHT: |
| if(!pWeightItem) |
| pWeightItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pWeightItem; |
| break; |
| case RES_PARATR_DROP: |
| if(!pDropItem) |
| pDropItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pDropItem; |
| break; |
| case RES_TXTATR_INETFMT: |
| if(!pInetItem) |
| pInetItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pInetItem; |
| break; |
| case RES_PAGEDESC: |
| if(!pDescItem) |
| pDescItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pDescItem; |
| break; |
| case RES_PARATR_ADJUST: |
| if(!pAdjItem) |
| pAdjItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pAdjItem; |
| break; |
| case RES_BACKGROUND: |
| if(!pBackItem) |
| pBackItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pBackItem; |
| break; |
| case RES_UL_SPACE: |
| if(!pULItem) |
| pULItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pULItem; |
| break; |
| case RES_LR_SPACE: |
| if(!pLRItem) |
| pLRItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pLRItem; |
| break; |
| case RES_KEEP: |
| if(!pKeepItem) |
| pKeepItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pKeepItem; |
| break; |
| case RES_LINENUMBER: |
| if(!pLineNumItem) |
| pLineNumItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pLineNumItem; |
| break; |
| case RES_PARATR_LINESPACING: |
| if(!pLineSpaceItem) |
| pLineSpaceItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pLineSpaceItem; |
| break; |
| case RES_PARATR_REGISTER: |
| if(!pRegItem) |
| pRegItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pRegItem; |
| break; |
| case RES_PARATR_SPLIT: |
| if(!pSplitItem) |
| pSplitItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pSplitItem; |
| break; |
| case RES_PARATR_TABSTOP: |
| if(!pTabItem) |
| pTabItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pTabItem; |
| break; |
| case RES_CHRATR_WORDLINEMODE: |
| if(!pWLineItem) |
| pWLineItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pWLineItem; |
| break; |
| case RES_CHRATR_CJK_FONT: |
| if(!pFontCJKItem ) |
| pFontCJKItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontCJKItem; |
| break; |
| case RES_CHRATR_CJK_FONTSIZE: |
| if(!pFontSizeCJKItem ) |
| pFontSizeCJKItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontSizeCJKItem; |
| break; |
| case RES_CHRATR_CJK_LANGUAGE: |
| if(!pCJKLangItem ) |
| pCJKLangItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCJKLangItem; |
| break; |
| case RES_CHRATR_CJK_POSTURE: |
| if(!pCJKPostureItem ) |
| pCJKPostureItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCJKPostureItem; |
| break; |
| case RES_CHRATR_CJK_WEIGHT: |
| if(!pCJKWeightItem ) |
| pCJKWeightItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCJKWeightItem; |
| break; |
| case RES_CHRATR_CTL_FONT: |
| if(!pFontCTLItem ) |
| pFontCTLItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontCTLItem; |
| break; |
| case RES_CHRATR_CTL_FONTSIZE: |
| if(!pFontSizeCTLItem ) |
| pFontSizeCTLItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pFontSizeCTLItem; |
| break; |
| case RES_CHRATR_CTL_LANGUAGE: |
| if(!pCTLLangItem ) |
| pCTLLangItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCTLLangItem; |
| break; |
| case RES_CHRATR_CTL_POSTURE: |
| if(!pCTLPostureItem ) |
| pCTLPostureItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCTLPostureItem; |
| break; |
| case RES_CHRATR_CTL_WEIGHT: |
| if(!pCTLWeightItem ) |
| pCTLWeightItem = rSet.GetPool()->GetDefaultItem(aIt->nWID).Clone(); |
| pTempItem = pCTLWeightItem; |
| break; |
| } |
| if(pTempItem) |
| { |
| if(bIsValueSearch) |
| { |
| pTempItem->PutValue(pValueArr[i]->Value, aIt->nMemberId); |
| rSet.Put(*pTempItem); |
| } |
| else |
| rSet.InvalidateItem( pTempItem->Which() ); |
| } |
| } |
| } |
| delete pBoxItem; |
| delete pBreakItem; |
| delete pBreakItem ; |
| delete pAutoKernItem ; |
| delete pWLineItem; |
| delete pTabItem; |
| delete pSplitItem; |
| delete pRegItem; |
| delete pLineSpaceItem ; |
| delete pLineNumItem ; |
| delete pKeepItem; |
| delete pLRItem ; |
| delete pULItem ; |
| delete pBackItem; |
| delete pAdjItem; |
| delete pDescItem; |
| delete pInetItem; |
| delete pDropItem; |
| delete pWeightItem; |
| delete pULineItem; |
| delete pOLineItem; |
| delete pCharFmtItem ; |
| delete pShadItem; |
| delete pPostItem; |
| delete pNHyphItem; |
| delete pLangItem; |
| delete pKernItem; |
| delete pFontSizeItem ; |
| delete pFontItem; |
| delete pBlinkItem; |
| delete pEscItem; |
| delete pCrossedOutItem; |
| delete pContourItem ; |
| delete pCharColorItem; |
| delete pCasemapItem ; |
| delete pBrushItem ; |
| } |
| /* -----------------23.06.99 14:18------------------- |
| |
| --------------------------------------------------*/ |
| sal_Bool SwSearchProperties_Impl::HasAttributes() const |
| { |
| for(sal_uInt32 i = 0; i < nArrLen; i++) |
| if(pValueArr[i]) |
| return sal_True; |
| return sal_False; |
| } |
| |
| /*-- 14.12.98 13:07:10 --------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| SwXTextSearch::SwXTextSearch() : |
| pSearchProperties( new SwSearchProperties_Impl), |
| pReplaceProperties( new SwSearchProperties_Impl), |
| m_pPropSet(aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_SEARCH)), |
| bAll(sal_False), |
| bWord(sal_False), |
| bBack(sal_False), |
| bExpr(sal_False), |
| bCase(sal_False), |
| bStyles(sal_False), |
| bSimilarity(sal_False), |
| bLevRelax(sal_False), |
| nLevExchange(2), |
| nLevAdd(2), |
| nLevRemove(2), |
| bIsValueSearch(sal_True) |
| { |
| } |
| /*-- 14.12.98 13:07:12 --------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| SwXTextSearch::~SwXTextSearch() |
| { |
| delete pSearchProperties; |
| delete pReplaceProperties; |
| } |
| /* -----------------------------10.03.00 18:02-------------------------------- |
| |
| ---------------------------------------------------------------------------*/ |
| const uno::Sequence< sal_Int8 > & SwXTextSearch::getUnoTunnelId() |
| { |
| static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); |
| return aSeq; |
| } |
| /* -----------------------------10.03.00 18:04-------------------------------- |
| |
| ---------------------------------------------------------------------------*/ |
| sal_Int64 SAL_CALL SwXTextSearch::getSomething( const uno::Sequence< sal_Int8 >& rId ) |
| throw(uno::RuntimeException) |
| { |
| if( rId.getLength() == 16 |
| && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), |
| rId.getConstArray(), 16 ) ) |
| { |
| return sal::static_int_cast< sal_Int64 >( reinterpret_cast< sal_IntPtr >(this) ); |
| } |
| return 0; |
| } |
| /*-- 14.12.98 13:07:12--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| OUString SwXTextSearch::getSearchString(void) throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| return sSearchText; |
| } |
| /*-- 14.12.98 13:07:12--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setSearchString(const OUString& rString) |
| throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| sSearchText = String(rString); |
| } |
| /*-- 14.12.98 13:07:12--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| OUString SwXTextSearch::getReplaceString(void) throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| return sReplaceText; |
| } |
| /*-- 14.12.98 13:07:12--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setReplaceString(const OUString& rReplaceString) throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| sReplaceText = String(rReplaceString); |
| } |
| /*-- 14.12.98 13:07:13--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| uno::Reference< beans::XPropertySetInfo > SwXTextSearch::getPropertySetInfo(void) throw( uno::RuntimeException ) |
| { |
| static uno::Reference< beans::XPropertySetInfo > aRef = m_pPropSet->getPropertySetInfo(); |
| return aRef; |
| } |
| /*-- 14.12.98 13:07:13--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) |
| throw( beans::UnknownPropertyException, beans::PropertyVetoException, |
| lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap()->getByName(rPropertyName); |
| if(pEntry) |
| { |
| if ( pEntry->nFlags & beans::PropertyAttribute::READONLY) |
| throw beans::PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) ); |
| sal_Bool bVal = sal_False; |
| if(aValue.getValueType() == ::getBooleanCppuType()) |
| bVal = *(sal_Bool*)aValue.getValue(); |
| switch(pEntry->nWID) |
| { |
| case WID_SEARCH_ALL : bAll = bVal; break; |
| case WID_WORDS: bWord = bVal; break; |
| case WID_BACKWARDS : bBack = bVal; break; |
| case WID_REGULAR_EXPRESSION : bExpr = bVal; break; |
| case WID_CASE_SENSITIVE : bCase = bVal; break; |
| //case WID_IN_SELECTION : bInSel = bVal; break; |
| case WID_STYLES : bStyles = bVal; break; |
| case WID_SIMILARITY : bSimilarity = bVal; break; |
| case WID_SIMILARITY_RELAX: bLevRelax = bVal; break; |
| case WID_SIMILARITY_EXCHANGE: aValue >>= nLevExchange; break; |
| case WID_SIMILARITY_ADD: aValue >>= nLevAdd; break; |
| case WID_SIMILARITY_REMOVE : aValue >>= nLevRemove;break; |
| }; |
| } |
| else |
| throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) ); |
| } |
| /*-- 14.12.98 13:07:13--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| uno::Any SwXTextSearch::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| uno::Any aRet; |
| |
| const SfxItemPropertySimpleEntry* pEntry = m_pPropSet->getPropertyMap()->getByName(rPropertyName); |
| sal_Bool bSet = sal_False; |
| sal_Int16 nSet = 0; |
| if(pEntry) |
| { |
| switch(pEntry->nWID) |
| { |
| case WID_SEARCH_ALL : bSet = bAll; goto SET_BOOL; |
| case WID_WORDS: bSet = bWord; goto SET_BOOL; |
| case WID_BACKWARDS : bSet = bBack; goto SET_BOOL; |
| case WID_REGULAR_EXPRESSION : bSet = bExpr; goto SET_BOOL; |
| case WID_CASE_SENSITIVE : bSet = bCase; goto SET_BOOL; |
| //case WID_IN_SELECTION : bSet = bInSel; goto SET_BOOL; |
| case WID_STYLES : bSet = bStyles; goto SET_BOOL; |
| case WID_SIMILARITY : bSet = bSimilarity; goto SET_BOOL; |
| case WID_SIMILARITY_RELAX: bSet = bLevRelax; |
| SET_BOOL: |
| aRet.setValue(&bSet, ::getBooleanCppuType()); |
| break; |
| case WID_SIMILARITY_EXCHANGE: nSet = nLevExchange; goto SET_UINT16; |
| case WID_SIMILARITY_ADD: nSet = nLevAdd; goto SET_UINT16; |
| case WID_SIMILARITY_REMOVE : nSet = nLevRemove; |
| SET_UINT16: |
| aRet <<= nSet; |
| break; |
| }; |
| } |
| else |
| throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) ); |
| return aRet; |
| } |
| /*-- 14.12.98 13:07:13--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::addPropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) |
| { |
| DBG_WARNING("not implemented"); |
| } |
| /*-- 14.12.98 13:07:13--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::removePropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw(beans::UnknownPropertyException, lang::WrappedTargetException,uno::RuntimeException ) |
| { |
| DBG_WARNING("not implemented"); |
| } |
| /*-- 14.12.98 13:07:14--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::addVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw(beans::UnknownPropertyException, lang::WrappedTargetException,uno::RuntimeException ) |
| { |
| DBG_WARNING("not implemented"); |
| } |
| /*-- 14.12.98 13:07:14--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::removeVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw(beans::UnknownPropertyException, lang::WrappedTargetException,uno::RuntimeException ) |
| { |
| DBG_WARNING("not implemented"); |
| } |
| /*-- 14.12.98 13:07:14--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| sal_Bool SwXTextSearch::getValueSearch(void) throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| return bIsValueSearch; |
| } |
| /*-- 14.12.98 13:07:15--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setValueSearch(sal_Bool ValueSearch_) throw( uno::RuntimeException ) |
| { |
| vos::OGuard aGuard(Application::GetSolarMutex()); |
| bIsValueSearch = ValueSearch_; |
| } |
| /*-- 14.12.98 13:07:15--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| uno::Sequence< beans::PropertyValue > SwXTextSearch::getSearchAttributes(void) throw( uno::RuntimeException ) |
| { |
| return pSearchProperties->GetProperties(); |
| } |
| /*-- 14.12.98 13:07:16--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setSearchAttributes(const uno::Sequence< beans::PropertyValue >& rSearchAttribs) |
| throw( beans::UnknownPropertyException, lang::IllegalArgumentException, uno::RuntimeException ) |
| { |
| pSearchProperties->SetProperties(rSearchAttribs); |
| } |
| /*-- 14.12.98 13:07:16--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| uno::Sequence< beans::PropertyValue > SwXTextSearch::getReplaceAttributes(void) |
| throw( uno::RuntimeException ) |
| { |
| return pReplaceProperties->GetProperties(); |
| } |
| /*-- 14.12.98 13:07:17--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| void SwXTextSearch::setReplaceAttributes(const uno::Sequence< beans::PropertyValue >& rReplaceAttribs) |
| throw( beans::UnknownPropertyException, lang::IllegalArgumentException, uno::RuntimeException ) |
| { |
| pReplaceProperties->SetProperties(rReplaceAttribs); |
| } |
| /* -----------------23.06.99 14:13------------------- |
| |
| --------------------------------------------------*/ |
| void SwXTextSearch::FillSearchItemSet(SfxItemSet& rSet) const |
| { |
| pSearchProperties->FillItemSet(rSet, bIsValueSearch); |
| } |
| /* -----------------23.06.99 14:14------------------- |
| |
| --------------------------------------------------*/ |
| void SwXTextSearch::FillReplaceItemSet(SfxItemSet& rSet) const |
| { |
| pReplaceProperties->FillItemSet(rSet, bIsValueSearch); |
| } |
| /* -----------------23.06.99 14:17------------------- |
| |
| --------------------------------------------------*/ |
| sal_Bool SwXTextSearch::HasSearchAttributes() const |
| { |
| return pSearchProperties->HasAttributes(); |
| } |
| /* -----------------23.06.99 14:17------------------- |
| |
| --------------------------------------------------*/ |
| sal_Bool SwXTextSearch::HasReplaceAttributes() const |
| { |
| return pReplaceProperties->HasAttributes(); |
| } |
| /* -----------------------------19.04.00 14:43-------------------------------- |
| |
| ---------------------------------------------------------------------------*/ |
| OUString SwXTextSearch::getImplementationName(void) throw( uno::RuntimeException ) |
| { |
| return C2U("SwXTextSearch"); |
| } |
| /* -----------------------------19.04.00 14:43-------------------------------- |
| |
| ---------------------------------------------------------------------------*/ |
| sal_Bool SwXTextSearch::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) |
| { |
| return C2U("com.sun.star.util.SearchDescriptor") == rServiceName || |
| C2U("com.sun.star.util.ReplaceDescriptor") == rServiceName; |
| } |
| /* -----------------------------19.04.00 14:43-------------------------------- |
| |
| ---------------------------------------------------------------------------*/ |
| uno::Sequence< OUString > SwXTextSearch::getSupportedServiceNames(void) throw( uno::RuntimeException ) |
| { |
| uno::Sequence< OUString > aRet(2); |
| OUString* pArray = aRet.getArray(); |
| pArray[0] = C2U("com.sun.star.util.SearchDescriptor"); |
| pArray[1] = C2U("com.sun.star.util.ReplaceDescriptor"); |
| return aRet; |
| } |
| |
| void SwXTextSearch::FillSearchOptions( util::SearchOptions& rSearchOpt ) const |
| { |
| if( bSimilarity ) |
| { |
| rSearchOpt.algorithmType = util::SearchAlgorithms_APPROXIMATE; |
| rSearchOpt.changedChars = nLevExchange; |
| rSearchOpt.deletedChars = nLevRemove; |
| rSearchOpt.insertedChars = nLevAdd; |
| if( bLevRelax ) |
| rSearchOpt.searchFlag |= util::SearchFlags::LEV_RELAXED; |
| } |
| else if( bExpr ) |
| rSearchOpt.algorithmType = util::SearchAlgorithms_REGEXP; |
| else |
| rSearchOpt.algorithmType = util::SearchAlgorithms_ABSOLUTE; |
| |
| rSearchOpt.Locale = SvxCreateLocale( GetAppLanguage() ); |
| rSearchOpt.searchString = sSearchText; |
| rSearchOpt.replaceString = sReplaceText; |
| |
| if( !bCase ) |
| rSearchOpt.transliterateFlags |= i18n::TransliterationModules_IGNORE_CASE; |
| if( bWord ) |
| rSearchOpt.searchFlag |= util::SearchFlags::NORM_WORD_ONLY; |
| |
| // bInSel: 1; // wie geht das? |
| // TODO: pSearch->bStyles! |
| // inSelection?? |
| // aSrchParam.SetSrchInSelection(TypeConversion::toBOOL(aVal)); |
| } |
| |
| |
| |