kde-playground/kdepimlibs/kabc/vcardconverter.cpp
2015-04-14 21:49:29 +00:00

132 lines
3.3 KiB
C++

/*
This file is part of libkabc.
Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
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 "vcardconverter.h"
#include "vcardtool.h"
using namespace KABC;
VCardConverter::VCardConverter()
: d( 0 )
{
}
VCardConverter::~VCardConverter()
{
}
QByteArray VCardConverter::exportVCard( const Addressee &addr, Version version ) const
{
Addressee::List list;
list.append( addr );
return exportVCards( list, version );
}
QByteArray VCardConverter::exportVCards( const Addressee::List &list, Version version ) const
{
VCardTool tool;
QByteArray returnValue;
switch (version) {
case v2_1:
returnValue = tool.exportVCards( list, VCard::v2_1 );
break;
case v3_0:
returnValue = tool.exportVCards( list, VCard::v3_0 );
break;
case v4_0:
returnValue = tool.exportVCards( list, VCard::v4_0 );
break;
}
return returnValue;
}
QByteArray VCardConverter::createVCard( const Addressee &addr, Version version ) const
{
Addressee::List list;
list.append( addr );
return createVCards( list, version );
}
QByteArray VCardConverter::createVCards( Addressee::List list, Version version ) const
{
VCardTool tool;
QByteArray returnValue;
switch (version) {
case v2_1:
returnValue = tool.createVCards( list, VCard::v2_1 );
break;
case v3_0:
returnValue = tool.createVCards( list, VCard::v3_0 );
break;
case v4_0:
returnValue = tool.createVCards( list, VCard::v4_0 );
break;
}
return returnValue;
}
Addressee VCardConverter::parseVCard( const QByteArray &vcard ) const
{
Addressee::List list = parseVCards( vcard );
return list.isEmpty() ? Addressee() : list[ 0 ];
}
Addressee::List VCardConverter::parseVCards( const QByteArray &vcard ) const
{
VCardTool tool;
return tool.parseVCards( vcard );
}
/* Helper functions */
QString KABC::dateToVCardString( const QDateTime &dateTime )
{
return dateTime.toString( QLatin1String( "yyyyMMddThhmmssZ" ) );
}
QString KABC::dateToVCardString( const QDate &date )
{
return date.toString( QLatin1String( "yyyyMMdd" ) );
}
QDateTime KABC::VCardStringToDate( const QString &dateString )
{
QDate date;
QTime time;
QString d( dateString );
d = d.remove( QLatin1Char( '-' ) ).remove( QLatin1Char( ':' ) );
if ( d.length() >= 8 ) {
date = QDate( d.mid( 0, 4 ).toUInt(), d.mid( 4, 2 ).toUInt(), d.mid( 6, 2 ).toUInt() );
}
if ( d.length() > 9 && d[ 8 ].toUpper() == QLatin1Char( 'T' ) ) {
time = QTime( d.mid( 9, 2 ).toUInt(), d.mid( 11, 2 ).toUInt(), d.mid( 13, 2 ).toUInt() );
}
return QDateTime( date, time );
}