diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-04-04 13:12:20 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-04-04 13:12:20 +0000 |
commit | 40feb80c7b829196ba1290a106dfcb039fe743d2 (patch) | |
tree | edb028370cf26a65dc1a98edd66c4e87b621a99d /framework/source | |
parent | 460ab8e396ae6b46f5981c200f43ed428831d423 (diff) |
INTEGRATION: CWS titles02 (1.104.30); FILE MERGED
2008/04/02 12:40:05 as 1.104.30.3: BackingComponent uses default title handling instead of own one
2007/10/17 08:10:03 as 1.104.30.2: #116375# improve title generation; make autorecovery working (related to titles)
2007/10/12 13:06:39 as 1.104.30.1: #116375# support new title feature
Diffstat (limited to 'framework/source')
-rw-r--r-- | framework/source/services/frame.cxx | 119 |
1 files changed, 90 insertions, 29 deletions
diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index 007f143be4a5..894fb6a4283d 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -4,9 +4,9 @@ * * $RCSfile: frame.cxx,v $ * - * $Revision: 1.104 $ + * $Revision: 1.105 $ * - * last change: $Author: rt $ $Date: 2007-07-24 11:52:47 $ + * last change: $Author: kz $ $Date: 2008-04-04 14:12:20 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -72,6 +72,10 @@ #include <helper/statusindicatorfactory.hxx> #endif +#ifndef _FRAMEWORK_TITLEHELPER_HXX_ +#include <helper/titlehelper.hxx> +#endif + #ifndef __FRAMEWORK_CLASSES_TARGETFINDER_HXX_ #include <classes/targetfinder.hxx> #endif @@ -204,6 +208,9 @@ #include <com/sun/star/beans/XMaterialHolder.hpp> #endif +#ifndef _COM_SUN_STAR_FRAME_XTITLECHANGEBROADCASTER_HPP_ +#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp> +#endif //_________________________________________________________________________________________________________________ // includes of other projects @@ -292,7 +299,7 @@ css::uno::WeakReference< css::frame::XFrame > Frame::m_xCloserFrame = css::uno:: //***************************************************************************************************************** // XInterface, XTypeProvider, XServiceInfo //***************************************************************************************************************** -DEFINE_XINTERFACE_19 ( Frame , +DEFINE_XINTERFACE_21 ( Frame , OWeakObject , DIRECT_INTERFACE(css::lang::XTypeProvider ), DIRECT_INTERFACE(css::lang::XServiceInfo ), @@ -312,10 +319,12 @@ DEFINE_XINTERFACE_19 ( Frame DIRECT_INTERFACE(css::document::XActionLockable ), DIRECT_INTERFACE(css::util::XCloseable ), DIRECT_INTERFACE(css::util::XCloseBroadcaster ), - DIRECT_INTERFACE(css::frame::XComponentLoader ) + DIRECT_INTERFACE(css::frame::XComponentLoader ), + DIRECT_INTERFACE(css::frame::XTitle ), + DIRECT_INTERFACE(css::frame::XTitleChangeBroadcaster ) ) -DEFINE_XTYPEPROVIDER_18 ( Frame , +DEFINE_XTYPEPROVIDER_20 ( Frame , css::lang::XTypeProvider , css::lang::XServiceInfo , css::frame::XFramesSupplier , @@ -333,7 +342,9 @@ DEFINE_XTYPEPROVIDER_18 ( Frame css::lang::XEventListener , css::util::XCloseable , css::util::XCloseBroadcaster , - css::frame::XComponentLoader + css::frame::XComponentLoader , + css::frame::XTitle , + css::frame::XTitleChangeBroadcaster ) DEFINE_XSERVICEINFO_MULTISERVICE ( Frame , @@ -349,6 +360,7 @@ DEFINE_INIT_SERVICE ( Frame, to create a new instance of this class by our own supported service factory. see macro DEFINE_XSERVICEINFO_MULTISERVICE and "impl_initService()" for further informations! */ + css::uno::Reference< css::uno::XInterface > xThis(static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY_THROW); //------------------------------------------------------------------------------------------------------------- // Initialize a new dispatchhelper-object to handle dispatches. @@ -448,6 +460,7 @@ Frame::Frame( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFac , m_nExternalLockCount ( 0 ) , m_bSelfClose ( sal_False ) // Important! , m_bIsHidden ( sal_True ) + , m_xTitleHelper ( ) , m_aChildFrameContainer ( ) { // Check incoming parameter to avoid against wrong initialization. @@ -770,7 +783,12 @@ void SAL_CALL Frame::initialize( const css::uno::Reference< css::awt::XWindow >& impl_enablePropertySet(); // create WindowCommandDispatch; it is supposed to release itself at frame destruction - (void)new WindowCommandDispatch(m_xSMGR, this); + (void)new WindowCommandDispatch(xSMGR, this); + + // Initialize title functionality + TitleHelper* pTitleHelper = new TitleHelper(xSMGR); + m_xTitleHelper = css::uno::Reference< css::frame::XTitle >(static_cast< ::cppu::OWeakObject* >(pTitleHelper), css::uno::UNO_QUERY_THROW); + pTitleHelper->setOwner(xThis); } /*-****************************************************************************************************//** @@ -1876,6 +1894,66 @@ void SAL_CALL Frame::removeCloseListener( const css::uno::Reference< css::util:: m_aListenerContainer.removeInterface( ::getCppuType( ( const css::uno::Reference< css::util::XCloseListener >* ) NULL ), xListener ); } +//***************************************************************************************************************** +::rtl::OUString SAL_CALL Frame::getTitle() + throw (css::uno::RuntimeException) +{ + TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + + // SAFE -> + ReadGuard aReadLock(m_aLock); + css::uno::Reference< css::frame::XTitle > xTitle(m_xTitleHelper, css::uno::UNO_QUERY_THROW); + aReadLock.unlock(); + // <- SAFE + + return xTitle->getTitle(); +} + +//***************************************************************************************************************** +void SAL_CALL Frame::setTitle( const ::rtl::OUString& sTitle ) + throw (css::uno::RuntimeException) +{ + TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + + // SAFE -> + ReadGuard aReadLock(m_aLock); + css::uno::Reference< css::frame::XTitle > xTitle(m_xTitleHelper, css::uno::UNO_QUERY_THROW); + aReadLock.unlock(); + // <- SAFE + + xTitle->setTitle(sTitle); +} + +//***************************************************************************************************************** +void SAL_CALL Frame::addTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener) + throw (css::uno::RuntimeException) +{ + TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + + // SAFE -> + ReadGuard aReadLock(m_aLock); + css::uno::Reference< css::frame::XTitleChangeBroadcaster > xTitle(m_xTitleHelper, css::uno::UNO_QUERY_THROW); + aReadLock.unlock(); + // <- SAFE + + xTitle->addTitleChangeListener(xListener); +} + +//***************************************************************************************************************** +void SAL_CALL Frame::removeTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener ) + throw (css::uno::RuntimeException) +{ + TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS ); + + // SAFE -> + ReadGuard aReadLock(m_aLock); + css::uno::Reference< css::frame::XTitleChangeBroadcaster > xTitle(m_xTitleHelper, css::uno::UNO_QUERY_THROW); + aReadLock.unlock(); + // <- SAFE + + xTitle->removeTitleChangeListener(xListener); +} + /*-****************************************************************************************************/ void Frame::implts_forgetSubFrames() { @@ -2711,27 +2789,9 @@ void SAL_CALL Frame::impl_setPropertyValue(const ::rtl::OUString& /*sProperty*/, { case FRAME_PROPHANDLE_TITLE : { - ::rtl::OUStringBuffer sCompleteTitle(256); - - ::rtl::OUString sDocName; - aValue >>= sDocName; - - rtl::OUString sTabString; - css::uno::Reference< css::beans::XMaterialHolder > xHolder(m_xSMGR->createInstance(SERVICENAME_TABREG), css::uno::UNO_QUERY); - if (xHolder.is()) - { - ::comphelper::SequenceAsHashMap lMaterial(xHolder->getMaterial()); - sTabString = lMaterial.getUnpackedValueOrDefault(MATERIALPROP_TITLE, ::rtl::OUString()); - } - - sCompleteTitle.append(sDocName); - if (sTabString.getLength()) - { - sCompleteTitle.appendAscii(" " ); - sCompleteTitle.append (sTabString); - } - - implts_setTitleOnWindow(sCompleteTitle.makeStringAndClear()); + ::rtl::OUString sExternalTitle; + aValue >>= sExternalTitle; + setTitle (sExternalTitle); } break; @@ -2789,7 +2849,8 @@ css::uno::Any SAL_CALL Frame::impl_getPropertyValue(const ::rtl::OUString& /*sPr switch (nHandle) { case FRAME_PROPHANDLE_TITLE : - aValue <<= implts_getTitleFromWindow(); + //aValue <<= implts_getTitleFromWindow(); + aValue <<= getTitle (); break; case FRAME_PROPHANDLE_DISPATCHRECORDERSUPPLIER : |