/* -*- 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/. */ #include "ServiceDocumenter.hxx" #include #include #include #include using namespace com::sun::star; using uno::Reference; using lang::XServiceInfo; using lang::XTypeProvider; void unotools::misc::ServiceDocumenter::showCoreDocs(const Reference& xService) { if(!xService.is()) return; auto xMSF(m_xContext->getServiceManager()); Reference xShell(xMSF->createInstanceWithContext(u"com.sun.star.system.SystemShellExecute"_ustr, m_xContext), uno::UNO_QUERY); xShell->execute( m_sCoreBaseUrl + xService->getImplementationName() + ".html", u""_ustr, css::system::SystemShellExecuteFlags::URIS_ONLY); } void unotools::misc::ServiceDocumenter::showInterfaceDocs(const Reference& xTypeProvider) { if(!xTypeProvider.is()) return; auto xMSF(m_xContext->getServiceManager()); Reference xShell(xMSF->createInstanceWithContext(u"com.sun.star.system.SystemShellExecute"_ustr, m_xContext), uno::UNO_QUERY); const css::uno::Sequence aTypes = xTypeProvider->getTypes(); for(const auto& aType : aTypes) { auto sUrl = aType.getTypeName(); sal_Int32 nIdx = 0; while(nIdx != -1) sUrl = sUrl.replaceFirst(".", "_1_1", &nIdx); xShell->execute( m_sServiceBaseUrl + "/interface" + sUrl + ".html", u""_ustr, css::system::SystemShellExecuteFlags::URIS_ONLY); } } void unotools::misc::ServiceDocumenter::showServiceDocs(const Reference& xService) { if(!xService.is()) return; auto xMSF(m_xContext->getServiceManager()); Reference xShell(xMSF->createInstanceWithContext(u"com.sun.star.system.SystemShellExecute"_ustr, m_xContext), uno::UNO_QUERY); const css::uno::Sequence aServiceNames = xService->getSupportedServiceNames(); for(const auto& sService : aServiceNames) { auto sUrl = sService; sal_Int32 nIdx = 0; while(nIdx != -1) sUrl = sUrl.replaceFirst(".", "_1_1", &nIdx); xShell->execute( m_sServiceBaseUrl + "/service" + sUrl + ".html", u""_ustr, css::system::SystemShellExecuteFlags::URIS_ONLY); } } // XServiceInfo sal_Bool unotools::misc::ServiceDocumenter::supportsService(const OUString& sServiceName) { return cppu::supportsService(this, sServiceName); } OUString unotools::misc::ServiceDocumenter::getImplementationName() { return u"com.sun.star.comp.unotools.misc.ServiceDocumenter"_ustr; } css::uno::Sequence< OUString > unotools::misc::ServiceDocumenter::getSupportedServiceNames() { return { u"com.sun.star.script.ServiceDocumenter"_ustr }; } extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* unotools_ServiceDocument_get_implementation( css::uno::XComponentContext* context , css::uno::Sequence const&) { return cppu::acquire(new unotools::misc::ServiceDocumenter(context)); }