00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "vcard21parser.h"
00022
#include "vcardformatimpl.h"
00023
#include "vcardtool.h"
00024
00025
#include "vcardconverter.h"
00026
00027
using namespace KABC;
00028
00029
struct VCardConverter::VCardConverterData
00030 {
00031
VCard21Parser vcard21parser;
00032
VCardFormatImpl vcard30parser;
00033 };
00034
00035
VCardConverter::VCardConverter()
00036 : d( new VCardConverterData )
00037 {
00038 }
00039
00040
VCardConverter::~VCardConverter()
00041 {
00042
delete d;
00043 d = 0;
00044 }
00045
00046
QString VCardConverter::createVCard(
const Addressee &addr, Version version )
00047 {
00048 Addressee::List list;
00049 list.append( addr );
00050
00051
return createVCards( list, version );
00052 }
00053
00054
QString VCardConverter::createVCards( Addressee::List list, Version version )
00055 {
00056 VCardTool tool;
00057
00058
return tool.createVCards( list, ( version == v3_0 ? VCard::v3_0 : VCard::v2_1 ) );
00059 }
00060
00061
Addressee VCardConverter::parseVCard(
const QString& vcard )
00062 {
00063 Addressee::List list =
parseVCards( vcard );
00064
00065
return list[ 0 ];
00066 }
00067
00068 Addressee::List
VCardConverter::parseVCards(
const QString& vcard )
00069 {
00070 VCardTool tool;
00071
00072
return tool.parseVCards( vcard );
00073 }
00074
00075
00076
00077
bool VCardConverter::vCardToAddressee(
const QString &str,
Addressee &addr, Version version )
00078 {
00079
if (
version == v2_1 ) {
00080 addr = d->vcard21parser.readFromString( str );
00081
return true;
00082 }
00083
00084
if (
version == v3_0 )
00085
return d->vcard30parser.readFromString( str, addr );
00086
00087
return false;
00088 }
00089
00090
bool VCardConverter::addresseeToVCard(
const Addressee &addr,
QString &str, Version version )
00091 {
00092
if (
version == v2_1 )
00093
return false;
00094
00095
if (
version == v3_0 )
00096
return d->vcard30parser.writeToString( addr, str );
00097
00098
return false;
00099 }
00100
00101
00102
00103
00104 QString KABC::dateToVCardString(
const QDateTime &dateTime )
00105 {
00106
return dateTime.toString(
"yyyyMMddThhmmssZ");
00107 }
00108
00109 QString KABC::dateToVCardString(
const QDate &date )
00110 {
00111
return date.toString(
"yyyyMMdd");
00112 }
00113
00114 QDateTime KABC::VCardStringToDate(
const QString &dateString )
00115 {
00116
QDate date;
00117
QTime time;
00118
QString d( dateString );
00119
00120 d = d.remove(
'-').remove(
':');
00121
00122
if (d.length()>=8)
00123 date =
QDate( d.mid(0,4).toUInt(), d.mid(4,2).toUInt(), d.mid(6,2).toUInt() );
00124
if (d.length()>9 && d[8].upper()==
'T')
00125 time =
QTime( d.mid(9,2).toUInt(), d.mid(11,2).toUInt(), d.mid(13,2).toUInt() );
00126
00127
return QDateTime( date, time );
00128 }
00129