diff options
Diffstat (limited to 'linguistic/source/gciterator.hxx')
-rw-r--r-- | linguistic/source/gciterator.hxx | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/linguistic/source/gciterator.hxx b/linguistic/source/gciterator.hxx index 954195b422f6..e3745a205692 100644 --- a/linguistic/source/gciterator.hxx +++ b/linguistic/source/gciterator.hxx @@ -31,10 +31,11 @@ #ifndef _LINGUISTIC_GRAMMARCHECKINGITERATOR_HXX_ #define _LINGUISTIC_GRAMMARCHECKINGITERATOR_HXX_ +#include <com/sun/star/i18n/XBreakIterator.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XEventListener.hpp> -#include <com/sun/star/linguistic2/XGrammarCheckingIterator.hpp> +#include <com/sun/star/linguistic2/XProofreadingIterator.hpp> #include <com/sun/star/linguistic2/XLinguServiceEventListener.hpp> #include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp> #include <com/sun/star/uno/XComponentContext.hpp> @@ -43,10 +44,13 @@ #include <cppuhelper/implbase5.hxx> #include <cppuhelper/weakref.hxx> #include <osl/mutex.hxx> +#include <osl/conditn.hxx> +#include <rtl/instance.hxx> #include <map> #include <deque> +#include "defs.hxx" ////////////////////////////////////////////////////////////////////// @@ -60,16 +64,16 @@ struct FPEntry ::com::sun::star::uno::WeakReference< ::com::sun::star::text::XFlatParagraph > m_xPara; // document ID to identify different documents - sal_Int32 m_nDocId; + ::rtl::OUString m_aDocId; // the starting position to be checked - sal_Int32 m_nStartIndex; + sal_Int32 m_nStartIndex; // the flag to identify whether the document does automatical grammar checking - sal_Bool m_bAutomatic; + sal_Bool m_bAutomatic; FPEntry() - : m_nDocId( 0 ) + : m_aDocId() , m_nStartIndex( 0 ) , m_bAutomatic( 0 ) { @@ -83,12 +87,13 @@ struct FPEntry class GrammarCheckingIterator: public cppu::WeakImplHelper5 < - ::com::sun::star::linguistic2::XGrammarCheckingIterator, + ::com::sun::star::linguistic2::XProofreadingIterator, ::com::sun::star::linguistic2::XLinguServiceEventListener, ::com::sun::star::linguistic2::XLinguServiceEventBroadcaster, ::com::sun::star::lang::XComponent, ::com::sun::star::lang::XServiceInfo - > + >, + public LinguDispatcher { com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xMSF; @@ -103,9 +108,8 @@ class GrammarCheckingIterator: // the flag to end the endless loop sal_Bool m_bEnd; - // parameter ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponen > --> the document - // parameter sal_Int32 --> DocId to indentify the document - typedef std::map< ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >, sal_Int32 > DocMap_t; + // Note that it must be the pointer and not the uno-reference to check if it is the same implementation object + typedef std::map< XComponent *, ::rtl::OUString > DocMap_t; DocMap_t m_aDocIdMap; // parameter ::rtl::OUString --> implementation name @@ -118,18 +122,19 @@ class GrammarCheckingIterator: GCImplNames_t m_aGCImplNamesByLang; // implname -> UNO reference mapping - typedef std::map< ::rtl::OUString, ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XGrammarChecker > > GCReferences_t; + typedef std::map< ::rtl::OUString, ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XProofreader > > GCReferences_t; GCReferences_t m_aGCReferencesByService; + ::rtl::OUString m_aCurCheckedDocId; sal_Bool m_bGCServicesChecked; sal_Int32 m_nDocIdCounter; - sal_Int32 m_nCurCheckedDocId; sal_Int32 m_nLastEndOfSentencePos; osl::Condition m_aWakeUpThread; osl::Condition m_aRequestEndThread; //! beware of initilization order ! - osl::Mutex m_aMutex; + struct MyMutex : public rtl::Static< osl::Mutex, MyMutex > {}; + // cppu::OInterfaceContainerHelper m_aEventListeners; cppu::OInterfaceContainerHelper m_aNotifyListeners; @@ -137,23 +142,23 @@ class GrammarCheckingIterator: mutable ::com::sun::star::uno::Reference< ::com::sun::star::util::XChangesBatch > m_xUpdateAccess; sal_Int32 NextDocId(); - sal_Int32 GetOrCreateDocId( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > &xComp ); + ::rtl::OUString GetOrCreateDocId( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > &xComp ); void AddEntry( ::com::sun::star::uno::WeakReference< ::com::sun::star::text::XFlatParagraphIterator > xFlatParaIterator, ::com::sun::star::uno::WeakReference< ::com::sun::star::text::XFlatParagraph > xFlatPara, - sal_Int32 nDocId, sal_Int32 nStartIndex, sal_Bool bAutomatic ); + const ::rtl::OUString &rDocId, sal_Int32 nStartIndex, sal_Bool bAutomatic ); - void ProcessResult( const ::com::sun::star::linguistic2::GrammarCheckingResult &rRes, sal_Int32 nSentenceStartPos, + void ProcessResult( const ::com::sun::star::linguistic2::ProofreadingResult &rRes, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraphIterator > &rxFlatParagraphIterator, bool bIsAutomaticChecking ); sal_Int32 GetSuggestedEndOfSentence( const ::rtl::OUString &rText, sal_Int32 nSentenceStartPos, const ::com::sun::star::lang::Locale &rLocale ); -// void GetConfiguredGCSvcs_Impl(); - void GetMatchingGCSvcs_Impl(); + void GetConfiguredGCSvcs_Impl(); +// void GetMatchingGCSvcs_Impl(); // void GetAvailableGCSvcs_Impl(); - ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XGrammarChecker > GetGrammarChecker( const ::com::sun::star::lang::Locale & rLocale ); + ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XProofreader > GetGrammarChecker( const ::com::sun::star::lang::Locale & rLocale ); ::com::sun::star::uno::Reference< ::com::sun::star::util::XChangesBatch > GetUpdateAccess() const; @@ -168,11 +173,11 @@ public: explicit GrammarCheckingIterator( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rxMgr ); virtual ~GrammarCheckingIterator(); - // XGrammarCheckingIterator - virtual void SAL_CALL startGrammarChecking( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDoc, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraphIteratorProvider >& xIteratorProvider, ::sal_Bool bAutomatic ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::linguistic2::GrammarCheckingResult SAL_CALL checkGrammarAtPos( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDoc, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraph >& xFlatPara, const ::rtl::OUString& aText, const ::com::sun::star::lang::Locale& aLocale, ::sal_Int32 nStartOfSentencePos, ::sal_Int32 nSuggestedEndOfSentencePos, ::sal_Int32 nErrorPosInPara ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - virtual ::sal_Int32 SAL_CALL getEndOfSentence( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraph >& xFlatPara, ::sal_Int32 nSentenceStartPos ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - virtual ::sal_Bool SAL_CALL isGrammarChecking( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDoc, ::sal_Bool bAutomatic ) throw (::com::sun::star::uno::RuntimeException); + // XProofreadingIterator + virtual void SAL_CALL startProofreading( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDocument, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraphIteratorProvider >& xIteratorProvider ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::linguistic2::ProofreadingResult SAL_CALL checkSentenceAtPosition( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDocument, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XFlatParagraph >& xFlatParagraph, const ::rtl::OUString& aText, const ::com::sun::star::lang::Locale& aLocale, ::sal_Int32 nStartOfSentencePosition, ::sal_Int32 nSuggestedBehindEndOfSentencePosition, ::sal_Int32 nErrorPositionInParagraph ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL resetIgnoreRules( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isProofreading( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xDocument ) throw (::com::sun::star::uno::RuntimeException); // XLinguServiceEventListener virtual void SAL_CALL processLinguServiceEvent( const ::com::sun::star::linguistic2::LinguServiceEvent& aLngSvcEvent ) throw (::com::sun::star::uno::RuntimeException); @@ -194,6 +199,10 @@ public: virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); + // LinguDispatcher + virtual void SetServiceList( const ::com::sun::star::lang::Locale &rLocale, const ::com::sun::star::uno::Sequence< rtl::OUString > &rSvcImplNames ); + virtual ::com::sun::star::uno::Sequence< rtl::OUString > GetServiceList( const ::com::sun::star::lang::Locale &rLocale ) const; + virtual DspType GetDspType() const; }; |