mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 10:22:50 +00:00
113 lines
2.8 KiB
C++
113 lines
2.8 KiB
C++
/*
|
|
Copyright 2009 Constantin Berzan <exit3219@gmail.com>
|
|
|
|
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 "dispatchmodeattribute.h"
|
|
|
|
#include <KDebug>
|
|
|
|
#include "akonadi/attributefactory.h"
|
|
|
|
using namespace Akonadi;
|
|
using namespace MailTransport;
|
|
|
|
class DispatchModeAttribute::Private
|
|
{
|
|
public:
|
|
DispatchMode mMode;
|
|
QDateTime mDueDate;
|
|
};
|
|
|
|
DispatchModeAttribute::DispatchModeAttribute( DispatchMode mode )
|
|
: d( new Private )
|
|
{
|
|
d->mMode = mode;
|
|
}
|
|
|
|
DispatchModeAttribute::~DispatchModeAttribute()
|
|
{
|
|
delete d;
|
|
}
|
|
|
|
DispatchModeAttribute *DispatchModeAttribute::clone() const
|
|
{
|
|
DispatchModeAttribute * const cloned = new DispatchModeAttribute( d->mMode );
|
|
cloned->setSendAfter( d->mDueDate );
|
|
return cloned;
|
|
}
|
|
|
|
QByteArray DispatchModeAttribute::type() const
|
|
{
|
|
static const QByteArray sType( "DispatchModeAttribute" );
|
|
return sType;
|
|
}
|
|
|
|
QByteArray DispatchModeAttribute::serialized() const
|
|
{
|
|
switch ( d->mMode ) {
|
|
case Automatic:
|
|
{
|
|
if ( !d->mDueDate.isValid() ) {
|
|
return "immediately";
|
|
} else {
|
|
return "after" + d->mDueDate.toString( Qt::ISODate ).toLatin1();
|
|
}
|
|
}
|
|
case Manual: return "never";
|
|
}
|
|
|
|
Q_ASSERT( false );
|
|
return QByteArray(); // suppress control-reaches-end-of-non-void-function warning
|
|
}
|
|
|
|
void DispatchModeAttribute::deserialize( const QByteArray &data )
|
|
{
|
|
d->mDueDate = QDateTime();
|
|
if ( data == "immediately" ) {
|
|
d->mMode = Automatic;
|
|
} else if ( data == "never" ) {
|
|
d->mMode = Manual;
|
|
} else if ( data.startsWith( QByteArray( "after" ) ) ) {
|
|
d->mMode = Automatic;
|
|
d->mDueDate = QDateTime::fromString( QString::fromLatin1( data.mid( 5 ) ), Qt::ISODate );
|
|
// NOTE: 5 is the strlen of "after".
|
|
} else {
|
|
kWarning() << "Failed to deserialize data [" << data << "]";
|
|
}
|
|
}
|
|
|
|
DispatchModeAttribute::DispatchMode DispatchModeAttribute::dispatchMode() const
|
|
{
|
|
return d->mMode;
|
|
}
|
|
|
|
void DispatchModeAttribute::setDispatchMode( DispatchMode mode )
|
|
{
|
|
d->mMode = mode;
|
|
}
|
|
|
|
QDateTime DispatchModeAttribute::sendAfter() const
|
|
{
|
|
return d->mDueDate;
|
|
}
|
|
|
|
void DispatchModeAttribute::setSendAfter( const QDateTime &date )
|
|
{
|
|
d->mDueDate = date;
|
|
}
|
|
|