summaryrefslogtreecommitdiff
path: root/desktop/source/deployment/gui/dp_gui_service.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/source/deployment/gui/dp_gui_service.cxx')
-rw-r--r--desktop/source/deployment/gui/dp_gui_service.cxx365
1 files changed, 0 insertions, 365 deletions
diff --git a/desktop/source/deployment/gui/dp_gui_service.cxx b/desktop/source/deployment/gui/dp_gui_service.cxx
deleted file mode 100644
index e621b848c3..0000000000
--- a/desktop/source/deployment/gui/dp_gui_service.cxx
+++ /dev/null
@@ -1,365 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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 "precompiled_desktop.hxx"
-
-#include "dp_gui_shared.hxx"
-#include "dp_gui.h"
-#include "dp_gui_theextmgr.hxx"
-#include "cppuhelper/implbase2.hxx"
-#include "cppuhelper/implementationentry.hxx"
-#include "unotools/configmgr.hxx"
-#include "comphelper/servicedecl.hxx"
-#include "comphelper/unwrapargs.hxx"
-#include <i18npool/mslangid.hxx>
-#include "vcl/svapp.hxx"
-#include "vcl/msgbox.hxx"
-#include "com/sun/star/lang/XServiceInfo.hpp"
-#include "com/sun/star/task/XJobExecutor.hpp"
-#include "com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp"
-
-#include "boost/bind.hpp"
-#include "license_dialog.hxx"
-#include "dp_gui_dialog2.hxx"
-#include "dp_gui_extensioncmdqueue.hxx"
-
-using namespace ::dp_misc;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-
-using ::rtl::OUString;
-
-namespace css = ::com::sun::star;
-namespace dp_gui {
-
-//==============================================================================
-class MyApp : public Application, private boost::noncopyable
-{
-public:
- MyApp();
- virtual ~MyApp();
-
- // Application
- virtual int Main();
-};
-
-//______________________________________________________________________________
-MyApp::~MyApp()
-{
-}
-
-//______________________________________________________________________________
-MyApp::MyApp()
-{
-}
-
-//______________________________________________________________________________
-int MyApp::Main()
-{
- return EXIT_SUCCESS;
-}
-
-
-namespace
-{
- struct ProductName
- : public rtl::Static< String, ProductName > {};
- struct Version
- : public rtl::Static< String, Version > {};
- struct AboutBoxVersion
- : public rtl::Static< String, AboutBoxVersion > {};
- struct OOOVendor
- : public rtl::Static< String, OOOVendor > {};
- struct Extension
- : public rtl::Static< String, Extension > {};
-}
-
-void ReplaceProductNameHookProc( String& rStr )
-{
- static int nAll = 0, nPro = 0;
-
- nAll++;
- if ( rStr.SearchAscii( "%PRODUCT" ) != STRING_NOTFOUND )
- {
- String &rProductName = ProductName::get();
- String &rVersion = Version::get();
- String &rAboutBoxVersion = AboutBoxVersion::get();
- String &rExtension = Extension::get();
- String &rOOOVendor = OOOVendor::get();
-
- if ( !rProductName.Len() )
- {
- rtl::OUString aTmp;
- Any aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTNAME );
- aRet >>= aTmp;
- rProductName = aTmp;
-
- aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTVERSION );
- aRet >>= aTmp;
- rVersion = aTmp;
-
- aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::ABOUTBOXPRODUCTVERSION );
- aRet >>= aTmp;
- rAboutBoxVersion = aTmp;
-
- aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::OOOVENDOR );
- aRet >>= aTmp;
- rOOOVendor = aTmp;
-
- if ( !rExtension.Len() )
- {
- aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTEXTENSION );
- aRet >>= aTmp;
- rExtension = aTmp;
- }
- }
-
- nPro++;
- rStr.SearchAndReplaceAllAscii( "%PRODUCTNAME", rProductName );
- rStr.SearchAndReplaceAllAscii( "%PRODUCTVERSION", rVersion );
- rStr.SearchAndReplaceAllAscii( "%ABOUTBOXPRODUCTVERSION", rAboutBoxVersion );
- rStr.SearchAndReplaceAllAscii( "%OOOVENDOR", rOOOVendor );
- rStr.SearchAndReplaceAllAscii( "%PRODUCTEXTENSION", rExtension );
- }
-}
-
-//==============================================================================
-class ServiceImpl
- : public ::cppu::WeakImplHelper2<ui::dialogs::XAsynchronousExecutableDialog,
- task::XJobExecutor>
-{
- Reference<XComponentContext> const m_xComponentContext;
- boost::optional< Reference<awt::XWindow> > /* const */ m_parent;
- boost::optional<OUString> /* const */ m_view;
- /* if true then this service is running in an unopkg process and not in an office process */
- boost::optional<sal_Bool> /* const */ m_unopkg;
- boost::optional<OUString> m_extensionURL;
- OUString m_initialTitle;
- bool m_bShowUpdateOnly;
-
-public:
- ServiceImpl( Sequence<Any> const & args,
- Reference<XComponentContext> const & xComponentContext );
-
- // XAsynchronousExecutableDialog
- virtual void SAL_CALL setDialogTitle( OUString const & aTitle )
- throw (RuntimeException);
- virtual void SAL_CALL startExecuteModal(
- Reference< ui::dialogs::XDialogClosedListener > const & xListener )
- throw (RuntimeException);
-
- // XJobExecutor
- virtual void SAL_CALL trigger( OUString const & event )
- throw (RuntimeException);
-};
-
-//______________________________________________________________________________
-ServiceImpl::ServiceImpl( Sequence<Any> const& args,
- Reference<XComponentContext> const& xComponentContext)
- : m_xComponentContext(xComponentContext),
- m_bShowUpdateOnly( false )
-{
- try {
- comphelper::unwrapArgs( args, m_parent, m_view, m_unopkg );
- return;
- } catch (css::lang::IllegalArgumentException & ) {
- }
- try {
- comphelper::unwrapArgs( args, m_extensionURL);
- } catch (css::lang::IllegalArgumentException & ) {
- }
-
- ResHookProc pProc = ResMgr::GetReadStringHook();
- if ( !pProc )
- ResMgr::SetReadStringHook( ReplaceProductNameHookProc );
-}
-
-// XAsynchronousExecutableDialog
-//______________________________________________________________________________
-void ServiceImpl::setDialogTitle( OUString const & title )
- throw (RuntimeException)
-{
- if ( dp_gui::TheExtensionManager::s_ExtMgr.is() )
- {
- const SolarMutexGuard guard;
- ::rtl::Reference< ::dp_gui::TheExtensionManager > dialog(
- ::dp_gui::TheExtensionManager::get( m_xComponentContext,
- m_parent ? *m_parent : Reference<awt::XWindow>(),
- m_extensionURL ? *m_extensionURL : OUString() ) );
- dialog->SetText( title );
- }
- else
- m_initialTitle = title;
-}
-
-//______________________________________________________________________________
-void ServiceImpl::startExecuteModal(
- Reference< ui::dialogs::XDialogClosedListener > const & xListener )
- throw (RuntimeException)
-{
- bool bCloseDialog = true; // only used if m_bShowUpdateOnly is true
- ::std::auto_ptr<Application> app;
- //ToDo: synchronize access to s_dialog !!!
- if (! dp_gui::TheExtensionManager::s_ExtMgr.is())
- {
- const bool bAppUp = (GetpApp() != 0);
- bool bOfficePipePresent;
- try {
- bOfficePipePresent = dp_misc::office_is_running();
- }
- catch (Exception & exc) {
- if (bAppUp) {
- const SolarMutexGuard guard;
- std::auto_ptr<ErrorBox> box(
- new ErrorBox( Application::GetActiveTopWindow(),
- WB_OK, exc.Message ) );
- box->Execute();
- }
- throw;
- }
-
- if (! bOfficePipePresent) {
- OSL_ASSERT( ! bAppUp );
- app.reset( new MyApp );
- if (! InitVCL( Reference<lang::XMultiServiceFactory>(
- m_xComponentContext->getServiceManager(),
- UNO_QUERY_THROW ) ))
- throw RuntimeException( OUSTR("Cannot initialize VCL!"),
- static_cast<OWeakObject *>(this) );
- AllSettings as = app->GetSettings();
- OUString slang;
- if (! (::utl::ConfigManager::GetDirectConfigProperty(
- ::utl::ConfigManager::LOCALE ) >>= slang))
- throw RuntimeException( OUSTR("Cannot determine language!"),
- static_cast<OWeakObject *>(this) );
- as.SetUILanguage( MsLangId::convertIsoStringToLanguage( slang ) );
- app->SetSettings( as );
- String sTitle = ::utl::ConfigManager::GetDirectConfigProperty(
- ::utl::ConfigManager::PRODUCTNAME).get<OUString>()
- + String(static_cast<sal_Unicode>(' '))
- + ::utl::ConfigManager::GetDirectConfigProperty(
- ::utl::ConfigManager::PRODUCTVERSION).get<OUString>();
- app->SetDisplayName(sTitle);
- ExtensionCmdQueue::syncRepositories( m_xComponentContext );
- }
- }
- else
- {
- // When m_bShowUpdateOnly is set, we are inside the office and the user clicked
- // the update notification icon in the menu bar. We must not close the extensions
- // dialog after displaying the update dialog when it has been visible before
- if ( m_bShowUpdateOnly )
- bCloseDialog = ! dp_gui::TheExtensionManager::s_ExtMgr->isVisible();
- }
-
- {
- const SolarMutexGuard guard;
- ::rtl::Reference< ::dp_gui::TheExtensionManager > myExtMgr(
- ::dp_gui::TheExtensionManager::get(
- m_xComponentContext,
- m_parent ? *m_parent : Reference<awt::XWindow>(),
- m_extensionURL ? *m_extensionURL : OUString() ) );
- myExtMgr->createDialog( false );
- if (m_initialTitle.getLength() > 0) {
- myExtMgr->SetText( m_initialTitle );
- m_initialTitle = OUString();
- }
- if ( m_bShowUpdateOnly )
- {
- myExtMgr->checkUpdates( true, !bCloseDialog );
- if ( bCloseDialog )
- myExtMgr->Close();
- else
- myExtMgr->ToTop( TOTOP_RESTOREWHENMIN );
- }
- else
- {
- myExtMgr->Show();
- myExtMgr->ToTop( TOTOP_RESTOREWHENMIN );
- }
- }
-
- if (app.get() != 0) {
- Application::Execute();
- DeInitVCL();
- }
-
- if (xListener.is())
- xListener->dialogClosed(
- ui::dialogs::DialogClosedEvent(
- static_cast< ::cppu::OWeakObject * >(this),
- sal_Int16(0)) );
-}
-
-// XJobExecutor
-//______________________________________________________________________________
-void ServiceImpl::trigger( OUString const &rEvent ) throw (RuntimeException)
-{
- if ( rEvent == OUSTR("SHOW_UPDATE_DIALOG") )
- m_bShowUpdateOnly = true;
- else
- m_bShowUpdateOnly = false;
-
- startExecuteModal( Reference< ui::dialogs::XDialogClosedListener >() );
-}
-
-namespace sdecl = comphelper::service_decl;
-sdecl::class_<ServiceImpl, sdecl::with_args<true> > serviceSI;
-sdecl::ServiceDecl const serviceDecl(
- serviceSI,
- "com.sun.star.comp.deployment.ui.PackageManagerDialog",
- "com.sun.star.deployment.ui.PackageManagerDialog" );
-
-sdecl::class_<LicenseDialog, sdecl::with_args<true> > licenseSI;
-sdecl::ServiceDecl const licenseDecl(
- licenseSI,
- "com.sun.star.comp.deployment.ui.LicenseDialog",
- "com.sun.star.deployment.ui.LicenseDialog" );
-
-sdecl::class_<UpdateRequiredDialogService, sdecl::with_args<true> > updateSI;
-sdecl::ServiceDecl const updateDecl(
- updateSI,
- "com.sun.star.comp.deployment.ui.UpdateRequiredDialog",
- "com.sun.star.deployment.ui.UpdateRequiredDialog" );
-} // namespace dp_gui
-
-extern "C" {
-
-SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
- sal_Char const * pImplName,
- lang::XMultiServiceFactory * pServiceManager,
- registry::XRegistryKey * pRegistryKey )
-{
- return component_getFactoryHelper(
- pImplName, pServiceManager, pRegistryKey, dp_gui::serviceDecl, dp_gui::licenseDecl, dp_gui::updateDecl );
-}
-
-} // extern "C"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */