You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
3.4 KiB
166 lines
3.4 KiB
/****************************************************************************** |
|
* |
|
* SPDX-FileCopyrightText: 2010 Leo Franchi <lfranchi@kde.org> |
|
* SPDX-FileCopyrightText: 2010 KDAB |
|
* |
|
* SPDX-License-Identifier: LGPL-2.0-or-later |
|
* |
|
*****************************************************************************/ |
|
|
|
#include "mdnstateattribute.h" |
|
|
|
#include <Akonadi/AttributeFactory> |
|
|
|
#include <QByteArray> |
|
|
|
using namespace MailCommon; |
|
|
|
/** |
|
* @internal |
|
*/ |
|
class Q_DECL_HIDDEN MDNStateAttribute::Private |
|
{ |
|
public: |
|
MDNSentState dataToState(const QByteArray &data) |
|
{ |
|
MDNSentState state = MDNStateUnknown; |
|
|
|
switch (data.at(0)) { |
|
case 'N': |
|
state = MDNNone; |
|
break; |
|
case 'I': |
|
state = MDNIgnore; |
|
break; |
|
case 'R': |
|
state = MDNDisplayed; |
|
break; |
|
case 'D': |
|
state = MDNDeleted; |
|
break; |
|
case 'F': |
|
state = MDNDispatched; |
|
break; |
|
case 'P': |
|
state = MDNProcessed; |
|
break; |
|
case 'X': |
|
state = MDNDenied; |
|
break; |
|
case 'E': |
|
state = MDNFailed; |
|
break; |
|
case 'U': |
|
default: |
|
state = MDNStateUnknown; |
|
break; |
|
} |
|
|
|
return state; |
|
} |
|
|
|
QByteArray stateToData(MDNSentState state) |
|
{ |
|
QByteArray data = "U"; // Unknown |
|
|
|
switch (state) { |
|
case MDNNone: |
|
data = "N"; |
|
break; |
|
case MDNIgnore: |
|
data = "I"; |
|
break; |
|
case MDNDisplayed: |
|
data = "R"; |
|
break; |
|
case MDNDeleted: |
|
data = "D"; |
|
break; |
|
case MDNDispatched: |
|
data = "F"; |
|
break; |
|
case MDNProcessed: |
|
data = "P"; |
|
break; |
|
case MDNDenied: |
|
data = "X"; |
|
break; |
|
case MDNFailed: |
|
data = "E"; |
|
break; |
|
case MDNStateUnknown: |
|
data = "U"; |
|
break; |
|
} |
|
|
|
return data; |
|
} |
|
|
|
QByteArray mSentState; |
|
}; |
|
|
|
MDNStateAttribute::MDNStateAttribute(MDNSentState state) |
|
: d(new Private) |
|
{ |
|
d->mSentState = d->stateToData(state); |
|
} |
|
|
|
MDNStateAttribute::MDNStateAttribute(const QByteArray &stateData) |
|
: d(new Private) |
|
{ |
|
d->mSentState = stateData; |
|
} |
|
|
|
MDNStateAttribute::~MDNStateAttribute() |
|
{ |
|
delete d; |
|
} |
|
|
|
MDNStateAttribute *MDNStateAttribute::clone() const |
|
{ |
|
return new MDNStateAttribute(d->mSentState); |
|
} |
|
|
|
QByteArray MDNStateAttribute::type() const |
|
{ |
|
static const QByteArray sType("MDNStateAttribute"); |
|
return sType; |
|
} |
|
|
|
QByteArray MDNStateAttribute::serialized() const |
|
{ |
|
return d->mSentState; |
|
} |
|
|
|
void MDNStateAttribute::deserialize(const QByteArray &data) |
|
{ |
|
d->mSentState = data; |
|
} |
|
|
|
void MDNStateAttribute::setMDNState(MDNSentState state) |
|
{ |
|
d->mSentState = d->stateToData(state); |
|
} |
|
|
|
MDNStateAttribute::MDNSentState MDNStateAttribute::mdnState() const |
|
{ |
|
return d->dataToState(d->mSentState); |
|
} |
|
|
|
bool MDNStateAttribute::operator==(const MDNStateAttribute &other) const |
|
{ |
|
return mdnState() == other.mdnState(); |
|
} |
|
|
|
// Register the attribute when the library is loaded. |
|
namespace |
|
{ |
|
bool dummyMDNStateAttribute() |
|
{ |
|
using namespace MailCommon; |
|
Akonadi::AttributeFactory::registerAttribute<MDNStateAttribute>(); |
|
return true; |
|
} |
|
|
|
const bool registeredMDNStateAttribute = dummyMDNStateAttribute(); |
|
}
|
|
|