mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: update notes field if changed by undo commands
To keep the UI in a consistent state, update the notes field if it is changed by an undo command. To that purpose, add a new signal to diveListNotifier with a list of dives and a field-id as payload. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
9e603cbe2b
commit
45ef879546
5 changed files with 67 additions and 12 deletions
|
@ -82,6 +82,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
|
|||
ui.weights->setModel(weightModel);
|
||||
closeMessage();
|
||||
|
||||
connect(&diveListNotifier, &DiveListNotifier::divesEdited, this, &MainTab::divesEdited);
|
||||
connect(ui.editDiveSiteButton, &QToolButton::clicked, MainWindow::instance(), &MainWindow::startDiveSiteEdit);
|
||||
connect(ui.location, &DiveLocationLineEdit::entered, MapWidget::instance(), &MapWidget::centerOnIndex);
|
||||
connect(ui.location, &DiveLocationLineEdit::currentChanged, MapWidget::instance(), &MapWidget::centerOnIndex);
|
||||
|
@ -260,7 +261,7 @@ void MainTab::closeMessage()
|
|||
{
|
||||
hideMessage();
|
||||
ui.diveNotesMessage->setCloseButtonVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MainTab::displayMessage(QString str)
|
||||
{
|
||||
|
@ -332,6 +333,23 @@ void MainTab::enableEdition(EditMode newEditMode)
|
|||
}
|
||||
}
|
||||
|
||||
// This function gets called if a field gets updated by an undo command.
|
||||
// Refresh the corresponding UI field.
|
||||
void MainTab::divesEdited(const QVector<dive *> &, DiveField field)
|
||||
{
|
||||
// If there is no current dive, no point in updating anything
|
||||
if (!current_dive)
|
||||
return;
|
||||
|
||||
switch(field) {
|
||||
case DiveField::NOTES:
|
||||
updateNotes(current_dive);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MainTab::clearEquipment()
|
||||
{
|
||||
cylindersModel->clear();
|
||||
|
@ -370,6 +388,17 @@ void MainTab::updateDepthDuration()
|
|||
ui.depth->setText(get_depth_string(displayed_dive.maxdepth, true));
|
||||
}
|
||||
|
||||
void MainTab::updateNotes(const struct dive *d)
|
||||
{
|
||||
QString tmp(d->notes);
|
||||
if (tmp.indexOf("<div") != -1) {
|
||||
tmp.replace(QString("\n"), QString("<br>"));
|
||||
ui.notes->setHtml(tmp);
|
||||
} else {
|
||||
ui.notes->setPlainText(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
void MainTab::updateDiveInfo(bool clear)
|
||||
{
|
||||
ui.location->refreshDiveSiteCache();
|
||||
|
@ -388,15 +417,8 @@ void MainTab::updateDiveInfo(bool clear)
|
|||
}
|
||||
|
||||
ui.notes->setText(QString());
|
||||
if (!clear) {
|
||||
QString tmp(displayed_dive.notes);
|
||||
if (tmp.indexOf("<div") != -1) {
|
||||
tmp.replace(QString("\n"), QString("<br>"));
|
||||
ui.notes->setHtml(tmp);
|
||||
} else {
|
||||
ui.notes->setPlainText(tmp);
|
||||
}
|
||||
}
|
||||
if (!clear)
|
||||
updateNotes(&displayed_dive);
|
||||
UPDATE_TEXT(displayed_dive, suit);
|
||||
UPDATE_TEXT(displayed_dive, divemaster);
|
||||
UPDATE_TEXT(displayed_dive, buddy);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue