You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

416 lines
12 KiB

/* kmail main window
* Maintained by Stefan Taferner <taferner@kde.org>
* This code is under the GPL
*/
#ifndef __KMMAINWIN
#define __KMMAINWIN
#include "kmtopwidget.h"
#include "cryptplugwrapperlist.h"
#include <kurl.h>
#include <kdockwidget.h>
class ConfigureDialog;
class KMFolder;
class KMFolderDir;
class KMFolderTree;
class KMFolderTreeItem;
class KMMimePartTree;
class KMHeaders;
class KMReaderWin;
class QSplitter;
class QTextCodec;
class KMenuBar;
class KToolBar;
class KStatusBar;
class KMMessage;
class KMFolder;
class KMAccount;
class KMLittleProgressDlg;
class KMFldSearch;
class KToggleAction;
class KActionMenu;
class KSelectAction;
class KRadioAction;
class KProgressDialog;
template <typename T> class QValueList;
template <typename T, typename S> class QMap;
namespace KIO
{
class Job;
}
#define KMMainWinInherited KMTopLevelWidget
typedef QMap<int,KMFolder*> KMMenuToFolder;
class KMMainWin : public KMTopLevelWidget
{
Q_OBJECT
public:
KMMainWin(QWidget *parent = 0, char *name = 0);
virtual ~KMMainWin();
/** Read configuration options before widgets are created. */
virtual void readPreConfig(void);
/** Read configuration for current folder. */
virtual void readFolderConfig(void);
/** Write configuration for current folder. */
virtual void writeFolderConfig(void);
/** Read configuration options after widgets are created. */
virtual void readConfig(void);
/** Write configuration options. */
virtual void writeConfig(void);
/** Easy access to main components of the window. */
KMReaderWin* messageView(void) const { return mMsgView; }
KMFolderTree* folderTree(void) const { return mFolderTree; }
/** Returns a popupmenu containing a hierarchy of folder names
starting at the given (@p aFolderDir) folder directory
Each item in the popupmenu is connected to a slot, if
move is TRUE this slot will cause all selected messages to
be moved into the given folder, otherwise messages will be
copied.
Am empty @ref KMMenuToFolder must be passed in. */
virtual QPopupMenu* folderToPopupMenu(bool move,
QObject *receiver,
KMMenuToFolder *aMenuToFolder,
QPopupMenu *menu);
QPopupMenu* makeFolderMenu(KMFolderTreeItem* item,
bool move,
QObject *receiver,
KMMenuToFolder *aMenuToFolder,
QPopupMenu *menu);
static void cleanup();
KAction *replyAction, *noQuoteReplyAction, *replyAllAction, *replyListAction,
*forwardAction, *forwardAttachedAction, *redirectAction,
*deleteAction, *saveAsAction, *bounceAction, *editAction,
*viewSourceAction, *printAction, *sendAgainAction;
KToggleAction *toggleFixFontAction;
KActionMenu *filterMenu, *statusMenu, *threadStatusMenu,
*moveActionMenu, *copyActionMenu;
CryptPlugWrapperList mCryptPlugList;
/** we need to access those KToggleActions from the foldertree-popup */
KToggleAction* unreadColumnToggle;
KToggleAction* totalColumnToggle;
void folderSelected(KMFolder*, bool jumpToUnread);
/** Jump to any message in any folder. The message serial number of the
argument message is used to locate the original message, which
is then returned. */
KMMessage *jumpToMessage(KMMessage *aMsg);
/** transfers the currently selected (imap)-messages
* this is a necessary preparation for e.g. forwarding */
void transferSelectedMsgs();
public slots:
virtual void show();
virtual void hide();
/** sven: moved here as public */
void slotCheckMail();
/** sven: called from reader */
void slotAtmMsg(KMMessage *msg);
/** Output given message in the statusbar message field. */
void statusMsg(const QString&);
void htmlStatusMsg(const QString&);
void folderSelected(KMFolder*);
void folderSelectedUnread( KMFolder* );
void slotMsgSelected(KMMessage*);
/** Change the current folder, select a message in the current folder */
void slotSelectFolder(KMFolder*);
void slotSelectMessage(KMMessage*);
void slotReplaceMsgByUnencryptedVersion();
/** Update message menu */
void updateMessageMenu();
/** Start a timer to update message actions */
void startUpdateMessageActionsTimer();
/** Update message actions */
void updateMessageActions();
protected:
void setupMenuBar();
void setupStatusBar();
void createWidgets();
void activatePanners();
void showMsg(KMReaderWin *win, KMMessage *msg);
virtual bool queryClose();
protected slots:
void displayStatusMsg(const QString&);
void slotCheckOneAccount(int);
void slotMailChecked(bool newMail, bool sendOnCheck);
void getAccountMenu();
void slotQuit();
void slotHelp();
void slotNewMailReader();
void slotSettings();
void slotFilter();
void slotPopFilter();
void slotAddrBook();
void slotImport();
void slotViewChange();
void slotAddFolder();
void slotCompose();
void slotPostToML();
void slotModifyFolder();
void slotExpireFolder();
void slotExpireAll();
void slotMarkAllAsRead();
void slotRemoveFolder();
void slotEmptyFolder();
void slotCompactFolder();
void slotCompactAll();
void slotOverrideHtml();
void slotOverrideThread();
/** replying */
void slotReplyToMsg();
void slotNoQuoteReplyToMsg();
void slotReplyAllToMsg();
void slotReplyListToMsg();
/** Called from the "forward" tool button when clicked. */
void slotForward();
/** forwarding */
void slotForwardMsg();
void slotForwardAttachedMsg();
/** redirect and bounce */
void slotRedirectMsg();
void slotBounceMsg();
/** these are called when incomplete (imap-)messages have been transferred
* they call the corresponding action and disconnect the signal */
void slotReallyReplyToMsg(bool);
void slotReallyNoQuoteReplyToMsg(bool);
void slotReallyReplyAllToMsg(bool);
void slotReallyReplyListToMsg(bool);
void slotReallyForwardMsg(bool);
void slotReallyForwardAttachedMsg(bool);
void slotReallyRedirectMsg(bool);
void slotReallyBounceMsg(bool);
void slotMessageQueuedOrDrafted();
void slotEditMsg();
void slotEditMsg(KMMessage*);
void slotDeleteMsg();
void slotUndo();
void slotReadOn();
void slotSaveMsg();
void slotPrintMsg();
void slotMoveMsg();
void slotMoveMsgToFolder( KMFolder *dest);
void slotCopyMsgToFolder( KMFolder *dest);
void slotCopyMsg();
void slotResendMsg();
void slotApplyFilters();
void slotSubjectFilter();
void slotMailingListFilter();
void slotFromFilter();
void slotToFilter();
void slotExpandThread();
void slotExpandAllThreads();
void slotCollapseThread();
void slotCollapseAllThreads();
void slotSetMsgStatusNew();
void slotSetMsgStatusUnread();
void slotSetMsgStatusRead();
void slotSetMsgStatusReplied();
void slotSetMsgStatusQueued();
void slotSetMsgStatusSent();
void slotSetMsgStatusFlag();
void slotSetThreadStatusNew();
void slotSetThreadStatusUnread();
void slotSetThreadStatusRead();
void slotSetThreadStatusReplied();
void slotSetThreadStatusQueued();
void slotSetThreadStatusSent();
void slotSetThreadStatusFlag();
void slotShowMsgSrc();
void slotToggleFixedFont();
void slotToggleUnreadColumn();
void slotToggleTotalColumn();
void slotBriefHeaders();
void slotFancyHeaders();
void slotStandardHeaders();
void slotLongHeaders();
void slotAllHeaders();
void slotIconicAttachments();
void slotSmartAttachments();
void slotInlineAttachments();
void slotHideAttachments();
void slotCycleHeaderStyles();
void slotCycleAttachmentStyles();
void slotSetEncoding();
void slotSendQueued();
void slotMsgPopup(KMMessage &msg, const KURL &aUrl, const QPoint&);
void slotUrlClicked(const KURL &url, int button);
void slotCopyText();
void slotMarkAll();
void slotSelectText();
void slotMemInfo();
void slotSearch();
void slotSearchClosed();
void slotFind();
void slotUpdateImapMessage(KMMessage *msg);
void slotIntro();
/** Show tip-of-the-day on startup */
void slotShowTipOnStart();
/** Show tip-of-the-day, forced */
void slotShowTip();
// FIXME: ACTIVATE this when KDockWidgets are working nicely (khz, 19.04.2002)
/*
void slotToggleFolderBar();
void slotToggleHeaderBar();
void slotToggleMimeBar();
*/
// (khz, 19.04.2002)
/** Message navigation */
void slotNextMessage();
void slotNextUnreadMessage();
void slotNextImportantMessage();
void slotNextUnreadFolder();
void slotPrevMessage();
void slotPrevUnreadMessage();
void slotPrevImportantMessage();
void slotPrevUnreadFolder();
/** etc. */
void slotMsgActivated(KMMessage*);
/** Operations on mailto: URLs. */
void slotMailtoCompose();
void slotMailtoReply();
void slotMailtoForward();
void slotMailtoAddAddrBook();
void slotMailtoOpenAddrBook();
/** Open URL in mUrlCurrent using Kfm. */
void slotUrlOpen();
/** Save the page to a file */
void slotUrlSave();
void slotUrlSaveResult(KIO::Job*);
/** Copy URL in mUrlCurrent to clipboard. Removes "mailto:" at
beginning of URL before copying. */
void slotUrlCopy();
/** Move selected messages to folder with corresponding to given menuid */
virtual void moveSelectedToFolder( int menuId );
/** Copy selected messages to folder with corresponding to given menuid */
virtual void copySelectedToFolder( int menuId );
/** Update html and threaded messages preferences in Folder menu. */
virtual void updateFolderMenu();
// FIXME: ACTIVATE this when KDockWidgets are working nicely (khz, 19.04.2002)
/*
void updateSettingsMenu();
*/
// (khz, 19.04.2002)
/** XML-GUI stuff */
void slotToggleToolBar();
void slotToggleStatusBar();
void slotEditToolbars();
void slotUpdateToolbars();
void slotEditKeys();
/** the msg has been transferred */
void slotMsgTransfered(KMMessage*);
/** the transfer was cancelled */
void slotTransferCancelled();
/** the KMImapJob is finished */
void slotJobFinished();
protected:
KRadioAction * actionForHeaderStyle(int);
KRadioAction * actionForAttachmentStyle(int);
protected:
QString mLastStatusMsg;
KMFolderTree *mFolderTree;
KMMimePartTree* mMimePartTree;
KMReaderWin *mMsgView;
QSplitter *mPanner1, *mPanner2, *mPanner3;
KMHeaders *mHeaders;
KMFolder *mFolder;
QTextCodec *mCodec;
QPopupMenu *mViewMenu, *mBodyPartsMenu;
KSelectAction *mEncoding;
KAction *mlistFilterAction;
QCString mEncodingStr;
bool mIntegrated;
bool mSendOnCheck;
bool mBeepOnNew, mBoxOnNew, mExecOnNew;
bool mConfirmEmpty;
QString mNewMailCmd;
int mMessageStatusId;
QValueList<int> mPanner1Sep, mPanner2Sep, mPanner3Sep;
KMMessage *mMsgCurrent;
KURL mUrlCurrent;
QPopupMenu *actMenu;
QPopupMenu *fileMenu;
int mWindowLayout;
int mShowMIMETreeMode;
bool mStartupDone;
KMMenuToFolder mMenuToFolder;
int copyId, moveId, htmlId, threadId;
bool mHtmlPref, mThreadPref, mFolderHtmlPref, mFolderThreadPref;
QPopupMenu *messageMenu;
KMLittleProgressDlg *littleProgress;
KMFldSearch *searchWin;
ConfigureDialog *mConfigureDialog;
bool mbNewMBVisible;
KAction *modifyFolderAction, *removeFolderAction, *expireFolderAction,
*compactFolderAction, *emptyFolderAction, *markAllAsReadAction;
KToggleAction *preferHtmlAction, *threadMessagesAction;
KToggleAction *toolbarAction, *statusbarAction, *folderAction, *headerAction, *mimeAction;
QTimer *menutimer;
KDockWidget* mMsgDock;
KDockWidget* mHeaderDock;
KDockWidget* mFolderDock;
KDockWidget* mMimeDock;
// ProgressDialog for transfering messages
KProgressDialog* mProgressDialog;
int mCountJobs, mCountMsgs;
QPtrList<KMMessage> mSelectedMsgs;
signals:
void messagesTransfered(bool);
};
#endif