26 #include <strings.hrc>
27 #include <com/sun/star/registry/XSimpleRegistry.hpp>
28 #include <com/sun/star/lang/XInitialization.hpp>
29 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
30 #include <com/sun/star/uno/Exception.hpp>
31 #include <com/sun/star/ucb/UniversalContentBroker.hpp>
33 #include <officecfg/Setup.hxx>
34 #include <osl/file.hxx>
35 #include <rtl/bootstrap.hxx>
39 #include <rtl/instance.hxx>
67 Reference<XMultiServiceFactory> sm;
69 OUString aUnoRc(
"file:///assets/program/unorc" );
74 OUString
uri(
"$APP_DATA_DIR" );
75 rtl_bootstrap_expandMacros( &uri.pData );
76 OUString aUnoRc(
"file://" + uri +
"/unorc");
104 officecfg::Setup::Office::ooSetupConnectionURL::get(context));
105 if (!conDcpCfg.isEmpty()) {
109 std::vector< OUString >
const & conDcp = rCmdLine.
GetAccept();
110 for (
auto const& elem : conDcp)
121 typedef std::map< OUString, css::uno::Reference<css::lang::XInitialization> >
AcceptorMap;
125 struct acceptorMap :
public rtl::Static< AcceptorMap, acceptorMap > {};
126 struct CurrentTempURL :
public rtl::Static< OUString, CurrentTempURL > {};
134 AcceptorMap &rMap = acceptorMap::get();
135 AcceptorMap::const_iterator pIter = rMap.find(aAcceptString);
136 if (pIter != rMap.end() )
139 Sequence< Any >
aSeq( 2 );
140 aSeq[0] <<= aAcceptString;
143 Reference<XInitialization> rAcceptor(
144 xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.office.Acceptor", xContext),
146 if ( rAcceptor.is() )
150 rAcceptor->initialize( aSeq );
151 rMap.emplace(aAcceptString, rAcceptor);
153 catch (
const css::uno::Exception&)
163 SAL_WARN(
"desktop.app",
"Acceptor already exists.");
174 enable() : m_aSeq(1) {
177 void operator() (
const AcceptorMap::value_type& val) {
178 if (val.second.is()) {
179 val.second->initialize(m_aSeq);
195 AcceptorMap &rMap = acceptorMap::get();
196 std::for_each(rMap.begin(), rMap.end(), enable());
203 AcceptorMap &rMap = acceptorMap::get();
204 if (aAcceptString ==
"all") {
209 AcceptorMap::const_iterator pIter = rMap.find(aAcceptString);
210 if (pIter != rMap.end() ) {
213 rMap.erase(aAcceptString);
215 SAL_WARN(
"desktop.app",
"Found no acceptor to remove");
224 acceptorMap::get().clear();
229 OUString aTempBaseURL;
239 OUString aMsg =
DpResId(STR_BOOTSTRAP_ERR_NO_PATHSET_SERVICE);
240 e.Message = aMsg + e.Message;
246 if ( aTempPath.isEmpty()
247 && ::osl::File::getTempDirURL( aTempBaseURL ) == osl::FileBase::E_None )
254 if (osl::FileBase::getFileURLFromSystemPath( aTempPath, aRet )
255 != osl::FileBase::E_None)
259 CurrentTempURL::get() = aRet;
265 OUString &rCurrentTempURL = CurrentTempURL::get();
266 if ( !rCurrentTempURL.isEmpty() )
268 ::utl::UCBContentHelper::Kill( rCurrentTempURL );
std::map< OUString, css::uno::Reference< css::lang::XInitialization > > AcceptorMap
static void destroyAcceptor(const OUString &aDescription)
const OUString & GetTempPath() const
static void CreateTemporaryDirectory()
css::uno::Reference< css::deployment::XPackageRegistry > create(css::uno::Reference< css::deployment::XPackageRegistry > const &xRootRegistry, OUString const &context, OUString const &cachePath, css::uno::Reference< css::uno::XComponentContext > const &xComponentContext)
static void InitApplicationServiceManager()
static void DeregisterServices()
void RegisterServices(css::uno::Reference< css::uno::XComponentContext > const &context)
#define TOOLS_WARN_EXCEPTION(area, stream)
static void RemoveTemporaryDirectory()
static void EnableEventTestingMode()
CPPUHELPER_DLLPUBLIC css::uno::Reference< css::uno::XComponentContext > SAL_CALL defaultBootstrap_InitialComponentContext()
static CommandLineArgs & GetCommandLineArgs()
bool IsEventTesting() const
static void createAcceptor(const OUString &aDescription)
IMPL_STATIC_LINK_NOARG(Desktop, AsyncInitFirstRun, Timer *, void)
void setProcessServiceFactory(const Reference< XMultiServiceFactory > &xSMgr)
static uno::Reference< css::uno::XComponentContext > xContext
static OUString SetTempNameBaseDirectory(const OUString &rBaseName)
bool m_bServicesRegistered
std::vector< OUString > const & GetAccept() const
Reference< XComponentContext > getProcessComponentContext()
Sequence< sal_Int8 > aSeq
static void EnableHeadlessMode(bool dialogsAreFatal)
OUString DpResId(const char *pId)
#define SAL_WARN(area, stream)
static void configureUcb()
exports com.sun.star. uri