00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "vcardformat.h"
00022 #include "vcardconverter.h"
00023 #include "address.h"
00024 #include "addressee.h"
00025
00026 #include <QtCore/QFile>
00027
00028 using namespace KABC;
00029
00030 VCardFormat::VCardFormat()
00031 : d( 0 )
00032 {
00033 }
00034
00035 VCardFormat::~VCardFormat()
00036 {
00037
00038 }
00039
00040 bool VCardFormat::load( Addressee &addressee, QFile *file )
00041 {
00042 QByteArray data;
00043
00044 data = file->readAll();
00045
00046 VCardConverter converter;
00047 Addressee::List l = converter.parseVCards( data );
00048
00049 if ( ! l.first().isEmpty() ) {
00050 addressee = l.first();
00051 return true;
00052 }
00053
00054 return false;
00055 }
00056
00057 bool VCardFormat::loadAll( AddressBook *, Resource *resource, QFile *file )
00058 {
00059 QByteArray data;
00060
00061 data = file->readAll();
00062
00063 VCardConverter converter;
00064
00065 Addressee::List l = converter.parseVCards( data );
00066
00067 Addressee::List::iterator itr;
00068 for ( itr = l.begin(); itr != l.end(); ++itr ) {
00069 Addressee addressee = *itr;
00070 addressee.setResource( resource );
00071 addressee.setChanged( false );
00072 resource->insertAddressee( addressee );
00073 }
00074
00075 return true;
00076 }
00077
00078 void VCardFormat::save( const Addressee &addressee, QFile *file )
00079 {
00080 VCardConverter converter;
00081 Addressee::List vcardlist;
00082
00083 vcardlist.append( addressee );
00084
00085 QByteArray data = converter.createVCards( vcardlist );
00086
00087 file->write( data );
00088 }
00089
00090 void VCardFormat::saveAll( AddressBook *, Resource *resource, QFile *file )
00091 {
00092 VCardConverter converter;
00093 Addressee::List vcardlist;
00094
00095 Resource::Iterator it;
00096 for ( it = resource->begin(); it != resource->end(); ++it ) {
00097 (*it).setChanged( false );
00098 vcardlist.append( *it );
00099 }
00100
00101 QByteArray data = converter.createVCards( vcardlist );
00102
00103 file->write( data );
00104 }
00105
00106 bool VCardFormat::checkFormat( QFile *file ) const
00107 {
00108 QByteArray line = file->readLine();
00109 line = line.trimmed();
00110 if ( line == "BEGIN:VCARD" ) {
00111 return true;
00112 } else {
00113 return false;
00114 }
00115 }