00001
#ifndef KMCommands_h
00002
#define KMCommands_h
00003
00004
#include <qguardedptr.h>
00005
#include <qptrlist.h>
00006
#include <qvaluelist.h>
00007
#include <kio/job.h>
00008
#include "kmmsgbase.h"
00009
00010
class QPopupMenu;
00011
class QTextCodec;
00012
class KMainWindow;
00013
class KProgressDialog;
00014
class KMComposeWin;
00015
class KMFilter;
00016
class KMFolder;
00017
class KMFolderImap;
00018
class KMFolderNode;
00019
class KMHeaders;
00020
class KMMainWidget;
00021
class KMMessage;
00022
class KMMsgBase;
00023
class KMReaderWin;
00024
class partNode;
00025
namespace KIO {
class Job; }
00026
00027
typedef QMap<int,KMFolder*> KMMenuToFolder;
00028
00029
class KMCommand :
public QObject
00030 {
00031 Q_OBJECT
00032
00033
public:
00034
00035 KMCommand( QWidget *parent = 0 );
00036
00037 KMCommand( QWidget *parent,
const QPtrList<KMMsgBase> &msgList );
00038
00039 KMCommand( QWidget *parent, KMMsgBase *msgBase );
00040
00041 KMCommand( QWidget *parent, KMMessage *message );
00042
virtual ~KMCommand();
00043
00044
bool deletesItself () {
return mDeletesItself; }
00045
void setDeletesItself(
bool deletesItself )
00046 { mDeletesItself = deletesItself; }
00047
00048
00049
public slots:
00050
00051
void start();
00052
00053
protected:
00054
00055
const QPtrList<KMMessage> retrievedMsgs() const;
00056
00057 KMMessage *retrievedMessage() const;
00058
00059 private:
00060
00061 virtual
void execute() = 0;
00062
00063
void preTransfer();
00064
00067
void transferSelectedMsgs();
00068
00069 private slots:
00070
void slotPostTransfer(
bool);
00072
void slotMsgTransfered(KMMessage* msg);
00074
void slotJobFinished();
00076
void slotTransferCancelled();
00077 signals:
00078
void messagesTransfered(
bool);
00081
void completed(
bool success);
00082
00083 private:
00084
00085 KProgressDialog* mProgressDialog;
00086
00087 static
int mCountJobs;
00088
int mCountMsgs;
00089
bool mDeletesItself;
00090
00091 QWidget *mParent;
00092 QPtrList<KMMessage> mRetrievedMsgs;
00093 QPtrList<KMMsgBase> mMsgList;
00094 QValueList<QGuardedPtr<
KMFolder> > mFolders;
00095 };
00096
00097 class KMMailtoComposeCommand : public KMCommand
00098 {
00099 Q_OBJECT
00100
00101
public:
00102 KMMailtoComposeCommand(
const KURL &url, KMMessage *msg=0 );
00103
00104
private:
00105
virtual void execute();
00106
00107 KURL mUrl;
00108 KMMessage *mMessage;
00109 };
00110
00111
class KMMailtoReplyCommand :
public KMCommand
00112 {
00113 Q_OBJECT
00114
00115
public:
00116 KMMailtoReplyCommand( QWidget *parent,
const KURL &url,
00117 KMMessage *msg,
const QString &selection );
00118
00119
private:
00120
virtual void execute();
00121
00122 KURL mUrl;
00123 QString mSelection;
00124 };
00125
00126
class KMMailtoForwardCommand :
public KMCommand
00127 {
00128 Q_OBJECT
00129
00130
public:
00131 KMMailtoForwardCommand( QWidget *parent,
const KURL &url,
00132 KMMessage *msg );
00133
00134
private:
00135
virtual void execute();
00136
00137 KURL mUrl;
00138 };
00139
00140
class KMMailtoAddAddrBookCommand :
public KMCommand
00141 {
00142 Q_OBJECT
00143
00144
public:
00145 KMMailtoAddAddrBookCommand(
const KURL &url, QWidget *parent );
00146
00147
private:
00148
virtual void execute();
00149
00150 KURL mUrl;
00151 QWidget *mParent;
00152 };
00153
00154
class KMAddBookmarksCommand :
public KMCommand
00155 {
00156 Q_OBJECT
00157
00158
public:
00159 KMAddBookmarksCommand(
const KURL &url, QWidget *parent );
00160
00161
private:
00162
virtual void execute();
00163
00164 KURL mUrl;
00165 QWidget *mParent;
00166 };
00167
00168
00169
class KMMailtoOpenAddrBookCommand :
public KMCommand
00170 {
00171 Q_OBJECT
00172
00173
public:
00174 KMMailtoOpenAddrBookCommand(
const KURL &url, QWidget *parent );
00175
00176
private:
00177
virtual void execute();
00178
00179 KURL mUrl;
00180 QWidget *mParent;
00181 };
00182
00183
class KMUrlCopyCommand :
public KMCommand
00184 {
00185 Q_OBJECT
00186
00187
public:
00188 KMUrlCopyCommand(
const KURL &url, KMMainWidget *mainWidget = 0 );
00189
00190
private:
00191
virtual void execute();
00192
00193 KURL mUrl;
00194 KMMainWidget *mMainWidget;
00195 };
00196
00197
class KMUrlOpenCommand :
public KMCommand
00198 {
00199 Q_OBJECT
00200
00201
public:
00202 KMUrlOpenCommand(
const KURL &url, KMReaderWin *readerWin );
00203
00204
private:
00205
virtual void execute();
00206
00207 KURL mUrl;
00208 KMReaderWin *mReaderWin;
00209 };
00210
00211
class KMUrlSaveCommand :
public KMCommand
00212 {
00213 Q_OBJECT
00214
00215
public:
00216 KMUrlSaveCommand(
const KURL &url, QWidget *parent );
00217
00218
private slots:
00219
void slotUrlSaveResult( KIO::Job *job );
00220
00221
private:
00222
virtual void execute();
00223
00224 KURL mUrl;
00225 QWidget *mParent;
00226 };
00227
00228
class KMEditMsgCommand :
public KMCommand
00229 {
00230 Q_OBJECT
00231
00232
public:
00233 KMEditMsgCommand( QWidget *parent, KMMessage *msg );
00234
00235
private:
00236
virtual void execute();
00237 };
00238
00239
class KMShowMsgSrcCommand :
public KMCommand
00240 {
00241 Q_OBJECT
00242
00243
public:
00244 KMShowMsgSrcCommand( QWidget *parent, KMMessage *msg,
00245
bool fixedFont );
00246
virtual void execute();
00247
00248
private:
00249
bool mFixedFont;
00250 };
00251
00252
class KMSaveMsgCommand :
public KMCommand
00253 {
00254 Q_OBJECT
00255
00256
public:
00257 KMSaveMsgCommand( QWidget *parent,
const QPtrList<KMMsgBase> &msgList );
00258 KMSaveMsgCommand( QWidget *parent, KMMessage * msg );
00259 KURL url();
00260
00261
private:
00262
virtual void execute();
00263
00264
private slots:
00265
void slotSaveDataReq();
00266
void slotSaveResult(KIO::Job *job);
00268
void slotMessageRetrievedForSaving(KMMessage *msg);
00269
00270
private:
00271
static const int MAX_CHUNK_SIZE = 64*1024;
00272 KURL mUrl;
00273 QValueList<unsigned long> mMsgList;
00274
unsigned int mMsgListIndex;
00275 QByteArray mData;
00276
int mOffset;
00277 size_t mTotalSize;
00278 KIO::TransferJob *mJob;
00279 };
00280
00281
class KMSaveAttachmentsCommand :
public KMCommand
00282 {
00283 Q_OBJECT
00284
public:
00285 KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg );
00286 KMSaveAttachmentsCommand( QWidget *parent,
const QPtrList<KMMsgBase>& msgs );
00287 KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments,
00288 KMMessage *msg,
bool encoded =
false );
00289
00290
protected slots:
00291
void slotSaveAll();
00292
00293
private:
00294
virtual void execute();
00295
private:
00296
void parse( partNode *rootNode );
00297
void saveAll(
const QPtrList<partNode>& attachments );
00298
void saveItem( partNode *node,
const QString& filename );
00299
private:
00300 QWidget *mParent;
00301 QPtrList<partNode> mAttachments;
00302
bool mEncoded;
00303
bool mMessageComplete;
00304 };
00305
00306
class KMReplyToCommand :
public KMCommand
00307 {
00308 Q_OBJECT
00309
00310
public:
00311 KMReplyToCommand( QWidget *parent, KMMessage *msg,
00312
const QString &selection = QString::null );
00313
00314
private:
00315
virtual void execute();
00316
00317
private:
00318 QString mSelection;
00319 };
00320
00321
class KMNoQuoteReplyToCommand :
public KMCommand
00322 {
00323 Q_OBJECT
00324
00325
public:
00326 KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00327
00328
private:
00329
virtual void execute();
00330 };
00331
00332
class KMReplyListCommand :
public KMCommand
00333 {
00334 Q_OBJECT
00335
00336
public:
00337 KMReplyListCommand( QWidget *parent, KMMessage *msg,
00338
const QString &selection = QString::null );
00339
00340
private:
00341
virtual void execute();
00342
00343
private:
00344 QString mSelection;
00345 };
00346
00347
class KMReplyToAllCommand :
public KMCommand
00348 {
00349 Q_OBJECT
00350
00351
public:
00352 KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00353
const QString &selection = QString::null );
00354
00355
private:
00356
virtual void execute();
00357
00358
private:
00359 QString mSelection;
00360 };
00361
00362
class KMReplyAuthorCommand :
public KMCommand
00363 {
00364 Q_OBJECT
00365
00366
public:
00367 KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00368
const QString &selection = QString::null );
00369
00370
private:
00371
virtual void execute();
00372
00373
private:
00374 QString mSelection;
00375 };
00376
00377
class KMForwardCommand :
public KMCommand
00378 {
00379 Q_OBJECT
00380
00381
public:
00382 KMForwardCommand( QWidget *parent,
const QPtrList<KMMsgBase> &msgList,
00383 uint identity = 0 );
00384 KMForwardCommand( QWidget *parent, KMMessage * msg,
00385 uint identity = 0 );
00386
00387
private:
00388
virtual void execute();
00389
00390
private:
00391 QWidget *mParent;
00392 uint mIdentity;
00393 };
00394
00395
class KMForwardAttachedCommand :
public KMCommand
00396 {
00397 Q_OBJECT
00398
00399
public:
00400 KMForwardAttachedCommand( QWidget *parent,
const QPtrList<KMMsgBase> &msgList,
00401 uint identity = 0, KMComposeWin *win = 0 );
00402 KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00403 uint identity = 0, KMComposeWin *win = 0 );
00404
00405
private:
00406
virtual void execute();
00407
00408 uint mIdentity;
00409 QGuardedPtr<KMComposeWin> mWin;
00410 };
00411
00412
class KMRedirectCommand :
public KMCommand
00413 {
00414 Q_OBJECT
00415
00416
public:
00417 KMRedirectCommand( QWidget *parent, KMMessage *msg );
00418
00419
private:
00420
virtual void execute();
00421 };
00422
00423
class KMBounceCommand :
public KMCommand
00424 {
00425 Q_OBJECT
00426
00427
public:
00428 KMBounceCommand( QWidget *parent, KMMessage *msg );
00429
00430
private:
00431
virtual void execute();
00432 };
00433
00434
class KMPrintCommand :
public KMCommand
00435 {
00436 Q_OBJECT
00437
00438
public:
00439 KMPrintCommand( QWidget *parent, KMMessage *msg,
bool htmlOverride=
false );
00440
00441
private:
00442
virtual void execute();
00443
00444
bool mHtmlOverride;
00445 };
00446
00447
class KMSetStatusCommand :
public KMCommand
00448 {
00449 Q_OBJECT
00450
00451
public:
00452
00453 KMSetStatusCommand( KMMsgStatus status,
const QValueList<Q_UINT32> &,
00454
bool toggle=
false );
00455
00456
private:
00457
virtual void execute();
00458
00459 KMMsgStatus mStatus;
00460 QValueList<Q_UINT32> mSerNums;
00461 QValueList<int> mIds;
00462
bool mToggle;
00463 };
00464
00465
class KMFilterCommand :
public KMCommand
00466 {
00467 Q_OBJECT
00468
00469
public:
00470 KMFilterCommand(
const QCString &field,
const QString &value );
00471
00472
private:
00473
virtual void execute();
00474
00475 QCString mField;
00476 QString mValue;
00477 };
00478
00479
00480
class KMFilterActionCommand :
public KMCommand
00481 {
00482 Q_OBJECT
00483
00484
public:
00485 KMFilterActionCommand( QWidget *parent,
00486
const QPtrList<KMMsgBase> &msgList,
00487 KMFilter *filter );
00488
00489
private:
00490
virtual void execute();
00491
00492 KMFilter *mFilter;
00493 };
00494
00495
00496
class KMMetaFilterActionCommand :
public QObject
00497 {
00498 Q_OBJECT
00499
00500
public:
00501 KMMetaFilterActionCommand( KMFilter *filter,
KMHeaders *headers,
00502 KMMainWidget *main );
00503
00504
public slots:
00505
void start();
00506
00507
private:
00508 KMFilter *mFilter;
00509
KMHeaders *mHeaders;
00510 KMMainWidget *mMainWidget;
00511 };
00512
00513
00514
class KMMailingListFilterCommand :
public KMCommand
00515 {
00516 Q_OBJECT
00517
00518
public:
00519 KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00520
00521
private:
00522
virtual void execute();
00523 };
00524
00525
00533 class KMMenuCommand :
public KMCommand
00534 {
00535 Q_OBJECT
00536
00537
public:
00538
static QPopupMenu* folderToPopupMenu(
bool move, QObject *receiver,
00539 KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00540
00541
static QPopupMenu* makeFolderMenu(KMFolderNode* item,
bool move,
00542 QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00543 };
00544
00545
class KMCopyCommand :
public KMMenuCommand
00546 {
00547 Q_OBJECT
00548
00549
public:
00550 KMCopyCommand(
KMFolder* destFolder,
00551
const QPtrList<KMMsgBase> &msgList );
00552 KMCopyCommand(
KMFolder* destFolder, KMMessage *msg );
00553
00554
private:
00555
virtual void execute();
00556
00557
KMFolder *mDestFolder;
00558 QPtrList<KMMsgBase> mMsgList;
00559 };
00560
00561
class KMMoveCommand :
public KMMenuCommand
00562 {
00563 Q_OBJECT
00564
00565
public:
00566 KMMoveCommand(
KMFolder* destFolder,
const QPtrList<KMMsgBase> &msgList );
00567 KMMoveCommand(
KMFolder* destFolder, KMMessage * msg );
00568 KMMoveCommand(
KMFolder* destFolder, KMMsgBase * msgBase );
00569
00570
public slots:
00571
void slotImapFolderCompleted(KMFolderImap *folder,
bool success);
00572
void slotMsgAddedToDestFolder(
KMFolder *folder, Q_UINT32 serNum);
00573
00574
private:
00575
virtual void execute();
00576
00577
KMFolder *mDestFolder;
00578 QPtrList<KMMsgBase> mMsgList;
00579
00580
00581 QValueList<Q_UINT32> mLostBoys;
00582 };
00583
00584
class KMDeleteMsgCommand :
public KMMoveCommand
00585 {
00586 Q_OBJECT
00587
00588
public:
00589 KMDeleteMsgCommand(
KMFolder* srcFolder,
const QPtrList<KMMsgBase> &msgList );
00590 KMDeleteMsgCommand(
KMFolder* srcFolder, KMMessage * msg );
00591
00592
private:
00593
static KMFolder * findTrashFolder(
KMFolder * srcFolder );
00594 };
00595
00596
class KMUrlClickedCommand :
public KMCommand
00597 {
00598 Q_OBJECT
00599
00600
public:
00601 KMUrlClickedCommand(
const KURL &url, uint identity,
00602 KMReaderWin *readerWin,
bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00603
00604
private:
00605
virtual void execute();
00606
00607 KURL mUrl;
00608 uint mIdentity;
00609 KMReaderWin *mReaderWin;
00610
bool mHtmlPref;
00611 KMMainWidget *mMainWidget;
00612 };
00613
00614
class KMLoadPartsCommand :
public KMCommand
00615 {
00616 Q_OBJECT
00617
00618
public:
00619 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00620 KMLoadPartsCommand( partNode* node, KMMessage* msg );
00621
00622
public slots:
00623
00624
void start();
00625
void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00626
00627 signals:
00628
void partsRetrieved();
00629
00630
private:
00631
virtual void execute();
00632
00633 QPtrList<partNode> mParts;
00634
int mNeedsRetrieval;
00635 KMMessage *mMsg;
00636 };
00637
00638
#endif