summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2005-02-21 11:25:04 +0000
committerVladimir Glazounov <vg@openoffice.org>2005-02-21 11:25:04 +0000
commitf2b5f38f5f661d7fc17ce9746984b5a276d7f267 (patch)
tree6a39a2bfa1c6a257257bbbb123c8f9896bfa7e3b /connectivity
parent0b995efc99c58606bebe13d34ee450713a1c3a27 (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.cxx234
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);;
+}
+