Browse Source

added signal/slot for refreshing view upon entry edited/created/deleted

fiffty-50 4 years ago
parent
commit
6116973416

+ 43 - 38
src/gui/widgets/aircraftwidget.cpp

@@ -39,32 +39,7 @@ AircraftWidget::AircraftWidget(QWidget *parent) :
     ui->stackedWidget->addWidget(start);
     ui->stackedWidget->setCurrentWidget(start);
 
-
-    QSqlTableModel *model = new QSqlTableModel;
-    model->setTable("viewTails");
-    model->select();
-
-    QTableView *view = ui->tableView;
-    view->setModel(model);
-    view->setSelectionBehavior(QAbstractItemView::SelectRows);
-    view->setSelectionMode(QAbstractItemView::SingleSelection);
-    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
-    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
-    view->setColumnWidth(0, 60);
-    view->setColumnWidth(1, 120);
-    view->setColumnWidth(2, 180);
-    view->verticalHeader()->hide();
-    view->setAlternatingRowColors(true);
-    view->setSortingEnabled(true);
-    QSettings settings;
-
-    view->sortByColumn(settings.value("userdata/acSortColumn").toInt(), Qt::AscendingOrder);
-
-    view->show();
-
-    connect(ui->tableView->selectionModel(),
-            SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
-            SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
+    refreshView();
 }
 
 AircraftWidget::~AircraftWidget()
@@ -83,8 +58,10 @@ void AircraftWidget::tableView_selectionChanged(const QItemSelection &index, con
     DEB("Selected aircraft with ID#: " << selectedAircraft);
 
     auto nt = new NewTail(Aircraft("tails", selectedAircraft), Db::editExisting, this);
-    //auto nt = new NewTail(db(db::tails,selectedAircraft),this);
 
+    connect(nt,
+            SIGNAL(accepted()), this,
+            SLOT(on_widget_accepted()));
     nt->setWindowFlag(Qt::Widget);
     ui->stackedWidget->addWidget(nt);
     ui->stackedWidget->setCurrentWidget(nt);
@@ -96,17 +73,7 @@ void AircraftWidget::on_deleteButton_clicked()
 
         auto ac = new Aircraft("tails", selectedAircraft);
         ac->remove();
-
-
-        QSqlTableModel *model = new QSqlTableModel;
-        model->setTable("viewTails");
-        model->select();
-        ui->tableView->setModel(model);
-        connect(ui->tableView->selectionModel(),
-                SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
-                SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
-
-        ui->stackedWidget->setCurrentWidget(parent()->findChild<QWidget *>("welcomeAC"));
+        refreshView();
 
     } else {
         auto mb = new QMessageBox(this);
@@ -118,5 +85,43 @@ void AircraftWidget::on_deleteButton_clicked()
 void AircraftWidget::on_newButton_clicked()
 {
     auto nt = new NewTail(QString(), Db::createNew, this);
+    connect(nt,
+            SIGNAL(accepted()), this,
+            SLOT(on_widget_accepted()));
     nt->show();
 }
+
+void AircraftWidget::on_widget_accepted()
+{
+    DEB("Refreshing View...");
+    refreshView();
+}
+
+void AircraftWidget::refreshView()
+{
+    QSqlTableModel *model = new QSqlTableModel;
+    model->setTable("viewTails");
+    model->select();
+
+    QTableView *view = ui->tableView;
+    view->setModel(model);
+    view->setSelectionBehavior(QAbstractItemView::SelectRows);
+    view->setSelectionMode(QAbstractItemView::SingleSelection);
+    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
+    view->setColumnWidth(0, 60);
+    view->setColumnWidth(1, 120);
+    view->setColumnWidth(2, 180);
+    view->verticalHeader()->hide();
+    view->setAlternatingRowColors(true);
+    view->setSortingEnabled(true);
+
+    QSettings settings;
+    view->sortByColumn(settings.value("userdata/acSortColumn").toInt(), Qt::AscendingOrder);
+
+    view->show();
+
+    connect(ui->tableView->selectionModel(),
+            SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
+            SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
+}

+ 4 - 0
src/gui/widgets/aircraftwidget.h

@@ -51,8 +51,12 @@ private slots:
 
     void on_newButton_clicked();
 
+    void on_widget_accepted();
+
 private:
     Ui::AircraftWidget *ui;
+
+    void refreshView();
 };
 
 #endif // AIRCRAFTWIDGET_H

+ 45 - 38
src/gui/widgets/pilotswidget.cpp

@@ -39,33 +39,7 @@ PilotsWidget::PilotsWidget(QWidget *parent) :
     ui->stackedWidget->addWidget(start);
     ui->stackedWidget->setCurrentWidget(start);
 
-
-    QSqlTableModel *model = new QSqlTableModel;
-    model->setTable("viewPilots");
-    model->setFilter("ID > 1");//to not allow editing of self, shall be done via settings
-    model->select();
-
-    QTableView *view = ui->tableView;
-    view->setModel(model);
-    view->setSelectionBehavior(QAbstractItemView::SelectRows);
-    view->setSelectionMode(QAbstractItemView::SingleSelection);
-    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
-    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
-    view->setColumnWidth(0, 60);
-    view->setColumnWidth(1, 240);
-    view->setColumnWidth(2, 180);
-    view->verticalHeader()->hide();
-    view->setAlternatingRowColors(true);
-    view->setSortingEnabled(true);
-    QSettings settings;
-
-    view->sortByColumn(settings.value("userdata/pilSortColumn").toInt(), Qt::AscendingOrder);
-
-    view->show();
-
-    connect(ui->tableView->selectionModel(),
-            SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
-            SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
+    refreshView();
 }
 
 PilotsWidget::~PilotsWidget()
@@ -79,10 +53,14 @@ void PilotsWidget::tableView_selectionChanged(const QItemSelection &index, const
     DEB("Selected Pilot with ID#: " << selectedPilot);
 
     auto np = new NewPilot(Pilot("pilots", selectedPilot), Db::editExisting, this);
+    connect(np,
+            SIGNAL(accepted()), this,
+            SLOT(on_widget_accepted()));
 
     np->setWindowFlag(Qt::Widget);
     ui->stackedWidget->addWidget(np);
     ui->stackedWidget->setCurrentWidget(np);
+
 }
 
 void PilotsWidget::setSelectedPilot(const qint32 &value)
@@ -93,6 +71,9 @@ void PilotsWidget::setSelectedPilot(const qint32 &value)
 void PilotsWidget::on_newButton_clicked()
 {
     auto np = new NewPilot(Db::createNew, this);
+    connect(np,
+            SIGNAL(accepted()), this,
+            SLOT(on_widget_accepted()));
     np->show();
 }
 
@@ -102,17 +83,7 @@ void PilotsWidget::on_deletePushButton_clicked()
 
         auto pil = new Pilot("pilots", selectedPilot);
         pil->remove();
-
-
-        QSqlTableModel *model = new QSqlTableModel;
-        model->setTable("viewPilots");
-        model->select();
-        ui->tableView->setModel(model);
-        connect(ui->tableView->selectionModel(),
-                SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
-                SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
-
-        ui->stackedWidget->setCurrentWidget(parent()->findChild<QWidget *>("welcomePL"));
+        refreshView();
 
     } else {
         auto mb = new QMessageBox(this);
@@ -120,3 +91,39 @@ void PilotsWidget::on_deletePushButton_clicked()
         mb->show();
     }
 }
+
+void PilotsWidget::on_widget_accepted()
+{
+    DEB("Refreshing View...");
+    refreshView();
+}
+
+void PilotsWidget::refreshView()
+{
+    QSqlTableModel *model = new QSqlTableModel;
+    model->setTable("viewPilots");
+    model->setFilter("ID > 1");//to not allow editing of self, shall be done via settings
+    model->select();
+
+    QTableView *view = ui->tableView;
+    view->setModel(model);
+    view->setSelectionBehavior(QAbstractItemView::SelectRows);
+    view->setSelectionMode(QAbstractItemView::SingleSelection);
+    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
+    view->setColumnWidth(0, 60);
+    view->setColumnWidth(1, 240);
+    view->setColumnWidth(2, 180);
+    view->verticalHeader()->hide();
+    view->setAlternatingRowColors(true);
+    view->setSortingEnabled(true);
+    QSettings settings;
+
+    view->sortByColumn(settings.value("userdata/pilSortColumn").toInt(), Qt::AscendingOrder);
+
+    view->show();
+
+    connect(ui->tableView->selectionModel(),
+            SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
+            SLOT(tableView_selectionChanged(const QItemSelection &, const QItemSelection &)));
+}

+ 4 - 0
src/gui/widgets/pilotswidget.h

@@ -48,10 +48,14 @@ private slots:
 
     void on_deletePushButton_clicked();
 
+    void on_widget_accepted();
+
 private:
     Ui::PilotsWidget *ui;
 
     qint32 selectedPilot = 0;
+
+    void refreshView();
 };
 
 #endif // PILOTSWIDGET_H