diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2008-07-17 14:14:45 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2008-07-17 14:14:45 +0000 |
commit | 8ee6e43d05b00979ea174869e38bcad9a8f4e016 (patch) | |
tree | 67756d5d28c19f967a1b39c638b85f408a8260b3 /extensions/source/oooimprovecore | |
parent | 24faf2649019aafaa2990494ac87f16bf4c1aa89 (diff) |
INTEGRATION: CWS logger2 (1.1.2); FILE ADDED
2008/07/09 14:25:30 b_michaelsen 1.1.2.6: #i76683# protect call to Dialog with Solarmutex
2008/07/04 09:27:16 b_michaelsen 1.1.2.5: fixed typo in default url
2008/07/03 05:44:47 pb 1.1.2.4: #i88653# syntax error of win build fixed
2008/06/27 16:02:22 b_michaelsen 1.1.2.3: #i88653# ui moved into the core
2008/06/11 14:36:11 b_michaelsen 1.1.2.2: #i88653# fixed typo
2008/06/11 10:45:54 b_michaelsen 1.1.2.1: #i88653# liboooimprovecore implements the uno interface for the core components (com.sun.star.oooimprovecore.core)
Diffstat (limited to 'extensions/source/oooimprovecore')
-rw-r--r-- | extensions/source/oooimprovecore/core.cxx | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/extensions/source/oooimprovecore/core.cxx b/extensions/source/oooimprovecore/core.cxx new file mode 100644 index 000000000000..16454c9fba06 --- /dev/null +++ b/extensions/source/oooimprovecore/core.cxx @@ -0,0 +1,169 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: core.cxx,v $ + * + * $Revision: 1.2 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove + + +#include <com/sun/star/oooimprovement/XCore.hpp> + +#include "oooimprovecore_module.hxx" +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/oooimprovement/XCoreController.hpp> +#include <comphelper/componentmodule.hxx> +#include <comphelper/uieventslogger.hxx> +#include <comphelper/configurationhelper.hxx> +#include <cppuhelper/implbase2.hxx> +#include <svx/optimprove.hxx> +#include <vos/mutex.hxx> +#include <vcl/svapp.hxx> + + +// declaration +namespace oooimprovecore +{ + using namespace ::com::sun::star::oooimprovement; + using ::com::sun::star::lang::XServiceInfo; + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::uno::XComponentContext; + using ::com::sun::star::lang::XMultiServiceFactory; + using ::com::sun::star::uno::XInterface; + + class Core : public ::cppu::WeakImplHelper2<XCore,XServiceInfo> + { + public: + // XServiceInfo - static version + static ::rtl::OUString SAL_CALL getImplementationName_static(); + static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static(); + static Reference<XInterface> Create(const Reference<XComponentContext>& context ); + + protected: + Core(const Reference<XComponentContext>& context); + Core(const Reference<XMultiServiceFactory>& sf); + virtual ~Core(); + + // XCore + virtual sal_Int32 SAL_CALL getSessionLogEventCount() throw(RuntimeException); + virtual sal_Bool SAL_CALL getUiEventsLoggerEnabled() throw(RuntimeException); + virtual void SAL_CALL inviteUser() throw(RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw(RuntimeException); + virtual ::sal_Bool SAL_CALL supportsService(const ::rtl::OUString& service_name) throw(RuntimeException); + virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException); + + private: + Reference<XMultiServiceFactory> m_ServiceFactory; + }; +} + + +// implementation +namespace oooimprovecore { + using namespace ::rtl; + using namespace ::com::sun::star::uno; + + Core::Core(const Reference<XComponentContext>& context) + : m_ServiceFactory(Reference<XMultiServiceFactory>( + context->getServiceManager()->createInstanceWithContext( + OUString::createFromAscii("com.sun.star.lang.MultiServiceFactory"), context), + UNO_QUERY)) + { } + + Core::Core(const Reference<XMultiServiceFactory>& sf) + : m_ServiceFactory(sf) + { } + + Core::~Core() + { } + + sal_Int32 SAL_CALL Core::getSessionLogEventCount() throw(RuntimeException) + { return ::comphelper::UiEventsLogger::getSessionLogEventCount(); } + + sal_Bool SAL_CALL Core::getUiEventsLoggerEnabled() throw(RuntimeException) + { return ::comphelper::UiEventsLogger::isEnabled(); } + + void SAL_CALL Core::inviteUser() throw(RuntimeException) + { + OUString help_url; + Reference<XCoreController> core_c( + m_ServiceFactory->createInstance(OUString::createFromAscii("com.sun.star.oooimprovement.CoreController")), + UNO_QUERY); + if(core_c.is()) + ::comphelper::ConfigurationHelper::readDirectKey( + m_ServiceFactory, + ::rtl::OUString::createFromAscii("/org.openoffice.Office.OOoImprovement.Settings"), + ::rtl::OUString::createFromAscii("Participation"), + ::rtl::OUString::createFromAscii("HelpUrl"), + ::comphelper::ConfigurationHelper::E_READONLY) >>= help_url; + else + help_url = OUString::createFromAscii("http://www.openoffice.org"); + + { + ::vos::OGuard aGuard( Application::GetSolarMutex() ); + SvxImprovementDialog dlg(NULL, help_url); + dlg.Execute(); + } + } + + sal_Bool SAL_CALL Core::supportsService(const OUString& service_name) throw(RuntimeException) + { + const Sequence<OUString> service_names(getSupportedServiceNames()); + for (sal_Int32 idx = service_names.getLength()-1; idx>=0; --idx) + if(service_name == service_names[idx]) return sal_True; + return sal_False; + } + + OUString SAL_CALL Core::getImplementationName() throw(RuntimeException) + { return getImplementationName_static(); } + + Sequence<OUString> SAL_CALL Core::getSupportedServiceNames() throw(RuntimeException) + { return getSupportedServiceNames_static(); } + + OUString SAL_CALL Core::getImplementationName_static() + { return OUString::createFromAscii("com.sun.star.comp.extensions.oooimprovecore.Core"); } + + Sequence<OUString> SAL_CALL Core::getSupportedServiceNames_static() + { + Sequence<OUString> aServiceNames(1); + aServiceNames[0] = OUString::createFromAscii("com.sun.star.oooimprovement.Core"); + return aServiceNames; + } + + Reference<XInterface> Core::Create(const Reference<XComponentContext>& context) + { return *(new Core(context)); } + + void createRegistryInfo_Core() + { + static OAutoRegistration<Core> auto_reg; + } +} |