MCPcopy Create free account
hub / github.com/comaps/comaps / NotifyChanges

Method NotifyChanges

libs/map/bookmark_manager.cpp:570–632  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

568}
569
570void BookmarkManager::NotifyChanges(bool saveChangesOnDisk)
571{
572 CHECK_THREAD_CHECKER(m_threadChecker, ());
573
574 m_changesTracker.AcceptDirtyItems();
575 if (!m_firstDrapeNotification && !m_changesTracker.HasChanges() && !m_bookmarksChangesTracker.HasChanges() &&
576 !m_drapeChangesTracker.HasChanges())
577 {
578 return;
579 }
580
581 if (m_changesTracker.HasBookmarksChanges())
582 NotifyBookmarksChanged();
583
584 if (m_changesTracker.HasCategoriesChanges())
585 NotifyCategoriesChanged();
586
587 m_bookmarksChangesTracker.AddChanges(m_changesTracker);
588 m_drapeChangesTracker.AddChanges(m_changesTracker);
589 m_changesTracker.ResetChanges();
590
591 if (!m_notificationsEnabled)
592 return;
593
594 if (m_bookmarksChangesTracker.HasBookmarksChanges())
595 {
596 kml::GroupIdCollection categoriesToSave;
597 for (auto groupId : m_bookmarksChangesTracker.GetUpdatedGroupIds())
598 if (IsBookmarkCategory(groupId) && GetBmCategory(groupId)->IsAutoSaveEnabled())
599 categoriesToSave.push_back(groupId);
600
601 // During the category reloading/updating the file saving should be skipped
602 // because of the file is already up to date.
603 if (saveChangesOnDisk)
604 SaveBookmarks(categoriesToSave);
605
606 SendBookmarksChanges(m_bookmarksChangesTracker);
607 }
608 m_bookmarksChangesTracker.ResetChanges();
609
610 if (!m_drapeChangesTracker.HasChanges())
611 return;
612
613 df::DrapeEngineLockGuard lock(m_drapeEngine);
614 if (lock)
615 {
616 auto engine = lock.Get();
617 for (auto groupId : m_drapeChangesTracker.GetUpdatedGroupIds())
618 {
619 auto const * group = GetGroup(groupId);
620 engine->ChangeVisibilityUserMarksGroup(groupId, group->IsVisible());
621 }
622
623 for (auto groupId : m_drapeChangesTracker.GetRemovedGroupIds())
624 engine->ClearUserMarksGroup(groupId);
625
626 engine->UpdateUserMarks(&m_drapeChangesTracker, m_firstDrapeNotification);
627 m_firstDrapeNotification = false;

Callers

nothing calls this directly

Calls 14

AcceptDirtyItemsMethod · 0.80
HasBookmarksChangesMethod · 0.80
HasCategoriesChangesMethod · 0.80
AddChangesMethod · 0.80
IsAutoSaveEnabledMethod · 0.80
ClearUserMarksGroupMethod · 0.80
UpdateUserMarksMethod · 0.80
HasChangesMethod · 0.45
ResetChangesMethod · 0.45
push_backMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected