9 # ifndef REALLY_WANT_KMCOMPOSEWIN_H
10 # error Do not include kmcomposewin.h anymore. Include composer.h instead.
15 #include "messagesender.h"
20 #include <tqlistview.h>
22 #include <tqcheckbox.h>
23 #include <tqpushbutton.h>
24 #include <tqclipboard.h>
25 #include <tqpalette.h>
27 #include <tqptrlist.h>
28 #include <tqvaluevector.h>
29 #include <tqsplitter.h>
31 #include <tdeio/job.h>
32 #include <tdeglobalsettings.h>
36 #include "mailcomposerIface.h"
37 #include "accountmanager.h"
39 #include <libtdepim/addresseelineedit.h>
40 #include <mimelib/mediatyp.h>
42 #include <kleo/enum.h>
55 class KMFolderComboBox;
61 class TDESelectAction;
63 class TDEFontSizeAction;
64 class TDESelectAction;
67 class TDEToggleAction;
70 class TDEToggleAction;
71 class TDESelectColorAction;
73 class TDERecentFilesAction;
75 class MessageComposer;
76 class RecipientsEditor;
78 class KMLineEditSpell;
79 class KMAtmListViewItem;
88 class AttachmentListView;
89 class DictionaryComboBox;
102 friend class ::KMEdit;
103 friend class ::MessageComposer;
106 KMComposeWin(
KMMessage* msg=0, uint identity=0 );
109 static Composer * create(
KMMessage * msg = 0, uint identity = 0 );
119 void addAttachmentsAndSend(
const KURL::List &urls,
const TQString &comment,
int how);
122 const TQCString &cte,
123 const TQByteArray &data,
124 const TQCString &type,
125 const TQCString &subType,
126 const TQCString ¶mAttr,
127 const TQString ¶mValue,
128 const TQCString &contDisp);
136 virtual bool event(TQEvent *e);
141 void readColorConfig();
146 void writeConfig(
void);
152 void verifyWordWrapLengthIsAdequate(
const TQString&);
159 void setMsg(
KMMessage* newMsg,
bool mayAutoSign=
true,
160 bool allowDecryption=
false,
bool isModified=
false);
162 void disableWordWrap();
167 void disableRecipientNumberCheck();
172 void disableForgottenAttachmentsCheck();
183 void ignoreStickyFields();
188 bool isComposing()
const {
return mComposer != 0; }
201 void setAutoSaveFilename(
const TQString & filename );
207 bool isModified()
const;
212 void setModified(
bool modified );
219 inline void setAutoDelete(
bool f) { mAutoDeleteMsg = f; }
225 void setAutoDeleteWindow(
bool f );
232 void setFolder(
KMFolder* aFolder) { mFolder = aFolder; }
237 void setCharset(
const TQCString& aCharset,
bool forceDefault =
false);
245 void setReplyFocus(
bool hasMessage =
true );
251 void setFocusToSubject();
257 bool inlineSigningEncryptionSelected();
264 static TQString prettyMimeType(
const TQString& type );
265 TQString quotePrefixName()
const;
268 KMLineEditSpell *sujectLineWidget()
const {
return mEdtSubject;}
269 void setSubjectTextWasSpellChecked(
bool _spell ) {
270 mSubjectTextWasSpellChecked = _spell;
272 bool subjectTextWasSpellChecked()
const {
return mSubjectTextWasSpellChecked; }
274 void paste( TQClipboard::Mode mode );
278 void setSigningAndEncryptionDisabled(
bool v )
280 mSigningAndEncryptionExplicitlyDisabled = v;
289 void slotAttachFile();
290 void slotInsertRecentFile(
const KURL&);
291 void slotAttachedFile(
const KURL&);
295 void slotSendNowVia(
int item );
296 void slotSendLater();
297 void slotSendLaterVia(
int item );
299 void getTransportMenu();
304 void slotSaveDraft();
305 void slotSaveTemplate();
306 void slotNewComposer();
307 void slotNewMailReader();
312 void slotSearchAgain();
318 void slotPasteClipboard();
319 void slotPasteClipboardAsQuotation();
320 void slotPasteClipboardAsAttachment();
321 void slotAddQuotes();
322 void slotRemoveQuotes();
323 void slotAttachPNGImageData(
const TQByteArray &image);
338 void slotSetAlwaysSend(
bool bAlwaysSend );
343 void slotUpdateFont();
352 void slotInsertFile();
354 void slotSetCharset();
358 void slotSpellcheck();
359 void slotSpellcheckConfig();
360 void slotSubjectTextSpellChecked();
366 void slotSelectCryptoModule(
bool init =
false );
371 void slotStatusMessage(
const TQString &message);
372 void slotEditToolbars();
373 void slotUpdateToolbars();
378 void readConfig(
bool reload =
false );
382 void slotUpdWinTitle(
const TQString& );
388 void slotEncryptToggled(
bool);
393 void slotSignToggled(
bool);
399 void slotWordWrapToggled(
bool);
405 void slotAppendSignature();
410 void slotPrependSignature();
415 void slotInsertSignatureAtCursor();
420 void slotInsertMyPublicKey();
425 void slotInsertPublicKey();
430 void slotUpdateAttachActions();
435 void slotAttachPopupMenu(TQListViewItem *,
const TQPoint &,
int);
441 int currentAttachmentNum();
446 void slotAttachOpen();
447 void slotAttachView();
448 void slotAttachRemove();
449 void slotAttachSave();
450 void slotAttachProperties();
451 void slotAttachOpenWith();
452 void slotAttachEdit();
453 void slotAttachEditWith();
454 void slotAttachmentDragStarted();
460 void slotAddrBookTo();
461 void slotAddrBookFrom();
462 void slotAddrBookReplyTo();
464 void slotCleanSpace();
466 void slotToggleMarkup();
467 void toggleMarkup(
bool markup);
468 void htmlToolBarVisibilityChanged(
bool visible );
471 void slotSpellcheckDone(
int result);
472 void slotSpellcheckDoneClearStatus();
475 void autoSaveMessage();
478 void updateCursorPosition();
485 void slotIdentityChanged(uint);
490 void slotAttachFileData(TDEIO::Job *,
const TQByteArray &);
491 void slotAttachFileResult(TDEIO::Job *);
493 void slotListAction(
const TQString &);
494 void slotFontAction(
const TQString &);
495 void slotSizeAction(
int);
496 void slotAlignLeft();
497 void slotAlignCenter();
498 void slotAlignRight();
500 void slotTextItalic();
501 void slotTextUnder();
502 void slotFormatReset();
503 void slotTextColor();
504 void fontChanged(
const TQFont & );
505 void alignmentChanged(
int );
508 bool addAttach(
const KURL url);
514 void addAttach(
const KMMessagePart* msgPart);
517 const KPIM::Identity & identity()
const;
518 uint identityUid()
const;
519 Kleo::CryptoMessageFormat cryptoMessageFormat()
const;
520 bool encryptToSelf()
const;
523 void applyChangesDone(
bool );
524 void attachmentAdded(
const KURL&,
bool success );
534 void applyChanges(
bool dontSignNorEncrypt,
bool dontDisable=
false );
541 void rethinkFields(
bool fromslot=
false);
546 TQWidget *connectFocusMoving( TQWidget *prev, TQWidget *next );
552 void rethinkHeaderLine(
int aValue,
int aMask,
int& aRow,
554 TQLineEdit* aEdt, TQPushButton* aBtn = 0,
555 const TQString &toolTip = TQString(),
556 const TQString &whatsThis = TQString() );
558 void rethinkHeaderLine(
int value,
int mask,
int& row,
559 TQLabel* lbl, TQComboBox* cbx, TQCheckBox *chk );
565 bool checkRecipientNumber()
const;
568 bool checkTransport()
const;
574 void setupStatusBar();
581 TQString subject()
const;
584 TQString bcc()
const;
585 TQString from()
const;
586 TQString replyTo()
const;
593 void setFcc(
const TQString &idString );
598 virtual bool queryClose ();
602 virtual bool queryExit ();
607 void openAttach(
int index,
bool with );
612 void viewAttach(
int index );
617 void editAttach(
int index,
bool openWith );
622 void removeAttach(
const TQString &url);
623 void removeAttach(
int idx);
628 void msgPartToItem(
const KMMessagePart* msgPart, KMAtmListViewItem *lvi,
629 bool loadDefaults =
true );
635 void addrBookSelInto();
637 void addrBookSelIntoOld();
638 void addrBookSelIntoNew();
645 void setEncryption(
bool encrypt,
bool setByUser =
false );
651 void setSigning(
bool sign,
bool setByUser =
false );
656 bool userForgotAttachment();
662 bool encryptFlagOfAttachment(
int idx);
668 bool signFlagOfAttachment(
int idx);
678 static void decryptOrStripOffCleartextSignature( TQCString& );
683 bool saveDraftOrTemplate(
const TQString &folderName,
KMMessage *msg );
688 enum SaveIn { None, Drafts, Templates };
689 void doSend( KMail::MessageSender::SendMethod method=KMail::MessageSender::SendDefault,
690 KMComposeWin::SaveIn saveIn = KMComposeWin::None );
695 int autoSaveInterval()
const;
706 void updateAutoSave();
711 void cleanupAutoSave();
718 static bool validateAddresses( TQWidget * parent,
const TQString & addresses );
726 void setTransport(
const TQString & transport );
728 enum SignaturePlacement { Append, Prepend, AtCursor };
734 void insertSignature( SignaturePlacement placement = Append );
739 void compressAttach(
int idx);
740 void uncompressAttach(
int idx);
741 void editorFocusChanged(
bool gained);
742 void recipientEditorSizeHintChanged();
743 void setMaximumHeaderSize();
746 TQWidget *mMainWidget;
747 TQComboBox *mTransport;
749 KPIM::IdentityCombo *mIdentity;
750 KMFolderComboBox *mFcc;
751 KMLineEdit *mEdtFrom, *mEdtReplyTo, *mEdtTo, *mEdtCc, *mEdtBcc;
752 KMLineEditSpell *mEdtSubject;
753 TQLabel *mLblIdentity, *mLblTransport, *mLblFcc;
754 TQLabel *mLblFrom, *mLblReplyTo, *mLblTo, *mLblCc, *mLblBcc, *mLblSubject;
755 TQLabel *mDictionaryLabel;
756 TQCheckBox *mBtnIdentity, *mBtnDictionary, *mBtnTransport, *mBtnFcc;
757 TQPushButton *mBtnTo, *mBtnCc, *mBtnBcc, *mBtnReplyTo;
758 bool mSpellCheckInProgress;
761 TQListViewItem *mAtmSelectNew;
766 TQValueVector<KMMessage*> mComposedMessages;
767 KMail::AttachmentListView* mAtmListView;
771 int mAtmEncryptColWidth;
772 int mAtmSignColWidth;
773 int mAtmCompressColWidth;
774 TQPtrList<TQListViewItem> mAtmItemList;
775 TQPtrList<KMMessagePart> mAtmList;
776 TQPopupMenu *mAttachMenu;
777 int mOpenId, mOpenWithId, mViewId, mRemoveId, mSaveAsId, mPropertiesId, mEditId, mEditWithId;
779 bool mSigningAndEncryptionExplicitlyDisabled;
780 bool mLastSignActionState, mLastEncryptActionState;
781 bool mLastIdentityHasSigningKey, mLastIdentityHasEncryptionKey;
785 bool mDisableBreaking;
789 TQFont mBodyFont, mFixedFont;
790 TQPtrList<KTempFile> mAtmTempList;
793 TQString mOldSigText;
795 TDEAction *mAttachPK, *mAttachMPK,
796 *mAttachRemoveAction, *mAttachSaveAction, *mAttachPropertiesAction,
797 *mPasteQuotation, *mAddQuoteChars, *mRemQuoteChars;
798 TDERecentFilesAction *mRecentAction;
800 TDEAction *mAppendSignatureAction, *mPrependSignatureAction, *mInsertSignatureAction;
802 TDEToggleAction *mSignAction, *mEncryptAction, *mRequestMDNAction;
803 TDEToggleAction *mUrgentAction, *mAllFieldsAction, *mFromAction;
804 TDEToggleAction *mReplyToAction, *mToAction, *mCcAction, *mBccAction;
805 TDEToggleAction *mSubjectAction;
806 TDEToggleAction *mIdentityAction, *mTransportAction, *mFccAction;
807 TDEToggleAction *mWordWrapAction, *mFixedFontAction, *mAutoSpellCheckingAction;
808 TDEToggleAction *mDictionaryAction, *mSnippetAction;
810 TDESelectAction *listAction;
811 TDEFontAction *fontAction;
812 TDEFontSizeAction *fontSizeAction;
813 TDEToggleAction *alignLeftAction, *alignCenterAction, *alignRightAction;
814 TDEToggleAction *textBoldAction, *textItalicAction, *textUnderAction;
815 TDEToggleAction *plainTextAction, *markupAction;
816 TDEAction *actionFormatColor, *actionFormatReset;
817 TDEAction *mHtmlToolbar;
819 TDESelectAction *mEncodingAction;
820 TDESelectAction *mCryptoModuleAction;
823 TQCString mDefCharset;
824 TQStringList mCharsets;
829 TQStringList mFolderNames;
830 TQValueList<TQGuardedPtr<KMFolder> > mFolderList;
831 TQMap<TDEIO::Job*, KURL> mAttachJobs;
832 KURL::List mAttachFilesPending;
833 int mAttachFilesSend;
837 void startPublicKeyExport();
838 bool canSignEncryptAttachments()
const {
839 return cryptoMessageFormat() != Kleo::InlineOpenPGPFormat;
842 bool mSubjectTextWasSpellChecked;
844 TQString addQuotesToText(
const TQString &inputText );
845 TQString removeQuotesFromText(
const TQString &inputText );
847 int calcColumnWidth(
int which,
long allShowing,
int width);
850 void slotCompletionModeChanged( TDEGlobalSettings::Completion );
851 void slotConfigChanged();
853 void slotComposerDone(
bool );
855 void slotContinueDoSend(
bool );
856 void slotContinuePrint(
bool );
857 void slotContinueAutoSave();
859 void slotEncryptChiasmusToggled(
bool );
865 void slotPublicKeyExportResult(
const GpgME::Error & err,
const TQByteArray & keydata );
870 void slotAutoSpellCheckingToggled(
bool);
875 void slotUpdateSignatureActions();
880 void slotUpdateSignatureAndEncrypionStateIndicators();
882 TQColor mForeColor,mBackColor;
884 TQSplitter *mHeadersToEditorSplitter;
885 TQWidget* mHeadersArea;
886 TQSplitter *mSplitter;
887 TQSplitter *mSnippetSplitter;
895 TQMap<TDEIO::Job *, atmLoadData> mMapAtmLoadData;
898 KMail::MessageSender::SendMethod mSendMethod;
899 KMComposeWin::SaveIn mSaveIn;
901 TDEToggleAction *mEncryptChiasmusAction;
902 bool mEncryptWithChiasmus;
906 MessageComposer* mComposer;
909 bool mMessageWasModified;
912 TQString mFingerprint;
917 bool mClassicalRecipients;
919 RecipientsEditor *mRecipientsEditor;
922 TQTimer *mAutoSaveTimer;
923 TQString mAutoSaveFilename;
924 int mLastAutoSaveErrno;
926 TQPopupMenu *mActNowMenu;
927 TQPopupMenu *mActLaterMenu;
929 TQMap<KMail::EditorWatcher*, KMMessagePart*> mEditorMap;
930 TQMap<KMail::EditorWatcher*, KTempFile*> mEditorTempFiles;
932 TQLabel *mSignatureStateIndicator;
933 TQLabel *mEncryptionStateIndicator;
936 std::set<KTempDir*> mTempDirs;
945 bool mPreserveUserCursorPosition;
947 bool mPreventFccOverwrite;
948 bool mCheckForRecipients;
949 bool mCheckForForgottenAttachments;
950 bool mIgnoreStickyFields;