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 Wed Jul 28 23:58:03 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003