Selaa lähdekoodia

Correct handling of 0/NULL

Make sure that 0 is handled correctly by the database. For example, the time 00:00 is valid and should be committed as such, but empty strings etc. should still be NULL in the database.
Felix 2 vuotta sitten
vanhempi
commit
9e55d7183e

+ 4 - 4
src/database/database.cpp

@@ -315,10 +315,10 @@ bool Database::update(const OPL::Row &updated_row)
     for (auto i = data.constBegin(); i != data.constEnd(); ++i) {
 //use QMetaType for binding null value in QT >= 6
 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
-        if (i.value() == QVariant(QString()) || i.value() == 0) {
+        if (i.value() == QVariant(QString())) {
             query.addBindValue(QVariant(QMetaType(QMetaType::Int)));
 #else
-        if (i.value() == QVariant(QString()) || i.value() == 0) {
+        if (i.value() == QVariant(QString())) {
             query.addBindValue(QVariant(QVariant::String));
 #endif
         } else {
@@ -366,10 +366,10 @@ bool Database::insert(const OPL::Row &new_row)
     for (i = data.constBegin(); i != data.constEnd(); ++i) {
 //use QMetaType for binding null value in QT >= 6
 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
-        if (i.value() == QVariant(QString()) || i.value() == 0) {
+        if (i.value() == QVariant(QString())) {
             query.addBindValue(QVariant(QMetaType(QMetaType::Int)));
 #else
-        if (i.value() == QVariant(QString()) || i.value() == 0) {
+        if (i.value() == QVariant(QString())) {
             query.addBindValue(QVariant(QVariant::String));
 #endif
         } else {

+ 1 - 0
src/gui/dialogues/newairportdialog.cpp

@@ -20,6 +20,7 @@ NewAirportDialog::NewAirportDialog(int row_id, QWidget *parent)
     : QDialog(parent), ui(new Ui::NewAirportDialog), rowId(row_id)
 {
     ui->setupUi(this);
+    this->setWindowTitle(tr("Edit Airport"));
     setValidators();
     loadTimeZones();
     loadAirportData(row_id);

+ 3 - 3
src/gui/dialogues/newflightdialog.cpp

@@ -420,7 +420,7 @@ OPL::RowData_T NewFlightDialog::prepareFlightEntryData()
         OPL::Db::FLIGHTS_TFI,
     };
 
-    // Determine function times, zero out all values except one
+    // Determine function times, zero out all values except one (use QString() iso 0 for correct handling of NULL in DB
     // Log Instructor Time as PIC time as well
     const int& function_index = ui->functionComboBox->currentIndex();
     switch (function_index) {
@@ -430,7 +430,7 @@ OPL::RowData_T NewFlightDialog::prepareFlightEntryData()
             if(i == 0 || i == 4)
                 new_data.insert(function_times[i], block_minutes);
             else
-                new_data.insert(function_times[i], 0);
+                new_data.insert(function_times[i], QString());
         }
         break;
     default:
@@ -438,7 +438,7 @@ OPL::RowData_T NewFlightDialog::prepareFlightEntryData()
             if(i == function_index)
                 new_data.insert(function_times[i], block_minutes);
             else
-                new_data.insert(function_times[i], 0);
+                new_data.insert(function_times[i], QString());
         }
         break;
     }

+ 4 - 4
src/gui/widgets/airportwidget.cpp

@@ -74,8 +74,8 @@ void AirportWidget::on_searchComboBox_currentIndexChanged(int index)
 
 void AirportWidget::on_newAirportPushButton_clicked()
 {
-    auto ap_dialog = NewAirportDialog(this);
-    if (ap_dialog.exec() == QDialog::Accepted) {
+    auto ap_dialog = new NewAirportDialog(this);
+    if (ap_dialog->exec() == QDialog::Accepted) {
         model->select();
         emit DB->dataBaseUpdated(OPL::DbTable::Airports);
     }
@@ -151,8 +151,8 @@ void AirportWidget::on_editAirportPushButton_clicked()
         return;
     }
 
-    auto apd = NewAirportDialog(selectedEntries.first(), this);
-    apd.exec();
+    auto apd = new NewAirportDialog(selectedEntries.first(), this);
+    apd->exec();
 }
 
 void AirportWidget::refresh()