54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include "selectionmanager.h"
|
|
#include "classicmocknote.h"
|
|
#include "mockelement.h"
|
|
#include "graphics/classicselection.h"
|
|
#include <algorithm>
|
|
|
|
SelectionManager::SelectionManager() :
|
|
_multiselection_enabled(false)
|
|
{}
|
|
|
|
void SelectionManager::discard()
|
|
{
|
|
for (const auto& note : _selected_notes)
|
|
for (auto& element : note->getElements())
|
|
element.selected = false;
|
|
|
|
_selected_notes.clear();
|
|
}
|
|
|
|
void SelectionManager::fetch(ClassicMockNote * const note)
|
|
{
|
|
bool already_there = std::any_of(_selected_notes.begin(), _selected_notes.end(),
|
|
[¬e](const auto& selected_note)
|
|
{
|
|
return note == selected_note;
|
|
});
|
|
|
|
if (!already_there)
|
|
_selected_notes.emplace_back(note);
|
|
}
|
|
|
|
void SelectionManager::remove(ClassicMockNote * const note)
|
|
{
|
|
for (std::size_t i = 0; i < _selected_notes.size(); ++i)
|
|
{
|
|
if (note == _selected_notes.at(i))
|
|
{
|
|
_selected_notes[i] = std::move(_selected_notes.back());
|
|
_selected_notes.pop_back();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void SelectionManager::enableMultiselection(bool enable)
|
|
{
|
|
_multiselection_enabled = enable;
|
|
}
|
|
|
|
bool SelectionManager::isMultiselectionEnabled() const
|
|
{
|
|
return _multiselection_enabled;
|
|
}
|