X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/blobdiff_plain/4d221497aee7d8eec52f10479bb4d480c4f14bb8..8af1fb492850ef96d7ba413bdd7be6a5fa63419d:/src/sql/schedulexmlparser.cpp diff --git a/src/sql/schedulexmlparser.cpp b/src/sql/schedulexmlparser.cpp index 64e266d..f758727 100644 --- a/src/sql/schedulexmlparser.cpp +++ b/src/sql/schedulexmlparser.cpp @@ -93,6 +93,10 @@ void ScheduleXmlParser::parseDataImpl(const QByteArray &aData, const QString& ur // we need to get count of all events in order to emit 'progressStatus' signal int totalEventsCount = scheduleElement.elementsByTagName("event").count(); + // collect all event IDs so that we can identify previously existing events that were deleted + // when refreshing the conference + QSet importedEventIds; + // parsing day elements int currentEvent = 0; // hold global idx of processed event QDomNodeList dayList = scheduleElement.elementsByTagName("day"); @@ -128,6 +132,7 @@ void ScheduleXmlParser::parseDataImpl(const QByteArray &aData, const QString& ur // process event's nodes QHash event; event["id"] = eventElement.attribute("id"); + importedEventIds.insert(event["id"]); event["conference_id"] = QString::number(conferenceId, 10); QTime event_start = QTime::fromString(eventElement.firstChildElement("start").text(), sqlEngine->TIME_FORMAT); event["start"] = event_start.toString(sqlEngine->TIME_FORMAT); // time eg. 10:00 @@ -190,6 +195,9 @@ void ScheduleXmlParser::parseDataImpl(const QByteArray &aData, const QString& ur } // parsing room elements } // parsing day elements + // Delete events that exist from a previous import but have not been imported again + sqlEngine->deleteStaleEvents(conferenceId, importedEventIds); + // Re-write conference as utc_offset was not known previously if (!conference.value("utc_offset").isEmpty()) { sqlEngine->addConferenceToDB(conference, conferenceId, conferenceId != 0);