21 #include "binaryformat.h"
22 #include "kabc/addressbook.h"
23 #include "kabc/addressee.h"
24 #include "kabc/picture.h"
25 #include "kabc/sound.h"
29 #include <kstandarddirs.h>
31 #include <QtCore/QDataStream>
34 #define BINARY_FORMAT_VERSION 1
40 KDE_EXPORT
Format *format()
49 QDataStream stream( file );
51 if ( !checkHeader( stream ) ) {
55 loadAddressee( addressee, stream );
64 QDataStream stream( file );
66 if ( !checkHeader( stream ) ) {
74 for ( uint i = 0; i < entries; ++i ) {
76 loadAddressee( addressee, stream );
77 addressee.setResource( resource );
78 addressee.setChanged(
false );
89 QDataStream stream( file );
91 writeHeader( stream );
95 saveAddressee( addressee, stream );
103 QDataStream stream( file );
105 writeHeader( stream );
109 Resource::Iterator it;
110 for ( it = resource->
begin(); it != resource->
end(); ++it ) {
111 saveAddressee( ( *it ), stream );
113 ( *it ).setChanged(
false );
117 stream.device()->seek( 2 *
sizeof( quint32 ) );
125 QDataStream stream( file );
127 return checkHeader( stream );
130 bool BinaryFormat::checkHeader( QDataStream &stream )
const
132 quint32 magic, version;
134 stream >> magic >> version;
136 QFile *file =
dynamic_cast<QFile*
>( stream.device() );
139 kError() << i18n(
"Not a file?" );
143 if ( magic != 0x2e93e ) {
144 kError() << i18n(
"File '%1' is not binary format.", file->fileName() );
148 if ( version != BINARY_FORMAT_VERSION ) {
149 kError() << i18n(
"File '%1' is the wrong version.", file->fileName() );
156 void BinaryFormat::writeHeader( QDataStream &stream )
158 quint32 magic, version;
161 version = BINARY_FORMAT_VERSION;
163 stream << magic << version;
166 void BinaryFormat::loadAddressee( Addressee &addressee, QDataStream &stream )
195 void BinaryFormat::saveAddressee(
const Addressee &addressee, QDataStream &stream )