• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

knode

  • sources
  • kde-4.12
  • kdepim
  • knode
articlewidget.h
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 2005 Volker Krause <vkrause@kde.org>
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9  You should have received a copy of the GNU General Public License
10  along with this program; if not, write to the Free Software Foundation,
11  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
12 */
13 
14 #ifndef KNODE_ARTICLEWIDGET_H
15 #define KNODE_ARTICLEWIDGET_H
16 
17 #include "knarticle.h"
18 #include "knarticlecollection.h"
19 #include "knjobdata.h"
20 
21 #include <QByteArray>
22 #include <QMap>
23 #include <QWidget>
24 #include <kurl.h>
25 #include <kmime/kmime_content.h>
26 
27 class QTimer;
28 class KAction;
29 class KActionCollection;
30 class KActionMenu;
31 class KHTMLPart;
32 class KSelectAction;
33 class KToggleAction;
34 class KXMLGUIClient;
35 
36 namespace Kpgp {
37  class Block;
38 }
39 
40 namespace KNode {
41 
42 class CSSHelper;
43 
47 class ArticleWidget : public QWidget, public KNJobConsumer {
48 
49  Q_OBJECT
50 
51  public:
53  ArticleWidget( QWidget *parent,
54  KXMLGUIClient *guiClient,
55  KActionCollection *actionCollection, bool isMainViewer = false );
57  ~ArticleWidget();
58 
60  void readConfig();
62  void writeConfig();
63 
67  void setArticle( KNArticle::Ptr article );
69  KNArticle::Ptr article() const { return mArticle; }
70 
72  static void configChanged();
76  static bool articleVisible( KNArticle::Ptr article );
80  static void articleRemoved( KNArticle::Ptr article );
84  static void articleChanged( KNArticle::Ptr article );
89  static void articleLoadError( KNArticle::Ptr article, const QString &error );
93  static void collectionRemoved( KNArticleCollection::Ptr coll );
95  static void cleanup();
96 
98  bool atBottom() const;
99 
100  public slots:
102  void scrollUp();
104  void scrollDown();
106  void scrollPrior();
108  void scrollNext();
109 
110  protected:
112  void processJob( KNJobData *j );
113 
114  private:
115  void initActions();
116 
118  void enableActions();
120  void disableActions();
121 
123  void clear();
125  void displayArticle();
127  void displayErrorMessage( const QString &msg );
128 
130  void displayHeader();
134  void displayBodyBlock( const QStringList &lines );
136  QString displaySigHeader( const Kpgp::Block &block );
138  void displaySigFooter( const QString &signClass );
140  void displayAttachment( KMime::Content *att, int partNum );
141 
143  enum ConversionFlags {
144  None = 0,
145  ParseURL = 1,
146  FancyFormatting = 2,
147  AllowROT13 = 4
148  };
150  QString toHtmlString( const QString &line, int flags = ParseURL );
152  static QString imgToDataUrl( const QImage &image, const char* fmt );
153 
157  static int quotingDepth( const QString &line, const QString &quoteChars );
159  bool inlinePossible( KMime::Content *c );
163  bool canDecodeText( const QByteArray &charset ) const;
164 
166  void updateContents();
167 
171  KUrl writeAttachmentToTempFile( KMime::Content *att, int partNum );
173  void removeTempFiles();
174 
175  private slots:
177  void slotURLClicked( const KUrl &url, bool forceOpen = false );
179  void slotURLPopup( const QString &url, const QPoint &point );
180 
182  void slotTimeout();
183 
184  void slotSave();
185  void slotPrint();
186  void slotCopySelection();
187  void slotSelectAll();
188  void slotFind();
189  void slotViewSource();
190  void slotReply();
191  void slotRemail();
192  void slotForward();
193  void slotCancel();
194  void slotSupersede();
195  void slotToggleFixedFont();
196  void slotToggleFancyFormating();
197  void slotToggleRot13();
198 
199  void slotFancyHeaders();
200  void slotStandardHeaders();
201  void slotAllHeaders();
202 
203  void slotIconAttachments();
204  void slotInlineAttachments();
205  void slotHideAttachments();
206 
207  void slotSetCharset( const QString &charset );
208  void slotSetCharsetKeyboard();
209 
210  void slotOpenURL();
211  void slotCopyURL();
212  void slotAddBookmark();
213  void slotAddToAddressBook();
214  void slotOpenInAddressBook();
215  void slotOpenAttachment();
216  void slotSaveAttachment();
217 
218  private:
220  KNArticle::Ptr mArticle;
222  KMime::Content::List mAttachments;
224  QMap<QString, int> mAttachementMap;
225 
226  KHTMLPart *mViewer;
227  CSSHelper *mCSSHelper;
228 
229  QStringList mTempDirs, mTempFiles;
230 
231  QString mHeaderStyle;
232  QString mAttachmentStyle;
233  bool mShowHtml;
234  bool mRot13;
235  bool mForceCharset;
236  QByteArray mOverrideCharset;
237 
239  QTimer *mTimer;
240 
242  KUrl mCurrentURL;
243 
245  static QList<ArticleWidget*> mInstances;
249  bool mIsMainViewer;
250 
251  KXMLGUIClient *mGuiClient;
252  KActionCollection *mActionCollection;
253 
254  QAction *mSaveAction;
255  QAction *mPrintAction;
256  QAction *mCopySelectionAction;
257  QAction *mSelectAllAction;
258  QAction *mFindAction;
259  KAction *mViewSourceAction;
260  KAction *mCharsetSelectKeyb;
261  KAction *mReplyAction;
262  KAction *mRemailAction;
263  KAction *mForwardAction;
264  KAction *mCancelAction;
265  KAction *mSupersedeAction;
266  KActionMenu *mHeaderStyleMenu;
267  KActionMenu *mAttachmentStyleMenu;
268  KToggleAction *mFixedFontToggle;
269  KToggleAction *mFancyToggle;
270  KToggleAction *mRot13Toggle;
271  KSelectAction *mCharsetSelect;
272 };
273 
274 }
275 
276 #endif
KNode::ArticleWidget::readConfig
void readConfig()
read config settings
Definition: articlewidget.cpp:337
KNode::ArticleWidget::setArticle
void setArticle(KNArticle::Ptr article)
display the given article
Definition: articlewidget.cpp:379
KNode::ArticleWidget::collectionRemoved
static void collectionRemoved(KNArticleCollection::Ptr coll)
notify all instances that the given collection has been removed
Definition: articlewidget.cpp:1129
KNode::ArticleWidget::writeConfig
void writeConfig()
write config settings (call only for the main viewer)
Definition: articlewidget.cpp:362
KNode::ArticleWidget::scrollPrior
void scrollPrior()
scroll up by one page
Definition: articlewidget.cpp:1161
KNJobData
Abstract base class for all KNode internal jobs.
Definition: knjobdata.h:101
QWidget
KNode::ArticleWidget::~ArticleWidget
~ArticleWidget()
Destroy the article widget.
Definition: articlewidget.cpp:134
KNode::ArticleWidget::scrollNext
void scrollNext()
scroll down by one page
Definition: articlewidget.cpp:1166
KNode::ArticleWidget::scrollDown
void scrollDown()
scroll down by one line
Definition: articlewidget.cpp:1156
KNode::ArticleWidget::processJob
void processJob(KNJobData *j)
process download jobs for view source action
Definition: articlewidget.cpp:1067
knjobdata.h
KNode::ArticleWidget::atBottom
bool atBottom() const
checks whether the readers is scrolled down to the bottom
Definition: articlewidget.cpp:1145
KNode::ArticleWidget::scrollUp
void scrollUp()
scroll up by one line
Definition: articlewidget.cpp:1151
KNode::ArticleWidget::configChanged
static void configChanged()
notify all instances about a config change
Definition: articlewidget.cpp:1087
KNode::ArticleWidget::articleVisible
static bool articleVisible(KNArticle::Ptr article)
check whether the given article is displayed in any instance
Definition: articlewidget.cpp:1096
KNJobConsumer
Base class for classes that want to create and schedule jobs.
Definition: knjobdata.h:39
knarticlecollection.h
KNode::ArticleWidget
Widget to display a news article.
Definition: articlewidget.h:47
KNode::ArticleWidget::ArticleWidget
ArticleWidget(QWidget *parent, KXMLGUIClient *guiClient, KActionCollection *actionCollection, bool isMainViewer=false)
Construct a new article widget.
Definition: articlewidget.cpp:88
KNode::ArticleWidget::articleRemoved
static void articleRemoved(KNArticle::Ptr article)
notify all instances that the given article has been removed
Definition: articlewidget.cpp:1105
KActionMenu
KNode::ArticleWidget::cleanup
static void cleanup()
cleanup all instances
Definition: articlewidget.cpp:1137
KNArticle::Ptr
boost::shared_ptr< KNArticle > Ptr
Shared pointer to a KNArticle. To be used instead of raw KNArticle*.
Definition: knarticle.h:39
knarticle.h
KNode::ArticleWidget::articleLoadError
static void articleLoadError(KNArticle::Ptr article, const QString &error)
notify all instances about an error during loading the given article
Definition: articlewidget.cpp:1121
KNArticleCollection::Ptr
boost::shared_ptr< KNArticleCollection > Ptr
Shared pointer to a KNArticle.
Definition: knarticlecollection.h:82
KNode::ArticleWidget::articleChanged
static void articleChanged(KNArticle::Ptr article)
notify all instances that the given article has changed
Definition: articlewidget.cpp:1113
KNode::ArticleWidget::article
KNArticle::Ptr article() const
returns the currently shown article
Definition: articlewidget.h:69
QList
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knode

Skip menu "knode"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal