From 49824a0bb7ca2d35b5a3f074ecd86ffd6a1f177a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 30 Mar 2017 15:57:44 +0200 Subject: Outbox mail status --- framework/domain/outboxmodel.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/outboxmodel.cpp b/framework/domain/outboxmodel.cpp index 7cfdc71a..237648b1 100644 --- a/framework/domain/outboxmodel.cpp +++ b/framework/domain/outboxmodel.cpp @@ -39,7 +39,7 @@ OutboxModel::OutboxModel(QObject *parent) using namespace Sink::ApplicationDomain; auto query = Sink::StandardQueries::outboxMails(); - query.setFlags(Sink::Query::LiveQuery); + query.setFlags(Sink::Query::LiveQuery | Sink::Query::UpdateStatus); query.request(); query.request(); query.request(); @@ -48,6 +48,7 @@ OutboxModel::OutboxModel(QObject *parent) connect(this, &QAbstractItemModel::rowsRemoved, this, &OutboxModel::countChanged); mNotifier->registerHandler([this] (const Sink::Notification &n) { + //TODO aggregate status from multiple resources if (n.type == Sink::Notification::Status) { switch (n.code) { case Sink::ApplicationDomain::Status::ErrorStatus: @@ -95,8 +96,16 @@ QVariant OutboxModel::data(const QModelIndex &idx, int role) const return mail->getSubject(); case Date: return mail->getDate(); - case Status: + case Status: { + const auto status = srcIdx.data(Sink::Store::StatusRole).toInt(); + if (status == Sink::ApplicationDomain::SyncStatus::SyncInProgress) { + return InProgressStatus; + } + if (status == Sink::ApplicationDomain::SyncStatus::SyncError) { + return ErrorStatus; + } return PendingStatus; + } case Id: return mail->identifier(); case DomainObject: -- cgit v1.2.3