Auto status change to "Under Review"
@@ -50,6 +50,7 public: | |||||
50 | // void trashEvent(std::shared_ptr<DBEvent> event); |
|
50 | // void trashEvent(std::shared_ptr<DBEvent> event); | |
51 | // void restore(QUuid eventId); |
|
51 | // void restore(QUuid eventId); | |
52 | void saveEvent(std::shared_ptr<DBEvent> event); |
|
52 | void saveEvent(std::shared_ptr<DBEvent> event); | |
|
53 | bool eventHasChanges(std::shared_ptr<DBEvent> event) const; | |||
53 |
|
54 | |||
54 | // Catalogue |
|
55 | // Catalogue | |
55 | // bool createCatalogue(const QString &name, QVector<QUuid> eventList); |
|
56 | // bool createCatalogue(const QString &name, QVector<QUuid> eventList); |
@@ -37,6 +37,10 public: | |||||
37 | QStringList m_RepositoryList; |
|
37 | QStringList m_RepositoryList; | |
38 | CatalogueController *m_Q; |
|
38 | CatalogueController *m_Q; | |
39 |
|
39 | |||
|
40 | QSet<QString> m_EventKeysWithChanges; | |||
|
41 | ||||
|
42 | QString eventUniqueKey(const std::shared_ptr<DBEvent> &event) const; | |||
|
43 | ||||
40 | void copyDBtoDB(const QString &dbFrom, const QString &dbTo); |
|
44 | void copyDBtoDB(const QString &dbFrom, const QString &dbTo); | |
41 | QString toWorkRepository(QString repository); |
|
45 | QString toWorkRepository(QString repository); | |
42 | QString toSyncRepository(QString repository); |
|
46 | QString toSyncRepository(QString repository); | |
@@ -137,6 +141,9 void CatalogueController::updateEvent(std::shared_ptr<DBEvent> event) | |||||
137 | { |
|
141 | { | |
138 | event->setRepository(impl->toWorkRepository(event->getRepository())); |
|
142 | event->setRepository(impl->toWorkRepository(event->getRepository())); | |
139 |
|
143 | |||
|
144 | auto uniqueId = impl->eventUniqueKey(event); | |||
|
145 | impl->m_EventKeysWithChanges.insert(uniqueId); | |||
|
146 | ||||
140 | impl->m_CatalogueDao.updateEvent(*event); |
|
147 | impl->m_CatalogueDao.updateEvent(*event); | |
141 | } |
|
148 | } | |
142 |
|
149 | |||
@@ -180,6 +187,12 void CatalogueController::addEvent(std::shared_ptr<DBEvent> event) | |||||
180 | void CatalogueController::saveEvent(std::shared_ptr<DBEvent> event) |
|
187 | void CatalogueController::saveEvent(std::shared_ptr<DBEvent> event) | |
181 | { |
|
188 | { | |
182 | impl->saveEvent(event, true); |
|
189 | impl->saveEvent(event, true); | |
|
190 | impl->m_EventKeysWithChanges.remove(impl->eventUniqueKey(event)); | |||
|
191 | } | |||
|
192 | ||||
|
193 | bool CatalogueController::eventHasChanges(std::shared_ptr<DBEvent> event) const | |||
|
194 | { | |||
|
195 | return impl->m_EventKeysWithChanges.contains(impl->eventUniqueKey(event)); | |||
183 | } |
|
196 | } | |
184 |
|
197 | |||
185 | std::list<std::shared_ptr<DBCatalogue> > |
|
198 | std::list<std::shared_ptr<DBCatalogue> > | |
@@ -233,6 +246,7 void CatalogueController::saveAll() | |||||
233 | } |
|
246 | } | |
234 |
|
247 | |||
235 | impl->savAllDB(); |
|
248 | impl->savAllDB(); | |
|
249 | impl->m_EventKeysWithChanges.clear(); | |||
236 | } |
|
250 | } | |
237 |
|
251 | |||
238 | QByteArray |
|
252 | QByteArray | |
@@ -306,6 +320,12 void CatalogueController::initialize() | |||||
306 | qCDebug(LOG_CatalogueController()) << tr("CatalogueController init END"); |
|
320 | qCDebug(LOG_CatalogueController()) << tr("CatalogueController init END"); | |
307 | } |
|
321 | } | |
308 |
|
322 | |||
|
323 | QString CatalogueController::CatalogueControllerPrivate::eventUniqueKey( | |||
|
324 | const std::shared_ptr<DBEvent> &event) const | |||
|
325 | { | |||
|
326 | return event->getUniqId().toString().append(event->getRepository()); | |||
|
327 | } | |||
|
328 | ||||
309 | void CatalogueController::CatalogueControllerPrivate::copyDBtoDB(const QString &dbFrom, |
|
329 | void CatalogueController::CatalogueControllerPrivate::copyDBtoDB(const QString &dbFrom, | |
310 | const QString &dbTo) |
|
330 | const QString &dbTo) | |
311 | { |
|
331 | { |
@@ -24,7 +24,6 const auto EVENT_PRODUCT_ITEM_TYPE = 2; | |||||
24 | struct CatalogueEventsModel::CatalogueEventsModelPrivate { |
|
24 | struct CatalogueEventsModel::CatalogueEventsModelPrivate { | |
25 | QVector<std::shared_ptr<DBEvent> > m_Events; |
|
25 | QVector<std::shared_ptr<DBEvent> > m_Events; | |
26 | std::unordered_map<DBEvent *, QVector<std::shared_ptr<DBEventProduct> > > m_EventProducts; |
|
26 | std::unordered_map<DBEvent *, QVector<std::shared_ptr<DBEventProduct> > > m_EventProducts; | |
27 | std::unordered_set<std::shared_ptr<DBEvent> > m_EventsWithChanges; |
|
|||
28 |
|
27 | |||
29 | QStringList columnNames() |
|
28 | QStringList columnNames() | |
30 | { |
|
29 | { | |
@@ -35,8 +34,8 struct CatalogueEventsModel::CatalogueEventsModelPrivate { | |||||
35 | QVariant sortData(int col, const std::shared_ptr<DBEvent> &event) const |
|
34 | QVariant sortData(int col, const std::shared_ptr<DBEvent> &event) const | |
36 | { |
|
35 | { | |
37 | if (col == (int)CatalogueEventsModel::Column::Validation) { |
|
36 | if (col == (int)CatalogueEventsModel::Column::Validation) { | |
38 | return m_EventsWithChanges.find(event) != m_EventsWithChanges.cend() ? true |
|
37 | auto hasChanges = sqpApp->catalogueController().eventHasChanges(event); | |
39 | : QVariant(); |
|
38 | return hasChanges ? true : QVariant(); | |
40 | } |
|
39 | } | |
41 |
|
40 | |||
42 | return eventData(col, event); |
|
41 | return eventData(col, event); | |
@@ -136,7 +135,6 void CatalogueEventsModel::setEvents(const QVector<std::shared_ptr<DBEvent> > &e | |||||
136 |
|
135 | |||
137 | impl->m_Events = events; |
|
136 | impl->m_Events = events; | |
138 | impl->m_EventProducts.clear(); |
|
137 | impl->m_EventProducts.clear(); | |
139 | impl->m_EventsWithChanges.clear(); |
|
|||
140 | for (auto event : events) { |
|
138 | for (auto event : events) { | |
141 | impl->parseEventProduct(event); |
|
139 | impl->parseEventProduct(event); | |
142 | } |
|
140 | } | |
@@ -195,7 +193,6 void CatalogueEventsModel::removeEvent(const std::shared_ptr<DBEvent> &event) | |||||
195 | beginRemoveRows(QModelIndex(), index, index); |
|
193 | beginRemoveRows(QModelIndex(), index, index); | |
196 | impl->m_Events.removeAt(index); |
|
194 | impl->m_Events.removeAt(index); | |
197 | impl->m_EventProducts.erase(event.get()); |
|
195 | impl->m_EventProducts.erase(event.get()); | |
198 | impl->m_EventsWithChanges.erase(event); |
|
|||
199 | endRemoveRows(); |
|
196 | endRemoveRows(); | |
200 | } |
|
197 | } | |
201 | } |
|
198 | } | |
@@ -232,22 +229,6 QModelIndex CatalogueEventsModel::indexOf(const std::shared_ptr<DBEvent> &event) | |||||
232 | return QModelIndex(); |
|
229 | return QModelIndex(); | |
233 | } |
|
230 | } | |
234 |
|
231 | |||
235 | void CatalogueEventsModel::setEventHasChanges(const std::shared_ptr<DBEvent> &event, |
|
|||
236 | bool hasChanges) |
|
|||
237 | { |
|
|||
238 | if (hasChanges) { |
|
|||
239 | impl->m_EventsWithChanges.insert(event); |
|
|||
240 | } |
|
|||
241 | else { |
|
|||
242 | impl->m_EventsWithChanges.erase(event); |
|
|||
243 | } |
|
|||
244 | } |
|
|||
245 |
|
||||
246 | bool CatalogueEventsModel::eventsHasChanges(const std::shared_ptr<DBEvent> &event) const |
|
|||
247 | { |
|
|||
248 | return impl->m_EventsWithChanges.find(event) != impl->m_EventsWithChanges.cend(); |
|
|||
249 | } |
|
|||
250 |
|
||||
251 | QModelIndex CatalogueEventsModel::index(int row, int column, const QModelIndex &parent) const |
|
232 | QModelIndex CatalogueEventsModel::index(int row, int column, const QModelIndex &parent) const | |
252 | { |
|
233 | { | |
253 | if (!hasIndex(row, column, parent)) { |
|
234 | if (!hasIndex(row, column, parent)) { |
@@ -29,11 +29,18 struct CatalogueEventsWidget::CatalogueEventsWidgetPrivate { | |||||
29 |
|
29 | |||
30 | VisualizationWidget *m_VisualizationWidget = nullptr; |
|
30 | VisualizationWidget *m_VisualizationWidget = nullptr; | |
31 |
|
31 | |||
32 |
void setEvents(const QVector<std::shared_ptr<DBEvent> > &events, |
|
32 | void setEvents(const QVector<std::shared_ptr<DBEvent> > &events, CatalogueEventsWidget *widget) | |
33 | { |
|
33 | { | |
34 | treeView->setSortingEnabled(false); |
|
34 | widget->ui->treeView->setSortingEnabled(false); | |
35 | m_Model->setEvents(events); |
|
35 | m_Model->setEvents(events); | |
36 | treeView->setSortingEnabled(true); |
|
36 | widget->ui->treeView->setSortingEnabled(true); | |
|
37 | ||||
|
38 | for (auto event : events) { | |||
|
39 | if (sqpApp->catalogueController().eventHasChanges(event)) { | |||
|
40 | auto index = m_Model->indexOf(event); | |||
|
41 | widget->setEventChanges(event, true); | |||
|
42 | } | |||
|
43 | } | |||
37 | } |
|
44 | } | |
38 |
|
45 | |||
39 | void addEvent(const std::shared_ptr<DBEvent> &event, QTreeView *treeView) |
|
46 | void addEvent(const std::shared_ptr<DBEvent> &event, QTreeView *treeView) | |
@@ -290,7 +297,7 CatalogueEventsWidget::CatalogueEventsWidget(QWidget *parent) | |||||
290 | connect(impl->m_Model, &CatalogueEventsModel::modelSorted, [this]() { |
|
297 | connect(impl->m_Model, &CatalogueEventsModel::modelSorted, [this]() { | |
291 | auto allEvents = impl->m_Model->events(); |
|
298 | auto allEvents = impl->m_Model->events(); | |
292 | for (auto event : allEvents) { |
|
299 | for (auto event : allEvents) { | |
293 |
setEventChanges(event, |
|
300 | setEventChanges(event, sqpApp->catalogueController().eventHasChanges(event)); | |
294 | } |
|
301 | } | |
295 | }); |
|
302 | }); | |
296 |
|
303 | |||
@@ -332,8 +339,10 void CatalogueEventsWidget::setEventChanges(const std::shared_ptr<DBEvent> &even | |||||
332 | [this, event]() { setEventChanges(event, false); }); |
|
339 | [this, event]() { setEventChanges(event, false); }); | |
333 | ui->treeView->setIndexWidget(validationIndex, widget); |
|
340 | ui->treeView->setIndexWidget(validationIndex, widget); | |
334 | } |
|
341 | } | |
335 |
|
342 | } | ||
336 | impl->m_Model->setEventHasChanges(event, hasChanges); |
|
343 | else { | |
|
344 | // Note: the widget is destroyed | |||
|
345 | ui->treeView->setIndexWidget(validationIndex, nullptr); | |||
337 | } |
|
346 | } | |
338 | } |
|
347 | } | |
339 | else { |
|
348 | else { | |
@@ -375,7 +384,7 void CatalogueEventsWidget::populateWithCatalogues( | |||||
375 | } |
|
384 | } | |
376 | } |
|
385 | } | |
377 |
|
386 | |||
378 |
impl->setEvents(events, |
|
387 | impl->setEvents(events, this); | |
379 | } |
|
388 | } | |
380 |
|
389 | |||
381 | void CatalogueEventsWidget::populateWithAllEvents() |
|
390 | void CatalogueEventsWidget::populateWithAllEvents() | |
@@ -389,13 +398,13 void CatalogueEventsWidget::populateWithAllEvents() | |||||
389 | events << event; |
|
398 | events << event; | |
390 | } |
|
399 | } | |
391 |
|
400 | |||
392 |
impl->setEvents(events, |
|
401 | impl->setEvents(events, this); | |
393 | } |
|
402 | } | |
394 |
|
403 | |||
395 | void CatalogueEventsWidget::clear() |
|
404 | void CatalogueEventsWidget::clear() | |
396 | { |
|
405 | { | |
397 | impl->m_DisplayedCatalogues.clear(); |
|
406 | impl->m_DisplayedCatalogues.clear(); | |
398 |
impl->setEvents({}, |
|
407 | impl->setEvents({}, this); | |
399 | } |
|
408 | } | |
400 |
|
409 | |||
401 | void CatalogueEventsWidget::refresh() |
|
410 | void CatalogueEventsWidget::refresh() |
General Comments 3
Status change > Approved
You need to be logged in to leave comments.
Login now