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

messageviewer

  • sources
  • kde-4.14
  • kdepim
  • messageviewer
  • viewer
converthtmltoplaintext.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2015 Montel Laurent <montel@kde.org>
3 
4  This library is free software; you can redistribute it and/or modify it
5  under the terms of the GNU Library General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or (at your
7  option) any later version.
8 
9  This library is distributed in the hope that it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12  License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to the
16  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  02110-1301, USA.
18 
19 */
20 
21 #include "converthtmltoplaintext.h"
22 
23 #include <grantlee/plaintextmarkupbuilder.h>
24 #include <QTextDocument>
25 #include <QDebug>
26 using namespace MessageViewer;
27 ConvertHtmlToPlainText::ConvertHtmlToPlainText()
28 {
29 
30 }
31 
32 ConvertHtmlToPlainText::~ConvertHtmlToPlainText()
33 {
34 
35 }
36 
37 void ConvertHtmlToPlainText::setHtmlString(const QString &htmlString)
38 {
39  mHtmlString = htmlString;
40 }
41 
42 QString ConvertHtmlToPlainText::generatePlainText()
43 {
44  if (mHtmlString.isEmpty())
45  return QString();
46  Grantlee::PlainTextMarkupBuilder *pb = new Grantlee::PlainTextMarkupBuilder();
47 
48  Grantlee::MarkupDirector *pmd = new Grantlee::MarkupDirector( pb );
49  QTextDocument *doc = new QTextDocument;
50  doc->setHtml(mHtmlString);
51 
52  pmd->processDocument( doc );
53  QString plainText = pb->getResult();
54 
55  delete doc;
56  delete pmd;
57  delete pb;
58  toCleanPlainText(plainText);
59  return plainText;
60 }
61 
62 QString ConvertHtmlToPlainText::htmlString() const
63 {
64  return mHtmlString;
65 }
66 
67 //Duplicate from kpimtextedit/textedit.h
68 void ConvertHtmlToPlainText::toCleanPlainText(QString &text)
69 {
70  // Remove line separators. Normal \n chars are still there, so no linebreaks get lost here
71  text.remove( QChar::LineSeparator );
72 
73  // Get rid of embedded images, see QTextImageFormat documentation:
74  // "Inline images are represented by an object replacement character (0xFFFC in Unicode) "
75  text.remove( 0xFFFC );
76 
77  // In plaintext mode, each space is non-breaking.
78  text.replace( QChar::Nbsp, QChar::fromLatin1( ' ' ) );
79 }
MessageViewer::ConvertHtmlToPlainText::generatePlainText
QString generatePlainText()
Definition: converthtmltoplaintext.cpp:42
MessageViewer::ConvertHtmlToPlainText::ConvertHtmlToPlainText
ConvertHtmlToPlainText()
Definition: converthtmltoplaintext.cpp:27
QString::remove
QString & remove(int position, int n)
converthtmltoplaintext.h
QChar::fromLatin1
QChar fromLatin1(char c)
QString::isEmpty
bool isEmpty() const
MessageViewer::ConvertHtmlToPlainText::~ConvertHtmlToPlainText
~ConvertHtmlToPlainText()
Definition: converthtmltoplaintext.cpp:32
QString
QString::replace
QString & replace(int position, int n, QChar after)
QTextDocument
MessageViewer::ConvertHtmlToPlainText::htmlString
QString htmlString() const
Definition: converthtmltoplaintext.cpp:62
MessageViewer::ConvertHtmlToPlainText::setHtmlString
void setHtmlString(const QString &htmlString)
Definition: converthtmltoplaintext.cpp:37
QTextDocument::setHtml
void setHtml(const QString &html)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:45 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

messageviewer

Skip menu "messageviewer"
  • Main Page
  • Namespace List
  • Namespace Members
  • 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
  • pimprint

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