Browse Source

Redesigned UI, added QToolbar and Widgets

fiffty-50 4 years ago
parent
commit
70c1aa56ee
10 changed files with 389 additions and 295 deletions
  1. 17 0
      homewidget.cpp
  2. 25 0
      homewidget.h
  3. 28 0
      homewidget.ui
  4. 129 0
      logbookwidget.cpp
  5. 37 0
      logbookwidget.h
  6. 94 0
      logbookwidget.ui
  7. 21 144
      mainwindow.cpp
  8. 2 18
      mainwindow.h
  9. 30 133
      mainwindow.ui
  10. 6 0
      openLog.pro

+ 17 - 0
homewidget.cpp

@@ -0,0 +1,17 @@
+#include "homewidget.h"
+#include "ui_homewidget.h"
+
+#include <QDebug>
+
+homeWidget::homeWidget(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::homeWidget)
+{
+    ui->setupUi(this);
+    qDebug() << "homeWidget: Activated";
+}
+
+homeWidget::~homeWidget()
+{
+    delete ui;
+}

+ 25 - 0
homewidget.h

@@ -0,0 +1,25 @@
+#ifndef HOMEWIDGET_H
+#define HOMEWIDGET_H
+
+#include <QWidget>
+
+namespace Ui {
+class homeWidget;
+}
+
+class homeWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit homeWidget(QWidget *parent = nullptr);
+    ~homeWidget();
+
+private slots:
+
+
+private:
+    Ui::homeWidget *ui;
+};
+
+#endif // HOMEWIDGET_H

+ 28 - 0
homewidget.ui

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>homeWidget</class>
+ <widget class="QWidget" name="homeWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1330</width>
+    <height>609</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QPushButton" name="pushButton">
+     <property name="text">
+      <string>Home Screen - tbd</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 129 - 0
logbookwidget.cpp

@@ -0,0 +1,129 @@
+#include "logbookwidget.h"
+#include "ui_logbookwidget.h"
+#include <QSqlTableModel>
+#include <QMessageBox>
+#include "dbman.cpp"
+#include "newflight.h"
+#include "editflight.h"
+
+#include <chrono>
+#include <QDebug>
+
+qint32 SelectedFlight = -1; // Variable to store selected row in QTableView
+
+logbookWidget::logbookWidget(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::logbookWidget)
+{
+    ui->setupUi(this);
+    ui->filterDateEdit->setDate(QDate::currentDate());
+
+    auto start = std::chrono::high_resolution_clock::now(); // timer for performance testing
+
+    QSqlTableModel *model = new QSqlTableModel;
+    model->setTable("Logbook");
+    model->select();
+
+
+    QTableView *view = ui->tableView;
+    view->setModel(model);
+    view->setSelectionBehavior(QAbstractItemView::SelectRows);
+    view->setSelectionMode(QAbstractItemView::SingleSelection);
+    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+
+    view->setColumnWidth(1,120);
+    view->setColumnWidth(2,60);
+    view->setColumnWidth(3,60);
+    view->setColumnWidth(4,60);
+    view->setColumnWidth(5,60);
+    view->setColumnWidth(6,60);
+    view->setColumnWidth(7,120);
+    view->setColumnWidth(8,180);
+    view->setColumnWidth(9,120);
+    view->setColumnWidth(10,90);
+    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
+    view->verticalHeader()->hide();
+    view->setAlternatingRowColors(true);
+    view->hideColumn(0); // don't show the ID
+    view->show();
+
+    auto stop = std::chrono::high_resolution_clock::now();
+    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stop - start);
+    qDebug() << "homeWidget: Time taken for lookup and rendering: " << duration.count() << " microseconds";
+}
+
+logbookWidget::~logbookWidget()
+{
+    delete ui;
+}
+
+void logbookWidget::on_newFlightButton_clicked()
+{
+    NewFlight nf(this);
+    nf.exec();
+}
+
+void logbookWidget::on_editFlightButton_clicked()
+{
+    EditFlight ef(this);
+    ef.exec();
+}
+
+void logbookWidget::on_deleteFlightPushButton_clicked()
+{
+    if(SelectedFlight > 0)
+    {
+        qDebug() << "Valid Flight Selected";
+        // To Do: Confirmation Dialog
+        db::DeleteFlightById(QString::number(SelectedFlight));
+
+        QSqlTableModel *ShowAllModel = new QSqlTableModel; //refresh view
+        ShowAllModel->setTable("Logbook");
+        ShowAllModel->select();
+
+        ui->tableView->setModel(ShowAllModel);
+    }else
+    {
+        QMessageBox NoFlight;
+        NoFlight.setText("No flight selected.");
+        NoFlight.exec();
+    }
+}
+
+void logbookWidget::on_filterFlightsByDateButton_clicked()
+{
+    QDate selection(ui->filterDateEdit->date());
+    QString selecteddate = selection.toString("yyyy-MM-dd");
+    QString datefilter = "Date = '" + selecteddate +"'";
+
+    QSqlTableModel *DateFilteredModel = new QSqlTableModel;
+    DateFilteredModel ->setTable("Logbook");
+    DateFilteredModel ->setFilter(datefilter);
+    DateFilteredModel->select();
+
+    ui->tableView->setModel(DateFilteredModel);
+}
+
+void logbookWidget::on_showAllButton_clicked()
+{
+    QSqlTableModel *ShowAllModel = new QSqlTableModel;
+    ShowAllModel->setTable("Logbook");
+    ShowAllModel->select();
+
+    ui->tableView->setModel(ShowAllModel);
+}
+
+void logbookWidget::on_tableView_entered(const QModelIndex &index)
+{
+    auto NewIndex = ui->tableView->model()->index(index.row(), 0);
+    SelectedFlight = ui->tableView->model()->data(NewIndex).toInt();
+    qDebug() << "Selected Flight with ID#(entered): " << SelectedFlight;
+}
+
+void logbookWidget::on_tableView_pressed(const QModelIndex &index)
+{
+    auto NewIndex = ui->tableView->model()->index(index.row(), 0);
+    SelectedFlight = ui->tableView->model()->data(NewIndex).toInt();
+    qDebug() << "Selected Flight with ID#(entered): " << SelectedFlight;
+}

+ 37 - 0
logbookwidget.h

@@ -0,0 +1,37 @@
+#ifndef LOGBOOKWIDGET_H
+#define LOGBOOKWIDGET_H
+
+#include <QWidget>
+
+namespace Ui {
+class logbookWidget;
+}
+
+class logbookWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit logbookWidget(QWidget *parent = nullptr);
+    ~logbookWidget();
+
+private slots:
+    void on_newFlightButton_clicked();
+
+    void on_editFlightButton_clicked();
+
+    void on_deleteFlightPushButton_clicked();
+
+    void on_filterFlightsByDateButton_clicked();
+
+    void on_showAllButton_clicked();
+
+    void on_tableView_entered(const QModelIndex &index);
+
+    void on_tableView_pressed(const QModelIndex &index);
+
+private:
+    Ui::logbookWidget *ui;
+};
+
+#endif // LOGBOOKWIDGET_H

+ 94 - 0
logbookwidget.ui

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>logbookWidget</class>
+ <widget class="QWidget" name="logbookWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1353</width>
+    <height>613</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="2">
+    <widget class="QTableView" name="tableView">
+     <property name="font">
+      <font>
+       <family>Cantarell</family>
+      </font>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::SingleSelection</enum>
+     </property>
+     <property name="selectionBehavior">
+      <enum>QAbstractItemView::SelectRows</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QPushButton" name="newFlightButton">
+     <property name="text">
+      <string>New Flight</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QDateEdit" name="filterDateEdit">
+     <property name="dateTime">
+      <datetime>
+       <hour>23</hour>
+       <minute>0</minute>
+       <second>0</second>
+       <year>2019</year>
+       <month>12</month>
+       <day>18</day>
+      </datetime>
+     </property>
+     <property name="displayFormat">
+      <string>yyyy-MM-dd</string>
+     </property>
+     <property name="calendarPopup">
+      <bool>true</bool>
+     </property>
+     <property name="timeSpec">
+      <enum>Qt::UTC</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QPushButton" name="editFlightButton">
+     <property name="text">
+      <string>Edit Flight</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QPushButton" name="filterFlightsByDateButton">
+     <property name="text">
+      <string>Filter Flights by Date</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QPushButton" name="deleteFlightPushButton">
+     <property name="text">
+      <string>Delete Flight</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="QPushButton" name="showAllButton">
+     <property name="text">
+      <string>Show All Flights</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 21 - 144
mainwindow.cpp

@@ -23,6 +23,8 @@
 #include "easaview.h"
 #include "dbman.cpp"
 #include "calc.h"
+#include "homewidget.h"
+#include "logbookwidget.h"
 #include <QTime>
 #include <QSqlDatabase>
 #include <QSqlDriver>
@@ -33,7 +35,7 @@
 #include <chrono>
 #include <QMessageBox>
 
-qlonglong SelectedFlight = -1;
+qlonglong SelectedFlightold = -1;
 
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
@@ -41,47 +43,18 @@ MainWindow::MainWindow(QWidget *parent)
 {
 
     ui->setupUi(this);
+    // Adds space between toolbar items and actionQuit item
+    auto *spacer = new QWidget();
+    spacer->setMinimumWidth(10);
+    spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
+    ui->toolBar->insertWidget(ui->actionQuit,spacer);
 
+    // create and show homeWidget
+    auto hw = new homeWidget(this);
+    ui->stackedWidget->addWidget(hw);
+    ui->stackedWidget->setCurrentWidget(hw);
 
-
-    db::connect();
-    ui->FilterDateEdit->setDate(QDate::currentDate());
-
-
-    auto start = std::chrono::high_resolution_clock::now();
-    QSqlTableModel *model = new QSqlTableModel;
-    model->setTable("Logbook");
-    model->select();
-
-
-    QTableView *view = ui->tableView;
-    view->setModel(model);
-    view->setSelectionBehavior(QAbstractItemView::SelectRows);
-    view->setSelectionMode(QAbstractItemView::SingleSelection);
-    view->setEditTriggers(QAbstractItemView::NoEditTriggers);
-
-
-    view->setColumnWidth(1,120);
-    view->setColumnWidth(2,60);
-    view->setColumnWidth(3,60);
-    view->setColumnWidth(4,60);
-    view->setColumnWidth(5,60);
-    view->setColumnWidth(6,60);
-    view->setColumnWidth(7,120);
-    view->setColumnWidth(8,180);
-    view->setColumnWidth(9,120);
-    view->setColumnWidth(10,90);
-    view->horizontalHeader()->setStretchLastSection(QHeaderView::Stretch);
-    //view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
-    view->verticalHeader()->hide();
-    view->setAlternatingRowColors(true);
-    view->hideColumn(0); // don't show the ID
-    view->show();
-
-    auto stop = std::chrono::high_resolution_clock::now();
-    auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stop - start);
-    qDebug() << "Time taken for lookup and rendering: " << duration.count() << " microseconds";
-
+    db::connect();  //connect to the database
 }
 
 MainWindow::~MainWindow()
@@ -103,12 +76,6 @@ void MainWindow::nope()
  * Slots
  */
 
-void MainWindow::on_newflightButton_clicked()
-{
-    NewFlight nf(this);
-    nf.exec();
-}
-
 
 void MainWindow::on_actionNew_Flight_triggered()
 {
@@ -126,106 +93,16 @@ void MainWindow::on_quitButton_clicked()
     QApplication::quit();
 }
 
-
-void MainWindow::on_ShowAllButton_clicked()
-{
-    QSqlTableModel *ShowAllModel = new QSqlTableModel;
-    ShowAllModel->setTable("Logbook");
-    ShowAllModel->select();
-
-    ui->tableView->setModel(ShowAllModel);
-}
-
-void MainWindow::on_filterComboBox_activated(const QString &arg1)
-{
-    if (arg1 == "Pilot Name")
-    {
-        nope();
-    }else if (arg1 == "Aircraft Registration")
-    {
-        nope();
-    }else if (arg1 == "Airline")
-    {
-        nope();
-    }else if (arg1 == "Multi-Engine")
-    {
-        nope();
-    }
-}
-
-void MainWindow::on_editflightButton_clicked()
-{
-    QVector<QString> flight;
-    flight = db::SelectFlightById(QString::number(SelectedFlight));
-    if(flight.length() > 0)
-    {
-        qDebug() << "Valid Flight Selected";
-        db::CommitToScratchpad(flight); // commits flight to scratchpad
-        EditFlight ef(this);
-        ef.exec();
-    }
-
-}
-
-void MainWindow::on_deleteFlightPushButton_clicked()
-{
-    if(SelectedFlight > 0)
-    {
-        qDebug() << "Valid Flight Selected";
-        db::DeleteFlightById(QString::number(SelectedFlight));
-
-
-
-        QSqlTableModel *ShowAllModel = new QSqlTableModel; //refresh view
-        ShowAllModel->setTable("Logbook");
-        ShowAllModel->select();
-
-        ui->tableView->setModel(ShowAllModel);
-    }else
-    {
-        QMessageBox NoFlight;
-        NoFlight.setText("No flight selected.");
-        NoFlight.exec();
-    }
-}
-
-void MainWindow::on_FilterDateEdit_editingFinished()
-{
-
-}
-
-void MainWindow::on_filterFlightsByDateButton_clicked()
-{
-    QDate selection(ui->FilterDateEdit->date());
-    QString selecteddate = selection.toString("yyyy-MM-dd");
-    QString datefilter = "Date = '" + selecteddate +"'";
-
-    QSqlTableModel *DateFilteredModel = new QSqlTableModel;
-    DateFilteredModel ->setTable("Logbook");
-    DateFilteredModel ->setFilter(datefilter);
-    DateFilteredModel->select();
-
-    ui->tableView->setModel(DateFilteredModel);
-}
-
-
-
-void MainWindow::on_EasaViewButton_clicked()
-{
-    EasaView ev(this);
-    ev.exec();
-}
-
-void MainWindow::on_tableView_pressed(const QModelIndex &index)
+void MainWindow::on_actionHome_triggered()
 {
-    auto NewIndex = ui->tableView->model()->index(index.row(), 0);
-    SelectedFlight = ui->tableView->model()->data(NewIndex).toInt();
-    qDebug() << "Selected Flight with ID#:(presssed) " << SelectedFlight;
+    auto hw = new homeWidget(this);
+    ui->stackedWidget->addWidget(hw);
+    ui->stackedWidget->setCurrentWidget(hw);
 }
 
-void MainWindow::on_tableView_entered(const QModelIndex &index)
+void MainWindow::on_actionLogbook_triggered()
 {
-    auto NewIndex = ui->tableView->model()->index(index.row(), 0);
-    SelectedFlight = ui->tableView->model()->data(NewIndex).toInt();
-    qDebug() << "Selected Flight with ID#(entered): " << SelectedFlight;
+    auto lw = new logbookWidget(this);
+    ui->stackedWidget->addWidget(lw);
+    ui->stackedWidget->setCurrentWidget(lw);
 }

+ 2 - 18
mainwindow.h

@@ -36,31 +36,15 @@ private slots:
 
     void nope();
 
-    void on_newflightButton_clicked();
-
     void on_actionNew_Flight_triggered();
 
     void on_actionQuit_triggered();
 
     void on_quitButton_clicked();
 
-    void on_ShowAllButton_clicked();
-
-    void on_filterComboBox_activated(const QString &arg1);
-
-    void on_editflightButton_clicked();
-
-    void on_deleteFlightPushButton_clicked();
-
-    void on_FilterDateEdit_editingFinished();
-
-    void on_filterFlightsByDateButton_clicked();
-
-    void on_EasaViewButton_clicked();
-
-    void on_tableView_pressed(const QModelIndex &index);
+    void on_actionHome_triggered();
 
-    void on_tableView_entered(const QModelIndex &index);
+    void on_actionLogbook_triggered();
 
 private:
     Ui::MainWindow *ui;

+ 30 - 133
mainwindow.ui

@@ -15,142 +15,15 @@
   </property>
   <widget class="QWidget" name="centralwidget">
    <layout class="QGridLayout" name="gridLayout">
-    <item row="6" column="0">
-     <widget class="QPushButton" name="EasaViewButton">
-      <property name="text">
-       <string>View EASA FCL.050 Logbook</string>
-      </property>
-     </widget>
-    </item>
-    <item row="11" column="0">
-     <spacer name="verticalSpacer">
-      <property name="orientation">
-       <enum>Qt::Vertical</enum>
-      </property>
-      <property name="sizeType">
-       <enum>QSizePolicy::Fixed</enum>
-      </property>
-      <property name="sizeHint" stdset="0">
-       <size>
-        <width>20</width>
-        <height>20</height>
-       </size>
-      </property>
-     </spacer>
-    </item>
-    <item row="3" column="1">
-     <widget class="QPushButton" name="editflightButton">
-      <property name="text">
-       <string>Edit Flight</string>
-      </property>
-     </widget>
-    </item>
-    <item row="0" column="0" colspan="2">
-     <widget class="QTableView" name="tableView">
-      <property name="font">
-       <font>
-        <family>Cantarell</family>
-       </font>
-      </property>
-      <property name="selectionMode">
-       <enum>QAbstractItemView::SingleSelection</enum>
-      </property>
-      <property name="selectionBehavior">
-       <enum>QAbstractItemView::SelectRows</enum>
-      </property>
-     </widget>
-    </item>
-    <item row="9" column="0">
-     <widget class="QComboBox" name="filterComboBox">
-      <item>
-       <property name="text">
-        <string>Pilot Name</string>
-       </property>
-      </item>
-      <item>
-       <property name="text">
-        <string>Aircraft Registration</string>
-       </property>
-      </item>
-      <item>
-       <property name="text">
-        <string>Airline</string>
-       </property>
-      </item>
-      <item>
-       <property name="text">
-        <string>Multi-Engine</string>
-       </property>
-      </item>
-     </widget>
-    </item>
-    <item row="13" column="0" colspan="2">
-     <widget class="QPushButton" name="quitButton">
-      <property name="text">
-       <string>Quit</string>
-      </property>
-     </widget>
-    </item>
-    <item row="3" column="0">
-     <widget class="QPushButton" name="filterFlightsByDateButton">
-      <property name="text">
-       <string>Filter Flights by Date</string>
-      </property>
-     </widget>
-    </item>
-    <item row="9" column="1">
-     <widget class="QPushButton" name="ShowAllButton">
-      <property name="text">
-       <string>Show All Flights</string>
-      </property>
-     </widget>
-    </item>
-    <item row="8" column="0">
-     <widget class="QLabel" name="filterFlightsByLabel">
-      <property name="text">
-       <string>Filter Flights by</string>
-      </property>
-     </widget>
-    </item>
-    <item row="6" column="1">
-     <widget class="QPushButton" name="deleteFlightPushButton">
-      <property name="text">
-       <string>Delete Flight</string>
-      </property>
-     </widget>
-    </item>
-    <item row="2" column="0">
-     <widget class="QDateEdit" name="FilterDateEdit">
-      <property name="dateTime">
-       <datetime>
-        <hour>23</hour>
-        <minute>0</minute>
-        <second>0</second>
-        <year>2019</year>
-        <month>12</month>
-        <day>21</day>
-       </datetime>
-      </property>
-      <property name="displayFormat">
-       <string>yyyy-MM-dd</string>
-      </property>
-      <property name="calendarPopup">
-       <bool>true</bool>
-      </property>
-      <property name="timeSpec">
-       <enum>Qt::UTC</enum>
-      </property>
-     </widget>
-    </item>
-    <item row="2" column="1">
-     <widget class="QPushButton" name="newflightButton">
-      <property name="text">
-       <string>New Flight</string>
-      </property>
+    <item row="0" column="0">
+     <widget class="QStackedWidget" name="stackedWidget">
+      <widget class="QWidget" name="page"/>
+      <widget class="QWidget" name="page_2"/>
      </widget>
     </item>
    </layout>
   </widget>
+  <widget class="QStatusBar" name="statusbar"/>
   <widget class="QMenuBar" name="menubar">
    <property name="geometry">
     <rect>
@@ -170,7 +43,21 @@
    </widget>
    <addaction name="menuFile"/>
   </widget>
-  <widget class="QStatusBar" name="statusbar"/>
+  <widget class="QToolBar" name="toolBar">
+   <property name="windowTitle">
+    <string>toolBar</string>
+   </property>
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+   <addaction name="actionHome"/>
+   <addaction name="actionLogbook"/>
+   <addaction name="actionNew_Flight"/>
+   <addaction name="actionQuit"/>
+  </widget>
   <action name="actionNew_Flight">
    <property name="text">
     <string>New Flight</string>
@@ -187,6 +74,16 @@
     <string>Ctrl+Q</string>
    </property>
   </action>
+  <action name="actionHome">
+   <property name="text">
+    <string>Home</string>
+   </property>
+  </action>
+  <action name="actionLogbook">
+   <property name="text">
+    <string>Logbook</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections/>

+ 6 - 0
openLog.pro

@@ -24,6 +24,8 @@ SOURCES += \
     dbman.cpp \
     easaview.cpp \
     editflight.cpp \
+    homewidget.cpp \
+    logbookwidget.cpp \
     main.cpp \
     mainwindow.cpp \
     newacft.cpp \
@@ -34,6 +36,8 @@ HEADERS += \
     calc.h \
     easaview.h \
     editflight.h \
+    homewidget.h \
+    logbookwidget.h \
     mainwindow.h \
     newacft.h \
     newflight.h \
@@ -42,6 +46,8 @@ HEADERS += \
 FORMS += \
     easaview.ui \
     editflight.ui \
+    homewidget.ui \
+    logbookwidget.ui \
     mainwindow.ui \
     newacft.ui \
     newflight.ui \