فهرست منبع

Dialogues created on the stack for display widgets

The logbook widget, pilotswidget and AircraftWidget used to create their children on the heap, now they do so on the stack.

The ui is now being disabled while an entry is being edited.
Felix Turowsky 2 سال پیش
والد
کامیت
15707697e5

+ 2 - 0
src/gui/dialogues/newflightdialog.cpp

@@ -311,6 +311,7 @@ bool NewFlightDialog::addNewTail(QLineEdit& parent_line_edit)
 
 
             // update Line Edit with newly added tail
             // update Line Edit with newly added tail
             parent_line_edit.setText(DBCache->getTailsMap().value(DB->getLastEntry(OPL::DbTable::Tails)));
             parent_line_edit.setText(DBCache->getTailsMap().value(DB->getLastEntry(OPL::DbTable::Tails)));
+            emit parent_line_edit.editingFinished();
             return true;
             return true;
         } else {
         } else {
             return false;
             return false;
@@ -345,6 +346,7 @@ bool NewFlightDialog::addNewPilot(QLineEdit& parent_line_edit)
 
 
             // update Line Edit with newly added pilot
             // update Line Edit with newly added pilot
             parent_line_edit.setText(DBCache->getPilotNamesMap().value(DB->getLastEntry(OPL::DbTable::Pilots)));
             parent_line_edit.setText(DBCache->getPilotNamesMap().value(DB->getLastEntry(OPL::DbTable::Pilots)));
+            emit parent_line_edit.editingFinished();
             return true;
             return true;
         } else {
         } else {
             return false;
             return false;

+ 0 - 2
src/gui/dialogues/newpilotdialog.cpp

@@ -31,8 +31,6 @@ NewPilotDialog::NewPilotDialog(QWidget *parent) :
     ui(new Ui::NewPilot)
     ui(new Ui::NewPilot)
 {
 {
     setup();
     setup();
-
-    //pilotEntry = APilotEntry();
     ui->lastnameLineEdit->setFocus();
     ui->lastnameLineEdit->setFocus();
 }
 }
 
 

+ 21 - 19
src/gui/widgets/aircraftwidget.cpp

@@ -99,19 +99,13 @@ void AircraftWidget::changeEvent(QEvent *event)
             ui->retranslateUi(this);
             ui->retranslateUi(this);
 }
 }
 
 
-void AircraftWidget::onNewTailDialog_editingFinished()
-{
-    refreshView();
-}
-
 void AircraftWidget::on_newAircraftButton_clicked()
 void AircraftWidget::on_newAircraftButton_clicked()
 {
 {
     NewTailDialog nt(QString(), this);
     NewTailDialog nt(QString(), this);
-    QObject::connect(&nt,  &QDialog::accepted,
-                     this, &AircraftWidget::onNewTailDialog_editingFinished);
-    QObject::connect(&nt,  &QDialog::rejected,
-                     this, &AircraftWidget::onNewTailDialog_editingFinished);
+    setUiEnabled(false);
     nt.exec();
     nt.exec();
+    refreshView();
+    setUiEnabled(true);
 }
 }
 
 
 /*!
 /*!
@@ -130,16 +124,15 @@ void AircraftWidget::tableView_selectionChanged()
     }
     }
 
 
     if(selectedTails.length() == 1) {
     if(selectedTails.length() == 1) {
-        auto* nt = new NewTailDialog(selectedTails.first(), this);
-        QObject::connect(nt,   &QDialog::accepted,
-                         this, &AircraftWidget::onNewTailDialog_editingFinished);
-        QObject::connect(nt,   &QDialog::rejected,
-                         this, &AircraftWidget::onNewTailDialog_editingFinished);
-        ui->stackedWidget->addWidget(nt);
-        ui->stackedWidget->setCurrentWidget(nt);
-        nt->setWindowFlag(Qt::Widget);
-        nt->setAttribute(Qt::WA_DeleteOnClose);
-        nt->exec();
+        NewTailDialog nt(selectedTails.first(), this);
+        nt.setWindowFlag(Qt::Widget);
+        ui->stackedWidget->addWidget(&nt);
+        ui->stackedWidget->setCurrentWidget(&nt);
+
+        setUiEnabled(false);
+        nt.exec();
+        refreshView();
+        setUiEnabled(true);
     }
     }
 }
 }
 
 
@@ -246,6 +239,15 @@ void AircraftWidget::onDeleteUnsuccessful()
     }
     }
 }
 }
 
 
+void AircraftWidget::setUiEnabled(bool enabled)
+{
+    ui->newAircraftButton->setEnabled(enabled);
+    ui->deleteAircraftButton->setEnabled(enabled);
+    ui->tableView->setEnabled(enabled);
+    ui->aircraftSearchComboBox->setEnabled(enabled);
+    ui->aircraftSearchComboBox->setEnabled(enabled);
+}
+
 void AircraftWidget::repopulateModel()
 void AircraftWidget::repopulateModel()
 {
 {
     // unset the current model and delete it to avoid leak
     // unset the current model and delete it to avoid leak

+ 2 - 2
src/gui/widgets/aircraftwidget.h

@@ -67,8 +67,6 @@ private slots:
 
 
     void on_newAircraftButton_clicked();
     void on_newAircraftButton_clicked();
 
 
-    void onNewTailDialog_editingFinished();
-
     void on_aircraftSearchLineEdit_textChanged(const QString &arg1);
     void on_aircraftSearchLineEdit_textChanged(const QString &arg1);
 
 
 public slots:
 public slots:
@@ -112,6 +110,8 @@ private:
 
 
     void onDeleteUnsuccessful();
     void onDeleteUnsuccessful();
 
 
+    void setUiEnabled(bool enabled);
+
     inline void refreshView(){model->select();}
     inline void refreshView(){model->select();}
 
 
 protected:
 protected:

+ 1 - 1
src/gui/widgets/logbookwidget.cpp

@@ -308,7 +308,7 @@ void LogbookWidget::on_actionEdit_Flight_triggered()
 void LogbookWidget::on_actionEdit_Sim_triggered()
 void LogbookWidget::on_actionEdit_Sim_triggered()
 {
 {
     if (selectedEntries.length() == 1) {
     if (selectedEntries.length() == 1) {
-        NewSimDialog nsd((selectedEntries.first() * -1), this);
+        NewSimDialog nsd((selectedEntries.first() * -1), this); // simulator entries have inverse row ID's in the model
         ui->stackedWidget->addWidget(&nsd);
         ui->stackedWidget->addWidget(&nsd);
         ui->stackedWidget->setCurrentWidget(&nsd);
         ui->stackedWidget->setCurrentWidget(&nsd);
         nsd.setWindowFlag(Qt::Widget);
         nsd.setWindowFlag(Qt::Widget);

+ 22 - 24
src/gui/widgets/pilotswidget.cpp

@@ -76,6 +76,15 @@ void PilotsWidget::connectSignalsAndSlots()
                      this,                              &PilotsWidget::tableView_headerClicked);
                      this,                              &PilotsWidget::tableView_headerClicked);
 }
 }
 
 
+void PilotsWidget::setUiEnabled(bool enabled)
+{
+   ui->tableView->setEnabled(enabled);
+   ui->newPilotButton->setEnabled(enabled);
+   ui->deletePilotButton->setEnabled(enabled);
+   ui->pilotSearchLineEdit->setEnabled(enabled);
+   ui->pilotsSearchComboBox->setEnabled(enabled);
+}
+
 void PilotsWidget::changeEvent(QEvent *event)
 void PilotsWidget::changeEvent(QEvent *event)
 {
 {
     if (event != nullptr)
     if (event != nullptr)
@@ -94,11 +103,6 @@ void PilotsWidget::onPilotsWidget_databaseUpdated()
     refreshView();
     refreshView();
 }
 }
 
 
-void PilotsWidget::onNewPilotDialog_editingFinished()
-{
-    refreshView();
-}
-
 void PilotsWidget::on_pilotSearchLineEdit_textChanged(const QString &arg1)
 void PilotsWidget::on_pilotSearchLineEdit_textChanged(const QString &arg1)
 {
 {
     model->setFilter(QLatin1Char('\"') + ui->pilotsSearchComboBox->currentText()
     model->setFilter(QLatin1Char('\"') + ui->pilotsSearchComboBox->currentText()
@@ -112,7 +116,7 @@ void PilotsWidget::tableView_selectionChanged()
         delete this->findChild<NewPilotDialog*>();
         delete this->findChild<NewPilotDialog*>();
     }
     }
 
 
-    auto *selection = ui->tableView->selectionModel();
+    auto selection = ui->tableView->selectionModel();
     selectedPilots.clear();
     selectedPilots.clear();
 
 
     for (const auto& row : selection->selectedRows()) {
     for (const auto& row : selection->selectedRows()) {
@@ -120,17 +124,15 @@ void PilotsWidget::tableView_selectionChanged()
         DEB << "Selected Tails(s) with ID: " << selectedPilots;
         DEB << "Selected Tails(s) with ID: " << selectedPilots;
     }
     }
     if(selectedPilots.length() == 1) {
     if(selectedPilots.length() == 1) {
-
-        NewPilotDialog* np = new NewPilotDialog(selectedPilots.first(), this);
-        QObject::connect(np,   &QDialog::accepted,
-                         this, &PilotsWidget::onNewPilotDialog_editingFinished);
-        QObject::connect(np,   &QDialog::rejected,
-                         this, &PilotsWidget::onNewPilotDialog_editingFinished);
-        np->setWindowFlag(Qt::Widget);
-        np->setAttribute(Qt::WA_DeleteOnClose);
-        ui->stackedWidget->addWidget(np);
-        ui->stackedWidget->setCurrentWidget(np);
-        np->exec();
+        NewPilotDialog np = NewPilotDialog(selectedPilots.first(), this);
+        np.setWindowFlag(Qt::Widget);
+        ui->stackedWidget->addWidget(&np);
+        ui->stackedWidget->setCurrentWidget(&np);
+
+        setUiEnabled(false);
+        np.exec();
+        refreshView();
+        setUiEnabled(true);
     }
     }
 }
 }
 
 
@@ -142,13 +144,9 @@ void PilotsWidget::tableView_headerClicked(int column)
 
 
 void PilotsWidget::on_newPilotButton_clicked()
 void PilotsWidget::on_newPilotButton_clicked()
 {
 {
-    NewPilotDialog* np = new NewPilotDialog(this);
-    QObject::connect(np,   &QDialog::accepted,
-                     this, &PilotsWidget::onNewPilotDialog_editingFinished);
-    QObject::connect(np,   &QDialog::rejected,
-                     this, &PilotsWidget::onNewPilotDialog_editingFinished);
-    np->setAttribute(Qt::WA_DeleteOnClose);
-    np->exec();
+    NewPilotDialog np = NewPilotDialog(this);
+    np.exec();
+    refreshView();
 }
 }
 
 
 void PilotsWidget::on_deletePilotButton_clicked()
 void PilotsWidget::on_deletePilotButton_clicked()

+ 2 - 1
src/gui/widgets/pilotswidget.h

@@ -63,7 +63,6 @@ private slots:
     void on_newPilotButton_clicked();
     void on_newPilotButton_clicked();
     void on_deletePilotButton_clicked();
     void on_deletePilotButton_clicked();
     void onDeleteUnsuccessful();
     void onDeleteUnsuccessful();
-    void onNewPilotDialog_editingFinished();
     void on_pilotSearchLineEdit_textChanged(const QString &arg1);
     void on_pilotSearchLineEdit_textChanged(const QString &arg1);
 
 
 public slots:
 public slots:
@@ -102,6 +101,8 @@ private:
 
 
     void connectSignalsAndSlots();
     void connectSignalsAndSlots();
 
 
+    void setUiEnabled(bool enabled);
+
     inline void refreshView(){model->select();}
     inline void refreshView(){model->select();}
 
 
 protected:
 protected: