00001
00002
00003
#ifndef KMCommands_h
00004
#define KMCommands_h
00005
00006
#include <qguardedptr.h>
00007
#include <qptrlist.h>
00008
#include <qvaluelist.h>
00009
#include <kio/job.h>
00010
#include "kmmsgbase.h"
00011
#include <mimelib/string.h>
00012
00013
class QPopupMenu;
00014
class QTextCodec;
00015
class KMainWindow;
00016
class KProgressDialog;
00017
class KMComposeWin;
00018
class KMFilter;
00019
class KMFolder;
00020
class KMFolderImap;
00021
class KMFolderNode;
00022
class KMHeaders;
00023
class KMMainWidget;
00024
class KMMessage;
00025
class KMMsgBase;
00026
class KMReaderWin;
00027
class partNode;
00028
namespace KIO {
class Job; }
00029
00030
typedef QMap<int,KMFolder*> KMMenuToFolder;
00031
typedef QMap<partNode*, KMMessage*> PartNodeMessageMap;
00032
00033
class KMCommand :
public QObject
00034 {
00035 Q_OBJECT
00036
00037
public:
00038
enum Result { Undefined, OK, Canceled, Failed };
00039
00040
00041 KMCommand(
QWidget *parent = 0 );
00042
00043 KMCommand(
QWidget *parent,
const QPtrList<KMMsgBase> &msgList );
00044
00045 KMCommand(
QWidget *parent, KMMsgBase *msgBase );
00046
00047 KMCommand(
QWidget *parent, KMMessage *message );
00048
virtual ~KMCommand();
00049
00054
void keepFolderOpen(
KMFolder *folder );
00055
00059 Result result();
00060
00061
public slots:
00062
00063
void start();
00064
00065
00066
void slotProgress(
unsigned long done,
unsigned long total );
00067
00068 signals:
00069
void messagesTransfered( KMCommand::Result result );
00072
void completed( KMCommand *command );
00073
00074
protected:
00075
00076
const QPtrList<KMMessage> retrievedMsgs() const;
00077
00078 KMMessage *retrievedMessage() const;
00079
00080
QWidget *parentWidget() const;
00081
00082
bool deletesItself() {
return mDeletesItself; }
00088
void setDeletesItself(
bool deletesItself )
00089 { mDeletesItself = deletesItself; }
00090
00091
bool emitsCompletedItself() {
return mEmitsCompletedItself; }
00098
void setEmitsCompletedItself(
bool emitsCompletedItself )
00099 { mEmitsCompletedItself = emitsCompletedItself; }
00100
00104
void setResult( Result result )
00105 { mResult = result; }
00106
00107
private:
00108
00109
virtual Result execute() = 0;
00110
00113
void transferSelectedMsgs();
00114
00115
private slots:
00117
virtual void slotStart();
00118
00119
void slotPostTransfer( KMCommand::Result result );
00121
void slotMsgTransfered(KMMessage* msg);
00123
void slotJobFinished();
00125
void slotTransferCancelled();
00126
00127
private:
00128
00129 KProgressDialog* mProgressDialog;
00130
00131
static int mCountJobs;
00132
int mCountMsgs;
00133 Result mResult;
00134
bool mDeletesItself : 1;
00135
bool mEmitsCompletedItself : 1;
00136
00137
QWidget *mParent;
00138
QPtrList<KMMessage> mRetrievedMsgs;
00139
QPtrList<KMMsgBase> mMsgList;
00140
QValueList<QGuardedPtr<KMFolder> > mFolders;
00141 };
00142
00143
class KMMailtoComposeCommand :
public KMCommand
00144 {
00145 Q_OBJECT
00146
00147
public:
00148 KMMailtoComposeCommand(
const KURL &url, KMMessage *msg=0 );
00149
00150
private:
00151
virtual Result execute();
00152
00153 KURL mUrl;
00154 KMMessage *mMessage;
00155 };
00156
00157
class KMMailtoReplyCommand :
public KMCommand
00158 {
00159 Q_OBJECT
00160
00161
public:
00162 KMMailtoReplyCommand(
QWidget *parent,
const KURL &url,
00163 KMMessage *msg,
const QString &selection );
00164
00165
private:
00166
virtual Result execute();
00167
00168 KURL mUrl;
00169
QString mSelection;
00170 };
00171
00172
class KMMailtoForwardCommand :
public KMCommand
00173 {
00174 Q_OBJECT
00175
00176
public:
00177 KMMailtoForwardCommand(
QWidget *parent,
const KURL &url,
00178 KMMessage *msg );
00179
00180
private:
00181
virtual Result execute();
00182
00183 KURL mUrl;
00184 };
00185
00186
class KMMailtoAddAddrBookCommand :
public KMCommand
00187 {
00188 Q_OBJECT
00189
00190
public:
00191 KMMailtoAddAddrBookCommand(
const KURL &url,
QWidget *parent );
00192
00193
private:
00194
virtual Result execute();
00195
00196 KURL mUrl;
00197 };
00198
00199
class KMAddBookmarksCommand :
public KMCommand
00200 {
00201 Q_OBJECT
00202
00203
public:
00204 KMAddBookmarksCommand(
const KURL &url,
QWidget *parent );
00205
00206
private:
00207
virtual Result execute();
00208
00209 KURL mUrl;
00210 };
00211
00212
00213
class KMMailtoOpenAddrBookCommand :
public KMCommand
00214 {
00215 Q_OBJECT
00216
00217
public:
00218 KMMailtoOpenAddrBookCommand(
const KURL &url,
QWidget *parent );
00219
00220
private:
00221
virtual Result execute();
00222
00223 KURL mUrl;
00224 };
00225
00226
class KMUrlCopyCommand :
public KMCommand
00227 {
00228 Q_OBJECT
00229
00230
public:
00231 KMUrlCopyCommand(
const KURL &url, KMMainWidget *mainWidget = 0 );
00232
00233
private:
00234
virtual Result execute();
00235
00236 KURL mUrl;
00237 KMMainWidget *mMainWidget;
00238 };
00239
00240
class KMUrlOpenCommand :
public KMCommand
00241 {
00242 Q_OBJECT
00243
00244
public:
00245 KMUrlOpenCommand(
const KURL &url, KMReaderWin *readerWin );
00246
00247
private:
00248
virtual Result execute();
00249
00250 KURL mUrl;
00251 KMReaderWin *mReaderWin;
00252 };
00253
00254
class KMUrlSaveCommand :
public KMCommand
00255 {
00256 Q_OBJECT
00257
00258
public:
00259 KMUrlSaveCommand(
const KURL &url,
QWidget *parent );
00260
00261
private slots:
00262
void slotUrlSaveResult( KIO::Job *job );
00263
00264
private:
00265
virtual Result execute();
00266
00267 KURL mUrl;
00268 };
00269
00270
class KMEditMsgCommand :
public KMCommand
00271 {
00272 Q_OBJECT
00273
00274
public:
00275 KMEditMsgCommand(
QWidget *parent, KMMessage *msg );
00276
00277
private:
00278
virtual Result execute();
00279 };
00280
00281
class KMShowMsgSrcCommand
00282 {
00283
public:
00284 KMShowMsgSrcCommand( KMMessage *msg,
bool fixedFont );
00285
00286
void start();
00287
00288
private:
00289
bool mFixedFont;
00290 KMMessage *mMsg;
00291 };
00292
00293
class KMSaveMsgCommand :
public KMCommand
00294 {
00295 Q_OBJECT
00296
00297
public:
00298 KMSaveMsgCommand(
QWidget *parent,
const QPtrList<KMMsgBase> &msgList );
00299 KMSaveMsgCommand(
QWidget *parent, KMMessage * msg );
00300 KURL url();
00301
00302
private:
00303
virtual Result execute();
00304
00305
private slots:
00306
void slotSaveDataReq();
00307
void slotSaveResult(KIO::Job *job);
00309
void slotMessageRetrievedForSaving(KMMessage *msg);
00310
00311
private:
00312
static const int MAX_CHUNK_SIZE = 64*1024;
00313 KURL mUrl;
00314
QValueList<unsigned long> mMsgList;
00315
unsigned int mMsgListIndex;
00316
QByteArray mData;
00317
int mOffset;
00318 size_t mTotalSize;
00319 KIO::TransferJob *mJob;
00320 };
00321
00322
class KMOpenMsgCommand :
public KMCommand
00323 {
00324 Q_OBJECT
00325
00326
public:
00327 KMOpenMsgCommand(
QWidget *parent,
const KURL & url = KURL() );
00328
00329
private:
00330
virtual Result execute();
00331
00332
private slots:
00333
void slotDataArrived( KIO::Job *job,
const QByteArray & data );
00334
void slotResult( KIO::Job *job );
00335
00336
private:
00337
static const int MAX_CHUNK_SIZE = 64*1024;
00338 KURL mUrl;
00339 DwString mMsgString;
00340 KIO::TransferJob *mJob;
00341 };
00342
00343
class KMSaveAttachmentsCommand :
public KMCommand
00344 {
00345 Q_OBJECT
00346
public:
00351 KMSaveAttachmentsCommand(
QWidget *parent, KMMessage *msg );
00356 KMSaveAttachmentsCommand(
QWidget *parent,
const QPtrList<KMMsgBase>& msgs );
00365 KMSaveAttachmentsCommand(
QWidget *parent,
QPtrList<partNode> &attachments,
00366 KMMessage *msg,
bool encoded =
false );
00367
00368
private slots:
00369
void slotSaveAll();
00370
00371
private:
00372
virtual Result execute();
00373 Result saveItem( partNode *node,
const KURL& url );
00374
00375
private:
00376 PartNodeMessageMap mAttachmentMap;
00377
bool mImplicitAttachments;
00378
bool mEncoded;
00379 };
00380
00381
class KMReplyToCommand :
public KMCommand
00382 {
00383 Q_OBJECT
00384
00385
public:
00386 KMReplyToCommand(
QWidget *parent, KMMessage *msg,
00387
const QString &selection = QString::null );
00388
00389
private:
00390
virtual Result execute();
00391
00392
private:
00393
QString mSelection;
00394 };
00395
00396
class KMNoQuoteReplyToCommand :
public KMCommand
00397 {
00398 Q_OBJECT
00399
00400
public:
00401 KMNoQuoteReplyToCommand(
QWidget *parent, KMMessage *msg );
00402
00403
private:
00404
virtual Result execute();
00405 };
00406
00407
class KMReplyListCommand :
public KMCommand
00408 {
00409 Q_OBJECT
00410
00411
public:
00412 KMReplyListCommand(
QWidget *parent, KMMessage *msg,
00413
const QString &selection = QString::null );
00414
00415
private:
00416
virtual Result execute();
00417
00418
private:
00419
QString mSelection;
00420 };
00421
00422
class KMReplyToAllCommand :
public KMCommand
00423 {
00424 Q_OBJECT
00425
00426
public:
00427 KMReplyToAllCommand(
QWidget *parent, KMMessage *msg,
00428
const QString &selection = QString::null );
00429
00430
private:
00431
virtual Result execute();
00432
00433
private:
00434
QString mSelection;
00435 };
00436
00437
class KMReplyAuthorCommand :
public KMCommand
00438 {
00439 Q_OBJECT
00440
00441
public:
00442 KMReplyAuthorCommand(
QWidget *parent, KMMessage *msg,
00443
const QString &selection = QString::null );
00444
00445
private:
00446
virtual Result execute();
00447
00448
private:
00449
QString mSelection;
00450 };
00451
00452
class KMForwardCommand :
public KMCommand
00453 {
00454 Q_OBJECT
00455
00456
public:
00457 KMForwardCommand(
QWidget *parent,
const QPtrList<KMMsgBase> &msgList,
00458 uint identity = 0 );
00459 KMForwardCommand(
QWidget *parent, KMMessage * msg,
00460 uint identity = 0 );
00461
00462
private:
00463
virtual Result execute();
00464
00465
private:
00466 uint mIdentity;
00467 };
00468
00469
class KMForwardAttachedCommand :
public KMCommand
00470 {
00471 Q_OBJECT
00472
00473
public:
00474 KMForwardAttachedCommand(
QWidget *parent,
const QPtrList<KMMsgBase> &msgList,
00475 uint identity = 0, KMComposeWin *win = 0 );
00476 KMForwardAttachedCommand(
QWidget *parent, KMMessage * msg,
00477 uint identity = 0, KMComposeWin *win = 0 );
00478
00479
private:
00480
virtual Result execute();
00481
00482 uint mIdentity;
00483
QGuardedPtr<KMComposeWin> mWin;
00484 };
00485
00486
class KMRedirectCommand :
public KMCommand
00487 {
00488 Q_OBJECT
00489
00490
public:
00491 KMRedirectCommand(
QWidget *parent, KMMessage *msg );
00492
00493
private:
00494
virtual Result execute();
00495 };
00496
00497
class KMBounceCommand :
public KMCommand
00498 {
00499 Q_OBJECT
00500
00501
public:
00502 KMBounceCommand(
QWidget *parent, KMMessage *msg );
00503
00504
private:
00505
virtual Result execute();
00506 };
00507
00508
class KMPrintCommand :
public KMCommand
00509 {
00510 Q_OBJECT
00511
00512
public:
00513 KMPrintCommand(
QWidget *parent, KMMessage *msg,
bool htmlOverride=
false );
00514
00515
private:
00516
virtual Result execute();
00517
00518
bool mHtmlOverride;
00519 };
00520
00521
class KMSetStatusCommand :
public KMCommand
00522 {
00523 Q_OBJECT
00524
00525
public:
00526
00527 KMSetStatusCommand( KMMsgStatus status,
const QValueList<Q_UINT32> &,
00528
bool toggle=
false );
00529
00530
private:
00531
virtual Result execute();
00532
00533 KMMsgStatus mStatus;
00534
QValueList<Q_UINT32> mSerNums;
00535
QValueList<int> mIds;
00536
bool mToggle;
00537 };
00538
00539
class KMFilterCommand :
public KMCommand
00540 {
00541 Q_OBJECT
00542
00543
public:
00544 KMFilterCommand(
const QCString &field,
const QString &value );
00545
00546
private:
00547
virtual Result execute();
00548
00549
QCString mField;
00550
QString mValue;
00551 };
00552
00553
00554
class KMFilterActionCommand :
public KMCommand
00555 {
00556 Q_OBJECT
00557
00558
public:
00559 KMFilterActionCommand(
QWidget *parent,
00560
const QPtrList<KMMsgBase> &msgList,
00561 KMFilter *filter );
00562
00563
private:
00564
virtual Result execute();
00565
00566 KMFilter *mFilter;
00567 };
00568
00569
00570
class KMMetaFilterActionCommand :
public QObject
00571 {
00572 Q_OBJECT
00573
00574
public:
00575 KMMetaFilterActionCommand( KMFilter *filter,
KMHeaders *headers,
00576 KMMainWidget *main );
00577
00578
public slots:
00579
void start();
00580
00581
private:
00582 KMFilter *mFilter;
00583
KMHeaders *mHeaders;
00584 KMMainWidget *mMainWidget;
00585 };
00586
00587
00588
class KMMailingListFilterCommand :
public KMCommand
00589 {
00590 Q_OBJECT
00591
00592
public:
00593 KMMailingListFilterCommand(
QWidget *parent, KMMessage *msg );
00594
00595
private:
00596
virtual Result execute();
00597 };
00598
00599
00607 class KMMenuCommand :
public KMCommand
00608 {
00609 Q_OBJECT
00610
00611
public:
00612
static void folderToPopupMenu(
bool move,
QObject *receiver,
00613 KMMenuToFolder *aMenuToFolder,
QPopupMenu *menu );
00614
00615
static void makeFolderMenu(KMFolderNode* item,
bool move,
00616
QObject *receiver, KMMenuToFolder *aMenuToFolder,
QPopupMenu *menu );
00617 };
00618
00619
class KMCopyCommand :
public KMMenuCommand
00620 {
00621 Q_OBJECT
00622
00623
public:
00624 KMCopyCommand(
KMFolder* destFolder,
00625
const QPtrList<KMMsgBase> &msgList );
00626 KMCopyCommand(
KMFolder* destFolder, KMMessage *msg );
00627
00628
private:
00629
virtual Result execute();
00630
00631
KMFolder *mDestFolder;
00632
QPtrList<KMMsgBase> mMsgList;
00633 };
00634
00635
namespace KPIM {
00636
class ProgressItem;
00637 }
00638
class KMMoveCommand :
public KMMenuCommand
00639 {
00640 Q_OBJECT
00641
00642
public:
00643 KMMoveCommand(
KMFolder* destFolder,
const QPtrList<KMMsgBase> &msgList );
00644 KMMoveCommand(
KMFolder* destFolder, KMMessage * msg );
00645 KMMoveCommand(
KMFolder* destFolder, KMMsgBase * msgBase );
00646
KMFolder* destFolder()
const {
return mDestFolder; }
00647
00648
public slots:
00649
void slotImapFolderCompleted(KMFolderImap *folder,
bool success);
00650
void slotMsgAddedToDestFolder(
KMFolder *folder, Q_UINT32 serNum);
00651
void slotMoveCanceled();
00652
00653
private:
00654
virtual Result execute();
00655
void completeMove( Result result );
00656
00657
KMFolder *mDestFolder;
00658
QPtrList<KMMsgBase> mMsgList;
00659
00660
00661
QValueList<Q_UINT32> mLostBoys;
00662 KPIM::ProgressItem *mProgressItem;
00663 };
00664
00665
class KMDeleteMsgCommand :
public KMMoveCommand
00666 {
00667 Q_OBJECT
00668
00669
public:
00670 KMDeleteMsgCommand(
KMFolder* srcFolder,
const QPtrList<KMMsgBase> &msgList );
00671 KMDeleteMsgCommand(
KMFolder* srcFolder, KMMessage * msg );
00672
00673
private:
00674
static KMFolder * findTrashFolder(
KMFolder * srcFolder );
00675 };
00676
00677
class KMUrlClickedCommand :
public KMCommand
00678 {
00679 Q_OBJECT
00680
00681
public:
00682 KMUrlClickedCommand(
const KURL &url, uint identity,
00683 KMReaderWin *readerWin,
bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00684
00685
private:
00686
virtual Result execute();
00687
00688 KURL mUrl;
00689 uint mIdentity;
00690 KMReaderWin *mReaderWin;
00691
bool mHtmlPref;
00692 KMMainWidget *mMainWidget;
00693 };
00694
00695
class KMLoadPartsCommand :
public KMCommand
00696 {
00697 Q_OBJECT
00698
00699
public:
00700 KMLoadPartsCommand(
QPtrList<partNode>& parts, KMMessage* msg );
00701 KMLoadPartsCommand( partNode* node, KMMessage* msg );
00702 KMLoadPartsCommand( PartNodeMessageMap& partMap );
00703
00704
public slots:
00705
void slotPartRetrieved( KMMessage* msg,
QString partSpecifier );
00706
00707 signals:
00708
void partsRetrieved();
00709
00710
private:
00711
00712
virtual void slotStart();
00713
00714
virtual Result execute();
00715
00716
int mNeedsRetrieval;
00717 PartNodeMessageMap mPartMap;
00718 };
00719
00720
class KMResendMessageCommand :
public KMCommand
00721 {
00722 Q_OBJECT
00723
00724
public:
00725 KMResendMessageCommand(
QWidget *parent, KMMessage *msg=0 );
00726
00727
private:
00728
virtual Result execute();
00729 };
00730
00731
class KMMailingListCommand :
public KMCommand
00732 {
00733 Q_OBJECT
00734
public:
00735 KMMailingListCommand(
QWidget *parent,
KMFolder *parent );
00736
private:
00737
virtual Result execute();
00738
private slots:
00739
void commandCompleted( KMCommand *command );
00740
protected:
00741
virtual KURL::List urls() const =0;
00742 protected:
00743
KMFolder *mFolder;
00744 };
00745
00746 class KMMailingListPostCommand : public KMMailingListCommand
00747 {
00748 Q_OBJECT
00749
public:
00750 KMMailingListPostCommand(
QWidget *parent,
KMFolder *parent );
00751
protected:
00752
virtual KURL::List urls() const;
00753 };
00754
00755 class KMMailingListSubscribeCommand : public KMMailingListCommand
00756 {
00757 Q_OBJECT
00758
public:
00759 KMMailingListSubscribeCommand(
QWidget *parent,
KMFolder *parent );
00760
protected:
00761
virtual KURL::List urls() const;
00762 };
00763
00764 class KMMailingListUnsubscribeCommand : public KMMailingListCommand
00765 {
00766 Q_OBJECT
00767
public:
00768 KMMailingListUnsubscribeCommand(
QWidget *parent,
KMFolder *parent );
00769
protected:
00770
virtual KURL::List urls() const;
00771 };
00772
00773 class KMMailingListArchivesCommand : public KMMailingListCommand
00774 {
00775 Q_OBJECT
00776
public:
00777 KMMailingListArchivesCommand(
QWidget *parent,
KMFolder *parent );
00778
protected:
00779
virtual KURL::List urls() const;
00780 };
00781
00782 class KMMailingListHelpCommand : public KMMailingListCommand
00783 {
00784 Q_OBJECT
00785
public:
00786 KMMailingListHelpCommand(
QWidget *parent,
KMFolder *parent );
00787
protected:
00788
virtual KURL::List urls() const;
00789 };
00790
00791 class KMIMChatCommand : public KMCommand
00792 {
00793 Q_OBJECT
00794
00795
public:
00796 KMIMChatCommand(
const KURL &url, KMMessage *msg=0 );
00797
00798
private:
00805
virtual Result execute();
00806
00807 KURL mUrl;
00808 KMMessage *mMessage;
00809 };
00810
00811
00812
#endif