office-gobmx/sw/source/ui/dbui/mmaddressblockpage.hxx
Rüdiger Timm cab5ec8a9b INTEGRATION: CWS changefileheader (1.10.14); FILE MERGED
2008/04/01 15:58:38 thb 1.10.14.3: #i85898# Stripping all external header guards
2008/04/01 12:55:08 thb 1.10.14.2: #i85898# Stripping all external header guards
2008/03/31 16:57:03 rt 1.10.14.1: #i87441# Change license header to LPGL v3.
2008-04-10 17:31:25 +00:00

335 lines
11 KiB
C++

/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: mmaddressblockpage.hxx,v $
* $Revision: 1.11 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org 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 version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _MAILMERGEADDRESSBLOCKPAGE_HXX
#define _MAILMERGEADDRESSBLOCKPAGE_HXX
#include <svtools/wizardmachine.hxx>
#ifndef _SV_BUTTON_HXX
#include <vcl/button.hxx>
#endif
#include <svtools/stdctrl.hxx>
#include <mailmergehelper.hxx>
#include <sfx2/basedlgs.hxx>
#include <vcl/edit.hxx>
#include <vcl/lstbox.hxx>
#include <svtools/svmedit.hxx>
#include <svtools/headbar.hxx>
#include <svtools/svtreebx.hxx>
#include <vcl/combobox.hxx>
#include <svtools/lstner.hxx>
class SwMailMergeWizard;
class SwMailMergeConfigItem;
/*-- 13.04.2004 15:50:37---------------------------------------------------
-----------------------------------------------------------------------*/
class SwMailMergeAddressBlockPage : public svt::OWizardPage
{
SwBoldFixedInfo m_aHeaderFI;
FixedInfo m_aFirstFI;
FixedInfo m_aAddressListFI;
PushButton m_aAddressListPB;
FixedInfo m_aCurrentAddressFI;
FixedLine m_aFirstFL;
FixedInfo m_aSecondFI;
FixedInfo m_aSettingsFI;
CheckBox m_aAddressCB;
SwAddressPreview m_aSettingsWIN;
PushButton m_aSettingsPB;
CheckBox m_aHideEmptyParagraphsCB;
FixedLine m_aSecondFL;
FixedInfo m_aThirdFI;
FixedInfo m_aMatchFieldsFI;
PushButton m_aAssignPB;
FixedLine m_aThirdFL;
FixedInfo m_aFourthFI;
FixedInfo m_aPreviewFI;
SwAddressPreview m_aPreviewWIN;
FixedInfo m_aDocumentIndexFI;
ImageButton m_aPrevSetIB;
ImageButton m_aNextSetIB;
String m_sDocument;
String m_sCurrentAddress;
String m_sChangeAddress;
SwMailMergeWizard* m_pWizard;
DECL_LINK(AddressListHdl_Impl, PushButton*);
DECL_LINK(SettingsHdl_Impl, PushButton*);
DECL_LINK(AssignHdl_Impl, PushButton*);
DECL_LINK(AddressBlockHdl_Impl, CheckBox*);
DECL_LINK(InsertDataHdl_Impl, ImageButton*);
DECL_LINK(AddressBlockSelectHdl_Impl, SwAddressPreview*);
DECL_LINK(HideParagraphsHdl_Impl, CheckBox*);
void EnableAddressBlock(sal_Bool bAll, sal_Bool bSelective);
virtual void ActivatePage();
virtual sal_Bool commitPage( CommitPageReason _eReason );
virtual bool canAdvance() const;
public:
SwMailMergeAddressBlockPage( SwMailMergeWizard* _pParent);
~SwMailMergeAddressBlockPage();
SwMailMergeWizard* GetWizard() { return m_pWizard;}
};
/*-- 13.04.2004 15:45:31---------------------------------------------------
-----------------------------------------------------------------------*/
class SwSelectAddressBlockDialog : public SfxModalDialog
{
FixedText m_aSelectFT;
SwAddressPreview m_aPreview;
PushButton m_aNewPB;
PushButton m_aCustomizePB;
PushButton m_aDeletePB;
FixedInfo m_aSettingsFI;
RadioButton m_aNeverRB;
RadioButton m_aAlwaysRB;
RadioButton m_aDependentRB;
Edit m_aCountryED;
FixedLine m_aSeparatorFL;
OKButton m_aOK;
CancelButton m_aCancel;
HelpButton m_aHelp;
com::sun::star::uno::Sequence< ::rtl::OUString> m_aAddressBlocks;
SwMailMergeConfigItem& m_rConfig;
DECL_LINK(NewCustomizeHdl_Impl, PushButton*);
DECL_LINK(DeleteHdl_Impl, PushButton*);
DECL_LINK(IncludeHdl_Impl, RadioButton*);
using Window::SetSettings;
public:
SwSelectAddressBlockDialog(Window* pParent, SwMailMergeConfigItem& rConfig);
~SwSelectAddressBlockDialog();
void SetAddressBlocks(const com::sun::star::uno::Sequence< ::rtl::OUString>& rBlocks,
sal_uInt16 nSelected);
const com::sun::star::uno::Sequence< ::rtl::OUString>& GetAddressBlocks();
void SetSettings(sal_Bool bIsCountry, ::rtl::OUString sCountry);
sal_Bool IsIncludeCountry() const {return !m_aNeverRB.IsChecked();}
::rtl::OUString GetCountry() const;
};
/*-- 26.05.2004 11:16:25---------------------------------------------------
-----------------------------------------------------------------------*/
class SwCustomizeAddressBlockDialog;
class DDListBox : public SvTreeListBox
{
SwCustomizeAddressBlockDialog* m_pParentDialog;
public:
DDListBox(SwCustomizeAddressBlockDialog* pParent, const ResId rResId);
~DDListBox();
virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
};
/*-- 26.05.2004 11:16:25---------------------------------------------------
-----------------------------------------------------------------------*/
#define MOVE_ITEM_LEFT 1
#define MOVE_ITEM_RIGHT 2
#define MOVE_ITEM_UP 4
#define MOVE_ITEM_DOWN 8
class AddressMultiLineEdit : public MultiLineEdit, public SfxListener
{
Link m_aSelectionLink;
SwCustomizeAddressBlockDialog* m_pParentDialog;
using Window::Notify;
using MultiLineEdit::SetText;
protected:
long PreNotify( NotifyEvent& rNEvt );
public:
AddressMultiLineEdit(SwCustomizeAddressBlockDialog* pParent, const ResId& rResId);
~AddressMultiLineEdit();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
void SetSelectionChangedHdl( const Link& rLink ) {m_aSelectionLink = rLink;}
void SetText( const String& rStr );
String GetAddress();
void InsertNewEntry( const String& rStr );
void InsertNewEntryAtPosition( const String& rStr, ULONG nPara, USHORT nIndex );
void RemoveCurrentEntry();
void MoveCurrentItem(sal_uInt16 nMove);
sal_uInt16 IsCurrentItemMoveable();
bool HasCurrentItem();
String GetCurrentItem();
void SelectCurrentItem();
};
/*-- 13.04.2004 15:45:31---------------------------------------------------
Dialog is used to create custom address blocks as well as
custom greeting lines
-----------------------------------------------------------------------*/
class SwRestrictedComboBox : public ComboBox
{
String sForbiddenChars;
protected:
virtual void KeyInput( const KeyEvent& );
virtual void Modify();
public:
SwRestrictedComboBox(Window* pParent, const ResId& rResId):
ComboBox( pParent, rResId ){}
~SwRestrictedComboBox();
void SetForbiddenChars(const String& rSet){sForbiddenChars = rSet;}
};
class SwCustomizeAddressBlockDialog : public SfxModalDialog
{
friend class DDListBox;
friend class AddressMultiLineEdit;
public:
enum DialogType
{
ADDRESSBLOCK_NEW,
ADDRESSBLOCK_EDIT,
GREETING_FEMALE,
GREETING_MALE
};
private:
FixedText m_aAddressElementsFT;
DDListBox m_aAddressElementsLB;
ImageButton m_aInsertFieldIB;
ImageButton m_aRemoveFieldIB;
FixedText m_aDragFT;
AddressMultiLineEdit m_aDragED;
ImageButton m_aUpIB;
ImageButton m_aLeftIB;
ImageButton m_aRightIB;
ImageButton m_aDownIB;
FixedText m_aFieldFT;
SwRestrictedComboBox m_aFieldCB;
FixedInfo m_aPreviewFI;
SwAddressPreview m_aPreviewWIN;
FixedLine m_aSeparatorFL;
OKButton m_aOK;
CancelButton m_aCancel;
HelpButton m_aHelp;
::std::vector<String> m_aSalutations;
::std::vector<String> m_aPunctuations;
String m_sCurrentSalutation;
String m_sCurrentPunctuation;
String m_sCurrentText;
SwMailMergeConfigItem& m_rConfigItem;
DialogType m_eType;
DECL_LINK(OKHdl_Impl, OKButton*);
DECL_LINK(ListBoxSelectHdl_Impl, DDListBox*);
DECL_LINK(EditModifyHdl_Impl, AddressMultiLineEdit*);
DECL_LINK(ImageButtonHdl_Impl, ImageButton*);
DECL_LINK(SelectionChangedHdl_Impl, AddressMultiLineEdit*);
DECL_LINK(FieldChangeHdl_Impl, ComboBox*);
bool HasItem_Impl(sal_Int32 nUserData);
sal_Int32 GetSelectedItem_Impl();
void UpdateImageButtons_Impl();
void MoveFocus( Window* pMember, bool bNext );
public:
SwCustomizeAddressBlockDialog(Window* pParent, SwMailMergeConfigItem& rConfig, DialogType);
~SwCustomizeAddressBlockDialog();
void SetAddress(const ::rtl::OUString& rAddress);
::rtl::OUString GetAddress();
};
/*-- 13.04.2004 17:41:11---------------------------------------------------
-----------------------------------------------------------------------*/
class SwAssignFieldsControl;
class SwAssignFieldsDialog : public SfxModalDialog
{
FixedInfo m_aMatchingFI;
SwAssignFieldsControl* m_pFieldsControl;
FixedInfo m_aPreviewFI;
SwAddressPreview m_aPreviewWIN;
FixedLine m_aSeparatorFL;
OKButton m_aOK;
CancelButton m_aCancel;
HelpButton m_aHelp;
String m_sNone;
::rtl::OUString m_rPreviewString;
SwMailMergeConfigItem& m_rConfigItem;
::com::sun::star::uno::Sequence< ::rtl::OUString > CreateAssignments();
DECL_LINK(OkHdl_Impl, PushButton*);
DECL_LINK(AssignmentModifyHdl_Impl, void*);
public:
SwAssignFieldsDialog(Window* pParent,
SwMailMergeConfigItem& rConfigItem,
const ::rtl::OUString& rPreview,
bool bIsAddressBlock);
~SwAssignFieldsDialog();
};
#endif