mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: make dive site merging undoable
This one was rather trivial, as there is no actual merging done. Quite simply, a number of dive sites are removed and their dive added to a different dive site. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7c63956ee4
commit
59239cec02
7 changed files with 66 additions and 36 deletions
|
@ -62,24 +62,16 @@ void LocationInformationWidget::mergeSelectedDiveSites()
|
|||
{
|
||||
if (!diveSite)
|
||||
return;
|
||||
if (QMessageBox::warning(MainWindow::instance(), tr("Merging dive sites"),
|
||||
tr("You are about to merge dive sites, you can't undo that action \n Are you sure you want to continue?"),
|
||||
QMessageBox::Ok, QMessageBox::Cancel) != QMessageBox::Ok)
|
||||
return;
|
||||
|
||||
const QModelIndexList selection = ui.diveSiteListView->selectionModel()->selectedIndexes();
|
||||
// std::vector guarantees contiguous storage and can therefore be passed to C-code
|
||||
std::vector<struct dive_site *> selected_dive_sites;
|
||||
QVector<dive_site *> selected_dive_sites;
|
||||
selected_dive_sites.reserve(selection.count());
|
||||
for (const QModelIndex &idx: selection) {
|
||||
dive_site *ds = idx.data(LocationInformationModel::DIVESITE_ROLE).value<dive_site *>();
|
||||
if (ds)
|
||||
selected_dive_sites.push_back(ds);
|
||||
}
|
||||
merge_dive_sites(diveSite, selected_dive_sites.data(), (int)selected_dive_sites.size());
|
||||
LocationInformationModel::instance()->update();
|
||||
QSortFilterProxyModel *m = (QSortFilterProxyModel *)ui.diveSiteListView->model();
|
||||
m->invalidate();
|
||||
Command::mergeDiveSites(diveSite, selected_dive_sites);
|
||||
}
|
||||
|
||||
void LocationInformationWidget::updateLabels()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue