bool CalDavClient::loadStorageChanges(mKCal::ExtendedStorage::Ptr storage, const KDateTime &fromDate, KCalCore::Incidence::List *inserted, KCalCore::Incidence::List *modified, KCalCore::Incidence::List *deleted, QString *error) { FUNCTION_CALL_TRACE; QString accountId = QString::number(mSettings.accountId()); QString notebookUid; mKCal::Notebook::List notebookList = storage->notebooks(); Q_FOREACH (mKCal::Notebook::Ptr notebook, notebookList) { if (notebook->account() == accountId) { notebookUid = notebook->uid(); break; } } if (notebookUid.isEmpty()) { *error = "Cannot find mkCal::Notebook for account: " + accountId; return false; } if (!storage->insertedIncidences(inserted, fromDate, notebookUid)) { *error = "mKCal::ExtendedStorage::insertedIncidences() failed"; return false; } if (!storage->modifiedIncidences(modified, fromDate, notebookUid)) { *error = "mKCal::ExtendedStorage::modifiedIncidences() failed"; return false; } if (!storage->deletedIncidences(deleted, fromDate, notebookUid)) { *error = "mKCal::ExtendedStorage::deletedIncidences() failed"; return false; } // If an event has changed to/from the caldav notebook and back since the last sync, // it will be present in both the inserted and deleted lists. In this case, nothing // has actually changed, so remove it from both lists. int removed = removeCommonIncidences(inserted, deleted); if (removed > 0) { LOG_DEBUG("Removed" << removed << "UIDs found in both inserted and removed lists"); } return true; }
bool NotebookSyncAgent::loadLocalChanges(const QDateTime &fromDate, KCalCore::Incidence::List *inserted, KCalCore::Incidence::List *modified, KCalCore::Incidence::List *deleted) { FUNCTION_CALL_TRACE; if (!mStorage) { LOG_CRITICAL("mStorage not set"); return false; } QString notebookUid = mNotebook->uid(); KDateTime kFromDate(fromDate); if (!mStorage->insertedIncidences(inserted, kFromDate, notebookUid)) { LOG_CRITICAL("mKCal::ExtendedStorage::insertedIncidences() failed"); return false; } if (!mStorage->modifiedIncidences(modified, kFromDate, notebookUid)) { LOG_CRITICAL("mKCal::ExtendedStorage::modifiedIncidences() failed"); return false; } if (!mStorage->deletedIncidences(deleted, kFromDate, notebookUid)) { LOG_CRITICAL("mKCal::ExtendedStorage::deletedIncidences() failed"); return false; } LOG_DEBUG("Initially found changes for" << mServerPath << "since" << fromDate << ":" << "inserted = " << inserted->count() << "modified = " << modified->count() << "deleted = " << deleted->count()); // Any server changes synced to the local db during the last sync will be picked up as // "local changes", so we must discard these changes so that they are not sent back to // the server on this next sync. if (!discardRemoteChanges(inserted, modified, deleted)) { return false; } // If an event has changed to/from the caldav notebook and back since the last sync, // it will be present in both the inserted and deleted lists. In this case, nothing // has actually changed, so remove it from both lists. int removed = removeCommonIncidences(inserted, deleted); if (removed > 0) { LOG_DEBUG("Removed" << removed << "UIDs found in both inserted and removed lists"); } return true; }