Author: arielch
Date: Sat May 25 22:10:02 2013
New Revision: 1486372
URL: http://svn.apache.org/r1486372
Log:
svt::ToolboxController clean-up
Some small clean-up to use the PopupMenu ToolbarController
Modified:
openoffice/trunk/main/framework/source/uielement/generictoolbarcontroller.cxx
openoffice/trunk/main/framework/source/uielement/toolbarmanager.cxx
openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx
openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx
Modified:
openoffice/trunk/main/framework/source/uielement/generictoolbarcontroller.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/source/uielement/generictoolbarcontroller.cxx?rev=1486372&r1=1486371&r2=1486372&view=diff
==============================================================================
---
openoffice/trunk/main/framework/source/uielement/generictoolbarcontroller.cxx
(original)
+++
openoffice/trunk/main/framework/source/uielement/generictoolbarcontroller.cxx
Sat May 25 22:10:02 2013
@@ -381,9 +381,15 @@ MenuToolbarController::createPopupWindow
}
}
+ if ( !pMenu || !m_pToolbar )
+ return NULL;
+
+ OSL_ENSURE ( pMenu->GetItemCount(), "Empty PopupMenu!" );
+
::Rectangle aRect( m_pToolbar->GetItemRect( m_nID ) );
pMenu->Execute( m_pToolbar, aRect, POPUPMENU_EXECUTE_DOWN );
- return NULL;
+
+ return NULL;
}
} // namespace
Modified: openoffice/trunk/main/framework/source/uielement/toolbarmanager.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/source/uielement/toolbarmanager.cxx?rev=1486372&r1=1486371&r2=1486372&view=diff
==============================================================================
--- openoffice/trunk/main/framework/source/uielement/toolbarmanager.cxx
(original)
+++ openoffice/trunk/main/framework/source/uielement/toolbarmanager.cxx Sat May
25 22:10:02 2013
@@ -985,6 +985,9 @@ void ToolBarManager::CreateControllers()
aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"ParentWindow" ));
aPropValue.Value <<= xToolbarWindow;
aPropertyVector.push_back( makeAny( aPropValue ));
+ aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"Identifier" ));
+ aPropValue.Value = uno::makeAny( nId );
+ aPropertyVector.push_back( uno::makeAny( aPropValue ) );
if ( nWidth > 0 )
{
@@ -1097,6 +1100,9 @@ void ToolBarManager::CreateControllers()
aPropValue.Name = rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "ModuleIdentifier" ));
aPropValue.Value <<= m_aModuleIdentifier;
aPropertyVector.push_back( makeAny( aPropValue ));
+ aPropValue.Name = rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "Identifier" ));
+ aPropValue.Value = uno::makeAny( nId );
+ aPropertyVector.push_back( uno::makeAny( aPropValue ) );
if ( nWidth > 0 )
{
@@ -1312,9 +1318,12 @@ void ToolBarManager::FillToolbar( const
try
{
Reference< XIndexAccess > xMenuContainer;
- if ( m_xDocUICfgMgr.is() )
+ if ( m_xDocUICfgMgr.is() &&
+ m_xDocUICfgMgr->hasSettings( aCommandURL
) )
xMenuContainer =
m_xDocUICfgMgr->getSettings( aCommandURL, sal_False );
- if ( !xMenuContainer.is() && m_xUICfgMgr.is() )
+ if ( !xMenuContainer.is() &&
+ m_xUICfgMgr.is() &&
+ m_xUICfgMgr->hasSettings( aCommandURL ) )
xMenuContainer = m_xUICfgMgr->getSettings(
aCommandURL, sal_False );
if ( xMenuContainer.is() &&
xMenuContainer->getCount() )
{
@@ -1361,7 +1370,10 @@ void ToolBarManager::FillToolbar( const
sal_uInt16 nItemBits = ConvertStyleToToolboxItemBits(
nStyle );
if ( aMenuDesc.is() )
+ {
m_aMenuMap[ nId ] = aMenuDesc;
+ nItemBits |= TIB_DROPDOWNONLY;
+ }
m_pToolBar->InsertItem( nId, aString, nItemBits );
m_pToolBar->SetItemCommand( nId, aCommandURL );
if ( aTooltip.getLength() )
Modified: openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx?rev=1486372&r1=1486371&r2=1486372&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx (original)
+++ openoffice/trunk/main/svtools/inc/svtools/toolboxcontroller.hxx Sat May 25
22:10:02 2013
@@ -38,12 +38,13 @@
#include <cppuhelper/interfacecontainer.hxx>
#include <comphelper/broadcasthelper.hxx>
#include <com/sun/star/util/XURLTransformer.hpp>
-//shizhoubo for ToolbarController Visiable
#include <comphelper/proparrhlp.hxx>
#include <comphelper/property.hxx>
#include <comphelper/propertycontainer.hxx>
#include <cppuhelper/propshlp.hxx>
#include <cppuhelper/interfacecontainer.hxx>
+#include <tools/link.hxx>
+
//end
#ifndef INCLUDED_HASH_MAP
#include <hash_map>
@@ -54,7 +55,8 @@ class ToolBox;
namespace svt
{
-struct ToolboxController_Impl;
+
+struct DispatchInfo;
class SVT_DLLPUBLIC ToolboxController : public
::com::sun::star::frame::XStatusListener,
public ::com::sun::star::frame::XToolbarController,
@@ -122,12 +124,14 @@ class SVT_DLLPUBLIC ToolboxController :
const rtl::OUString& getCommandURL() const { return
m_aCommandURL; }
- const rtl::OUString& getModuleName() const;
+ const rtl::OUString& getModuleName() const { return
m_sModuleName; }
void dispatchCommand( const ::rtl::OUString& sCommandURL, const
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
rArgs );
void enable( bool bEnable );
+ DECL_STATIC_LINK( ToolboxController, ExecuteHdl_Impl, DispatchInfo* );
+
protected:
bool getToolboxId( sal_uInt16& rItemId, ToolBox** ppToolBox );
void setSupportVisiableProperty(sal_Bool bValue); //shizhoubo
@@ -153,17 +157,24 @@ class SVT_DLLPUBLIC ToolboxController :
sal_Bool isBound() const;
sal_Bool hasBigImages() const;
sal_Bool isHighContrast() const;
+ // TODO remove
::com::sun::star::uno::Reference<
::com::sun::star::util::XURLTransformer > getURLTransformer() const;
+ // TODO remove
::com::sun::star::uno::Reference<
::com::sun::star::awt::XWindow > getParent() const;
sal_Bool
m_bInitialized : 1,
m_bDisposed : 1;
+ sal_uInt16
m_nToolBoxId;
::com::sun::star::uno::Reference<
::com::sun::star::frame::XFrame > m_xFrame;
- ToolboxController_Impl*
m_pImpl;
::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
rtl::OUString
m_aCommandURL;
URLToDispatchMap
m_aListenerMap;
::cppu::OMultiTypeInterfaceContainerHelper
m_aListenerContainer; /// container for ALL Listener
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >
m_xParentWindow;
+ ::com::sun::star::uno::Reference<
::com::sun::star::util::XURLTransformer > m_xUrlTransformer;
+ rtl::OUString m_sModuleName;
+
};
}
Modified: openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx?rev=1486372&r1=1486371&r2=1486372&view=diff
==============================================================================
--- openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx (original)
+++ openoffice/trunk/main/svtools/source/uno/toolboxcontroller.cxx Sat May 25
22:10:02 2013
@@ -66,20 +66,6 @@ struct DispatchInfo
: mxDispatch( xDispatch ), maURL( rURL ), maArgs( rArgs ) {}
};
-struct ToolboxController_Impl
-{
- ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >
m_xParentWindow;
- ::com::sun::star::uno::Reference<
::com::sun::star::util::XURLTransformer > m_xUrlTransformer;
- rtl::OUString m_sModuleName;
- sal_uInt16 m_nToolBoxId;
-
- DECL_STATIC_LINK( ToolboxController_Impl, ExecuteHdl_Impl,
DispatchInfo* );
-
- ToolboxController_Impl()
- : m_nToolBoxId( SAL_MAX_UINT16 )
- {}
-};
-
ToolboxController::ToolboxController(
const Reference< XMultiServiceFactory >& rServiceManager,
@@ -89,6 +75,7 @@ ToolboxController::ToolboxController(
, OWeakObject()
, m_bInitialized( sal_False )
, m_bDisposed( sal_False )
+ , m_nToolBoxId( SAL_MAX_UINT16 )
, m_xFrame(xFrame)
, m_xServiceManager( rServiceManager )
, m_aCommandURL( aCommandURL )
@@ -98,11 +85,9 @@ ToolboxController::ToolboxController(
registerProperty(TOOLBARCONTROLLER_PROPNAME_SUPPORTSVISIABLE,
TOOLBARCONTROLLER_PROPHANDLE_SUPPORTSVISIABLE,
com::sun::star::beans::PropertyAttribute::TRANSIENT |
com::sun::star::beans::PropertyAttribute::READONLY,
&m_bSupportVisiable, getCppuType(&m_bSupportVisiable));
- m_pImpl = new ToolboxController_Impl;
-
try
{
- m_pImpl->m_xUrlTransformer.set(
m_xServiceManager->createInstance(
+ m_xUrlTransformer.set( m_xServiceManager->createInstance(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ))),
UNO_QUERY );
}
@@ -116,18 +101,16 @@ ToolboxController::ToolboxController() :
, OWeakObject()
, m_bInitialized( sal_False )
, m_bDisposed( sal_False )
+ , m_nToolBoxId( SAL_MAX_UINT16 )
, m_aListenerContainer( m_aMutex )
{
//registger Propertyh by shizhoubo
registerProperty(TOOLBARCONTROLLER_PROPNAME_SUPPORTSVISIABLE,
TOOLBARCONTROLLER_PROPHANDLE_SUPPORTSVISIABLE,
com::sun::star::beans::PropertyAttribute::TRANSIENT |
com::sun::star::beans::PropertyAttribute::READONLY,
&m_bSupportVisiable, getCppuType(&m_bSupportVisiable));
-
- m_pImpl = new ToolboxController_Impl;
}
ToolboxController::~ToolboxController()
{
- delete m_pImpl;
}
Reference< XFrame > ToolboxController::getFrameInterface() const
@@ -231,16 +214,18 @@ throw ( Exception, RuntimeException )
else if ( aPropValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("ServiceManager") ))
m_xServiceManager.set(aPropValue.Value,UNO_QUERY);
else if ( aPropValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("ParentWindow") ))
-
m_pImpl->m_xParentWindow.set(aPropValue.Value,UNO_QUERY);
+
m_xParentWindow.set(aPropValue.Value,UNO_QUERY);
else if ( aPropValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("ModuleIdentifier" ) ) )
- aPropValue.Value >>=
m_pImpl->m_sModuleName;
+ aPropValue.Value >>= m_sModuleName;
+ else if ( aPropValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("Identifier" ) ) )
+ aPropValue.Value >>= m_nToolBoxId;
}
}
try
{
- if ( !m_pImpl->m_xUrlTransformer.is() &&
m_xServiceManager.is() )
- m_pImpl->m_xUrlTransformer.set(
m_xServiceManager->createInstance(
+ if ( !m_xUrlTransformer.is() && m_xServiceManager.is() )
+ m_xUrlTransformer.set(
m_xServiceManager->createInstance(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ))),
UNO_QUERY );
}
@@ -292,8 +277,8 @@ throw (::com::sun::star::uno::RuntimeExc
com::sun::star::util::URL aTargetURL;
aTargetURL.Complete = pIter->first;
- if ( m_pImpl->m_xUrlTransformer.is() )
- m_pImpl->m_xUrlTransformer->parseStrict(
aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
if ( xDispatch.is() && xStatusListener.is() )
xDispatch->removeStatusListener( xStatusListener, aTargetURL );
@@ -391,8 +376,8 @@ throw (::com::sun::star::uno::RuntimeExc
aArgs[0].Value = makeAny( KeyModifier );
aTargetURL.Complete = aCommandURL;
- if ( m_pImpl->m_xUrlTransformer.is() )
- m_pImpl->m_xUrlTransformer->parseStrict(
aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
xDispatch->dispatch( aTargetURL, aArgs );
}
catch ( DisposedException& )
@@ -452,8 +437,8 @@ void ToolboxController::addStatusListene
if ( m_xServiceManager.is() && xDispatchProvider.is() )
{
aTargetURL.Complete = aCommandURL;
- if ( m_pImpl->m_xUrlTransformer.is() )
-
m_pImpl->m_xUrlTransformer->parseStrict( aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict(
aTargetURL );
xDispatch = xDispatchProvider->queryDispatch( aTargetURL,
::rtl::OUString(), 0 );
xStatusListener = Reference< XStatusListener >( static_cast<
OWeakObject* >( this ), UNO_QUERY );
@@ -504,8 +489,8 @@ void ToolboxController::removeStatusList
{
com::sun::star::util::URL aTargetURL;
aTargetURL.Complete = aCommandURL;
- if ( m_pImpl->m_xUrlTransformer.is() )
- m_pImpl->m_xUrlTransformer->parseStrict(
aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
if ( xDispatch.is() && xStatusListener.is() )
xDispatch->removeStatusListener( xStatusListener, aTargetURL );
@@ -537,8 +522,8 @@ void ToolboxController::bindListener()
{
com::sun::star::util::URL aTargetURL;
aTargetURL.Complete = pIter->first;
- if ( m_pImpl->m_xUrlTransformer.is() )
-
m_pImpl->m_xUrlTransformer->parseStrict( aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict(
aTargetURL );
Reference< XDispatch > xDispatch( pIter->second );
if ( xDispatch.is() )
@@ -626,8 +611,8 @@ void ToolboxController::unbindListener()
{
com::sun::star::util::URL aTargetURL;
aTargetURL.Complete = pIter->first;
- if ( m_pImpl->m_xUrlTransformer.is() )
- m_pImpl->m_xUrlTransformer->parseStrict(
aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
Reference< XDispatch > xDispatch( pIter->second );
if ( xDispatch.is() )
@@ -671,7 +656,7 @@ sal_Bool ToolboxController::isHighContra
{
sal_Bool bHighContrast( sal_False );
- Reference< XWindow > xWindow = m_pImpl->m_xParentWindow;
+ Reference< XWindow > xWindow = m_xParentWindow;
if ( xWindow.is() )
{
vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() );
@@ -706,8 +691,8 @@ void ToolboxController::updateStatus( co
if ( m_xServiceManager.is() && xDispatchProvider.is() )
{
aTargetURL.Complete = aCommandURL;
- if ( m_pImpl->m_xUrlTransformer.is() )
- m_pImpl->m_xUrlTransformer->parseStrict(
aTargetURL );
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
xDispatch = xDispatchProvider->queryDispatch( aTargetURL,
rtl::OUString(), 0 );
}
}
@@ -731,17 +716,12 @@ void ToolboxController::updateStatus( co
Reference< XURLTransformer > ToolboxController::getURLTransformer() const
{
- return m_pImpl->m_xUrlTransformer;
+ return m_xUrlTransformer;
}
Reference< ::com::sun::star::awt::XWindow > ToolboxController::getParent()
const
{
- return m_pImpl->m_xParentWindow;
-}
-
-const rtl::OUString& ToolboxController::getModuleName() const
-{
- return m_pImpl->m_sModuleName;
+ return m_xParentWindow;
}
void ToolboxController::dispatchCommand( const OUString& sCommandURL, const
Sequence< PropertyValue >& rArgs )
@@ -755,7 +735,7 @@ void ToolboxController::dispatchCommand(
Reference< XDispatch > xDispatch(
xDispatchProvider->queryDispatch( aURL, OUString(), 0 ), UNO_QUERY_THROW );
- Application::PostUserEvent( STATIC_LINK(0, ToolboxController_Impl,
ExecuteHdl_Impl), new DispatchInfo( xDispatch, aURL, rArgs ) );
+ Application::PostUserEvent( STATIC_LINK(0, ToolboxController,
ExecuteHdl_Impl), new DispatchInfo( xDispatch, aURL, rArgs ) );
}
catch( Exception& )
@@ -829,7 +809,7 @@ throw( com::sun::star::uno::Exception)
//--------------------------------------------------------------------
-IMPL_STATIC_LINK_NOINSTANCE( ToolboxController_Impl, ExecuteHdl_Impl,
DispatchInfo*, pDispatchInfo )
+IMPL_STATIC_LINK_NOINSTANCE( ToolboxController, ExecuteHdl_Impl,
DispatchInfo*, pDispatchInfo )
{
pDispatchInfo->mxDispatch->dispatch( pDispatchInfo->maURL,
pDispatchInfo->maArgs );
delete pDispatchInfo;
@@ -848,12 +828,12 @@ void ToolboxController::enable( bool bEn
bool ToolboxController::getToolboxId( sal_uInt16& rItemId, ToolBox** ppToolBox
)
{
- if( (m_pImpl->m_nToolBoxId != SAL_MAX_UINT16) && (ppToolBox == 0) )
- return m_pImpl->m_nToolBoxId;
+ if( (m_nToolBoxId != SAL_MAX_UINT16) && (ppToolBox == 0) )
+ return m_nToolBoxId;
ToolBox* pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow(
getParent() ) );
- if( (m_pImpl->m_nToolBoxId == SAL_MAX_UINT16) && pToolBox )
+ if( (m_nToolBoxId == SAL_MAX_UINT16) && pToolBox )
{
const sal_uInt16 nCount = pToolBox->GetItemCount();
for ( sal_uInt16 nPos = 0; nPos < nCount; ++nPos )
@@ -861,7 +841,7 @@ bool ToolboxController::getToolboxId( sa
const sal_uInt16 nItemId = pToolBox->GetItemId( nPos );
if ( pToolBox->GetItemCommand( nItemId ) == String(
m_aCommandURL ) )
{
- m_pImpl->m_nToolBoxId = nItemId;
+ m_nToolBoxId = nItemId;
break;
}
}
@@ -870,7 +850,7 @@ bool ToolboxController::getToolboxId( sa
if( ppToolBox )
*ppToolBox = pToolBox;
- rItemId = m_pImpl->m_nToolBoxId;
+ rItemId = m_nToolBoxId;
return (rItemId != SAL_MAX_UINT16) && (( ppToolBox == 0) || (*ppToolBox
!= 0) );
}