Browse Source

new custom Date Edit in NewFlight Dialog

fiffty-50 4 years ago
parent
commit
08285d9dab
2 changed files with 62 additions and 47 deletions
  1. 26 38
      src/gui/dialogues/newflight.cpp
  2. 36 9
      src/gui/dialogues/newflight.ui

+ 26 - 38
src/gui/dialogues/newflight.cpp

@@ -33,22 +33,6 @@ void NewFlight::on_verifyButton_clicked()//debug button
     collectAdditionalData();
 }
 
-bool NewFlight::eventFilter(QObject* object, QEvent* event)
-{
-    if(object == ui->doftLineEdit && event->type() == QEvent::MouseButtonPress) {
-        on_doftLineEditEntered();
-        return false; // lets the event continue to the edit
-    } else if (object == ui->calendarWidget && event->type() == QEvent::Leave) {
-        ui->doftLineEdit->blockSignals(false);
-        ui->calendarWidget->hide();
-        ui->placeLabel1->resize(ui->placeLabel2->size());
-        ui->doftLineEdit->setFocus();
-        return false;
-    }
-    return false;
-}
-
-
 static const auto IATA_RX = QLatin1String("[a-zA-Z0-9]{3}");
 static const auto ICAO_RX = QLatin1String("[a-zA-Z0-9]{4}");
 static const auto NAME_RX = QLatin1String("(\\p{L}+('|\\-)?)");//(\\p{L}+(\\s|'|\\-)?\\s?(\\p{L}+)?\\s?)
@@ -125,6 +109,22 @@ NewFlight::~NewFlight()
     delete ui;
 }
 
+bool NewFlight::eventFilter(QObject* object, QEvent* event)
+{
+    if(object == ui->doftLineEdit && event->type() == QEvent::MouseButtonPress) {
+        on_doftLineEditEntered();
+        return false; // let the event continue to the edit
+    } /*else if (object == this && event->type() == QEvent::Leave) {
+        DEBUG("calendarWidget left.");
+        //ui->doftLineEdit->blockSignals(false);
+        //ui->calendarWidget->hide();
+        //ui->placeLabel1->resize(ui->placeLabel2->size());
+        //ui->doftLineEdit->setFocus();
+        return false;
+    }*/
+    return false;
+}
+
 void NewFlight::setup(){
     auto db = Db::Database();
 
@@ -344,10 +344,6 @@ void NewFlight::formFiller(Flight oldFlight)
     for(const auto& le : mandatoryLineEdits){
         emit le->editingFinished();
     }
-    //DEBUG("Filled: ");
-    //DEBUG(filled);
-    //DEBUG("Unfilled: ");
-    //DEBUG(line_edits_names);
 }
 
 /*
@@ -379,9 +375,8 @@ inline void NewFlight::setupLineEdit(QLineEdit* line_edit, LineEditSettings sett
     completer->setCompletionMode(QCompleter::PopupCompletion);
     completer->setCompletionColumn(sql_col.column());
     completer->setFilterMode(Qt::MatchContains);
-    /*if(QRegularExpression("\\w+Loc").match(line_edit_objectName).hasMatch()) { completer->setFilterMode(Qt::MatchContains); }
-    if(QRegularExpression("\\w+Acft").match(line_edit_objectName).hasMatch()) { completer->setFilterMode(Qt::MatchContains); }
-    if(QRegularExpression("\\w+Name").match(line_edit_objectName).hasMatch()) { completer->setFilterMode(Qt::MatchContains); }*/
+    //if(QRegularExpression("\\w+Loc").match(line_edit_objectName).hasMatch()) { completer->setFilterMode(Qt::MatchContains); }
+
 
     line_edit->setValidator(validator);
     line_edit->setCompleter(completer);
@@ -967,28 +962,28 @@ void NewFlight::on_doftLineEditEntered()
 {
     const auto& cw = ui->calendarWidget;
     const auto& le = ui->doftLineEdit;
-    const auto& label = ui->placeLabel1;
+    const auto& anchor = ui->placeLabel1;
 
     if(cw->isVisible()){
         le->blockSignals(false);
-        DEBUG("Enabling line edit signals for: " << le->objectName());
+        DEBUG("cw visible. Enabling line edit signals for: " << le->objectName());
         cw->hide();
-        label->resize(ui->placeLabel2->size());
+        anchor->resize(ui->placeLabel2->size());
         le->setFocus();
     } else {
         le->blockSignals(true);
         DEBUG("Disabling line edit signals for: " << le->objectName());
         // Determine size based on layout coordinates
-        int c1 = label->pos().rx();
+        int c1 = anchor->pos().rx();
         int c2 = le->pos().rx();
         int z  = le->size().rwidth();
-        int x = (c2 - c1) + z;
-        c1 = label->pos().ry();
+        int x = (c2 - c1)+ z;
+        c1 = anchor->pos().ry();
         c2 = ui->acftLineEdit->pos().ry();
         z  = ui->acftLineEdit->size().height();
         int y = (c2 - c1) + z;
         //Re-size calendar and parent label accordingly
-        label->resize(x, y);
+        anchor->resize(x, y);
         cw->setParent(ui->placeLabel1);
         cw->setGeometry(QRect(0, 0, x, y));
         cw->show();
@@ -999,17 +994,12 @@ void NewFlight::on_doftLineEditEntered()
 void NewFlight::date_clicked(const QDate &date)
 {
     DEBUG("Date clicked: " << date);
-
     const auto& le = ui->doftLineEdit;
     le->blockSignals(false);
     ui->calendarWidget->hide();
     ui->placeLabel1->resize(ui->placeLabel2->size());
     le->setText(date.toString(Qt::ISODate));
     le->setFocus();
-
-    //const auto& le = ui->doftLineEdit;
-    //le->setText(date.toString(Qt::ISODate));
-    //le->setFocus();
 }
 
 void NewFlight::date_selected(const QDate &date)
@@ -1038,7 +1028,7 @@ void NewFlight::on_doftLineEdit_editingFinished()
     auto line_edit = ui->doftLineEdit;
     auto text = ui->doftLineEdit->text();
 
-    {//try to correct input if only numbers are entered
+    {//try to correct input if only numbers are entered, eg 20200101
         const QSignalBlocker blocker(line_edit);
         if(text.length() == 8) {
             text.insert(4,'-');
@@ -1051,9 +1041,7 @@ void NewFlight::on_doftLineEdit_editingFinished()
             }
         }
     }
-
     auto date = QDate::fromString(text, Qt::ISODate);
-    // check input
     if(date.isValid()){
         onEditingFinishedCleanup(line_edit);
         const QSignalBlocker blocker(line_edit);

+ 36 - 9
src/gui/dialogues/newflight.ui

@@ -17,7 +17,7 @@
    <item row="0" column="0" colspan="3">
     <widget class="QTabWidget" name="flightDataTabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>2</number>
      </property>
      <widget class="QWidget" name="flightDataTab">
       <attribute name="title">
@@ -822,21 +822,22 @@
       </layout>
       <zorder>placeLabel2</zorder>
       <zorder>deptLocLineEdit</zorder>
+      <zorder>destLabel</zorder>
       <zorder>deptNameLabel</zorder>
       <zorder>acftLineEdit</zorder>
+      <zorder>deptLabel</zorder>
       <zorder>destLocLineEdit</zorder>
-      <zorder>acftTypeLabel</zorder>
+      <zorder>acftLabel</zorder>
       <zorder>destNameLabel</zorder>
+      <zorder>acftTypeLabel</zorder>
       <zorder>doftLineEdit</zorder>
       <zorder>tofbLabel</zorder>
       <zorder>secondPilotLabel</zorder>
-      <zorder>deptLabel</zorder>
       <zorder>autoDualLabel</zorder>
       <zorder>tDualLabel</zorder>
       <zorder>tPICLabel</zorder>
       <zorder>autoPICLabel</zorder>
       <zorder>tonbLabel</zorder>
-      <zorder>placeLabel1</zorder>
       <zorder>autoPicusLabel</zorder>
       <zorder>tSICLabel</zorder>
       <zorder>tIFRLabel</zorder>
@@ -857,7 +858,6 @@
       <zorder>secondPilotNameLineEdit</zorder>
       <zorder>thirdPilotNameLineEdit</zorder>
       <zorder>autoMPLabel</zorder>
-      <zorder>acftLabel</zorder>
       <zorder>picNameLineEdit</zorder>
       <zorder>destTZ</zorder>
       <zorder>RemarksLabel</zorder>
@@ -866,13 +866,13 @@
       <zorder>FlightNumberLineEdit</zorder>
       <zorder>autoIFRLabel</zorder>
       <zorder>line</zorder>
-      <zorder>destLabel</zorder>
       <zorder>autoTotalLabel</zorder>
       <zorder>autoFILabel</zorder>
       <zorder>tFILabel</zorder>
       <zorder>autoSICLabel</zorder>
       <zorder>FlightNumberLabel</zorder>
       <zorder>doftDisplayLabel</zorder>
+      <zorder>placeLabel1</zorder>
      </widget>
      <widget class="QWidget" name="autoLoggingTab">
       <attribute name="title">
@@ -1396,7 +1396,17 @@
       </attribute>
       <layout class="QGridLayout" name="gridLayout_4">
        <item row="0" column="0">
-        <widget class="QCalendarWidget" name="calendarWidget"/>
+        <widget class="QCalendarWidget" name="calendarWidget">
+         <property name="gridVisible">
+          <bool>false</bool>
+         </property>
+         <property name="horizontalHeaderFormat">
+          <enum>QCalendarWidget::SingleLetterDayNames</enum>
+         </property>
+         <property name="verticalHeaderFormat">
+          <enum>QCalendarWidget::NoVerticalHeader</enum>
+         </property>
+        </widget>
        </item>
       </layout>
      </widget>
@@ -1429,6 +1439,7 @@
   </layout>
  </widget>
  <tabstops>
+  <tabstop>doftLineEdit</tabstop>
   <tabstop>deptLocLineEdit</tabstop>
   <tabstop>tofbTimeLineEdit</tabstop>
   <tabstop>destLocLineEdit</tabstop>
@@ -1439,10 +1450,26 @@
   <tabstop>thirdPilotNameLineEdit</tabstop>
   <tabstop>FlightNumberLineEdit</tabstop>
   <tabstop>RemarksLineEdit</tabstop>
-  <tabstop>destTZ</tabstop>
+  <tabstop>FunctionComboBox</tabstop>
+  <tabstop>ApproachComboBox</tabstop>
+  <tabstop>TakeoffCheckBox</tabstop>
+  <tabstop>TakeoffSpinBox</tabstop>
+  <tabstop>LandingCheckBox</tabstop>
+  <tabstop>LandingSpinBox</tabstop>
+  <tabstop>AutolandCheckBox</tabstop>
+  <tabstop>AutolandSpinBox</tabstop>
+  <tabstop>PilotFlyingCheckBox</tabstop>
+  <tabstop>PilotMonitoringCheckBox</tabstop>
+  <tabstop>VfrCheckBox</tabstop>
+  <tabstop>IfrCheckBox</tabstop>
+  <tabstop>setAsDefaultButton</tabstop>
+  <tabstop>restoreDefaultButton</tabstop>
+  <tabstop>manualEditingCheckBox</tabstop>
+  <tabstop>tblkTimeLineEdit</tabstop>
   <tabstop>verifyButton</tabstop>
   <tabstop>verifyEdit</tabstop>
-  <tabstop>deptTZ</tabstop>
+  <tabstop>calendarWidget</tabstop>
+  <tabstop>flightDataTabWidget</tabstop>
  </tabstops>
  <resources/>
  <connections/>