diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2005-02-21 11:25:04 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2005-02-21 11:25:04 +0000 |
commit | f2b5f38f5f661d7fc17ce9746984b5a276d7f267 (patch) | |
tree | 6a39a2bfa1c6a257257bbbb123c8f9896bfa7e3b /connectivity | |
parent | 0b995efc99c58606bebe13d34ee450713a1c3a27 (diff) |
INTEGRATION: CWS mozab05 (1.1.2); FILE ADDED
2005/02/01 07:32:43 windly 1.1.2.6: #i20088# run should have a return value to give a chance to return some values
2005/01/28 07:21:41 windly 1.1.2.5: #i20088# thunderbird support
2005/01/27 11:30:09 windly 1.1.2.4: #i41444# mozab crash on solaris sparc
2005/01/24 09:47:16 windly 1.1.2.3: #i20088#
2005/01/24 07:49:03 windly 1.1.2.2: #i20088# add thunderbird support
2005/01/17 05:30:45 windly 1.1.2.1: #i20088# Detect Mozilla Thunderbird Address Book: patchs for connectivity
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/mozab/bootstrap/MMozillaBootstrap.cxx | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/connectivity/source/drivers/mozab/bootstrap/MMozillaBootstrap.cxx b/connectivity/source/drivers/mozab/bootstrap/MMozillaBootstrap.cxx new file mode 100644 index 000000000000..a232eee84ec8 --- /dev/null +++ b/connectivity/source/drivers/mozab/bootstrap/MMozillaBootstrap.cxx @@ -0,0 +1,234 @@ +/************************************************************************* + * + * $RCSfile: MMozillaBootstrap.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2005-02-21 12:25:04 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the License); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an AS IS basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#ifndef CONNECTIVITY_SMOZILLABOOTSTRAP_HXX +#include "MMozillaBootstrap.hxx" +#endif + +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::mozilla; +using namespace connectivity::mozab; + +#ifndef _MNSFOLDERS_HXX_ +#include <MNSFolders.hxx> +#endif +#include "MNSProfileDiscover.hxx" +#include "MNSProfileManager.hxx" +#ifndef _CONNECTIVITY_MAB_MOZAB_RUNNABLE_HXX_ +#include "MNSRunnable.hxx" +#endif +#include <MNSInit.hxx> + +static MozillaBootstrap *pMozillaBootstrap=NULL; +static Reference<XMozillaBootstrap> xMozillaBootstrap; +extern "C" void* SAL_CALL OMozillaBootstrap_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) +{ + if (!pMozillaBootstrap) + { + pMozillaBootstrap=new connectivity::mozab::MozillaBootstrap( _rxFactory ); + pMozillaBootstrap->Init(); + xMozillaBootstrap = pMozillaBootstrap; + } + return pMozillaBootstrap; +} + +// -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +MozillaBootstrap::MozillaBootstrap( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) + : OMozillaBootstrap_BASE(m_aMutex), m_xMSFactory( _rxFactory ) +{ +} +// ----------------------------------------------------------------------------- +MozillaBootstrap::~MozillaBootstrap() +{ +} +// ----------------------------------------------------------------------------- +void MozillaBootstrap::Init() +{ + sal_Bool aProfileExists=sal_False; + sal_Int32 nProduct = 0; + //This must be call before any mozilla code + MNS_Init(aProfileExists,nProduct); + + m_ProfileManager = new ProfileManager(); + m_ProfileAccess = new ProfileAccess(); + bootupProfile(::com::sun::star::mozilla::MozillaProductType_Mozilla,rtl::OUString()); +} + +// -------------------------------------------------------------------------------- +void MozillaBootstrap::disposing() +{ + ::osl::MutexGuard aGuard(m_aMutex); + OMozillaBootstrap_BASE::disposing(); +} + +// static ServiceInfo +//------------------------------------------------------------------------------ +rtl::OUString MozillaBootstrap::getImplementationName_Static( ) throw(RuntimeException) +{ + return rtl::OUString::createFromAscii(MOZAB_MozillaBootstrap_IMPL_NAME); +} +//------------------------------------------------------------------------------ +Sequence< ::rtl::OUString > MozillaBootstrap::getSupportedServiceNames_Static( ) throw (RuntimeException) +{ + // which service is supported + // for more information @see com.sun.star.mozilla.MozillaBootstrap + Sequence< ::rtl::OUString > aSNS( 1 ); + aSNS[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.mozilla.MozillaBootstrap")); + return aSNS; +} + +//------------------------------------------------------------------ +::rtl::OUString SAL_CALL MozillaBootstrap::getImplementationName( ) throw(RuntimeException) +{ + return getImplementationName_Static(); +} + +//------------------------------------------------------------------ +sal_Bool SAL_CALL MozillaBootstrap::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) +{ + Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); + const ::rtl::OUString* pSupported = aSupported.getConstArray(); + const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); + for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) + ; + + return pSupported != pEnd; +} + +//------------------------------------------------------------------ +Sequence< ::rtl::OUString > SAL_CALL MozillaBootstrap::getSupportedServiceNames( ) throw(RuntimeException) +{ + return getSupportedServiceNames_Static(); +} + + +// XProfileDiscover +::sal_Int32 SAL_CALL MozillaBootstrap::getProfileCount( ::com::sun::star::mozilla::MozillaProductType product) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileCount(product); +} +::sal_Int32 SAL_CALL MozillaBootstrap::getProfileList( ::com::sun::star::mozilla::MozillaProductType product, ::com::sun::star::uno::Sequence< ::rtl::OUString >& list ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileList(product,list); +} +::rtl::OUString SAL_CALL MozillaBootstrap::getDefaultProfile( ::com::sun::star::mozilla::MozillaProductType product ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getDefaultProfile(product); +} +::rtl::OUString SAL_CALL MozillaBootstrap::getProfilePath( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfilePath(product,profileName); +} +::sal_Bool SAL_CALL MozillaBootstrap::isProfileLocked( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->isProfileLocked(product,profileName); +} +::sal_Bool SAL_CALL MozillaBootstrap::getProfileExists( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileAccess->getProfileExists(product,profileName); +} + +// XProfileManager +::sal_Int32 SAL_CALL MozillaBootstrap::bootupProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileManager->bootupProfile(product,profileName); +} +::sal_Int32 SAL_CALL MozillaBootstrap::shutdownProfile( ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileManager->shutdownProfile(); +} +::com::sun::star::mozilla::MozillaProductType SAL_CALL MozillaBootstrap::getCurrentProduct( ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileManager->getCurrentProduct(); +} +::rtl::OUString SAL_CALL MozillaBootstrap::getCurrentProfile( ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileManager->getCurrentProfile(); +} +::sal_Bool SAL_CALL MozillaBootstrap::isCurrentProfileLocked( ) throw (::com::sun::star::uno::RuntimeException) +{ + return isProfileLocked(getCurrentProduct(),m_ProfileManager->getCurrentProfile()); +} +::rtl::OUString SAL_CALL MozillaBootstrap::setCurrentProfile( ::com::sun::star::mozilla::MozillaProductType product, const ::rtl::OUString& profileName ) throw (::com::sun::star::uno::RuntimeException) +{ + return m_ProfileManager->setCurrentProfile(product,profileName); +} + +// XProxyRunner +::sal_Int32 SAL_CALL MozillaBootstrap::Run( const ::com::sun::star::uno::Reference< ::com::sun::star::mozilla::XCodeProxy >& aCode ) throw (::com::sun::star::uno::RuntimeException) +{ + ::rtl::OUString profileName = aCode->getProfileName(); + ::rtl::OUString currProfileName = getCurrentProfile(); + ::com::sun::star::mozilla::MozillaProductType currProduct = getCurrentProduct(); + + //if client provides a profileName, we will use it + if (profileName.getLength() + && ( aCode->getProductType() != currProduct || !profileName.equals(currProfileName)) ) + setCurrentProfile(aCode->getProductType(),profileName); + MNSRunnable xRunnable; + + return xRunnable.StartProxy(aCode);; +} + |