00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef INCL_EVOLUTIONCONTACTSOURCE
00020 #define INCL_EVOLUTIONCONTACTSOURCE
00021
00022 #include <config.h>
00023 #include "EvolutionSyncSource.h"
00024 #include "EvolutionSmartPtr.h"
00025
00026 #ifdef ENABLE_EBOOK
00027
00028 #include <set>
00029
00030
00031
00032
00033 class EvolutionContactSource : public EvolutionSyncSource
00034 {
00035 public:
00036 EvolutionContactSource(const EvolutionSyncSourceParams ¶ms,
00037 EVCardFormat vcardFormat = EVC_FORMAT_VCARD_30);
00038 EvolutionContactSource(const EvolutionContactSource &other);
00039 virtual ~EvolutionContactSource() { close(); }
00040
00041
00042 string preparseVCard(SyncItem& item);
00043
00044
00045
00046
00047 virtual Databases getDatabases();
00048 virtual void open();
00049 virtual void close();
00050 virtual void exportData(ostream &out);
00051 virtual string fileSuffix() const { return "vcf"; }
00052 virtual const char *getMimeType() const;
00053 virtual const char *getMimeVersion() const;
00054 virtual const char *getSupportedTypes() const { return "text/vcard:3.0,text/x-vcard:2.1"; }
00055
00056 virtual SyncItem *createItem(const string &uid);
00057
00058 protected:
00059
00060
00061
00062 virtual void beginSyncThrow(bool needAll,
00063 bool needPartial,
00064 bool deleteLocal);
00065 virtual void endSyncThrow();
00066 virtual void setItemStatusThrow(const char *key, int status);
00067 virtual int addItemThrow(SyncItem& item);
00068 virtual int updateItemThrow(SyncItem& item);
00069 virtual int deleteItemThrow(SyncItem& item);
00070 virtual void logItem(const string &uid, const string &info, bool debug = false);
00071 virtual void logItem(const SyncItem &item, const string &info, bool debug = false);
00072
00073 private:
00074
00075 eptr<EBook, GObject> m_addressbook;
00076
00077
00078 const EVCardFormat m_vcardFormat;
00079
00080
00081
00082
00083
00084
00085 static const class extensions : public set<string> {
00086 public:
00087 extensions() : prefix("X-SYNCEVOLUTION-") {
00088 this->insert("FBURL");
00089 this->insert("CALURI");
00090 }
00091
00092 const string prefix;
00093 } m_vcardExtensions;
00094
00095
00096
00097
00098
00099 static const class unique : public set<string> {
00100 public:
00101 unique () {
00102 insert("X-AIM");
00103 insert("X-GROUPWISE");
00104 insert("X-ICQ");
00105 insert("X-YAHOO");
00106 insert("X-EVOLUTION-ANNIVERSARY");
00107 insert("X-EVOLUTION-ASSISTANT");
00108 insert("X-EVOLUTION-BLOG-URL");
00109 insert("X-EVOLUTION-FILE-AS");
00110 insert("X-EVOLUTION-MANAGER");
00111 insert("X-EVOLUTION-SPOUSE");
00112 insert("X-EVOLUTION-VIDEO-URL");
00113 insert("X-MOZILLA-HTML");
00114 insert("FBURL");
00115 insert("CALURI");
00116 }
00117 } m_uniqueProperties;
00118 };
00119
00120 #endif // ENABLE_EBOOK
00121
00122 #endif // INCL_EVOLUTIONCONTACTSOURCE