00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __KMMAINWIDGET
00022 #define __KMMAINWIDGET
00023
00024 #include <kurl.h>
00025 #include <kxmlguiclient.h>
00026 #include <tqguardedptr.h>
00027 #include <tqlistview.h>
00028 #include <tqvbox.h>
00029 #include <tqvaluevector.h>
00030
00031 #include "kmreaderwin.h"
00032 #include "kmkernel.h"
00033 #include "messageactions.h"
00034 #include <kaction.h>
00035
00036 class TQVBoxLayout;
00037 class TQSplitter;
00038 class TQSignalMapper;
00039
00040 class KActionMenu;
00041 class KActionCollection;
00042 class KConfig;
00043 class KRadioAction;
00044 class KToggleAction;
00045 class KMenuBar;
00046 class KStatusBarLabel;
00047
00048 class KMFolder;
00049 class KMFolderDir;
00050 class KMFolderTree;
00051 class KMFolderTreeItem;
00052 class KMCommand;
00053 class KMMetaFilterActionCommand;
00054 class FolderShortcutCommand;
00055 class KMMessage;
00056 class KMFolder;
00057 class KMAccount;
00058 class KMSystemTray;
00059 class KMHeaders;
00060
00061 template <typename T> class TQValueList;
00062 template <typename T, typename S> class TQMap;
00063 template <typename T> class TQGuardedPtr;
00064
00065 namespace KIO {
00066 class Job;
00067 }
00068
00069 namespace KMail {
00070 class Vacation;
00071 class SieveDebugDialog;
00072 class FolderJob;
00073 class HeaderListQuickSearch;
00074 class SearchWindow;
00075 class ImapAccountBase;
00076 class FavoriteFolderView;
00077 }
00078
00079 typedef TQMap<int,KMFolder*> KMMenuToFolder;
00080
00081
00082 class KDE_EXPORT KMMainWidget : public TQWidget
00083 {
00084 Q_OBJECT
00085 TQ_OBJECT
00086
00087 public:
00088 KMMainWidget(TQWidget *parent, const char *name,
00089 KXMLGUIClient *aGUIClient,
00090 KActionCollection *actionCollection,
00091 KConfig*config = KMKernel::config() );
00092 virtual ~KMMainWidget();
00093 void destruct();
00094
00096 virtual void readPreConfig(void);
00097
00099 virtual void readFolderConfig(void);
00100
00102 virtual void writeFolderConfig(void);
00103
00105 virtual void readConfig(void);
00106
00108 virtual void writeConfig(void);
00109
00111 KMReaderWin* messageView(void) const { return mMsgView; }
00112 KMFolderTree* folderTree(void) const { return mFolderTree; }
00113 KMail::FavoriteFolderView *favoriteFolderView() const { return mFavoriteFolderView; }
00114
00115 static void cleanup();
00116
00117 KAction *action( const char *name ) { return mActionCollection->action( name ); }
00118 KActionMenu *customReplyAction() const { return mCustomReplyActionMenu; }
00119 KActionMenu *customReplyAllAction() const { return mCustomReplyAllActionMenu; }
00120 KActionMenu *forwardMenu() const { return mForwardActionMenu; }
00121 KAction *forwardInlineAction() const { return mForwardInlineAction; }
00122 KAction *forwardAttachedAction() const { return mForwardAttachedAction; }
00123 KAction *forwardDigestAction() const { return mForwardDigestAction; }
00124 KAction *redirectAction() const { return mRedirectAction; }
00125 KActionMenu *customForwardAction() const { return mCustomForwardActionMenu; }
00126 KActionMenu *filterMenu() const { return mFilterMenu; }
00127 KAction *printAction() const { return mPrintAction; }
00128 KAction *trashAction() const { return mTrashAction; }
00129 KAction *deleteAction() const { return mDeleteAction; }
00130 KAction *trashThreadAction() const { return mTrashThreadAction; }
00131 KAction *deleteThreadAction() const { return mDeleteThreadAction; }
00132 KAction *saveAsAction() const { return mSaveAsAction; }
00133 KAction *editAction() const { return mMsgActions->editAction(); }
00134 KAction *useAction() const { return mUseAction; }
00135 KAction *sendAgainAction() const { return mSendAgainAction; }
00136 KAction *applyAllFiltersAction() const { return mApplyAllFiltersAction; }
00137 KAction *findInMessageAction() const { return mFindInMessageAction; }
00138 KAction *saveAttachmentsAction() const { return mSaveAttachmentsAction; }
00139 KAction *openAction() const { return mOpenAction; }
00140 KAction *viewSourceAction() const { return mViewSourceAction; }
00141 KMail::MessageActions *messageActions() const { return mMsgActions; }
00142
00143 KActionMenu *statusMenu() const{ return mMsgActions->messageStatusMenu(); }
00144 KActionMenu *threadStatusMenu() const { return mThreadStatusMenu; }
00145 KActionMenu *moveActionMenu() const{ return mMoveActionMenu; }
00146 KActionMenu *mopyActionMenu() const { return mCopyActionMenu; }
00147 KActionMenu *applyFilterActionsMenu() const { return mApplyFilterActionsMenu; }
00148
00149 KToggleAction *watchThreadAction() const { return mWatchThreadAction; }
00150 KToggleAction *ignoreThreadAction() const { return mIgnoreThreadAction; }
00151
00152 KMHeaders *headers() const { return mHeaders; }
00153 void toggleSystemTray();
00154
00155 void updateListFilterAction();
00156
00159 static const TQValueList<KMMainWidget*>* mainWidgetList() { return s_mainWidgetList; }
00160
00161 KMSystemTray *systray() const;
00162
00165 bool shortcutIsValid( const KShortcut& ) const;
00166
00167
00168 void modifyFolder( KMFolderTreeItem* folderItem );
00169
00174 void setAccelsEnabled( bool enabled = true );
00175
00179 void setupForwardingActionsList();
00180
00181 KStatusBarLabel* vacationScriptIndicator() const { return mVacationScriptIndicator; }
00182 void updateVactionScripStatus() { updateVactionScripStatus( mVacationIndicatorActive ); }
00183
00184 public slots:
00185 void slotMoveMsgToFolder( KMFolder *dest);
00186 void slotTrashMsg();
00187
00188 virtual void show();
00189 virtual void hide();
00191 void slotCheckMail();
00192
00197 void folderSelected( KMFolder*, bool forceJumpToUnread = false );
00198
00200 void folderSelected();
00201
00203 void folderSelectedUnread( KMFolder* );
00204
00205 void slotMsgSelected( KMMessage * );
00209 void slotMsgActivated( KMMessage * );
00210
00211 void slotMsgChanged();
00212
00214 void slotSelectFolder(KMFolder*);
00215 void slotSelectMessage(KMMessage*);
00216
00217 void slotReplaceMsgByUnencryptedVersion();
00218
00220 void updateMessageMenu();
00222 void startUpdateMessageActionsTimer();
00224 void updateMessageActions();
00225
00227 void slotSubscriptionDialog();
00228
00230 void slotLocalSubscriptionDialog();
00231
00233 void slotFolderTreeColumnsChanged();
00234
00236 void clearFilterActions();
00237 void initializeFilterActions();
00238
00240 void initializeIMAPActions() { initializeIMAPActions( true ); }
00241
00243 void initializeFolderShortcutActions();
00244
00246 void slotShortcutChanged( KMFolder *folder );
00247
00248 void updateCustomTemplateMenus();
00249 void slotEditVacation();
00250
00251 signals:
00252 void messagesTransfered( bool );
00253 void captionChangeRequest( const TQString & caption );
00254
00255 protected:
00256 void setupActions();
00257 void createWidgets();
00258 void activatePanners();
00259 void showMsg( KMReaderWin *win, KMMessage *msg );
00260 void updateFileMenu();
00261 void newFromTemplate( KMMessage *msg );
00262
00263 KActionCollection * actionCollection() const { return mActionCollection; }
00264
00268 KConfig * config();
00269
00270 protected slots:
00271 void slotCheckOneAccount(int);
00272 void slotMailChecked( bool newMail, bool sendOnCheck,
00273 const TQMap<TQString, int> & newInFolder );
00274 void getAccountMenu();
00275 void getTransportMenu();
00276 void slotHelp();
00277 void slotFilter();
00278 void slotPopFilter();
00279 void slotManageSieveScripts();
00280 void slotAddrBook();
00281 void slotImport();
00282 void slotViewChange();
00283 void slotCompose();
00284 void slotPostToML();
00285 void slotModifyFolder();
00286 void slotFolderMailingListProperties();
00287 void slotFolderShortcutCommand();
00288 void slotExpireFolder();
00289 void slotExpireAll();
00290 void slotInvalidateIMAPFolders();
00291 void slotMarkAllAsRead();
00292 void slotArchiveFolder();
00293 void slotRemoveFolder();
00294 void slotEmptyFolder();
00295 void slotCompactFolder();
00296 void slotRefreshFolder();
00297 void slotTroubleshootFolder();
00298 void slotCompactAll();
00299 void slotOverrideHtml();
00300 void slotOverrideHtmlLoadExt();
00301 void slotOverrideThread();
00302 void slotToggleSubjectThreading();
00303 void slotMessageQueuedOrDrafted();
00304 void slotUseTemplate();
00305
00306 void slotDeleteMsg( bool confirmDelete = true );
00307 void slotTrashThread();
00308 void slotDeleteThread( bool confirmDelete = true );
00309 void slotUndo();
00310 void slotReadOn();
00311 void slotSaveMsg();
00312 void slotOpenMsg();
00313 void slotSaveAttachments();
00314 void slotJumpToFolder();
00315 void slotMoveMsg();
00316
00317 void slotCopyMsgToFolder( KMFolder *dest);
00318 void slotCopyMsg();
00319 void slotResendMsg();
00320 void slotCheckVacation();
00321 void slotDebugSieve();
00322 void slotStartCertManager();
00323 void slotStartWatchGnuPG();
00324 void slotApplyFilters();
00325 void slotExpandThread();
00326 void slotExpandAllThreads();
00327 void slotCollapseThread();
00328 void slotCollapseAllThreads();
00329 void slotShowMsgSrc();
00330 void slotSetThreadStatusNew();
00331 void slotSetThreadStatusUnread();
00332 void slotSetThreadStatusRead();
00333 void slotSetThreadStatusTodo();
00334 void slotSetThreadStatusFlag();
00335 void slotSetThreadStatusWatched();
00336 void slotSetThreadStatusIgnored();
00337 void slotToggleUnread();
00338 void slotToggleTotalColumn();
00339 void slotToggleSizeColumn();
00340 void slotSendQueued();
00341 void slotSendQueuedVia( int item );
00342 void slotOnlineStatus();
00343 void slotUpdateOnlineStatus( GlobalSettings::EnumNetworkState::type );
00344 void slotMsgPopup(KMMessage &msg, const KURL &aUrl, const TQPoint&);
00345 void slotMarkAll();
00346 void slotMemInfo();
00347 void slotSearch();
00348 void slotSearchClosed();
00349 void slotFind();
00350 void slotIntro();
00351 void slotShowStartupFolder();
00353 void slotShowTip();
00354 void slotAntiSpamWizard();
00355 void slotAntiVirusWizard();
00356 void slotFilterLogViewer();
00357
00359 void slotNextMessage();
00360 void slotNextUnreadMessage();
00361 void slotNextImportantMessage();
00362 void slotNextUnreadFolder();
00363 void slotPrevMessage();
00364 void slotPrevUnreadMessage();
00365 void slotPrevImportantMessage();
00366 void slotPrevUnreadFolder();
00367
00369 void slotDisplayCurrentMessage();
00370
00371 void slotShowNewFromTemplate();
00372 void slotNewFromTemplate( int );
00373
00375 void slotUpdateUndo();
00376
00378 virtual void moveSelectedToFolder( int menuId );
00380 virtual void copySelectedToFolder( int menuId );
00382 void updateFolderMenu();
00385 void updateMarkAsReadAction();
00386
00388 void slotToggleShowQuickSearch();
00389
00391 void slotEditNotifications();
00392 void slotEditKeys();
00393
00395 void slotChangeCaption(TQListViewItem*);
00396 void removeDuplicates();
00397
00398 void slotCustomReplyToMsg( int tid );
00399 void slotCustomReplyAllToMsg( int tid );
00400 void slotForwardInlineMsg();
00401 void slotForwardAttachedMsg();
00402 void slotForwardDigestMsg();
00403 void slotRedirectMsg();
00404 void slotCustomForwardMsg( int tid );
00405 void slotNoQuoteReplyToMsg();
00406 void slotSubjectFilter();
00407 void slotMailingListFilter();
00408 void slotFromFilter();
00409 void slotToFilter();
00410 void slotPrintMsg();
00411 void slotCreateTodo();
00412
00413 void slotConfigChanged();
00415 void slotFolderRemoved( KMFolder *folder );
00416
00418 void slotShowBusySplash();
00421 void showOfflinePage();
00422
00423 private:
00425 TQString overrideEncoding() const;
00426
00427 void initializeIMAPActions( bool setState );
00428
00432 KMail::ImapAccountBase* findCurrentImapAccountBase();
00433
00437 TQString findCurrentImapPath();
00438
00444 void setupForwardActions();
00445
00446 void setupFolderView();
00447
00448 private slots:
00449 void slotRequestFullSearchFromQuickSearch();
00450 void updateVactionScripStatus( bool active );
00451
00452 private:
00453
00454 KAction *mTrashAction, *mDeleteAction, *mTrashThreadAction,
00455 *mDeleteThreadAction, *mSaveAsAction, *mUseAction,
00456 *mSendAgainAction, *mApplyAllFiltersAction, *mFindInMessageAction,
00457 *mSaveAttachmentsAction, *mOpenAction, *mViewSourceAction,
00458 *mFavoritesCheckMailAction,
00459 *mMoveMsgToFolderAction;
00460
00461 KAction *mPrintAction,
00462 *mForwardInlineAction, *mForwardAttachedAction, *mForwardDigestAction,
00463 *mRedirectAction;
00464 KActionMenu *mForwardActionMenu;
00465
00466 KActionMenu *mFilterMenu;
00467 KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00468 *mListFilterAction;
00469 KActionMenu *mTemplateMenu;
00470
00471
00472 KActionMenu *mCustomReplyActionMenu,
00473 *mCustomReplyAllActionMenu,
00474 *mCustomForwardActionMenu;
00475
00476 TQSignalMapper *mCustomReplyMapper,
00477 *mCustomReplyAllMapper,
00478 *mCustomForwardMapper;
00479
00480 KActionMenu *mThreadStatusMenu,
00481 *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00482 KAction *mMarkThreadAsNewAction;
00483 KAction *mMarkThreadAsReadAction;
00484 KAction *mMarkThreadAsUnreadAction;
00485 KToggleAction *mToggleThreadTodoAction;
00486 KToggleAction *mToggleThreadFlagAction;
00487
00488 KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00489
00491 KRadioAction* mUnreadColumnToggle;
00492 KRadioAction* mUnreadTextToggle;
00493 KToggleAction* mTotalColumnToggle;
00494 KToggleAction* mSizeColumnToggle;
00495
00496 KToggleAction *mToggleShowQuickSearchAction;
00497
00498 KMFolderTree *mFolderTree;
00499 KMail::FavoriteFolderView *mFavoriteFolderView;
00500 TQWidget *mFolderView;
00501 TQSplitter *mFolderViewParent;
00502 KMReaderWin *mMsgView;
00503 TQSplitter *mPanner1, *mPanner2;
00504 TQSplitter *mFolderViewSplitter;
00505 KMHeaders *mHeaders;
00506 TQVBox *mSearchAndHeaders;
00507 KToolBar *mSearchToolBar;
00508 KMail::HeaderListQuickSearch *mQuickSearchLine;
00509 TQGuardedPtr<KMFolder> mFolder;
00510 KMFolder *mTemplateFolder;
00511 TQPopupMenu *mViewMenu, *mBodyPartsMenu;
00512 KAction *mlistFilterAction;
00513 bool mIntegrated;
00514 bool mBeepOnNew;
00515 bool mConfirmEmpty;
00516 TQString mStartupFolder;
00517 int mMessageStatusId;
00518 TQValueList<int> mPanner1Sep, mPanner2Sep;
00519 KURL mUrlCurrent;
00520 TQPopupMenu *mActMenu;
00521 TQPopupMenu *mSendMenu;
00522 TQPopupMenu *mFileMenu;
00523
00524 bool mLongFolderList;
00525
00526 bool mStartupDone;
00527 KMMenuToFolder mMenuToFolder;
00528 int copyId, moveId, htmlId, threadId;
00529 bool mHtmlPref, mHtmlLoadExtPref, mThreadPref,
00530 mFolderHtmlPref, mFolderHtmlLoadExtPref, mFolderThreadPref,
00531 mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00532 bool mEnableFavoriteFolderView;
00533
00534
00535 KMail::SearchWindow *mSearchWin;
00536
00537 KAction *mNewFolderAction, *mModifyFolderAction, *mRemoveFolderAction, *mExpireFolderAction,
00538 *mCompactFolderAction, *mRefreshFolderAction, *mEmptyFolderAction,
00539 *mMarkAllAsReadAction, *mFolderMailingListPropertiesAction,
00540 *mFolderShortCutCommandAction, *mTroubleshootFolderAction,
00541 *mRemoveDuplicatesAction, *mArchiveFolderAction;
00542 KToggleAction *mPreferHtmlAction, *mPreferHtmlLoadExtAction, *mThreadMessagesAction;
00543 KToggleAction *mThreadBySubjectAction;
00544 KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00545
00546 TQTimer *menutimer;
00547 TQTimer *mShowBusySplashTimer;
00548
00549 TQGuardedPtr<KMail::Vacation> mVacation;
00550 #if !defined(NDEBUG)
00551 TQGuardedPtr<KMail::SieveDebugDialog> mSieveDebugDialog;
00552 #endif
00553 KActionCollection *mActionCollection;
00554 KActionSeparator *mToolbarActionSeparator;
00555 TQVBoxLayout *mTopLayout;
00556 bool mDestructed, mForceJumpToUnread, mShowingOfflineScreen;
00557 TQPtrList<KAction> mFilterMenuActions;
00558 TQPtrList<KAction> mFilterTBarActions;
00559 TQPtrList<KMMetaFilterActionCommand> mFilterCommands;
00560 TQDict<FolderShortcutCommand> mFolderShortcutCommands;
00561 TQGuardedPtr <KMail::FolderJob> mJob;
00562
00563 TQValueVector<TQString> mCustomTemplates;
00564 TQPtrList<KAction> mCustomTemplateActions;
00565
00566 KMSystemTray *mSystemTray;
00567 KConfig *mConfig;
00568 KXMLGUIClient *mGUIClient;
00569
00570 KMail::MessageActions *mMsgActions;
00571
00572 static TQValueList<KMMainWidget*>* s_mainWidgetList;
00573
00574 KStatusBarLabel *mVacationScriptIndicator;
00575 bool mVacationIndicatorActive;
00576 };
00577
00578 #endif
00579