1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef INCLUDED_OFFICEINSTALLATIONDIRECTORIES_HXX 29 #define INCLUDED_OFFICEINSTALLATIONDIRECTORIES_HXX 30 31 #include "osl/mutex.hxx" 32 #include "cppuhelper/implbase2.hxx" 33 34 #include "com/sun/star/lang/XServiceInfo.hpp" 35 #include "com/sun/star/uno/XComponentContext.hpp" 36 #include "com/sun/star/util/XOfficeInstallationDirectories.hpp" 37 38 namespace comphelper { 39 40 //========================================================================= 41 42 typedef cppu::WeakImplHelper2< 43 com::sun::star::util::XOfficeInstallationDirectories, 44 com::sun::star::lang::XServiceInfo > UnoImplBase; 45 46 struct mutex_holder 47 { 48 osl::Mutex m_aMutex; 49 }; 50 51 class OfficeInstallationDirectories : public mutex_holder, public UnoImplBase 52 { 53 public: 54 OfficeInstallationDirectories( 55 const com::sun::star::uno::Reference< 56 com::sun::star::uno::XComponentContext > & xCtx ); 57 virtual ~OfficeInstallationDirectories(); 58 59 // XOfficeInstallationDirectories 60 virtual ::rtl::OUString SAL_CALL 61 getOfficeInstallationDirectoryURL() 62 throw (::com::sun::star::uno::RuntimeException); 63 virtual ::rtl::OUString SAL_CALL 64 getOfficeUserDataDirectoryURL() 65 throw (::com::sun::star::uno::RuntimeException); 66 virtual ::rtl::OUString SAL_CALL 67 makeRelocatableURL( const ::rtl::OUString& URL ) 68 throw (::com::sun::star::uno::RuntimeException); 69 virtual ::rtl::OUString SAL_CALL 70 makeAbsoluteURL( const ::rtl::OUString& URL ) 71 throw (::com::sun::star::uno::RuntimeException); 72 73 // XServiceInfo 74 virtual ::rtl::OUString SAL_CALL 75 getImplementationName() 76 throw (::com::sun::star::uno::RuntimeException); 77 virtual sal_Bool SAL_CALL 78 supportsService( const ::rtl::OUString& ServiceName ) 79 throw (::com::sun::star::uno::RuntimeException); 80 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 81 getSupportedServiceNames() 82 throw (::com::sun::star::uno::RuntimeException); 83 84 // XServiceInfo - static versions (used for component registration) 85 static ::rtl::OUString SAL_CALL 86 getImplementationName_static(); 87 static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 88 getSupportedServiceNames_static(); 89 static ::rtl::OUString SAL_CALL 90 getSingletonName_static(); 91 static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL 92 Create( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& ); 93 94 private: 95 void initDirs(); 96 97 rtl::OUString m_aOfficeBrandDirMacro; 98 rtl::OUString m_aOfficeBaseDirMacro; 99 rtl::OUString m_aUserDirMacro; 100 com::sun::star::uno::Reference< 101 com::sun::star::uno::XComponentContext > m_xCtx; 102 rtl::OUString * m_pOfficeBrandDir; 103 rtl::OUString * m_pOfficeBaseDir; 104 rtl::OUString * m_pUserDir; 105 }; 106 107 } // namespace comphelper 108 109 #endif /* !INCLUDED_OFFICEINSTALLATIONDIRECTORIES_HXX */ 110