00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KPIM_ADDRESSEESELECTOR_H
00023 #define KPIM_ADDRESSEESELECTOR_H
00024
00025 #include <tdeabc/addressee.h>
00026 #include <tdeabc/distributionlist.h>
00027 #include <tdeabc/resource.h>
00028 #include <kdialogbase.h>
00029 #include <tdepimmacros.h>
00030
00031 #include <tqbitarray.h>
00032 #include <tqpixmap.h>
00033 #include <tqwidget.h>
00034
00035 class KComboBox;
00036 class KLineEdit;
00037 class TDEListView;
00038 class TQSignalMapper;
00039
00040 namespace KPIM {
00041
00042 class AddresseeSelector;
00043
00044 class KDE_EXPORT Selection
00045 {
00046 friend class AddresseeSelector;
00047
00048 public:
00049 virtual ~Selection() {}
00050
00054 virtual uint fieldCount() const = 0;
00055
00059 virtual TQString fieldTitle( uint index ) const = 0;
00060
00064 virtual uint itemCount( const TDEABC::Addressee &addresse ) const = 0;
00065
00069 virtual TQString itemText( const TDEABC::Addressee &addresse, uint index ) const = 0;
00070
00074 virtual TQPixmap itemIcon( const TDEABC::Addressee &addresse, uint index ) const = 0;
00075
00079 virtual bool itemEnabled( const TDEABC::Addressee &addresse, uint index ) const = 0;
00080
00084 virtual bool itemMatches( const TDEABC::Addressee &addresse, uint index, const TQString &pattern ) const = 0;
00085
00089 virtual bool itemEquals( const TDEABC::Addressee &addresse, uint index, const TQString &pattern ) const = 0;
00090
00094 virtual TQString distributionListText( const TDEABC::DistributionList *distributionList ) const = 0;
00095
00099 virtual TQPixmap distributionListIcon( const TDEABC::DistributionList *distributionList ) const = 0;
00100
00104 virtual bool distributionListEnabled( const TDEABC::DistributionList *distributionList ) const = 0;
00105
00109 virtual bool distributionListMatches( const TDEABC::DistributionList *distributionList,
00110 const TQString &pattern ) const = 0;
00111
00115 virtual uint addressBookCount() const = 0;
00116
00120 virtual TQString addressBookTitle( uint index ) const = 0;
00121
00125 virtual TDEABC::Addressee::List addressBookContent( uint index ) const = 0;
00126
00127 protected:
00128 AddresseeSelector* selector() { return mSelector; }
00129
00130 private:
00131 virtual void addSelectedAddressees( uint fieldIndex, const TDEABC::Addressee&, uint itemIndex ) = 0;
00132 virtual void addSelectedDistributionList( uint fieldIndex, const TDEABC::DistributionList* ) = 0;
00133
00134 void setSelector( AddresseeSelector *selector ) { mSelector = selector; }
00135
00136 AddresseeSelector *mSelector;
00137 };
00138
00142 class SelectionItem
00143 {
00144 public:
00145 typedef TQValueList<SelectionItem> List;
00146
00147 SelectionItem( const TDEABC::Addressee &addressee, uint index );
00148 SelectionItem( TDEABC::DistributionList *list, uint index );
00149 SelectionItem();
00150
00151 void addToField( int index );
00152 void removeFromField( int index );
00153 bool isInField( int index );
00154
00155 TDEABC::Addressee addressee() const;
00156 TDEABC::DistributionList* distributionList() const;
00157 uint index() const;
00158
00159 private:
00160 TDEABC::Addressee mAddressee;
00161 TDEABC::DistributionList *mDistributionList;
00162 uint mIndex;
00163 TQBitArray mField;
00164 };
00165
00166 class KDE_EXPORT AddresseeSelector : public TQWidget
00167 {
00168 Q_OBJECT
00169
00170
00171 public:
00172 AddresseeSelector( Selection *selection,
00173 TQWidget *parent, const char *name = 0 );
00174 ~AddresseeSelector();
00175
00179 void finish();
00180
00181 void setItemSelected( uint fieldIndex, const TDEABC::Addressee&, uint itemIndex );
00182 void setItemSelected( uint fieldIndex, const TDEABC::Addressee&,
00183 uint itemIndex, const TQString& );
00184
00185 private slots:
00186 void move( int index );
00187 void remove( int index );
00188
00189 void updateAddresseeView();
00190 void reloadAddressBook();
00191
00192 private:
00193 void init();
00194 void initGUI();
00195
00196 void updateSelectionView( int index );
00197 void updateSelectionViews();
00198
00199 Selection *mSelection;
00200
00201 KComboBox *mAddressBookCombo;
00202 KLineEdit *mAddresseeFilter;
00203 TDEListView *mAddresseeView;
00204 SelectionItem::List mSelectionItems;
00205
00206 TQValueList<TDEListView*> mSelectionViews;
00207 TQSignalMapper *mMoveMapper;
00208 TQSignalMapper *mRemoveMapper;
00209
00210 TDEABC::DistributionListManager *mManager;
00211
00212 class AddressBookManager;
00213 AddressBookManager *mAddressBookManager;
00214 };
00215
00216 class KDE_EXPORT AddresseeSelectorDialog : public KDialogBase
00217 {
00218 Q_OBJECT
00219
00220
00221 public:
00222 AddresseeSelectorDialog( Selection *selection,
00223 TQWidget *parent = 0, const char *name = 0 );
00224
00225 protected slots:
00226 void accept();
00227
00228 private:
00229 AddresseeSelector *mSelector;
00230 };
00231
00232 }
00233
00234 #endif