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 _UNOMAILMERGE_HXX_ 25 #define _UNOMAILMERGE_HXX_ 26 27 #include <functional> 28 #include <cppuhelper/implbase5.hxx> // WeakImplHelper4 29 #include <cppuhelper/interfacecontainer.hxx> // OMultiTypeInterfaceContainerHelperVar 30 #include <unotools/configitem.hxx> // !! needed for OMultiTypeInterfaceContainerHelperVar !! 31 32 33 #include <com/sun/star/task/XJob.hpp> 34 #include <com/sun/star/beans/XPropertySet.hpp> 35 #include <com/sun/star/lang/XComponent.hpp> 36 #include <com/sun/star/lang/XServiceInfo.hpp> 37 #include <com/sun/star/beans/PropertyChangeEvent.hpp> 38 #include <com/sun/star/text/XMailMergeBroadcaster.hpp> 39 #include <svl/itemprop.hxx> 40 #include <sfx2/objsh.hxx> 41 42 #include <functional> 43 44 namespace com { namespace sun { namespace star { 45 46 namespace sdbc { 47 class XResultSet; 48 class XConnection; 49 } 50 namespace frame { 51 class XModel; 52 } 53 namespace lang { 54 class XMultiServiceFactory; 55 } 56 namespace text { 57 class XMailMergeListener; 58 struct MailMergeEvent; 59 } 60 namespace beans{ 61 struct PropertyValue; 62 } 63 64 }}} 65 66 namespace rtl { 67 class OUString; 68 } 69 70 /////////////////////////////////////////////////////////////////////////// 71 72 // uses templates from <cppuhelper/interfacecontainer.h> 73 // and <unotools/configitem.hxx> 74 75 // helper function call class 76 struct PropHashType_Impl 77 { operator ()PropHashType_Impl78 size_t operator()(const sal_Int32 &s) const { return s; } 79 }; 80 81 typedef cppu::OMultiTypeInterfaceContainerHelperVar 82 < 83 sal_Int32, 84 PropHashType_Impl, 85 std::equal_to< sal_Int32 > 86 > OPropertyListenerContainerHelper; 87 88 //////////////////////////////////////////////////////////// 89 90 class SwXMailMerge : 91 public cppu::WeakImplHelper5 92 < 93 com::sun::star::task::XJob, 94 com::sun::star::beans::XPropertySet, 95 com::sun::star::text::XMailMergeBroadcaster, 96 com::sun::star::lang::XComponent, 97 com::sun::star::lang::XServiceInfo 98 > 99 { 100 cppu::OInterfaceContainerHelper aEvtListeners; 101 cppu::OInterfaceContainerHelper aMergeListeners; 102 OPropertyListenerContainerHelper aPropListeners; 103 104 //SfxItemPropertySet aPropSet; 105 const SfxItemPropertySet* pPropSet; 106 107 SfxObjectShellRef xDocSh; // the document 108 109 String aTmpFileName; 110 111 // properties of mail merge service 112 com::sun::star::uno::Sequence< com::sun::star::uno::Any > aSelection; 113 com::sun::star::uno::Reference< com::sun::star::sdbc::XResultSet > xResultSet; 114 com::sun::star::uno::Reference< com::sun::star::sdbc::XConnection > xConnection; 115 com::sun::star::uno::Reference< com::sun::star::frame::XModel > xModel; 116 rtl::OUString aDataSourceName; 117 rtl::OUString aDataCommand; 118 rtl::OUString aFilter; 119 rtl::OUString aDocumentURL; 120 rtl::OUString aOutputURL; 121 rtl::OUString aFileNamePrefix; 122 sal_Int32 nDataCommandType; 123 sal_Int16 nOutputType; 124 sal_Bool bEscapeProcessing; 125 sal_Bool bSinglePrintJobs; 126 sal_Bool bFileNameFromColumn; 127 128 129 ::rtl::OUString sInServerPassword; 130 ::rtl::OUString sOutServerPassword; 131 ::rtl::OUString sSubject; 132 ::rtl::OUString sAddressFromColumn; 133 ::rtl::OUString sMailBody; 134 ::rtl::OUString sAttachmentName; 135 ::rtl::OUString sAttachmentFilter; 136 com::sun::star::uno::Sequence< ::rtl::OUString > aCopiesTo; 137 com::sun::star::uno::Sequence< ::rtl::OUString > aBlindCopiesTo; 138 sal_Bool bSendAsHTML; 139 sal_Bool bSendAsAttachment; 140 141 com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aPrintSettings; 142 143 sal_Bool bSaveAsSingleFile; 144 ::rtl::OUString sSaveFilter; 145 ::rtl::OUString sSaveFilterOptions; 146 com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aSaveFilterData; 147 148 149 150 sal_Bool bDisposing; 151 152 153 void launchEvent( const com::sun::star::beans::PropertyChangeEvent &rEvt ) const; 154 155 // disallow use of copy-constructor and assignment-operator for now 156 SwXMailMerge( const SwXMailMerge & ); 157 SwXMailMerge & operator = ( const SwXMailMerge & ); 158 protected: 159 virtual ~SwXMailMerge(); 160 public: 161 SwXMailMerge(); 162 163 164 void LaunchMailMergeEvent( const com::sun::star::text::MailMergeEvent &rData ) const; 165 166 // XJob 167 virtual ::com::sun::star::uno::Any SAL_CALL execute( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& Arguments ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 168 169 // XPropertySet 170 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException); 171 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 172 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 173 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 174 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 175 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 176 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 177 178 // XMailMergeBroadcaster 179 virtual void SAL_CALL addMailMergeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XMailMergeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 180 virtual void SAL_CALL removeMailMergeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XMailMergeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 181 182 // XComponent 183 virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); 184 virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 185 virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); 186 187 // XServiceInfo 188 virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException); 189 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException); 190 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException); 191 }; 192 193 194 extern com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL SwXMailMerge_getSupportedServiceNames() throw(); 195 extern rtl::OUString SAL_CALL SwXMailMerge_getImplementationName() throw(); 196 extern com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL SwXMailMerge_createInstance(const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > & rSMgr) throw( com::sun::star::uno::Exception ); 197 198 //////////////////////////////////////////////////////////// 199 200 #endif 201 202 203