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

kmail/src

  • kde-4.x
  • pim
  • kmail
  • src
  • editor
kmcomposereditorng.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2015-2019 Montel Laurent <[email protected]>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "kmcomposereditorng.h"
19 #include "kmcomposerwin.h"
20 #include "kmkernel.h"
21 #include "util.h"
22 #include "kmail_debug.h"
23 #include "job/dndfromarkjob.h"
24 #include "dialog/spellcheckerconfigdialog.h"
25 
26 #include <QMenu>
27 #include <KToggleAction>
28 #include <QMimeData>
29 #include <QCheckBox>
30 #include <QLabel>
31 #include <MessageCore/MessageCoreSettings>
32 #include <Sonnet/ConfigDialog>
33 #include <KPIMTextEdit/RichTextComposerEmailQuoteHighlighter>
34 #include <sonnet/dictionarycombobox.h>
35 
36 namespace {
37 inline QString textSnippetMimeType()
38 {
39  return QStringLiteral("text/x-kmail-textsnippet");
40 }
41 }
42 
43 KMComposerEditorNg::KMComposerEditorNg(KMComposerWin *win, QWidget *parent)
44  : MessageComposer::RichTextComposerNg(parent)
45  , mComposerWin(win)
46 {
47  setSpellCheckingConfigFileName(QStringLiteral("kmail2rc"));
48  setAutocorrection(KMKernel::self()->composerAutoCorrection());
49  createHighlighter();
50 }
51 
52 KMComposerEditorNg::~KMComposerEditorNg()
53 {
54 }
55 
56 void KMComposerEditorNg::addExtraMenuEntry(QMenu *menu, QPoint pos)
57 {
58  Q_UNUSED(pos);
59  const QList<QAction *> lstAct = mComposerWin->pluginToolsActionListForPopupMenu();
60  for (QAction *a : lstAct) {
61  menu->addSeparator();
62  menu->addAction(a);
63  }
64 
65  menu->addSeparator();
66  const QList<KToggleAction *> lstTa = mComposerWin->customToolsList();
67  for (KToggleAction *ta : lstTa) {
68  menu->addAction(ta);
69  }
70 }
71 
72 bool KMComposerEditorNg::canInsertFromMimeData(const QMimeData *source) const
73 {
74  if (source->hasImage() && source->hasFormat(QStringLiteral("image/png"))) {
75  return true;
76  }
77  if (source->hasFormat(textSnippetMimeType())) {
78  return true;
79  }
80  if (source->hasUrls()) {
81  return true;
82  }
83 
84  if (DndFromArkJob::dndFromArk(source)) {
85  return true;
86  }
87 
88  return MessageComposer::RichTextComposerNg::canInsertFromMimeData(source);
89 }
90 
91 void KMComposerEditorNg::insertFromMimeData(const QMimeData *source)
92 {
93  if (source->hasFormat(textSnippetMimeType())) {
94  Q_EMIT insertSnippet();
95  return;
96  }
97 
98  if (!mComposerWin->insertFromMimeData(source, false)) {
99  MessageComposer::RichTextComposerNg::insertFromMimeData(source);
100  }
101 }
102 
103 void KMComposerEditorNg::setHighlighterColors(KPIMTextEdit::RichTextComposerEmailQuoteHighlighter *highlighter)
104 {
105  QColor color1 = MessageCore::ColorUtil::self()->quoteLevel1DefaultTextColor();
106  QColor color2 = MessageCore::ColorUtil::self()->quoteLevel2DefaultTextColor();
107  QColor color3 = MessageCore::ColorUtil::self()->quoteLevel3DefaultTextColor();
108  QColor misspelled = MessageCore::ColorUtil::self()->misspelledDefaultTextColor();
109 
110  if (!MessageCore::MessageCoreSettings::self()->useDefaultColors()) {
111  color1 = MessageCore::MessageCoreSettings::self()->quotedText1();
112  color2 = MessageCore::MessageCoreSettings::self()->quotedText2();
113  color3 = MessageCore::MessageCoreSettings::self()->quotedText3();
114  }
115 
116  highlighter->setQuoteColor(Qt::black /* ignored anyway */,
117  color1, color2, color3, misspelled);
118 }
119 
120 QString KMComposerEditorNg::smartQuote(const QString &msg)
121 {
122  return mComposerWin->smartQuote(msg);
123 }
124 
125 void KMComposerEditorNg::showSpellConfigDialog(const QString &configFileName)
126 {
127  Q_UNUSED(configFileName);
128  QPointer<SpellCheckerConfigDialog> dialog = new SpellCheckerConfigDialog(this);
129  if (!spellCheckingLanguage().isEmpty()) {
130  dialog->setLanguage(spellCheckingLanguage());
131  }
132 
133  if (dialog->exec()) {
134  setSpellCheckingLanguage(dialog->language());
135  }
136  delete dialog;
137 }
138 
139 MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus KMComposerEditorNg::convertPlainText(MessageComposer::TextPart *textPart)
140 {
141  if (mComposerWin->convertPlainText(textPart) == MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus::Converted) {
142  return MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus::Converted;
143  }
144  return MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus::NotConverted;
145 }
146 
147 bool KMComposerEditorNg::processModifyText(QKeyEvent *event)
148 {
149  if (!mComposerWin->processModifyText(event)) {
150  return MessageComposer::RichTextComposerNg::processModifyText(event);
151  }
152  return true;
153 }
QWidget
KMComposerEditorNg::KMComposerEditorNg
KMComposerEditorNg(KMComposerWin *win, QWidget *parent)
Definition: kmcomposereditorng.cpp:43
KMComposerEditorNg::processModifyText
bool processModifyText(QKeyEvent *event) override
Definition: kmcomposereditorng.cpp:147
QMimeData::hasFormat
virtual bool hasFormat(const QString &mimeType) const
QMenu::addAction
void addAction(QAction *action)
QPointer
KMComposerEditorNg::~KMComposerEditorNg
~KMComposerEditorNg() override
Definition: kmcomposereditorng.cpp:52
KMComposerEditorNg::addExtraMenuEntry
void addExtraMenuEntry(QMenu *menu, QPoint pos) override
Definition: kmcomposereditorng.cpp:56
KMComposerWin::pluginToolsActionListForPopupMenu
QList< QAction * > pluginToolsActionListForPopupMenu() const
Definition: kmcomposerwin.cpp:3493
DndFromArkJob::dndFromArk
static bool dndFromArk(const QMimeData *source)
Definition: dndfromarkjob.cpp:36
QPoint
kmcomposereditorng.h
QMimeData
KMKernel::self
static KMKernel * self()
normal control stuff
Definition: kmkernel.cpp:1314
KMComposerWin
Definition: kmcomposerwin.h:116
KMComposerEditorNg::setHighlighterColors
void setHighlighterColors(KPIMTextEdit::RichTextComposerEmailQuoteHighlighter *highlighter) override
Definition: kmcomposereditorng.cpp:103
SpellCheckerConfigDialog
Definition: spellcheckerconfigdialog.h:25
KMComposerWin::smartQuote
QString smartQuote(const QString &msg)
Definition: kmcomposerwin.cpp:2102
KMComposerEditorNg::insertSnippet
void insertSnippet()
KMComposerWin::insertFromMimeData
bool insertFromMimeData(const QMimeData *source, bool forceAttachment=false)
Definition: kmcomposerwin.cpp:2128
QMenu::addSeparator
QAction * addSeparator()
QString
QList< QAction * >
QColor
KMComposerWin::convertPlainText
Q_REQUIRED_RESULT MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus convertPlainText(MessageComposer::TextPart *textPart)
Definition: kmcomposerwin.cpp:3433
util.h
QMenu
KMComposerEditorNg::convertPlainText
MessageComposer::PluginEditorConvertTextInterface::ConvertTextStatus convertPlainText(MessageComposer::TextPart *textPart) override
Definition: kmcomposereditorng.cpp:139
QKeyEvent
kmkernel.h
KMComposerEditorNg::canInsertFromMimeData
bool canInsertFromMimeData(const QMimeData *source) const override
Definition: kmcomposereditorng.cpp:72
FolderArchive::FolderArchiveUtil::configFileName
Q_REQUIRED_RESULT QString configFileName()
Definition: folderarchiveutil.cpp:31
QMimeData::hasUrls
bool hasUrls() const
QMimeData::hasImage
bool hasImage() const
KMComposerEditorNg::showSpellConfigDialog
void showSpellConfigDialog(const QString &configFileName)
Definition: kmcomposereditorng.cpp:125
QAction
dndfromarkjob.h
spellcheckerconfigdialog.h
KMComposerWin::customToolsList
QList< KToggleAction * > customToolsList() const
Definition: kmcomposerwin.cpp:3488
KMComposerEditorNg::insertFromMimeData
void insertFromMimeData(const QMimeData *source) override
Definition: kmcomposereditorng.cpp:91
KMComposerWin::processModifyText
Q_REQUIRED_RESULT bool processModifyText(QKeyEvent *event)
Definition: kmcomposerwin.cpp:3428
kmcomposerwin.h
KMComposerEditorNg::smartQuote
Q_REQUIRED_RESULT QString smartQuote(const QString &msg) override
Definition: kmcomposereditorng.cpp:120
This file is part of the KDE documentation.
Documentation copyright © 1996-2019 The KDE developers.
Generated on Sat Dec 14 2019 01:54:28 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kmail/src

Skip menu "kmail/src"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

pim API Reference

Skip menu "pim API Reference"
  • akonadi-calendar-tools
  •   konsolekalendar
  • akregator
  •   src
  • kalarmcal
  •   src
  •     lib
  • kdepim-runtime
  •   agents
  •   src
  • kleopatra
  •   src
  • kmailtransport
  • knotes
  • kontact
  • kontactinterface
  • kpimtextedit
  • ksmtp
  • ktnef
  • libkgapi
  • libkleo
  •   src
  •     src
  •     src

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