kmail Library API Documentation

kmreaderwin.h

00001 // -*- mode: C++; c-file-style: "gnu" -*-
00002 // Header for kmreaderwin the kmail reader
00003 // written by Markus Wuebben <markus.wuebben@kde.org>
00004 
00005 #ifndef KMREADERWIN_H
00006 #define KMREADERWIN_H
00007 
00008 #include <qwidget.h>
00009 #include <qtimer.h>
00010 #include <qstringlist.h>
00011 #include <kurl.h>
00012 #include <kservice.h>
00013 #include "kmmsgbase.h"
00014 #include "kmmimeparttree.h" // Needed for friend declaration.
00015 #include "iobserver.h"
00016 
00017 class QFrame;
00018 class QSplitter;
00019 class QHBox;
00020 class QListViewItem;
00021 class QScrollBar;
00022 class QString;
00023 class QTabDialog;
00024 class QTextCodec;
00025 class DwHeaders;
00026 class DwMediaType;
00027 class KActionCollection;
00028 class KAction;
00029 class KActionMenu;
00030 class KToggleAction;
00031 class KConfigBase;
00032 class KHTMLPart;
00033 class KURL;
00034 class KMFolder;
00035 class KMMessage;
00036 class KMMessagePart;
00037 namespace KMail {
00038   class PartMetaData;
00039   class ObjectTreeParser;
00040   class AttachmentStrategy;
00041   class HeaderStrategy;
00042   class HeaderStyle;
00043   class HtmlWriter;
00044   class KHtmlPartHtmlWriter;
00045   class ISubject;
00046   class HtmlStatusBar;
00047   class FolderJob;
00048   class CSSHelper;
00049 }
00050 
00051 class partNode; // might be removed when KMime is used instead of mimelib
00052                 //                                      (khz, 29.11.2001)
00053 
00054 class NewByteArray; // providing operator+ on a QByteArray (khz, 21.06.2002)
00055 
00056 namespace KParts {
00057   struct URLArgs;
00058 }
00059 
00060 class KMReaderWin: public QWidget, public KMail::IObserver
00061 {
00062   Q_OBJECT
00063 
00064   friend void KMMimePartTree::itemClicked( QListViewItem* item );
00065   friend void KMMimePartTree::itemRightClicked( QListViewItem* item, const QPoint & );
00066   friend void KMMimePartTree::slotSaveAs();
00067 
00068   friend class KMail::ObjectTreeParser;
00069   friend class KMail::KHtmlPartHtmlWriter;
00070 
00071 public:
00072   KMReaderWin( QWidget *parent,
00073            QWidget *mainWindow,
00074            KActionCollection *actionCollection,
00075                const char *name=0,
00076            int f=0 );
00077   virtual ~KMReaderWin();
00078 
00080   virtual bool update( KMail::ISubject * );
00081 
00083   void readConfig();
00084 
00086   void writeConfig( bool withSync=true ) const;
00087 
00088   const KMail::HeaderStyle * headerStyle() const {
00089     return mHeaderStyle;
00090   }
00093   void setHeaderStyleAndStrategy( const KMail::HeaderStyle * style,
00094                   const KMail::HeaderStrategy * strategy );
00095 
00097   const KMail::HeaderStrategy * headerStrategy() const {
00098     return mHeaderStrategy;
00099   }
00100 
00102   const KMail::AttachmentStrategy * attachmentStrategy() const {
00103     return mAttachmentStrategy;
00104   }
00105   void setAttachmentStrategy( const KMail::AttachmentStrategy * strategy );
00106 
00110   const QTextCodec * overrideCodec() const { return mOverrideCodec; }
00111 
00114   void setOverrideCodec( const QTextCodec * codec );
00115 
00118   bool autoDetectEncoding() const { return !overrideCodec(); }
00119 
00121   virtual void setPrinting(bool enable) { mPrinting = enable; }
00122 
00125   virtual void setMsg(KMMessage* msg, bool force = false);
00126 
00129   void setMsgPart( KMMessagePart* aMsgPart, bool aHTML,
00130            const QString& aFileName, const QString& pname );
00131 
00132   void setMsgPart( partNode * node );
00133 
00136   void showHideMimeTree( bool isPlainTextTopLevel );
00137 
00142   void setIdOfLastViewedMessage( const QString & msgId )
00143     { mIdOfLastViewedMessage = msgId; }
00144 
00146   void clear(bool force = false) { setMsg(0, force); }
00147 
00149   void update(bool force = false);
00150 
00152   virtual void printMsg(void);
00153 
00155   QString copyText();
00156 
00158   bool autoDelete(void) const { return mAutoDelete; }
00159   void setAutoDelete(bool f) { mAutoDelete=f; }
00160 
00162   bool htmlOverride() const { return mHtmlOverride; }
00163   void setHtmlOverride( bool override );
00164 
00166   bool htmlMail();
00167 
00169   void displayAboutPage();
00170 
00172   void enableMsgDisplay();
00173 
00175   void atmViewMsg(KMMessagePart* msgPart);
00176 
00177   bool atBottom() const;
00178 
00179   bool isFixedFont() { return mUseFixedFont; }
00180 
00182   KMail::HtmlWriter * htmlWriter() { return mHtmlWriter; }
00183 
00184   // Action to reply to a message
00185   // but action( "some_name" ) some name could be used instead.
00186   KToggleAction *toggleFixFontAction() { return mToggleFixFontAction; }
00187   KAction *viewSourceAction() { return mViewSourceAction; }
00188   KAction *mailToComposeAction() { return mMailToComposeAction; }
00189   KAction *mailToReplyAction() { return mMailToReplyAction; }
00190   KAction *mailToForwardAction() { return mMailToForwardAction; }
00191   KAction *addAddrBookAction() { return mAddAddrBookAction; }
00192   KAction *openAddrBookAction() { return mOpenAddrBookAction; }
00193   KAction *copyAction() { return mCopyAction; }
00194   KAction *copyURLAction() { return mCopyURLAction; }
00195   KAction *urlOpenAction() { return mUrlOpenAction; }
00196   KAction *urlSaveAsAction() { return mUrlSaveAsAction; }
00197   KAction *addBookmarksAction() { return mAddBookmarksAction;}
00198   // This function returns the complete data that were in this
00199   // message parts - *after* all encryption has been removed that
00200   // could be removed.
00201   // - This is used to store the message in decrypted form.
00202   void objectTreeToDecryptedMsg( partNode* node,
00203                                  NewByteArray& resultingData,
00204                                  KMMessage& theMessage,
00205                                  bool weAreReplacingTheRootNode = false,
00206                                  int recCount = 0 );
00207 
00209   partNode* partNodeFromUrl(const KURL &url);
00210 
00212   static int msgPartFromUrl(const KURL &url);
00213 
00214   void setUpdateAttachment() { mAtmUpdate = true; }
00215 
00218   KHTMLPart * htmlPart() const { return mViewer; }
00219 
00221   KMMessage* message(KMFolder** folder=0) const;
00222 
00223   void openAttachment( int id, const QString & name );
00224 
00225   void emitUrlClicked( const KURL & url, int button ) {
00226     emit urlClicked( url, button );
00227   }
00228 
00229   void emitPopupMenu( const KURL & url, const QPoint & p ) {
00230     if ( message() )
00231       emit popupMenu( *message(), url, p );
00232   }
00233 
00234   void showAttachmentPopup( int id, const QString & name, const QPoint & p );
00235 
00236 signals:
00239   void replaceMsgByUnencryptedVersion();
00240 
00242   void statusMsg(const QString& text);
00243 
00245   void popupMenu(KMMessage &msg, const KURL &url, const QPoint& mousePos);
00246 
00248   void urlClicked(const KURL &url, int button);
00249 
00251   void noDrag(void);
00252 
00254   void signalGroupwareShow(bool);
00255 
00256 public slots:
00257 
00259   void selectAll();
00260 
00262   void clearCache();
00263 
00265   void updateReaderWin();
00266 
00268   void slotScrollUp();
00269   void slotScrollDown();
00270   void slotScrollPrior();
00271   void slotScrollNext();
00272   void slotJumpDown();
00273   void slotDocumentChanged();
00274   void slotDocumentDone();
00275   void slotTextSelected(bool);
00276 
00278   void slotUrlOpen(const KURL &url, const KParts::URLArgs &args);
00279 
00281   void slotUrlOn(const QString &url);
00282 
00284   void slotUrlPopup(const QString &, const QPoint& mousePos);
00285 
00287   void slotFind();
00288 
00290   void slotToggleFixedFont();
00291 
00293   void slotCopySelectedText();
00294 
00295    void slotUrlClicked();
00296 
00298   void slotMailtoReply();
00299   void slotMailtoCompose();
00300   void slotMailtoForward();
00301   void slotMailtoAddAddrBook();
00302   void slotMailtoOpenAddrBook();
00305   void slotUrlCopy();
00306   void slotUrlOpen( const KURL &url = KURL() );
00308   void slotUrlSave();
00309   void slotAddBookmarks();
00310   void slotShowMsgSrc();
00311   void slotSaveMsg();
00312   void slotSaveAttachments();
00313 
00314 protected slots:
00316   void slotAtmOpen();
00317   void slotDoAtmOpen();
00318   void slotAtmOpenWith();
00319   void slotAtmView();
00320   void slotAtmSave();
00321   void slotAtmProperties();
00322   void slotDelayedResize();
00323   void slotTouchMessage();
00324   void slotAtmLoadPart( int );
00325   void slotAtmDistributeClick();
00326 
00327 protected:
00330   void styleChange( QStyle& oldStyle );
00331 
00334   void setStyleDependantFrameWidth();
00335 
00337   virtual bool event(QEvent *e);
00338 
00340   int pointsToPixel(int pointSize) const;
00341 
00344   void displayMessage();
00345 
00347   virtual void parseMsg( KMMessage* msg  );
00348 
00351   QString writeMsgHeader(KMMessage* aMsg, bool hasVCard=false);
00352 
00356   QString writeMessagePartToTempFile( KMMessagePart* msgPart, int partNumber );
00357 
00359   void showVCard(KMMessagePart *msgPart);
00360 
00362   virtual void initHtmlWidget(void);
00363 
00365   virtual void closeEvent(QCloseEvent *);
00366   virtual void resizeEvent(QResizeEvent *);
00367 
00369   virtual void removeTempFiles();
00370 
00371 private:
00372   void adjustLayout();
00373   void createWidgets();
00374   void createActions( KActionCollection * ac );
00375   void saveSplitterSizes( KConfigBase & c ) const;
00376 
00377 private:
00378   bool mHtmlMail, mHtmlOverride;
00379   int mAtmCurrent;
00380   QString mAtmCurrentName;
00381   KMMessage *mMessage;
00382   // widgets:
00383   QSplitter * mSplitter;
00384   QHBox *mBox;
00385   KMail::HtmlStatusBar *mColorBar;
00386   KMMimePartTree* mMimePartTree;
00387   KHTMLPart *mViewer;
00388 
00389   const KMail::AttachmentStrategy * mAttachmentStrategy;
00390   const KMail::HeaderStrategy * mHeaderStrategy;
00391   const KMail::HeaderStyle * mHeaderStyle;
00392   bool mAutoDelete;
00394   QString mSaveAttachDir;
00395   static const int delay;
00396   QTimer updateReaderWinTimer;
00397   QTimer mResizeTimer;
00398   QTimer mDelayedMarkTimer;
00399   const QTextCodec * mOverrideCodec;
00400   bool mMsgDisplay;
00401   bool mDelayedMarkAsRead;
00402   unsigned long mLastSerNum;
00403   KMMsgStatus mLastStatus;
00404 
00405   KMail::CSSHelper * mCSSHelper;
00406   bool mUseFixedFont;
00407   bool mPrinting;
00408 
00409   bool mShowColorbar;
00410   //bool mShowCompleteMessage;
00411   uint mDelayedMarkTimeout;
00412   QStringList mTempFiles;
00413   QStringList mTempDirs;
00414   int mMimeTreeMode;
00415   bool mMimeTreeAtBottom;
00416   QValueList<int> mSplitterSizes;
00417   partNode* mRootNode;
00418   QString mIdOfLastViewedMessage;
00419   QWidget *mMainWindow;
00420   KAction *mViewSourceAction, *mMailToComposeAction, *mMailToReplyAction, *mMailToForwardAction,
00421       *mAddAddrBookAction, *mOpenAddrBookAction, *mCopyAction, *mCopyURLAction,
00422       *mUrlOpenAction, *mUrlSaveAsAction, *mAddBookmarksAction;
00423 
00424   KToggleAction *mToggleFixFontAction;
00425   KURL mUrlClicked;
00426   KMail::HtmlWriter * mHtmlWriter;
00427   // an attachment should be updated
00428   bool mAtmUpdate;
00429   int mChoice;
00430   KService::Ptr mOffer;
00431 };
00432 
00433 
00434 #endif
00435 
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:34 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003