fwk: Constructor feature for single-instance TaskCreatorService.
Change-Id: I9e994ebb4822458039709690aa5dd0a7f75735ac
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include <com/sun/star/frame/XFrame.hpp>
|
||||
#include <com/sun/star/frame/XFrameActionListener.hpp>
|
||||
#include <com/sun/star/lang/XEventListener.hpp>
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
|
||||
#include <unotools/moduleoptions.hxx>
|
||||
#include <cppuhelper/implbase2.hxx>
|
||||
|
@@ -1,148 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#ifndef INCLUDED_FRAMEWORK_INC_SERVICES_TASKCREATORSRV_HXX
|
||||
#define INCLUDED_FRAMEWORK_INC_SERVICES_TASKCREATORSRV_HXX
|
||||
|
||||
#include <threadhelp/threadhelpbase.hxx>
|
||||
#include <macros/xinterface.hxx>
|
||||
#include <macros/xtypeprovider.hxx>
|
||||
#include <macros/xserviceinfo.hxx>
|
||||
#include <general.h>
|
||||
#include <stdtypes.h>
|
||||
|
||||
#include <com/sun/star/uno/XInterface.hpp>
|
||||
#include <com/sun/star/frame/XFrame2.hpp>
|
||||
#include <com/sun/star/lang/XTypeProvider.hpp>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
#include <com/sun/star/awt/Rectangle.hpp>
|
||||
|
||||
#include <cppuhelper/implbase2.hxx>
|
||||
#include <comphelper/sequenceashashmap.hxx>
|
||||
|
||||
//_______________________________________________
|
||||
// definition
|
||||
|
||||
/// [XFrame] if it's set, it will be used as parent frame for the new created frame.
|
||||
const char ARGUMENT_PARENTFRAME[] = "ParentFrame"; // XFrame
|
||||
|
||||
/** [OUString] if it's not a special name (beginning with "_" ... which are not allowed here!)
|
||||
it will be set as the API name of the new created frame.
|
||||
*/
|
||||
const char ARGUMENT_FRAMENAME[] = "FrameName"; // OUString
|
||||
|
||||
/// [sal_Bool] If its set to sal_True we will make the new created frame visible.
|
||||
const char ARGUMENT_MAKEVISIBLE[] = "MakeVisible"; // sal_Bool
|
||||
|
||||
/** [sal_Bool] If not "ContainerWindow" property is set it force creation of a
|
||||
top level window as new container window.
|
||||
*/
|
||||
const char ARGUMENT_CREATETOPWINDOW[] = "CreateTopWindow"; // sal_Bool
|
||||
|
||||
/// [Rectangle] Place the new created frame on this place and resize the container window.
|
||||
const char ARGUMENT_POSSIZE[] = "PosSize"; // Rectangle
|
||||
|
||||
/// [XWindow] an outside created window, used as container window of the new created frame.
|
||||
const char ARGUMENT_CONTAINERWINDOW[] = "ContainerWindow"; // XWindow
|
||||
|
||||
/** [sal_Bool] enable/disable special mode, where this frame will be part of
|
||||
the persistent window state feature suitable for any office module window
|
||||
*/
|
||||
const char ARGUMENT_SUPPORTPERSISTENTWINDOWSTATE[] = "SupportPersistentWindowState"; // sal_Bool
|
||||
|
||||
/** [sal_Bool] enable/disable special mode, where the title bar of our
|
||||
the new created frame will be updated automaticly.
|
||||
Default = ON !
|
||||
*/
|
||||
const char ARGUMENT_ENABLE_TITLEBARUPDATE[] = "EnableTitleBarUpdate"; // sal_Bool
|
||||
|
||||
|
||||
namespace framework
|
||||
{
|
||||
|
||||
//_______________________________________________
|
||||
/**
|
||||
* TODO document me
|
||||
*/
|
||||
class TaskCreatorService : // attention! Must be the first base class to guarentee right initialize lock ...
|
||||
private ThreadHelpBase,
|
||||
public ::cppu::WeakImplHelper2<
|
||||
css::lang::XServiceInfo,
|
||||
css::lang::XSingleServiceFactory>
|
||||
{
|
||||
//___________________________________________
|
||||
// member
|
||||
|
||||
private:
|
||||
|
||||
//---------------------------------------
|
||||
/** @short the global uno service manager.
|
||||
@descr Must be used to create own needed services.
|
||||
*/
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
|
||||
//___________________________________________
|
||||
// interface
|
||||
|
||||
public:
|
||||
|
||||
TaskCreatorService(const css::uno::Reference< css::uno::XComponentContext >& xContext);
|
||||
virtual ~TaskCreatorService( );
|
||||
|
||||
// XInterface, XTypeProvider, XServiceInfo
|
||||
DECLARE_XSERVICEINFO
|
||||
|
||||
// XSingleServiceFactory
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance()
|
||||
throw(css::uno::Exception ,
|
||||
css::uno::RuntimeException);
|
||||
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(const css::uno::Sequence< css::uno::Any >& lArguments)
|
||||
throw(css::uno::Exception ,
|
||||
css::uno::RuntimeException);
|
||||
//___________________________________________
|
||||
// helper
|
||||
|
||||
private:
|
||||
|
||||
css::uno::Reference< css::awt::XWindow > implts_createContainerWindow( const css::uno::Reference< css::awt::XWindow >& xParentWindow ,
|
||||
const css::awt::Rectangle& aPosSize ,
|
||||
sal_Bool bTopWindow );
|
||||
|
||||
void implts_applyDocStyleToWindow(const css::uno::Reference< css::awt::XWindow >& xWindow) const;
|
||||
|
||||
css::uno::Reference< css::frame::XFrame2 > implts_createFrame( const css::uno::Reference< css::frame::XFrame >& xParentFrame ,
|
||||
const css::uno::Reference< css::awt::XWindow >& xContainerWindow ,
|
||||
const OUString& sName );
|
||||
|
||||
void implts_establishWindowStateListener( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
void implts_establishTitleBarUpdate( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
|
||||
void implts_establishDocModifyListener( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
|
||||
OUString impl_filterNames( const OUString& sName );
|
||||
};
|
||||
|
||||
} // namespace framework
|
||||
|
||||
#endif // INCLUDED_FRAMEWORK_INC_SERVICES_TASKCREATORSRV_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
58
framework/inc/taskcreatordefs.hxx
Normal file
58
framework/inc/taskcreatordefs.hxx
Normal file
@@ -0,0 +1,58 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#ifndef INCLUDED_FRAMEWORK_INC_TASKCREATORDEFS_HXX
|
||||
#define INCLUDED_FRAMEWORK_INC_TASKCREATORDEFS_HXX
|
||||
|
||||
/// [XFrame] if it's set, it will be used as parent frame for the new created frame.
|
||||
const char ARGUMENT_PARENTFRAME[] = "ParentFrame"; // XFrame
|
||||
|
||||
/** [OUString] if it's not a special name (beginning with "_" ... which are not allowed here!)
|
||||
it will be set as the API name of the new created frame.
|
||||
*/
|
||||
const char ARGUMENT_FRAMENAME[] = "FrameName"; // OUString
|
||||
|
||||
/// [sal_Bool] If its set to sal_True we will make the new created frame visible.
|
||||
const char ARGUMENT_MAKEVISIBLE[] = "MakeVisible"; // sal_Bool
|
||||
|
||||
/** [sal_Bool] If not "ContainerWindow" property is set it force creation of a
|
||||
top level window as new container window.
|
||||
*/
|
||||
const char ARGUMENT_CREATETOPWINDOW[] = "CreateTopWindow"; // sal_Bool
|
||||
|
||||
/// [Rectangle] Place the new created frame on this place and resize the container window.
|
||||
const char ARGUMENT_POSSIZE[] = "PosSize"; // Rectangle
|
||||
|
||||
/// [XWindow] an outside created window, used as container window of the new created frame.
|
||||
const char ARGUMENT_CONTAINERWINDOW[] = "ContainerWindow"; // XWindow
|
||||
|
||||
/** [sal_Bool] enable/disable special mode, where this frame will be part of
|
||||
the persistent window state feature suitable for any office module window
|
||||
*/
|
||||
const char ARGUMENT_SUPPORTPERSISTENTWINDOWSTATE[] = "SupportPersistentWindowState"; // sal_Bool
|
||||
|
||||
/** [sal_Bool] enable/disable special mode, where the title bar of our
|
||||
the new created frame will be updated automaticly.
|
||||
Default = ON !
|
||||
*/
|
||||
const char ARGUMENT_ENABLE_TITLEBARUPDATE[] = "EnableTitleBarUpdate"; // sal_Bool
|
||||
|
||||
#endif // INCLUDED_FRAMEWORK_INC_TASKCREATORDEFS_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@@ -18,10 +18,10 @@
|
||||
*/
|
||||
|
||||
#include <classes/taskcreator.hxx>
|
||||
#include "services/taskcreatorsrv.hxx"
|
||||
#include <threadhelp/readguard.hxx>
|
||||
#include <loadenv/targethelper.hxx>
|
||||
#include <services.h>
|
||||
#include <taskcreatordefs.hxx>
|
||||
|
||||
#include <com/sun/star/frame/Desktop.hpp>
|
||||
#include <com/sun/star/frame/TaskCreator.hpp>
|
||||
|
@@ -40,7 +40,6 @@
|
||||
#include "uiconfiguration/windowstateconfiguration.hxx"
|
||||
#include <uifactory/statusbarfactory.hxx>
|
||||
#include <services/sessionlistener.hxx>
|
||||
#include <services/taskcreatorsrv.hxx>
|
||||
|
||||
#include <services/ContextChangeEventMultiplexer.hxx>
|
||||
|
||||
@@ -53,7 +52,6 @@ COMPONENTGETFACTORY ( fwk,
|
||||
IFFACTORY( ::framework::StatusBarFactory ) else
|
||||
IFFACTORY( ::framework::SessionListener ) else
|
||||
IFFACTORY( ::framework::SessionListener ) else
|
||||
IFFACTORY( ::framework::TaskCreatorService ) else
|
||||
IFFACTORY( ::framework::ContextChangeEventMultiplexer )
|
||||
)
|
||||
|
||||
|
@@ -17,58 +17,107 @@
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#include "services/taskcreatorsrv.hxx"
|
||||
|
||||
#include <helper/persistentwindowstate.hxx>
|
||||
#include <helper/tagwindowasmodified.hxx>
|
||||
#include <helper/titlebarupdate.hxx>
|
||||
#include <threadhelp/readguard.hxx>
|
||||
#include <threadhelp/writeguard.hxx>
|
||||
#include <loadenv/targethelper.hxx>
|
||||
#include <services.h>
|
||||
#include <taskcreatordefs.hxx>
|
||||
|
||||
#include <com/sun/star/frame/Frame.hpp>
|
||||
#include <com/sun/star/frame/XController.hpp>
|
||||
#include <com/sun/star/frame/XModel.hpp>
|
||||
#include <com/sun/star/frame/XFrame2.hpp>
|
||||
#include <com/sun/star/frame/XDesktop.hpp>
|
||||
#include <com/sun/star/awt/Rectangle.hpp>
|
||||
#include <com/sun/star/awt/Toolkit.hpp>
|
||||
#include <com/sun/star/awt/XTopWindow.hpp>
|
||||
#include <com/sun/star/awt/WindowDescriptor.hpp>
|
||||
#include <com/sun/star/awt/WindowAttribute.hpp>
|
||||
#include <com/sun/star/awt/VclWindowPeerAttribute.hpp>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
|
||||
#include <comphelper/sequenceashashmap.hxx>
|
||||
#include <cppuhelper/compbase2.hxx>
|
||||
#include <cppuhelper/supportsservice.hxx>
|
||||
#include <svtools/colorcfg.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
|
||||
#include <toolkit/helper/vclunohelper.hxx>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/window.hxx>
|
||||
|
||||
//_______________________________________________
|
||||
// namespaces
|
||||
using namespace framework;
|
||||
|
||||
namespace framework
|
||||
namespace {
|
||||
|
||||
typedef ::cppu::WeakComponentImplHelper2<
|
||||
css::lang::XServiceInfo,
|
||||
css::lang::XSingleServiceFactory> TaskCreatorService_BASE;
|
||||
|
||||
class TaskCreatorService : private osl::Mutex,
|
||||
public TaskCreatorService_BASE
|
||||
{
|
||||
//-----------------------------------------------
|
||||
DEFINE_XSERVICEINFO_ONEINSTANCESERVICE_2(TaskCreatorService ,
|
||||
::cppu::OWeakObject ,
|
||||
"com.sun.star.frame.TaskCreator",
|
||||
IMPLEMENTATIONNAME_FWK_TASKCREATOR)
|
||||
private:
|
||||
|
||||
//-----------------------------------------------
|
||||
DEFINE_INIT_SERVICE(
|
||||
TaskCreatorService,
|
||||
{
|
||||
/*Attention
|
||||
I think we don't need any mutex or lock here ... because we are called by our own static method impl_createInstance()
|
||||
to create a new instance of this class by our own supported service factory.
|
||||
see macro DEFINE_XSERVICEINFO_MULTISERVICE and "impl_initService()" for further information!
|
||||
*/
|
||||
}
|
||||
)
|
||||
//---------------------------------------
|
||||
/** @short the global uno service manager.
|
||||
@descr Must be used to create own needed services.
|
||||
*/
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
|
||||
public:
|
||||
|
||||
TaskCreatorService(const css::uno::Reference< css::uno::XComponentContext >& xContext);
|
||||
virtual ~TaskCreatorService( );
|
||||
|
||||
virtual OUString SAL_CALL getImplementationName()
|
||||
throw (css::uno::RuntimeException)
|
||||
{
|
||||
return OUString("com.sun.star.comp.framework.TaskCreator");
|
||||
}
|
||||
|
||||
virtual sal_Bool SAL_CALL supportsService(OUString const & ServiceName)
|
||||
throw (css::uno::RuntimeException)
|
||||
{
|
||||
return cppu::supportsService(this, ServiceName);
|
||||
}
|
||||
|
||||
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames()
|
||||
throw (css::uno::RuntimeException)
|
||||
{
|
||||
css::uno::Sequence< OUString > aSeq(1);
|
||||
aSeq[0] = OUString("com.sun.star.frame.TaskCreator");
|
||||
return aSeq;
|
||||
}
|
||||
|
||||
// XSingleServiceFactory
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance()
|
||||
throw(css::uno::Exception ,
|
||||
css::uno::RuntimeException);
|
||||
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(const css::uno::Sequence< css::uno::Any >& lArguments)
|
||||
throw(css::uno::Exception ,
|
||||
css::uno::RuntimeException);
|
||||
|
||||
private:
|
||||
|
||||
css::uno::Reference< css::awt::XWindow > implts_createContainerWindow( const css::uno::Reference< css::awt::XWindow >& xParentWindow ,
|
||||
const css::awt::Rectangle& aPosSize ,
|
||||
sal_Bool bTopWindow );
|
||||
|
||||
void implts_applyDocStyleToWindow(const css::uno::Reference< css::awt::XWindow >& xWindow) const;
|
||||
|
||||
css::uno::Reference< css::frame::XFrame2 > implts_createFrame( const css::uno::Reference< css::frame::XFrame >& xParentFrame ,
|
||||
const css::uno::Reference< css::awt::XWindow >& xContainerWindow ,
|
||||
const OUString& sName );
|
||||
|
||||
void implts_establishWindowStateListener( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
void implts_establishTitleBarUpdate( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
|
||||
void implts_establishDocModifyListener( const css::uno::Reference< css::frame::XFrame2 >& xFrame );
|
||||
|
||||
OUString impl_filterNames( const OUString& sName );
|
||||
};
|
||||
|
||||
//-----------------------------------------------
|
||||
TaskCreatorService::TaskCreatorService(const css::uno::Reference< css::uno::XComponentContext >& xContext)
|
||||
: ThreadHelpBase (&Application::GetSolarMutex())
|
||||
: TaskCreatorService_BASE(*static_cast<osl::Mutex *>(this))
|
||||
, m_xContext (xContext )
|
||||
{
|
||||
}
|
||||
@@ -185,14 +234,8 @@ css::uno::Reference< css::awt::XWindow > TaskCreatorService::implts_createContai
|
||||
const css::awt::Rectangle& aPosSize ,
|
||||
sal_Bool bTopWindow )
|
||||
{
|
||||
// SAFE ->
|
||||
ReadGuard aReadLock( m_aLock );
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
|
||||
aReadLock.unlock();
|
||||
// <- SAFE
|
||||
|
||||
// get toolkit to create task container window
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( xContext );
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext );
|
||||
|
||||
// Check if child frames can be created really. We need at least a valid window at the parent frame ...
|
||||
css::uno::Reference< css::awt::XWindowPeer > xParentWindowPeer;
|
||||
@@ -248,14 +291,8 @@ css::uno::Reference< css::frame::XFrame2 > TaskCreatorService::implts_createFram
|
||||
const css::uno::Reference< css::awt::XWindow >& xContainerWindow,
|
||||
const OUString& sName )
|
||||
{
|
||||
// SAFE ->
|
||||
ReadGuard aReadLock( m_aLock );
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
|
||||
aReadLock.unlock();
|
||||
// <- SAFE
|
||||
|
||||
// create new frame.
|
||||
css::uno::Reference< css::frame::XFrame2 > xNewFrame = css::frame::Frame::create( xContext );
|
||||
css::uno::Reference< css::frame::XFrame2 > xNewFrame = css::frame::Frame::create( m_xContext );
|
||||
|
||||
// Set window on frame.
|
||||
// Do it before calling any other interface methods ...
|
||||
@@ -281,17 +318,11 @@ css::uno::Reference< css::frame::XFrame2 > TaskCreatorService::implts_createFram
|
||||
//-----------------------------------------------
|
||||
void TaskCreatorService::implts_establishWindowStateListener( const css::uno::Reference< css::frame::XFrame2 >& xFrame )
|
||||
{
|
||||
// SAFE ->
|
||||
ReadGuard aReadLock( m_aLock );
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
|
||||
aReadLock.unlock();
|
||||
// <- SAFE
|
||||
|
||||
// Special feature: It's allowed for frames using a top level window only!
|
||||
// We must create a special listener service and couple it with the new created task frame.
|
||||
// He will restore or save the window state of it ...
|
||||
// See used classes for further information too.
|
||||
PersistentWindowState* pPersistentStateHandler = new PersistentWindowState( xContext );
|
||||
PersistentWindowState* pPersistentStateHandler = new PersistentWindowState( m_xContext );
|
||||
css::uno::Reference< css::lang::XInitialization > xInit(static_cast< ::cppu::OWeakObject* >(pPersistentStateHandler), css::uno::UNO_QUERY_THROW);
|
||||
|
||||
css::uno::Sequence< css::uno::Any > lInitData(1);
|
||||
@@ -316,13 +347,7 @@ void TaskCreatorService::implts_establishDocModifyListener( const css::uno::Refe
|
||||
//-----------------------------------------------
|
||||
void TaskCreatorService::implts_establishTitleBarUpdate( const css::uno::Reference< css::frame::XFrame2 >& xFrame )
|
||||
{
|
||||
// SAFE ->
|
||||
ReadGuard aReadLock( m_aLock );
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
|
||||
aReadLock.unlock();
|
||||
// <- SAFE
|
||||
|
||||
TitleBarUpdate* pHelper = new TitleBarUpdate (xContext);
|
||||
TitleBarUpdate* pHelper = new TitleBarUpdate (m_xContext);
|
||||
css::uno::Reference< css::lang::XInitialization > xInit(static_cast< ::cppu::OWeakObject* >(pHelper), css::uno::UNO_QUERY_THROW);
|
||||
|
||||
css::uno::Sequence< css::uno::Any > lInitData(1);
|
||||
@@ -338,6 +363,31 @@ OUString TaskCreatorService::impl_filterNames( const OUString& sName )
|
||||
return sFiltered;
|
||||
}
|
||||
|
||||
} // namespace framework
|
||||
struct Instance {
|
||||
explicit Instance(
|
||||
css::uno::Reference<css::uno::XComponentContext> const & context):
|
||||
instance(
|
||||
static_cast<cppu::OWeakObject *>(new TaskCreatorService(context)))
|
||||
{
|
||||
}
|
||||
|
||||
css::uno::Reference<css::uno::XInterface> instance;
|
||||
};
|
||||
|
||||
struct Singleton:
|
||||
public rtl::StaticWithArg<
|
||||
Instance, css::uno::Reference<css::uno::XComponentContext>, Singleton>
|
||||
{};
|
||||
|
||||
}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
|
||||
com_sun_star_comp_framework_TaskCreator_get_implementation(
|
||||
css::uno::XComponentContext *context,
|
||||
css::uno::Sequence<css::uno::Any> const &)
|
||||
{
|
||||
return cppu::acquire(static_cast<cppu::OWeakObject *>(
|
||||
Singleton::get(context).instance.get()));
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@@ -121,7 +121,8 @@
|
||||
constructor="com_sun_star_comp_framework_StatusIndicatorFactory_get_implementation">
|
||||
<service name="com.sun.star.task.StatusIndicatorFactory"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.framework.TaskCreator">
|
||||
<implementation name="com.sun.star.comp.framework.TaskCreator"
|
||||
constructor="com_sun_star_comp_framework_TaskCreator_get_implementation">
|
||||
<service name="com.sun.star.frame.TaskCreator"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.framework.ToolBarControllerFactory"
|
||||
|
@@ -59,6 +59,7 @@ core_constructor_list = [
|
||||
"com_sun_star_comp_framework_PathSettings_get_implementation",
|
||||
"com_sun_star_comp_framework_PathSubstitution_get_implementation",
|
||||
"com_sun_star_comp_framework_StatusIndicatorFactory_get_implementation",
|
||||
"com_sun_star_comp_framework_TaskCreator_get_implementation",
|
||||
"com_sun_star_comp_framework_ToolBarControllerFactory_get_implementation",
|
||||
"com_sun_star_comp_framework_UIConfigurationManager_get_implementation",
|
||||
"com_sun_star_comp_framework_UIElementFactoryManager_get_implementation",
|
||||
|
Reference in New Issue
Block a user