diff options
Diffstat (limited to 'framework/source/uielement')
-rw-r--r-- | framework/source/uielement/popuptoolbarcontroller.cxx | 71 |
1 files changed, 65 insertions, 6 deletions
diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx index e2ac700d38ab..aa4cfbcb0eda 100644 --- a/framework/source/uielement/popuptoolbarcontroller.cxx +++ b/framework/source/uielement/popuptoolbarcontroller.cxx @@ -20,6 +20,7 @@ #include <framework/menuconfiguration.hxx> #include <toolkit/awt/vclxmenu.hxx> #include <comphelper/processfactory.hxx> +#include <rtl/ref.hxx> #include <svtools/imagemgr.hxx> #include <svtools/miscopt.hxx> #include <toolkit/helper/vclunohelper.hxx> @@ -34,6 +35,8 @@ #define UNO_COMMAND_RECENT_FILE_LIST ".uno:RecentFileList" +using namespace framework; + namespace framework { @@ -238,14 +241,35 @@ OpenToolbarController::OpenToolbarController( { } +} // framework -DEFINE_XSERVICEINFO_MULTISERVICE_2( NewToolbarController, - ::cppu::OWeakObject, - "com.sun.star.frame.ToolbarController", - OUString("org.apache.openoffice.comp.framework.NewToolbarController") - ) +namespace { + +class NewToolbarController : public PopupMenuToolbarController +{ +public: + NewToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); + + // XServiceInfo + OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException); + + sal_Bool SAL_CALL supportsService(OUString const & rServiceName) + throw (css::uno::RuntimeException); + + css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() + throw (css::uno::RuntimeException); + + void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) throw (css::uno::Exception, css::uno::RuntimeException); + +private: + void functionExecuted( const OUString &rCommand ); + void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) throw ( css::uno::RuntimeException ); + void SAL_CALL execute( sal_Int16 KeyModifier ) throw (css::uno::RuntimeException); + void setItemImage( const OUString &rCommand ); -DEFINE_INIT_SERVICE( NewToolbarController, {} ) + OUString m_aLastURL; +}; NewToolbarController::NewToolbarController( const css::uno::Reference< css::uno::XComponentContext >& xContext ) @@ -253,6 +277,27 @@ NewToolbarController::NewToolbarController( { } +OUString NewToolbarController::getImplementationName() + throw (css::uno::RuntimeException) +{ + return OUString("org.apache.openoffice.comp.framework.NewToolbarController"); +} + +sal_Bool NewToolbarController::supportsService(OUString const & rServiceName) + throw (css::uno::RuntimeException) +{ + return rServiceName == "com.sun.star.frame.ToolbarController"; +} + +css::uno::Sequence<OUString> NewToolbarController::getSupportedServiceNames() + throw (css::uno::RuntimeException) +{ + css::uno::Sequence< OUString > aRet(1); + OUString* pArray = aRet.getArray(); + pArray[0] = "com.sun.star.frame.ToolbarController"; + return aRet; +} + void SAL_CALL NewToolbarController::initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) @@ -438,5 +483,19 @@ void NewToolbarController::setItemImage( const OUString &rCommand ) m_aLastURL = aURL; } +} +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +org_apache_openoffice_comp_framework_NewToolbarController_get_implementation( + css::uno::XComponentContext * context, + uno_Sequence * arguments) +{ + assert(arguments != 0); + rtl::Reference<NewToolbarController> x(new NewToolbarController(context)); + css::uno::Sequence<css::uno::Any> aArgs( + reinterpret_cast<css::uno::Any *>(arguments->elements), + arguments->nElements); + x->initialize(aArgs); + x->acquire(); + return static_cast<cppu::OWeakObject *>(x.get()); } |