00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef ADDRESSESDIALOG_H
00025
#define ADDRESSESDIALOG_H
00026
00027
#include <kabc/addressee.h>
00028
#include <kdialogbase.h>
00029
#include <klistview.h>
00030
#include <qstringlist.h>
00031
#include <qptrlist.h>
00032
#include <qptrdict.h>
00033
00034
namespace KPIM {
00035
00036
class AddresseeViewItem :
public QObject,
public KListViewItem
00037 {
00038 Q_OBJECT
00039
00040
public:
00041
enum Category {
00042 To =0,
00043 CC =1,
00044 BCC =2,
00045 Group =3,
00046 Entry =4,
00047 FilledGroup =5,
00048 DistList =6
00049 };
00050 AddresseeViewItem( AddresseeViewItem *parent,
const KABC::Addressee& addr,
int emailIndex = 0 );
00051 AddresseeViewItem( KListView *lv,
const QString& name, Category cat=Group );
00052 AddresseeViewItem( AddresseeViewItem *parent,
const QString& name,
const KABC::Addressee::List &lst );
00053 AddresseeViewItem( AddresseeViewItem *parent,
const QString& name );
00054 ~AddresseeViewItem();
00055
00056 KABC::Addressee addressee() const;
00057 KABC::Addressee::List addresses() const;
00058 Category category() const;
00059
00060
QString name() const;
00061
QString email() const;
00062
00063
bool matches( const
QString& ) const;
00064
00065 virtual
int compare(
QListViewItem * i,
int col,
bool ascending ) const;
00066 virtual
void setSelected(
bool );
00067
00068 signals:
00069
void addressSelected( AddresseeViewItem*,
bool );
00070
00071 private:
00072 struct AddresseeViewItemPrivate;
00073 AddresseeViewItemPrivate *d;
00074 };
00075
00076 class AddressesDialog : public KDialogBase
00077 {
00078 Q_OBJECT
00079
public:
00080 AddressesDialog(
QWidget *widget=0,
const char *name=0 );
00081 ~AddressesDialog();
00082
00086
QStringList to() const;
00090
QStringList cc() const;
00094
QStringList bcc() const;
00095
00100 KABC::Addressee::List toAddresses() const;
00106 KABC::Addressee::List allToAddressesNoDuplicates() const;
00111 KABC::Addressee::List ccAddresses() const;
00116 KABC::Addressee::List bccAddresses() const;
00117
00122
QStringList toDistributionLists() const;
00127
QStringList ccDistributionLists() const;
00132
QStringList bccDistributionLists() const;
00133
00134 public slots:
00139
void setShowCC(
bool b );
00144
void setShowBCC(
bool b );
00149
void setRecentAddresses( const KABC::Addressee::List& addr );
00153
void setSelectedTo( const
QStringList& l );
00157
void setSelectedCC( const
QStringList& l );
00161
void setSelectedBCC( const
QStringList& l );
00162
00163 protected slots:
00164
void addSelectedTo();
00165
void addSelectedCC();
00166
void addSelectedBCC();
00167
00168
void removeEntry();
00169
void saveAs();
00170
void launchAddressBook();
00171
00172
void filterChanged( const
QString & );
00173
00174
void updateAvailableAddressees();
00175
void availableSelectionChanged();
00176
void selectedSelectionChanged();
00177
void availableAddressSelected( AddresseeViewItem* item,
bool selected );
00178
void selectedAddressSelected( AddresseeViewItem* item,
bool selected );
00179
00180 protected:
00181 AddresseeViewItem* selectedToItem();
00182 AddresseeViewItem* selectedCcItem();
00183 AddresseeViewItem* selectedBccItem();
00184
00185
void initConnections();
00186
void addDistributionLists();
00187
void addAddresseeToAvailable( const KABC::Addressee& addr,
00188 AddresseeViewItem* defaultParent=0,
bool useCategory=true );
00189
void addAddresseeToSelected( const KABC::Addressee& addr,
00190 AddresseeViewItem* defaultParent=0 );
00191
void addAddresseesToSelected( AddresseeViewItem *parent,
00192 const
QPtrList<AddresseeViewItem>& addresses );
00193
QStringList entryToString( const KABC::Addressee::List& l ) const;
00194 KABC::Addressee::List allAddressee( AddresseeViewItem* parent ) const;
00195 KABC::Addressee::List allAddressee( KListView* view,
bool onlySelected = true ) const;
00196
QStringList allDistributionLists( AddresseeViewItem* parent ) const;
00197
00198 private:
00199
00200
void checkForSingleAvailableGroup();
00201
00202
00203
00204
void unmapSelectedAddress(AddresseeViewItem* item);
00205
void updateRecentAddresses();
00206
00207 struct AddressesDialogPrivate;
00208 AddressesDialogPrivate *d;
00209
00210
QPtrList<AddresseeViewItem> selectedAvailableAddresses;
00211
QPtrList<AddresseeViewItem> selectedSelectedAddresses;
00212
QPtrDict<AddresseeViewItem> selectedToAvailableMapping;
00213 };
00214
00215 }
00216
00217 #endif