MailTransport

outboxactions.cpp
1 /*
2  SPDX-FileCopyrightText: 2009 Constantin Berzan <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "outboxactions_p.h"
8 
9 #include "kmailtransportakonadi/dispatchmodeattribute.h"
10 #include "kmailtransportakonadi/errorattribute.h"
11 #include "mailtransportakonadi_debug.h"
12 
13 #include <Akonadi/ItemModifyJob>
14 #include <Akonadi/MessageFlags>
15 
16 using namespace Akonadi;
17 using namespace MailTransport;
18 
19 SendQueuedAction::SendQueuedAction() = default;
20 
21 SendQueuedAction::~SendQueuedAction() = default;
22 
23 ItemFetchScope SendQueuedAction::fetchScope() const
24 {
25  ItemFetchScope scope;
26  scope.fetchFullPayload(false);
29  scope.setCacheOnly(true);
30  return scope;
31 }
32 
33 bool SendQueuedAction::itemAccepted(const Item &item) const
34 {
35  if (!item.hasAttribute<DispatchModeAttribute>()) {
36  qCWarning(MAILTRANSPORTAKONADI_LOG) << "Item doesn't have DispatchModeAttribute.";
37  return false;
38  }
39 
40  return item.attribute<DispatchModeAttribute>()->dispatchMode() == DispatchModeAttribute::Manual;
41 }
42 
43 Job *SendQueuedAction::itemAction(const Item &item, FilterActionJob *parent) const
44 {
45  Item cp = item;
46  cp.addAttribute(new DispatchModeAttribute); // defaults to Automatic
47  if (cp.hasAttribute<ErrorAttribute>()) {
50  }
51  return new ItemModifyJob(cp, parent);
52 }
53 
54 ClearErrorAction::ClearErrorAction() = default;
55 
56 ClearErrorAction::~ClearErrorAction() = default;
57 
58 ItemFetchScope ClearErrorAction::fetchScope() const
59 {
60  ItemFetchScope scope;
61  scope.fetchFullPayload(false);
63  scope.setCacheOnly(true);
64  return scope;
65 }
66 
67 bool ClearErrorAction::itemAccepted(const Item &item) const
68 {
69  return item.hasAttribute<ErrorAttribute>();
70 }
71 
72 Job *ClearErrorAction::itemAction(const Item &item, FilterActionJob *parent) const
73 {
74  Item cp = item;
78  return new ItemModifyJob(cp, parent);
79 }
80 
81 DispatchManualTransportAction::DispatchManualTransportAction(int transportId)
82  : mTransportId(transportId)
83 {
84 }
85 
86 DispatchManualTransportAction::~DispatchManualTransportAction() = default;
87 
88 ItemFetchScope DispatchManualTransportAction::fetchScope() const
89 {
90  ItemFetchScope scope;
91  scope.fetchFullPayload(false);
94  scope.setCacheOnly(true);
95  return scope;
96 }
97 
98 bool DispatchManualTransportAction::itemAccepted(const Item &item) const
99 {
100  if (!item.hasAttribute<DispatchModeAttribute>()) {
101  qCWarning(MAILTRANSPORTAKONADI_LOG) << "Item doesn't have DispatchModeAttribute.";
102  return false;
103  }
104 
105  if (!item.hasAttribute<TransportAttribute>()) {
106  qCWarning(MAILTRANSPORTAKONADI_LOG) << "Item doesn't have TransportAttribute.";
107  return false;
108  }
109 
110  return item.attribute<DispatchModeAttribute>()->dispatchMode() == DispatchModeAttribute::Manual;
111 }
112 
113 Job *DispatchManualTransportAction::itemAction(const Item &item, FilterActionJob *parent) const
114 {
115  Item cp = item;
116  cp.attribute<TransportAttribute>()->setTransportId(mTransportId);
118  cp.addAttribute(new DispatchModeAttribute); // defaults to Automatic
120  return new ItemModifyJob(cp, parent);
121 }
const T * attribute() const
const AKONADI_MIME_EXPORT char Queued[]
void fetchAttribute(bool fetch=true)
void setCacheOnly(bool cacheOnly)
void fetchFullPayload(bool fetch=true)
bool hasAttribute() const
const AKONADI_MIME_EXPORT char HasError[]
Attribute determining how and when a message from the outbox should be dispatched.
@ Manual
specified by setSendAfter()
void removeAttribute()
Attribute determining which transport to use for sending a message.
void addAttribute(Attribute *attribute)
An Attribute to mark messages that failed to be sent.
void clearFlag(const QByteArray &name)
void setFlag(const QByteArray &name)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Thu Mar 23 2023 04:19:12 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.