kmail
recipientseditor.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RECIPIENTSEDITOR_H
00025 #define RECIPIENTSEDITOR_H
00026
00027 #include <tqwidget.h>
00028 #include <tqscrollview.h>
00029 #include <tqguardedptr.h>
00030 #include <tqlineedit.h>
00031 #include <tqtooltip.h>
00032
00033 #include "kmlineeditspell.h"
00034 #include <tqcombobox.h>
00035
00036 class RecipientsPicker;
00037
00038 class KWindowPositioner;
00039
00040 class TQLabel;
00041 class TQPushButton;
00042 class SideWidget;
00043
00044 class Recipient
00045 {
00046 public:
00047 typedef TQValueList<Recipient> List;
00048
00049 enum Type { To, Cc, Bcc, Undefined };
00050
00051 Recipient( const TQString &email = TQString(), Type type = To );
00052
00053 void setType( Type );
00054 Type type() const;
00055
00056 void setEmail( const TQString & );
00057 TQString email() const;
00058
00059 bool isEmpty() const;
00060
00061 static int typeToId( Type );
00062 static Type idToType( int );
00063
00064 TQString typeLabel() const; static TQString typeLabel( Type );
00065 static TQStringList allTypeLabels();
00066
00067 private:
00068 TQString mEmail;
00069 Type mType;
00070 };
00071
00072 class RecipientComboBox : public TQComboBox
00073 {
00074 Q_OBJECT
00075
00076 public:
00077 RecipientComboBox( TQWidget *parent );
00078
00079 signals:
00080 void rightPressed();
00081
00082 protected:
00083 void keyPressEvent( TQKeyEvent *ev );
00084 };
00085
00086 class RecipientLineEdit : public KMLineEdit
00087 {
00088 Q_OBJECT
00089
00090 public:
00091 RecipientLineEdit( TQWidget * parent ) :
00092 KMLineEdit( true, parent ) {}
00093
00094 signals:
00095 void deleteMe();
00096 void leftPressed();
00097 void rightPressed();
00098
00099 protected:
00100 void keyPressEvent( TQKeyEvent *ev );
00101 };
00102
00103 class RecipientLine : public TQWidget
00104 {
00105 Q_OBJECT
00106
00107 public:
00108 RecipientLine( TQWidget *parent );
00109
00110 void setRecipient( const Recipient & );
00111 Recipient recipient() const;
00112
00113 void setRecipientType( Recipient::Type );
00114 Recipient::Type recipientType() const;
00115
00116 void setRecipient( const TQString & );
00117
00118 void activate();
00119 bool isActive();
00120
00121 bool isEmpty();
00122
00126 bool isModified();
00127
00130 void clearModified();
00131
00132 int setComboWidth( int w );
00133
00134 void fixTabOrder( TQWidget *previous );
00135 TQWidget *tabOut() const;
00136
00137 void clear();
00138
00139 int recipientsCount();
00140
00141 void setRemoveLineButtonEnabled( bool b );
00142
00143 signals:
00144 void returnPressed( RecipientLine * );
00145 void downPressed( RecipientLine * );
00146 void upPressed( RecipientLine * );
00147 void rightPressed();
00148 void deleteLine( RecipientLine * );
00149 void countChanged();
00150 void typeModified( RecipientLine * );
00151
00152 protected:
00153 void keyPressEvent( TQKeyEvent * );
00154 RecipientLineEdit* lineEdit() const { return mEdit; }
00155
00156 protected slots:
00157 void slotReturnPressed();
00158 void analyzeLine( const TQString & );
00159 void slotFocusUp();
00160 void slotFocusDown();
00161 void slotPropagateDeletion();
00162 void slotTypeModified();
00163
00164 private:
00165 friend class RecipientsView;
00166 TQComboBox *mCombo;
00167 RecipientLineEdit *mEdit;
00168 TQPushButton *mRemoveButton;
00169 int mRecipientsCount;
00170 bool mModified;
00171 };
00172
00173 class RecipientsView : public TQScrollView
00174 {
00175 Q_OBJECT
00176
00177 public:
00178 RecipientsView( TQWidget *parent );
00179
00180 TQSize minimumSizeHint() const;
00181 TQSize sizeHint() const;
00182
00183 RecipientLine *activeLine();
00184
00185 RecipientLine *emptyLine();
00186
00187 Recipient::List recipients() const;
00188
00193 void removeRecipient( const TQString & recipient, Recipient::Type type );
00194
00198 bool isModified();
00199
00202 void clearModified();
00203
00204 void activateLine( RecipientLine * );
00205
00212 int setFirstColumnWidth( int );
00213
00214 public slots:
00215 void setCompletionMode( TDEGlobalSettings::Completion );
00216 RecipientLine *addLine();
00217
00218 void setFocus();
00219 void setFocusTop();
00220 void setFocusBottom();
00221
00222 signals:
00223 void totalChanged( int recipients, int lines );
00224 void focusUp();
00225 void focusDown();
00226 void focusRight();
00227 void completionModeChanged( TDEGlobalSettings::Completion );
00228 void sizeHintChanged();
00229
00230 protected:
00231 void viewportResizeEvent( TQResizeEvent * );
00232 void resizeView();
00233
00234 protected slots:
00235 void slotReturnPressed( RecipientLine * );
00236 void slotDownPressed( RecipientLine * );
00237 void slotUpPressed( RecipientLine * );
00238 void slotDecideLineDeletion( RecipientLine * );
00239 void slotDeleteLine();
00240 void calculateTotal();
00241 void slotTypeModified( RecipientLine * );
00242 void moveCompletionPopup();
00243
00244 private:
00245 TQPtrList<RecipientLine> mLines;
00246 TQGuardedPtr<RecipientLine> mCurDelLine;
00247 int mLineHeight;
00248 int mFirstColumnWidth;
00249 bool mModified;
00250 TDEGlobalSettings::Completion mCompletionMode;
00251 };
00252
00253 class RecipientsToolTip : public TQToolTip
00254 {
00255 public:
00256 RecipientsToolTip( RecipientsView *, TQWidget *parent );
00257
00258 protected:
00259 void maybeTip( const TQPoint & p );
00260
00261 TQString line( const Recipient & );
00262
00263 private:
00264 RecipientsView *mView;
00265 };
00266
00267 class SideWidget : public TQWidget
00268 {
00269 Q_OBJECT
00270
00271 public:
00272 SideWidget( RecipientsView *view, TQWidget *parent );
00273 ~SideWidget();
00274
00275 RecipientsPicker* picker() const;
00276
00277 public slots:
00278 void setTotal( int recipients, int lines );
00279 void setFocus();
00280
00281 void pickRecipient();
00282
00283 signals:
00284 void pickedRecipient( const Recipient & );
00285 void saveDistributionList();
00286
00287 private:
00288 RecipientsView *mView;
00289 TQLabel *mTotalLabel;
00290 TQPushButton *mDistributionListButton;
00291 TQPushButton *mSelectButton;
00294 mutable RecipientsPicker *mRecipientPicker;
00296 mutable KWindowPositioner *mPickerPositioner;
00297 };
00298
00299 class RecipientsEditor : public TQWidget
00300 {
00301 Q_OBJECT
00302
00303 public:
00304 RecipientsEditor( TQWidget *parent );
00305 ~RecipientsEditor();
00306
00307 void clear();
00308
00309 Recipient::List recipients() const;
00310 RecipientsPicker* picker() const;
00311
00312 void setRecipientString( const TQString &, Recipient::Type );
00313 TQString recipientString( Recipient::Type );
00314
00319 void addRecipient( const TQString & recipient, Recipient::Type type );
00320
00325 void removeRecipient( const TQString & recipient, Recipient::Type type );
00326
00330 bool isModified();
00331
00334 void clearModified();
00335
00342 int setFirstColumnWidth( int );
00343
00347 void setCompletionMode( TDEGlobalSettings::Completion );
00348
00349 public slots:
00350 void setFocus();
00351 void setFocusTop();
00352 void setFocusBottom();
00353
00354 void selectRecipients();
00355 void saveDistributionList();
00356
00357 signals:
00358 void focusUp();
00359 void focusDown();
00360 void completionModeChanged( TDEGlobalSettings::Completion );
00361 void sizeHintChanged();
00362
00363 protected slots:
00364 void slotPickedRecipient( const Recipient & );
00365
00366 private:
00367 RecipientsView *mRecipientsView;
00368 SideWidget* mSideWidget;
00369 bool mModified;
00370 };
00371
00372 #endif
|