User: kz Date: 2008-04-04 14:56:59+0000 Modified: dba/dbaccess/source/ui/browser/genericcontroller.cxx
Log: INTEGRATION: CWS titles02 (1.81.18); FILE MERGED 2008/03/13 10:45:31 oj 1.81.18.3: #i45909# #i45617# #i71469# title changes 2007/12/17 15:29:54 oj 1.81.18.2: #i45617# title feature 2007/12/10 11:38:43 oj 1.81.18.1: #i45909# #i45617# #i71469# change title handling File Changes: Directory: /dba/dbaccess/source/ui/browser/ =========================================== File [changed]: genericcontroller.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/browser/genericcontroller.cxx?r1=1.84&r2=1.85 Delta lines: +85 -32 --------------------- --- genericcontroller.cxx 2008-03-06 18:14:19+0000 1.84 +++ genericcontroller.cxx 2008-04-04 14:56:57+0000 1.85 @@ -71,6 +71,7 @@ #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_ #include <cppuhelper/typeprovider.hxx> #endif +#include <framework/titlehelper.hxx> #ifndef _COMPHELPER_SEQUENCE_HXX_ #include <comphelper/sequence.hxx> #endif @@ -147,6 +148,7 @@ using namespace ::com::sun::star::sdb; using namespace ::com::sun::star::task; using namespace ::com::sun::star::awt; +using namespace ::com::sun::star; using namespace ::dbtools; using namespace ::dbaui; using namespace ::comphelper; @@ -181,6 +183,7 @@ ,m_bPreview(sal_False) ,m_bReadOnly(sal_False) ,m_bCurrentlyModified(sal_False) + ,m_bExternalTitle(sal_False) { DBG_CTOR(OGenericUnoController,NULL); @@ -395,23 +398,16 @@ stopFrameListening( m_aCurrentFrame.getFrame() ); Reference< XFrame > xFrame = m_aCurrentFrame.attachFrame( _rxFrame ); - startFrameListening( xFrame ); + if( startFrameListening( xFrame ) ) + m_bFrameUiActive = m_xCurrentFrame->isActive(); loadMenu( xFrame ); - if ( xFrame.is() ) - updateTitle(); - if ( getView() ) getView()->attachFrame( xFrame ); } // ----------------------------------------------------------------------------- -void OGenericUnoController::updateTitle() -{ -} - -// ----------------------------------------------------------------------------- struct CommandCollector : public ::std::unary_function< SupportedFeatures::value_type, void> { sal_uInt16 m_nFeature; @@ -613,7 +609,7 @@ } // ----------------------------------------------------------------------- -void OGenericUnoController::ImplInvalidateFeature( sal_Int32 _nId, const Reference< ::com::sun::star::frame::XStatusListener >& _xListener, sal_Bool _bForceBroadcast ) +void OGenericUnoController::ImplInvalidateFeature( sal_Int32 _nId, const Reference< XStatusListener >& _xListener, sal_Bool _bForceBroadcast ) { FeaturePair aPair; aPair.nId = _nId; @@ -843,6 +839,17 @@ m_aFeaturesToInvalidate.clear(); } + try + { + Reference< XUntitledNumbers > xUntitledProvider(getPrivateModel(), UNO_QUERY ); + if ( xUntitledProvider.is() ) + xUntitledProvider->releaseNumberForComponent(static_cast<XWeak*>(this)); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + // check out from all the objects we are listening // the frame stopFrameListening( m_aCurrentFrame.getFrame() ); @@ -1023,10 +1030,10 @@ ::dbaui::showError(_rInfo,getView(),getORB()); } // ----------------------------------------------------------------------------- -Reference< ::com::sun::star::frame::XLayoutManager > OGenericUnoController::getLayoutManager(const Reference< XFrame >& _xFrame) const +Reference< XLayoutManager > OGenericUnoController::getLayoutManager(const Reference< XFrame >& _xFrame) const { Reference< XPropertySet > xPropSet( _xFrame, UNO_QUERY ); - Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager; + Reference< XLayoutManager > xLayoutManager; if ( xPropSet.is() ) { try @@ -1042,7 +1049,7 @@ // ----------------------------------------------------------------------------- void OGenericUnoController::loadMenu(const Reference< XFrame >& _xFrame) { - Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager = getLayoutManager(_xFrame); + Reference< XLayoutManager > xLayoutManager = getLayoutManager(_xFrame); if ( xLayoutManager.is() ) { xLayoutManager->lock(); @@ -1056,7 +1063,7 @@ } // ----------------------------------------------------------------------------- -void OGenericUnoController::onLoadedMenu(const Reference< ::com::sun::star::frame::XLayoutManager >& /*_xLayoutManager*/) +void OGenericUnoController::onLoadedMenu(const Reference< XLayoutManager >& /*_xLayoutManager*/) { // not interested in } @@ -1119,7 +1126,7 @@ Execute(_nCommandId, aArgs); } // ----------------------------------------------------------------------------- -void OGenericUnoController::executeUnChecked(const ::com::sun::star::util::URL& _rCommand, const Sequence< PropertyValue >& aArgs) +void OGenericUnoController::executeUnChecked(const util::URL& _rCommand, const Sequence< PropertyValue >& aArgs) { if ( m_aSupportedFeatures.empty() ) fillSupportedFeatures(); @@ -1128,7 +1135,7 @@ Execute( aIter->second.nFeatureId, aArgs ); } // ----------------------------------------------------------------------------- -void OGenericUnoController::executeChecked(const ::com::sun::star::util::URL& _rCommand, const Sequence< PropertyValue >& aArgs) +void OGenericUnoController::executeChecked(const util::URL& _rCommand, const Sequence< PropertyValue >& aArgs) { if ( m_aSupportedFeatures.empty() ) fillSupportedFeatures(); @@ -1304,7 +1311,7 @@ } } // ----------------------------------------------------------------------------- -Reference< ::com::sun::star::awt::XWindow> OGenericUnoController::getTopMostContainerWindow() const +Reference< awt::XWindow> OGenericUnoController::getTopMostContainerWindow() const { Reference< ::com::sun::star::awt::XWindow> xWindow; @@ -1324,20 +1331,66 @@ return xWindow; } // ----------------------------------------------------------------------------- -void OGenericUnoController::setTitle( const ::rtl::OUString& _sName ) +Reference< XTitle > OGenericUnoController::impl_getTitleHelper_throw() { - try - { - Reference< XPropertySet > xFrameProps( getFrame(), UNO_QUERY ); - if ( xFrameProps.is() && xFrameProps->getPropertySetInfo()->hasPropertyByName( PROPERTY_TITLE ) ) - { - xFrameProps->setPropertyValue( PROPERTY_TITLE, makeAny( _sName ) ); - } - } - catch( const Exception& ) + ::vos::OGuard aSolarGuard( Application::GetSolarMutex() ); + ::osl::MutexGuard aGuard(m_aMutex); + + if ( ! m_xTitleHelper.is ()) { - DBG_UNHANDLED_EXCEPTION(); + Reference< XUntitledNumbers > xUntitledProvider(getPrivateModel(), UNO_QUERY ); + Reference< XController > xThis(static_cast< XController* >(this), UNO_QUERY_THROW); + + ::framework::TitleHelper* pHelper = new ::framework::TitleHelper(m_xServiceFactory); + m_xTitleHelper.set( static_cast< ::cppu::OWeakObject* >(pHelper), UNO_QUERY_THROW); + + pHelper->setOwner (xThis ); + pHelper->connectWithUntitledNumbers (xUntitledProvider); } + + return m_xTitleHelper; +} + +//============================================================================= +// XTitle +::rtl::OUString SAL_CALL OGenericUnoController::getTitle() + throw (RuntimeException) +{ + ::osl::MutexGuard aGuard(m_aMutex); + if ( m_bExternalTitle ) + return impl_getTitleHelper_throw()->getTitle (); + return getPrivateTitle() + impl_getTitleHelper_throw()->getTitle (); +} + +//============================================================================= +// XTitle +void SAL_CALL OGenericUnoController::setTitle(const ::rtl::OUString& sTitle) + throw (RuntimeException) +{ + vos::OGuard aSolarGuard( Application::GetSolarMutex() ); + ::osl::MutexGuard aGuard(m_aMutex); + m_bExternalTitle = sal_True; + impl_getTitleHelper_throw()->setTitle (sTitle); +} + +//============================================================================= +// XTitleChangeBroadcaster +void SAL_CALL OGenericUnoController::addTitleChangeListener(const Reference< XTitleChangeListener >& xListener) + throw (RuntimeException) +{ + Reference< XTitleChangeBroadcaster > xBroadcaster(impl_getTitleHelper_throw(), UNO_QUERY); + if (xBroadcaster.is ()) + xBroadcaster->addTitleChangeListener (xListener); +} + +//============================================================================= +// XTitleChangeBroadcaster +void SAL_CALL OGenericUnoController::removeTitleChangeListener(const Reference< XTitleChangeListener >& xListener) + throw (RuntimeException) +{ + Reference< XTitleChangeBroadcaster > xBroadcaster(impl_getTitleHelper_throw(), UNO_QUERY); + if (xBroadcaster.is ()) + xBroadcaster->removeTitleChangeListener (xListener); } // ----------------------------------------------------------------------------- void OGenericUnoController::executeChecked(sal_uInt16 _nCommandId, const Sequence< PropertyValue >& aArgs) @@ -1454,12 +1507,12 @@ return Any(); } // ----------------------------------------------------------------------------- -void SAL_CALL OGenericUnoController::addSelectionChangeListener( const Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (RuntimeException) +void SAL_CALL OGenericUnoController::addSelectionChangeListener( const Reference< view::XSelectionChangeListener >& xListener ) throw (RuntimeException) { m_aSelectionListeners.addInterface(xListener); } // ----------------------------------------------------------------------------- -void SAL_CALL OGenericUnoController::removeSelectionChangeListener( const Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (RuntimeException) +void SAL_CALL OGenericUnoController::removeSelectionChangeListener( const Reference< view::XSelectionChangeListener >& xListener ) throw (RuntimeException) { m_aSelectionListeners.removeInterface(xListener); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
