summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/locationinformation.cpp18
-rw-r--r--qt-ui/locationinformation.h5
-rw-r--r--qt-ui/maintab.cpp5
3 files changed, 23 insertions, 5 deletions
diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp
index 50b3ccb1e..a63571a35 100644
--- a/qt-ui/locationinformation.cpp
+++ b/qt-ui/locationinformation.cpp
@@ -232,6 +232,8 @@ SimpleDiveSiteEditDialog::SimpleDiveSiteEditDialog(QWidget *parent) :
ui(new Ui::SimpleDiveSiteEditDialog()), changed_dive_site(false)
{
ui->setupUi(this);
+ ui->diveSiteDescription->installEventFilter(this);
+ ui->diveSiteNotes->installEventFilter(this);
}
SimpleDiveSiteEditDialog::~SimpleDiveSiteEditDialog()
@@ -239,6 +241,18 @@ SimpleDiveSiteEditDialog::~SimpleDiveSiteEditDialog()
delete ui;
}
+bool SimpleDiveSiteEditDialog::eventFilter(QObject *obj, QEvent *ev)
+{
+ if (ev->type() != QEvent::FocusOut)
+ return false;
+
+ if (obj == ui->diveSiteDescription) {
+ diveSiteDescription_editingFinished();
+ } else if (obj == ui->diveSiteNotes) {
+ diveSiteNotes_editingFinished();
+ }
+}
+
void SimpleDiveSiteEditDialog::showEvent(QShowEvent *ev)
{
const int heigth = 275;
@@ -292,7 +306,7 @@ void SimpleDiveSiteEditDialog::on_diveSiteCoordinates_editingFinished()
changed_dive_site = true;
}
-void SimpleDiveSiteEditDialog::on_diveSiteDescription_editingFinished()
+void SimpleDiveSiteEditDialog::diveSiteDescription_editingFinished()
{
if (ui->diveSiteDescription->toPlainText() == displayed_dive_site.description)
return;
@@ -301,7 +315,7 @@ void SimpleDiveSiteEditDialog::on_diveSiteDescription_editingFinished()
changed_dive_site = true;
}
-void SimpleDiveSiteEditDialog::on_diveSiteNotes_editingFinished()
+void SimpleDiveSiteEditDialog::diveSiteNotes_editingFinished()
{
if (ui->diveSiteNotes->toPlainText() == displayed_dive_site.notes)
return;
diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h
index d8b3c9d8a..42e4d5ace 100644
--- a/qt-ui/locationinformation.h
+++ b/qt-ui/locationinformation.h
@@ -52,11 +52,12 @@ public:
SimpleDiveSiteEditDialog(QWidget *parent);
virtual ~SimpleDiveSiteEditDialog();
bool changed_dive_site;
+ bool eventFilter(QObject *obj, QEvent *ev);
public slots:
void on_diveSiteName_editingFinished();
void on_diveSiteCoordinates_editingFinished();
- void on_diveSiteDescription_editingFinished();
- void on_diveSiteNotes_editingFinished();
+ void diveSiteDescription_editingFinished();
+ void diveSiteNotes_editingFinished();
protected:
void showEvent(QShowEvent *ev);
private:
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index b960ebb03..45c0eb8d4 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -805,7 +805,10 @@ void MainTab::acceptChanges()
addedId = added_dive->id;
if (displayed_dive_site.uuid)
copy_dive_site(&displayed_dive_site, get_dive_site_by_uuid(displayed_dive_site.uuid));
-
+ else if (ui.location->text().count()) {
+ uint32_t uuid = create_dive_site(qPrintable(ui.location->text()));
+ added_dive->dive_site_uuid = uuid;
+ }
// unselect everything as far as the UI is concerned and select the new
// dive - we'll have to undo/redo this later after we resort the dive_table
// but we need the dive selected for the middle part of this function - this