Messagelib

csshelper.cpp
1 /*
2  csshelper.cpp
3 
4  This file is part of KMail, the KDE mail client.
5  SPDX-FileCopyrightText: 2003 Marc Mutz <[email protected]>
6 
7  SPDX-License-Identifier: GPL-2.0-or-later
8 */
9 
10 #include "csshelper.h"
11 #include "settings/messageviewersettings.h"
12 
13 #include <MessageCore/ColorUtil>
14 #include <MessageCore/MessageCoreSettings>
15 
16 #include <KColorScheme>
17 #include <KConfig>
18 #include <KConfigGroup>
19 #include <QApplication>
20 
21 #include <QFont>
22 #include <QPalette>
23 
24 using namespace MessageViewer;
25 
26 static const struct {
27  CSSHelperBase::InlineMessageType type;
29 } inlineMessageColors[] = {{CSSHelperBase::Positive, KColorScheme::PositiveText},
30  {CSSHelperBase::Information, KColorScheme::ActiveText},
31  {CSSHelperBase::Warning, KColorScheme::NeutralText},
32  {CSSHelperBase::Error, KColorScheme::NegativeText}};
33 
34 CSSHelper::CSSHelper(const QPaintDevice *pd)
35  : CSSHelperBase(pd)
36 {
37  // initialize with defaults - should match the corresponding application defaults
38  updateColor();
39  mLinkColor = MessageCore::ColorUtil::self()->linkColor();
40  for (const auto &msgColor : inlineMessageColors) {
41  cInlineMessage[msgColor.type] = KColorScheme(QPalette::Active).foreground(msgColor.role).color();
42  }
43 
44  cPgpEncrH = MessageCore::ColorUtil::self()->pgpEncryptedMessageColor();
45  cPgpEncrHT = MessageCore::ColorUtil::self()->pgpEncryptedTextColor();
46  cPgpOk1H = MessageCore::ColorUtil::self()->pgpSignedTrustedMessageColor();
47  cPgpOk1HT = MessageCore::ColorUtil::self()->pgpSignedTrustedTextColor();
48  cPgpOk0H = MessageCore::ColorUtil::self()->pgpSignedUntrustedMessageColor();
49  cPgpOk0HT = MessageCore::ColorUtil::self()->pgpSignedUntrustedTextColor();
50  cPgpWarnH = MessageCore::ColorUtil::self()->pgpSignedUntrustedMessageColor();
51  cPgpWarnHT = MessageCore::ColorUtil::self()->pgpSignedUntrustedTextColor();
52  cPgpErrH = MessageCore::ColorUtil::self()->pgpSignedBadMessageColor();
53  cPgpErrHT = MessageCore::ColorUtil::self()->pgpSignedBadTextColor();
54 
55  mRecycleQuoteColors = false;
56 
59  mBodyFont = MessageCore::MessageCoreSettings::self()->useDefaultFonts() ? defaultFont : MessageViewer ::MessageViewerSettings::self()->bodyFont();
60  mPrintFont = MessageCore::MessageCoreSettings::self()->useDefaultFonts() ? defaultFont : MessageViewer ::MessageViewerSettings::self()->printFont();
61  mFixedFont = mFixedPrintFont = defaultFixedFont;
62  defaultFont.setItalic(true);
63  mQuoteFont = defaultFont;
64 
65  KConfig *config = MessageViewer::MessageViewerSettings::self()->config();
66 
67  KConfigGroup reader(config, QStringLiteral("Reader"));
68  KConfigGroup fonts(config, QStringLiteral("Fonts"));
69 
70  mRecycleQuoteColors = reader.readEntry("RecycleQuoteColors", false);
71 
72  mForegroundColor = KColorScheme(QPalette::Active).foreground().color();
73  if (MessageCore::MessageCoreSettings::self()->useDefaultColors()) {
74  mQuoteColor[0] = MessageCore::ColorUtil::self()->quoteLevel1DefaultTextColor();
75  mQuoteColor[1] = MessageCore::ColorUtil::self()->quoteLevel2DefaultTextColor();
76  mQuoteColor[2] = MessageCore::ColorUtil::self()->quoteLevel3DefaultTextColor();
77  } else {
78  mLinkColor = reader.readEntry("LinkColor", mLinkColor);
79  cPgpEncrH = reader.readEntry("PGPMessageEncr", cPgpEncrH);
80  cPgpOk1H = reader.readEntry("PGPMessageOkKeyOk", cPgpOk1H);
81  cPgpOk0H = reader.readEntry("PGPMessageOkKeyBad", cPgpOk0H);
82  cPgpWarnH = reader.readEntry("PGPMessageWarn", cPgpWarnH);
83  cPgpErrH = reader.readEntry("PGPMessageErr", cPgpErrH);
84  mQuoteColor[0] = MessageCore::MessageCoreSettings::self()->quotedText1();
85  mQuoteColor[1] = MessageCore::MessageCoreSettings::self()->quotedText2();
86  mQuoteColor[2] = MessageCore::MessageCoreSettings::self()->quotedText3();
87  }
88 
89  if (!MessageCore::MessageCoreSettings::self()->useDefaultFonts()) {
90  mBodyFont = fonts.readEntry("body-font", mBodyFont);
91  mPrintFont = fonts.readEntry("print-font", mPrintFont);
92  mFixedFont = fonts.readEntry("fixed-font", mFixedFont);
93  mFixedPrintFont = mFixedFont;
94  }
95 
96  mShrinkQuotes = MessageViewer::MessageViewerSettings::self()->shrinkQuotes();
97 
98  mUseBrowserColor = MessageCore::MessageCoreSettings::self()->useRealHtmlMailColor();
99  recalculatePGPColors();
100 }
101 
102 CSSHelper::~CSSHelper() = default;
103 
104 void CSSHelper::updateColor()
105 {
106  // KColorScheme(QPalette::Active).background().color();
107 
108  mForegroundColor = KColorScheme(QPalette::Active).foreground().color(); // QApplication::palette().color(QPalette::Text);
109  mBackgroundColor = KColorScheme(QPalette::Active).background().color(); // QApplication::palette().color(QPalette::Base);
110 }
111 
112 QString CSSHelper::htmlHead(const HtmlHeadSettings &htmlHeadSettings) const
113 {
114  return QLatin1String(
115  "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
116  "<html><head><title></title><style>\n")
117  + cssDefinitions(htmlHeadSettings)
118  + QLatin1String(
119  "</style></head>\n"
120  "<body>\n");
121 }
122 
123 QString CSSHelper::endBodyHtml() const
124 {
125  return QStringLiteral("</body></html>");
126 }
const QColor & color() const const
QBrush background(BackgroundRole=NormalBackground) const
QFont systemFont(QFontDatabase::SystemFont type)
void setItalic(bool enable)
The CSSHelperBase class.
Definition: csshelperbase.h:26
KSharedConfigPtr config()
QBrush foreground(ForegroundRole=NormalText) const
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Thu Dec 7 2023 04:03:35 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.