Messagelib
messagecomposer/src/utils/util.cpp
3 SPDX-FileCopyrightText: 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, [email protected]
35 KMime::Content *setBodyAndCTE(QByteArray &encodedBody, KMime::Headers::ContentType *contentType, KMime::Content *ret)
129 void MessageComposer::Util::makeToplevelContentType(KMime::Content *content, Kleo::CryptoMessageFormat format, bool sign, const QByteArray &hashAlgo)
139 ct->setParameter(QStringLiteral("micalg"), QString::fromLatin1(QByteArray(QByteArrayLiteral("pgp-") + hashAlgo)).toLower());
175 void MessageComposer::Util::setNestedContentType(KMime::Content *content, Kleo::CryptoMessageFormat format, bool sign)
205 void MessageComposer::Util::setNestedContentDisposition(KMime::Content *content, Kleo::CryptoMessageFormat format, bool sign)
231 QByteArray MessageComposer::Util::selectCharset(const QVector<QByteArray> &charsets, const QString &text)
272 void MessageComposer::Util::addSendReplyForwardAction(const KMime::Message::Ptr &message, MailTransport::MessageQueueJob *qjob)
279 qjob->sentActionAttribute().addAction(MailTransport::SentActionAttribute::Action::MarkAsReplied, QVariant(id));
281 qjob->sentActionAttribute().addAction(MailTransport::SentActionAttribute::Action::MarkAsForwarded, QVariant(id));
289 Akonadi::AgentInstance instance = Akonadi::AgentManager::self()->instance(QStringLiteral("akonadi_maildispatcher_agent"));
293 i18n("The mail dispatcher is not set up, so mails cannot be sent. Do you want to create a mail dispatcher?"),
296 KGuiItem(i18nc("@action:button", "Create Mail Dispatcher"), QIcon::fromTheme(QStringLiteral("mail-folder-outbox"))),
300 const Akonadi::AgentType type = Akonadi::AgentManager::self()->type(QStringLiteral("akonadi_maildispatcher_agent"));
311 i18n("The mail dispatcher is offline, so mails cannot be sent. Do you want to make it online?"),
313 KGuiItem(i18nc("@action:button", "Set Online"), QIcon::fromTheme(QStringLiteral("user-online"))),
324 KMime::Content *MessageComposer::Util::findTypeInMessage(KMime::Content *data, const QByteArray &mimeType, const QByteArray &subType)
330 if ((mimeType == data->contentType()->mediaType()) && (subType == data->contentType(false)->subType())) {
337 if ((!child->contentType()->isEmpty()) && (mimeType == child->contentType()->mimeType()) && (subType == child->contentType()->subType())) {
348 void MessageComposer::Util::addLinkInformation(const KMime::Message::Ptr &msg, Akonadi::Item::Id id, Akonadi::MessageStatus status)
384 bool MessageComposer::Util::getLinkInformation(const KMime::Message::Ptr &msg, QVector<Akonadi::Item::Id> &id, QVector<Akonadi::MessageStatus> &status)
392 const QStringList messages = hrdLinkMsg->asUnicodeString().split(QLatin1Char(','), Qt::SkipEmptyParts);
393 const QStringList types = hrdLinkType->asUnicodeString().split(QLatin1Char(','), Qt::SkipEmptyParts);
429 bool MessageComposer::Util::hasMissingAttachments(const QStringList &attachmentKeywords, QTextDocument *doc, const QString &subj)
436 QRegularExpression rx(QLatin1String("\\b") + attachWordsList.join(QLatin1String("\\b|\\b")) + QLatin1String("\\b"),
441 bool gotMatch = (MessageCore::StringUtil::stripOffPrefixes(subj) == subj) && (rx.match(subj).hasMatch());
488 void MessageComposer::Util::addCustomHeaders(const KMime::Message::Ptr &message, const QMap<QByteArray, QString> &custom)
bool isValid() const
KCODECS_EXPORT QByteArray extractEmailAddress(const QByteArray &address)
bool isEmpty() const override
QTextBlock end() const const
QString number(int n, int base)
void addAction(Action::Type type, const QVariant &value)
void setIsOnline(bool online)
QByteArray mimeType() const
QStringList split(const QString &sep, QString::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
int count(const T &value) const const
QIcon fromTheme(const QString &name)
KCALUTILS_EXPORT QString mimeType()
void reserve(int size)
void setMimeType(const QByteArray &mimeType)
T & first()
QTextBlock next() const const
bool hasPayload() const
QByteArray mediaType() const
QString stripOffPrefixes(const QString &subject)
Removes the forward and reply marks (e.g.
Definition: stringutil.cpp:783
QStringList types(Mode mode=Writing)
void reserve(int alloc)
KGuiItem cancel()
qint64 Id
AgentInstance instance(const QString &identifier) const
static const MessageStatus statusForwarded()
SentActionAttribute & sentActionAttribute()
QString i18n(const char *text, const TYPE &arg...)
void setBody(const QByteArray &body)
SkipEmptyParts
bool isEmpty() const const
QTextCodec * codecForName(const QByteArray &name)
Q_SCRIPTABLE CaptureState status()
Headers::ContentDisposition * contentDisposition(bool create=true)
Headers::ContentTransferEncoding * contentTransferEncoding(bool create=true)
bool isEmpty() const const
QByteArray head() const
void setEncoding(contentEncoding e)
QByteArray subType() const
ButtonCode warningTwoActions(QWidget *parent, const QString &text, const QString &title, const KGuiItem &primaryAction, const KGuiItem &secondaryAction, const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
MarkAsForwarded
QString join(const QString &separator) const const
CaseInsensitiveOption
AgentType type(const QString &identifier) const
void setDisposition(contentDisposition disp)
QByteArray charset() const
QTextBlock begin() const const
bool isEmpty() const const
bool isOnline() const
QString fromLatin1(const char *str, int size)
QString name(StandardShortcut id)
static const MessageStatus statusReplied()
virtual void from7BitString(const char *s, size_t len)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
static AgentManager * self()
bool canEncode(QChar ch) const const
Headers::ContentType * contentType(bool create=true)
bool isValid() const
QString message
const QList< QKeySequence > & end()
QString clean(const QString &s)
Headers::ContentDescription * contentDescription(bool create=true)
KCODECS_EXPORT QString normalizeAddressesAndEncodeIdn(const QString &str)
QVector< Content * > contents() const
QChar fromLatin1(char c)
T payload() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Mar 24 2023 04:08:32 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Mar 24 2023 04:08:32 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.