File indexing completed on 2025-03-09 04:54:34
0001 /* 0002 SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "modifymessagedisplayformatjob.h" 0008 #include "messageviewer_debug.h" 0009 0010 #include <Akonadi/ItemModifyJob> 0011 #include <Akonadi/Session> 0012 0013 #include "viewer/messagedisplayformatattribute.h" 0014 0015 using namespace MessageViewer; 0016 ModifyMessageDisplayFormatJob::ModifyMessageDisplayFormatJob(Akonadi::Session *session, QObject *parent) 0017 : QObject(parent) 0018 , mSession(session) 0019 { 0020 } 0021 0022 ModifyMessageDisplayFormatJob::~ModifyMessageDisplayFormatJob() = default; 0023 0024 void ModifyMessageDisplayFormatJob::setRemoteContent(bool remote) 0025 { 0026 mRemoteContent = remote; 0027 } 0028 0029 void ModifyMessageDisplayFormatJob::setMessageFormat(Viewer::DisplayFormatMessage format) 0030 { 0031 mMessageFormat = format; 0032 } 0033 0034 void ModifyMessageDisplayFormatJob::setResetFormat(bool resetFormat) 0035 { 0036 mResetFormat = resetFormat; 0037 } 0038 0039 void ModifyMessageDisplayFormatJob::start() 0040 { 0041 if (mMessageItem.isValid()) { 0042 if (mResetFormat) { 0043 resetDisplayFormat(); 0044 } else { 0045 modifyDisplayFormat(); 0046 } 0047 } else { 0048 qCDebug(MESSAGEVIEWER_LOG) << " messageItem doesn't exist"; 0049 deleteLater(); 0050 } 0051 } 0052 0053 void ModifyMessageDisplayFormatJob::setMessageItem(const Akonadi::Item &messageItem) 0054 { 0055 mMessageItem = messageItem; 0056 } 0057 0058 void ModifyMessageDisplayFormatJob::resetDisplayFormat() 0059 { 0060 mMessageItem.removeAttribute<MessageViewer::MessageDisplayFormatAttribute>(); 0061 auto modify = new Akonadi::ItemModifyJob(mMessageItem, mSession); 0062 modify->setIgnorePayload(true); 0063 modify->disableRevisionCheck(); 0064 connect(modify, &KJob::result, this, &ModifyMessageDisplayFormatJob::slotModifyItemDone); 0065 } 0066 0067 void ModifyMessageDisplayFormatJob::modifyDisplayFormat() 0068 { 0069 auto attr = mMessageItem.attribute<MessageViewer::MessageDisplayFormatAttribute>(Akonadi::Item::AddIfMissing); 0070 attr->setRemoteContent(mRemoteContent); 0071 attr->setMessageFormat(mMessageFormat); 0072 auto modify = new Akonadi::ItemModifyJob(mMessageItem, mSession); 0073 modify->setIgnorePayload(true); 0074 modify->disableRevisionCheck(); 0075 connect(modify, &KJob::result, this, &ModifyMessageDisplayFormatJob::slotModifyItemDone); 0076 } 0077 0078 void ModifyMessageDisplayFormatJob::slotModifyItemDone(KJob *job) 0079 { 0080 if (job && job->error()) { 0081 qCWarning(MESSAGEVIEWER_LOG) << " Error trying to change attribute:" << job->errorText(); 0082 } 0083 deleteLater(); 0084 } 0085 0086 #include "moc_modifymessagedisplayformatjob.cpp"