From f5185c4799fe0e9c31a218dfc8310515ac921c2b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 9 Mar 2016 15:20:31 +0100 Subject: Moved framework/mail to framework/domain --- framework/domain/actions/sinkactions.cpp | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 framework/domain/actions/sinkactions.cpp (limited to 'framework/domain/actions/sinkactions.cpp') diff --git a/framework/domain/actions/sinkactions.cpp b/framework/domain/actions/sinkactions.cpp new file mode 100644 index 00000000..a19ab149 --- /dev/null +++ b/framework/domain/actions/sinkactions.cpp @@ -0,0 +1,106 @@ +/* + Copyright (c) 2016 Christian Mollekopf + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#include +#include + +#include + +using namespace Kube; + +static ActionHandlerHelper markAsReadHandler("org.kde.kube.actions.mark-as-read", + [](Context *context) -> bool { + return context->property("mail").isValid(); + }, + [](Context *context) { + auto mail = context->property("mail").value(); + if (!mail) { + qWarning() << "Failed to get the mail mail: " << context->property("mail"); + return; + } + mail->setProperty("unread", false); + qDebug() << "Mark as read " << mail->identifier(); + Sink::Store::modify(*mail).exec(); + } +); + +static ActionHandlerHelper deleteHandler("org.kde.kube.actions.delete", + [](Context *context) -> bool { + return context->property("mail").isValid(); + }, + [](Context *context) { + auto mail = context->property("mail").value(); + if (!mail) { + qWarning() << "Failed to get the mail mail: " << context->property("mail"); + return; + } + mail->setProperty("unread", false); + qDebug() << "Remove " << mail->identifier(); + Sink::Store::remove(*mail).exec(); + } +); + +static ActionHandlerHelper synchronizeHandler("org.kde.kube.actions.synchronize", + [](Context *context) -> bool { + return context->property("folder").isValid(); + }, + [](Context *context) { + auto folder = context->property("folder").value(); + if (!folder) { + qWarning() << "Failed to get the folder: " << context->property("folder"); + return; + } + Sink::Store::synchronize(Sink::Query::ResourceFilter(folder->resourceInstanceIdentifier())).exec(); + } +); + +// static ActionHandlerHelper saveAsDraft("org.kde.kube.actions.save-as-draft", +// [](Context *context) -> bool { +// return context->property("mail").isValid(); +// }, +// [](Context *context) { +// Sink::Query query; +// query += Sink::Query::RequestedProperties(QByteArrayList() << "name") +// //FIXME do something like specialuse? +// query += Sink::Query::PropertyFilter("name", "Drafts"); +// // query += Sink::Query::PropertyContainsFilter("specialuser", "drafts"); +// query += Sink::Query::PropertyFilter("drafts", true); +// //TODO Use drafts folder of that specific account +// Sink::Store::fetchAll(query) +// .then>([](const QList folders) { +// if (folders.isEmpty()) { +// return KAsync::start([]() { +// //If message is already existing, modify, otherwise create +// }); +// } +// }); +// //TODO +// // * Find drafts folder +// // * Store KMime::Message on disk for use in blob property +// // * Check if message is already existing and either create or update +// // * +// // auto mail = context->property("mail").value(); +// // if (!mail) { +// // qWarning() << "Failed to get the mail mail: " << context->property("mail"); +// // return; +// // } +// // mail->setProperty("unread", false); +// // qDebug() << "Mark as read " << mail->identifier(); +// // Sink::Store::modify(*mail).exec(); +// } +// ); -- cgit v1.2.3