diff options
author | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2010-02-04 22:49:44 +0100 |
---|---|---|
committer | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2010-02-04 22:49:44 +0100 |
commit | abb51ede006041a8e5db1bb0463484d2a98698df (patch) | |
tree | c0abf866d16d74a92fc6cbed30b747e2bd32b35b /reportdesign | |
parent | 538e41ebb44726aa666c92b79d0000aca8c41ae4 (diff) |
autorecovery: derive XReportDefinition from XModifiable2, extending XModifiable
Diffstat (limited to 'reportdesign')
-rw-r--r-- | reportdesign/inc/ReportDefinition.hxx | 5 | ||||
-rw-r--r-- | reportdesign/source/core/api/ReportDefinition.cxx | 38 |
2 files changed, 43 insertions, 0 deletions
diff --git a/reportdesign/inc/ReportDefinition.hxx b/reportdesign/inc/ReportDefinition.hxx index ec9a5c4f5248..6048ab1d6625 100644 --- a/reportdesign/inc/ReportDefinition.hxx +++ b/reportdesign/inc/ReportDefinition.hxx @@ -314,6 +314,11 @@ namespace reportdesign virtual ::com::sun::star::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation( ::sal_Int64 nAspect ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::embed::WrongStateException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); virtual ::sal_Int32 SAL_CALL getMapUnit( ::sal_Int64 nAspect ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + // XModifiable2 + virtual ::sal_Bool SAL_CALL disableSetModified( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL enableSetModified( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isSetModifiedEnabled( ) throw (::com::sun::star::uno::RuntimeException); + // XModifiable virtual ::sal_Bool SAL_CALL isModified( ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setModified( ::sal_Bool bModified ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException); diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx index 91917e03463c..b0ee87512a31 100644 --- a/reportdesign/source/core/api/ReportDefinition.cxx +++ b/reportdesign/source/core/api/ReportDefinition.cxx @@ -626,6 +626,7 @@ struct OReportDefinitionImpl sal_Bool m_bControllersLocked; sal_Bool m_bModified; sal_Bool m_bEscapeProcessing; + sal_Bool m_bSetModifiedEnabled; OReportDefinitionImpl(::osl::Mutex& _aMutex) :m_aStorageChangeListeners(_aMutex) ,m_aCloseListener(_aMutex) @@ -643,6 +644,7 @@ struct OReportDefinitionImpl ,m_bControllersLocked(sal_False) ,m_bModified(sal_False) ,m_bEscapeProcessing(sal_True) + ,m_bSetModifiedEnabled( sal_True ) {} OReportDefinitionImpl(::osl::Mutex& _aMutex,const OReportDefinitionImpl& _aCopy) @@ -1955,6 +1957,38 @@ embed::VisualRepresentation SAL_CALL OReportDefinition::getPreferredVisualRepres } // ----------------------------------------------------------------------------- // XModifiable +::sal_Bool SAL_CALL OReportDefinition::disableSetModified( ) throw (uno::RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed ); + + const sal_Bool bWasEnabled = m_pImpl->m_bSetModifiedEnabled; + m_pImpl->m_bSetModifiedEnabled = sal_False; + return bWasEnabled; +} + +// ----------------------------------------------------------------------------- +::sal_Bool SAL_CALL OReportDefinition::enableSetModified( ) throw (uno::RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed ); + + const sal_Bool bWasEnabled = m_pImpl->m_bSetModifiedEnabled; + m_pImpl->m_bSetModifiedEnabled = sal_True; + return bWasEnabled; +} + +// ----------------------------------------------------------------------------- +::sal_Bool SAL_CALL OReportDefinition::isSetModifiedEnabled( ) throw (uno::RuntimeException) +{ + ::osl::MutexGuard aGuard( m_aMutex ); + ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed ); + + return m_pImpl->m_bSetModifiedEnabled; +} + +// ----------------------------------------------------------------------------- +// XModifiable ::sal_Bool SAL_CALL OReportDefinition::isModified( ) throw (uno::RuntimeException) { ::osl::MutexGuard aGuard(m_aMutex); @@ -1966,6 +2000,10 @@ void SAL_CALL OReportDefinition::setModified( ::sal_Bool _bModified ) throw (bea { ::osl::ResettableMutexGuard aGuard(m_aMutex); ::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed); + + if ( !m_pImpl->m_bSetModifiedEnabled ) + return; + if ( m_pImpl->m_pReportModel->IsReadOnly() && _bModified ) throw beans::PropertyVetoException(); if ( m_pImpl->m_bModified != _bModified ) |