1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _COMPHELPER_MIMECONFIGHELPER_HXX_ 25 #define _COMPHELPER_MIMECONFIGHELPER_HXX_ 26 27 #include <com/sun/star/uno/Reference.hxx> 28 #include <com/sun/star/uno/Sequence.hxx> 29 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 30 #include <com/sun/star/container/XNameAccess.hpp> 31 #include <com/sun/star/container/XContainerQuery.hpp> 32 #include <com/sun/star/beans/NamedValue.hpp> 33 #include <com/sun/star/beans/PropertyValue.hpp> 34 #include <com/sun/star/embed/VerbDescriptor.hpp> 35 #include "comphelper/comphelperdllapi.h" 36 37 38 namespace comphelper { 39 40 class COMPHELPER_DLLPUBLIC MimeConfigurationHelper 41 { 42 ::osl::Mutex m_aMutex; 43 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xFactory; 44 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xConfigProvider; 45 46 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xObjectConfig; 47 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xVerbsConfig; 48 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xMediaTypeConfig; 49 50 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xFilterFactory; 51 52 public: 53 54 MimeConfigurationHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xFactory ); 55 56 57 static ::rtl::OUString GetStringClassIDRepresentation( const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID ); 58 59 static ::com::sun::star::uno::Sequence< sal_Int8 > GetSequenceClassIDRepresentation( const ::rtl::OUString& aClassID ); 60 61 62 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > 63 GetConfigurationByPath( const ::rtl::OUString& aPath ); 64 65 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > GetObjConfiguration(); 66 67 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > GetVerbsConfiguration(); 68 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > GetMediaTypeConfiguration(); 69 70 71 ::rtl::OUString GetDocServiceNameFromFilter( const ::rtl::OUString& aFilterName ); 72 73 ::rtl::OUString GetDocServiceNameFromMediaType( const ::rtl::OUString& aMediaType ); 74 75 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjPropsFromConfigEntry( 76 const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID, 77 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& xObjectProps ); 78 79 sal_Bool GetVerbByShortcut( const ::rtl::OUString& aVerbShortcut, 80 ::com::sun::star::embed::VerbDescriptor& aDescriptor ); 81 82 ::rtl::OUString GetExplicitlyRegisteredObjClassID( const ::rtl::OUString& aMediaType ); 83 84 85 // retrieving object description from configuration 86 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjectPropsByStringClassID( 87 const ::rtl::OUString& aStringClassID ); 88 89 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjectPropsByClassID( 90 const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID ); 91 92 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjectPropsByMediaType( 93 const ::rtl::OUString& aMediaType ); 94 95 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjectPropsByFilter( 96 const ::rtl::OUString& aFilterName ); 97 98 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetObjectPropsByDocumentName( 99 const ::rtl::OUString& aDocumentName ); 100 101 // retrieving object factory from configuration 102 ::rtl::OUString GetFactoryNameByStringClassID( const ::rtl::OUString& aStringClassID ); 103 ::rtl::OUString GetFactoryNameByClassID( const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID ); 104 ::rtl::OUString GetFactoryNameByDocumentName( const ::rtl::OUString& aDocName ); 105 ::rtl::OUString GetFactoryNameByMediaType( const ::rtl::OUString& aMediaType ); 106 107 // typedetection related 108 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > GetFilterFactory(); 109 110 sal_Int32 GetFilterFlags( const ::rtl::OUString& aFilterName ); 111 112 ::rtl::OUString UpdateMediaDescriptorWithFilterName( 113 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescr, 114 sal_Bool bIgnoreType ); 115 ::rtl::OUString UpdateMediaDescriptorWithFilterName( 116 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescr, 117 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aObject ); 118 sal_Bool AddFilterNameCheckOwnFile( 119 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescr ); 120 121 ::rtl::OUString GetDefaultFilterFromServiceName( const ::rtl::OUString& aServName, sal_Int32 nVersion ); 122 123 ::rtl::OUString GetExportFilterFromImportFilter( const ::rtl::OUString& aImportFilterName ); 124 125 static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SearchForFilter( 126 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerQuery >& xFilterQuery, 127 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aSearchRequest, 128 sal_Int32 nMustFlags, 129 sal_Int32 nDontFlags ); 130 131 static sal_Bool ClassIDsEqual( const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID1, 132 const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID2 ); 133 static ::com::sun::star::uno::Sequence< sal_Int8 > GetSequenceClassID( sal_uInt32 n1, sal_uInt16 n2, sal_uInt16 n3, 134 sal_uInt8 b8, sal_uInt8 b9, sal_uInt8 b10, sal_uInt8 b11, 135 sal_uInt8 b12, sal_uInt8 b13, sal_uInt8 b14, sal_uInt8 b15 ); 136 137 ::com::sun::star::uno::Sequence<sal_Int8> GetSequenceClassIDFromObjectName(const ::rtl::OUString& _sObjectName) ; 138 139 }; 140 141 } 142 143 #endif // _COMPHELPER_MIMECONFIGHELPER_HXX_ 144 145