File indexing completed on 2025-03-09 04:54:32
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KTextToHTML> 0010 #include <QString> 0011 #include <QVariantHash> 0012 0013 #include "messageviewer/spamheaderanalyzer.h" 0014 #include <KMime/DateFormatter> 0015 #include <KMime/KMimeMessage> 0016 0017 #include "messageviewer/headerstyle.h" 0018 #include "messageviewer/viewer.h" 0019 #include "messageviewer_export.h" 0020 namespace MessageViewer 0021 { 0022 /** 0023 * @brief The HeaderStyleUtil class 0024 * @author Laurent Montel <montel@kde.org> 0025 */ 0026 class MESSAGEVIEWER_EXPORT HeaderStyleUtil 0027 { 0028 public: 0029 HeaderStyleUtil(); 0030 struct xfaceSettings { 0031 xfaceSettings() 0032 : photoWidth(60) 0033 , photoHeight(60) 0034 { 0035 } 0036 0037 QString photoURL; 0038 int photoWidth; 0039 int photoHeight; 0040 }; 0041 enum HeaderStyleUtilDateFormat { 0042 ShortDate, /**< Locale Short date format, e.g. 08-04-2007 */ 0043 LongDate, /**< Locale Long date format, e.g. Sunday 08 April 2007 */ 0044 FancyShortDate, /**< Same as ShortDate for dates a week or more ago. For more 0045 recent dates, it is represented as Today, Yesterday, or 0046 the weekday name. */ 0047 FancyLongDate, /**< Same as LongDate for dates a week or more ago. For more 0048 recent dates, it is represented as Today, Yesterday, or 0049 the weekday name. */ 0050 CustomDate 0051 }; 0052 0053 [[nodiscard]] QString directionOf(const QString &str) const; 0054 0055 [[nodiscard]] static QString strToHtml(const QString &str, KTextToHTML::Options flags = KTextToHTML::PreserveSpaces); 0056 [[nodiscard]] static QString dateString(KMime::Message *message, HeaderStyleUtilDateFormat dateFormat); 0057 [[nodiscard]] static QString dateString(const QDateTime &date, HeaderStyleUtilDateFormat dateFormat); 0058 0059 [[nodiscard]] QString subjectString(KMime::Message *message, KTextToHTML::Options flags = KTextToHTML::PreserveSpaces) const; 0060 0061 [[nodiscard]] QString subjectDirectionString(KMime::Message *message) const; 0062 0063 [[nodiscard]] QString spamStatus(KMime::Message *message) const; 0064 0065 [[nodiscard]] static QString dateStr(const QDateTime &dateTime); 0066 0067 [[nodiscard]] static QString dateShortStr(const QDateTime &dateTime); 0068 0069 [[nodiscard]] MESSAGEVIEWER_DEPRECATED static QSharedPointer<KMime::Headers::Generics::MailboxList> resentFromList(KMime::Message *message); 0070 0071 [[nodiscard]] MESSAGEVIEWER_DEPRECATED static QSharedPointer<KMime::Headers::Generics::MailboxList> resentToList(KMime::Message *message); 0072 0073 [[nodiscard]] xfaceSettings xface(const HeaderStyle *style, KMime::Message *message) const; 0074 0075 private: 0076 void updateXFaceSettings(QImage photo, xfaceSettings &settings) const; 0077 [[nodiscard]] QString 0078 drawSpamMeter(SpamError spamError, double percent, double confidence, const QString &filterHeader, const QString &confidenceHeader) const; 0079 [[nodiscard]] QString imgToDataUrl(const QImage &image) const; 0080 }; 0081 }