blob: 533cb997823130b1321b36c6eda5b233f7122f92 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _MAILMERGEHELPER_HXX
#define _MAILMERGEHELPER_HXX
#include <svtools/stdctrl.hxx>
#include <unotools/configitem.hxx>
#include <com/sun/star/uno/Sequence.h>
#include "com/sun/star/mail/XAuthenticator.hpp"
#include "com/sun/star/mail/XConnectionListener.hpp"
#include "com/sun/star/uno/XCurrentContext.hpp"
#include "com/sun/star/mail/XMailMessage.hpp"
#include "com/sun/star/datatransfer/XTransferable.hpp"
#include <com/sun/star/beans/XPropertySet.hpp>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/compbase1.hxx>
#include <cppuhelper/compbase2.hxx>
#include <vcl/scrbar.hxx>
#include "swdllapi.h"
class SwMailMergeConfigItem;
namespace com{ namespace sun{ namespace star{
namespace uno{
class XComponentContext;
}
namespace lang{
class XMultiServiceFactory;
}
namespace mail{
class XSmtpService;
class XMailService;
}
}}}
/*-- 14.06.2004 12:27:42---------------------------------------------------
-----------------------------------------------------------------------*/
namespace SwMailMergeHelper
{
SW_DLLPUBLIC String CallSaveAsDialog(String& rFilter);
SW_DLLPUBLIC bool CheckMailAddress( const ::rtl::OUString& rMailAddress );
SW_DLLPUBLIC com::sun::star::uno::Reference< com::sun::star::mail::XSmtpService >
ConnectToSmtpServer( SwMailMergeConfigItem& rConfigItem,
com::sun::star::uno::Reference< com::sun::star::mail::XMailService >& xInMailService,
const String& rInMailServerPassword,
const String& rOutMailServerPassword,
Window* pDialogParentWindow = 0 );
}
/* -----------------06.04.2004 10:29-----------------
--------------------------------------------------*/
class SW_DLLPUBLIC SwBoldFixedInfo : public FixedInfo
{
public:
SwBoldFixedInfo(Window* pParent, const ResId& rResId);
~SwBoldFixedInfo();
};
struct SwAddressPreview_Impl;
namespace com{namespace sun{namespace star{
namespace container{
class XNameAccess;
}
}}}
/*-- 27.04.2004 13:20:00---------------------------------------------------
Preview window used to show the possible selection of address blocks
and also the resulting address filled with database data
-----------------------------------------------------------------------*/
class SW_DLLPUBLIC SwAddressPreview : public Window
{
ScrollBar aVScrollBar;
SwAddressPreview_Impl* pImpl;
Link m_aSelectHdl;
void DrawText_Impl( const ::rtl::OUString& rAddress, const Point& rTopLeft, const Size& rSize, bool bIsSelected);
virtual void Paint(const Rectangle&);
virtual void MouseButtonDown( const MouseEvent& rMEvt );
virtual void KeyInput( const KeyEvent& rKEvt );
virtual void StateChanged( StateChangedType nStateChange );
void UpdateScrollBar();
DECL_LINK(ScrollHdl, ScrollBar*);
public:
SwAddressPreview(Window* pParent, const ResId rResId);
~SwAddressPreview();
/** The address string is a list of address elements separated by spaces
and breaks. The addresses fit into the given layout. If more addresses then
rows/columns should be used a scrollbar will be added.
AddAddress appends the new address to the already added ones.
Initially the first added address will be selected
*/
void AddAddress(const ::rtl::OUString& rAddress);
// for preview mode - replaces the currently used address by the given one
void SetAddress(const ::rtl::OUString& rAddress);
// removes all addresses
void Clear();
// returns the selected address
sal_uInt16 GetSelectedAddress() const;
void SelectAddress(sal_uInt16 nSelect);
void ReplaceSelectedAddress(const ::rtl::OUString&);
void RemoveSelectedAddress();
// set the number of rows and columns of addresses
void SetLayout(sal_uInt16 nRows, sal_uInt16 nColumns);
void EnableScrollBar(bool bEnable = true);
// fill the actual data into a string (address block or greeting)
static String FillData(
const ::rtl::OUString& rAddress,
SwMailMergeConfigItem& rConfigItem,
const ::com::sun::star::uno::Sequence< ::rtl::OUString>* pAssignments = 0);
void SetSelectHdl (const Link& rLink) {m_aSelectHdl = rLink;}
};
/*-- 11.05.2004 15:39:59---------------------------------------------------
iterate over an address block or a greeting line
the iterator returns the parts either as pure string
or as column
-----------------------------------------------------------------------*/
struct SwMergeAddressItem
{
String sText;
bool bIsColumn;
bool bIsReturn;
SwMergeAddressItem() :
bIsColumn(false),
bIsReturn(false) {}
};
class SW_DLLPUBLIC SwAddressIterator
{
String sAddress;
public:
SwAddressIterator(const String& rAddress) :
sAddress(rAddress){}
SwMergeAddressItem Next();
bool HasMore() const{return sAddress.Len() > 0;}
};
/*-- 21.05.2004 10:31:15---------------------------------------------------
-----------------------------------------------------------------------*/
class SW_DLLPUBLIC SwAuthenticator :
public cppu::WeakImplHelper1< ::com::sun::star::mail::XAuthenticator>
{
::rtl::OUString m_aUserName;
::rtl::OUString m_aPassword;
Window* m_pParentWindow;
public:
SwAuthenticator() : m_pParentWindow(0) {}
SwAuthenticator(const ::rtl::OUString& username, const ::rtl::OUString& password, Window* pParent) :
m_aUserName(username),
m_aPassword(password),
m_pParentWindow( pParent )
{}
~SwAuthenticator();
virtual ::rtl::OUString SAL_CALL getUserName( ) throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getPassword( ) throw (::com::sun::star::uno::RuntimeException);
};
/*-- 25.08.2004 12:48:47---------------------------------------------------
-----------------------------------------------------------------------*/
class SW_DLLPUBLIC SwConnectionContext :
public cppu::WeakImplHelper1< ::com::sun::star::uno::XCurrentContext >
{
::rtl::OUString m_sMailServer;
sal_Int16 m_nPort;
::rtl::OUString m_sConnectionType;
public:
SwConnectionContext(const ::rtl::OUString& rMailServer, sal_Int16 nPort, const ::rtl::OUString& rConnectionType);
~SwConnectionContext();
virtual ::com::sun::star::uno::Any SAL_CALL getValueByName( const ::rtl::OUString& Name )
throw (::com::sun::star::uno::RuntimeException);
};
/*-- 21.05.2004 10:39:20---------------------------------------------------
-----------------------------------------------------------------------*/
class SwMutexBase
{
public:
osl::Mutex m_aMutex;
};
/*-- 21.05.2004 10:39:20---------------------------------------------------
-----------------------------------------------------------------------*/
class SW_DLLPUBLIC SwConnectionListener :
public SwMutexBase,
public cppu::WeakComponentImplHelper1< ::com::sun::star::mail::XConnectionListener >
{
using cppu::WeakComponentImplHelperBase::disposing;
public:
SwConnectionListener() :
cppu::WeakComponentImplHelper1< ::com::sun::star::mail::XConnectionListener>(m_aMutex)
{}
~SwConnectionListener();
virtual void SAL_CALL connected(const ::com::sun::star::lang::EventObject& aEvent)
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL disconnected(const ::com::sun::star::lang::EventObject& aEvent)
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL disposing(const com::sun::star::lang::EventObject& aEvent)
throw(com::sun::star::uno::RuntimeException);
};
/*-- 13.07.2004 09:02:12---------------------------------------------------
-----------------------------------------------------------------------*/
class SwMailTransferable :
public SwMutexBase,
public cppu::WeakComponentImplHelper2
<
::com::sun::star::datatransfer::XTransferable,
::com::sun::star::beans::XPropertySet
>
{
rtl::OUString m_aMimeType;
rtl::OUString m_sBody;
rtl::OUString m_aURL;
rtl::OUString m_aName;
bool m_bIsBody;
public:
SwMailTransferable(const rtl::OUString& rURL, const rtl::OUString& rName, const rtl::OUString& rMimeType);
SwMailTransferable(const rtl::OUString& rBody, const rtl::OUString& rMimeType);
~SwMailTransferable();
virtual ::com::sun::star::uno::Any SAL_CALL
getTransferData( const ::com::sun::star::datatransfer::DataFlavor& aFlavor )
throw (::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL
getTransferDataFlavors( )
throw (::com::sun::star::uno::RuntimeException) ;
virtual ::sal_Bool SAL_CALL
isDataFlavorSupported( const ::com::sun::star::datatransfer::DataFlavor& aFlavor )
throw (::com::sun::star::uno::RuntimeException);
//XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
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);
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);
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);
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);
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);
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);
};
/*-- 22.06.2004 16:38:34---------------------------------------------------
-----------------------------------------------------------------------*/
class SwMailMessage :
public SwMutexBase,
public cppu::WeakComponentImplHelper1< ::com::sun::star::mail::XMailMessage >
{
::rtl::OUString m_sSenderName;
::rtl::OUString m_sSenderAddress;
::rtl::OUString m_sReplyToAddress;
::rtl::OUString m_sSubject;
::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable> m_xBody;
// ::com::sun::star::mail::MailMessageBody m_aBody;
::com::sun::star::uno::Sequence< ::rtl::OUString > m_aRecipients;
::com::sun::star::uno::Sequence< ::rtl::OUString > m_aCcRecipients;
::com::sun::star::uno::Sequence< ::rtl::OUString > m_aBccRecipients;
// ::com::sun::star::uno::Sequence< ::com::sun::star::mail::MailAttachmentDescriptor > m_aAttachments;
::com::sun::star::uno::Sequence< ::com::sun::star::mail::MailAttachment > m_aAttachments;
public:
SwMailMessage();
~SwMailMessage();
// Attributes
virtual ::rtl::OUString SAL_CALL getSenderName() throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getSenderAddress() throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getReplyToAddress() throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setReplyToAddress( const ::rtl::OUString& _replytoaddress ) throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getSubject() throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setSubject( const ::rtl::OUString& _subject ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > SAL_CALL
getBody()
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setBody( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& _body )
throw (::com::sun::star::uno::RuntimeException);
// Methods
virtual void SAL_CALL addRecipient( const ::rtl::OUString& sRecipientAddress ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addCcRecipient( const ::rtl::OUString& sRecipientAddress ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addBccRecipient( const ::rtl::OUString& sRecipientAddress ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
getRecipients( ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
getCcRecipients( ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
getBccRecipients( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addAttachment( const ::com::sun::star::mail::MailAttachment& aMailAttachment )
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::mail::MailAttachment > SAL_CALL
getAttachments( ) throw (::com::sun::star::uno::RuntimeException);
void SetSenderName(const ::rtl::OUString& rSenderName)
{m_sSenderName = rSenderName;}
void SetSenderAddress(const ::rtl::OUString& rSenderAddress)
{m_sSenderAddress = rSenderAddress;}
};
/*-- 21.05.2004 10:17:22---------------------------------------------------
-----------------------------------------------------------------------*/
SW_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext>
getCurrentCmpCtx(
::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory> rSrvMgr);
#endif