From 5c08ecda71cdbfd8951f9aab657cd2e2697ad0b3 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 3 Jun 2016 15:50:06 +0200 Subject: Track modified properties to detect necessary replay changes --- examples/imapresource/imapresource.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'examples/imapresource') diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 02713b3..b8129cd 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -328,7 +328,7 @@ public: } - KAsync::Job replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId) + KAsync::Job replay(const ApplicationDomain::Mail &mail, Sink::Operation operation, const QByteArray &oldRemoteId, const QList &changedProperties) Q_DECL_OVERRIDE { auto imap = QSharedPointer::create(mServer, mPort); auto login = imap->login(mUser, mPassword); @@ -372,10 +372,8 @@ public: auto uid = ridParts.takeLast().toLongLong(); //FIXME don't hardcode the separator auto mailbox = ridParts.join('.'); - Trace() << "Modifying a mail: " << oldRemoteId << " in the mailbox: " << mailbox; - //TODO if the message changed, remove old message and create a new one, - //otherwise only change flags - + Trace() << "Modifying a mail: " << oldRemoteId << " in the mailbox: " << mailbox << changedProperties; + QByteArrayList flags; if (!mail.getUnread()) { flags << Imap::Flags::Seen; @@ -384,7 +382,7 @@ public: flags << Imap::Flags::Flagged; } - bool messageChanged = false; + const bool messageChanged = changedProperties.contains(Sink::ApplicationDomain::Mail::MimeMessage::name); if (messageChanged) { QByteArray content = KMime::LFtoCRLF(mail.getMimeMessage()); QDateTime internalDate = mail.getDate(); @@ -431,7 +429,7 @@ public: return separator + folder.getName(); } - KAsync::Job replay(const ApplicationDomain::Folder &folder, Sink::Operation operation, const QByteArray &oldRemoteId) + KAsync::Job replay(const ApplicationDomain::Folder &folder, Sink::Operation operation, const QByteArray &oldRemoteId, const QList &changedProperties) Q_DECL_OVERRIDE { auto imap = QSharedPointer::create(mServer, mPort); auto login = imap->login(mUser, mPassword); -- cgit v1.2.3