Changeset 1764
- Timestamp:
- 02/19/07 17:47:07 (22 months ago)
- Location:
- plugins/kdepim/src
- Files:
-
- 4 modified
-
kaddrbook.cpp (modified) (10 diffs)
-
kaddrbook.h (modified) (1 diff)
-
kdepim_impl.cpp (modified) (6 diffs)
-
osyncbase.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
plugins/kdepim/src/kaddrbook.cpp
r1760 r1764 31 31 #include <qdeepcopy.h> 32 32 33 KContactDataSource::KContactDataSource(OSync Member *member, OSyncHashTable *hashtable) : hashtable(hashtable), member(member)33 KContactDataSource::KContactDataSource(OSyncHashTable *hashtable) : hashtable(hashtable) 34 34 { 35 35 connected = false; … … 55 55 } 56 56 57 bool KContactDataSource::connect(OSync Context *ctx)58 { 59 osync_trace(TRACE_ENTRY, "%s(%p )", __func__, ctx);57 bool KContactDataSource::connect(OSyncPluginInfo *info, OSyncContext *ctx) 58 { 59 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, ctx); 60 60 61 61 DCOPClient *dcopc = KApplication::kApplication()->dcopClient(); … … 79 79 addressbookptr = KABC::StdAddressBook::self(); 80 80 81 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 82 81 83 //Detection mechanismn if this is the first sync 82 if (!osync_anchor_compare(member, "contact", "true")) { 84 QString anchorpath = QString("%1/anchor.db").arg(osync_plugin_info_get_configdir(info)); 85 if (!osync_anchor_compare(anchorpath, "contact", "true")) { 83 86 osync_trace(TRACE_INTERNAL, "Setting slow-sync contact"); 84 osync_ member_set_slow_sync(member, "contact", TRUE);87 osync_objtype_sink_set_slowsync(sink, TRUE); 85 88 } 86 89 … … 90 93 } 91 94 92 bool KContactDataSource::disconnect(OSync Context *ctx)93 { 94 osync_trace(TRACE_ENTRY, "%s(%p )", __func__, ctx);95 bool KContactDataSource::disconnect(OSyncPluginInfo *info, OSyncContext *ctx) 96 { 97 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, ctx); 95 98 96 99 KABC::Ticket *ticket = addressbookptr->requestSaveTicket(); … … 113 116 114 117 115 bool KContactDataSource::contact_get_changeinfo(OSyncContext *ctx) 116 { 117 osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx); 118 119 if (osync_member_get_slow_sync(member, "contact")) { 118 bool KContactDataSource::contact_get_changeinfo(OSyncPluginInfo *info, OSyncContext *ctx) 119 { 120 osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, ctx); 121 122 OSyncError *error = NULL; 123 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 124 125 if (osync_objtype_sink_get_slowsync(sink)) { 120 126 osync_trace(TRACE_INTERNAL, "Got slow-sync"); 121 osync_hashtable_ set_slow_sync(hashtable, "contact");127 osync_hashtable_reset(hashtable); 122 128 } 123 129 … … 129 135 } 130 136 137 OSyncFormatEnv *formatenv = osync_plugin_info_get_format_env(info); 138 OSyncObjFormat *objformat = osync_format_env_find_objformat(formatenv, "vcard30"); 139 131 140 KABC::VCardConverter converter; 132 141 for (KABC::AddressBook::Iterator it=addressbookptr->begin(); it!=addressbookptr->end(); it++ ) { 133 142 QString uid = it->uid(); 134 143 135 OSyncChange *chg = osync_change_new(); 136 137 osync_change_set_member(chg, member); 138 osync_change_set_uid(chg, uid.local8Bit()); 144 OSyncChange *change = osync_change_new(&error); 145 146 osync_change_set_uid(change, uid.local8Bit()); 139 147 140 148 QString hash = calc_hash(*it); … … 148 156 osync_trace(TRACE_SENSITIVE,"\n%s", data); 149 157 150 osync_change_set_data(chg, data, strlen(data) + 1, TRUE); 151 152 // object type and format 153 osync_change_set_objtype_string(chg, "contact"); 154 osync_change_set_objformat_string(chg, "vcard30"); 158 OSyncData *odata = osync_data_new(data, strlen(data), objformat, &error); 159 if (!odata) { 160 osync_change_unref(change); 161 osync_context_report_osyncwarning(ctx, error); 162 osync_error_unref(&error); 163 continue; 164 } 165 166 osync_data_set_objtype(odata, osync_objtype_sink_get_name(sink)); 167 168 //Now you can set the data for the object 169 osync_change_set_data(change, odata); 170 osync_data_unref(odata); 155 171 156 172 // Use the hash table to check if the object 157 173 // needs to be reported 158 osync_change_set_hash(chg, hash.data()); 159 if (osync_hashtable_detect_change(hashtable, chg)) { 160 osync_context_report_change(ctx, chg); 161 osync_hashtable_update_hash(hashtable, chg); 162 } 163 } 164 165 // Use the hashtable to report deletions 166 osync_hashtable_report_deleted(hashtable, ctx, "contact"); 174 osync_change_set_hash(change, hash.data()); 175 OSyncChangeType changetype = osync_hashtable_get_changetype(hashtable, uid.local8Bit(), hash.data()); 176 if (OSYNC_CHANGE_TYPE_UNMODIFIED != changetype) { 177 osync_context_report_change(ctx, change); 178 osync_hashtable_update_hash(hashtable, changetype, uid, hash.data()); 179 } 180 } 181 182 int i; 183 char **uids = osync_hashtable_get_deleted(hashtable); 184 for (i=0; uids[i]; i++) { 185 OSyncChange *change = osync_change_new(&error); 186 if (!change) { 187 g_free(uids[i]); 188 osync_context_report_osyncwarning(ctx, error); 189 osync_error_unref(&error); 190 continue; 191 } 192 193 osync_change_set_uid(change, uids[i]); 194 osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_DELETED); 195 196 OSyncData *odata = osync_data_new(NULL, 0, objformat, &error); 197 if (!odata) { 198 g_free(uids[i]); 199 osync_change_unref(change); 200 osync_context_report_osyncwarning(ctx, error); 201 osync_error_unref(&error); 202 continue; 203 } 204 205 osync_data_set_objtype(odata, osync_objtype_sink_get_name(sink)); 206 osync_change_set_data(change, odata); 207 osync_data_unref(odata); 208 209 osync_context_report_change(ctx, change); 210 211 osync_hashtable_update_hash(hashtable, osync_change_get_changetype(change), osync_change_get_uid(change), NULL); 212 213 osync_change_unref(change); 214 g_free(uids[i]); 215 } 216 g_free(uids); 167 217 168 218 osync_trace(TRACE_EXIT, "%s", __func__); … … 183 233 184 234 // convert VCARD string from obj->comp into an Addresse object. 185 char *data = osync_change_get_data(chg); 186 size_t data_size = osync_change_get_datasize(chg); 235 OSyncData *odata = osync_change_get_data(chg); 236 237 char *data; 238 size_t data_size; 239 240 osync_data_get_data(odata, &data, &data_size); 241 187 242 QString uid = osync_change_get_uid(chg); 188 243 … … 248 303 } 249 304 250 bool KContactDataSource::vcard_access(OSync Context *ctx, OSyncChange *chg)305 bool KContactDataSource::vcard_access(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) 251 306 { 252 307 if (!__vcard_access(ctx, chg)) … … 257 312 } 258 313 259 bool KContactDataSource::vcard_commit_change(OSync Context *ctx, OSyncChange *chg)314 bool KContactDataSource::vcard_commit_change(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) 260 315 { 261 316 if ( !__vcard_access(ctx, chg) ) 262 317 return false; 263 318 264 osync_hashtable_update_hash(hashtable, chg);265 319 osync_context_report_success(ctx); 266 320 return true; -
plugins/kdepim/src/kaddrbook.h
r1620 r1764 34 34 private: 35 35 KABC::AddressBook* addressbookptr; 36 37 36 OSyncHashTable *hashtable; 38 OSyncMember *member;39 37 40 38 bool __vcard_access(OSyncContext *ctx, OSyncChange *chg); 41 39 40 42 41 public: 43 KContactDataSource(OSync Member *member, OSyncHashTable *hashtable);42 KContactDataSource(OSyncHashTable *hashtable); 44 43 45 44 QString calc_hash(KABC::Addressee &e); 46 bool connect(OSync Context *ctx);47 bool disconnect(OSync Context *ctx);48 bool contact_get_changeinfo(OSync Context *ctx);49 bool vcard_access(OSync Context *ctx, OSyncChange *chg);50 bool vcard_commit_change(OSync Context *ctx, OSyncChange *chg);45 bool connect(OSyncPluginInfo *info, OSyncContext *ctx); 46 bool disconnect(OSyncPluginInfo *info, OSyncContext *ctx); 47 bool contact_get_changeinfo(OSyncPluginInfo *info, OSyncContext *ctx); 48 bool vcard_access(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg); 49 bool vcard_commit_change(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg); 51 50 bool connected; 52 51 }; -
plugins/kdepim/src/kdepim_impl.cpp
r1763 r1764 93 93 mHashtable = osync_hashtable_new(tablepath, osync_objtype_sink_get_name(sink), error); 94 94 95 mKaddrbook = new KContactDataSource(m Member, mHashtable);95 mKaddrbook = new KContactDataSource(mHashtable); 96 96 97 97 osync_trace(TRACE_EXIT, "%s", __func__); … … 110 110 } 111 111 112 virtual void connect(OSyncPluginInfo * /*info*/, OSyncContext *ctx)112 virtual void connect(OSyncPluginInfo *info, OSyncContext *ctx) 113 113 { 114 114 osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx); … … 117 117 118 118 if (mKaddrbook && \ 119 !mKaddrbook->connect( ctx)) {119 !mKaddrbook->connect(info, ctx)) { 120 120 osync_trace(TRACE_EXIT_ERROR, "%s: Unable to open addressbook", __func__); 121 121 return; … … 126 126 } 127 127 128 virtual void disconnect(OSyncPluginInfo * /*info*/, OSyncContext *ctx)128 virtual void disconnect(OSyncPluginInfo *info, OSyncContext *ctx) 129 129 { 130 if (mKaddrbook && mKaddrbook->connected && !mKaddrbook->disconnect( ctx))130 if (mKaddrbook && mKaddrbook->connected && !mKaddrbook->disconnect(info, ctx)) 131 131 return; 132 132 … … 145 145 } 146 146 147 virtual void get_changeinfo(OSyncPluginInfo * /*info*/, OSyncContext *ctx)147 virtual void get_changeinfo(OSyncPluginInfo *info, OSyncContext *ctx) 148 148 { 149 if (mKaddrbook && mKaddrbook->connected && !mKaddrbook->contact_get_changeinfo( ctx))149 if (mKaddrbook && mKaddrbook->connected && !mKaddrbook->contact_get_changeinfo(info, ctx)) 150 150 return; 151 151 osync_context_report_success(ctx); 152 152 } 153 153 154 virtual bool vcard_access(OSyncPluginInfo * /*info*/, OSyncContext *ctx, OSyncChange *chg)154 virtual bool vcard_access(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) 155 155 { 156 156 if (mKaddrbook) 157 return mKaddrbook->vcard_access( ctx, chg);157 return mKaddrbook->vcard_access(info, ctx, chg); 158 158 else { 159 159 osync_context_report_error(ctx, OSYNC_ERROR_NOT_SUPPORTED, "No addressbook loaded"); … … 163 163 } 164 164 165 virtual bool vcard_commit_change(OSyncPluginInfo * /*info*/, OSyncContext *ctx, OSyncChange *chg)165 virtual bool vcard_commit_change(OSyncPluginInfo *info, OSyncContext *ctx, OSyncChange *chg) 166 166 { 167 167 if (mKaddrbook) 168 return mKaddrbook->vcard_commit_change( ctx, chg);168 return mKaddrbook->vcard_commit_change(info, ctx, chg); 169 169 else { 170 170 osync_context_report_error(ctx, OSYNC_ERROR_NOT_SUPPORTED, "No addressbook loaded"); -
plugins/kdepim/src/osyncbase.h
r1763 r1764 9 9 #include <opensync/opensync-data.h> 10 10 #include <opensync/opensync-helper.h> 11 #include <opensync/opensync-format.h> 11 12 } 12 13
