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>
28#include <tqvaluevector.h>
29#include <tqsplitter.h>
32#include <tdeglobalsettings.h>
36#include "mailcomposerIface.h"
37#include "accountmanager.h"
39#include <libtdepim/addresseelineedit.h>
40#include <mimelib/mediatyp.h>
55class KMFolderComboBox;
63class TDEFontSizeAction;
71class TDESelectColorAction;
73class TDERecentFilesAction;
76class RecipientsEditor;
79class 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;
A combo box for selecting the dictionary used for spell checking.
Starts an editor for the given URL and emits an signal when editing has been finished.
DCOP interface for mail composer window.
virtual void setBody(TQString body)=0
Set message body.
virtual void addAttachment(KURL url, TQString comment)=0
Add url as attachment with a user-defined comment.
virtual void send(int how)=0
Send message.