Browse Source

working on newtail dialog and aircraft class

fiffty-50 4 years ago
parent
commit
546d3967bd

BIN
assets/database/logbook.db


+ 5 - 5
openPilotLog.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.11.0, 2020-10-27T22:17:02. -->
+<!-- Written by QtCreator 4.11.0, 2020-10-28T18:21:35. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -285,19 +285,19 @@
     </valuelist>
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/klacki/git/openpilotlog/openPilotLog.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/klacki/git/openpilotlog/openPilotLog.pro</value>
     <value type="QString" key="RunConfiguration.Arguments"></value>
     <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
     <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
     <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
     <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/klacki/git/build-openPilotLog-Desktop-Debug</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>

+ 71 - 24
src/classes/aircraft.cpp

@@ -26,7 +26,12 @@ aircraft::aircraft()
 
 }
 
-aircraft aircraft::fromTails(int tail_id)
+/*!
+ * \brief aircraft::aircraft creates an aircraft object from the database.
+ * \param database_id primary key in database
+ * \param db either database::tails or database::acft
+ */
+aircraft::aircraft(int database_id, aircraft::database db)
 {
     QVector<QString> columns = {
         "tail_id", "registration", "company",
@@ -35,38 +40,80 @@ aircraft aircraft::fromTails(int tail_id)
         "unpowered", "piston", "turboprop",
         "jet", "light", "medium", "heavy"
     };
-    auto tail = db::multiSelect(columns,"tails","tail_id",QString::number(tail_id),sql::exactMatch);
+    QString checkColumn;
+    QString table;
 
-    //DEB(tail);
-    aircraft acft;
+    switch (db) {
+    case database::tail:
+        //DEB("tails:" << columns);
+        table.append("tails");
+        checkColumn.append("tail_id");
+        break;
+    case database::acft:
+        columns.replace(0,"aircraft_id");
+        columns.remove(1,2);
+        //DEB("acft:" << columns;)
+        table.append("aircraft");
+        checkColumn.append("aircraft_id");
+        break;
+    }
 
-    acft.id = tail[0];
-    acft.registration = tail[1];
-    acft.company = tail[2];
-    acft.make = tail[3];
-    acft.model = tail[4];
-    acft.variant = tail[5];
-    //bool
-    acft.singlepilot = tail[6].toInt();
-    acft.multipilot = tail[7].toInt();
-    acft.singleengine = tail[8].toInt();
-    acft.multiengine = tail[9].toInt();
-    acft.unpowered = tail[10].toInt();
-    acft.piston = tail[11].toInt();
-    acft.turboprop = tail[12].toInt();
-    acft.jet = tail[13].toInt();
-    acft.light = tail[14].toInt();
-    acft.medium = tail[15].toInt();
-    acft.heavy = tail[16].toInt();
+    auto vector = db::multiSelect(columns,table,checkColumn,QString::number(database_id),sql::exactMatch);
 
-    return acft;
+    if(vector.length() < 2){
+        id = "invalid";
+    }else{
+        switch (db) {
+        case database::tail:
+            id = vector[0];
+            registration = vector[1];
+            company = vector[2];
+            make = vector[3];
+            model = vector[4];
+            variant = vector[5];
+            //bool
+            singlepilot = vector[6].toInt();
+            multipilot = vector[7].toInt();
+            singleengine = vector[8].toInt();
+            multiengine = vector[9].toInt();
+            unpowered = vector[10].toInt();
+            piston = vector[11].toInt();
+            turboprop = vector[12].toInt();
+            jet = vector[13].toInt();
+            light = vector[14].toInt();
+            medium = vector[15].toInt();
+            heavy = vector[16].toInt();
+            break;
+        case database::acft:
+            id = vector[0];
+            make = vector[1];
+            model = vector[2];
+            variant = vector[3];
+            //bool
+            singlepilot = vector[4].toInt();
+            multipilot = vector[5].toInt();
+            singleengine = vector[6].toInt();
+            multiengine = vector[7].toInt();
+            unpowered = vector[8].toInt();
+            piston = vector[9].toInt();
+            turboprop = vector[10].toInt();
+            jet = vector[11].toInt();
+            light = vector[12].toInt();
+            medium = vector[13].toInt();
+            heavy = vector[14].toInt();
+            break;
+        }
+    }
 }
 
+/*!
+ * \brief aircraft::print Debug output
+ */
 void aircraft::print()
 {
     QTextStream cout(stdout, QIODevice::WriteOnly);
 
-    cout << "\t\033[38;2;0;255;0;48;2;0;0;0m Aircraft Object: \033[0m\n";
+    cout << "\t\033[38;2;0;255;0;48;2;0;0;0m Aircraft Object \033[0m\n";
     cout << "ID: \t\t" << id << "\n";
     cout << "Reg: \t\t" << registration<< "\n";
     cout << "Company: \t" << company<< "\n";

+ 20 - 14
src/classes/aircraft.h

@@ -21,10 +21,18 @@
 #include <QVector>
 #include "src/database/db.h"
 
+/*!
+ * \brief The aircraft class
+ *
+ */
 class aircraft
 {
 public:
+    enum database {tail, acft};
+
     aircraft();
+    aircraft(int database_id, database);
+    aircraft(QString registration);
 
     QString id;
     QString registration;
@@ -32,27 +40,25 @@ public:
     QString make;
     QString model;
     QString variant;
-    bool singlepilot;
-    bool multipilot;
-    bool singleengine;
-    bool multiengine;
-    bool unpowered;
-    bool piston;
-    bool turboprop;
-    bool jet;
-    bool light;
-    bool medium;
-    bool heavy;
+    bool singlepilot    = false;
+    bool multipilot     = false;
+    bool singleengine   = false;
+    bool multiengine    = false;
+    bool unpowered      = false;
+    bool piston         = false;
+    bool turboprop      = false;
+    bool jet            = false;
+    bool light          = false;
+    bool medium         = false;
+    bool heavy          = false;
 
     // Functions
-    static aircraft         fromTails(int tail_id);
-    static aircraft         fromAircraft(int acft_id);
     static QVector<QString> toVector(aircraft);
 
     // Debug functionality
     void print();
     QString debug();
-    operator QString() { return debug(); }
+    operator QString() { return debug(); } //overload for compatibility with qDebug()
 };
 
 #endif // AIRCRAFT_H

+ 238 - 4
src/gui/dialogues/newtail.cpp

@@ -18,36 +18,270 @@
 #include "newtail.h"
 #include "ui_newtail.h"
 
-NewTail::NewTail(QWidget *parent) :
+// Debug Makro
+#define DEB(expr) \
+    qDebug() << "NewTail ::" << __func__ << "\t" << expr
+
+//Dialog to be used to edit existing tail
+NewTail::NewTail(aircraft acft, QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::NewTail)
+{
+    ui->setupUi(this);
+    ui->searchLabel->hide();
+    ui->searchLineEdit->hide();
+    formFiller(acft);
+}
+
+//Dialog to be used to create new tail
+NewTail::NewTail(QString newreg, QWidget *parent) :
     QDialog(parent),
     ui(new Ui::NewTail)
 {
     ui->setupUi(this);
+    ui->registrationLineEdit->setText(newreg);
 
+    //creating a QMap<id,searchstring>
+    auto query = QLatin1String("SELECT make||' '||model||'-'||variant, aircraft_id FROM aircraft");
+    auto vector = db::customQuery(query,2);
+    QMap<QString, int> map;
+    for (int i = 0; i < vector.length()-2 ; i += 2){
+        if(vector[i] != QLatin1String("")){
+            map.insert(vector[i],vector[i+1].toInt());
+        }
+    }
+    //creating QStringlist for QCompleter
     auto cl = new completionList(completerTarget::aircraft);
+
     aircraftlist = cl->list;
+    idMap = map;
 
     QCompleter* completer = new QCompleter(aircraftlist,ui->searchLineEdit);
     completer->setCaseSensitivity(Qt::CaseInsensitive);
     completer->setCompletionMode(QCompleter::PopupCompletion);
     completer->setFilterMode(Qt::MatchContains);
     ui->searchLineEdit->setCompleter(completer);
-
+    ui->searchLineEdit->setStyleSheet("border: 1px solid blue");
+    ui->searchLineEdit->setFocus();
 }
 
+
 NewTail::~NewTail()
 {
     delete ui;
 }
 
 
+/// Slots
+
 void NewTail::on_searchLineEdit_textChanged(const QString &arg1)
 {
-    if(aircraftlist.contains(arg1)){
-        qDebug() << "Success!" << ui->searchLineEdit->text();
+    if(aircraftlist.contains(arg1)){//equivalent to editing finished for this purpose. todo: consider connecing qcompleter activated signal with editing finished slot.
+
+        DEB("Template Selected. aircraft_id is: " << idMap.value(arg1));
         //call autofiller for dialog
+        formFiller(aircraft(idMap.value(arg1),aircraft::acft));
         ui->searchLineEdit->setStyleSheet("border: 1px solid green");
     }else{
+        //for example, editing finished without selecting a result from Qcompleter
         ui->searchLineEdit->setStyleSheet("border: 1px solid orange");
     }
 }
+
+void NewTail::on_operationComboBox_currentIndexChanged(int index)
+{
+    if(index != 0){
+        ui->operationComboBox->setStyleSheet("");
+    }
+}
+
+void NewTail::on_ppTypeComboBox_currentIndexChanged(int index)
+{
+    if(index != 0){
+        ui->ppTypeComboBox->setStyleSheet("");
+    }
+}
+
+void NewTail::on_ppNumberComboBox_currentIndexChanged(int index)
+{
+    if(index != 0){
+        ui->ppNumberComboBox->setStyleSheet("");
+    }
+}
+
+void NewTail::on_weightComboBox_currentIndexChanged(int index)
+{
+    if(index != 0){
+        ui->weightComboBox->setStyleSheet("");
+    }
+}
+
+void NewTail::on_buttonBox_accepted()
+{
+    DEB("Button Box Accepted.");
+    if(ui->registrationLineEdit->text().isEmpty()){
+        auto nope = new QMessageBox(this);
+        nope->setText("Registration cannot be empty.");
+        nope->show();
+    }else{
+        if(verify()){
+            DEB("Form verified");
+            auto acOut = createAircraftFromSelection();
+            //commit to database
+            //accept();
+        }else{
+            QMessageBox::StandardButton reply;
+            reply = QMessageBox::question(this, "Warning",
+                                          "Some recommended fields are empty.\n\n"
+                                          "If you do not fill out the aircraft details, "
+                                          "it will be impossible to automatically determine Single/Multi Pilot Times or Single/Multi Engine Time."
+                                          "This will also impact statistics and auto-logging capabilites.\n\n"
+                                          "It is highly recommended to fill in all the details.\n\n"
+                                          "Are you sure you want to proceed?",
+                                          QMessageBox::Yes|QMessageBox::No);
+            if (reply == QMessageBox::Yes)
+            {
+                //auto acOut = createAircraftFromSelection();
+                //commit to database (?)
+                //accept();
+            }
+        }
+    }
+}
+
+/// Functions
+
+/*!
+ * \brief NewTail::formFiller populates the Dialog with the
+ * information contained in an aircraft object.
+ * \param ac
+ */
+void NewTail::formFiller(aircraft ac)
+{
+    DEB("Filling Form for a/c" << ac);
+    if(!ac.registration.isEmpty()){
+        ui->registrationLineEdit->setText(ac.registration);
+    }
+
+    ui->companyLineEdit->setText(ac.company);
+    ui->makeLineEdit->setText(ac.make);
+    ui->modelLineEdit->setText(ac.model);
+    ui->variantLineEdit->setText(ac.variant);
+
+    if(ac.singlepilot){
+        ui->operationComboBox->setCurrentIndex(1);
+    }else if(ac.multipilot){
+        ui->operationComboBox->setCurrentIndex(2);
+    }
+
+    if(ac.unpowered){
+        ui->ppTypeComboBox->setCurrentIndex(1);
+    }else if(ac.piston){
+        ui->ppTypeComboBox->setCurrentIndex(2);
+    }else if(ac.turboprop){
+        ui->ppTypeComboBox->setCurrentIndex(3);
+    }else if(ac.jet){
+        ui->ppTypeComboBox->setCurrentIndex(4);
+    }
+
+    if(ac.singleengine){
+        ui->ppNumberComboBox->setCurrentIndex(1);
+    }else if(ac.multiengine){
+        ui->ppNumberComboBox->setCurrentIndex(2);
+    }
+
+    if(ac.light){
+        ui->weightComboBox->setCurrentIndex(1);
+    }else if(ac.medium){
+        ui->weightComboBox->setCurrentIndex(2);
+    }else if(ac.heavy){
+        ui->weightComboBox->setCurrentIndex(3);
+    }
+}
+
+/*!
+ * \brief NewTail::verify A simple check for empty recommended fields in the form
+ * \return true if all reconmmended fields are populated
+ */
+bool NewTail::verify()
+{
+    auto recommended_line_edits = parent()->findChildren<QLineEdit*>("registrationLineEdit");
+    recommended_line_edits.append(parent()->findChild<QLineEdit*>("makeLineEdit"));
+    recommended_line_edits.append(parent()->findChild<QLineEdit*>("modelLineEdit"));
+
+    auto recommended_combo_boxes = parent()->findChildren<QComboBox*>("operationComboBox");
+    recommended_combo_boxes.append(parent()->findChild<QComboBox*>("ppNumberComboBox"));
+    recommended_combo_boxes.append(parent()->findChild<QComboBox*>("ppTypeComboBox"));
+
+    for(const auto le : recommended_line_edits){
+        if(le->text() != ""){
+            recommended_line_edits.removeOne(le);
+            le->setStyleSheet("");
+        }else{
+            le->setStyleSheet("border: 1px solid red");
+            DEB("Not Good: " << le);
+        }
+    }
+    for(const auto cb : recommended_combo_boxes){
+        if(cb->currentIndex() != 0){
+
+            recommended_combo_boxes.removeOne(cb);
+            cb->setStyleSheet("");
+        }else{
+            cb->setStyleSheet("background: orange");
+            DEB("Not Good: " << cb);
+        }
+    }
+
+    if(recommended_line_edits.isEmpty() && recommended_combo_boxes.isEmpty()){
+        return true;
+    }else{
+        return false;
+    }
+}
+
+/*!
+ * \brief NewTail::createAircraftFromSelection Creates an aircraft object
+ * from the current ui selections
+ * \return
+ */
+aircraft NewTail::createAircraftFromSelection()
+{
+    auto newacft = aircraft();
+    newacft.registration = ui->registrationLineEdit->text();
+    newacft.company = ui->companyLineEdit->text();
+    newacft.make = ui->makeLineEdit->text();
+    newacft.model = ui->modelLineEdit->text();
+    newacft.variant = ui->variantLineEdit->text();
+
+    if(ui->operationComboBox->currentIndex() == 1){
+        newacft.singlepilot = true;
+    }else if(ui->operationComboBox->currentIndex() == 2){
+        newacft.multipilot = true;
+    }
+
+    if(ui->ppNumberComboBox->currentIndex() == 1){
+        newacft.singleengine = true;
+    }else if(ui->ppNumberComboBox->currentIndex() == 2){
+        newacft.multiengine = true;
+    }
+
+    if(ui->ppTypeComboBox->currentIndex() == 1){
+        newacft.unpowered = true;
+    }else if (ui->ppTypeComboBox->currentIndex() == 2) {
+        newacft.piston = true;
+    }else if (ui->ppTypeComboBox->currentIndex() == 3) {
+        newacft.turboprop = true;
+    }else if (ui->ppTypeComboBox->currentIndex() == 4) {
+        newacft.jet = true;
+    }
+
+    if(ui->weightComboBox->currentIndex() == 1){
+        newacft.light = true;
+    }else if (ui->weightComboBox->currentIndex() == 2) {
+        newacft.medium = true;
+    }else if (ui->weightComboBox->currentIndex() == 3) {
+        newacft.heavy = true;
+    }
+    return newacft;
+}

+ 34 - 2
src/gui/dialogues/newtail.h

@@ -20,28 +20,60 @@
 
 #include <QDialog>
 #include <QCompleter>
+#include <QMessageBox>
 #include "src/classes/completionlist.h"
+#include "src/classes/aircraft.h"
 
 namespace Ui {
 class NewTail;
 }
-
+/*!
+ * \brief The NewTail class is a dialog for adding a new tail to
+ * the database or editing an existing one.
+ *
+ * For a new tail, construct using QString reg.
+ * For editing an existing tail, provide the aircraft object.
+ */
 class NewTail : public QDialog
 {
     Q_OBJECT
 
 public:
-    explicit NewTail(QWidget *parent = nullptr);
+    explicit NewTail(aircraft acft, QWidget *parent = nullptr);
+
+    explicit NewTail(QString reg, QWidget *parent = nullptr);
+
     ~NewTail();
 
+
 private slots:
 
     void on_searchLineEdit_textChanged(const QString &arg1);
 
+    void on_buttonBox_accepted();
+
+    void on_operationComboBox_currentIndexChanged(int index);
+
+    void on_ppTypeComboBox_currentIndexChanged(int index);
+
+    void on_ppNumberComboBox_currentIndexChanged(int index);
+
+    void on_weightComboBox_currentIndexChanged(int index);
+
 private:
+
     Ui::NewTail *ui;
 
+    void formFiller(aircraft);
+
+    bool verify();
+
+    aircraft createAircraftFromSelection();
+
     QStringList aircraftlist;
+
+    QMap<QString, int> idMap;
+
 };
 
 #endif // NEWTAIL_H

+ 125 - 114
src/gui/dialogues/newtail.ui

@@ -6,90 +6,113 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>416</width>
-    <height>666</height>
+    <width>470</width>
+    <height>768</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Add New Aircraft</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="searchLabel">
-     <property name="text">
-      <string>Search</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1">
-    <widget class="QLineEdit" name="searchLineEdit">
+   <item row="2" column="1">
+    <widget class="QLineEdit" name="registrationLineEdit">
      <property name="maxLength">
       <number>20</number>
      </property>
      <property name="placeholderText">
-      <string>start typing to search for aircraft</string>
+      <string>mandatory</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="registrationLabel">
+   <item row="5" column="0">
+    <widget class="QLabel" name="modelLabel">
      <property name="text">
-      <string>Registration</string>
+      <string>Model</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="1">
-    <widget class="QLineEdit" name="registrationLineEdit">
+   <item row="4" column="1">
+    <widget class="QLineEdit" name="makeLineEdit">
      <property name="maxLength">
       <number>20</number>
      </property>
      <property name="placeholderText">
-      <string>mandatory</string>
+      <string>e.g. Boeing</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="companyLabel">
+   <item row="8" column="0">
+    <widget class="QLabel" name="powerPlantLabel">
      <property name="text">
-      <string>Company</string>
+      <string>Power Plant</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
-    <widget class="QLineEdit" name="companyLineEdit">
-     <property name="maxLength">
-      <number>20</number>
+   <item row="7" column="1">
+    <widget class="QComboBox" name="operationComboBox">
+     <property name="editable">
+      <bool>false</bool>
      </property>
-     <property name="placeholderText">
-      <string>optional</string>
+     <property name="currentText">
+      <string>&lt;Select&gt;</string>
      </property>
+     <item>
+      <property name="text">
+       <string>&lt;Select&gt;</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Single Pilot</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Multi Pilot</string>
+      </property>
+     </item>
     </widget>
    </item>
-   <item row="3" column="0">
-    <widget class="QLabel" name="makeLabel">
-     <property name="text">
-      <string>Make</string>
+   <item row="9" column="1">
+    <widget class="QComboBox" name="ppNumberComboBox">
+     <property name="currentText">
+      <string>&lt;Select&gt;</string>
      </property>
+     <item>
+      <property name="text">
+       <string>&lt;Select&gt;</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Single Engine</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Multi Engine</string>
+      </property>
+     </item>
     </widget>
    </item>
    <item row="3" column="1">
-    <widget class="QLineEdit" name="makeLineEdit">
+    <widget class="QLineEdit" name="companyLineEdit">
      <property name="maxLength">
       <number>20</number>
      </property>
      <property name="placeholderText">
-      <string>e.g. Boeing</string>
+      <string>optional</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="0">
-    <widget class="QLabel" name="modelLabel">
+   <item row="6" column="0">
+    <widget class="QLabel" name="variantLabel">
      <property name="text">
-      <string>Model</string>
+      <string>Variant</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="1">
+   <item row="5" column="1">
     <widget class="QLineEdit" name="modelLineEdit">
      <property name="maxLength">
       <number>20</number>
@@ -99,62 +122,71 @@
      </property>
     </widget>
    </item>
-   <item row="5" column="0">
-    <widget class="QLabel" name="variantLabel">
+   <item row="0" column="0">
+    <widget class="QLabel" name="searchLabel">
      <property name="text">
-      <string>Variant</string>
+      <string>Search</string>
      </property>
     </widget>
    </item>
-   <item row="5" column="1">
-    <widget class="QLineEdit" name="variantLineEdit">
+   <item row="7" column="0">
+    <widget class="QLabel" name="operationLabel">
+     <property name="text">
+      <string>Operation</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLineEdit" name="searchLineEdit">
      <property name="maxLength">
       <number>20</number>
      </property>
      <property name="placeholderText">
-      <string>e.g. 800</string>
+      <string>start typing to search for aircraft types</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="0">
-    <widget class="QLabel" name="operationLabel">
+   <item row="4" column="0">
+    <widget class="QLabel" name="makeLabel">
      <property name="text">
-      <string>Operation</string>
+      <string>Make</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="1">
-    <widget class="QComboBox" name="operationComboBox">
-     <property name="editable">
-      <bool>false</bool>
+   <item row="2" column="0">
+    <widget class="QLabel" name="registrationLabel">
+     <property name="text">
+      <string>Registration</string>
      </property>
-     <property name="currentText">
-      <string>Single Pilot</string>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
      </property>
-     <item>
-      <property name="text">
-       <string>Single Pilot</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>Multi Pilot</string>
-      </property>
-     </item>
     </widget>
    </item>
-   <item row="7" column="0">
-    <widget class="QLabel" name="powerPlantLabel">
-     <property name="text">
-      <string>Power Plant</string>
+   <item row="11" column="1">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
      </property>
     </widget>
    </item>
-   <item row="7" column="1">
+   <item row="8" column="1">
     <widget class="QComboBox" name="ppTypeComboBox">
      <property name="currentText">
-      <string>Unpowered</string>
+      <string>&lt;Select&gt;</string>
      </property>
+     <item>
+      <property name="text">
+       <string>&lt;Select&gt;</string>
+      </property>
+     </item>
      <item>
       <property name="text">
        <string>Unpowered</string>
@@ -177,32 +209,13 @@
      </item>
     </widget>
    </item>
-   <item row="8" column="1">
-    <widget class="QComboBox" name="ppNumberComboBox">
-     <property name="currentText">
-      <string>Single Engine</string>
-     </property>
-     <item>
-      <property name="text">
-       <string>Single Engine</string>
-      </property>
-     </item>
+   <item row="10" column="1">
+    <widget class="QComboBox" name="weightComboBox">
      <item>
       <property name="text">
-       <string>Multi Engine</string>
+       <string>&lt;Select&gt;</string>
       </property>
      </item>
-    </widget>
-   </item>
-   <item row="9" column="0">
-    <widget class="QLabel" name="weightLabel">
-     <property name="text">
-      <string>Weight Class</string>
-     </property>
-    </widget>
-   </item>
-   <item row="9" column="1">
-    <widget class="QComboBox" name="weightComboBox">
      <item>
       <property name="text">
        <string>Light</string>
@@ -220,13 +233,27 @@
      </item>
     </widget>
    </item>
-   <item row="10" column="1">
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+   <item row="10" column="0">
+    <widget class="QLabel" name="weightLabel">
+     <property name="text">
+      <string>Weight Class</string>
      </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+    </widget>
+   </item>
+   <item row="6" column="1">
+    <widget class="QLineEdit" name="variantLineEdit">
+     <property name="maxLength">
+      <number>20</number>
+     </property>
+     <property name="placeholderText">
+      <string>e.g. 800</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="companyLabel">
+     <property name="text">
+      <string>Company</string>
      </property>
     </widget>
    </item>
@@ -234,22 +261,6 @@
  </widget>
  <resources/>
  <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>NewTail</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
   <connection>
    <sender>buttonBox</sender>
    <signal>rejected()</signal>
@@ -257,8 +268,8 @@
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
+     <x>406</x>
+     <y>706</y>
     </hint>
     <hint type="destinationlabel">
      <x>286</x>

+ 11 - 7
src/gui/widgets/homewidget.cpp

@@ -28,7 +28,7 @@ homeWidget::homeWidget(QWidget *parent) :
     ui(new Ui::homeWidget)
 {
     ui->setupUi(this);
-    ui->totalTimeThisYearDisplay->setText(
+    /*ui->totalTimeThisYearDisplay->setText(
                 calc::minutes_to_string(
                 stat::totalTime(stat::calendarYear)));
     ui->totalTime365DaysDisplay->setText(
@@ -40,9 +40,9 @@ homeWidget::homeWidget(QWidget *parent) :
     {
         ToLdg += item;
         if(toldg.indexOf(item) != toldg.length()-1) {ToLdg += QLatin1String(" / ");}
-    }
+    }*/
 
-    ui->ToLdgDisplay->setText(ToLdg);
+    //ui->ToLdgDisplay->setText(ToLdg);
 }
 
 homeWidget::~homeWidget()
@@ -52,8 +52,12 @@ homeWidget::~homeWidget()
 
 void homeWidget::on_pushButton_clicked()
 {
-    //auto nt = new NewTail(this);
-    //nt->show();
-    auto ac = aircraft::fromTails(1);
-    DEB(ac);
+    aircraft ac(203,aircraft::tail);
+
+    auto nt = new NewTail("SE-NEU",this);
+    nt->show();
+    //aircraft ac2(114,aircraft::acft);
+    //aircraft ac3(0,aircraft::acft);
+    //DEB(ac << ac2 << ac3);
+
 }