summaryrefslogtreecommitdiff
path: root/extensions/source
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2008-07-17 14:14:45 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2008-07-17 14:14:45 +0000
commit8ee6e43d05b00979ea174869e38bcad9a8f4e016 (patch)
tree67756d5d28c19f967a1b39c638b85f408a8260b3 /extensions/source
parent24faf2649019aafaa2990494ac87f16bf4c1aa89 (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')
-rw-r--r--extensions/source/oooimprovecore/core.cxx169
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;
+ }
+}