Browse Source

Merge pull request #84 from fiffty-50/develop

UI Redesign
Felix Turowsky 3 years ago
parent
commit
853602a8f0
100 changed files with 3356 additions and 1502 deletions
  1. 2 4
      CMakeLists.txt
  2. 1 1
      README.md
  3. 2 2
      assets/database/templates/aircraft.json
  4. 1 1
      assets/database/templates/aircraft.md5
  5. 112 112
      assets/database/templates/airports.json
  6. 1 1
      assets/database/templates/airports.md5
  7. 0 4
      assets/templates.qrc
  8. 1 1
      deprecated/adatabasesetup.cpp
  9. 0 0
      deprecated/adatabasesetup.h
  10. 0 0
      deprecated/aircraft.csv
  11. 0 0
      deprecated/airports.csv
  12. 0 0
      deprecated/changelog.csv
  13. 0 0
      deprecated/currencies.csv
  14. 0 0
      deprecated/oldnewflight.ui
  15. 1232 0
      deprecated/oldnewflightdialog.cpp
  16. 216 0
      deprecated/oldnewflightdialog.h
  17. 0 0
      deprecated/sample_flights.csv
  18. 0 0
      deprecated/sample_pilots.csv
  19. 0 0
      deprecated/sample_tails.csv
  20. 0 0
      docs/.nojekyll
  21. 7 9
      docs/html/aaircraftentry_8h_source.html
  22. 103 129
      docs/html/acalc_8h_source.html
  23. 133 0
      docs/html/acompletiondata_8h_source.html
  24. 8 10
      docs/html/acurrencyentry_8h_source.html
  25. 181 160
      docs/html/adatabase_8h_source.html
  26. 8 10
      docs/html/adatabasetypes_8h_source.html
  27. 31 21
      docs/html/adate_8h_source.html
  28. 15 10
      docs/html/adatetime_8h_source.html
  29. 14 13
      docs/html/adbsetup_8h_source.html
  30. 6 8
      docs/html/adownload_8h_source.html
  31. 31 38
      docs/html/aentry_8h_source.html
  32. 10 12
      docs/html/aflightentry_8h_source.html
  33. 9 11
      docs/html/ahash_8h_source.html
  34. 67 68
      docs/html/aircraftwidget_8h_source.html
  35. 10 12
      docs/html/ajson_8h_source.html
  36. 9 11
      docs/html/alog_8h_source.html
  37. 46 41
      docs/html/annotated.html
  38. 13 3
      docs/html/annotated_dup.js
  39. 7 9
      docs/html/apilotentry_8h_source.html
  40. 8 8
      docs/html/areadcsv_8h_source.html
  41. 6 8
      docs/html/arunguard_8h_source.html
  42. 60 67
      docs/html/asettings_8h_source.html
  43. 12 14
      docs/html/astandardpaths_8h_source.html
  44. 5 7
      docs/html/astat_8h_source.html
  45. 54 46
      docs/html/astyle_8h_source.html
  46. 7 9
      docs/html/atailentry_8h_source.html
  47. 129 104
      docs/html/atime_8h_source.html
  48. 7 9
      docs/html/atimer_8h_source.html
  49. 7 9
      docs/html/atranslator_8h_source.html
  50. 47 50
      docs/html/backupwidget_8h_source.html
  51. 115 0
      docs/html/class_a_completion_data-members.html
  52. 163 0
      docs/html/class_a_completion_data.html
  53. 16 0
      docs/html/class_a_completion_data.js
  54. 22 23
      docs/html/class_a_database-members.html
  55. 58 57
      docs/html/class_a_database.html
  56. 8 7
      docs/html/class_a_database.js
  57. 4 6
      docs/html/class_a_database_error-members.html
  58. 5 8
      docs/html/class_a_database_error.html
  59. 12 9
      docs/html/class_a_date-members.html
  60. 30 15
      docs/html/class_a_date.html
  61. 4 6
      docs/html/class_a_download-members.html
  62. 4 6
      docs/html/class_a_download.html
  63. 12 13
      docs/html/class_a_entry-members.html
  64. 14 12
      docs/html/class_a_entry.html
  65. 3 2
      docs/html/class_a_entry.js
  66. 4 6
      docs/html/class_a_file_standard_item-members.html
  67. 4 6
      docs/html/class_a_file_standard_item.html
  68. 15 16
      docs/html/class_a_flight_entry-members.html
  69. 17 15
      docs/html/class_a_flight_entry.html
  70. 4 6
      docs/html/class_a_hash-members.html
  71. 4 6
      docs/html/class_a_hash.html
  72. 4 6
      docs/html/class_a_json-members.html
  73. 5 7
      docs/html/class_a_json.html
  74. 4 6
      docs/html/class_a_run_guard-members.html
  75. 4 6
      docs/html/class_a_run_guard.html
  76. 9 10
      docs/html/class_a_settings-members.html
  77. 43 50
      docs/html/class_a_settings.html
  78. 1 8
      docs/html/class_a_settings.js
  79. 5 7
      docs/html/class_a_standard_paths-members.html
  80. 18 20
      docs/html/class_a_standard_paths.html
  81. 12 13
      docs/html/class_a_style-members.html
  82. 7 6
      docs/html/class_a_style.html
  83. 4 6
      docs/html/class_a_timer-members.html
  84. 4 6
      docs/html/class_a_timer.html
  85. 4 6
      docs/html/class_a_translator-members.html
  86. 4 6
      docs/html/class_a_translator.html
  87. 4 6
      docs/html/class_aircraft_widget-members.html
  88. 5 7
      docs/html/class_aircraft_widget.html
  89. 4 6
      docs/html/class_backup_widget-members.html
  90. 4 6
      docs/html/class_backup_widget.html
  91. 4 6
      docs/html/class_debug_widget-members.html
  92. 4 6
      docs/html/class_debug_widget.html
  93. 4 6
      docs/html/class_first_run_dialog-members.html
  94. 34 7
      docs/html/class_first_run_dialog.html
  95. 4 6
      docs/html/class_home_widget-members.html
  96. 4 6
      docs/html/class_home_widget.html
  97. 5 7
      docs/html/class_logbook_widget-members.html
  98. 7 9
      docs/html/class_logbook_widget.html
  99. 1 1
      docs/html/class_logbook_widget.js
  100. 8 9
      docs/html/class_new_flight_dialog-members.html

+ 2 - 4
CMakeLists.txt

@@ -8,7 +8,7 @@ set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTORCC ON)
 
-set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(QT_MIN_VERSION "5.5.1")
@@ -39,7 +39,6 @@ set(PROJECT_SOURCES
     src/classes/ajson.cpp
     src/classes/ahash.cpp
     src/database/adatabase.cpp
-    src/database/adatabasesetup.cpp
     src/database/adbsetup.cpp
     src/functions/acalc.cpp
     src/functions/alog.cpp
@@ -77,7 +76,6 @@ set(PROJECT_SOURCES
     src/classes/ajson.h
     src/classes/ahash.h
     src/database/adatabase.h
-    src/database/adatabasesetup.h
     src/database/adbsetup.h
     src/database/adatabasetypes.h
     src/functions/acalc.h
@@ -102,7 +100,7 @@ set(PROJECT_SOURCES
     
     mainwindow.ui
     src/gui/dialogues/firstrundialog.ui
-    src/gui/dialogues/newflight.ui
+    src/gui/dialogues/newflightdialog.ui
     src/gui/dialogues/newpilot.ui
     src/gui/dialogues/newtail.ui
     src/gui/widgets/aircraftwidget.ui

+ 1 - 1
README.md

@@ -14,7 +14,7 @@ openPilotLog is currently in development, so no release is provided yet. If you
 
 If you want to learn more about this project, check out the [wiki](https://github.com/fiffty-50/openpilotlog/wiki) or the [blog](https://turowsky.eu/)!
 
-For developers, the code documentation can be found at our [doxygen](https://fiffty-50.github.io/openpilotlog/) pages. If you are interested in contributing to the project, you can get in touch [here](mailto:felix.turo@gmail.com?subject=[GitHub]%20Contributing%20to%20openPilotLog).
+For developers, the code documentation can be found at our [doxygen](https://fiffty-50.github.io/openPilotLog/) pages. If you are interested in contributing to the project, you can get in touch [here](mailto:felix.turo@gmail.com?subject=[GitHub]%20Contributing%20to%20openPilotLog).
 
 # How does it look like?
 

+ 2 - 2
assets/database/templates/aircraft.json

@@ -699,7 +699,7 @@
         "multipilot": 1,
         "name": null,
         "variant": "200",
-        "weightClass": null
+        "weightClass": 1
     },
     {
         "aircraft_id": 54,
@@ -712,7 +712,7 @@
         "multipilot": 1,
         "name": null,
         "variant": null,
-        "weightClass": null
+        "weightClass": 1
     },
     {
         "aircraft_id": 55,

+ 1 - 1
assets/database/templates/aircraft.md5

@@ -1 +1 @@
-80ba2debfd085e21fcf7602a9f473471  aircraft.json
+169ebcc94b62d82f8d29e25e6a1b1518 aircraft.json

+ 112 - 112
assets/database/templates/airports.json

@@ -3943,7 +3943,7 @@
         "icao": "EDBM",
         "lat": 52.073612,
         "long": 11.626389,
-        "name": "\"\"\"Magdeburg \"\"\"\"City\"\"\"\" Airport\"\"\"",
+        "name": "Magdeburg City Airport",
         "tzolson": "Europe/Berlin",
         "utcoffset": 1
     },
@@ -7585,14 +7585,14 @@
     },
     {
         "airport_id": 633,
-        "alt": "Norway",
-        "country": "16.678100585938",
+        "alt": 85,
+        "country": "Norway",
         "iata": "EVE",
         "icao": "ENEV",
-        "lat": "\"Evenes\"\"\"",
-        "long": 68.491302490234,
-        "name": "\"\"\"Harstad/Narvik Airport\"",
-        "tzolson": "1",
+        "lat": 68.491302490234,
+        "long": 16.678100585938,
+        "name": "Evenes Harstad/Narvik Airport",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 84
     },
     {
@@ -7777,26 +7777,26 @@
     },
     {
         "airport_id": 649,
-        "alt": "Norway",
-        "country": "10.785439",
+        "alt": 173,
+        "country": "Norway",
         "iata": "RYG",
         "icao": "ENRY",
-        "lat": "\"Rygge\"\"\"",
-        "long": 59.378817,
-        "name": "\"\"\"Moss Airport\"",
-        "tzolson": "1",
+        "lat": 59.378817,
+        "long": 10.785439,
+        "name": "Rygge Moss Airport",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 174
     },
     {
         "airport_id": 650,
-        "alt": "Norway",
-        "country": "15.465600013733",
+        "alt": 94,
+        "country": "Norway",
         "iata": "LYR",
         "icao": "ENSB",
-        "lat": "\"Longyear\"\"\"",
-        "long": 78.246101379395,
-        "name": "\"\"\"Svalbard Airport\"",
-        "tzolson": "1",
+        "lat": 78.246101379395,
+        "long": 15.465600013733,
+        "name": "Longyear Svalbard Airport",
+        "tzolson": "Europe/Arctic",
         "utcoffset": 88
     },
     {
@@ -7837,26 +7837,26 @@
     },
     {
         "airport_id": 654,
-        "alt": "Norway",
-        "country": "18.9188995361328",
+        "alt": 32,
+        "country": "Norway",
         "iata": "TOS",
         "icao": "ENTC",
-        "lat": "\"\"\"\"",
-        "long": 69.6832962036133,
-        "name": "\"\"\"Tromsø Airport\"",
-        "tzolson": "1",
+        "lat": 69.6832962036133,
+        "long": 18.9188995361328,
+        "name": "Tromsø Airport",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 31
     },
     {
         "airport_id": 655,
-        "alt": "Norway",
-        "country": "10.258600235",
+        "alt": 285,
+        "country": "Norway",
         "iata": "TRF",
         "icao": "ENTO",
-        "lat": "\"Torp\"\"\"",
-        "long": 59.1866989136,
-        "name": "\"\"\"Sandefjord Airport\"",
-        "tzolson": "1",
+        "lat": 59.1866989136,
+        "long": 10.258600235,
+        "name": "Torp Sandefjord Airport",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 286
     },
     {
@@ -7987,7 +7987,7 @@
         "icao": "EPSC",
         "lat": 53.5847015381,
         "long": 14.9021997452,
-        "name": "\"\"\"Szczecin-Goleniów \"\"\"\"Solidarność\"\"\"\" Airport\"\"\"",
+        "name": "Szczecin-Goleniów Solidarność Airport",
         "tzolson": "Europe/Warsaw",
         "utcoffset": 1
     },
@@ -15715,7 +15715,7 @@
         "icao": "LFLX",
         "lat": 46.860278,
         "long": 1.721111,
-        "name": "\"\"\"Châteauroux-Déols \"\"\"\"Marcel Dassault\"\"\"\" Airport\"\"\"",
+        "name": "Châteauroux-Déols Marcel Dassault Airport",
         "tzolson": "Europe/Paris",
         "utcoffset": 1
     },
@@ -17419,7 +17419,7 @@
         "icao": "LGZA",
         "lat": 37.7509,
         "long": 20.8843,
-        "name": "\"\"\"Zakynthos International Airport \"\"\"\"Dionysios Solomos\"\"\"\"\"\"\"",
+        "name": "Zakynthos International Airport Dionysios Solomos",
         "tzolson": "Europe/Athens",
         "utcoffset": 2
     },
@@ -17551,7 +17551,7 @@
         "icao": "LIBF",
         "lat": 41.432899,
         "long": 15.535,
-        "name": "\"\"\"Foggia \"\"\"\"Gino Lisa\"\"\"\" Airport\"\"\"",
+        "name": "Foggia Gino Lisa Airport",
         "tzolson": "Europe/Rome",
         "utcoffset": 1
     },
@@ -17563,7 +17563,7 @@
         "icao": "LIBG",
         "lat": 40.517502,
         "long": 17.4032,
-        "name": "\"\"\"Taranto-Grottaglie \"\"\"\"Marcello Arlotta\"\"\"\" Airport\"\"\"",
+        "name": "Taranto-Grottaglie Marcello Arlotta Airport",
         "tzolson": "Europe/Rome",
         "utcoffset": 1
     },
@@ -32203,7 +32203,7 @@
         "icao": "SVCB",
         "lat": 8.12216091156,
         "long": -63.5369567871,
-        "name": "\"\"\"Aeropuerto \"\"\"\"General Tomas de Heres\"\"\"\". Ciudad Bolivar\"\"\"",
+        "name": "Aeropuerto General Tomas de Heres Ciudad Bolivar",
         "tzolson": "America/Caracas",
         "utcoffset": -4
     },
@@ -36829,15 +36829,15 @@
     },
     {
         "airport_id": 3070,
-        "alt": "Indonesia",
-        "country": "128.089004517",
+        "alt": 33,
+        "country": "Indonesia",
         "iata": "AMQ",
         "icao": "WAPP",
-        "lat": "\"Ambon\"\"\"",
-        "long": -3.7102599144,
-        "name": "\"\"\"Pattimura Airport\"",
-        "tzolson": "9",
-        "utcoffset": 33
+        "lat": -3.7102599144,
+        "long": 128.089004517,
+        "name": "Ambon Pattimura Airport",
+        "tzolson": "Asia/Jayapura",
+        "utcoffset": 9
     },
     {
         "airport_id": 3071,
@@ -37765,15 +37765,15 @@
     },
     {
         "airport_id": 3148,
-        "alt": "Australia",
-        "country": "144.753006",
+        "alt": 14,
+        "country": "Australia",
         "iata": null,
         "icao": "YMPC",
-        "lat": "\"Point Cook Base\"\"\"",
-        "long": -37.932201,
-        "name": "\"\"\"RAAF Williams\"",
-        "tzolson": "10",
-        "utcoffset": 14
+        "lat": -37.932201,
+        "long": 144.753006,
+        "name": "Point Cook Base RAAF Williams",
+        "tzolson": "Australia/Melbourne",
+        "utcoffset": 10
     },
     {
         "airport_id": 3149,
@@ -38929,15 +38929,15 @@
     },
     {
         "airport_id": 3245,
-        "alt": "United States",
-        "country": "-91.9356",
+        "alt": 206,
+        "country": "United States",
         "iata": "PBF",
         "icao": "KPBF",
-        "lat": "\"Grider Field\"\"\"",
-        "long": 34.1731,
-        "name": "\"\"\"Pine Bluff Regional Airport\"",
-        "tzolson": "-6",
-        "utcoffset": 206
+        "lat": 34.1731,
+        "long": -91.9356,
+        "name": "Grider Field Pine Bluff Regional Airport",
+        "tzolson": "America/Chicago",
+        "utcoffset": -6
     },
     {
         "airport_id": 3246,
@@ -40435,7 +40435,7 @@
         "icao": "PAAQ",
         "lat": 61.594898,
         "long": -149.08901,
-        "name": "\"\"\"Warren \"\"\"\"Bud\"\"\"\" Woods Palmer Municipal Airport\"\"\"",
+        "name": "Warren Bud Woods Palmer Municipal Airport",
         "tzolson": "America/Anchorage",
         "utcoffset": -9
     },
@@ -40837,15 +40837,15 @@
     },
     {
         "airport_id": 3404,
-        "alt": "United States",
-        "country": "-87.307602",
+        "alt": 589,
+        "country": "United States",
         "iata": "HUF",
         "icao": "KHUF",
-        "lat": "\"Hulman Field\"\"\"",
-        "long": 39.4515,
-        "name": "\"\"\"Terre Haute Regional Airport\"",
-        "tzolson": "-5",
-        "utcoffset": 589
+        "lat": 39.4515,
+        "long": -87.307602,
+        "name": "Hulman Field Terre Haute Regional Airport",
+        "tzolson": "America/Indiana",
+        "utcoffset": -5
     },
     {
         "airport_id": 3405,
@@ -48913,14 +48913,14 @@
     },
     {
         "airport_id": 4077,
-        "alt": "Norway",
-        "country": "6.0741000175476",
+        "alt": 243,
+        "country": "Norway",
         "iata": "HOV",
         "icao": "ENOV",
-        "lat": "\"Hovden\"\"\"",
-        "long": 62.180000305176,
-        "name": "\"\"\"Ørsta-Volda Airport\"",
-        "tzolson": "1",
+        "lat": 62.180000305176,
+        "long": 6.0741000175476,
+        "name": "Hovden Ørsta-Volda Airport",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 243
     },
     {
@@ -48973,14 +48973,14 @@
     },
     {
         "airport_id": 4082,
-        "alt": "Norway",
-        "country": "10.6171998977661",
+        "alt": 56,
+        "country": "Norway",
         "iata": "FBU",
         "icao": "ENFB",
-        "lat": "\"Fornebu Airport\"\"\"",
-        "long": 59.8958015441895,
-        "name": "\"\"\"Oslo\"",
-        "tzolson": "1",
+        "lat": 59.8958015441895,
+        "long": 10.6171998977661,
+        "name": "Fornebu Airport Oslo",
+        "tzolson": "Europe/Oslo",
         "utcoffset": 0
     },
     {
@@ -51445,27 +51445,27 @@
     },
     {
         "airport_id": 4288,
-        "alt": "Norway",
-        "country": "14.301400184631",
+        "alt": 229,
+        "country": "Norway",
         "iata": "MQN",
         "icao": "ENRA",
-        "lat": "\"Røssvoll\"\"\"",
-        "long": 66.363899230957,
-        "name": "\"\"\"Mo i Rana Airport\"",
-        "tzolson": "1",
-        "utcoffset": 229
+        "lat": 66.363899230957,
+        "long": 14.301400184631,
+        "name": "Røssvoll Mo i Rana Airport",
+        "tzolson": "Europe/Oslo",
+        "utcoffset": 1
     },
     {
         "airport_id": 4289,
-        "alt": "Norway",
-        "country": "11.14610004425",
+        "alt": 14,
+        "country": "Norway",
         "iata": "RVK",
         "icao": "ENRM",
-        "lat": "\"Ryum\"\"\"",
-        "long": 64.838302612305,
-        "name": "\"\"\"Rørvik Airport\"",
-        "tzolson": "1",
-        "utcoffset": 14
+        "lat": 64.838302612305,
+        "long": 11.14610004425,
+        "name": "Ryum Rørvik Airport",
+        "tzolson": "Europe/Oslo",
+        "utcoffset": 1
     },
     {
         "airport_id": 4290,
@@ -51529,15 +51529,15 @@
     },
     {
         "airport_id": 4295,
-        "alt": "Norway",
-        "country": "31.044900894165",
+        "alt": 42,
+        "country": "Norway",
         "iata": "VAW",
         "icao": "ENSS",
-        "lat": "\"Svartnes\"\"\"",
-        "long": 70.355400085449,
-        "name": "\"\"\"Vardø Airport\"",
-        "tzolson": "1",
-        "utcoffset": 42
+        "lat": 70.355400085449,
+        "long": 31.044900894165,
+        "name": "Svartnes Vardø Airport",
+        "tzolson": "Europe/Oslo",
+        "utcoffset": 1
     },
     {
         "airport_id": 4296,
@@ -62785,14 +62785,14 @@
     },
     {
         "airport_id": 5233,
-        "alt": "Australia",
-        "country": "144.746002197266",
+        "alt": 14,
+        "country": "Australia",
         "iata": null,
         "icao": "YLVT",
-        "lat": "\"Laverton Base\"\"\"",
-        "long": -37.8636016845703,
-        "name": "\"\"\"RAAF Williams\"",
-        "tzolson": "10",
+        "lat": -37.8636016845703,
+        "long": 144.746002197266,
+        "name": "RAAF Williams Laverton Base",
+        "tzolson": "Australia/Sydney",
         "utcoffset": 18
     },
     {
@@ -91609,15 +91609,15 @@
     },
     {
         "airport_id": 7635,
-        "alt": "South Sudan",
-        "country": "32.500556",
+        "alt": 1290,
+        "country": "South Sudan",
         "iata": "HGI",
         "icao": "HSFA",
-        "lat": "\"Heliport\"\"\"",
-        "long": 10.529167,
-        "name": "\"\"\"Paloich Airport\"",
-        "tzolson": "\\N",
-        "utcoffset": 1290
+        "lat": 10.529167,
+        "long": 32.500556,
+        "name": "Paloich Airport Heliport",
+        "tzolson": "Africa/Mozambique",
+        "utcoffset": 2 
     },
     {
         "airport_id": 7636,

+ 1 - 1
assets/database/templates/airports.md5

@@ -1 +1 @@
-b9467aeeddc6d4bcaffdccd934008586  airports.json
+004aa1ade67b7765efe9b80eae803624 airports.json

+ 0 - 4
assets/templates.qrc

@@ -1,9 +1,5 @@
 <RCC>
     <qresource prefix="/templates">
-        <file>database/templates/aircraft.csv</file>
-        <file>database/templates/airports.csv</file>
-        <file>database/templates/changelog.csv</file>
-        <file>database/templates/currencies.csv</file>
         <file>database/templates/aircraft.json</file>
         <file>database/templates/airports.json</file>
         <file>database/templates/changelog.json</file>

+ 1 - 1
src/database/adatabasesetup.cpp → deprecated/adatabasesetup.cpp

@@ -330,7 +330,7 @@ bool ADataBaseSetup::backupOldData()
     QString backup_name = database_file.baseName() + QLatin1String("_bak_")
             + date_string + QLatin1String(".db");
     QFile file(database_file.absoluteFilePath());
-    DEB << "File:" << file;
+    DEB << "File:" << file.fileName();
     if (!file.rename(backup_dir.absoluteFilePath(backup_name))) {
         LOG << "Unable to backup old database.\n";
         return false;

+ 0 - 0
src/database/adatabasesetup.h → deprecated/adatabasesetup.h


+ 0 - 0
assets/database/templates/aircraft.csv → deprecated/aircraft.csv


+ 0 - 0
assets/database/templates/airports.csv → deprecated/airports.csv


+ 0 - 0
assets/database/templates/changelog.csv → deprecated/changelog.csv


+ 0 - 0
assets/database/templates/currencies.csv → deprecated/currencies.csv


+ 0 - 0
src/gui/dialogues/newflight.ui → deprecated/oldnewflight.ui


+ 1232 - 0
deprecated/oldnewflightdialog.cpp

@@ -0,0 +1,1232 @@
+/*
+ *openPilotLog - A FOSS Pilot Logbook Application
+ *Copyright (C) 2020-2021 Felix Turowsky
+ *
+ *This program is free software: you can redistribute it and/or modify
+ *it under the terms of the GNU General Public License as published by
+ *the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ *This program is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *GNU General Public License for more details.
+ *
+ *You should have received a copy of the GNU General Public License
+ *along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+#include "newflightdialog.h"
+#include "ui_newflight.h"
+#include "src/gui/dialogues/newtaildialog.h"
+#include "src/gui/dialogues/newpilotdialog.h"
+#include "src/functions/acalc.h"
+#include "src/testing/atimer.h"
+#include "src/database/adatabase.h"
+#include "src/opl.h"
+#include "src/functions/adate.h"
+#include "src/functions/alog.h"
+
+const auto LOC_LINE_EDIT_NAME   = QLatin1String("Loc");
+const auto ACFT_LINE_EDIT_NAME  = QLatin1String("acft");
+const auto TIME_LINE_EDIT_NAME  = QLatin1String("Time");
+const auto PILOT_LINE_EDIT_NAME = QLatin1String("Name");
+const auto SELF                 = QLatin1String("self");
+
+NewFlightDialog::NewFlightDialog(ACompletionData &completion_data,
+                                 QWidget *parent)
+    : QDialog(parent),
+      ui(new Ui::NewFlight),
+      completionData(completion_data)
+{
+    ui->setupUi(this);
+    flightEntry = AFlightEntry();
+    setup();
+    if (ASettings::read(ASettings::FlightLogging::FunctionComboBox).toString() == QLatin1String("SIC")) {
+        ui->picNameLineEdit->setText(QString());
+        ui->secondPilotNameLineEdit->setText(SELF);
+    }
+    if(ASettings::read(ASettings::FlightLogging::FunctionComboBox).toString() == QLatin1String("PIC")){
+        ui->picNameLineEdit->setText(SELF);
+        emit ui->picNameLineEdit->editingFinished();
+    }
+    CRIT("Time empty bug - check verification logic");
+}
+
+NewFlightDialog::NewFlightDialog(ACompletionData &completion_data,
+                                 int row_id,
+                                 QWidget *parent)
+    : QDialog(parent),
+      ui(new Ui::NewFlight),
+      completionData(completion_data)
+{
+    ui->setupUi(this);
+    flightEntry = aDB->getFlightEntry(row_id);
+    setup();
+    formFiller();
+}
+
+NewFlightDialog::~NewFlightDialog()
+{
+    LOG << "Closing NF Dialog";
+    delete ui;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///                        setup and maintenance of dialog                            ///
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+void NewFlightDialog::setup()
+{
+    for (const auto & approach : Opl::ApproachTypes){
+        ui->ApproachComboBox->addItem(approach);
+    }
+    updateEnabled = true;
+    setupButtonGroups();
+    setupRawInputValidation();
+    setupSignalsAndSlots();
+    readSettings();
+    setupUi();
+
+    ui->deptLocLineEdit->setFocus();
+}
+
+void NewFlightDialog::setupButtonGroups()
+{
+    QButtonGroup *FlightRulesGroup = new QButtonGroup(this);
+    FlightRulesGroup->addButton(ui->IfrCheckBox);
+    FlightRulesGroup->addButton(ui->VfrCheckBox);
+
+    QButtonGroup *PilotTaskGroup = new QButtonGroup(this);
+    PilotTaskGroup->addButton(ui->PilotFlyingCheckBox);
+    PilotTaskGroup->addButton(ui->PilotMonitoringCheckBox);
+}
+
+void NewFlightDialog::setupRawInputValidation()
+{
+    // Prepare Regular Expressions for QValidators
+    const auto name_rx       = QLatin1String("((\\p{L}+)?('|\\-|,)?(\\p{L}+)?)");
+    const auto add_name_rx   = QLatin1String("(\\s?(\\p{L}+('|\\-|,)?\\p{L}+?))?");
+    const auto time_valid_rx = QRegularExpression("([01]?[0-9]|2[0-3]):?[0-5][0-9]?");
+    const auto loc_valid_rx  = QRegularExpression("[a-zA-Z0-9]{1,4}");
+    const auto acft_valid_rx = QRegularExpression("\\w+\\-?(\\w+)?");
+    const auto name_valid_rx = QRegularExpression(
+                name_rx + add_name_rx + add_name_rx + add_name_rx + ",?\\s?" // up to 4 first names
+              + name_rx + add_name_rx + add_name_rx + add_name_rx );         // up to 4 last names
+
+    // create the structs holding the inititalisation data (completion lists and RXs) and store them in a map
+    const auto location_data = ValidationSetupData(&completionData.airportList, &loc_valid_rx);
+    const auto pilot_data    = ValidationSetupData(&completionData.pilotList, &name_valid_rx);
+    const auto aircraft_data = ValidationSetupData(&completionData.tailsList, &acft_valid_rx);
+    const auto time_data     = ValidationSetupData(&time_valid_rx);
+
+    const QHash<const QLatin1String*, const ValidationSetupData*> init_data_map = {
+        {&LOC_LINE_EDIT_NAME,  &location_data},
+        {&PILOT_LINE_EDIT_NAME, &pilot_data},
+        {&ACFT_LINE_EDIT_NAME, &aircraft_data},
+        {&TIME_LINE_EDIT_NAME, &time_data}
+    };
+
+    //get and set up line edits
+    const QList<QLineEdit*> line_edits = ui->flightDataTab->findChildren<QLineEdit*>();
+    const QList<const QLatin1String*> keys_list = init_data_map.keys();
+
+    for (const auto &line_edit : line_edits) {
+        for (const auto &key : keys_list ) {
+            if (line_edit->objectName().contains(*key)) {
+                // Fetch Data from the map and set up the line edit
+                const ValidationSetupData* init_data = init_data_map.value(key);
+                DEB << "Setting up: " << line_edit->objectName();
+
+                // Set Validator
+                auto validator = new QRegularExpressionValidator(*init_data->validationRegEx, line_edit);
+                line_edit->setValidator(validator);
+                // Set Completer
+                if (init_data->completionData) {
+                    auto completer = new QCompleter(*init_data->completionData, line_edit);
+                    completer->setCaseSensitivity(Qt::CaseInsensitive);
+                    completer->setCompletionMode(QCompleter::PopupCompletion);
+                    completer->setFilterMode(Qt::MatchContains);
+                    line_edit->setCompleter(completer);
+                }
+            }
+        }
+    }
+
+    // populate Mandatory Line Edits list and prepare QBitArray
+    mandatoryLineEditsValid.resize(7);
+    mandatoryLineEdits = {
+        ui->doftLineEdit,
+        ui->deptLocLineEdit,
+        ui->destLocLineEdit,
+        ui->tofbTimeLineEdit,
+        ui->tonbTimeLineEdit,
+        ui->picNameLineEdit,
+        ui->acftLineEdit,
+    };
+    primaryTimeLineEdits = {
+        ui->tofbTimeLineEdit,
+        ui->tonbTimeLineEdit
+    };
+    pilotsLineEdits = {
+        ui->picNameLineEdit,
+        ui->secondPilotNameLineEdit,
+        ui->thirdPilotNameLineEdit
+    };
+
+}
+
+void NewFlightDialog::setupSignalsAndSlots()
+{
+    const auto line_edits = this->findChildren<QLineEdit*>();
+
+    for (const auto &line_edit : line_edits){
+        line_edit->installEventFilter(this);
+        if(line_edit->objectName().contains(LOC_LINE_EDIT_NAME)){
+            QObject::connect(line_edit, &QLineEdit::textChanged,
+                             this, &NewFlightDialog::onToUpperTriggered_textChanged);
+        }
+        if(line_edit->objectName().contains(ACFT_LINE_EDIT_NAME)){
+            QObject::connect(line_edit, &QLineEdit::textChanged,
+                             this, &NewFlightDialog::onToUpperTriggered_textChanged);
+        }
+        if(line_edit->objectName().contains(PILOT_LINE_EDIT_NAME)){
+            QObject::connect(line_edit, &QLineEdit::editingFinished,
+                             this, &NewFlightDialog::onPilotNameLineEdit_editingFinished);
+        }
+        if(line_edit->objectName().contains(TIME_LINE_EDIT_NAME)){
+            QObject::connect(line_edit, &QLineEdit::editingFinished,
+                             this, &NewFlightDialog::onTimeLineEdit_editingFinished);
+        }
+    }
+#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0)
+    for (const auto &line_edit : qAsConst(mandatoryLineEdits)) {
+        if(line_edit->objectName().contains(QStringLiteral("doft")))
+            break;
+        QObject::connect(line_edit->completer(), QOverload<const QString &>::of(&QCompleter::highlighted),
+                         this, &NewFlightDialog::onCompleter_highlighted);
+        QObject::connect(line_edit->completer(), QOverload<const QString &>::of(&QCompleter::activated),
+                         this, &NewFlightDialog::onCompleter_activated);
+    }
+#endif
+    QObject::connect(ui->calendarWidget, &QCalendarWidget::clicked,
+                     this, &NewFlightDialog::onCalendarWidget_clicked);
+}
+
+void NewFlightDialog::setupUi()
+{
+    ui->flightDataTabWidget->setCurrentIndex(0);
+    ui->flightDataTabWidget->removeTab(2); // hide calendar widget
+    ui->doftLineEdit->setText(QDate::currentDate().toString(Qt::ISODate));
+    emit ui->doftLineEdit->editingFinished();
+    ui->doftLineEdit->setToolTip(tr("Date Format: %1").arg(ADate::getFormatString(Opl::Date::ADateFormat::ISODate)));
+}
+
+void NewFlightDialog::readSettings()
+{
+    DEB << "Reading Settings...";
+    QSettings settings;
+    ui->FunctionComboBox->setCurrentText(ASettings::read(ASettings::FlightLogging::Function).toString());
+    ui->ApproachComboBox->setCurrentIndex(ASettings::read(ASettings::FlightLogging::Approach).toInt());
+
+    ASettings::read(ASettings::FlightLogging::PilotFlying).toBool() ? ui->PilotFlyingCheckBox->setChecked(true)
+                                                          : ui->PilotMonitoringCheckBox->setChecked(true);
+
+    ui->TakeoffSpinBox->setValue(ASettings::read(ASettings::FlightLogging::NumberTakeoffs).toInt());
+    ui->TakeoffSpinBox->value() > 0 ? ui->TakeoffCheckBox->setChecked(true)
+                                    : ui->TakeoffCheckBox->setChecked(false);
+    ui->LandingSpinBox->setValue(ASettings::read(ASettings::FlightLogging::NumberLandings).toInt());
+    ui->LandingSpinBox->value() > 0 ? ui->LandingCheckBox->setChecked(true)
+                                    : ui->LandingCheckBox->setChecked(false);
+    if (ASettings::read(ASettings::FlightLogging::LogIFR).toBool()) {
+        ui->IfrCheckBox->setChecked(true);
+    } else {
+        ui->VfrCheckBox->setChecked(true);
+    }
+
+    ui->FlightNumberLineEdit->setText(ASettings::read(ASettings::FlightLogging::FlightNumberPrefix).toString());
+
+    // Debug
+    ASettings::write(ASettings::FlightLogging::FlightTimeFormat, Opl::Time::Default);
+    TODO << "Support for Decimal Logging is not implemented yet.";
+    flightTimeFormat = static_cast<Opl::Time::FlightTimeFormat>(
+                ASettings::read(ASettings::FlightLogging::FlightTimeFormat).toInt());
+
+
+}
+
+void NewFlightDialog::writeSettings()
+{
+    DEB << "Writing Settings...";
+
+    ASettings::write(ASettings::FlightLogging::Function, ui->FunctionComboBox->currentText());
+    ASettings::write(ASettings::FlightLogging::Approach, ui->ApproachComboBox->currentIndex());
+    ASettings::write(ASettings::FlightLogging::PilotFlying, ui->PilotFlyingCheckBox->isChecked());
+    ASettings::write(ASettings::FlightLogging::NumberTakeoffs, ui->TakeoffSpinBox->value());
+    ASettings::write(ASettings::FlightLogging::NumberLandings, ui->LandingSpinBox->value());
+    ASettings::write(ASettings::FlightLogging::LogIFR, ui->IfrCheckBox->isChecked());
+}
+
+bool NewFlightDialog::eventFilter(QObject* object, QEvent* event)
+{
+    auto line_edit = qobject_cast<QLineEdit*>(object);
+    if (line_edit != nullptr) {
+        if (mandatoryLineEdits.contains(line_edit) && event->type() == QEvent::FocusIn) {
+            //invalidateMandatoryLineEdit(mandatoryLineEdit(mandatoryLineEdits.indexOf(line_edit)));
+            //DEB << "Editing " << line_edit->objectName();
+            // set verification bit to false when entering a mandatory line edit
+            return false;
+        }
+        if (mandatoryLineEdits.contains(line_edit) && event->type() == QEvent::KeyPress) {
+            // show completion menu when pressing down arrow
+            QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+            if (keyEvent->key() == Qt::Key_Down) {
+                //DEB << "Key down event.";
+                line_edit->completer()->complete();
+            }
+            return false;
+        }
+        if (line_edit->objectName().contains(QStringLiteral("Name")) && event->type() == QEvent::KeyPress) {
+            // show completion menu when pressing down arrow
+            QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+            if (keyEvent->key() == Qt::Key_Down) {
+                //DEB << "Key down event.";
+                line_edit->completer()->complete();
+            }
+            return false;
+        }
+    }
+    return false;
+}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///                                 Methods - Input Processing                                  ///
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/*!
+ * \brief Fills the deductable items in the Dialog based on mandatory data ui selections.
+ */
+void NewFlightDialog::fillDeductibleData()
+{    
+    //zero out labels and line edits to delete previous calculations
+    QList<QLineEdit*>   LE = {ui->tSPSETimeLineEdit, ui->tSPMETimeLineEdit, ui->tMPTimeLineEdit,    ui->tIFRTimeLineEdit,
+                              ui->tNIGHTTimeLineEdit,ui->tPICTimeLineEdit,  ui->tPICUSTimeLineEdit, ui->tSICTimeLineEdit,
+                              ui->tDUALTimeLineEdit, ui->tFITimeLineEdit,};
+    QList<QLabel*>      LB = {ui->tSPSELabel, ui->tSPMELabel,  ui->tMPLabel,  ui->tIFRLabel,  ui->tNIGHTLabel,
+                              ui->tPICLabel,  ui->tPICUSLabel, ui->tSICLabel, ui->tDUALLabel, ui->tFILabel};
+    for(const auto& widget : LE) {widget->setText(QString());}
+    for(const auto& widget : LB) {widget->setText(Opl::Db::NULL_TIME_hhmm);}
+    //Calculate block time
+    const auto tofb = ATime::fromString(ui->tofbTimeLineEdit->text());
+    const auto tonb = ATime::fromString(ui->tonbTimeLineEdit->text());
+    const auto tblk = ATime::blocktime(tofb, tonb);
+    const auto block_time_string = ATime::toString(tblk, flightTimeFormat);
+
+    ui->tblkTimeLineEdit->setText(block_time_string);
+    // get acft data and fill deductible entries
+    auto acft = aDB->getTailEntry(completionData.tailsIdMap.key(ui->acftLineEdit->text()));
+
+    // TOTAL
+    ui->tblkLabel->setText(QLatin1String("<b>") + block_time_string + QLatin1String("</b>"));
+    // IFR
+    if(ui->IfrCheckBox->isChecked()){
+        ui->tIFRTimeLineEdit->setText(block_time_string);
+        ui->tIFRLabel->setText(block_time_string);
+    }
+    // Function times
+    switch (ui->FunctionComboBox->currentIndex()) {
+    case 0://PIC
+        ui->tPICTimeLineEdit->setText(block_time_string);
+        ui->tPICLabel->setText(block_time_string);
+        break;
+    case 1://PICus
+        ui->tPICUSTimeLineEdit->setText(block_time_string);
+        ui->tPICUSLabel->setText(block_time_string);
+        break;
+    case 2://Co-Pilot
+        ui->tSICTimeLineEdit->setText(block_time_string);
+        ui->tSICLabel->setText(block_time_string);
+        break;
+    case 3://Dual
+        ui->tDUALTimeLineEdit->setText(block_time_string);
+        ui->tDUALLabel->setText(block_time_string);
+        break;
+    case 4://Instructor
+        ui->tFITimeLineEdit->setText(block_time_string);
+        ui->tFILabel->setText(block_time_string);
+        ui->tPICTimeLineEdit->setText(block_time_string);
+        ui->tPICLabel->setText(block_time_string);
+    }
+
+    // if location data is available, fill night time
+    if (locLineEditsValid()) {
+
+        const auto block_minutes = ATime::toMinutes(tblk);
+        QString dept_date = ui->doftLineEdit->text() + 'T' + ATime::toString(tofb);
+        auto dept_date_time = QDateTime::fromString(dept_date, QStringLiteral("yyyy-MM-ddThh:mm"));
+        const int night_angle = ASettings::read(ASettings::FlightLogging::NightAngle).toInt();
+        auto night_time = ATime::qTimefromMinutes(ACalc::calculateNightTime(
+                                                 ui->deptLocLineEdit->text(),
+                                                 ui->destLocLineEdit->text(),
+                                                 dept_date_time,
+                                                 block_minutes,
+                                                 night_angle));
+
+        ui->tNIGHTTimeLineEdit->setText(ATime::toString(night_time, flightTimeFormat));
+        ui->tNIGHTLabel->setText(ATime::toString(night_time, flightTimeFormat));
+    }
+
+    // if acft data is available, fill additional times
+    if (acftLineEditValid()) {
+
+        if (acft.getData().isEmpty())
+            WARN("Error: No valid aircraft object available, unable to deterime auto times.");
+
+        // SP SE
+        if(acft.getData().value(Opl::Db::TAILS_MULTIPILOT).toInt() == 0
+                && acft.getData().value(Opl::Db::TAILS_MULTIENGINE).toInt() == 0){
+            ui->tSPSETimeLineEdit->setText(block_time_string);
+            ui->tSPSELabel->setText(block_time_string);
+        }
+        // SP ME
+        if(acft.getData().value(Opl::Db::TAILS_MULTIPILOT).toInt() == 0
+                && acft.getData().value(Opl::Db::TAILS_MULTIENGINE).toInt() == 1){
+            ui->tSPMETimeLineEdit->setText(block_time_string);
+            ui->tSPMELabel->setText(block_time_string);
+        }
+        // MP
+        if(acft.getData().value(Opl::Db::TAILS_MULTIPILOT).toInt() == 1){
+            ui->tMPTimeLineEdit->setText(block_time_string);
+            ui->tMPLabel->setText(block_time_string);
+        }
+    }
+}
+
+/*!
+ * \brief Collect input and create a Data map for the entry object.
+ *
+ * This function should only be called if input validation has been passed, since
+ * no input validation is done in this step and input data is assumed to be valid.
+ * \return
+ */
+RowData_T NewFlightDialog::collectInput()
+{
+    RowData_T newData;
+    //DEB << "Collecting Input...";
+    //Block Time
+    const auto tofb = ATime::fromString(ui->tofbTimeLineEdit->text());
+    const auto tonb = ATime::fromString(ui->tonbTimeLineEdit->text());
+    const auto tblk = ATime::blocktime(tofb, tonb);
+    const auto block_minutes = ATime::toMinutes(tblk);
+    // Mandatory data
+    newData.insert(Opl::Db::FLIGHTS_DOFT, ui->doftLineEdit->text());
+    newData.insert(Opl::Db::FLIGHTS_DEPT, ui->deptLocLineEdit->text());
+    newData.insert(Opl::Db::FLIGHTS_TOFB, ATime::toMinutes(tofb));
+    newData.insert(Opl::Db::FLIGHTS_DEST, ui->destLocLineEdit->text());
+    newData.insert(Opl::Db::FLIGHTS_TONB, ATime::toMinutes(tonb));
+    newData.insert(Opl::Db::FLIGHTS_TBLK, block_minutes);
+    // Aircraft
+    newData.insert(Opl::Db::FLIGHTS_ACFT, completionData.tailsIdMap.key(ui->acftLineEdit->text()));
+    // Pilots
+    newData.insert(Opl::Db::FLIGHTS_PIC, completionData.pilotsIdMap.key(ui->picNameLineEdit->text()));
+    newData.insert(Opl::Db::FLIGHTS_SECONDPILOT, completionData.pilotsIdMap.key(ui->secondPilotNameLineEdit->text()));
+    newData.insert(Opl::Db::FLIGHTS_THIRDPILOT, completionData.pilotsIdMap.key(ui->thirdPilotNameLineEdit->text()));
+
+    // Extra Times
+    ui->tSPSETimeLineEdit->text().isEmpty() ?
+                newData.insert(Opl::Db::FLIGHTS_TSPSE, QString())
+              : newData.insert(Opl::Db::FLIGHTS_TSPSE, stringToMinutes(
+                                   ui->tSPSETimeLineEdit->text(), flightTimeFormat));
+
+    ui->tSPMETimeLineEdit->text().isEmpty() ?
+                newData.insert(Opl::Db::FLIGHTS_TSPME, QString())
+              : newData.insert(Opl::Db::FLIGHTS_TSPME, stringToMinutes(
+                                   ui->tSPMETimeLineEdit->text(), flightTimeFormat));
+    ui->tMPTimeLineEdit->text().isEmpty() ?
+                newData.insert(Opl::Db::FLIGHTS_TMP, QString())
+              : newData.insert(Opl::Db::FLIGHTS_TMP, stringToMinutes(
+                                   ui->tMPTimeLineEdit->text(), flightTimeFormat));
+
+    if (ui->IfrCheckBox->isChecked()) {
+        newData.insert(Opl::Db::FLIGHTS_TIFR, block_minutes);
+    } else {
+        newData.insert(Opl::Db::FLIGHTS_TIFR, QString());
+    }
+    // Night
+    const QString dept_date = ui->doftLineEdit->text() + 'T'
+            + ATime::toString(tofb);
+    const auto dept_date_time = QDateTime::fromString(dept_date, QStringLiteral("yyyy-MM-ddThh:mm"));
+    const int night_angle = ASettings::read(ASettings::FlightLogging::NightAngle).toInt();
+    const auto night_time = ATime::qTimefromMinutes(ACalc::calculateNightTime(
+                                             ui->deptLocLineEdit->text(),
+                                             ui->destLocLineEdit->text(),
+                                             dept_date_time,
+                                             block_minutes,
+                                             night_angle));
+    const auto night_minutes = ATime::toMinutes(night_time);
+    newData.insert(Opl::Db::FLIGHTS_TNIGHT, night_minutes);
+
+    // Function times - This is a little explicit but these are mutually exclusive so its better to be safe than sorry here.
+    switch (ui->FunctionComboBox->currentIndex()) {
+    case 0://PIC
+        newData.insert(Opl::Db::FLIGHTS_TPIC, block_minutes);
+        newData.insert(Opl::Db::FLIGHTS_TPICUS, QString());
+        newData.insert(Opl::Db::FLIGHTS_TSIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TDUAL, QString());
+        newData.insert(Opl::Db::FLIGHTS_TFI, QString());
+        break;
+    case 1://PICUS
+        newData.insert(Opl::Db::FLIGHTS_TPIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TPICUS, block_minutes);
+        newData.insert(Opl::Db::FLIGHTS_TSIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TDUAL, QString());
+        newData.insert(Opl::Db::FLIGHTS_TFI, QString());
+        break;
+    case 2://Co-Pilot
+        newData.insert(Opl::Db::FLIGHTS_TPIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TPICUS, QString());
+        newData.insert(Opl::Db::FLIGHTS_TSIC, block_minutes);
+        newData.insert(Opl::Db::FLIGHTS_TDUAL, QString());
+        newData.insert(Opl::Db::FLIGHTS_TFI, QString());
+        break;
+    case 3://Dual
+        newData.insert(Opl::Db::FLIGHTS_TPIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TPICUS, QString());
+        newData.insert(Opl::Db::FLIGHTS_TSIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TDUAL, block_minutes);
+        newData.insert(Opl::Db::FLIGHTS_TFI, QString());
+        break;
+    case 4://Instructor
+        newData.insert(Opl::Db::FLIGHTS_TPIC, block_minutes);
+        newData.insert(Opl::Db::FLIGHTS_TPICUS, QString());
+        newData.insert(Opl::Db::FLIGHTS_TSIC, QString());
+        newData.insert(Opl::Db::FLIGHTS_TDUAL, QString());
+        newData.insert(Opl::Db::FLIGHTS_TFI, block_minutes);
+    }
+    // Pilot Flying
+    newData.insert(Opl::Db::FLIGHTS_PILOTFLYING, ui->PilotFlyingCheckBox->isChecked());
+    // TO and LDG - again a bit explicit, but we  need to check for both night to day as well as day to night transitions.
+    if (ui->TakeoffCheckBox->isChecked()) {
+        if (night_minutes == 0) { // all day
+            newData.insert(Opl::Db::FLIGHTS_TODAY, ui->TakeoffSpinBox->value());
+            newData.insert(Opl::Db::FLIGHTS_TONIGHT, 0);
+        } else if (night_minutes == block_minutes) { // all night
+            newData.insert(Opl::Db::FLIGHTS_TODAY, 0);
+            newData.insert(Opl::Db::FLIGHTS_TONIGHT, ui->TakeoffSpinBox->value());
+        } else {
+            if(ACalc::isNight(ui->deptLocLineEdit->text(), dept_date_time,  night_angle)) {
+                newData.insert(Opl::Db::FLIGHTS_TODAY, 0);
+                newData.insert(Opl::Db::FLIGHTS_TONIGHT, ui->TakeoffSpinBox->value());
+            } else {
+                newData.insert(Opl::Db::FLIGHTS_TODAY, ui->TakeoffSpinBox->value());
+                newData.insert(Opl::Db::FLIGHTS_TONIGHT, 0);
+            }
+        }
+    } else {
+        newData.insert(Opl::Db::FLIGHTS_TODAY, 0);
+        newData.insert(Opl::Db::FLIGHTS_TONIGHT, 0);
+    }
+
+    if (ui->LandingCheckBox->isChecked()) {
+        if (night_minutes == 0) { // all day
+            newData.insert(Opl::Db::FLIGHTS_LDGDAY, ui->LandingSpinBox->value());
+            newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, 0);
+        } else if (night_minutes == block_minutes) { // all night
+            newData.insert(Opl::Db::FLIGHTS_LDGDAY, 0);
+            newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, ui->LandingSpinBox->value());
+        } else { //check
+            const QString dest_date = ui->doftLineEdit->text() + 'T'
+                    + ATime::toString(tonb);
+            const auto dest_date_time = QDateTime::fromString(dest_date, QStringLiteral("yyyy-MM-ddThh:mm"));
+            if (ACalc::isNight(ui->destLocLineEdit->text(), dest_date_time,  night_angle)) {
+                newData.insert(Opl::Db::FLIGHTS_LDGDAY, 0);
+                newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, ui->LandingSpinBox->value());
+            } else {
+                newData.insert(Opl::Db::FLIGHTS_LDGDAY, ui->LandingSpinBox->value());
+                newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, 0);
+            }
+        }
+    } else {
+        newData.insert(Opl::Db::FLIGHTS_LDGDAY, 0);
+        newData.insert(Opl::Db::FLIGHTS_LDGNIGHT, 0);
+    }
+
+    newData.insert(Opl::Db::FLIGHTS_AUTOLAND, ui->AutolandSpinBox->value());
+    newData.insert(Opl::Db::FLIGHTS_APPROACHTYPE, ui->ApproachComboBox->currentText());
+    newData.insert(Opl::Db::FLIGHTS_FLIGHTNUMBER, ui->FlightNumberLineEdit->text());
+    newData.insert(Opl::Db::FLIGHTS_REMARKS, ui->RemarksLineEdit->text());
+    DEB << "New Flight Data: " << newData;
+
+    return newData;
+}
+
+void NewFlightDialog::formFiller()
+{
+    DEB << "Filling Line Edits...";
+    // get Line Edits
+    const auto line_edits = this->findChildren<QLineEdit *>();
+    QStringList line_edits_names;
+    for (const auto& le : line_edits) {
+        line_edits_names << le->objectName();
+    }
+
+    ui->acftLineEdit->setText(flightEntry.getRegistration());
+    line_edits_names.removeOne(QStringLiteral("acftLineEdit"));
+
+    const auto data_keys = flightEntry.getData().keys();
+    for (const auto& data_key : data_keys) {
+        auto rx = QRegularExpression(data_key + QStringLiteral("LineEdit"));//acftLineEdit
+        for(const auto& leName : qAsConst(line_edits_names)){
+            if(rx.match(leName).hasMatch())  {
+                //DEB << "Loc Match found: " << key << " - " << leName);
+                auto line_edit = this->findChild<QLineEdit *>(leName);
+                if(line_edit != nullptr){
+                    line_edit->setText(flightEntry.getData().value(data_key).toString());
+                    line_edits_names.removeOne(leName);
+                }
+                break;
+            }
+        }
+        rx = QRegularExpression(data_key + QStringLiteral("Loc\\w+?"));
+        for(const auto& leName : qAsConst(line_edits_names)){
+            if(rx.match(leName).hasMatch())  {
+                //DEB << "Loc Match found: " << key << " - " << leName);
+                auto line_edit = this->findChild<QLineEdit *>(leName);
+                if(line_edit != nullptr){
+                    line_edit->setText(flightEntry.getData().value(data_key).toString());
+                    line_edits_names.removeOne(leName);
+                }
+                break;
+            }
+        }
+        rx = QRegularExpression(data_key + QStringLiteral("Time\\w+?"));
+        for(const auto& leName : qAsConst(line_edits_names)){
+            if(rx.match(leName).hasMatch())  {
+                //DEB << "Time Match found: " << key << " - " << leName);
+                auto line_edits = this->findChild<QLineEdit *>(leName);
+                if(line_edits != nullptr){
+                    DEB << "Setting " << line_edits->objectName() << " to " << ATime::toString(flightEntry.getData().value(data_key).toInt(), flightTimeFormat);
+                    line_edits->setText(ATime::toString(flightEntry.getData().value(data_key).toInt(),
+                                                        flightTimeFormat));
+                    line_edits_names.removeOne(leName);
+                }
+                break;
+            }
+        }
+        rx = QRegularExpression(data_key + QStringLiteral("Name\\w+?"));
+        for(const auto& leName : qAsConst(line_edits_names)){
+            if(rx.match(leName).hasMatch())  {
+                auto line_edits = this->findChild<QLineEdit *>(leName);
+                if(line_edits != nullptr){
+                    DEB << completionData.pilotsIdMap.value(1);
+                    line_edits->setText(completionData.pilotsIdMap.value(flightEntry.getData().value(data_key).toInt()));
+                    line_edits_names.removeOne(leName);
+                }
+                break;
+            }
+        }
+    }
+    //FunctionComboBox
+    QList<QLineEdit*> function_combo_boxes = {ui->tPICTimeLineEdit, ui->tPICUSTimeLineEdit,
+                                              ui->tSICTimeLineEdit, ui->tDUALTimeLineEdit,
+                                              ui->tFITimeLineEdit};
+    for(const auto& line_edit : function_combo_boxes){
+        if(line_edit->text() != QStringLiteral("00:00")){
+            QString name = line_edit->objectName();
+            name.chop(12);
+            name.remove(0,1);
+            ui->FunctionComboBox->setCurrentText(name);
+        }
+    }
+    // Approach Combo Box
+    const QString& app = flightEntry.getData().value(Opl::Db::FLIGHTS_APPROACHTYPE).toString();
+    if(app != QString()){
+        ui->ApproachComboBox->setCurrentText(app);
+    }
+    // Task and Rules
+    qint8 PF = flightEntry.getData().value(Opl::Db::FLIGHTS_PILOTFLYING).toInt();
+    if (PF > 0) {
+        ui->PilotFlyingCheckBox->setChecked(true);
+    } else {
+        ui->PilotMonitoringCheckBox->setChecked(true);
+    }
+    qint8 FR = flightEntry.getData().value(Opl::Db::FLIGHTS_TIFR).toInt();
+    if (FR > 0) {
+        ui->IfrCheckBox->setChecked(true);
+    } else {
+        ui->tIFRTimeLineEdit->setText(QString());
+        ui->VfrCheckBox->setChecked(true);
+    }
+    // Take Off and Landing
+    qint8 TO = flightEntry.getData().value(Opl::Db::FLIGHTS_TODAY).toInt()
+            + flightEntry.getData().value(Opl::Db::FLIGHTS_TONIGHT).toInt();
+    qint8 LDG = flightEntry.getData().value(Opl::Db::FLIGHTS_LDGDAY).toInt()
+            + flightEntry.getData().value(Opl::Db::FLIGHTS_LDGNIGHT).toInt();
+    if(TO > 0) {
+        ui->TakeoffCheckBox->setChecked(true);
+        ui->TakeoffSpinBox->setValue(TO);
+    } else {
+        ui->TakeoffCheckBox->setChecked(false);
+        ui->TakeoffSpinBox->setValue(0);
+    }
+    if(LDG > 0) {
+        ui->LandingCheckBox->setChecked(true);
+        ui->LandingSpinBox->setValue(LDG);
+    } else {
+        ui->LandingCheckBox->setChecked(false);
+        ui->LandingSpinBox->setValue(0);
+    }
+    qint8 AL = flightEntry.getData().value(Opl::Db::FLIGHTS_AUTOLAND).toInt();
+    if(AL > 0) {
+        ui->AutolandCheckBox->setChecked(true);
+        ui->AutolandSpinBox->setValue(AL);
+    }
+
+    for(const auto& le : qAsConst(mandatoryLineEdits)){
+        emit le->editingFinished();
+    }
+}
+
+bool NewFlightDialog::isLessOrEqualThanBlockTime(const QString time_string)
+{
+    if (!allMandatoryLineEditsValid()){
+        INFO(tr("Unable to determine total block time.<br>"
+                               "Please fill out all Mandatory Fields<br>"
+                               "before manually editing these times."));
+        return false;
+    }
+
+    auto extra_time = ATime::fromString(time_string, flightTimeFormat);
+    auto block_time = ATime::blocktime(ATime::fromString(
+                                           ui->tofbTimeLineEdit->text(), flightTimeFormat),
+                                       ATime::fromString(
+                                           ui->tonbTimeLineEdit->text(), flightTimeFormat));
+    if (extra_time <= block_time) {
+        return true;
+    } else {
+        WARN(tr("The flight time you have entered is longer than the total blocktime:"
+                               "<br><center><b>%1</b></center>"
+                               ).arg(ATime::toString(block_time, flightTimeFormat)));
+        return false;
+    }
+}
+
+/*!
+ * \brief NewFlight::addNewTailMessageBox If the user input is not in the aircraftList, the user
+ * is prompted if he wants to add a new entry to the database
+ */
+void NewFlightDialog::addNewTail(QLineEdit *parent_line_edit)
+{
+    QMessageBox::StandardButton reply;
+    reply = QMessageBox::question(this, tr("No Aircraft found"),
+                                  tr("No aircraft with this registration found.<br>"
+                                     "If this is the first time you log a flight with this aircraft, "
+                                     "you have to add the registration to the database first."
+                                     "<br><br>Would you like to add a new aircraft to the database?"),
+                                  QMessageBox::Yes|QMessageBox::No);
+    if (reply == QMessageBox::Yes) {
+        // create and open new aircraft dialog
+        NewTailDialog na(ui->acftLineEdit->text(), this);
+        int ret = na.exec();
+        // update map and list, set line edit
+        if (ret == QDialog::Accepted) {
+            DEB << "New Tail Entry added. Id:" << aDB->getLastEntry(ADatabaseTable::tails);
+
+            // update completion Data and Completer
+            completionData.updateTails();
+            auto new_model = new QStringListModel(completionData.tailsList, parent_line_edit->completer());
+            parent_line_edit->completer()->setModel(new_model); //setModel deletes old model if it has the completer as parent
+
+            // update Line Edit
+            parent_line_edit->setText(completionData.tailsIdMap.value(aDB->getLastEntry(ADatabaseTable::tails)));
+            emit parent_line_edit->editingFinished();
+        } else {
+            parent_line_edit->setText(QString());
+            parent_line_edit->setFocus();
+        }
+    } else {
+        parent_line_edit->setText(QString());
+        parent_line_edit->setFocus();
+    }
+}
+
+/*!
+ * \brief NewFlight::addNewPilot If the user input is not in the pilotNameList, the user
+ * is prompted if he wants to add a new entry to the database
+ */
+void NewFlightDialog::addNewPilot(QLineEdit *parent_line_edit)
+{
+    QMessageBox::StandardButton reply;
+    reply = QMessageBox::question(this, tr("No Pilot found"),
+                                  tr("No pilot found.<br>Please enter the Name as"
+                                     "<br><br><center><b>Lastname, Firstname</b></center><br><br>"
+                                     "If this is the first time you log a flight with this pilot, "
+                                     "you have to add the pilot to the database first."
+                                     "<br><br>Would you like to add a new pilot to the database?"),
+                                  QMessageBox::Yes|QMessageBox::No);
+    if (reply == QMessageBox::Yes) {
+        // create and open new pilot dialog
+        NewPilotDialog np(this);
+        int ret = np.exec();
+        // update map and list, set line edit
+        if (ret == QDialog::Accepted) {
+            DEB << "New Pilot Entry added. Id:" << aDB->getLastEntry(ADatabaseTable::pilots);
+            // update completion Data and Completer
+            completionData.updatePilots();
+            auto new_model = new QStringListModel(completionData.pilotList, parent_line_edit->completer());
+            parent_line_edit->completer()->setModel(new_model); //setModel deletes old model if it has the completer as parent
+
+            // update Line Edit
+            parent_line_edit->setText(completionData.pilotsIdMap.value(aDB->getLastEntry(ADatabaseTable::pilots)));
+            emit parent_line_edit->editingFinished();
+        } else {
+            parent_line_edit->setText(QString());
+            parent_line_edit->setFocus();
+        }
+    } else {
+        parent_line_edit->setText(QString());
+    }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///                               Flight Data Tab Slots                                         ///
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+void NewFlightDialog::on_cancelButton_clicked()
+{
+    DEB << "Cancel Button clicked.";
+    reject();
+}
+
+void NewFlightDialog::on_submitButton_clicked()
+{
+    // emit editing finished for all mandatory line edits to trigger input verification
+    for (const auto &line_edit : qAsConst(mandatoryLineEdits)) {
+        emit line_edit->editingFinished();
+    }
+
+    // If input verification is passed, continue, otherwise prompt user to correct
+    if (!allMandatoryLineEditsValid()) {
+        const auto display_names = QMap<int, QString> {
+            {0, QObject::tr("Date of Flight")},      {1, QObject::tr("Departure Airport")},
+            {2, QObject::tr("Destination Airport")}, {3, QObject::tr("Time Off Blocks")},
+            {4, QObject::tr("Time on Blocks")},      {5, QObject::tr("PIC Name")},
+            {6, QObject::tr("Aircraft Registration")}
+        };
+        QString missing_items;
+        for (int i=0; i < mandatoryLineEdits.size(); i++) {
+            if (!mandatoryLineEditsValid[i]){
+                missing_items.append(display_names.value(i) + "<br>");
+                mandatoryLineEdits[i]->setStyleSheet(QStringLiteral("border: 1px solid red"));
+            }
+        }
+
+        INFO(tr("Not all mandatory entries are valid.<br>"
+                "The following item(s) are empty or missing:"
+                "<br><br><center><b>%1</b></center><br>"
+                "Please go back and fill in the required data."
+                ).arg(missing_items));
+        return;
+    }
+
+    // If input verification passed, collect input and submit to database
+    auto newData = collectInput();
+    DEB << "Setting Data for flightEntry...";
+    flightEntry.setData(newData);
+    DEB << "Committing...";
+    if (!aDB->commit(flightEntry)) {
+        WARN(tr("The following error has ocurred:"
+                               "<br><br>%1<br><br>"
+                               "The entry has not been saved."
+                               ).arg(aDB->lastError.text()));
+        return;
+    } else {
+        QDialog::accept();
+    }
+}
+
+
+
+/*
+ * Shared Slots
+ */
+
+void NewFlightDialog::onGoodInputReceived(QLineEdit *line_edit)
+{
+    DEB << line_edit->objectName() << " - Good input received - " << line_edit->text();
+
+    line_edit->setStyleSheet(QString());
+
+    if (mandatoryLineEdits.contains(line_edit))
+        validateMandatoryLineEdit(mandatoryLineEdit(mandatoryLineEdits.indexOf(line_edit)));
+    validationStatus();
+
+    if (timeLineEditsValid())
+        onMandatoryLineEditsFilled();
+}
+
+void NewFlightDialog::onBadInputReceived(QLineEdit *line_edit)
+{
+    DEB << line_edit->objectName() << " - Bad input received - " << line_edit->text();
+    line_edit->setStyleSheet(QStringLiteral("border: 1px solid red"));
+
+    if (mandatoryLineEdits.contains(line_edit))
+        invalidateMandatoryLineEdit(mandatoryLineEdit(mandatoryLineEdits.indexOf(line_edit)));
+    validationStatus();
+
+}
+
+// capitalize input for dept, dest and registration input
+void NewFlightDialog::onToUpperTriggered_textChanged(const QString &text)
+{
+    auto sender_object = sender();
+    auto line_edit = this->findChild<QLineEdit*>(sender_object->objectName());
+    //DEB << "Text changed - " << line_edit->objectName() << line_edit->text();
+    {
+        const QSignalBlocker blocker(line_edit);
+        line_edit->setText(text.toUpper());
+    }
+}
+
+// update is disabled if the user chose to manually edit extra times
+void NewFlightDialog::onMandatoryLineEditsFilled()
+{
+    if (updateEnabled)
+        fillDeductibleData();
+}
+
+// make sure that when using keyboard to scroll through completer sugggestions, line edit is up to date
+void NewFlightDialog::onCompleter_highlighted(const QString &completion)
+{
+    auto sender_object = sender();
+    auto line_edit = this->findChild<QLineEdit*>(sender_object->objectName());
+    DEB << "Completer highlighted - " << line_edit->objectName() << completion;
+    line_edit->setText(completion);
+}
+
+void NewFlightDialog::onCompleter_activated(const QString &)
+{
+    auto sender_object = sender();
+    auto line_edit = this->findChild<QLineEdit*>(sender_object->objectName());
+    DEB << "Line edit " << line_edit->objectName() << "completer activated.";
+    emit line_edit->editingFinished();
+}
+
+/*
+ *  Date of Flight
+ */
+
+void NewFlightDialog::on_doftLineEdit_editingFinished()
+{    
+    auto line_edit = ui->doftLineEdit;
+    auto text = ui->doftLineEdit->text();
+    auto label = ui->doftDisplayLabel;
+    //DEB << line_edit->objectName() << "Editing finished - " << text;
+
+    TODO << "Non-default Date formats not implemented yet.";
+    Opl::Date::ADateFormat date_format = Opl::Date::ADateFormat::ISODate;
+    auto date = ADate::parseInput(text, date_format);
+    if (date.isValid()) {
+        label->setText(date.toString(Qt::TextDate));
+        line_edit->setText(ADate::toString(date, date_format));
+        onGoodInputReceived(line_edit);
+        return;
+    }
+
+    label->setText(tr("Invalid Date."));
+    onBadInputReceived(line_edit);
+}
+
+void NewFlightDialog::onCalendarWidget_clicked(const QDate &date)
+{
+    const auto& le = ui->doftLineEdit;
+    le->blockSignals(false);
+    ui->calendarWidget->hide();
+    ui->placeLabel1->resize(ui->placeLabel2->size());
+    le->setText(date.toString(Qt::ISODate));
+    emit le->editingFinished();
+}
+
+void NewFlightDialog::on_calendarPushButton_clicked()
+{
+    const auto& cw = ui->calendarWidget;
+    const auto& le = ui->doftLineEdit;
+    const auto& anchor = ui->placeLabel1;
+
+    if(cw->isVisible()){
+        le->blockSignals(false);
+        cw->hide();
+        anchor->resize(ui->placeLabel2->size());
+        le->setFocus();
+    } else {
+        le->blockSignals(true);
+        // Determine size based on layout coordinates
+        int c1 = anchor->pos().rx();
+        int c2 = le->pos().rx();
+        int z  = le->size().rwidth();
+        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
+        anchor->resize(x, y);
+        cw->setParent(ui->placeLabel1);
+        cw->setGeometry(QRect(0, 0, x, y));
+        cw->show();
+        cw->setFocus();
+    }
+}
+
+void NewFlightDialog::validationStatus()
+{
+
+    QString deb_string("Validation State:\tdoft\tdept\tdest\ttofb\ttonb\tpic\tacft\n");
+    deb_string += "\t\t\t\t\t" + QString::number(mandatoryLineEditsValid[0]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[1]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[2]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[3]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[4]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[5]);
+    deb_string += "\t" + QString::number(mandatoryLineEditsValid[6]);
+    qDebug().noquote() << deb_string;
+}
+
+/*
+ * Location Line Edits
+ */
+
+void NewFlightDialog::on_deptLocLineEdit_editingFinished()
+{
+    onLocationEditingFinished(ui->deptLocLineEdit, ui->deptNameLabel);
+}
+
+void NewFlightDialog::on_destLocLineEdit_editingFinished()
+{
+    onLocationEditingFinished(ui->destLocLineEdit, ui->destNameLabel);
+}
+
+void NewFlightDialog::onLocationEditingFinished(QLineEdit *line_edit, QLabel *name_label)
+{
+    const auto &text = line_edit->text();
+    //DEB << line_edit->objectName() << " Editing finished. " << text);
+    int airport_id = 0;
+
+    // try to map iata or icao code to airport id;
+    if (text.length() == 3) {
+        airport_id = completionData.airportIataIdMap.key(text);
+    } else {
+        airport_id = completionData.airportIcaoIdMap.key(text);
+    }
+    // check result
+    if (airport_id == 0) {
+        // to do: prompt user how to handle unknown airport
+        name_label->setText(tr("Unknown airport identifier"));
+        onBadInputReceived(line_edit);
+        return;
+    }
+    line_edit->setText(completionData.airportIcaoIdMap.value(airport_id));
+    name_label->setText(completionData.airportNameIdMap.value(airport_id));
+    onGoodInputReceived(line_edit);
+}
+
+/*
+ * Time Line Edits
+ */
+
+void NewFlightDialog::onTimeLineEdit_editingFinished()
+{
+    auto sender_object = sender();
+    auto line_edit = this->findChild<QLineEdit*>(sender_object->objectName());
+    DEB << line_edit->objectName() << "Editing Finished -" << line_edit->text();
+
+    line_edit->setText(ATime::formatTimeInput(line_edit->text()));
+    const auto time = ATime::fromString(line_edit->text());
+    if(time.isValid()){
+        if(primaryTimeLineEdits.contains(line_edit)) {
+            onGoodInputReceived(line_edit);
+        } else { // is extra time line edit
+            if (!isLessOrEqualThanBlockTime(line_edit->text())) {
+                line_edit->setText(QString());
+                line_edit->setFocus();
+                return;
+            }
+        }
+    } else {
+        if (!line_edit->text().isEmpty())
+            onBadInputReceived(line_edit);
+    }
+}
+
+/*
+ * Aircraft Line Edit
+ */
+
+void NewFlightDialog::on_acftLineEdit_editingFinished()
+{
+    TODO << "Looking up and matching tails is currently broken...";
+    auto line_edit = ui->acftLineEdit;
+    int acft_id = completionData.tailsIdMap.key(line_edit->text());
+    DEB << "acft_id: " << acft_id;
+
+    if (acft_id != 0) { // Success
+        //DEB << "Mapped: " << line_edit->text() << completionData.tailsIdMap.value(line_edit->text());
+        auto acft = aDB->getTailEntry(acft_id);
+        ui->acftTypeLabel->setText(acft.type());
+        ui->picCompanyLabel->setText(acft.getData().value(Opl::Db::TAILS_COMPANY).toString());
+        onGoodInputReceived(line_edit);
+        return;
+    }
+
+    if (!line_edit->completer()->currentCompletion().isEmpty()) {
+        line_edit->setText(line_edit->completer()->currentCompletion().split(QLatin1Char(' ')).first());
+        emit line_edit->editingFinished();
+        return;
+    }
+
+    // If no success mark as bad input
+    onBadInputReceived(line_edit);
+    ui->acftTypeLabel->setText(tr("Unknown Registration."));
+    if (line_edit->text() != QString())
+        addNewTail(line_edit);
+}
+
+/*
+ * Pilot Line Edits
+ */
+
+void NewFlightDialog::onPilotNameLineEdit_editingFinished()
+{
+    auto sender_object = sender();
+    auto line_edit = this->findChild<QLineEdit*>(sender_object->objectName());
+    //DEB << line_edit->objectName() << "Editing Finished -" << line_edit->text());
+
+    if(line_edit->text().contains(SELF, Qt::CaseInsensitive)) {
+        DEB << "self recognized.";
+        line_edit->setText(completionData.pilotsIdMap.value(1));
+        onGoodInputReceived(line_edit);
+        return;
+    }
+
+    if(completionData.pilotsIdMap.key(line_edit->text()) != 0) {
+        DEB << "Mapped: " << line_edit->text() << completionData.pilotsIdMap.key(line_edit->text());
+        onGoodInputReceived(line_edit);
+        return;
+    }
+
+    if (line_edit->text().isEmpty()) {
+        return;
+    }
+
+    if (!line_edit->completer()->currentCompletion().isEmpty()) {
+        DEB << "Trying to fix input...";
+        line_edit->setText(line_edit->completer()->currentCompletion());
+        emit line_edit->editingFinished();
+        return;
+    }
+
+    onBadInputReceived(line_edit);
+    addNewPilot(line_edit);
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///                               Auto Logging Tab Slots                                        ///
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+void NewFlightDialog::on_setAsDefaultButton_clicked()
+{
+    writeSettings();
+}
+
+void NewFlightDialog::on_restoreDefaultButton_clicked()
+{
+    readSettings();
+}
+
+void NewFlightDialog::on_PilotFlyingCheckBox_stateChanged(int)
+{
+    DEB << "PF checkbox state changed.";
+    if(ui->PilotFlyingCheckBox->isChecked()){
+        ui->TakeoffSpinBox->setValue(1);
+        ui->TakeoffCheckBox->setCheckState(Qt::Checked);
+        ui->LandingSpinBox->setValue(1);
+        ui->LandingCheckBox->setCheckState(Qt::Checked);
+
+    }else if(!ui->PilotFlyingCheckBox->isChecked()){
+        ui->TakeoffSpinBox->setValue(0);
+        ui->TakeoffCheckBox->setCheckState(Qt::Unchecked);
+        ui->LandingSpinBox->setValue(0);
+        ui->LandingCheckBox->setCheckState(Qt::Unchecked);
+    }
+}
+
+void NewFlightDialog::on_IfrCheckBox_stateChanged(int)
+{
+    if (timeLineEditsValid() && updateEnabled)
+        onMandatoryLineEditsFilled();
+}
+
+void NewFlightDialog::on_manualEditingCheckBox_stateChanged(int arg1)
+{
+    if (!(timeLineEditsValid()) && ui->manualEditingCheckBox->isChecked()) {
+        INFO(tr("Before editing times manually, please fill out the required fields "
+                "in the flight data tab, so that total time can be calculated."));
+        ui->manualEditingCheckBox->setChecked(false);
+        return;
+    }
+    QList<QLineEdit*>   LE = {ui->tSPSETimeLineEdit, ui->tSPMETimeLineEdit, ui->tMPTimeLineEdit,    ui->tIFRTimeLineEdit,
+                              ui->tNIGHTTimeLineEdit,ui->tPICTimeLineEdit,  ui->tPICUSTimeLineEdit, ui->tSICTimeLineEdit,
+                              ui->tDUALTimeLineEdit, ui->tFITimeLineEdit};
+    switch (arg1) {
+    case 0:
+        for(const auto& le : LE){
+            le->setFocusPolicy(Qt::NoFocus);
+            le->setStyleSheet(QString());
+        }
+        updateEnabled = true;
+        if (allMandatoryLineEditsValid() && updateEnabled)
+            onMandatoryLineEditsFilled();
+        break;
+    case 2:
+        for(const auto& le : LE){
+            le->setFocusPolicy(Qt::StrongFocus);
+        }
+        updateEnabled = false;
+        break;
+    default:
+        break;
+    }
+}
+
+void NewFlightDialog::on_ApproachComboBox_currentTextChanged(const QString &arg1)
+{
+    if(arg1 == QLatin1String("ILS CAT III")){  //for a CAT III approach an Autoland is mandatory, so we can preselect it.
+        ui->AutolandCheckBox->setCheckState(Qt::Checked);
+        ui->AutolandSpinBox->setValue(1);
+    }else{
+        ui->AutolandCheckBox->setCheckState(Qt::Unchecked);
+        ui->AutolandSpinBox->setValue(0);
+    }
+
+    if (arg1 != QLatin1String("VISUAL"))
+        ui->IfrCheckBox->setChecked(true);
+}
+
+void NewFlightDialog::on_FunctionComboBox_currentIndexChanged(int)
+{
+    if (updateEnabled)
+        fillDeductibleData();
+}
+
+// [F]: Not a priority right now.
+void NewFlightDialog::on_deptTZComboBox_currentIndexChanged(int index)
+{
+    if (index > 0) {
+        INFO(tr("Currently only logging in UTC time is supported."));
+        ui->deptTZComboBox->setCurrentIndex(0);
+    }
+}
+
+void NewFlightDialog::on_destTZComboBox_currentIndexChanged(int index)
+{
+    if (index > 0) {
+        INFO(tr("Currently only logging in UTC time is supported."));
+        ui->destTZComboBox->setCurrentIndex(0);}
+}

+ 216 - 0
deprecated/oldnewflightdialog.h

@@ -0,0 +1,216 @@
+/*
+ *openPilotLog - A FOSS Pilot Logbook Application
+ *Copyright (C) 2020-2021 Felix Turowsky
+ *
+ *This program is free software: you can redistribute it and/or modify
+ *it under the terms of the GNU General Public License as published by
+ *the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ *This program is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *GNU General Public License for more details.
+ *
+ *You should have received a copy of the GNU General Public License
+ *along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef NEWFLIGHT_H
+#define NEWFLIGHT_H
+
+#include <QDialog>
+#include <QRegularExpression>
+#include <QMessageBox>
+#include <QDebug>
+#include <QCompleter>
+#include <QStringList>
+#include <QButtonGroup>
+#include <QBitArray>
+#include <QLineEdit>
+#include <QCalendarWidget>
+#include <QComboBox>
+#include <QTabWidget>
+#include <QKeyEvent>
+#include "src/functions/atime.h"
+
+#include "src/classes/aflightentry.h"
+#include "src/classes/apilotentry.h"
+#include "src/classes/atailentry.h"
+#include "src/database/adatabase.h"
+#include "src/classes/acompletiondata.h"
+
+namespace Ui {
+
+class NewFlight;
+}
+
+/*!
+ * \brief The NewFlightDialog enables the user to add a new flight or edit an existing one.
+ * \details
+ * - Most line edits have validators and completers.
+ * - Validators are based on regular expressions, serving as raw input validation
+ * - The Completers are based off the database and provide auto-completion
+ * - mandatory line edits only emit editing finished if their content has passed
+ *   raw input validation or focus is lost.
+ * - Editing finished triggers validating inputs by mapping them to Database values
+ *   where required and results in either pass or fail.
+ * - A QBitArray is mainained containing the state of validity of the mandatory line edits
+ * - The deducted entries are automatically filled if the necessary mandatory entries
+ * are valid.
+ * - Comitting an entry to the database is only allowed if all mandatory inputs are valid.
+ */
+class NewFlightDialog : public QDialog
+{
+    Q_OBJECT
+public:
+    /*!
+     * \brief NewFlightDialog create a new flight and add it to the logbook.
+     */
+    explicit NewFlightDialog(ACompletionData &completion_data, QWidget *parent = nullptr);
+    /*!
+     * \brief NewFlightDialog Edit an existing logbook entry.
+     */
+    explicit NewFlightDialog(ACompletionData &completion_data, int row_id, QWidget *parent = nullptr);
+    ~NewFlightDialog();
+
+    /*!
+     * \brief The ValidationSetupData struct encapsulates the items required to initialise
+     * the line edits with QValidators and QCompleters
+     */
+    struct ValidationSetupData
+    {
+        ValidationSetupData(QStringList* completion_data, const QRegularExpression* validation_RegEx)
+            : completionData(completion_data), validationRegEx(validation_RegEx){};
+
+        ValidationSetupData(const QRegularExpression* validation_RegEx)
+            : completionData(nullptr), validationRegEx(validation_RegEx){};
+
+        const QStringList* completionData;
+        const QRegularExpression* validationRegEx;
+    };
+
+private slots:
+
+    void onToUpperTriggered_textChanged(const QString&);
+    void onPilotNameLineEdit_editingFinished();
+    void onLocationEditingFinished(QLineEdit*, QLabel*);
+    void onTimeLineEdit_editingFinished();
+    void onCompleter_highlighted(const QString&);
+    void onCompleter_activated(const QString &);
+    void onCalendarWidget_clicked(const QDate &date);
+    void on_doftLineEdit_editingFinished();
+    void on_cancelButton_clicked();
+    void on_submitButton_clicked();
+    void on_setAsDefaultButton_clicked();
+    void on_restoreDefaultButton_clicked();
+    void on_PilotFlyingCheckBox_stateChanged(int arg1);
+    void on_IfrCheckBox_stateChanged(int);
+    void on_manualEditingCheckBox_stateChanged(int arg1);
+    void on_ApproachComboBox_currentTextChanged(const QString &arg1);
+    void on_FunctionComboBox_currentIndexChanged(int index);
+    void on_deptLocLineEdit_editingFinished();
+    void on_destLocLineEdit_editingFinished();
+    void on_acftLineEdit_editingFinished();
+    void on_deptTZComboBox_currentIndexChanged(int index);
+    void on_destTZComboBox_currentIndexChanged(int index);
+
+    void on_calendarPushButton_clicked();
+
+private:
+    Ui::NewFlight *ui;
+
+    /*!
+     * \brief a AFlightEntry object that is used to store either position data
+     * from an old entry, is used to fill the form for editing an entry, or is
+     * filled with new data for adding a new entry to the logbook.
+     */
+    AFlightEntry flightEntry;
+
+    QVector<QLineEdit*> mandatoryLineEdits;
+    QVector<QLineEdit*> primaryTimeLineEdits;
+    QVector<QLineEdit*> pilotsLineEdits;
+
+    /*!
+     * \brief mandatoryLineEditsValid holds the minimum required information to create a
+     * valid database entries.
+     */
+    QBitArray mandatoryLineEditsValid;
+    enum mandatoryLineEdit {
+        doft = 0,
+        dept = 1,
+        dest = 2,
+        tofb = 3,
+        tonb = 4,
+        pic  = 5,
+        acft = 6
+    };
+    void validateMandatoryLineEdit(mandatoryLineEdit line_edit){mandatoryLineEditsValid.setBit(line_edit, true);}
+    void invalidateMandatoryLineEdit(mandatoryLineEdit line_edit){mandatoryLineEditsValid.setBit(line_edit, false);}
+    bool timeLineEditsValid(){return mandatoryLineEditsValid[mandatoryLineEdit::tofb]
+                                  && mandatoryLineEditsValid[mandatoryLineEdit::tonb];}
+    bool acftLineEditValid(){return mandatoryLineEditsValid[mandatoryLineEdit::acft];}
+    bool locLineEditsValid(){return mandatoryLineEditsValid[mandatoryLineEdit::dept]
+                                 && mandatoryLineEditsValid[mandatoryLineEdit::dest];}
+    bool allMandatoryLineEditsValid(){return mandatoryLineEditsValid.count(true) == 7;}
+
+    //debug
+    void validationStatus();
+    /*!
+     * Contains completion data for QCompleters and mapping user input
+     */
+    ACompletionData completionData;
+
+
+    Opl::Time::FlightTimeFormat flightTimeFormat;
+
+    /*!
+     * \brief If the user elects to manually edit function times, automatic updating
+     * is disabled.
+     */
+    bool updateEnabled;
+
+    void setup();
+    void readSettings();
+    void setupUi();
+    void writeSettings();
+    void setupButtonGroups();
+    void setupRawInputValidation();
+    void setupSignalsAndSlots();
+    void formFiller();
+    void fillDeductibleData();
+
+    void onMandatoryLineEditsFilled();
+    void onGoodInputReceived(QLineEdit*);
+    void onBadInputReceived(QLineEdit *);
+    bool eventFilter(QObject *object, QEvent *event);
+    bool isLessOrEqualThanBlockTime(const QString time_string);
+
+    void addNewTail(QLineEdit*);
+    void addNewPilot(QLineEdit *);
+
+    /*!
+     * \brief Collects user input from the line edits and processes it to be ready
+     * for database submission.
+     */
+    RowData_T collectInput();
+
+    /*!
+     * \brief converts a time string as used in the UI to an integer of minutes for
+     * use in the database based on the format in use in the Dialog
+     */
+    inline int stringToMinutes(const QString &time_string, Opl::Time::FlightTimeFormat format)
+    {
+        return ATime::toMinutes(ATime::fromString(time_string, format));
+    }
+
+    /*!
+     * \brief minutesToString converts an integer of minutes as received from the database
+     * to a String to be displayed in the UI, based on the format in use in the Dialog.
+     */
+    inline QString minutesToString(const int minutes, Opl::Time::FlightTimeFormat format)
+    {
+        return ATime::toString(ATime::qTimefromMinutes(minutes), format);
+    }
+};
+
+#endif // NEWFLIGHT_H

+ 0 - 0
assets/database/templates/sample_flights.csv → deprecated/sample_flights.csv


+ 0 - 0
assets/database/templates/sample_pilots.csv → deprecated/sample_pilots.csv


+ 0 - 0
assets/database/templates/sample_tails.csv → deprecated/sample_tails.csv


+ 0 - 0
docs/.nojekyll


+ 7 - 9
docs/html/aaircraftentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/aaircraftentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -120,18 +120,16 @@ $(document).ready(function(){initNavTree('aaircraftentry_8h_source.html',''); in
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <a class="code" href="struct_a_aircraft_entry.html">AAircraftEntry</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="struct_a_aircraft_entry.html">AAircraftEntry</a>&amp; te) = <span class="keywordflow">default</span>;</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;};</div>
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#endif // AAIRCRAFTENTRY_H</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AAIRCRAFTENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
+<div class="ttc" id="astruct_a_aircraft_entry_html"><div class="ttname"><a href="struct_a_aircraft_entry.html">AAircraftEntry</a></div><div class="ttdef"><b>Definition:</b> aaircraftentry.h:24</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_a_aircraft_entry_html"><div class="ttname"><a href="struct_a_aircraft_entry.html">AAircraftEntry</a></div><div class="ttdef"><b>Definition:</b> aaircraftentry.h:24</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>aaircraftentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 103 - 129
docs/html/acalc_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/acalc.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -114,140 +114,114 @@ $(document).ready(function(){initNavTree('acalc_8h_source.html',''); initResizab
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;QDateTime&gt;</span></div>
 <div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;QDebug&gt;</span></div>
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;src/functions/alog.h&quot;</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespace_a_calc.html">   34</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_a_calc.html">ACalc</a> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160; </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;QT_DEPRECATED</div>
-<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">   43</a></span>&#160;<span class="keyword">inline</span> QTime <a class="code" href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">blocktime</a>(QTime tofb, QTime tonb)</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;{</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    QTime blocktime_out(0, 0); <span class="comment">// initialise return value at midnight</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordflow">if</span> (tonb &gt; tofb) { <span class="comment">// landing same day</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keywordtype">int</span> blockseconds = tofb.secsTo(tonb);</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        blocktime_out = blocktime_out.addSecs(blockseconds);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    } <span class="keywordflow">else</span> { <span class="comment">// landing next day</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        QTime midnight(0, 0);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="keywordtype">int</span> blockseconds = tofb.secsTo(midnight);</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        blocktime_out = blocktime_out.addSecs(blockseconds);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        blockseconds = midnight.secsTo(tonb);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        blocktime_out = blocktime_out.addSecs(blockseconds);</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    }</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordflow">return</span> blocktime_out;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;QT_DEPRECATED</div>
-<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#ac5e39b538ea3663556c820d237f242a2">   65</a></span>&#160;<span class="keyword">inline</span> QString <a class="code" href="namespace_a_calc.html#ac5e39b538ea3663556c820d237f242a2">minutesToString</a>(QString block_minutes)</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;{</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordtype">int</span> minutes = block_minutes.toInt();</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    QString hour = QString::number(minutes / 60);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">if</span> (hour.size() &lt; 2) {</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        hour.prepend(<span class="stringliteral">&quot;0&quot;</span>);</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    }</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    QString minute = QString::number(minutes % 60);</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordflow">if</span> (minute.size() &lt; 2) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        minute.prepend(<span class="stringliteral">&quot;0&quot;</span>);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    }</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    QString block_time = hour + <span class="stringliteral">&quot;:&quot;</span> + minute;</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span> block_time;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;};</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;src/functions/atime.h&quot;</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespace_a_calc.html">   35</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_a_calc.html">ACalc</a> {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">   42</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">radToDeg</a>(<span class="keywordtype">double</span> rad)</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;{</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordtype">double</span> deg = rad * (180 / M_PI);</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keywordflow">return</span> deg;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;}</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">   53</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">degToRad</a>(<span class="keywordtype">double</span> deg)</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;{</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordtype">double</span> rad = deg * (M_PI / 180);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordflow">return</span> rad;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;}</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">   64</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">radToNauticalMiles</a>(<span class="keywordtype">double</span> rad)</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;{</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordtype">double</span> nm = rad * 3440.06479482;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordflow">return</span> nm;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;}</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a72c6fca35602a24ff8435f86abdc78d7">greatCircleDistance</a>(<span class="keywordtype">double</span> lat1, <span class="keywordtype">double</span> lon1, <span class="keywordtype">double</span> lat2, <span class="keywordtype">double</span> lon2);</div>
 <div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160; </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;QT_DEPRECATED</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="keyword">inline</span> QString <a class="code" href="namespace_a_calc.html#ac5e39b538ea3663556c820d237f242a2">minutesToString</a>(<span class="keywordtype">int</span> block_minutes)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    QString hour = QString::number(block_minutes / 60);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordflow">if</span> (hour.size() &lt; 2) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        hour.prepend(<span class="stringliteral">&quot;0&quot;</span>);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    }</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    QString minute = QString::number(block_minutes % 60);</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordflow">if</span> (minute.size() &lt; 2) {</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        minute.prepend(<span class="stringliteral">&quot;0&quot;</span>);</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    }</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    QString <a class="code" href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">blocktime</a> = hour + <span class="stringliteral">&quot;:&quot;</span> + minute;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">blocktime</a>;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;};</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;QT_DEPRECATED</div>
-<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a9568b0d72cd6b0f91f686342bc624e1f">  101</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespace_a_calc.html#a9568b0d72cd6b0f91f686342bc624e1f">QTimeToMinutes</a>(QTime time)</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;{</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    QString timestring = time.toString(<span class="stringliteral">&quot;hh:mm&quot;</span>);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordtype">int</span> minutes = (timestring.left(2).toInt()) * 60;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    minutes += timestring.right(2).toInt();</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordflow">return</span> minutes;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;QT_DEPRECATED</div>
-<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a4c829bf747bcd84bf6b1efb3ab0201d1">  115</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespace_a_calc.html#a4c829bf747bcd84bf6b1efb3ab0201d1">stringToMinutes</a>(QString timestring)</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;{</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">int</span> minutes = (timestring.left(2).toInt()) * 60;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    minutes += timestring.right(2).toInt();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    timestring = QString::number(minutes);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordflow">return</span> minutes;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;}</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160; </div>
-<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">  128</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">radToDeg</a>(<span class="keywordtype">double</span> rad)</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordtype">double</span> deg = rad * (180 / M_PI);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">return</span> deg;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;}</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a2d15bbb67e99d502e2fd730c47854a9f">greatCircleDistanceBetweenAirports</a>(<span class="keyword">const</span> QString &amp;dept, <span class="keyword">const</span> QString &amp;dest);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;QVector&lt;QVector&lt;double&gt;&gt; <a class="code" href="namespace_a_calc.html#a4a071a5788f00c98834127f9c5721383">intermediatePointsOnGreatCircle</a>(<span class="keywordtype">double</span> lat1,</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                                                         <span class="keywordtype">double</span> lon1,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                                                         <span class="keywordtype">double</span> lat2,</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                                                         <span class="keywordtype">double</span> lon2,</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                                                         <span class="keywordtype">int</span> tblk);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#acfa830e821e2f9e20bebffda67d393b1">solarElevation</a>(QDateTime utc_time_point, <span class="keywordtype">double</span> lat, <span class="keywordtype">double</span> lon);</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keywordtype">int</span> <a class="code" href="namespace_a_calc.html#a55ede99d0f9f6e8a2f3a467859c0f192">calculateNightTime</a>(<span class="keyword">const</span> QString &amp;dept, <span class="keyword">const</span> QString &amp;dest, QDateTime departureTime, <span class="keywordtype">int</span> tblk, <span class="keywordtype">int</span> nightAngle);</div>
 <div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160; </div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">  139</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">degToRad</a>(<span class="keywordtype">double</span> deg)</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;{</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordtype">double</span> rad = deg * (M_PI / 180);</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">return</span> rad;</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;}</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
-<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">  150</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">radToNauticalMiles</a>(<span class="keywordtype">double</span> rad)</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;{</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordtype">double</span> nm = rad * 3440.06479482;</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordflow">return</span> nm;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;}</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a72c6fca35602a24ff8435f86abdc78d7">greatCircleDistance</a>(<span class="keywordtype">double</span> lat1, <span class="keywordtype">double</span> lon1, <span class="keywordtype">double</span> lat2, <span class="keywordtype">double</span> lon2);</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#a2d15bbb67e99d502e2fd730c47854a9f">greatCircleDistanceBetweenAirports</a>(<span class="keyword">const</span> QString &amp;dept, <span class="keyword">const</span> QString &amp;dest);</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;QVector&lt;QVector&lt;double&gt;&gt; <a class="code" href="namespace_a_calc.html#a4a071a5788f00c98834127f9c5721383">intermediatePointsOnGreatCircle</a>(<span class="keywordtype">double</span> lat1,</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                                                         <span class="keywordtype">double</span> lon1,</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                                                         <span class="keywordtype">double</span> lat2,</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                                                         <span class="keywordtype">double</span> lon2,</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                                                         <span class="keywordtype">int</span> tblk);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="keywordtype">double</span> <a class="code" href="namespace_a_calc.html#acfa830e821e2f9e20bebffda67d393b1">solarElevation</a>(QDateTime utc_time_point, <span class="keywordtype">double</span> lat, <span class="keywordtype">double</span> lon);</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160; </div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="keywordtype">int</span> <a class="code" href="namespace_a_calc.html#a55ede99d0f9f6e8a2f3a467859c0f192">calculateNightTime</a>(<span class="keyword">const</span> QString &amp;dept, <span class="keyword">const</span> QString &amp;dest, QDateTime departureTime, <span class="keywordtype">int</span> tblk, <span class="keywordtype">int</span> nightAngle);</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160; </div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keywordtype">bool</span> isNight(<span class="keyword">const</span> QString &amp;icao, QDateTime event_time, <span class="keywordtype">int</span> night_angle);</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160; </div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;QString <a class="code" href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">formatTimeInput</a>(QString user_input);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_a_calc.html#a3f12e1f72eeb5cc1cfe9b7b6df47391c">updateAutoTimes</a>(<span class="keywordtype">int</span> acft_id);</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_a_calc.html#adb7a8a84011affb4173bb59be4449b9d">updateNightTimes</a>();</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;} <span class="comment">// namespace ACalc</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160; </div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="preprocessor">#endif // ACALC_H</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keywordtype">bool</span> isNight(<span class="keyword">const</span> QString &amp;icao, QDateTime event_time, <span class="keywordtype">int</span> night_angle);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;QString <a class="code" href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">formatTimeInput</a>(QString user_input);</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_a_calc.html#a3f12e1f72eeb5cc1cfe9b7b6df47391c">updateAutoTimes</a>(<span class="keywordtype">int</span> acft_id);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160; </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespace_a_calc.html#adb7a8a84011affb4173bb59be4449b9d">updateNightTimes</a>();</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_a_calc_1_1_night_time_values.html">  145</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_a_calc_1_1_night_time_values.html">NightTimeValues</a>{</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <a class="code" href="struct_a_calc_1_1_night_time_values.html">NightTimeValues</a>() = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <a class="code" href="struct_a_calc_1_1_night_time_values.html">NightTimeValues</a>(<span class="keyword">const</span> QString&amp; dept, <span class="keyword">const</span> QString&amp; dest, <span class="keyword">const</span> QDateTime&amp; departure_time, <span class="keywordtype">int</span> block_minutes, <span class="keywordtype">int</span> night_angle)</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        nightMinutes = <a class="code" href="namespace_a_calc.html#a55ede99d0f9f6e8a2f3a467859c0f192">calculateNightTime</a>(dept, dest, departure_time, block_minutes, night_angle);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        nightTime = ATime::qTimefromMinutes(nightMinutes);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        totalTime = ATime::qTimefromMinutes(block_minutes);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        <span class="keywordflow">if</span> (nightMinutes == 0) { <span class="comment">// all day</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;            takeOffNight = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;            landingNight  = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        }</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nightMinutes == block_minutes) { <span class="comment">// all night</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;            takeOffNight = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;            landingNight  = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            <span class="keywordflow">if</span>(isNight(dept, departure_time,  night_angle))</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                takeOffNight = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;            <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                takeOffNight = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;            <span class="keywordflow">if</span>(isNight(dest, departure_time.addSecs(block_minutes * 60), night_angle))</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                landingNight = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;            <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                landingNight = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        }</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    };</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <a class="code" href="struct_a_calc_1_1_night_time_values.html">NightTimeValues</a>(<span class="keywordtype">bool</span> to_night, <span class="keywordtype">bool</span> ldg_night, <span class="keywordtype">int</span> night_minutes, QTime night_time, QTime total_time)</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        : takeOffNight(to_night), landingNight(ldg_night), nightMinutes(night_minutes), nightTime(night_time), totalTime(total_time){};</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">bool</span> takeOffNight;</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordtype">bool</span> landingNight;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="keywordtype">int</span> nightMinutes;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    QTime nightTime;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    QTime totalTime;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> isAllDay()      {<span class="keywordflow">return</span> (!takeOffNight  &amp;&amp; !landingNight);}</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> isAllNight()    {<span class="keywordflow">return</span> ( takeOffNight  &amp;&amp;  landingNight);}</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> isDayToNight()  {<span class="keywordflow">return</span> (!takeOffNight  &amp;&amp;  landingNight);}</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> isNightToDay()  {<span class="keywordflow">return</span> ( takeOffNight  &amp;&amp; !landingNight);}</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;};</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;} <span class="comment">// namespace ACalc</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ACALC_H</span></div>
+<div class="ttc" id="anamespace_a_calc_html"><div class="ttname"><a href="namespace_a_calc.html">ACalc</a></div><div class="ttdoc">The ACalc namespace provides various functions for calculations that are performed outside of the dat...</div><div class="ttdef"><b>Definition:</b> acalc.h:35</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a2a540662e22840e4b58e8e760611b4f2"><div class="ttname"><a href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">ACalc::radToDeg</a></div><div class="ttdeci">double radToDeg(double rad)</div><div class="ttdoc">radToDeg Converts radians to degrees</div><div class="ttdef"><b>Definition:</b> acalc.h:42</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a2d15bbb67e99d502e2fd730c47854a9f"><div class="ttname"><a href="namespace_a_calc.html#a2d15bbb67e99d502e2fd730c47854a9f">ACalc::greatCircleDistanceBetweenAirports</a></div><div class="ttdeci">double greatCircleDistanceBetweenAirports(const QString &amp;dept, const QString &amp;dest)</div><div class="ttdoc">ACalc::greatCircleDistanceBetweenAirports Calculates Great Circle distance between two coordinates,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:107</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a37c52e8b522b233087b8c4d94f30fca5"><div class="ttname"><a href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">ACalc::radToNauticalMiles</a></div><div class="ttdeci">double radToNauticalMiles(double rad)</div><div class="ttdoc">radToNauticalMiles Convert Radians to nautical miles</div><div class="ttdef"><b>Definition:</b> acalc.h:64</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a3f12e1f72eeb5cc1cfe9b7b6df47391c"><div class="ttname"><a href="namespace_a_calc.html#a3f12e1f72eeb5cc1cfe9b7b6df47391c">ACalc::updateAutoTimes</a></div><div class="ttdeci">void updateAutoTimes(int acft_id)</div><div class="ttdoc">ACalc::updateAutoTimes When the details of an aircraft are changed, this function recalculates deduct...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:305</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a4a071a5788f00c98834127f9c5721383"><div class="ttname"><a href="namespace_a_calc.html#a4a071a5788f00c98834127f9c5721383">ACalc::intermediatePointsOnGreatCircle</a></div><div class="ttdeci">QVector&lt; QVector&lt; double &gt; &gt; intermediatePointsOnGreatCircle(double lat1, double lon1, double lat2, double lon2, int tblk)</div><div class="ttdoc">Calculates a list of points (lat,lon) along the Great Circle between two points. The points are space...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:137</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a55ede99d0f9f6e8a2f3a467859c0f192"><div class="ttname"><a href="namespace_a_calc.html#a55ede99d0f9f6e8a2f3a467859c0f192">ACalc::calculateNightTime</a></div><div class="ttdeci">int calculateNightTime(const QString &amp;dept, const QString &amp;dest, QDateTime departureTime, int tblk, int nightAngle)</div><div class="ttdoc">Calculates which portion of a flight was conducted in night conditions.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:230</div></div>
+<div class="ttc" id="anamespace_a_calc_html_a72c6fca35602a24ff8435f86abdc78d7"><div class="ttname"><a href="namespace_a_calc.html#a72c6fca35602a24ff8435f86abdc78d7">ACalc::greatCircleDistance</a></div><div class="ttdeci">double greatCircleDistance(double lat1, double lon1, double lat2, double lon2)</div><div class="ttdoc">greatCircleDistance Calculates Great Circle distance between two coordinates, return in Radians.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:88</div></div>
+<div class="ttc" id="anamespace_a_calc_html_acafe6c0bede38e737937e2062fd93c71"><div class="ttname"><a href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">ACalc::degToRad</a></div><div class="ttdeci">double degToRad(double deg)</div><div class="ttdoc">degToRad Converts degrees to radians</div><div class="ttdef"><b>Definition:</b> acalc.h:53</div></div>
+<div class="ttc" id="anamespace_a_calc_html_acfa830e821e2f9e20bebffda67d393b1"><div class="ttname"><a href="namespace_a_calc.html#acfa830e821e2f9e20bebffda67d393b1">ACalc::solarElevation</a></div><div class="ttdeci">double solarElevation(QDateTime utc_time_point, double lat, double lon)</div><div class="ttdoc">Calculates solar elevation angle for a given point in time and latitude/longitude coordinates.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:171</div></div>
+<div class="ttc" id="anamespace_a_calc_html_ad088e5dd93d1938ff97f88032dc0adec"><div class="ttname"><a href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">ACalc::formatTimeInput</a></div><div class="ttdeci">QString formatTimeInput(QString user_input)</div><div class="ttdoc">ACalc::formatTimeInput verifies user input and formats to hh:mm if the output is not a valid time,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:35</div></div>
+<div class="ttc" id="anamespace_a_calc_html_adb7a8a84011affb4173bb59be4449b9d"><div class="ttname"><a href="namespace_a_calc.html#adb7a8a84011affb4173bb59be4449b9d">ACalc::updateNightTimes</a></div><div class="ttdeci">void updateNightTimes()</div><div class="ttdoc">ACalc::updateNightTimes updates the night times in the database, used when changing night angle setti...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:348</div></div>
+<div class="ttc" id="astruct_a_calc_1_1_night_time_values_html"><div class="ttname"><a href="struct_a_calc_1_1_night_time_values.html">ACalc::NightTimeValues</a></div><div class="ttdoc">The NightTimeValues struct encapsulates values relating to night time that are needed by the NewFligh...</div><div class="ttdef"><b>Definition:</b> acalc.h:145</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="anamespace_a_calc_html_a4a071a5788f00c98834127f9c5721383"><div class="ttname"><a href="namespace_a_calc.html#a4a071a5788f00c98834127f9c5721383">ACalc::intermediatePointsOnGreatCircle</a></div><div class="ttdeci">QVector&lt; QVector&lt; double &gt; &gt; intermediatePointsOnGreatCircle(double lat1, double lon1, double lat2, double lon2, int tblk)</div><div class="ttdoc">Calculates a list of points (lat,lon) along the Great Circle between two points. The points are space...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:136</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a9568b0d72cd6b0f91f686342bc624e1f"><div class="ttname"><a href="namespace_a_calc.html#a9568b0d72cd6b0f91f686342bc624e1f">ACalc::QTimeToMinutes</a></div><div class="ttdeci">QT_DEPRECATED int QTimeToMinutes(QTime time)</div><div class="ttdoc">ACalc::time_to_minutes converts QTime to int minutes.</div><div class="ttdef"><b>Definition:</b> acalc.h:101</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a3f12e1f72eeb5cc1cfe9b7b6df47391c"><div class="ttname"><a href="namespace_a_calc.html#a3f12e1f72eeb5cc1cfe9b7b6df47391c">ACalc::updateAutoTimes</a></div><div class="ttdeci">void updateAutoTimes(int acft_id)</div><div class="ttdoc">ACalc::updateAutoTimes When the details of an aircraft are changed, this function recalculates deduct...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:288</div></div>
-<div class="ttc" id="anamespace_a_calc_html_ac5e39b538ea3663556c820d237f242a2"><div class="ttname"><a href="namespace_a_calc.html#ac5e39b538ea3663556c820d237f242a2">ACalc::minutesToString</a></div><div class="ttdeci">QT_DEPRECATED QString minutesToString(QString block_minutes)</div><div class="ttdoc">ACalc::minutes_to_string Converts database time to String Time.</div><div class="ttdef"><b>Definition:</b> acalc.h:65</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a37c52e8b522b233087b8c4d94f30fca5"><div class="ttname"><a href="namespace_a_calc.html#a37c52e8b522b233087b8c4d94f30fca5">ACalc::radToNauticalMiles</a></div><div class="ttdeci">double radToNauticalMiles(double rad)</div><div class="ttdoc">radToNauticalMiles Convert Radians to nautical miles</div><div class="ttdef"><b>Definition:</b> acalc.h:150</div></div>
-<div class="ttc" id="anamespace_a_calc_html"><div class="ttname"><a href="namespace_a_calc.html">ACalc</a></div><div class="ttdoc">The ACalc namespace provides various functions for calculations that are performed outside of the dat...</div><div class="ttdef"><b>Definition:</b> acalc.h:34</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a8ac68999097f2e28a3b4bd2709b5b19f"><div class="ttname"><a href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">ACalc::blocktime</a></div><div class="ttdeci">QT_DEPRECATED QTime blocktime(QTime tofb, QTime tonb)</div><div class="ttdoc">ACalc::blocktime Calculates Block Time for a given departure and arrival time.</div><div class="ttdef"><b>Definition:</b> acalc.h:43</div></div>
-<div class="ttc" id="anamespace_a_calc_html_ad088e5dd93d1938ff97f88032dc0adec"><div class="ttname"><a href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">ACalc::formatTimeInput</a></div><div class="ttdeci">QString formatTimeInput(QString user_input)</div><div class="ttdoc">ACalc::formatTimeInput verifies user input and formats to hh:mm if the output is not a valid time,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:34</div></div>
-<div class="ttc" id="anamespace_a_calc_html_acafe6c0bede38e737937e2062fd93c71"><div class="ttname"><a href="namespace_a_calc.html#acafe6c0bede38e737937e2062fd93c71">ACalc::degToRad</a></div><div class="ttdeci">double degToRad(double deg)</div><div class="ttdoc">degToRad Converts degrees to radians</div><div class="ttdef"><b>Definition:</b> acalc.h:139</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a2a540662e22840e4b58e8e760611b4f2"><div class="ttname"><a href="namespace_a_calc.html#a2a540662e22840e4b58e8e760611b4f2">ACalc::radToDeg</a></div><div class="ttdeci">double radToDeg(double rad)</div><div class="ttdoc">radToDeg Converts radians to degrees</div><div class="ttdef"><b>Definition:</b> acalc.h:128</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a2d15bbb67e99d502e2fd730c47854a9f"><div class="ttname"><a href="namespace_a_calc.html#a2d15bbb67e99d502e2fd730c47854a9f">ACalc::greatCircleDistanceBetweenAirports</a></div><div class="ttdeci">double greatCircleDistanceBetweenAirports(const QString &amp;dept, const QString &amp;dest)</div><div class="ttdoc">ACalc::greatCircleDistanceBetweenAirports Calculates Great Circle distance between two coordinates,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:106</div></div>
-<div class="ttc" id="anamespace_a_calc_html_acfa830e821e2f9e20bebffda67d393b1"><div class="ttname"><a href="namespace_a_calc.html#acfa830e821e2f9e20bebffda67d393b1">ACalc::solarElevation</a></div><div class="ttdeci">double solarElevation(QDateTime utc_time_point, double lat, double lon)</div><div class="ttdoc">Calculates solar elevation angle for a given point in time and latitude/longitude coordinates.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:167</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a4c829bf747bcd84bf6b1efb3ab0201d1"><div class="ttname"><a href="namespace_a_calc.html#a4c829bf747bcd84bf6b1efb3ab0201d1">ACalc::stringToMinutes</a></div><div class="ttdeci">QT_DEPRECATED int stringToMinutes(QString timestring)</div><div class="ttdoc">ACalc::string_to_minutes Converts String Time to String Number of Minutes.</div><div class="ttdef"><b>Definition:</b> acalc.h:115</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a72c6fca35602a24ff8435f86abdc78d7"><div class="ttname"><a href="namespace_a_calc.html#a72c6fca35602a24ff8435f86abdc78d7">ACalc::greatCircleDistance</a></div><div class="ttdeci">double greatCircleDistance(double lat1, double lon1, double lat2, double lon2)</div><div class="ttdoc">greatCircleDistance Calculates Great Circle distance between two coordinates, return in Radians.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:87</div></div>
-<div class="ttc" id="anamespace_a_calc_html_adb7a8a84011affb4173bb59be4449b9d"><div class="ttname"><a href="namespace_a_calc.html#adb7a8a84011affb4173bb59be4449b9d">ACalc::updateNightTimes</a></div><div class="ttdeci">void updateNightTimes()</div><div class="ttdoc">ACalc::updateNightTimes updates the night times in the database, used when changing night angle setti...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:331</div></div>
-<div class="ttc" id="anamespace_a_calc_html_a55ede99d0f9f6e8a2f3a467859c0f192"><div class="ttname"><a href="namespace_a_calc.html#a55ede99d0f9f6e8a2f3a467859c0f192">ACalc::calculateNightTime</a></div><div class="ttdeci">int calculateNightTime(const QString &amp;dept, const QString &amp;dest, QDateTime departureTime, int tblk, int nightAngle)</div><div class="ttdoc">Calculates which portion of a flight was conducted in night conditions.</div><div class="ttdef"><b>Definition:</b> acalc.cpp:227</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>acalc.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 133 - 0
docs/html/acompletiondata_8h_source.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>openPilotLog: src/classes/acompletiondata.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="custom_dark_theme.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="icon_main.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">openPilotLog
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('acompletiondata_8h_source.html',''); initResizable(); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">acompletiondata.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef ACOMPLETIONDATA_H</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define ACOMPLETIONDATA_H</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &quot;src/database/adatabase.h&quot;</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160; </div>
+<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_a_completion_data.html">   11</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_completion_data.html">ACompletionData</a></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;{</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">public</span>:  </div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_completion_data.html#af476c92d41ac0dce50e098c25e6b035c">init</a>();</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_completion_data.html#aeccf7bcb927ec5dbf2879c0a345161a4">update</a>();</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    <span class="keywordtype">void</span> updateTails();</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keywordtype">void</span> updatePilots();</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="comment">// Maps for input mapping DB key - user input</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    QHash&lt;RowId_T, QString&gt; pilotsIdMap;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    QHash&lt;RowId_T, QString&gt; tailsIdMap;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    QHash&lt;RowId_T, QString&gt; airportIcaoIdMap;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    QHash&lt;RowId_T, QString&gt; airportIataIdMap;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    QHash&lt;RowId_T, QString&gt; airportNameIdMap;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="comment">// Lists for QCompleter</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    QStringList pilotList;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    QStringList tailsList;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    QStringList airportList;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="comment">// User Data State to trigger update if needed</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <a class="code" href="struct_user_data_state.html">UserDataState</a> current_state;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;};</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ACOMPLETIONDATA_H</span></div>
+<div class="ttc" id="aclass_a_completion_data_html"><div class="ttname"><a href="class_a_completion_data.html">ACompletionData</a></div><div class="ttdoc">The ACompletionData class provides data to QCompleters and QHashs used for mapping user input to data...</div><div class="ttdef"><b>Definition:</b> acompletiondata.h:12</div></div>
+<div class="ttc" id="aclass_a_completion_data_html_aeccf7bcb927ec5dbf2879c0a345161a4"><div class="ttname"><a href="class_a_completion_data.html#aeccf7bcb927ec5dbf2879c0a345161a4">ACompletionData::update</a></div><div class="ttdeci">void update()</div><div class="ttdoc">updates data from the user modifiable tables</div><div class="ttdef"><b>Definition:</b> acompletiondata.cpp:31</div></div>
+<div class="ttc" id="aclass_a_completion_data_html_af476c92d41ac0dce50e098c25e6b035c"><div class="ttname"><a href="class_a_completion_data.html#af476c92d41ac0dce50e098c25e6b035c">ACompletionData::init</a></div><div class="ttdeci">void init()</div><div class="ttdoc">init Retrieves Data and populates Lists and Maps</div><div class="ttdef"><b>Definition:</b> acompletiondata.cpp:3</div></div>
+<div class="ttc" id="astruct_user_data_state_html"><div class="ttname"><a href="struct_user_data_state.html">UserDataState</a></div><div class="ttdoc">The UserDateState struct caches the current number of entries in relevant database tables for fast ac...</div><div class="ttdef"><b>Definition:</b> adatabase.h:97</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>acompletiondata.h</b></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 8 - 10
docs/html/acurrencyentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/acurrencyentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -115,19 +115,17 @@ $(document).ready(function(){initNavTree('acurrencyentry_8h_source.html',''); in
 <div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="struct_a_currency_entry.html#a17202e44445755d9136335201758a8d4">isValid</a>() <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;};</div>
 <div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif // ACURRENCYENTRY_H</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ACURRENCYENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
+<div class="ttc" id="astruct_a_currency_entry_html"><div class="ttname"><a href="struct_a_currency_entry.html">ACurrencyEntry</a></div><div class="ttdef"><b>Definition:</b> acurrencyentry.h:8</div></div>
+<div class="ttc" id="astruct_a_currency_entry_html_a17202e44445755d9136335201758a8d4"><div class="ttname"><a href="struct_a_currency_entry.html#a17202e44445755d9136335201758a8d4">ACurrencyEntry::isValid</a></div><div class="ttdeci">bool isValid() const</div><div class="ttdoc">ACurrencyEntry::isValid returns true if the object holds a valid expiration date.</div><div class="ttdef"><b>Definition:</b> acurrencyentry.cpp:34</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_a_currency_entry_html_a17202e44445755d9136335201758a8d4"><div class="ttname"><a href="struct_a_currency_entry.html#a17202e44445755d9136335201758a8d4">ACurrencyEntry::isValid</a></div><div class="ttdeci">bool isValid() const</div><div class="ttdoc">ACurrencyEntry::isValid returns true if the object holds a valid expiration date.</div><div class="ttdef"><b>Definition:</b> acurrencyentry.cpp:34</div></div>
-<div class="ttc" id="astruct_a_currency_entry_html"><div class="ttname"><a href="struct_a_currency_entry.html">ACurrencyEntry</a></div><div class="ttdef"><b>Definition:</b> acurrencyentry.h:7</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>acurrencyentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 181 - 160
docs/html/adatabase_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/database/adatabase.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -108,7 +108,7 @@ $(document).ready(function(){initNavTree('adatabase_8h_source.html',''); initRes
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#define ADATABASE_H</span></div>
 <div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160; </div>
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;QPair&gt;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QMap&gt;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QHash&gt;</span></div>
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;QSqlDatabase&gt;</span></div>
@@ -129,7 +129,7 @@ $(document).ready(function(){initNavTree('adatabase_8h_source.html',''); initRes
 <div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;src/classes/astandardpaths.h&quot;</span></div>
 <div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;src/classes/acurrencyentry.h&quot;</span></div>
 <div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#define SQLITE_DRIVER QStringLiteral(&quot;QSQLITE&quot;)</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#define SQLITE_DRIVER QStringLiteral(&quot;QSQLITE&quot;</span>)</div>
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
 <div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#define aDB ADatabase::instance()</span></div>
 <div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
@@ -163,177 +163,198 @@ $(document).ready(function(){initNavTree('adatabase_8h_source.html',''); initRes
 <div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    total_time,</div>
 <div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;};</div>
 <div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
-<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_a_database_error.html">   98</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_database_error.html">ADatabaseError</a> : <span class="keyword">public</span> QSqlError {</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>(QString msg);</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    QString text() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>(QSqlError);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;};</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
-<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_a_database.html">  110</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_database.html">ADatabase</a> : <span class="keyword">public</span> QObject {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    Q_OBJECT</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160; </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keyword">static</span> <a class="code" href="class_a_database.html">ADatabase</a>* <span class="keyword">self</span>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    TableNames_T tableNames;</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    TableColumns_T tableColumns;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">int</span> databaseRevision;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <a class="code" href="class_a_database.html">ADatabase</a>();</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordtype">int</span> checkDbVersion() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> QStringList userTableNames;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> QStringList templateTableNames;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">int</span> minimumDatabaseRevision;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">  134</a></span>&#160;    QSqlError <a class="code" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">lastError</a>;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keyword">const</span> QFileInfo databaseFile;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct_user_data_state.html">   97</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_user_data_state.html">UserDataState</a> {</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <a class="code" href="struct_user_data_state.html">UserDataState</a>(){numTails = 0; numPilots = 0;}</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <a class="code" href="struct_user_data_state.html">UserDataState</a>(<span class="keywordtype">int</span> numTails_, <span class="keywordtype">int</span> numPilots_)</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        : numTails(numTails_), numPilots(numPilots_){}</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="struct_user_data_state.html">UserDataState</a>&amp; other)</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    {</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> numTails == other.numTails &amp;&amp; numPilots == other.numPilots;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="struct_user_data_state.html">UserDataState</a>&amp; other)</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <span class="keywordflow">return</span> numTails != other.numTails || numPilots != other.numPilots;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    }</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordtype">int</span> numTails;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">int</span> numPilots;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;};</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_a_database_error.html">  123</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_database_error.html">ADatabaseError</a> : <span class="keyword">public</span> QSqlError {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>(QString msg);</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    QString text() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="class_a_database_error.html">ADatabaseError</a>(QSqlError);</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;};</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_a_database.html">  135</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_database.html">ADatabase</a> : <span class="keyword">public</span> QObject {</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    Q_OBJECT</div>
 <div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160; </div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="comment">// Ensure DB is not copiable or assignable</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <a class="code" href="class_a_database.html">ADatabase</a>(<span class="keyword">const</span> <a class="code" href="class_a_database.html">ADatabase</a>&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="class_a_database.html">ADatabase</a>&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keyword">static</span> <a class="code" href="class_a_database.html">ADatabase</a>* instance();</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_a_database.html#a1c026e7784b03fc5822077c7d0071330">dbRevision</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; </div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keyword">const</span> TableNames_T <a class="code" href="class_a_database.html#a3deb081c5abe832a65e1792c106eb083">getTableNames</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keyword">const</span> ColumnNames_T <a class="code" href="class_a_database.html#a9c0dcd8c35087c8256b75d8aafa64880">getTableColumns</a>(TableName_T table_name) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160; </div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a3c0fdc84000ad397d61f0efabd032194">updateLayout</a>();</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keyword">const</span> QString <a class="code" href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">sqliteVersion</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#aa6080200aa3f229251480bc416755fed">connect</a>();</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160; </div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#abc461aaa66304ca638e546f67a694935">disconnect</a>();</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160; </div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keyword">static</span> QSqlDatabase <a class="code" href="class_a_database.html#a2379c9da900da8e96add932e4024389a">database</a>();</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    QVector&lt;QVariant&gt; <a class="code" href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">customQuery</a>(QString statement, <span class="keywordtype">int</span> return_values);</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160; </div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6">exists</a>(<a class="code" href="class_a_entry.html">AEntry</a> entry);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6">exists</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160; </div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">clear</a>();</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keyword">static</span> <a class="code" href="class_a_database.html">ADatabase</a>* <span class="keyword">self</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    TableNames_T tableNames;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    TableColumns_T tableColumns;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordtype">int</span> databaseRevision;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <a class="code" href="class_a_database.html">ADatabase</a>();</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keywordtype">int</span> checkDbVersion() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> QStringList userTableNames;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> QStringList templateTableNames;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="keyword">const</span> <span class="keyword">static</span> <span class="keywordtype">int</span> minimumDatabaseRevision;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">  159</a></span>&#160;    QSqlError <a class="code" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">lastError</a>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keyword">const</span> QFileInfo databaseFile;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="comment">// Ensure DB is not copiable or assignable</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <a class="code" href="class_a_database.html">ADatabase</a>(<span class="keyword">const</span> <a class="code" href="class_a_database.html">ADatabase</a>&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="class_a_database.html">ADatabase</a>&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keyword">static</span> <a class="code" href="class_a_database.html">ADatabase</a>* instance();</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160; </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_a_database.html#a1c026e7784b03fc5822077c7d0071330">dbRevision</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keyword">const</span> TableNames_T <a class="code" href="class_a_database.html#a3deb081c5abe832a65e1792c106eb083">getTableNames</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keyword">const</span> ColumnNames_T <a class="code" href="class_a_database.html#a9c0dcd8c35087c8256b75d8aafa64880">getTableColumns</a>(TableName_T table_name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a3c0fdc84000ad397d61f0efabd032194">updateLayout</a>();</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="keyword">const</span> QString <a class="code" href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">sqliteVersion</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160; </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#aa6080200aa3f229251480bc416755fed">connect</a>();</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160; </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#abc461aaa66304ca638e546f67a694935">disconnect</a>();</div>
 <div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160; </div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a652472c747c0ce68940b17c9c23666dd">commit</a>(<a class="code" href="class_a_entry.html">AEntry</a> entry);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <span class="keyword">static</span> QSqlDatabase <a class="code" href="class_a_database.html#a2379c9da900da8e96add932e4024389a">database</a>();</div>
 <div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a4ecb6d0c9b3813c90b3165c993e69ad5">insert</a>(<a class="code" href="class_a_entry.html">AEntry</a> new_entry);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160; </div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a910bc0c1717e9301911343c082aa1aaa">update</a>(<a class="code" href="class_a_entry.html">AEntry</a> updated_entry);</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160; </div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a4903909a28daed708e1a335d3be4f57b">remove</a>(<a class="code" href="class_a_entry.html">AEntry</a> entry);</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160; </div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">removeMany</a>(QList&lt;DataPosition&gt;);</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160; </div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    RowData_T <a class="code" href="class_a_database.html#afc39f6136fc822e0649964fa22b84bf9">getEntryData</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a> <a class="code" href="class_a_database.html#a8959b406b97d9520981890d92850b1ba">getEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    <a class="code" href="struct_a_pilot_entry.html">APilotEntry</a> <a class="code" href="class_a_database.html#a426026d641a594863995ec5db8312259">getPilotEntry</a>(RowId_T row_id);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="struct_a_tail_entry.html">ATailEntry</a> <a class="code" href="class_a_database.html#a356df159542705635dc3898d90682039">getTailEntry</a>(RowId_T row_id);</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    QVector&lt;QVariant&gt; <a class="code" href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">customQuery</a>(QString statement, <span class="keywordtype">int</span> return_values);</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160; </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12">exists</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a> &amp;entry);</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12">exists</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">clear</a>();</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160; </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a7d57d7696814bd013fa35e068ad909c8">commit</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a> &amp;entry);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160; </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#aa69dcdf174e48653cdf1bef473dc5623">insert</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a> &amp;new_entry);</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160; </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#ac73208ba1a70af19590d53f260e7cb8c">update</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a> &amp;updated_entry);</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a4deda96cfb75518f98a4a0c9996920eb">remove</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a> &amp;entry);</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">removeMany</a>(QList&lt;DataPosition&gt;);</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160; </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    RowData_T <a class="code" href="class_a_database.html#afc39f6136fc822e0649964fa22b84bf9">getEntryData</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
 <div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160; </div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <a class="code" href="struct_a_aircraft_entry.html">AAircraftEntry</a> <a class="code" href="class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a">getAircraftEntry</a>(RowId_T row_id);</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160; </div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <a class="code" href="class_a_flight_entry.html">AFlightEntry</a> <a class="code" href="class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a">getFlightEntry</a>(RowId_T row_id);</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <a class="code" href="struct_a_currency_entry.html">ACurrencyEntry</a> <a class="code" href="class_a_database.html#a5abdf1f35468f788609252c7a3be7bc4">getCurrencyEntry</a>(ACurrencyEntry::CurrencyName currency_name);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a> <a class="code" href="class_a_database.html#a8959b406b97d9520981890d92850b1ba">getEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> data_position);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160; </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="struct_a_pilot_entry.html">APilotEntry</a> <a class="code" href="class_a_database.html#a426026d641a594863995ec5db8312259">getPilotEntry</a>(RowId_T row_id);</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160; </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <a class="code" href="struct_a_tail_entry.html">ATailEntry</a> <a class="code" href="class_a_database.html#a356df159542705635dc3898d90682039">getTailEntry</a>(RowId_T row_id);</div>
 <div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <span class="keyword">const</span> QStringList <a class="code" href="class_a_database.html#a89de409c1828125363f46f384df47359">getCompletionList</a>(ADatabaseTarget target);</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <span class="keyword">const</span> QMap&lt;QString, RowId_T&gt; <a class="code" href="class_a_database.html#a5dba46567089112b28b16aaf985af0ba">getIdMap</a>(ADatabaseTarget target);</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160; </div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_a_database.html#abc8c302d07f5f14cf246c8b2fd1ba366">getLastEntry</a>(ADatabaseTable table);</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160; </div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    QList&lt;RowId_T&gt; <a class="code" href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">getForeignKeyConstraints</a>(RowId_T foreign_row_id, ADatabaseTable target);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160; </div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <a class="code" href="struct_a_pilot_entry.html">APilotEntry</a> <a class="code" href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">resolveForeignPilot</a>(RowId_T foreign_key);</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <a class="code" href="struct_a_tail_entry.html">ATailEntry</a> <a class="code" href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">resolveForeignTail</a>(RowId_T foreign_key);</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160; </div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    QMap&lt;ADatabaseSummaryKey, QString&gt; <a class="code" href="class_a_database.html#a56baf4eaf25922030f3cfa6906963f7c">databaseSummary</a>(<span class="keyword">const</span> QString&amp; db_path);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160; </div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    <span class="keyword">const</span> QString <a class="code" href="class_a_database.html#a2c54b7506faf0f15f5323ed53ff12099">databaseSummaryString</a>(<span class="keyword">const</span> QString&amp; db_path);</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160; </div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">restoreBackup</a>(<span class="keyword">const</span> QString&amp; backup_file);</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99">createBackup</a>(<span class="keyword">const</span> QString&amp; dest_file);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <a class="code" href="struct_a_aircraft_entry.html">AAircraftEntry</a> <a class="code" href="class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a">getAircraftEntry</a>(RowId_T row_id);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160; </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <a class="code" href="class_a_flight_entry.html">AFlightEntry</a> <a class="code" href="class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a">getFlightEntry</a>(RowId_T row_id);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <a class="code" href="struct_a_currency_entry.html">ACurrencyEntry</a> <a class="code" href="class_a_database.html#a5abdf1f35468f788609252c7a3be7bc4">getCurrencyEntry</a>(ACurrencyEntry::CurrencyName currency_name);</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160; </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    <span class="keyword">const</span> QStringList <a class="code" href="class_a_database.html#a89de409c1828125363f46f384df47359">getCompletionList</a>(ADatabaseTarget target);</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160; </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <span class="keyword">const</span> QHash&lt;RowId_T, QString&gt; <a class="code" href="class_a_database.html#afaaaaf276d832833b0865db86de51ae5">getIdMap</a>(ADatabaseTarget target);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160; </div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    RowId_T <a class="code" href="class_a_database.html#a0497bb70998cea6cd60fa893880c9555">getLastEntry</a>(ADatabaseTable table);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160; </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    QList&lt;RowId_T&gt; <a class="code" href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">getForeignKeyConstraints</a>(RowId_T foreign_row_id, ADatabaseTable target);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <a class="code" href="struct_a_pilot_entry.html">APilotEntry</a> <a class="code" href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">resolveForeignPilot</a>(RowId_T foreign_key);</div>
 <div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160; </div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    QVector&lt;RowData_T&gt; <a class="code" href="class_a_database.html#a8b38405b535d603cce2b36ca2d56368f">getTable</a>(ADatabaseTable table_name);</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <a class="code" href="struct_a_tail_entry.html">ATailEntry</a> <a class="code" href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">resolveForeignTail</a>(RowId_T foreign_key);</div>
 <div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    QStringList <a class="code" href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">getUserTableNames</a>();</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160; </div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    QStringList <a class="code" href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">getTemplateTableNames</a>();</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160; </div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_database.html#ab99ccce4c67591f5f58832c26cf93fc8">getMinimumDatabaseRevision</a>();</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;signals:</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">dataBaseUpdated</a>();</div>
-<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">connectionReset</a>();</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;};</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160; </div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="preprocessor">#endif // ADATABASE_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
-<div class="ttc" id="aclass_a_database_html_a24f938e4c8d20afddb5e5651e041a7a6"><div class="ttname"><a href="class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6">ADatabase::exists</a></div><div class="ttdeci">bool exists(AEntry entry)</div><div class="ttdoc">Checks if an entry exists in the database, based on position data.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:256</div></div>
-<div class="ttc" id="aclass_a_database_html_a0bda52064f005f1463e56b60cd23b164"><div class="ttname"><a href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">ADatabase::restoreBackup</a></div><div class="ttdeci">bool restoreBackup(const QString &amp;backup_file)</div><div class="ttdoc">ADatabase::restoreBackup restores the database from a given backup file and replaces the currently ac...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:854</div></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    QMap&lt;ADatabaseSummaryKey, QString&gt; <a class="code" href="class_a_database.html#a56baf4eaf25922030f3cfa6906963f7c">databaseSummary</a>(<span class="keyword">const</span> QString&amp; db_path);</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160; </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    <span class="keyword">const</span> QString <a class="code" href="class_a_database.html#a2c54b7506faf0f15f5323ed53ff12099">databaseSummaryString</a>(<span class="keyword">const</span> QString&amp; db_path);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160; </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">restoreBackup</a>(<span class="keyword">const</span> QString&amp; backup_file);</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99">createBackup</a>(<span class="keyword">const</span> QString&amp; dest_file);</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160; </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    QVector&lt;RowData_T&gt; <a class="code" href="class_a_database.html#a8b38405b535d603cce2b36ca2d56368f">getTable</a>(ADatabaseTable table_name);</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160; </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    QStringList <a class="code" href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">getUserTableNames</a>();</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160; </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    QStringList <a class="code" href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">getTemplateTableNames</a>();</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <a class="code" href="struct_user_data_state.html">UserDataState</a> <a class="code" href="class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5">getUserDataState</a>();</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_database.html#ab99ccce4c67591f5f58832c26cf93fc8">getMinimumDatabaseRevision</a>();</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160; </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;signals:</div>
+<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">  404</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">dataBaseUpdated</a>();</div>
+<div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">  409</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">connectionReset</a>();</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;};</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160; </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ADATABASE_H</span></div>
+<div class="ttc" id="aclass_a_database_error_html"><div class="ttname"><a href="class_a_database_error.html">ADatabaseError</a></div><div class="ttdoc">Custom Database Error derived from QSqlError. Extends text() adding &quot;Database Error: &quot; before the tex...</div><div class="ttdef"><b>Definition:</b> adatabase.h:123</div></div>
+<div class="ttc" id="aclass_a_database_html"><div class="ttname"><a href="class_a_database.html">ADatabase</a></div><div class="ttdoc">The DB class encapsulates the SQL database by providing fast access to hot database data.</div><div class="ttdef"><b>Definition:</b> adatabase.h:135</div></div>
+<div class="ttc" id="aclass_a_database_html_a0497bb70998cea6cd60fa893880c9555"><div class="ttname"><a href="class_a_database.html#a0497bb70998cea6cd60fa893880c9555">ADatabase::getLastEntry</a></div><div class="ttdeci">RowId_T getLastEntry(ADatabaseTable table)</div><div class="ttdoc">returns the ROWID for the newest entry in the respective database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:600</div></div>
+<div class="ttc" id="aclass_a_database_html_a0bda52064f005f1463e56b60cd23b164"><div class="ttname"><a href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">ADatabase::restoreBackup</a></div><div class="ttdeci">bool restoreBackup(const QString &amp;backup_file)</div><div class="ttdoc">ADatabase::restoreBackup restores the database from a given backup file and replaces the currently ac...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:848</div></div>
+<div class="ttc" id="aclass_a_database_html_a0c5a017dccf7bf5d4dcbfc29c8d20e12"><div class="ttname"><a href="class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12">ADatabase::exists</a></div><div class="ttdeci">bool exists(const AEntry &amp;entry)</div><div class="ttdoc">Checks if an entry exists in the database, based on position data.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:253</div></div>
+<div class="ttc" id="aclass_a_database_html_a0f0bffbb6cdd79975b7b5ca6c0db31a7"><div class="ttname"><a href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">ADatabase::connectionReset</a></div><div class="ttdeci">void connectionReset()</div><div class="ttdoc">connectionReset is emitted whenever the database connection is reset, for example when creating or re...</div></div>
+<div class="ttc" id="aclass_a_database_html_a0f88e121d421043f35e321d5dc49ba19"><div class="ttname"><a href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">ADatabase::getForeignKeyConstraints</a></div><div class="ttdeci">QList&lt; RowId_T &gt; getForeignKeyConstraints(RowId_T foreign_row_id, ADatabaseTable target)</div><div class="ttdoc">returns a list of ROWID's in the flights table for which foreign key constraints exist.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:627</div></div>
+<div class="ttc" id="aclass_a_database_html_a1c026e7784b03fc5822077c7d0071330"><div class="ttname"><a href="class_a_database.html#a1c026e7784b03fc5822077c7d0071330">ADatabase::dbRevision</a></div><div class="ttdeci">int dbRevision() const</div><div class="ttdoc">dbRevision returns the database Revision Number. The Revision refers to what iteration of the databas...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:45</div></div>
+<div class="ttc" id="aclass_a_database_html_a2379c9da900da8e96add932e4024389a"><div class="ttname"><a href="class_a_database.html#a2379c9da900da8e96add932e4024389a">ADatabase::database</a></div><div class="ttdeci">static QSqlDatabase database()</div><div class="ttdoc">Can be used to access the database connection.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:168</div></div>
+<div class="ttc" id="aclass_a_database_html_a2a43936d3ae28993f9f7eda0fdf4664d"><div class="ttname"><a href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">ADatabase::customQuery</a></div><div class="ttdeci">QVector&lt; QVariant &gt; customQuery(QString statement, int return_values)</div><div class="ttdoc">Can be used to send a complex query to the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:674</div></div>
+<div class="ttc" id="aclass_a_database_html_a2c54b7506faf0f15f5323ed53ff12099"><div class="ttname"><a href="class_a_database.html#a2c54b7506faf0f15f5323ed53ff12099">ADatabase::databaseSummaryString</a></div><div class="ttdeci">const QString databaseSummaryString(const QString &amp;db_path)</div><div class="ttdoc">returns a short summary string of the database, containing total time and date of last flight.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:763</div></div>
+<div class="ttc" id="aclass_a_database_html_a356df159542705635dc3898d90682039"><div class="ttname"><a href="class_a_database.html#a356df159542705635dc3898d90682039">ADatabase::getTailEntry</a></div><div class="ttdeci">ATailEntry getTailEntry(RowId_T row_id)</div><div class="ttdoc">retreives a TailEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:475</div></div>
 <div class="ttc" id="aclass_a_database_html_a3c0fdc84000ad397d61f0efabd032194"><div class="ttname"><a href="class_a_database.html#a3c0fdc84000ad397d61f0efabd032194">ADatabase::updateLayout</a></div><div class="ttdeci">void updateLayout()</div><div class="ttdoc">Updates the member variables tableNames and tableColumns with up-to-date layout information if the da...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:98</div></div>
-<div class="ttc" id="aclass_a_database_html_a2c54b7506faf0f15f5323ed53ff12099"><div class="ttname"><a href="class_a_database.html#a2c54b7506faf0f15f5323ed53ff12099">ADatabase::databaseSummaryString</a></div><div class="ttdeci">const QString databaseSummaryString(const QString &amp;db_path)</div><div class="ttdoc">returns a short summary string of the database, containing total time and date of last flight.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:769</div></div>
-<div class="ttc" id="aclass_a_database_html_a73382f7e897f8381371cd3da458f72cc"><div class="ttname"><a href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">ADatabase::clear</a></div><div class="ttdeci">bool clear()</div><div class="ttdoc">clear resets the database, i.e. deletes all content in the tables containing userdata (pilots,...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:315</div></div>
-<div class="ttc" id="aclass_a_database_html_abc8c302d07f5f14cf246c8b2fd1ba366"><div class="ttname"><a href="class_a_database.html#abc8c302d07f5f14cf246c8b2fd1ba366">ADatabase::getLastEntry</a></div><div class="ttdeci">int getLastEntry(ADatabaseTable table)</div><div class="ttdoc">returns the ROWID for the newest entry in the respective database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:604</div></div>
-<div class="ttc" id="aclass_a_database_html_a4640a4348dad468a0ff65bad05b07227"><div class="ttname"><a href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">ADatabase::resolveForeignPilot</a></div><div class="ttdeci">APilotEntry resolveForeignPilot(RowId_T foreign_key)</div><div class="ttdoc">Resolves the foreign key in a flight entry.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:669</div></div>
-<div class="ttc" id="aclass_a_database_html_a89de409c1828125363f46f384df47359"><div class="ttname"><a href="class_a_database.html#a89de409c1828125363f46f384df47359">ADatabase::getCompletionList</a></div><div class="ttdeci">const QStringList getCompletionList(ADatabaseTarget target)</div><div class="ttdoc">getCompletionList returns a QStringList of values for a QCompleter based on database values</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:509</div></div>
+<div class="ttc" id="aclass_a_database_html_a3deb081c5abe832a65e1792c106eb083"><div class="ttname"><a href="class_a_database.html#a3deb081c5abe832a65e1792c106eb083">ADatabase::getTableNames</a></div><div class="ttdeci">const TableNames_T getTableNames() const</div><div class="ttdoc">Return the names of all tables in the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:93</div></div>
+<div class="ttc" id="aclass_a_database_html_a426026d641a594863995ec5db8312259"><div class="ttname"><a href="class_a_database.html#a426026d641a594863995ec5db8312259">ADatabase::getPilotEntry</a></div><div class="ttdeci">APilotEntry getPilotEntry(RowId_T row_id)</div><div class="ttdoc">retreives a PilotEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:468</div></div>
+<div class="ttc" id="aclass_a_database_html_a4640a4348dad468a0ff65bad05b07227"><div class="ttname"><a href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">ADatabase::resolveForeignPilot</a></div><div class="ttdeci">APilotEntry resolveForeignPilot(RowId_T foreign_key)</div><div class="ttdoc">Resolves the foreign key in a flight entry.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:664</div></div>
+<div class="ttc" id="aclass_a_database_html_a491415273a771dd7ea41452c331a34b0"><div class="ttname"><a href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">ADatabase::sqliteVersion</a></div><div class="ttdeci">const QString sqliteVersion() const</div><div class="ttdoc">ADatabase::sqliteVersion returns the database sqlite version. See also dbRevision()</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:124</div></div>
+<div class="ttc" id="aclass_a_database_html_a4deda96cfb75518f98a4a0c9996920eb"><div class="ttname"><a href="class_a_database.html#a4deda96cfb75518f98a4a0c9996920eb">ADatabase::remove</a></div><div class="ttdeci">bool remove(const AEntry &amp;entry)</div><div class="ttdoc">deletes an entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:182</div></div>
+<div class="ttc" id="aclass_a_database_html_a56baf4eaf25922030f3cfa6906963f7c"><div class="ttname"><a href="class_a_database.html#a56baf4eaf25922030f3cfa6906963f7c">ADatabase::databaseSummary</a></div><div class="ttdeci">QMap&lt; ADatabaseSummaryKey, QString &gt; databaseSummary(const QString &amp;db_path)</div><div class="ttdoc">Return a summary of a database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:702</div></div>
+<div class="ttc" id="aclass_a_database_html_a5878bcd4bc19e4c3fc5275ca7252860d"><div class="ttname"><a href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">ADatabase::resolveForeignTail</a></div><div class="ttdeci">ATailEntry resolveForeignTail(RowId_T foreign_key)</div><div class="ttdoc">Resolves the foreign key in a flight entry.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:669</div></div>
+<div class="ttc" id="aclass_a_database_html_a5ab838a62a83974f9e40c62f66adfa99"><div class="ttname"><a href="class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99">ADatabase::createBackup</a></div><div class="ttdeci">bool createBackup(const QString &amp;dest_file)</div><div class="ttdoc">ADatabase::createBackup copies the currently used database to an external backup location provided by...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:781</div></div>
+<div class="ttc" id="aclass_a_database_html_a5abdf1f35468f788609252c7a3be7bc4"><div class="ttname"><a href="class_a_database.html#a5abdf1f35468f788609252c7a3be7bc4">ADatabase::getCurrencyEntry</a></div><div class="ttdeci">ACurrencyEntry getCurrencyEntry(ACurrencyEntry::CurrencyName currency_name)</div><div class="ttdoc">Retreives a currency entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:496</div></div>
+<div class="ttc" id="aclass_a_database_html_a5ed8c010ccc022687ce903cfde8ae911"><div class="ttname"><a href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">ADatabase::dataBaseUpdated</a></div><div class="ttdeci">void dataBaseUpdated()</div><div class="ttdoc">updated is emitted whenever the database contents have been updated. This can be either a commit,...</div></div>
+<div class="ttc" id="aclass_a_database_html_a692d7ba3abc763ee7c0d1a47236f021f"><div class="ttname"><a href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">ADatabase::getUserTableNames</a></div><div class="ttdeci">QStringList getUserTableNames()</div><div class="ttdoc">getUserTableNames returns a list of the table names of tables that contain user-created data (flights...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:83</div></div>
+<div class="ttc" id="aclass_a_database_html_a73382f7e897f8381371cd3da458f72cc"><div class="ttname"><a href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">ADatabase::clear</a></div><div class="ttdeci">bool clear()</div><div class="ttdoc">clear resets the database, i.e. deletes all content in the tables containing userdata (pilots,...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:310</div></div>
+<div class="ttc" id="aclass_a_database_html_a7bb44738362582e4f54f68e3aa30d40a"><div class="ttname"><a href="class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a">ADatabase::getFlightEntry</a></div><div class="ttdeci">AFlightEntry getFlightEntry(RowId_T row_id)</div><div class="ttdoc">retreives a flight entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:489</div></div>
+<div class="ttc" id="aclass_a_database_html_a7d57d7696814bd013fa35e068ad909c8"><div class="ttname"><a href="class_a_database.html#a7d57d7696814bd013fa35e068ad909c8">ADatabase::commit</a></div><div class="ttdeci">bool commit(const AEntry &amp;entry)</div><div class="ttdoc">commits an entry to the database, calls either insert or update, based on position data</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:173</div></div>
+<div class="ttc" id="aclass_a_database_html_a863d30e9e3a7c14adfe72787363618c8"><div class="ttname"><a href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">ADatabase::removeMany</a></div><div class="ttdeci">bool removeMany(QList&lt; DataPosition &gt;)</div><div class="ttdoc">deletes a list of entries from the database. Optimised for speed when deleting many entries.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:210</div></div>
+<div class="ttc" id="aclass_a_database_html_a88c8cb3d573d46c1ee8e5af61cf63224"><div class="ttname"><a href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">ADatabase::lastError</a></div><div class="ttdeci">QSqlError lastError</div><div class="ttdoc">Holds information about the last error that ocurred during a SQL operation. If the error type is QSql...</div><div class="ttdef"><b>Definition:</b> adatabase.h:159</div></div>
+<div class="ttc" id="aclass_a_database_html_a8959b406b97d9520981890d92850b1ba"><div class="ttname"><a href="class_a_database.html#a8959b406b97d9520981890d92850b1ba">ADatabase::getEntry</a></div><div class="ttdeci">AEntry getEntry(DataPosition data_position)</div><div class="ttdoc">retreive an Entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:461</div></div>
+<div class="ttc" id="aclass_a_database_html_a89de409c1828125363f46f384df47359"><div class="ttname"><a href="class_a_database.html#a89de409c1828125363f46f384df47359">ADatabase::getCompletionList</a></div><div class="ttdeci">const QStringList getCompletionList(ADatabaseTarget target)</div><div class="ttdoc">getCompletionList returns a QStringList of values for a QCompleter based on database values</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:503</div></div>
+<div class="ttc" id="aclass_a_database_html_a8b38405b535d603cce2b36ca2d56368f"><div class="ttname"><a href="class_a_database.html#a8b38405b535d603cce2b36ca2d56368f">ADatabase::getTable</a></div><div class="ttdeci">QVector&lt; RowData_T &gt; getTable(ADatabaseTable table_name)</div><div class="ttdoc">getTable returns all contents of a given table from the database</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:799</div></div>
 <div class="ttc" id="aclass_a_database_html_a9c0dcd8c35087c8256b75d8aafa64880"><div class="ttname"><a href="class_a_database.html#a9c0dcd8c35087c8256b75d8aafa64880">ADatabase::getTableColumns</a></div><div class="ttdeci">const ColumnNames_T getTableColumns(TableName_T table_name) const</div><div class="ttdoc">Return the names of a given table in the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:88</div></div>
-<div class="ttc" id="aclass_a_database_html_abc461aaa66304ca638e546f67a694935"><div class="ttname"><a href="class_a_database.html#abc461aaa66304ca638e546f67a694935">ADatabase::disconnect</a></div><div class="ttdeci">void disconnect()</div><div class="ttdoc">closes the database connection.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:164</div></div>
+<div class="ttc" id="aclass_a_database_html_a9da290c8488b35196ce4e49c4cfbe9f5"><div class="ttname"><a href="class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5">ADatabase::getUserDataState</a></div><div class="ttdeci">UserDataState getUserDataState()</div><div class="ttdoc">getUserDataState returns a struct containing the current amount of entries in the tails and pilots ta...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:67</div></div>
+<div class="ttc" id="aclass_a_database_html_aa6080200aa3f229251480bc416755fed"><div class="ttname"><a href="class_a_database.html#aa6080200aa3f229251480bc416755fed">ADatabase::connect</a></div><div class="ttdeci">bool connect()</div><div class="ttdoc">Connect to the database and populate database information.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:133</div></div>
+<div class="ttc" id="aclass_a_database_html_aa69dcdf174e48653cdf1bef473dc5623"><div class="ttname"><a href="class_a_database.html#aa69dcdf174e48653cdf1bef473dc5623">ADatabase::insert</a></div><div class="ttdeci">bool insert(const AEntry &amp;new_entry)</div><div class="ttdoc">Create new entry in the databse based on UserInput.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:360</div></div>
+<div class="ttc" id="aclass_a_database_html_ab99ccce4c67591f5f58832c26cf93fc8"><div class="ttname"><a href="class_a_database.html#ab99ccce4c67591f5f58832c26cf93fc8">ADatabase::getMinimumDatabaseRevision</a></div><div class="ttdeci">static int getMinimumDatabaseRevision()</div><div class="ttdoc">getMinimumDatabaseRevision returns the minimum required database revision number required by the appl...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:57</div></div>
+<div class="ttc" id="aclass_a_database_html_abc461aaa66304ca638e546f67a694935"><div class="ttname"><a href="class_a_database.html#abc461aaa66304ca638e546f67a694935">ADatabase::disconnect</a></div><div class="ttdeci">void disconnect()</div><div class="ttdoc">closes the database connection.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:161</div></div>
+<div class="ttc" id="aclass_a_database_html_ac73208ba1a70af19590d53f260e7cb8c"><div class="ttname"><a href="class_a_database.html#ac73208ba1a70af19590d53f260e7cb8c">ADatabase::update</a></div><div class="ttdeci">bool update(const AEntry &amp;updated_entry)</div><div class="ttdoc">Updates entry in database from existing entry tweaked by the user.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:326</div></div>
+<div class="ttc" id="aclass_a_database_html_ad688f0e48bea4879a81e17a584f189b1"><div class="ttname"><a href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">ADatabase::getTemplateTableNames</a></div><div class="ttdeci">QStringList getTemplateTableNames()</div><div class="ttdoc">getTemplateTableNames returns a list of the table names of tables that contain template data (aiports...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:62</div></div>
+<div class="ttc" id="aclass_a_database_html_ae0a3c9273431195df6295b9da24b3a3a"><div class="ttname"><a href="class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a">ADatabase::getAircraftEntry</a></div><div class="ttdeci">AAircraftEntry getAircraftEntry(RowId_T row_id)</div><div class="ttdoc">retreives a TailEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:482</div></div>
+<div class="ttc" id="aclass_a_database_html_afaaaaf276d832833b0865db86de51ae5"><div class="ttname"><a href="class_a_database.html#afaaaaf276d832833b0865db86de51ae5">ADatabase::getIdMap</a></div><div class="ttdeci">const QHash&lt; RowId_T, QString &gt; getIdMap(ADatabaseTarget target)</div><div class="ttdoc">returns a QHash of a human-readable database value and its row id. Used in the Dialogs to map user in...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:552</div></div>
+<div class="ttc" id="aclass_a_database_html_afc39f6136fc822e0649964fa22b84bf9"><div class="ttname"><a href="class_a_database.html#afc39f6136fc822e0649964fa22b84bf9">ADatabase::getEntryData</a></div><div class="ttdeci">RowData_T getEntryData(DataPosition data_position)</div><div class="ttdoc">retreive entry data from the database to create an entry object</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:404</div></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
 <div class="ttc" id="aclass_a_flight_entry_html"><div class="ttname"><a href="class_a_flight_entry.html">AFlightEntry</a></div><div class="ttdef"><b>Definition:</b> aflightentry.h:23</div></div>
-<div class="ttc" id="aclass_a_database_html_a426026d641a594863995ec5db8312259"><div class="ttname"><a href="class_a_database.html#a426026d641a594863995ec5db8312259">ADatabase::getPilotEntry</a></div><div class="ttdeci">APilotEntry getPilotEntry(RowId_T row_id)</div><div class="ttdoc">retreives a PilotEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:474</div></div>
-<div class="ttc" id="aclass_a_database_error_html"><div class="ttname"><a href="class_a_database_error.html">ADatabaseError</a></div><div class="ttdoc">Custom Database Error derived from QSqlError. Extends text() adding &quot;Database Error: &quot; before the tex...</div><div class="ttdef"><b>Definition:</b> adatabase.h:98</div></div>
-<div class="ttc" id="aclass_a_database_html_ab99ccce4c67591f5f58832c26cf93fc8"><div class="ttname"><a href="class_a_database.html#ab99ccce4c67591f5f58832c26cf93fc8">ADatabase::getMinimumDatabaseRevision</a></div><div class="ttdeci">static int getMinimumDatabaseRevision()</div><div class="ttdoc">getMinimumDatabaseRevision returns the minimum required database revision number required by the appl...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:73</div></div>
-<div class="ttc" id="aclass_a_database_html_a88c8cb3d573d46c1ee8e5af61cf63224"><div class="ttname"><a href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">ADatabase::lastError</a></div><div class="ttdeci">QSqlError lastError</div><div class="ttdoc">lastError extends QSqlError. Holds information about the last error that ocurred during a SQL operati...</div><div class="ttdef"><b>Definition:</b> adatabase.h:134</div></div>
+<div class="ttc" id="astruct_a_aircraft_entry_html"><div class="ttname"><a href="struct_a_aircraft_entry.html">AAircraftEntry</a></div><div class="ttdef"><b>Definition:</b> aaircraftentry.h:24</div></div>
+<div class="ttc" id="astruct_a_currency_entry_html"><div class="ttname"><a href="struct_a_currency_entry.html">ACurrencyEntry</a></div><div class="ttdef"><b>Definition:</b> acurrencyentry.h:8</div></div>
 <div class="ttc" id="astruct_a_pilot_entry_html"><div class="ttname"><a href="struct_a_pilot_entry.html">APilotEntry</a></div><div class="ttdef"><b>Definition:</b> apilotentry.h:24</div></div>
-<div class="ttc" id="aclass_a_database_html_aa6080200aa3f229251480bc416755fed"><div class="ttname"><a href="class_a_database.html#aa6080200aa3f229251480bc416755fed">ADatabase::connect</a></div><div class="ttdeci">bool connect()</div><div class="ttdoc">Connect to the database and populate database information.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:136</div></div>
-<div class="ttc" id="aclass_a_database_html_a5ab838a62a83974f9e40c62f66adfa99"><div class="ttname"><a href="class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99">ADatabase::createBackup</a></div><div class="ttdeci">bool createBackup(const QString &amp;dest_file)</div><div class="ttdoc">ADatabase::createBackup copies the currently used database to an external backup location provided by...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:787</div></div>
-<div class="ttc" id="aclass_a_database_html_a0f0bffbb6cdd79975b7b5ca6c0db31a7"><div class="ttname"><a href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">ADatabase::connectionReset</a></div><div class="ttdeci">void connectionReset()</div><div class="ttdoc">connectionReset is emitted whenever the database connection is reset, for example when creating or re...</div></div>
-<div class="ttc" id="aclass_a_database_html_a491415273a771dd7ea41452c331a34b0"><div class="ttname"><a href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">ADatabase::sqliteVersion</a></div><div class="ttdeci">const QString sqliteVersion() const</div><div class="ttdoc">ADatabase::sqliteVersion returns the database sqlite version. See also dbRevision()</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:127</div></div>
-<div class="ttc" id="aclass_a_database_html_a5ed8c010ccc022687ce903cfde8ae911"><div class="ttname"><a href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">ADatabase::dataBaseUpdated</a></div><div class="ttdeci">void dataBaseUpdated()</div><div class="ttdoc">updated is emitted whenever the database contents have been updated. This can be either a commit,...</div></div>
-<div class="ttc" id="aclass_a_database_html_a692d7ba3abc763ee7c0d1a47236f021f"><div class="ttname"><a href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">ADatabase::getUserTableNames</a></div><div class="ttdeci">QStringList getUserTableNames()</div><div class="ttdoc">getUserTableNames returns a list of the table names of tables that contain user-created data (flights...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:83</div></div>
-<div class="ttc" id="aclass_a_database_html_a2a43936d3ae28993f9f7eda0fdf4664d"><div class="ttname"><a href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">ADatabase::customQuery</a></div><div class="ttdeci">QVector&lt; QVariant &gt; customQuery(QString statement, int return_values)</div><div class="ttdoc">Can be used to send a complex query to the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:679</div></div>
-<div class="ttc" id="aclass_a_database_html_a56baf4eaf25922030f3cfa6906963f7c"><div class="ttname"><a href="class_a_database.html#a56baf4eaf25922030f3cfa6906963f7c">ADatabase::databaseSummary</a></div><div class="ttdeci">QMap&lt; ADatabaseSummaryKey, QString &gt; databaseSummary(const QString &amp;db_path)</div><div class="ttdoc">Return a summary of a database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:708</div></div>
-<div class="ttc" id="aclass_a_database_html_a8959b406b97d9520981890d92850b1ba"><div class="ttname"><a href="class_a_database.html#a8959b406b97d9520981890d92850b1ba">ADatabase::getEntry</a></div><div class="ttdeci">AEntry getEntry(DataPosition data_position)</div><div class="ttdoc">retreive an Entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:467</div></div>
-<div class="ttc" id="aclass_a_database_html_a3deb081c5abe832a65e1792c106eb083"><div class="ttname"><a href="class_a_database.html#a3deb081c5abe832a65e1792c106eb083">ADatabase::getTableNames</a></div><div class="ttdeci">const TableNames_T getTableNames() const</div><div class="ttdoc">Return the names of all tables in the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:93</div></div>
-<div class="ttc" id="aclass_a_database_html_a356df159542705635dc3898d90682039"><div class="ttname"><a href="class_a_database.html#a356df159542705635dc3898d90682039">ADatabase::getTailEntry</a></div><div class="ttdeci">ATailEntry getTailEntry(RowId_T row_id)</div><div class="ttdoc">retreives a TailEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:481</div></div>
-<div class="ttc" id="aclass_a_database_html_a7bb44738362582e4f54f68e3aa30d40a"><div class="ttname"><a href="class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a">ADatabase::getFlightEntry</a></div><div class="ttdeci">AFlightEntry getFlightEntry(RowId_T row_id)</div><div class="ttdoc">retreives a flight entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:495</div></div>
-<div class="ttc" id="aclass_a_database_html_ae0a3c9273431195df6295b9da24b3a3a"><div class="ttname"><a href="class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a">ADatabase::getAircraftEntry</a></div><div class="ttdeci">AAircraftEntry getAircraftEntry(RowId_T row_id)</div><div class="ttdoc">retreives a TailEntry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:488</div></div>
-<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
 <div class="ttc" id="astruct_a_tail_entry_html"><div class="ttname"><a href="struct_a_tail_entry.html">ATailEntry</a></div><div class="ttdef"><b>Definition:</b> atailentry.h:24</div></div>
-<div class="ttc" id="aclass_a_database_html_a2379c9da900da8e96add932e4024389a"><div class="ttname"><a href="class_a_database.html#a2379c9da900da8e96add932e4024389a">ADatabase::database</a></div><div class="ttdeci">static QSqlDatabase database()</div><div class="ttdoc">Can be used to access the database connection.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:171</div></div>
-<div class="ttc" id="aclass_a_database_html"><div class="ttname"><a href="class_a_database.html">ADatabase</a></div><div class="ttdoc">The DB class encapsulates the SQL database by providing fast access to hot database data.</div><div class="ttdef"><b>Definition:</b> adatabase.h:110</div></div>
-<div class="ttc" id="aclass_a_database_html_a4903909a28daed708e1a335d3be4f57b"><div class="ttname"><a href="class_a_database.html#a4903909a28daed708e1a335d3be4f57b">ADatabase::remove</a></div><div class="ttdeci">bool remove(AEntry entry)</div><div class="ttdoc">deletes an entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:185</div></div>
-<div class="ttc" id="aclass_a_database_html_afc39f6136fc822e0649964fa22b84bf9"><div class="ttname"><a href="class_a_database.html#afc39f6136fc822e0649964fa22b84bf9">ADatabase::getEntryData</a></div><div class="ttdeci">RowData_T getEntryData(DataPosition data_position)</div><div class="ttdoc">retreive entry data from the database to create an entry object</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:409</div></div>
-<div class="ttc" id="aclass_a_database_html_a863d30e9e3a7c14adfe72787363618c8"><div class="ttname"><a href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">ADatabase::removeMany</a></div><div class="ttdeci">bool removeMany(QList&lt; DataPosition &gt;)</div><div class="ttdoc">deletes a list of entries from the database. Optimised for speed when deleting many entries.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:214</div></div>
-<div class="ttc" id="aclass_a_database_html_a5abdf1f35468f788609252c7a3be7bc4"><div class="ttname"><a href="class_a_database.html#a5abdf1f35468f788609252c7a3be7bc4">ADatabase::getCurrencyEntry</a></div><div class="ttdeci">ACurrencyEntry getCurrencyEntry(ACurrencyEntry::CurrencyName currency_name)</div><div class="ttdoc">Retreives a currency entry from the database.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:502</div></div>
-<div class="ttc" id="aclass_a_database_html_a0f88e121d421043f35e321d5dc49ba19"><div class="ttname"><a href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">ADatabase::getForeignKeyConstraints</a></div><div class="ttdeci">QList&lt; RowId_T &gt; getForeignKeyConstraints(RowId_T foreign_row_id, ADatabaseTable target)</div><div class="ttdoc">returns a list of ROWID's in the flights table for which foreign key constraints exist.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:632</div></div>
-<div class="ttc" id="astruct_a_aircraft_entry_html"><div class="ttname"><a href="struct_a_aircraft_entry.html">AAircraftEntry</a></div><div class="ttdef"><b>Definition:</b> aaircraftentry.h:24</div></div>
-<div class="ttc" id="aclass_a_database_html_a8b38405b535d603cce2b36ca2d56368f"><div class="ttname"><a href="class_a_database.html#a8b38405b535d603cce2b36ca2d56368f">ADatabase::getTable</a></div><div class="ttdeci">QVector&lt; RowData_T &gt; getTable(ADatabaseTable table_name)</div><div class="ttdoc">getTable returns all contents of a given table from the database</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:805</div></div>
-<div class="ttc" id="astruct_a_currency_entry_html"><div class="ttname"><a href="struct_a_currency_entry.html">ACurrencyEntry</a></div><div class="ttdef"><b>Definition:</b> acurrencyentry.h:7</div></div>
-<div class="ttc" id="aclass_a_database_html_a5878bcd4bc19e4c3fc5275ca7252860d"><div class="ttname"><a href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">ADatabase::resolveForeignTail</a></div><div class="ttdeci">ATailEntry resolveForeignTail(RowId_T foreign_key)</div><div class="ttdoc">Resolves the foreign key in a flight entry.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:674</div></div>
-<div class="ttc" id="aclass_a_database_html_a1c026e7784b03fc5822077c7d0071330"><div class="ttname"><a href="class_a_database.html#a1c026e7784b03fc5822077c7d0071330">ADatabase::dbRevision</a></div><div class="ttdeci">int dbRevision() const</div><div class="ttdoc">dbRevision returns the database Revision Number. The Revision refers to what iteration of the databas...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:61</div></div>
-<div class="ttc" id="aclass_a_database_html_a5dba46567089112b28b16aaf985af0ba"><div class="ttname"><a href="class_a_database.html#a5dba46567089112b28b16aaf985af0ba">ADatabase::getIdMap</a></div><div class="ttdeci">const QMap&lt; QString, RowId_T &gt; getIdMap(ADatabaseTarget target)</div><div class="ttdoc">returns a QMap&lt;QString, RowId_t&gt; of a human-readable database value and its row id....</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:558</div></div>
-<div class="ttc" id="aclass_a_database_html_a652472c747c0ce68940b17c9c23666dd"><div class="ttname"><a href="class_a_database.html#a652472c747c0ce68940b17c9c23666dd">ADatabase::commit</a></div><div class="ttdeci">bool commit(AEntry entry)</div><div class="ttdoc">commits an entry to the database, calls either insert or update, based on position data</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:176</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
-<div class="ttc" id="aclass_a_database_html_ad688f0e48bea4879a81e17a584f189b1"><div class="ttname"><a href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">ADatabase::getTemplateTableNames</a></div><div class="ttdeci">QStringList getTemplateTableNames()</div><div class="ttdoc">getTemplateTableNames returns a list of the table names of tables that contain template data (aiports...</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:78</div></div>
-<div class="ttc" id="aclass_a_database_html_a4ecb6d0c9b3813c90b3165c993e69ad5"><div class="ttname"><a href="class_a_database.html#a4ecb6d0c9b3813c90b3165c993e69ad5">ADatabase::insert</a></div><div class="ttdeci">bool insert(AEntry new_entry)</div><div class="ttdoc">Create new entry in the databse based on UserInput.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:365</div></div>
-<div class="ttc" id="aclass_a_database_html_a910bc0c1717e9301911343c082aa1aaa"><div class="ttname"><a href="class_a_database.html#a910bc0c1717e9301911343c082aa1aaa">ADatabase::update</a></div><div class="ttdeci">bool update(AEntry updated_entry)</div><div class="ttdoc">Updates entry in database from existing entry tweaked by the user.</div><div class="ttdef"><b>Definition:</b> adatabase.cpp:331</div></div>
+<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
+<div class="ttc" id="astruct_user_data_state_html"><div class="ttname"><a href="struct_user_data_state.html">UserDataState</a></div><div class="ttdoc">The UserDateState struct caches the current number of entries in relevant database tables for fast ac...</div><div class="ttdef"><b>Definition:</b> adatabase.h:97</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_803ee67260c130b45d29089798491ab2.html">database</a></li><li class="navelem"><b>adatabase.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 8 - 10
docs/html/adatabasetypes_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/database/adatabasetypes.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -124,10 +124,10 @@ $(document).ready(function(){initNavTree('adatabasetypes_8h_source.html',''); in
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">using</span> TableName_T = QString;</div>
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160; </div>
 <div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">using</span> TableNames_T = QStringList;</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">using</span> RowData_T = QMap&lt;ColName_T, ColData_T&gt;;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">using</span> RowData_T = QHash&lt;ColName_T, ColData_T&gt;;</div>
 <div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">using</span> ColumnData_T = QPair&lt;ColName_T, ColData_T&gt;;</div>
 <div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">using</span> ColumnNames_T = QStringList;</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">using</span> TableColumns_T = QMap&lt;TableName_T, ColumnNames_T&gt;;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">using</span> TableColumns_T = QHash&lt;TableName_T, ColumnNames_T&gt;;</div>
 <div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160; </div>
 <div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct_data_position.html">   44</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_data_position.html">DataPosition</a> {</div>
 <div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    TableName_T tableName;</div>
@@ -148,17 +148,15 @@ $(document).ready(function(){initNavTree('adatabasetypes_8h_source.html',''); in
 <div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;         )</div>
 <div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;};</div>
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160; </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#endif // DECLARATIONS_H</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// DECLARATIONS_H</span></div>
+<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_803ee67260c130b45d29089798491ab2.html">database</a></li><li class="navelem"><b>adatabasetypes.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 31 - 21
docs/html/adate_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/adate.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -95,7 +95,7 @@ $(document).ready(function(){initNavTree('adate_8h_source.html',''); initResizab
 <div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> <span class="keyword">auto</span> DE = QStringLiteral(<span class="stringliteral">&quot;dd.MM.yyyy&quot;</span>);</div>
 <div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> <span class="keyword">auto</span> EN = QStringLiteral(<span class="stringliteral">&quot;MM/dd/yyyy&quot;</span>);</div>
 <div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160; </div>
-<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> QMap&lt;Opl::Date::ADateFormat, QString&gt; ADATEFORMATSMAP = {</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> QHash&lt;Opl::Date::ADateFormat, QString&gt; ADATEFORMATSMAP = {</div>
 <div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;    {Opl::Date::ADateFormat::ISODate, ISO},</div>
 <div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;    {Opl::Date::ADateFormat::DE,      DE },</div>
 <div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;    {Opl::Date::ADateFormat::EN,      EN },</div>
@@ -111,32 +111,42 @@ $(document).ready(function(){initNavTree('adate_8h_source.html',''); initResizab
 <div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_a_date.html">   26</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_date.html">ADate</a></div>
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div>
 <div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">static</span> QDate <a class="code" href="class_a_date.html#aa1c79d62d44ab503ccbc984f6f681a2d">formatInput</a>(QString user_input, Opl::Date::ADateFormat format);</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">static</span> QDate <a class="code" href="class_a_date.html#ad678a1eed52b81d7af4d4e31ffad2c1e">parseInput</a>(QString &amp;io_user_input, Opl::Date::ADateFormat format);</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160; </div>
-<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">   38</a></span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> QString <a class="code" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">toString</a>(<span class="keyword">const</span> QDate &amp;date, Opl::Date::ADateFormat format = Opl::Date::ADateFormat::ISODate)</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    {</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordflow">return</span> date.toString(ADATEFORMATSMAP.value(format));</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    };</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QStringList&amp; getDisplayNames();</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString getFormatString(Opl::Date::ADateFormat format);</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> tryToFix(QString &amp;io_user_input, Opl::Date::ADateFormat format);</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_date.html#ac184d215183b290f4cdacde835fd5938">padCentury</a>(QString &amp;io_user_input, Opl::Date::ADateFormat format);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_date.html#ac73a41e8dac47a3a2a3fcef5b3d19eee">padZeroes</a>(QString &amp;io_user_input);</div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;};</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> addSeperators(QString &amp;io_user_input, <span class="keyword">const</span> Opl::Date::ADateFormat &amp;format);</div>
 <div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#endif // ADATE_H</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> containsSeperator(<span class="keyword">const</span> QString &amp;user_input);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">   54</a></span>&#160;    <span class="keyword">inline</span> <span class="keyword">static</span> QString <a class="code" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">toString</a>(<span class="keyword">const</span> QDate &amp;date, Opl::Date::ADateFormat format = Opl::Date::ADateFormat::ISODate)</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keywordflow">return</span> date.toString(ADATEFORMATSMAP.value(format));</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    };</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QStringList&amp; getDisplayNames();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString getFormatString(Opl::Date::ADateFormat format);</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;};</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ADATE_H</span></div>
+<div class="ttc" id="aclass_a_date_html"><div class="ttname"><a href="class_a_date.html">ADate</a></div><div class="ttdoc">The ADate class is responsible for input/output of Dates and handling the different Date Formats.</div><div class="ttdef"><b>Definition:</b> adate.h:27</div></div>
+<div class="ttc" id="aclass_a_date_html_ac184d215183b290f4cdacde835fd5938"><div class="ttname"><a href="class_a_date.html#ac184d215183b290f4cdacde835fd5938">ADate::padCentury</a></div><div class="ttdeci">static void padCentury(QString &amp;io_user_input, Opl::Date::ADateFormat format)</div><div class="ttdoc">padCentury adds the century to a date where it was omitted</div><div class="ttdef"><b>Definition:</b> adate.cpp:36</div></div>
+<div class="ttc" id="aclass_a_date_html_ac73a41e8dac47a3a2a3fcef5b3d19eee"><div class="ttname"><a href="class_a_date.html#ac73a41e8dac47a3a2a3fcef5b3d19eee">ADate::padZeroes</a></div><div class="ttdeci">static void padZeroes(QString &amp;io_user_input)</div><div class="ttdoc">pads a user-provided date string with 0s to facilitate conversion to QDate</div><div class="ttdef"><b>Definition:</b> adate.cpp:67</div></div>
+<div class="ttc" id="aclass_a_date_html_ad678a1eed52b81d7af4d4e31ffad2c1e"><div class="ttname"><a href="class_a_date.html#ad678a1eed52b81d7af4d4e31ffad2c1e">ADate::parseInput</a></div><div class="ttdeci">static QDate parseInput(QString &amp;io_user_input, Opl::Date::ADateFormat format)</div><div class="ttdoc">takes a user-provided input and tries to convert it to a (valid) QDate.</div><div class="ttdef"><b>Definition:</b> adate.cpp:3</div></div>
+<div class="ttc" id="aclass_a_date_html_ae8a544f48462c8159748f98fe4684a56"><div class="ttname"><a href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">ADate::toString</a></div><div class="ttdeci">static QString toString(const QDate &amp;date, Opl::Date::ADateFormat format=Opl::Date::ADateFormat::ISODate)</div><div class="ttdoc">Reimplements QDate::toString to accept Opl::Date::ADateFormat enums.</div><div class="ttdef"><b>Definition:</b> adate.h:54</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_date_html_ae8a544f48462c8159748f98fe4684a56"><div class="ttname"><a href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">ADate::toString</a></div><div class="ttdeci">static QString toString(const QDate &amp;date, Opl::Date::ADateFormat format=Opl::Date::ADateFormat::ISODate)</div><div class="ttdoc">Reimplements QDate::toString to accept Opl::Date::ADateFormat enums.</div><div class="ttdef"><b>Definition:</b> adate.h:38</div></div>
-<div class="ttc" id="aclass_a_date_html_aa1c79d62d44ab503ccbc984f6f681a2d"><div class="ttname"><a href="class_a_date.html#aa1c79d62d44ab503ccbc984f6f681a2d">ADate::formatInput</a></div><div class="ttdeci">static QDate formatInput(QString user_input, Opl::Date::ADateFormat format)</div><div class="ttdoc">formatInput takes a user-provided input and tries to convert it to a QDate.</div><div class="ttdef"><b>Definition:</b> adate.cpp:3</div></div>
-<div class="ttc" id="aclass_a_date_html"><div class="ttname"><a href="class_a_date.html">ADate</a></div><div class="ttdoc">The ADate class is responsible for input/output of Dates and handling the different Date Formats.</div><div class="ttdef"><b>Definition:</b> adate.h:26</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>adate.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 15 - 10
docs/html/adatetime_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/adatetime.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -111,7 +111,7 @@ $(document).ready(function(){initNavTree('adatetime_8h_source.html',''); initRes
 <div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span>ADateTime {</div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QString toString (<span class="keyword">const</span> QDateTime date_time, Opl::Datetime::DateTimeFormat format) {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QString toString (<span class="keyword">const</span> QDateTime&amp; date_time, Opl::Datetime::DateTimeFormat format) {</div>
 <div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keywordflow">switch</span> (format) {</div>
 <div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keywordflow">case</span> Opl::Datetime::Default:</div>
 <div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        <span class="keywordflow">return</span> date_time.toString(Qt::ISODate);</div>
@@ -122,18 +122,23 @@ $(document).ready(function(){initNavTree('adatetime_8h_source.html',''); initRes
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    }</div>
 <div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;}</div>
 <div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160; </div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;}</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#endif // ADATETIME_H</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">inline</span> QDateTime fromString(<span class="keyword">const</span> QString&amp; date_time_string)</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;{</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="keyword">auto</span> date_time = QDateTime::fromString(date_time_string, QStringLiteral(<span class="stringliteral">&quot;yyyy-MM-ddhh:mm&quot;</span>));</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    date_time.setTimeZone(QTimeZone::utc());</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordflow">return</span> date_time;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;}</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;}</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ADATETIME_H</span></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>adatetime.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 14 - 13
docs/html/adbsetup_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/database/adbsetup.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -117,22 +117,23 @@ $(document).ready(function(){initNavTree('adbsetup_8h_source.html',''); initResi
 <div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacea_db_setup.html#a6bc782f35cc58b815a1e01134c885839">commitData</a>(<span class="keyword">const</span> QJsonArray &amp;json_arr, <span class="keyword">const</span> QString &amp;table_name);</div>
 <div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacea_db_setup.html#a97547c296b43543df163411cd423c945">importTemplateData</a>(<span class="keywordtype">bool</span> use_local_ressources);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;}; <span class="comment">// namespace aDbSetup</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif // ADBSETUP_H</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacea_db_setup.html#a9bfda68f87c3558ca1a0590515ece3fa">resetUserData</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;}; <span class="comment">// namespace aDbSetup</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ADBSETUP_H</span></div>
+<div class="ttc" id="anamespacea_db_setup_html"><div class="ttname"><a href="namespacea_db_setup.html">aDbSetup</a></div><div class="ttdoc">The aDbSetup namespace is responsible for the inital setup of the database when the application is fi...</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:24</div></div>
+<div class="ttc" id="anamespacea_db_setup_html_a6bc782f35cc58b815a1e01134c885839"><div class="ttname"><a href="namespacea_db_setup.html#a6bc782f35cc58b815a1e01134c885839">aDbSetup::commitData</a></div><div class="ttdeci">bool commitData(const QJsonArray &amp;json_arr, const QString &amp;table_name)</div><div class="ttdoc">commitData commits the data read from a JSON file into a table in the database.</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:305</div></div>
+<div class="ttc" id="anamespacea_db_setup_html_a97547c296b43543df163411cd423c945"><div class="ttname"><a href="namespacea_db_setup.html#a97547c296b43543df163411cd423c945">aDbSetup::importTemplateData</a></div><div class="ttdeci">bool importTemplateData(bool use_local_ressources)</div><div class="ttdoc">importTemplateData fills an empty database with the template data (Aircraft, Airports,...</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:346</div></div>
+<div class="ttc" id="anamespacea_db_setup_html_a9bfda68f87c3558ca1a0590515ece3fa"><div class="ttname"><a href="namespacea_db_setup.html#a9bfda68f87c3558ca1a0590515ece3fa">aDbSetup::resetUserData</a></div><div class="ttdeci">bool resetUserData()</div><div class="ttdoc">Empties all user-generated content in the database.</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:384</div></div>
+<div class="ttc" id="anamespacea_db_setup_html_ae1411575e4c2773a578c78e8f02574ed"><div class="ttname"><a href="namespacea_db_setup.html#ae1411575e4c2773a578c78e8f02574ed">aDbSetup::createDatabase</a></div><div class="ttdeci">bool createDatabase()</div><div class="ttdoc">createDatabase runs a number of CREATE queries that create the database tables and columns.</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:274</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="anamespacea_db_setup_html"><div class="ttname"><a href="namespacea_db_setup.html">aDbSetup</a></div><div class="ttdoc">The aDbSetup namespace is responsible for the inital setup of the database when the application is fi...</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:24</div></div>
-<div class="ttc" id="anamespacea_db_setup_html_a6bc782f35cc58b815a1e01134c885839"><div class="ttname"><a href="namespacea_db_setup.html#a6bc782f35cc58b815a1e01134c885839">aDbSetup::commitData</a></div><div class="ttdeci">bool commitData(const QJsonArray &amp;json_arr, const QString &amp;table_name)</div><div class="ttdoc">commitData commits the data read from a JSON file into a table in the database.</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:293</div></div>
-<div class="ttc" id="anamespacea_db_setup_html_ae1411575e4c2773a578c78e8f02574ed"><div class="ttname"><a href="namespacea_db_setup.html#ae1411575e4c2773a578c78e8f02574ed">aDbSetup::createDatabase</a></div><div class="ttdeci">bool createDatabase()</div><div class="ttdoc">createDatabase runs a number of CREATE queries that create the database tables and columns.</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:262</div></div>
-<div class="ttc" id="anamespacea_db_setup_html_a97547c296b43543df163411cd423c945"><div class="ttname"><a href="namespacea_db_setup.html#a97547c296b43543df163411cd423c945">aDbSetup::importTemplateData</a></div><div class="ttdeci">bool importTemplateData(bool use_local_ressources)</div><div class="ttdoc">importTemplateData fills an empty database with the template data (Aircraft, Airports,...</div><div class="ttdef"><b>Definition:</b> adbsetup.cpp:334</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_803ee67260c130b45d29089798491ab2.html">database</a></li><li class="navelem"><b>adbsetup.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 6 - 8
docs/html/adownload_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/adownload.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -143,17 +143,15 @@ $(document).ready(function(){initNavTree('adownload_8h_source.html',''); initRes
 <div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordtype">void</span> downloadProgress(qint64 received, qint64 total);</div>
 <div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;};</div>
 <div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#endif // ADOWNLOAD_H</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ADOWNLOAD_H</span></div>
+<div class="ttc" id="aclass_a_download_html"><div class="ttname"><a href="class_a_download.html">ADownload</a></div><div class="ttdef"><b>Definition:</b> adownload.h:30</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_download_html"><div class="ttname"><a href="class_a_download.html">ADownload</a></div><div class="ttdef"><b>Definition:</b> adownload.h:30</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>adownload.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 31 - 38
docs/html/aentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/aentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -109,52 +109,45 @@ $(document).ready(function(){initNavTree('aentry_8h_source.html',''); initResiza
 <div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160; </div>
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
 <div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QStringList&gt;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QMap&gt;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QHash&gt;</span></div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;QPair&gt;</span></div>
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;QVariant&gt;</span></div>
 <div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;src/database/adatabasetypes.h&quot;</span></div>
 <div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment">// [G]: Define what data is public and what not. For objects such as</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// DataPosition which are consumable its no biggy. Are entries the same?</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// If so we could avoid getters and setters</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">// [F]: In the way we are using the entries atm, we do access and edit the</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">// TableData quite frequently. Maybe the data could be public, but the</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// position private? Except for creating a new entry, the position should</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">// never really be changed.</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_a_entry.html">   40</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="class_a_entry.html">AEntry</a> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <a class="code" href="struct_data_position.html">DataPosition</a> position;</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    RowData_T tableData;</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>() = <span class="keyword">delete</span>; <span class="comment">// Demand specificity from default constructor</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a>&amp;) = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a>&amp;) = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> position_);</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(RowData_T table_data);</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> position_, RowData_T table_data);</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keywordtype">void</span> setData(RowData_T table_data);</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordtype">void</span> setPosition(<a class="code" href="struct_data_position.html">DataPosition</a> position_);</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">const</span> <a class="code" href="struct_data_position.html">DataPosition</a>&amp; getPosition();</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">const</span> RowData_T&amp; getData();</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;};</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#endif // AENTRY_H</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_a_entry.html">   33</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_entry.html">AEntry</a> {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <a class="code" href="struct_data_position.html">DataPosition</a> position;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    RowData_T tableData;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>() = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a>&amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="class_a_entry.html">AEntry</a>&amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> position_);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(RowData_T table_data);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <a class="code" href="class_a_entry.html">AEntry</a>(<a class="code" href="struct_data_position.html">DataPosition</a> position_, RowData_T table_data);</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160; </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordtype">void</span> setData(RowData_T table_data);</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keywordtype">void</span> setPosition(<a class="code" href="struct_data_position.html">DataPosition</a> position_);</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">const</span> <a class="code" href="struct_data_position.html">DataPosition</a>&amp; getPosition() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">const</span> RowData_T&amp; getData() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">operator</span> QString() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;};</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
+<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_data_position_html"><div class="ttname"><a href="struct_data_position.html">DataPosition</a></div><div class="ttdef"><b>Definition:</b> adatabasetypes.h:44</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>aentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 10 - 12
docs/html/aflightentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/aflightentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -126,21 +126,19 @@ $(document).ready(function(){initNavTree('aflightentry_8h_source.html',''); init
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">const</span> QString <a class="code" href="class_a_flight_entry.html#a24e526b17cedbe7fdf5af3a1ebe58648">getPilotName</a>(pilotPosition);</div>
 <div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;};</div>
 <div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif // AFLIGHTENTRY_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
-<div class="ttc" id="aclass_a_flight_entry_html_a83b4a71633e5f3cd44e266d44f117412"><div class="ttname"><a href="class_a_flight_entry.html#a83b4a71633e5f3cd44e266d44f117412">AFlightEntry::summary</a></div><div class="ttdeci">const QString summary()</div><div class="ttdoc">Returs a summary of the flight data, if struct holds data.</div><div class="ttdef"><b>Definition:</b> aflightentry.cpp:36</div></div>
-<div class="ttc" id="aclass_a_flight_entry_html_a603aa9ca029e7d3ecbe77d40e02b8b1c"><div class="ttname"><a href="class_a_flight_entry.html#a603aa9ca029e7d3ecbe77d40e02b8b1c">AFlightEntry::getRegistration</a></div><div class="ttdeci">const QString getRegistration()</div><div class="ttdoc">Returns the tails' registration from the database.</div><div class="ttdef"><b>Definition:</b> aflightentry.cpp:54</div></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AFLIGHTENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
 <div class="ttc" id="aclass_a_flight_entry_html"><div class="ttname"><a href="class_a_flight_entry.html">AFlightEntry</a></div><div class="ttdef"><b>Definition:</b> aflightentry.h:23</div></div>
 <div class="ttc" id="aclass_a_flight_entry_html_a24e526b17cedbe7fdf5af3a1ebe58648"><div class="ttname"><a href="class_a_flight_entry.html#a24e526b17cedbe7fdf5af3a1ebe58648">AFlightEntry::getPilotName</a></div><div class="ttdeci">const QString getPilotName(pilotPosition)</div><div class="ttdoc">Returns the pilots name from the Database.</div><div class="ttdef"><b>Definition:</b> aflightentry.cpp:60</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
+<div class="ttc" id="aclass_a_flight_entry_html_a603aa9ca029e7d3ecbe77d40e02b8b1c"><div class="ttname"><a href="class_a_flight_entry.html#a603aa9ca029e7d3ecbe77d40e02b8b1c">AFlightEntry::getRegistration</a></div><div class="ttdeci">const QString getRegistration()</div><div class="ttdoc">Returns the tails' registration from the database.</div><div class="ttdef"><b>Definition:</b> aflightentry.cpp:54</div></div>
+<div class="ttc" id="aclass_a_flight_entry_html_a83b4a71633e5f3cd44e266d44f117412"><div class="ttname"><a href="class_a_flight_entry.html#a83b4a71633e5f3cd44e266d44f117412">AFlightEntry::summary</a></div><div class="ttdeci">const QString summary()</div><div class="ttdoc">Returs a summary of the flight data, if struct holds data.</div><div class="ttdef"><b>Definition:</b> aflightentry.cpp:36</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>aflightentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 9 - 11
docs/html/ahash_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/ahash.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -125,20 +125,18 @@ $(document).ready(function(){initNavTree('ahash_8h_source.html',''); initResizab
 <div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="class_a_hash.html#ab203c085f451f0bdc9c7a8e8bb4aa751">compare</a>(QFileInfo &amp;md5_file);</div>
 <div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;};</div>
 <div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#endif // AHASH_H</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AHASH_H</span></div>
+<div class="ttc" id="aclass_a_hash_html"><div class="ttname"><a href="class_a_hash.html">AHash</a></div><div class="ttdoc">The AHash class is responsible for calculating cryptographic hashes of files (used to verify download...</div><div class="ttdef"><b>Definition:</b> ahash.h:28</div></div>
+<div class="ttc" id="aclass_a_hash_html_a1e864fdfeca70e093046fdea7feaf3a4"><div class="ttname"><a href="class_a_hash.html#a1e864fdfeca70e093046fdea7feaf3a4">AHash::hashToHex</a></div><div class="ttdeci">const QString hashToHex()</div><div class="ttdoc">hashString returns a hex representation of the hash</div><div class="ttdef"><b>Definition:</b> ahash.h:41</div></div>
+<div class="ttc" id="aclass_a_hash_html_a9781cae720933f452e4e11c6f727602b"><div class="ttname"><a href="class_a_hash.html#a9781cae720933f452e4e11c6f727602b">AHash::AHash</a></div><div class="ttdeci">AHash(QFileInfo &amp;file_info)</div><div class="ttdoc">AHash - calculates the MD5-checksum for the parameter given in the constructor and saves the result i...</div><div class="ttdef"><b>Definition:</b> ahash.cpp:21</div></div>
+<div class="ttc" id="aclass_a_hash_html_ab203c085f451f0bdc9c7a8e8bb4aa751"><div class="ttname"><a href="class_a_hash.html#ab203c085f451f0bdc9c7a8e8bb4aa751">AHash::compare</a></div><div class="ttdeci">bool compare(QFileInfo &amp;md5_file)</div><div class="ttdoc">compare reads the pre-calculated md5-sum from a checkfile and compares the hashes.</div><div class="ttdef"><b>Definition:</b> ahash.cpp:39</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_hash_html_ab203c085f451f0bdc9c7a8e8bb4aa751"><div class="ttname"><a href="class_a_hash.html#ab203c085f451f0bdc9c7a8e8bb4aa751">AHash::compare</a></div><div class="ttdeci">bool compare(QFileInfo &amp;md5_file)</div><div class="ttdoc">compare reads the pre-calculated md5-sum from a checkfile and compares the hashes.</div><div class="ttdef"><b>Definition:</b> ahash.cpp:39</div></div>
-<div class="ttc" id="aclass_a_hash_html_a9781cae720933f452e4e11c6f727602b"><div class="ttname"><a href="class_a_hash.html#a9781cae720933f452e4e11c6f727602b">AHash::AHash</a></div><div class="ttdeci">AHash(QFileInfo &amp;file_info)</div><div class="ttdoc">AHash - calculates the MD5-checksum for the parameter given in the constructor and saves the result i...</div><div class="ttdef"><b>Definition:</b> ahash.cpp:21</div></div>
-<div class="ttc" id="aclass_a_hash_html_a1e864fdfeca70e093046fdea7feaf3a4"><div class="ttname"><a href="class_a_hash.html#a1e864fdfeca70e093046fdea7feaf3a4">AHash::hashToHex</a></div><div class="ttdeci">const QString hashToHex()</div><div class="ttdoc">hashString returns a hex representation of the hash</div><div class="ttdef"><b>Definition:</b> ahash.h:41</div></div>
-<div class="ttc" id="aclass_a_hash_html"><div class="ttname"><a href="class_a_hash.html">AHash</a></div><div class="ttdoc">The AHash class is responsible for calculating cryptographic hashes of files (used to verify download...</div><div class="ttdef"><b>Definition:</b> ahash.h:27</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>ahash.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 67 - 68
docs/html/aircraftwidget_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/gui/widgets/aircraftwidget.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -112,78 +112,77 @@ $(document).ready(function(){initNavTree('aircraftwidget_8h_source.html',''); in
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QSqlTableModel&gt;</span></div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;QTableView&gt;</span></div>
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;src/gui/widgets/settingswidget.h&quot;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;src/gui/dialogues/newtaildialog.h&quot;</span></div>
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160; </div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">namespace </span>Ui {</div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">class </span><a class="code" href="class_aircraft_widget.html">AircraftWidget</a>;</div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;}</div>
-<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_aircraft_widget.html">   52</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_aircraft_widget.html">AircraftWidget</a> : <span class="keyword">public</span> QWidget</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;{</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    Q_OBJECT</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_aircraft_widget.html">AircraftWidget</a>(QWidget *parent = <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    ~<a class="code" href="class_aircraft_widget.html">AircraftWidget</a>();</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keywordtype">void</span> tableView_selectionChanged();</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160; </div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keywordtype">void</span> tableView_headerClicked(<span class="keywordtype">int</span> column);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keywordtype">void</span> on_deleteAircraftButton_clicked();</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keywordtype">void</span> on_newAircraftButton_clicked();</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160; </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordtype">void</span> onNewTailDialog_editingFinished();</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keywordtype">void</span> on_aircraftSearchLineEdit_textChanged(<span class="keyword">const</span> QString &amp;arg1);</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">public</span> slots:</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a8e78830530971eeb4a3913b1d8356498">onAircraftWidget_settingChanged</a>(<a class="code" href="class_settings_widget.html#af15eec9fd55841ec02041a1114da54d4">SettingsWidget::SettingSignal</a> signal);</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#ac5a5e720c80e49796930f8715b0a51e0">onAircraftWidget_dataBaseUpdated</a>();</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a1b1faca35af681e28472d0b84ad52c4f">repopulateModel</a>();</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    Ui::AircraftWidget *ui;</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    QSqlTableModel *model;</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160; </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    QTableView *view;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    QItemSelectionModel* selection;</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160; </div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    qint32 sortColumn;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    QVector&lt;qint32&gt; selectedTails;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordtype">void</span> setupModelAndView();</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordtype">void</span> connectSignalsAndSlots();</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160; </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">void</span> onDeleteUnsuccessful();</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> refreshView(){model-&gt;select();}</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a9f356fad999add271c8b8996d0fbb1a0">changeEvent</a>(QEvent* event) <span class="keyword">override</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;};</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#endif // AIRCRAFTWIDGET_H</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">namespace </span>Ui {</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">class </span><a class="code" href="class_aircraft_widget.html">AircraftWidget</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_aircraft_widget.html">   53</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_aircraft_widget.html">AircraftWidget</a> : <span class="keyword">public</span> QWidget</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;{</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    Q_OBJECT</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_aircraft_widget.html">AircraftWidget</a>(QWidget *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    ~<a class="code" href="class_aircraft_widget.html">AircraftWidget</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">private</span> slots:</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordtype">void</span> tableView_selectionChanged();</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordtype">void</span> tableView_headerClicked(<span class="keywordtype">int</span> column);</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordtype">void</span> on_deleteAircraftButton_clicked();</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keywordtype">void</span> on_newAircraftButton_clicked();</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="keywordtype">void</span> onNewTailDialog_editingFinished();</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">void</span> on_aircraftSearchLineEdit_textChanged(<span class="keyword">const</span> QString &amp;arg1);</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">public</span> slots:</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a8e78830530971eeb4a3913b1d8356498">onAircraftWidget_settingChanged</a>(<a class="code" href="class_settings_widget.html#af15eec9fd55841ec02041a1114da54d4">SettingsWidget::SettingSignal</a> signal);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#ac5a5e720c80e49796930f8715b0a51e0">onAircraftWidget_dataBaseUpdated</a>();</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a1b1faca35af681e28472d0b84ad52c4f">repopulateModel</a>();</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    Ui::AircraftWidget *ui;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    QSqlTableModel *model;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    QTableView *view;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    QItemSelectionModel* selection;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    qint32 sortColumn;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    QVector&lt;qint32&gt; selectedTails;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keywordtype">void</span> setupModelAndView();</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">void</span> connectSignalsAndSlots();</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">void</span> onDeleteUnsuccessful();</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160; </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> refreshView(){model-&gt;select();}</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_aircraft_widget.html#a9f356fad999add271c8b8996d0fbb1a0">changeEvent</a>(QEvent* event) <span class="keyword">override</span>;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;};</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AIRCRAFTWIDGET_H</span></div>
+<div class="ttc" id="aclass_aircraft_widget_html"><div class="ttname"><a href="class_aircraft_widget.html">AircraftWidget</a></div><div class="ttdoc">The AircraftWidget is used to view, edit, delete or add new tails.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.h:54</div></div>
+<div class="ttc" id="aclass_aircraft_widget_html_a1b1faca35af681e28472d0b84ad52c4f"><div class="ttname"><a href="class_aircraft_widget.html#a1b1faca35af681e28472d0b84ad52c4f">AircraftWidget::repopulateModel</a></div><div class="ttdeci">void repopulateModel()</div><div class="ttdoc">AircraftWidget::repopulateModel (public slot) - re-populates the model to cater for a change to the d...</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:251</div></div>
+<div class="ttc" id="aclass_aircraft_widget_html_a8e78830530971eeb4a3913b1d8356498"><div class="ttname"><a href="class_aircraft_widget.html#a8e78830530971eeb4a3913b1d8356498">AircraftWidget::onAircraftWidget_settingChanged</a></div><div class="ttdeci">void onAircraftWidget_settingChanged(SettingsWidget::SettingSignal signal)</div><div class="ttdoc">invokes setupModelAndView() to account for changes the user has made in the SettingsWidget</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:84</div></div>
+<div class="ttc" id="aclass_aircraft_widget_html_a9f356fad999add271c8b8996d0fbb1a0"><div class="ttname"><a href="class_aircraft_widget.html#a9f356fad999add271c8b8996d0fbb1a0">AircraftWidget::changeEvent</a></div><div class="ttdeci">void changeEvent(QEvent *event) override</div><div class="ttdoc">Handles change events, like updating the UI to new localisation.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:97</div></div>
+<div class="ttc" id="aclass_aircraft_widget_html_ac5a5e720c80e49796930f8715b0a51e0"><div class="ttname"><a href="class_aircraft_widget.html#ac5a5e720c80e49796930f8715b0a51e0">AircraftWidget::onAircraftWidget_dataBaseUpdated</a></div><div class="ttdeci">void onAircraftWidget_dataBaseUpdated()</div><div class="ttdoc">Refreshes the view if the Database has been altered from outside the AircraftWidget.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:92</div></div>
+<div class="ttc" id="aclass_settings_widget_html_af15eec9fd55841ec02041a1114da54d4"><div class="ttname"><a href="class_settings_widget.html#af15eec9fd55841ec02041a1114da54d4">SettingsWidget::SettingSignal</a></div><div class="ttdeci">SettingSignal</div><div class="ttdoc">enumerates Widgets that need to receive a signal when a setting is updated.</div><div class="ttdef"><b>Definition:</b> settingswidget.h:51</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_aircraft_widget_html_ac5a5e720c80e49796930f8715b0a51e0"><div class="ttname"><a href="class_aircraft_widget.html#ac5a5e720c80e49796930f8715b0a51e0">AircraftWidget::onAircraftWidget_dataBaseUpdated</a></div><div class="ttdeci">void onAircraftWidget_dataBaseUpdated()</div><div class="ttdoc">Refreshes the view if the Database has been altered from outside the AircraftWidget.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:93</div></div>
-<div class="ttc" id="aclass_settings_widget_html_af15eec9fd55841ec02041a1114da54d4"><div class="ttname"><a href="class_settings_widget.html#af15eec9fd55841ec02041a1114da54d4">SettingsWidget::SettingSignal</a></div><div class="ttdeci">SettingSignal</div><div class="ttdoc">enumerates Widgets that need to receive a signal when a setting is updated.</div><div class="ttdef"><b>Definition:</b> settingswidget.h:51</div></div>
-<div class="ttc" id="aclass_aircraft_widget_html_a9f356fad999add271c8b8996d0fbb1a0"><div class="ttname"><a href="class_aircraft_widget.html#a9f356fad999add271c8b8996d0fbb1a0">AircraftWidget::changeEvent</a></div><div class="ttdeci">void changeEvent(QEvent *event) override</div><div class="ttdoc">Handles change events, like updating the UI to new localisation.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:98</div></div>
-<div class="ttc" id="aclass_aircraft_widget_html"><div class="ttname"><a href="class_aircraft_widget.html">AircraftWidget</a></div><div class="ttdoc">The AircraftWidget is used to view, edit, delete or add new tails.</div><div class="ttdef"><b>Definition:</b> aircraftwidget.h:52</div></div>
-<div class="ttc" id="aclass_aircraft_widget_html_a8e78830530971eeb4a3913b1d8356498"><div class="ttname"><a href="class_aircraft_widget.html#a8e78830530971eeb4a3913b1d8356498">AircraftWidget::onAircraftWidget_settingChanged</a></div><div class="ttdeci">void onAircraftWidget_settingChanged(SettingsWidget::SettingSignal signal)</div><div class="ttdoc">invokes setupModelAndView() to account for changes the user has made in the SettingsWidget</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:85</div></div>
-<div class="ttc" id="aclass_aircraft_widget_html_a1b1faca35af681e28472d0b84ad52c4f"><div class="ttname"><a href="class_aircraft_widget.html#a1b1faca35af681e28472d0b84ad52c4f">AircraftWidget::repopulateModel</a></div><div class="ttdeci">void repopulateModel()</div><div class="ttdoc">AircraftWidget::repopulateModel (public slot) - re-populates the model to cater for a change to the d...</div><div class="ttdef"><b>Definition:</b> aircraftwidget.cpp:250</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_99d0482cf009f9d97a0877749b817f19.html">gui</a></li><li class="navelem"><a class="el" href="dir_cc657b4ce13702a9d007a200bde234e1.html">widgets</a></li><li class="navelem"><b>aircraftwidget.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 10 - 12
docs/html/ajson_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/ajson.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -132,21 +132,19 @@ $(document).ready(function(){initNavTree('ajson_8h_source.html',''); initResizab
 <div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
 <div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div>
 <div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160; </div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif // AJSON_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AJSON_H</span></div>
+<div class="ttc" id="aclass_a_json_html"><div class="ttname"><a href="class_a_json.html">AJson</a></div><div class="ttdoc">The AJSON class is responsible for parsing the database (sqlite) to and from JSON.</div><div class="ttdef"><b>Definition:</b> ajson.h:30</div></div>
+<div class="ttc" id="aclass_a_json_html_a079cd737a5ed89b24f971df73011d9b2"><div class="ttname"><a href="class_a_json.html#a079cd737a5ed89b24f971df73011d9b2">AJson::readFileToDoc</a></div><div class="ttdeci">static QJsonDocument readFileToDoc(const QString &amp;file_path)</div><div class="ttdoc">readToDocument reads data from a JSON file into a QJSonDocument</div><div class="ttdef"><b>Definition:</b> ajson.cpp:60</div></div>
 <div class="ttc" id="aclass_a_json_html_a52e083d17fbb8906b47024bfdda49ca7"><div class="ttname"><a href="class_a_json.html#a52e083d17fbb8906b47024bfdda49ca7">AJson::writeDocToFile</a></div><div class="ttdeci">static void writeDocToFile(const QJsonDocument &amp;doc, const QString &amp;file_name)</div><div class="ttdoc">writes a QJsonDocument to a file</div><div class="ttdef"><b>Definition:</b> ajson.cpp:71</div></div>
-<div class="ttc" id="aclass_a_json_html_a6e0e703fb4187d3a02983c09873dae21"><div class="ttname"><a href="class_a_json.html#a6e0e703fb4187d3a02983c09873dae21">AJson::importDatabase</a></div><div class="ttdeci">static void importDatabase()</div><div class="ttdoc">importDatabase imports a dataset from JSON. Files need to be at AStanardPaths::JSON for now.</div><div class="ttdef"><b>Definition:</b> ajson.cpp:42</div></div>
 <div class="ttc" id="aclass_a_json_html_a60561d59b4bdb31032f217ba984563a3"><div class="ttname"><a href="class_a_json.html#a60561d59b4bdb31032f217ba984563a3">AJson::exportDatabase</a></div><div class="ttdeci">static void exportDatabase()</div><div class="ttdoc">exportDatabase exports the currently active database to JSON.</div><div class="ttdef"><b>Definition:</b> ajson.cpp:28</div></div>
-<div class="ttc" id="aclass_a_json_html_a079cd737a5ed89b24f971df73011d9b2"><div class="ttname"><a href="class_a_json.html#a079cd737a5ed89b24f971df73011d9b2">AJson::readFileToDoc</a></div><div class="ttdeci">static QJsonDocument readFileToDoc(const QString &amp;file_path)</div><div class="ttdoc">readToDocument reads data from a JSON file into a QJSonDocument</div><div class="ttdef"><b>Definition:</b> ajson.cpp:60</div></div>
-<div class="ttc" id="aclass_a_json_html"><div class="ttname"><a href="class_a_json.html">AJson</a></div><div class="ttdoc">The AJSON class is responsible for parsing the database (sqlite) to and from JSON.</div><div class="ttdef"><b>Definition:</b> ajson.h:29</div></div>
+<div class="ttc" id="aclass_a_json_html_a6e0e703fb4187d3a02983c09873dae21"><div class="ttname"><a href="class_a_json.html#a6e0e703fb4187d3a02983c09873dae21">AJson::importDatabase</a></div><div class="ttdeci">static void importDatabase()</div><div class="ttdoc">importDatabase imports a dataset from JSON. Files need to be at AStanardPaths::JSON for now.</div><div class="ttdef"><b>Definition:</b> ajson.cpp:42</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>ajson.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 9 - 11
docs/html/alog_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/alog.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -151,21 +151,19 @@ $(document).ready(function(){initNavTree('alog_8h_source.html',''); initResizabl
 <div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor">    return qdb; \</span></div>
 <div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">}</span></div>
 <div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#endif // ALOG_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ALOG_H</span></div>
 <div class="ttc" id="anamespace_a_log_html"><div class="ttname"><a href="namespace_a_log.html">ALog</a></div><div class="ttdoc">The ALog namespace encapsulates constants and functions used to provide logging to files and logging ...</div><div class="ttdef"><b>Definition:</b> alog.cpp:22</div></div>
-<div class="ttc" id="anamespace_a_log_html_a421bd504f26d924e0557d6359d853f69"><div class="ttname"><a href="namespace_a_log.html#a421bd504f26d924e0557d6359d853f69">ALog::aMessageHandler</a></div><div class="ttdeci">void aMessageHandler(QtMsgType type, const QMessageLogContext &amp;context, const QString &amp;msg)</div><div class="ttdoc">aMessageHandler Intercepts Messages and prints to console and log file</div><div class="ttdef"><b>Definition:</b> alog.cpp:85</div></div>
 <div class="ttc" id="anamespace_a_log_html_a1eeade2b758f2d452e40426f8d37c41a"><div class="ttname"><a href="namespace_a_log.html#a1eeade2b758f2d452e40426f8d37c41a">ALog::setLogFileName</a></div><div class="ttdeci">void setLogFileName()</div><div class="ttdoc">setLogFileName sets a log file name (&quot;Log_&lt;Date&gt;_&lt;Time&gt;.txt&quot;)</div><div class="ttdef"><b>Definition:</b> alog.cpp:29</div></div>
-<div class="ttc" id="anamespace_a_log_html_ae110fbae5b42a1dd106a9c53be104b13"><div class="ttname"><a href="namespace_a_log.html#ae110fbae5b42a1dd106a9c53be104b13">ALog::deleteOldLogs</a></div><div class="ttdeci">void deleteOldLogs()</div><div class="ttdoc">Cleans up old logs and initializes logging by preparing and installing a QMessageHandler.</div><div class="ttdef"><b>Definition:</b> alog.cpp:40</div></div>
+<div class="ttc" id="anamespace_a_log_html_a421bd504f26d924e0557d6359d853f69"><div class="ttname"><a href="namespace_a_log.html#a421bd504f26d924e0557d6359d853f69">ALog::aMessageHandler</a></div><div class="ttdeci">void aMessageHandler(QtMsgType type, const QMessageLogContext &amp;context, const QString &amp;msg)</div><div class="ttdoc">aMessageHandler Intercepts Messages and prints to console and log file</div><div class="ttdef"><b>Definition:</b> alog.cpp:93</div></div>
 <div class="ttc" id="anamespace_a_log_html_ac797ea9883ac75b58c2b08a64bcc26d7"><div class="ttname"><a href="namespace_a_log.html#ac797ea9883ac75b58c2b08a64bcc26d7">ALog::init</a></div><div class="ttdeci">bool init(bool log_debug)</div><div class="ttdoc">initialise logging, clean up logfiles and install a QMessageHandler. To enable logging of debug messa...</div><div class="ttdef"><b>Definition:</b> alog.cpp:60</div></div>
+<div class="ttc" id="anamespace_a_log_html_ae110fbae5b42a1dd106a9c53be104b13"><div class="ttname"><a href="namespace_a_log.html#ae110fbae5b42a1dd106a9c53be104b13">ALog::deleteOldLogs</a></div><div class="ttdeci">void deleteOldLogs()</div><div class="ttdoc">Cleans up old logs and initializes logging by preparing and installing a QMessageHandler.</div><div class="ttdef"><b>Definition:</b> alog.cpp:40</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>alog.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 46 - 41
docs/html/annotated.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Class List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -89,41 +89,48 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_opl.html" target="_self">Opl</a></td><td class="desc">A namespace to collect constants and enums used throughout the application </td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_opl_1_1_a_notification_handler.html" target="_self">ANotificationHandler</a></td><td class="desc">Handles displaying of user-directed messages. It displays information to the user and forwards the displayed message to <a class="el" href="namespace_a_log.html" title="The ALog namespace encapsulates constants and functions used to provide logging to files and logging ...">ALog</a> so it is written to the console and log files. The INFO, WARN and CRIT makros provide convenient access </td></tr>
-<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_aircraft_entry.html" target="_self">AAircraftEntry</a></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_currency_entry.html" target="_self">ACurrencyEntry</a></td><td class="desc"></td></tr>
-<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_database.html" target="_self">ADatabase</a></td><td class="desc">The DB class encapsulates the SQL database by providing fast access to hot database data </td></tr>
-<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_database_error.html" target="_self">ADatabaseError</a></td><td class="desc">Custom Database Error derived from QSqlError. Extends text() adding "Database Error: " before the text. Errors that are related to SQL are assigned their respective error codes. Errors that occur with data in the database are handled with the error code "opl" and QSqlError::UnknownError </td></tr>
-<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_data_base_setup.html" target="_self">ADataBaseSetup</a></td><td class="desc">Responsible for the inital setup of the database when the application is first launched. It creates the database in the specified default location and creates all required tables and views. It can also be used to reset the database currently used </td></tr>
-<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_date.html" target="_self">ADate</a></td><td class="desc">Responsible for input/output of Dates and handling the different Date Formats </td></tr>
-<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_download.html" target="_self">ADownload</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_entry.html" target="_self">AEntry</a></td><td class="desc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries in the database to operate on </td></tr>
-<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_file_standard_item.html" target="_self">AFileStandardItem</a></td><td class="desc">Simple QStandardItem subclass to encapsulate necessary file info. Using only a QStandardItem would mean that the full path should be inputted as data and of course displayed by default. However this way we create the absolute path in the fileInfo attribute for further use while displaying only the base name </td></tr>
-<tr id="row_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_flight_entry.html" target="_self">AFlightEntry</a></td><td class="desc"></td></tr>
-<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_hash.html" target="_self">AHash</a></td><td class="desc">Responsible for calculating cryptographic hashes of files (used to verify downloads) </td></tr>
-<tr id="row_12_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_aircraft_widget.html" target="_self">AircraftWidget</a></td><td class="desc">The <a class="el" href="class_aircraft_widget.html" title="The AircraftWidget is used to view, edit, delete or add new tails.">AircraftWidget</a> is used to view, edit, delete or add new tails </td></tr>
-<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_json.html" target="_self">AJson</a></td><td class="desc">The AJSON class is responsible for parsing the database (sqlite) to and from JSON </td></tr>
-<tr id="row_14_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_pilot_entry.html" target="_self">APilotEntry</a></td><td class="desc"></td></tr>
-<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_run_guard.html" target="_self">ARunGuard</a></td><td class="desc">The RunGuard class ensures only a single instance of the application is running simultaneously </td></tr>
-<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_settings.html" target="_self">ASettings</a></td><td class="desc">Thin wrapper for the QSettings class, simplifying reading and writing of settings </td></tr>
-<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_standard_paths.html" target="_self">AStandardPaths</a></td><td class="desc">The AStandardAppPaths class encapsulates a static QMap holding the standard paths of the application </td></tr>
-<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_style.html" target="_self">AStyle</a></td><td class="desc">Encapsulates style and stylesheet logic </td></tr>
-<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_tail_entry.html" target="_self">ATailEntry</a></td><td class="desc"></td></tr>
-<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_timer.html" target="_self">ATimer</a></td><td class="desc">Easy to use performance timer </td></tr>
-<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_translator.html" target="_self">ATranslator</a></td><td class="desc">Responsible for managing the QTranslator used for providing localisations. Translations are planned, but are not currently being worked on. The way QT language tools are working with CMAKE, there are some considerations for when works on translation actually start. See <a href="https://bugreports.qt.io/browse/QTBUG-41736">here</a> and <a href="https://bugreports.qt.io/browse/QTBUG-76410">here</a>. Long story short, make sure to use a version of CMake that is 3.16 or earlier, or 3.19.2 or later </td></tr>
-<tr id="row_22_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_backup_widget.html" target="_self">BackupWidget</a></td><td class="desc">The <a class="el" href="class_backup_widget.html" title="The BackupWidget is the interface for the user to create and restore backups of the database.">BackupWidget</a> is the interface for the user to create and restore backups of the database </td></tr>
-<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_data_position.html" target="_self">DataPosition</a></td><td class="desc"></td></tr>
-<tr id="row_24_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_debug_widget.html" target="_self">DebugWidget</a></td><td class="desc"></td></tr>
-<tr id="row_25_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_first_run_dialog.html" target="_self">FirstRunDialog</a></td><td class="desc"></td></tr>
-<tr id="row_26_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_home_widget.html" target="_self">HomeWidget</a></td><td class="desc">The <a class="el" href="class_home_widget.html" title="The HomeWidget is the welcome screen of the application.">HomeWidget</a> is the welcome screen of the application </td></tr>
-<tr id="row_27_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_logbook_widget.html" target="_self">LogbookWidget</a></td><td class="desc">The <a class="el" href="class_logbook_widget.html" title="The LogbookWidget displays data from the database in a QSqlTableView fed by a QSqlQuery Model.">LogbookWidget</a> displays data from the database in a QSqlTableView fed by a QSqlQuery Model </td></tr>
-<tr id="row_28_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_flight_dialog.html" target="_self">NewFlightDialog</a></td><td class="desc"></td></tr>
-<tr id="row_29_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_pilot_dialog.html" target="_self">NewPilotDialog</a></td><td class="desc"></td></tr>
-<tr id="row_30_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_tail_dialog.html" target="_self">NewTailDialog</a></td><td class="desc">The NewTail class is a dialog for adding a new tail to the database or editing an existing one </td></tr>
-<tr id="row_31_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_pilots_widget.html" target="_self">PilotsWidget</a></td><td class="desc">The <a class="el" href="class_pilots_widget.html" title="The PilotsWidget is used to view, edit, delete or add new pilots.">PilotsWidget</a> is used to view, edit, delete or add new pilots </td></tr>
-<tr id="row_32_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_settings_widget.html" target="_self">SettingsWidget</a></td><td class="desc">The <a class="el" href="class_settings_widget.html" title="The SettingsWidget is used to to display and alter Settings.">SettingsWidget</a> is used to to display and alter Settings </td></tr>
-<tr id="row_33_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_style_sheet.html" target="_self">StyleSheet</a></td><td class="desc">The <a class="el" href="struct_style_sheet.html" title="The StyleSheet struct holds the Display Name and File Name (in the resource system) for the available...">StyleSheet</a> struct holds the Display Name and File Name (in the resource system) for the available stylesheets </td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_a_calc.html" target="_self">ACalc</a></td><td class="desc">The <a class="el" href="namespace_a_calc.html" title="The ACalc namespace provides various functions for calculations that are performed outside of the dat...">ACalc</a> namespace provides various functions for calculations that are performed outside of the database. This includes tasks like converting different units and formats, or functions calculating block time or night time </td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_calc_1_1_night_time_values.html" target="_self">NightTimeValues</a></td><td class="desc">The <a class="el" href="struct_a_calc_1_1_night_time_values.html" title="The NightTimeValues struct encapsulates values relating to night time that are needed by the NewFligh...">NightTimeValues</a> struct encapsulates values relating to night time that are needed by the <a class="el" href="class_new_flight_dialog.html" title="The NewFlightDialog is used to add or edit entries from the flights table in the database.">NewFlightDialog</a> </td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_opl.html" target="_self">Opl</a></td><td class="desc">A namespace to collect constants and enums used throughout the application </td></tr>
+<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_opl_1_1_a_notification_handler.html" target="_self">ANotificationHandler</a></td><td class="desc">Handles displaying of user-directed messages. It displays information to the user in a QMessageBox and forwards the displayed message to <a class="el" href="namespace_a_log.html" title="The ALog namespace encapsulates constants and functions used to provide logging to files and logging ...">ALog</a> so it is written to the console and log files. The INFO, WARN and CRIT makros provide convenient access </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_aircraft_entry.html" target="_self">AAircraftEntry</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_completion_data.html" target="_self">ACompletionData</a></td><td class="desc">Data to QCompleters and QHashs used for mapping user input to database keys. It retreives the completer targets and mapping data from the database and caches it for fast access without the need to query the database </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_currency_entry.html" target="_self">ACurrencyEntry</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_database.html" target="_self">ADatabase</a></td><td class="desc">The DB class encapsulates the SQL database by providing fast access to hot database data </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_database_error.html" target="_self">ADatabaseError</a></td><td class="desc">Custom Database Error derived from QSqlError. Extends text() adding "Database Error: " before the text. Errors that are related to SQL are assigned their respective error codes. Errors that occur with data in the database are handled with the error code "opl" and QSqlError::UnknownError </td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_date.html" target="_self">ADate</a></td><td class="desc">Responsible for input/output of Dates and handling the different Date Formats </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_download.html" target="_self">ADownload</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_entry.html" target="_self">AEntry</a></td><td class="desc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries in the database to operate on </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_file_standard_item.html" target="_self">AFileStandardItem</a></td><td class="desc">Simple QStandardItem subclass to encapsulate necessary file info. Using only a QStandardItem would mean that the full path should be inputted as data and of course displayed by default. However this way we create the absolute path in the fileInfo attribute for further use while displaying only the base name </td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_flight_entry.html" target="_self">AFlightEntry</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_hash.html" target="_self">AHash</a></td><td class="desc">Responsible for calculating cryptographic hashes of files (used to verify downloads) </td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_aircraft_widget.html" target="_self">AircraftWidget</a></td><td class="desc">The <a class="el" href="class_aircraft_widget.html" title="The AircraftWidget is used to view, edit, delete or add new tails.">AircraftWidget</a> is used to view, edit, delete or add new tails </td></tr>
+<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_json.html" target="_self">AJson</a></td><td class="desc">The AJSON class is responsible for parsing the database (sqlite) to and from JSON </td></tr>
+<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_pilot_entry.html" target="_self">APilotEntry</a></td><td class="desc"></td></tr>
+<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_run_guard.html" target="_self">ARunGuard</a></td><td class="desc">The RunGuard class ensures only a single instance of the application is running simultaneously </td></tr>
+<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_settings.html" target="_self">ASettings</a></td><td class="desc">Thin wrapper for the QSettings class, simplifying reading and writing of settings </td></tr>
+<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_standard_paths.html" target="_self">AStandardPaths</a></td><td class="desc">The AStandardAppPaths class encapsulates a static QHash holding the standard paths of the application </td></tr>
+<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_style.html" target="_self">AStyle</a></td><td class="desc">Encapsulates style and stylesheet logic </td></tr>
+<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_a_tail_entry.html" target="_self">ATailEntry</a></td><td class="desc"></td></tr>
+<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_timer.html" target="_self">ATimer</a></td><td class="desc">Easy to use performance timer </td></tr>
+<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_a_translator.html" target="_self">ATranslator</a></td><td class="desc">Responsible for managing the QTranslator used for providing localisations. Translations are planned, but are not currently being worked on. The way QT language tools are working with CMAKE, there are some considerations for when works on translation actually start. See <a href="https://bugreports.qt.io/browse/QTBUG-41736">here</a> and <a href="https://bugreports.qt.io/browse/QTBUG-76410">here</a>. Long story short, make sure to use a version of CMake that is 3.16 or earlier, or 3.19.2 or later </td></tr>
+<tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_backup_widget.html" target="_self">BackupWidget</a></td><td class="desc">The <a class="el" href="class_backup_widget.html" title="The BackupWidget is the interface for the user to create and restore backups of the database.">BackupWidget</a> is the interface for the user to create and restore backups of the database </td></tr>
+<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_data_position.html" target="_self">DataPosition</a></td><td class="desc"></td></tr>
+<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_debug_widget.html" target="_self">DebugWidget</a></td><td class="desc"></td></tr>
+<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_first_run_dialog.html" target="_self">FirstRunDialog</a></td><td class="desc">The <a class="el" href="class_first_run_dialog.html" title="The FirstRunDialog is used as a set-up wizard for the application.">FirstRunDialog</a> is used as a set-up wizard for the application </td></tr>
+<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_home_widget.html" target="_self">HomeWidget</a></td><td class="desc">The <a class="el" href="class_home_widget.html" title="The HomeWidget is the welcome screen of the application.">HomeWidget</a> is the welcome screen of the application </td></tr>
+<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_logbook_widget.html" target="_self">LogbookWidget</a></td><td class="desc">The <a class="el" href="class_logbook_widget.html" title="The LogbookWidget displays data from the database in a QSqlTableView fed by a QSqlQuery Model.">LogbookWidget</a> displays data from the database in a QSqlTableView fed by a QSqlQuery Model </td></tr>
+<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_flight_dialog.html" target="_self">NewFlightDialog</a></td><td class="desc">The <a class="el" href="class_new_flight_dialog.html" title="The NewFlightDialog is used to add or edit entries from the flights table in the database.">NewFlightDialog</a> is used to add or edit entries from the flights table in the database </td></tr>
+<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_pilot_dialog.html" target="_self">NewPilotDialog</a></td><td class="desc">The <a class="el" href="class_new_pilot_dialog.html" title="The NewPilotDialog enables adding new entries to the pilot table in the database.">NewPilotDialog</a> enables adding new entries to the pilot table in the database </td></tr>
+<tr id="row_31_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_new_tail_dialog.html" target="_self">NewTailDialog</a></td><td class="desc">The <a class="el" href="class_new_tail_dialog.html" title="The NewTailDialog enables adding new Tail entries to the database or editing existing ones.">NewTailDialog</a> enables adding new Tail entries to the database or editing existing ones </td></tr>
+<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_pilots_widget.html" target="_self">PilotsWidget</a></td><td class="desc">The <a class="el" href="class_pilots_widget.html" title="The PilotsWidget is used to view, edit, delete or add new pilots.">PilotsWidget</a> is used to view, edit, delete or add new pilots </td></tr>
+<tr id="row_33_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_process_aircraft.html" target="_self">ProcessAircraft</a></td><td class="desc"></td></tr>
+<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_process_flights.html" target="_self">ProcessFlights</a></td><td class="desc"></td></tr>
+<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_process_pilots.html" target="_self">ProcessPilots</a></td><td class="desc"></td></tr>
+<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_settings_widget.html" target="_self">SettingsWidget</a></td><td class="desc">The <a class="el" href="class_settings_widget.html" title="The SettingsWidget is used to to display and alter Settings.">SettingsWidget</a> is used to to display and alter Settings </td></tr>
+<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_style_sheet.html" target="_self">StyleSheet</a></td><td class="desc">The <a class="el" href="struct_style_sheet.html" title="The StyleSheet struct holds the Display Name and File Name (in the resource system) for the available...">StyleSheet</a> struct holds the Display Name and File Name (in the resource system) for the available stylesheets </td></tr>
+<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_user_data_state.html" target="_self">UserDataState</a></td><td class="desc">The UserDateState struct caches the current number of entries in relevant database tables for fast access </td></tr>
+<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_validation_state.html" target="_self">ValidationState</a></td><td class="desc">Encapsulates a QBitArray that has a bit set (or unset) depending on wether the input for the associated index has been verified. The indexes correspond to the mandatory items enumerated in the ValidationItem enum </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
@@ -131,9 +138,7 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 13 - 3
docs/html/annotated_dup.js

@@ -1,11 +1,16 @@
 var annotated_dup =
 [
-    [ "Opl", "namespace_opl.html", "namespace_opl" ],
+    [ "ACalc", "namespace_a_calc.html", [
+      [ "NightTimeValues", "struct_a_calc_1_1_night_time_values.html", "struct_a_calc_1_1_night_time_values" ]
+    ] ],
+    [ "Opl", "namespace_opl.html", [
+      [ "ANotificationHandler", "class_opl_1_1_a_notification_handler.html", null ]
+    ] ],
     [ "AAircraftEntry", "struct_a_aircraft_entry.html", "struct_a_aircraft_entry" ],
+    [ "ACompletionData", "class_a_completion_data.html", "class_a_completion_data" ],
     [ "ACurrencyEntry", "struct_a_currency_entry.html", "struct_a_currency_entry" ],
     [ "ADatabase", "class_a_database.html", "class_a_database" ],
     [ "ADatabaseError", "class_a_database_error.html", "class_a_database_error" ],
-    [ "ADataBaseSetup", "class_a_data_base_setup.html", null ],
     [ "ADate", "class_a_date.html", null ],
     [ "ADownload", "class_a_download.html", "class_a_download" ],
     [ "AEntry", "class_a_entry.html", "class_a_entry" ],
@@ -32,6 +37,11 @@ var annotated_dup =
     [ "NewPilotDialog", "class_new_pilot_dialog.html", "class_new_pilot_dialog" ],
     [ "NewTailDialog", "class_new_tail_dialog.html", "class_new_tail_dialog" ],
     [ "PilotsWidget", "class_pilots_widget.html", "class_pilots_widget" ],
+    [ "ProcessAircraft", "class_process_aircraft.html", "class_process_aircraft" ],
+    [ "ProcessFlights", "class_process_flights.html", "class_process_flights" ],
+    [ "ProcessPilots", "class_process_pilots.html", "class_process_pilots" ],
     [ "SettingsWidget", "class_settings_widget.html", "class_settings_widget" ],
-    [ "StyleSheet", "struct_style_sheet.html", "struct_style_sheet" ]
+    [ "StyleSheet", "struct_style_sheet.html", "struct_style_sheet" ],
+    [ "UserDataState", "struct_user_data_state.html", "struct_user_data_state" ],
+    [ "ValidationState", "class_validation_state.html", "class_validation_state" ]
 ];

+ 7 - 9
docs/html/apilotentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/apilotentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -122,18 +122,16 @@ $(document).ready(function(){initNavTree('apilotentry_8h_source.html',''); initR
 <div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keyword">const</span> QString name();</div>
 <div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div>
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160; </div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#endif // APILOTENTRY_H</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// APILOTENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
+<div class="ttc" id="astruct_a_pilot_entry_html"><div class="ttname"><a href="struct_a_pilot_entry.html">APilotEntry</a></div><div class="ttdef"><b>Definition:</b> apilotentry.h:24</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_a_pilot_entry_html"><div class="ttname"><a href="struct_a_pilot_entry.html">APilotEntry</a></div><div class="ttdef"><b>Definition:</b> apilotentry.h:24</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>apilotentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 8 - 8
docs/html/areadcsv_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/areadcsv.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -110,17 +110,17 @@ $(document).ready(function(){initNavTree('areadcsv_8h_source.html',''); initResi
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include&lt;QtCore&gt;</span></div>
 <div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;QVector&lt;QStringList&gt; aReadCsv(QString filename);</div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#endif // AREADCSV_H</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;QVector&lt;QStringList&gt; aReadCsvAsRows(<span class="keyword">const</span> QString &amp;filename);</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// AREADCSV_H</span></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>areadcsv.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 6 - 8
docs/html/arunguard_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/arunguard.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -134,17 +134,15 @@ $(document).ready(function(){initNavTree('arunguard_8h_source.html',''); initRes
 <div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;};</div>
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; </div>
 <div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif // ARUNGUARD_H</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ARUNGUARD_H</span></div>
+<div class="ttc" id="aclass_a_run_guard_html"><div class="ttname"><a href="class_a_run_guard.html">ARunGuard</a></div><div class="ttdoc">The RunGuard class ensures only a single instance of the application is running simultaneously.</div><div class="ttdef"><b>Definition:</b> arunguard.h:30</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_run_guard_html"><div class="ttname"><a href="class_a_run_guard.html">ARunGuard</a></div><div class="ttdoc">The RunGuard class ensures only a single instance of the application is running simultaneously.</div><div class="ttdef"><b>Definition:</b> arunguard.h:29</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>arunguard.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 60 - 67
docs/html/asettings_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/asettings.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -125,79 +125,72 @@ $(document).ready(function(){initNavTree('asettings_8h_source.html',''); initRes
 <div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        DisplaySelfAs,</div>
 <div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        TailSortColumn,</div>
 <div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        PilotSortColumn,</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        AcftAllowIncomplete,</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        FtlWarningThreshold,</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        CurrWarningEnabled,</div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        CurrWarningThreshold,</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        ShowToLgdCurrency,</div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        ShowLicCurrency,</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        ShowTrCurrency,</div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        ShowLckCurrency,</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        ShowMedCurrency,</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        ShowCustom1Currency,</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        ShowCustom2Currency,</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        Custom1CurrencyName,</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        Custom2CurrencyName,</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    };</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160; </div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">enum class</span> FlightLogging {</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        Function,</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        Approach,</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        NightLoggingEnabled,</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        LogIFR,</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        FlightNumberPrefix,</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        NumberTakeoffs,</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        NumberLandings,</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        PilotFlying,</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        NightAngle,</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        Rules,</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        FlightTimeFormat,</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        FunctionComboBox,</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    };</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        FtlWarningThreshold,</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        CurrWarningThreshold,</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        ShowToLgdCurrency,</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        ShowLicCurrency,</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        ShowTrCurrency,</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        ShowLckCurrency,</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        ShowMedCurrency,</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        ShowCustom1Currency,</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        ShowCustom2Currency,</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        Custom1CurrencyName,</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        Custom2CurrencyName,</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    };</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">enum class</span> FlightLogging {</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        Function,</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        Approach,</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        NightLoggingEnabled,</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        LogIFR,</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        FlightNumberPrefix,</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        PilotFlying,</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        NightAngle,</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        <span class="comment">//FlightTimeFormat,</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    };</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_settings.html#a383ea9d59ea8878ca873465eb19bbe85">setup</a>();</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_settings.html#a2dbc2e3510363c09e45223f4bbdc5e59">resetToDefaults</a>();</div>
 <div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_settings.html#a383ea9d59ea8878ca873465eb19bbe85">setup</a>();</div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_settings.html#a2dbc2e3510363c09e45223f4bbdc5e59">resetToDefaults</a>();</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> Main key);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> Main key, <span class="keyword">const</span> QVariant &amp;val);</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> FlightLogging key);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> UserData key, <span class="keyword">const</span> QVariant &amp;val);</div>
 <div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> Main key);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> Main key, <span class="keyword">const</span> QVariant &amp;val);</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> UserData key);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> FlightLogging key, <span class="keyword">const</span> QVariant &amp;val);</div>
 <div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> FlightLogging key);</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> UserData key, <span class="keyword">const</span> QVariant &amp;val);</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keyword">static</span> QVariant read(<span class="keyword">const</span> UserData key);</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> write(<span class="keyword">const</span> FlightLogging key, <span class="keyword">const</span> QVariant &amp;val);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> Main key);</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> FlightLogging key);</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> UserData key);</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> Main key);</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> FlightLogging key);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> UserData key);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160; </div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keyword">static</span> QSettings settings();</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="keyword">static</span> QMap&lt;Main, QString&gt; mainMap;</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keyword">static</span> QMap&lt;UserData, QString&gt; userDataMap;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keyword">static</span> QMap&lt;FlightLogging, QString&gt; flightLoggingMap;</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;};</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#endif // ASETTINGS_H</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> Main key);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> FlightLogging key);</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">groupOfKey</a>(<span class="keyword">const</span> UserData key);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> Main key);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> FlightLogging key);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="keyword">static</span> QString <a class="code" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(<span class="keyword">const</span> UserData key);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="keyword">static</span> QSettings settings();</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> sync() { QSettings().sync(); }</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keyword">static</span> QMap&lt;Main, QString&gt; mainMap;</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">static</span> QMap&lt;UserData, QString&gt; userDataMap;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keyword">static</span> QMap&lt;FlightLogging, QString&gt; flightLoggingMap;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;};</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ASETTINGS_H</span></div>
+<div class="ttc" id="aclass_a_settings_html"><div class="ttname"><a href="class_a_settings.html">ASettings</a></div><div class="ttdoc">Thin wrapper for the QSettings class, simplifying reading and writing of settings.</div><div class="ttdef"><b>Definition:</b> asettings.h:27</div></div>
+<div class="ttc" id="aclass_a_settings_html_a2dbc2e3510363c09e45223f4bbdc5e59"><div class="ttname"><a href="class_a_settings.html#a2dbc2e3510363c09e45223f4bbdc5e59">ASettings::resetToDefaults</a></div><div class="ttdeci">static void resetToDefaults()</div><div class="ttdoc">ASettings::resetToDefaults (Re-)sets all settings to the default value.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:69</div></div>
+<div class="ttc" id="aclass_a_settings_html_a383ea9d59ea8878ca873465eb19bbe85"><div class="ttname"><a href="class_a_settings.html#a383ea9d59ea8878ca873465eb19bbe85">ASettings::setup</a></div><div class="ttdeci">static void setup()</div><div class="ttdoc">Should be called after QCoreApplication::set...Name have been called.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:60</div></div>
+<div class="ttc" id="aclass_a_settings_html_a6fc09922de0182271c6c1ff001792da1"><div class="ttname"><a href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">ASettings::groupOfKey</a></div><div class="ttdeci">static QString groupOfKey(const Main key)</div><div class="ttdoc">Return string representation of group of key: &quot;ini_header/key&quot;.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:119</div></div>
+<div class="ttc" id="aclass_a_settings_html_af88194014c7599e8c9fe488c5b1ebf99"><div class="ttname"><a href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">ASettings::stringOfKey</a></div><div class="ttdeci">static QString stringOfKey(const Main key)</div><div class="ttdoc">Return string representation of key.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:131</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_settings_html_a2dbc2e3510363c09e45223f4bbdc5e59"><div class="ttname"><a href="class_a_settings.html#a2dbc2e3510363c09e45223f4bbdc5e59">ASettings::resetToDefaults</a></div><div class="ttdeci">static void resetToDefaults()</div><div class="ttdoc">ASettings::resetToDefaults (Re-)sets all settings to the default value.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:75</div></div>
-<div class="ttc" id="aclass_a_settings_html_a383ea9d59ea8878ca873465eb19bbe85"><div class="ttname"><a href="class_a_settings.html#a383ea9d59ea8878ca873465eb19bbe85">ASettings::setup</a></div><div class="ttdeci">static void setup()</div><div class="ttdoc">Should be called after QCoreApplication::set...Name have been called.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:66</div></div>
-<div class="ttc" id="aclass_a_settings_html"><div class="ttname"><a href="class_a_settings.html">ASettings</a></div><div class="ttdoc">Thin wrapper for the QSettings class, simplifying reading and writing of settings.</div><div class="ttdef"><b>Definition:</b> asettings.h:27</div></div>
-<div class="ttc" id="aclass_a_settings_html_af88194014c7599e8c9fe488c5b1ebf99"><div class="ttname"><a href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">ASettings::stringOfKey</a></div><div class="ttdeci">static QString stringOfKey(const Main key)</div><div class="ttdoc">Return string representation of key.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:140</div></div>
-<div class="ttc" id="aclass_a_settings_html_a6fc09922de0182271c6c1ff001792da1"><div class="ttname"><a href="class_a_settings.html#a6fc09922de0182271c6c1ff001792da1">ASettings::groupOfKey</a></div><div class="ttdeci">static QString groupOfKey(const Main key)</div><div class="ttdoc">Return string representation of group of key: &quot;ini_header/key&quot;.</div><div class="ttdef"><b>Definition:</b> asettings.cpp:128</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>asettings.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 12 - 14
docs/html/astandardpaths_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/astandardpaths.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -109,7 +109,7 @@ $(document).ready(function(){initNavTree('astandardpaths_8h_source.html',''); in
 <div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160; </div>
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;QStandardPaths&gt;</span></div>
 <div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QMap&gt;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QHash&gt;</span></div>
 <div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
 <div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
 <div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_a_standard_paths.html">   30</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_standard_paths.html">AStandardPaths</a>{</div>
@@ -122,7 +122,7 @@ $(document).ready(function(){initNavTree('astandardpaths_8h_source.html',''); in
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        JSON</div>
 <div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    };</div>
 <div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keyword">static</span> QMap&lt;Directories, QDir&gt; directories;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    <span class="keyword">static</span> QHash&lt;Directories, QDir&gt; directories;</div>
 <div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> scan_directories();</div>
 <div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
@@ -132,25 +132,23 @@ $(document).ready(function(){initNavTree('astandardpaths_8h_source.html',''); in
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QDir &amp;<a class="code" href="class_a_standard_paths.html#a0df7e02331fdf09a81951657d52e0ebe">directory</a>(Directories location);</div>
 <div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
 <div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString <a class="code" href="class_a_standard_paths.html#a43937baa78a53e1427e23f533024221b">asChildOfDir</a>(Directories location, <span class="keyword">const</span> QString&amp; filename);</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QMap&lt;Directories, QDir&gt; &amp;<a class="code" href="class_a_standard_paths.html#a775a7f2d7d99e8b7d29cc91c33c08ba8">allDirectories</a>();</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QHash&lt;Directories, QDir&gt; &amp;<a class="code" href="class_a_standard_paths.html#a56108cc186aa3326bb41d8716b78e322">allDirectories</a>();</div>
 <div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;};</div>
 <div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
 <div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#endif // ASTANDARDPATHS_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ASTANDARDPATHS_H</span></div>
+<div class="ttc" id="aclass_a_standard_paths_html"><div class="ttname"><a href="class_a_standard_paths.html">AStandardPaths</a></div><div class="ttdoc">The AStandardAppPaths class encapsulates a static QHash holding the standard paths of the application...</div><div class="ttdef"><b>Definition:</b> astandardpaths.h:30</div></div>
 <div class="ttc" id="aclass_a_standard_paths_html_a0df7e02331fdf09a81951657d52e0ebe"><div class="ttname"><a href="class_a_standard_paths.html#a0df7e02331fdf09a81951657d52e0ebe">AStandardPaths::directory</a></div><div class="ttdeci">static const QDir &amp; directory(Directories location)</div><div class="ttdoc">Returns the QDir for the standard directory referenced by the Directories enum 'loc'.</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:43</div></div>
 <div class="ttc" id="aclass_a_standard_paths_html_a233dfe0411b294e64da674ff9c898c62"><div class="ttname"><a href="class_a_standard_paths.html#a233dfe0411b294e64da674ff9c898c62">AStandardPaths::setup</a></div><div class="ttdeci">static bool setup()</div><div class="ttdoc">Creates and verifies a static map of the standard paths used in the app.</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:23</div></div>
-<div class="ttc" id="aclass_a_standard_paths_html_a775a7f2d7d99e8b7d29cc91c33c08ba8"><div class="ttname"><a href="class_a_standard_paths.html#a775a7f2d7d99e8b7d29cc91c33c08ba8">AStandardPaths::allDirectories</a></div><div class="ttdeci">static const QMap&lt; Directories, QDir &gt; &amp; allDirectories()</div><div class="ttdoc">returns the static map of all standard directories</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:53</div></div>
 <div class="ttc" id="aclass_a_standard_paths_html_a43937baa78a53e1427e23f533024221b"><div class="ttname"><a href="class_a_standard_paths.html#a43937baa78a53e1427e23f533024221b">AStandardPaths::asChildOfDir</a></div><div class="ttdeci">static const QString asChildOfDir(Directories location, const QString &amp;filename)</div><div class="ttdoc">Returns a string of the absolute path to directory location concatenated with filename.</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:48</div></div>
-<div class="ttc" id="aclass_a_standard_paths_html"><div class="ttname"><a href="class_a_standard_paths.html">AStandardPaths</a></div><div class="ttdoc">The AStandardAppPaths class encapsulates a static QMap holding the standard paths of the application.</div><div class="ttdef"><b>Definition:</b> astandardpaths.h:30</div></div>
+<div class="ttc" id="aclass_a_standard_paths_html_a56108cc186aa3326bb41d8716b78e322"><div class="ttname"><a href="class_a_standard_paths.html#a56108cc186aa3326bb41d8716b78e322">AStandardPaths::allDirectories</a></div><div class="ttdeci">static const QHash&lt; Directories, QDir &gt; &amp; allDirectories()</div><div class="ttdoc">returns the static map of all standard directories</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:53</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>astandardpaths.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 5 - 7
docs/html/astat_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/astat.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -126,16 +126,14 @@ $(document).ready(function(){initNavTree('astat_8h_source.html',''); initResizab
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
 <div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;} <span class="comment">// namespace AStat</span></div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#endif // ASTAT_H</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ASTAT_H</span></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>astat.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 54 - 46
docs/html/astyle_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/astyle.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -108,57 +108,65 @@ $(document).ready(function(){initNavTree('astyle_8h_source.html',''); initResiza
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#define ASTYLE_H</span></div>
 <div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;QFileInfo&gt;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QMap&gt;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;QHash&gt;</span></div>
 <div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;QTextStream&gt;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
-<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="struct_style_sheet.html">   29</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_style_sheet.html">StyleSheet</a></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;{</div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <a class="code" href="struct_style_sheet.html">StyleSheet</a>(QLatin1String style_sheet_name, QLatin1String file_name)</div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        : styleSheetName(style_sheet_name), fileName(file_name)</div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    {}</div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    QLatin1String styleSheetName;</div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    QLatin1String fileName;</div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;};</div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160; </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> QString read_stylesheet(<span class="keyword">const</span> QString &amp;stylesheet)</div>
-<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;{</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    QFile file(stylesheet);</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    file.open(QFile::ReadOnly | QFile::Text);</div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    QTextStream stream(&amp;file);</div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="keywordflow">return</span> stream.readAll();</div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160; </div>
-<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_a_style.html">   49</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_style.html">AStyle</a></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keyword">static</span> QString currentStyle;</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> resetStyle();</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QStringList styles;</div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString defaultStyle;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QList&lt;StyleSheet&gt; styleSheets;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">setup</a>();</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> QString &amp;style_key);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> <a class="code" href="struct_style_sheet.html">StyleSheet</a> &amp;style_sheet);</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> QPalette &amp;palette);</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keyword">static</span> QPalette darkPalette();</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString&amp; style();</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;};</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;QComboBox&gt;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="struct_style_sheet.html">   30</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_style_sheet.html">StyleSheet</a></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;{</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <a class="code" href="struct_style_sheet.html">StyleSheet</a>(QLatin1String style_sheet_name, QLatin1String file_name)</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        : styleSheetName(style_sheet_name), fileName(file_name)</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    {}</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    QLatin1String styleSheetName;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    QLatin1String fileName;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;};</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> QString read_stylesheet(<span class="keyword">const</span> QString &amp;stylesheet)</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;{</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    QFile file(stylesheet);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    file.open(QFile::ReadOnly | QFile::Text);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    QTextStream stream(&amp;file);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordflow">return</span> stream.readAll();</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;}</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_a_style.html">   50</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_a_style.html">AStyle</a></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;{</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">static</span> QString currentStyle;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> resetStyle();</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QStringList styles;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString defaultStyle;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QList&lt;StyleSheet&gt; styleSheets;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160; </div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">setup</a>();</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> QString &amp;style_key);</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> <a class="code" href="struct_style_sheet.html">StyleSheet</a> &amp;style_sheet);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> setStyle(<span class="keyword">const</span> QPalette &amp;palette);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keyword">static</span> QPalette darkPalette();</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString&amp; style();</div>
 <div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160; </div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="preprocessor">#endif // ASTYLE_H</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> loadStylesComboBox(QComboBox *combo_box){</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        combo_box-&gt;addItems(AStyle::styles);</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;style_sheet : AStyle::styleSheets) {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;            combo_box-&gt;addItem(style_sheet.styleSheetName);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        }</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        combo_box-&gt;addItem(QStringLiteral(<span class="stringliteral">&quot;Dark-Palette&quot;</span>));</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        combo_box-&gt;model()-&gt;sort(0);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    }</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;};</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ASTYLE_H</span></div>
+<div class="ttc" id="aclass_a_style_html"><div class="ttname"><a href="class_a_style.html">AStyle</a></div><div class="ttdoc">The AStyle class encapsulates style and stylesheet logic.</div><div class="ttdef"><b>Definition:</b> astyle.h:51</div></div>
+<div class="ttc" id="aclass_a_style_html_ad061bf79f3e22640e78f8bb65ef0867c"><div class="ttname"><a href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">AStyle::setup</a></div><div class="ttdeci">static void setup()</div><div class="ttdoc">Setup Application style by reading from openPilotLog.ini.</div><div class="ttdef"><b>Definition:</b> astyle.cpp:47</div></div>
+<div class="ttc" id="astruct_style_sheet_html"><div class="ttname"><a href="struct_style_sheet.html">StyleSheet</a></div><div class="ttdoc">The StyleSheet struct holds the Display Name and File Name (in the resource system) for the available...</div><div class="ttdef"><b>Definition:</b> astyle.h:31</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_style_sheet_html"><div class="ttname"><a href="struct_style_sheet.html">StyleSheet</a></div><div class="ttdoc">The StyleSheet struct holds the Display Name and File Name (in the resource system) for the available...</div><div class="ttdef"><b>Definition:</b> astyle.h:29</div></div>
-<div class="ttc" id="aclass_a_style_html_ad061bf79f3e22640e78f8bb65ef0867c"><div class="ttname"><a href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">AStyle::setup</a></div><div class="ttdeci">static void setup()</div><div class="ttdoc">Setup Application style by reading from openPilotLog.ini.</div><div class="ttdef"><b>Definition:</b> astyle.cpp:47</div></div>
-<div class="ttc" id="aclass_a_style_html"><div class="ttname"><a href="class_a_style.html">AStyle</a></div><div class="ttdoc">The AStyle class encapsulates style and stylesheet logic.</div><div class="ttdef"><b>Definition:</b> astyle.h:49</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>astyle.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 7 - 9
docs/html/atailentry_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/atailentry.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -124,18 +124,16 @@ $(document).ready(function(){initNavTree('atailentry_8h_source.html',''); initRe
 <div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;};</div>
 <div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160; </div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#endif // ATAILENTRY_H</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ATAILENTRY_H</span></div>
+<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:33</div></div>
+<div class="ttc" id="astruct_a_tail_entry_html"><div class="ttname"><a href="struct_a_tail_entry.html">ATailEntry</a></div><div class="ttdef"><b>Definition:</b> atailentry.h:24</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="astruct_a_tail_entry_html"><div class="ttname"><a href="struct_a_tail_entry.html">ATailEntry</a></div><div class="ttdef"><b>Definition:</b> atailentry.h:24</div></div>
-<div class="ttc" id="aclass_a_entry_html"><div class="ttname"><a href="class_a_entry.html">AEntry</a></div><div class="ttdoc">The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...</div><div class="ttdef"><b>Definition:</b> aentry.h:40</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>atailentry.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 129 - 104
docs/html/atime_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/functions/atime.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -159,113 +159,138 @@ $(document).ready(function(){initNavTree('atime_8h_source.html',''); initResizab
 <div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="keywordflow">return</span> (time.hour() * 60 + time.minute()) / 60.0;</div>
 <div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;}</div>
 <div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> toMinutes(<span class="keyword">const</span> QTime &amp;time) {<span class="keywordflow">return</span> time.hour() * 60 + time.minute();}</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="keyword">inline</span> QTime fromMinutes(<span class="keywordtype">int</span> total_minutes)</div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;{</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordtype">int</span> minute = total_minutes % 60;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordtype">int</span> hour = total_minutes / 60;</div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160; </div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;}</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QTime fromString(QString time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)</div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;{</div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">switch</span> (format) {</div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Default:</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keywordflow">return</span> QTime::fromString(time_string, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Decimal:</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordtype">double</span> decimal_time = time_string.toDouble();</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="keywordtype">int</span> hour = decimal_time;</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordtype">int</span> minute = round((decimal_time - hour) * 60);</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    }</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <span class="keywordflow">return</span> QTime();</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    }</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;}</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160; </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QTime fromString(<span class="keyword">const</span> <span class="keywordtype">char</span>* time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;{</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keywordflow">switch</span> (format) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Default:</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <span class="keywordflow">return</span> QTime::fromString(time_string, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Decimal:</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    {</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keywordtype">double</span> decimal_time = QString(time_string).toDouble();</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordtype">int</span> hour = decimal_time;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keywordtype">int</span> minute = round((decimal_time - hour) * 60);</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    }</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">return</span> QTime();</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    }</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;}</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="keyword">inline</span> QTime <a class="code" href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">blocktime</a>(<span class="keyword">const</span> QTime &amp;tofb, <span class="keyword">const</span> QTime &amp;tonb)</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;{</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    QTime blocktime_out(0, 0); <span class="comment">// initialise return value at midnight</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">if</span> (tonb &gt; tofb) { <span class="comment">// landing same day</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordtype">int</span> block_seconds = tofb.secsTo(tonb);</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        blocktime_out = blocktime_out.addSecs(block_seconds);</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    } <span class="keywordflow">else</span> { <span class="comment">// landing next day</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        QTime midnight(0, 0);</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keywordtype">int</span> seconds = tofb.secsTo(midnight);</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        blocktime_out = blocktime_out.addSecs(seconds);</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        seconds = midnight.secsTo(tonb);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        blocktime_out = blocktime_out.addSecs(seconds);</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordflow">return</span> blocktime_out;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code" href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">formatTimeInput</a>(QString user_input)</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;{</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    QTime temp_time; <span class="comment">//empty time object is invalid by default</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keywordtype">bool</span> contains_seperator = user_input.contains(<span class="charliteral">&#39;:&#39;</span>);</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordflow">if</span> (user_input.length() == 4 &amp;&amp; !contains_seperator) {</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;hhmm&quot;</span>));</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 3 &amp;&amp; !contains_seperator) {</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <span class="keywordflow">if</span> (user_input.toInt() &lt; 240) { <span class="comment">//Qtime is invalid if time is between 000 and 240 for this case</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;            QString tempstring = user_input.prepend(QStringLiteral(<span class="stringliteral">&quot;0&quot;</span>));</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            temp_time = QTime::fromString(tempstring, QStringLiteral(<span class="stringliteral">&quot;hhmm&quot;</span>));</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;            temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;Hmm&quot;</span>));</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 4 &amp;&amp; contains_seperator) {</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;h:mm&quot;</span>));</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 5 &amp;&amp; contains_seperator) {</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160; </div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keyword">auto</span> output = temp_time.toString(QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160; </div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keywordflow">if</span> (output.isEmpty()) {</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        DEB &lt;&lt; <span class="stringliteral">&quot;Time input is invalid.&quot;</span>;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    }</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">return</span> output;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;}</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160; </div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;} <span class="comment">// namespace ATime</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="preprocessor">#endif // ATIME_H</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">inline</span> QTime qTimefromMinutes(<span class="keywordtype">int</span> total_minutes)</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <span class="keywordtype">int</span> minute = total_minutes % 60;</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordtype">int</span> hour = total_minutes / 60;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;}</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QTime fromString(QString time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;{</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">switch</span> (format) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Default:</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <span class="keywordflow">return</span> QTime::fromString(time_string, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Decimal:</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    {</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordtype">double</span> decimal_time = time_string.toDouble();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordtype">int</span> hour = decimal_time;</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordtype">int</span> minute = round((decimal_time - hour) * 60);</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        <span class="keywordflow">return</span> QTime();</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;}</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QTime fromString(<span class="keyword">const</span> <span class="keywordtype">char</span>* time_string, Opl::Time::FlightTimeFormat format = Opl::Time::Default)</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;{</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordflow">switch</span> (format) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Default:</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordflow">return</span> QTime::fromString(time_string, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">case</span> Opl::Time::Decimal:</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    {</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keywordtype">double</span> decimal_time = QString(time_string).toDouble();</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keywordtype">int</span> hour = decimal_time;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keywordtype">int</span> minute = round((decimal_time - hour) * 60);</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">return</span> QTime(hour, minute, 0);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">return</span> QTime();</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    }</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> toMinutes(<span class="keyword">const</span> QTime &amp;time) {<span class="keywordflow">return</span> time.hour() * 60 + time.minute();}</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> toMinutes(<span class="keyword">const</span> QString &amp;time_string) {<span class="keywordflow">return</span> toMinutes(fromString(time_string));}</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160; </div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keyword">inline</span> QTime blocktime(<span class="keyword">const</span> QTime &amp;tofb, <span class="keyword">const</span> QTime &amp;tonb)</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    QTime blocktime_out(0, 0); <span class="comment">// initialise return value at midnight</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160; </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordflow">if</span> (tonb &gt; tofb) { <span class="comment">// landing same day</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keywordtype">int</span> block_seconds = tofb.secsTo(tonb);</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        blocktime_out = blocktime_out.addSecs(block_seconds);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    } <span class="keywordflow">else</span> { <span class="comment">// landing next day</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        QTime midnight(0, 0);</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordtype">int</span> seconds = tofb.secsTo(midnight);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        blocktime_out = blocktime_out.addSecs(seconds);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        seconds = midnight.secsTo(tonb);</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        blocktime_out = blocktime_out.addSecs(seconds);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">return</span> blocktime_out;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;}</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keyword">inline</span> QTime blocktime(<span class="keyword">const</span> QString&amp; tofb, <span class="keyword">const</span> QString&amp; tonb)</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;{</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    QTime t_tofb = ATime::fromString(tofb);</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    QTime t_tonb = ATime::fromString(tonb);</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="keywordflow">return</span> blocktime(t_tofb, t_tonb);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;}</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> blockMinutes(<span class="keyword">const</span> QString&amp; tofb, <span class="keyword">const</span> QString&amp; tonb)</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;{</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keyword">const</span> QTime t_tofb = ATime::fromString(tofb);</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keyword">const</span> QTime t_tonb = ATime::fromString(tonb);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordflow">if</span> (t_tofb.isValid() &amp;&amp; t_tonb.isValid()) {</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> tblk = ATime::blocktime(t_tofb, t_tonb);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keywordflow">return</span> ATime::toMinutes(tblk);</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;}</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> blockMinutes(<span class="keyword">const</span> QTime&amp; tofb, <span class="keyword">const</span> QTime&amp; tonb)</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keywordflow">if</span> (tofb.isValid() &amp;&amp; tonb.isValid()) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> tblk = ATime::blocktime(tofb, tonb);</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <span class="keywordflow">return</span> ATime::toMinutes(tblk);</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;}</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code" href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">formatTimeInput</a>(QString user_input)</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;{</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    QTime temp_time; <span class="comment">//empty time object is invalid by default</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="keywordtype">bool</span> contains_seperator = user_input.contains(<span class="charliteral">&#39;:&#39;</span>);</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordflow">if</span> (user_input.length() == 4 &amp;&amp; !contains_seperator) {</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;hhmm&quot;</span>));</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 3 &amp;&amp; !contains_seperator) {</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        <span class="keywordflow">if</span> (user_input.toInt() &lt; 240) { <span class="comment">//Qtime is invalid if time is between 000 and 240 for this case</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;            QString tempstring = user_input.prepend(QStringLiteral(<span class="stringliteral">&quot;0&quot;</span>));</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;            temp_time = QTime::fromString(tempstring, QStringLiteral(<span class="stringliteral">&quot;hhmm&quot;</span>));</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;            temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;Hmm&quot;</span>));</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        }</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 4 &amp;&amp; contains_seperator) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;h:mm&quot;</span>));</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (user_input.length() == 5 &amp;&amp; contains_seperator) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        temp_time = QTime::fromString(user_input, QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    }</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160; </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">auto</span> output = temp_time.toString(QStringLiteral(<span class="stringliteral">&quot;hh:mm&quot;</span>));</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160; </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">if</span> (output.isEmpty()) {</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        DEB &lt;&lt; <span class="stringliteral">&quot;Time input is invalid.&quot;</span>;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    }</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordflow">return</span> output;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;}</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;} <span class="comment">// namespace ATime</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ATIME_H</span></div>
+<div class="ttc" id="anamespace_a_calc_html_ad088e5dd93d1938ff97f88032dc0adec"><div class="ttname"><a href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">ACalc::formatTimeInput</a></div><div class="ttdeci">QString formatTimeInput(QString user_input)</div><div class="ttdoc">ACalc::formatTimeInput verifies user input and formats to hh:mm if the output is not a valid time,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:35</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="anamespace_a_calc_html_a8ac68999097f2e28a3b4bd2709b5b19f"><div class="ttname"><a href="namespace_a_calc.html#a8ac68999097f2e28a3b4bd2709b5b19f">ACalc::blocktime</a></div><div class="ttdeci">QT_DEPRECATED QTime blocktime(QTime tofb, QTime tonb)</div><div class="ttdoc">ACalc::blocktime Calculates Block Time for a given departure and arrival time.</div><div class="ttdef"><b>Definition:</b> acalc.h:43</div></div>
-<div class="ttc" id="anamespace_a_calc_html_ad088e5dd93d1938ff97f88032dc0adec"><div class="ttname"><a href="namespace_a_calc.html#ad088e5dd93d1938ff97f88032dc0adec">ACalc::formatTimeInput</a></div><div class="ttdeci">QString formatTimeInput(QString user_input)</div><div class="ttdoc">ACalc::formatTimeInput verifies user input and formats to hh:mm if the output is not a valid time,...</div><div class="ttdef"><b>Definition:</b> acalc.cpp:34</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e823141bb13a34caac0c96ccd0d33fcf.html">functions</a></li><li class="navelem"><b>atime.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 7 - 9
docs/html/atimer_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/testing/atimer.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -133,18 +133,16 @@ $(document).ready(function(){initNavTree('atimer_8h_source.html',''); initResiza
 <div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;};</div>
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160; </div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#endif // ATIMER_H</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ATIMER_H</span></div>
+<div class="ttc" id="aclass_a_timer_html"><div class="ttname"><a href="class_a_timer.html">ATimer</a></div><div class="ttdoc">The ATimer class provides an easy to use performance timer.</div><div class="ttdef"><b>Definition:</b> atimer.h:36</div></div>
+<div class="ttc" id="aclass_a_timer_html_af7ac842765bee55a3b1b266e3e4c97ba"><div class="ttname"><a href="class_a_timer.html#af7ac842765bee55a3b1b266e3e4c97ba">ATimer::timeNow</a></div><div class="ttdeci">long timeNow()</div><div class="ttdoc">timeNow takes an intermediate timing and returns miliseconds elapsed.</div><div class="ttdef"><b>Definition:</b> atimer.cpp:47</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_timer_html_af7ac842765bee55a3b1b266e3e4c97ba"><div class="ttname"><a href="class_a_timer.html#af7ac842765bee55a3b1b266e3e4c97ba">ATimer::timeNow</a></div><div class="ttdeci">long timeNow()</div><div class="ttdoc">timeNow takes an intermediate timing and returns miliseconds elapsed.</div><div class="ttdef"><b>Definition:</b> atimer.cpp:47</div></div>
-<div class="ttc" id="aclass_a_timer_html"><div class="ttname"><a href="class_a_timer.html">ATimer</a></div><div class="ttdoc">The ATimer class provides an easy to use performance timer.</div><div class="ttdef"><b>Definition:</b> atimer.h:35</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_3513c77e68d0de165c8b48f945306dcb.html">testing</a></li><li class="navelem"><b>atimer.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 7 - 9
docs/html/atranslator_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/classes/atranslator.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -100,18 +100,16 @@ $(document).ready(function(){initNavTree('atranslator_8h_source.html',''); initR
 <div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="keyword">static</span> QTranslator *translator;</div>
 <div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;};</div>
 <div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#endif // ATRANSLATOR_H</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// ATRANSLATOR_H</span></div>
+<div class="ttc" id="aclass_a_translator_html"><div class="ttname"><a href="class_a_translator.html">ATranslator</a></div><div class="ttdoc">The ATranslator class is responsible for managing the QTranslator used for providing localisations....</div><div class="ttdef"><b>Definition:</b> atranslator.h:18</div></div>
+<div class="ttc" id="aclass_a_translator_html_aeb6d08e73db4bf7bdeed793ad8c34d86"><div class="ttname"><a href="class_a_translator.html#aeb6d08e73db4bf7bdeed793ad8c34d86">ATranslator::installTranslator</a></div><div class="ttdeci">static void installTranslator(Opl::Translations language=Opl::Translations::English)</div><div class="ttdoc">Installs a QTranslator with the selected language. Defaults to English. Call this function before con...</div><div class="ttdef"><b>Definition:</b> atranslator.cpp:5</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
-<div class="ttc" id="aclass_a_translator_html_aeb6d08e73db4bf7bdeed793ad8c34d86"><div class="ttname"><a href="class_a_translator.html#aeb6d08e73db4bf7bdeed793ad8c34d86">ATranslator::installTranslator</a></div><div class="ttdeci">static void installTranslator(Opl::Translations language=Opl::Translations::English)</div><div class="ttdoc">Installs a QTranslator with the selected language. Defaults to English. Call this function before con...</div><div class="ttdef"><b>Definition:</b> atranslator.cpp:5</div></div>
-<div class="ttc" id="aclass_a_translator_html"><div class="ttname"><a href="class_a_translator.html">ATranslator</a></div><div class="ttdoc">The ATranslator class is responsible for managing the QTranslator used for providing localisations....</div><div class="ttdef"><b>Definition:</b> atranslator.h:18</div></div>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><b>atranslator.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 47 - 50
docs/html/backupwidget_8h_source.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: src/gui/widgets/backupwidget.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -142,60 +142,57 @@ $(document).ready(function(){initNavTree('backupwidget_8h_source.html',''); init
 <div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_backup_widget.html">   69</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_backup_widget.html">BackupWidget</a> : <span class="keyword">public</span> QWidget</div>
 <div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div>
 <div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    Q_OBJECT</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_backup_widget.html">BackupWidget</a>(QWidget *parent = <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    ~<a class="code" href="class_backup_widget.html">BackupWidget</a>();</div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString <a class="code" href="class_backup_widget.html#a49005440ad357c10769b9abd7be693d2">backupName</a>();</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString <a class="code" href="class_backup_widget.html#a683bff41fedc248a2bf243f5986a0fce">absoluteBackupPath</a>();</div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">private</span> slots:</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordtype">void</span> on_tableView_clicked(<span class="keyword">const</span> QModelIndex &amp;index);</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordtype">void</span> on_createLocalPushButton_clicked();</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordtype">void</span> on_restoreLocalPushButton_clicked();</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordtype">void</span> on_deleteSelectedPushButton_clicked();</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keywordtype">void</span> on_createExternalPushButton_clicked();</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">void</span> on_restoreExternalPushButton_clicked();</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">void</span> on_aboutPushButton_clicked();</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    Ui::BackupWidget *ui;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160; </div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    QStandardItemModel *model;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    QTableView *view;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <a class="code" href="class_a_file_standard_item.html">AFileStandardItem</a> *selectedFileInfo = <span class="keyword">nullptr</span>;  <span class="comment">// Only the first column is necessary for</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;                                                    <span class="comment">// any operation and it is encapsulated in the</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;                                                    <span class="comment">// AFileStandardItem class</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordtype">void</span> refresh();</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160; </div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_backup_widget.html#a6924f3997be9b143472fa1c61365fb2b">changeEvent</a>(QEvent* event) <span class="keyword">override</span>;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;};</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">#endif // BACKUPWIDGET_H</span></div>
-</div><!-- fragment --></div><!-- contents -->
-</div><!-- doc-content -->
-<div class="ttc" id="aclass_backup_widget_html_a49005440ad357c10769b9abd7be693d2"><div class="ttname"><a href="class_backup_widget.html#a49005440ad357c10769b9abd7be693d2">BackupWidget::backupName</a></div><div class="ttdeci">static const QString backupName()</div><div class="ttdoc">Generates a filename for creating a backup.</div><div class="ttdef"><b>Definition:</b> backupwidget.cpp:88</div></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_backup_widget.html">BackupWidget</a>(QWidget *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    ~<a class="code" href="class_backup_widget.html">BackupWidget</a>();</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString <a class="code" href="class_backup_widget.html#a49005440ad357c10769b9abd7be693d2">backupName</a>();</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> QString <a class="code" href="class_backup_widget.html#a683bff41fedc248a2bf243f5986a0fce">absoluteBackupPath</a>();</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160; </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">private</span> slots:</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordtype">void</span> on_tableView_clicked(<span class="keyword">const</span> QModelIndex &amp;index);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordtype">void</span> on_createLocalPushButton_clicked();</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">void</span> on_restoreLocalPushButton_clicked();</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordtype">void</span> on_deleteSelectedPushButton_clicked();</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordtype">void</span> on_createExternalPushButton_clicked();</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordtype">void</span> on_restoreExternalPushButton_clicked();</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keywordtype">void</span> on_aboutPushButton_clicked();</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    Ui::BackupWidget *ui;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    QStandardItemModel *model;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    QTableView *view;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <a class="code" href="class_a_file_standard_item.html">AFileStandardItem</a> *selectedFileInfo = <span class="keyword">nullptr</span>;  <span class="comment">// Only the first column is necessary for</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                                                    <span class="comment">// any operation and it is encapsulated in the</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;                                                    <span class="comment">// AFileStandardItem class</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordtype">void</span> refresh();</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_backup_widget.html#a6924f3997be9b143472fa1c61365fb2b">changeEvent</a>(QEvent* event) <span class="keyword">override</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;};</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// BACKUPWIDGET_H</span></div>
 <div class="ttc" id="aclass_a_file_standard_item_html"><div class="ttname"><a href="class_a_file_standard_item.html">AFileStandardItem</a></div><div class="ttdoc">Simple QStandardItem subclass to encapsulate necessary file info. Using only a QStandardItem would me...</div><div class="ttdef"><b>Definition:</b> backupwidget.h:40</div></div>
-<div class="ttc" id="aclass_backup_widget_html"><div class="ttname"><a href="class_backup_widget.html">BackupWidget</a></div><div class="ttdoc">The BackupWidget is the interface for the user to create and restore backups of the database.</div><div class="ttdef"><b>Definition:</b> backupwidget.h:69</div></div>
-<div class="ttc" id="aclass_backup_widget_html_a683bff41fedc248a2bf243f5986a0fce"><div class="ttname"><a href="class_backup_widget.html#a683bff41fedc248a2bf243f5986a0fce">BackupWidget::absoluteBackupPath</a></div><div class="ttdeci">static const QString absoluteBackupPath()</div><div class="ttdoc">Generates the absolute path for a new local backup file.</div><div class="ttdef"><b>Definition:</b> backupwidget.cpp:80</div></div>
 <div class="ttc" id="aclass_a_standard_paths_html_a43937baa78a53e1427e23f533024221b"><div class="ttname"><a href="class_a_standard_paths.html#a43937baa78a53e1427e23f533024221b">AStandardPaths::asChildOfDir</a></div><div class="ttdeci">static const QString asChildOfDir(Directories location, const QString &amp;filename)</div><div class="ttdoc">Returns a string of the absolute path to directory location concatenated with filename.</div><div class="ttdef"><b>Definition:</b> astandardpaths.cpp:48</div></div>
+<div class="ttc" id="aclass_backup_widget_html"><div class="ttname"><a href="class_backup_widget.html">BackupWidget</a></div><div class="ttdoc">The BackupWidget is the interface for the user to create and restore backups of the database.</div><div class="ttdef"><b>Definition:</b> backupwidget.h:70</div></div>
+<div class="ttc" id="aclass_backup_widget_html_a49005440ad357c10769b9abd7be693d2"><div class="ttname"><a href="class_backup_widget.html#a49005440ad357c10769b9abd7be693d2">BackupWidget::backupName</a></div><div class="ttdeci">static const QString backupName()</div><div class="ttdoc">Generates a filename for creating a backup.</div><div class="ttdef"><b>Definition:</b> backupwidget.cpp:88</div></div>
+<div class="ttc" id="aclass_backup_widget_html_a683bff41fedc248a2bf243f5986a0fce"><div class="ttname"><a href="class_backup_widget.html#a683bff41fedc248a2bf243f5986a0fce">BackupWidget::absoluteBackupPath</a></div><div class="ttdeci">static const QString absoluteBackupPath()</div><div class="ttdoc">Generates the absolute path for a new local backup file.</div><div class="ttdef"><b>Definition:</b> backupwidget.cpp:80</div></div>
 <div class="ttc" id="aclass_backup_widget_html_a6924f3997be9b143472fa1c61365fb2b"><div class="ttname"><a href="class_backup_widget.html#a6924f3997be9b143472fa1c61365fb2b">BackupWidget::changeEvent</a></div><div class="ttdeci">void changeEvent(QEvent *event) override</div><div class="ttdoc">Handles change events, like updating the UI to new localisation.</div><div class="ttdef"><b>Definition:</b> backupwidget.cpp:50</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_99d0482cf009f9d97a0877749b817f19.html">gui</a></li><li class="navelem"><a class="el" href="dir_cc657b4ce13702a9d007a200bde234e1.html">widgets</a></li><li class="navelem"><b>backupwidget.h</b></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 115 - 0
docs/html/class_a_completion_data-members.html

@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>openPilotLog: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="custom_dark_theme.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="icon_main.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">openPilotLog
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_a_completion_data.html',''); initResizable(); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">ACompletionData Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_a_completion_data.html">ACompletionData</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>airportIataIdMap</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>airportIcaoIdMap</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>airportList</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>airportNameIdMap</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>current_state</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_completion_data.html#af476c92d41ac0dce50e098c25e6b035c">init</a>()</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pilotList</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pilotsIdMap</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tailsIdMap</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tailsList</b> (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_completion_data.html#aeccf7bcb927ec5dbf2879c0a345161a4">update</a>()</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>updatePilots</b>() (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>updateTails</b>() (defined in <a class="el" href="class_a_completion_data.html">ACompletionData</a>)</td><td class="entry"><a class="el" href="class_a_completion_data.html">ACompletionData</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 163 - 0
docs/html/class_a_completion_data.html

@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>openPilotLog: ACompletionData Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="custom_dark_theme.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="icon_main.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">openPilotLog
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(document).ready(function(){initNavTree('class_a_completion_data.html',''); initResizable(); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="class_a_completion_data-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">ACompletionData Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>The <a class="el" href="class_a_completion_data.html" title="The ACompletionData class provides data to QCompleters and QHashs used for mapping user input to data...">ACompletionData</a> class provides data to QCompleters and QHashs used for mapping user input to database keys. It retreives the completer targets and mapping data from the database and caches it for fast access without the need to query the database.  
+ <a href="class_a_completion_data.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="acompletiondata_8h_source.html">acompletiondata.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af476c92d41ac0dce50e098c25e6b035c"><td class="memItemLeft" align="right" valign="top"><a id="af476c92d41ac0dce50e098c25e6b035c"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_completion_data.html#af476c92d41ac0dce50e098c25e6b035c">init</a> ()</td></tr>
+<tr class="memdesc:af476c92d41ac0dce50e098c25e6b035c"><td class="mdescLeft">&#160;</td><td class="mdescRight">init Retrieves Data and populates Lists and Maps <br /></td></tr>
+<tr class="separator:af476c92d41ac0dce50e098c25e6b035c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeccf7bcb927ec5dbf2879c0a345161a4"><td class="memItemLeft" align="right" valign="top"><a id="aeccf7bcb927ec5dbf2879c0a345161a4"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_completion_data.html#aeccf7bcb927ec5dbf2879c0a345161a4">update</a> ()</td></tr>
+<tr class="memdesc:aeccf7bcb927ec5dbf2879c0a345161a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">updates data from the user modifiable tables <br /></td></tr>
+<tr class="separator:aeccf7bcb927ec5dbf2879c0a345161a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16956446facb275fa24961b2effdd85f"><td class="memItemLeft" align="right" valign="top"><a id="a16956446facb275fa24961b2effdd85f"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>updateTails</b> ()</td></tr>
+<tr class="separator:a16956446facb275fa24961b2effdd85f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b599bce6e467d44653ed7441b226b22"><td class="memItemLeft" align="right" valign="top"><a id="a8b599bce6e467d44653ed7441b226b22"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>updatePilots</b> ()</td></tr>
+<tr class="separator:a8b599bce6e467d44653ed7441b226b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:af4cc9aa54dd7bf9814af90fd5fd36d16"><td class="memItemLeft" align="right" valign="top"><a id="af4cc9aa54dd7bf9814af90fd5fd36d16"></a>
+QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>pilotsIdMap</b></td></tr>
+<tr class="separator:af4cc9aa54dd7bf9814af90fd5fd36d16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa72061810010cad858efc7619bce8abd"><td class="memItemLeft" align="right" valign="top"><a id="aa72061810010cad858efc7619bce8abd"></a>
+QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>tailsIdMap</b></td></tr>
+<tr class="separator:aa72061810010cad858efc7619bce8abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a79dd0d7f80a5116a308ced917fc95196"><td class="memItemLeft" align="right" valign="top"><a id="a79dd0d7f80a5116a308ced917fc95196"></a>
+QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>airportIcaoIdMap</b></td></tr>
+<tr class="separator:a79dd0d7f80a5116a308ced917fc95196"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a504a3efc00d3dc4e184927fe291c00aa"><td class="memItemLeft" align="right" valign="top"><a id="a504a3efc00d3dc4e184927fe291c00aa"></a>
+QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>airportIataIdMap</b></td></tr>
+<tr class="separator:a504a3efc00d3dc4e184927fe291c00aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f3c332e66663a75da8bebe2f91431b2"><td class="memItemLeft" align="right" valign="top"><a id="a1f3c332e66663a75da8bebe2f91431b2"></a>
+QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>airportNameIdMap</b></td></tr>
+<tr class="separator:a1f3c332e66663a75da8bebe2f91431b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9965af9d815b2f22061b311677cc1282"><td class="memItemLeft" align="right" valign="top"><a id="a9965af9d815b2f22061b311677cc1282"></a>
+QStringList&#160;</td><td class="memItemRight" valign="bottom"><b>pilotList</b></td></tr>
+<tr class="separator:a9965af9d815b2f22061b311677cc1282"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a827b787c6dadfeedb50c3685d05d27f7"><td class="memItemLeft" align="right" valign="top"><a id="a827b787c6dadfeedb50c3685d05d27f7"></a>
+QStringList&#160;</td><td class="memItemRight" valign="bottom"><b>tailsList</b></td></tr>
+<tr class="separator:a827b787c6dadfeedb50c3685d05d27f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7817ca029a70a5cc1e66b7fd345d745"><td class="memItemLeft" align="right" valign="top"><a id="ae7817ca029a70a5cc1e66b7fd345d745"></a>
+QStringList&#160;</td><td class="memItemRight" valign="bottom"><b>airportList</b></td></tr>
+<tr class="separator:ae7817ca029a70a5cc1e66b7fd345d745"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a612bf846e0d12eeae323baba191dcf75"><td class="memItemLeft" align="right" valign="top"><a id="a612bf846e0d12eeae323baba191dcf75"></a>
+<a class="el" href="struct_user_data_state.html">UserDataState</a>&#160;</td><td class="memItemRight" valign="bottom"><b>current_state</b></td></tr>
+<tr class="separator:a612bf846e0d12eeae323baba191dcf75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="class_a_completion_data.html" title="The ACompletionData class provides data to QCompleters and QHashs used for mapping user input to data...">ACompletionData</a> class provides data to QCompleters and QHashs used for mapping user input to database keys. It retreives the completer targets and mapping data from the database and caches it for fast access without the need to query the database. </p>
+</div><hr/>The documentation for this class was generated from the following files:<ul>
+<li>src/classes/<a class="el" href="acompletiondata_8h_source.html">acompletiondata.h</a></li>
+<li>src/classes/acompletiondata.cpp</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="class_a_completion_data.html">ACompletionData</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 16 - 0
docs/html/class_a_completion_data.js

@@ -0,0 +1,16 @@
+var class_a_completion_data =
+[
+    [ "init", "class_a_completion_data.html#af476c92d41ac0dce50e098c25e6b035c", null ],
+    [ "update", "class_a_completion_data.html#aeccf7bcb927ec5dbf2879c0a345161a4", null ],
+    [ "updatePilots", "class_a_completion_data.html#a8b599bce6e467d44653ed7441b226b22", null ],
+    [ "updateTails", "class_a_completion_data.html#a16956446facb275fa24961b2effdd85f", null ],
+    [ "airportIataIdMap", "class_a_completion_data.html#a504a3efc00d3dc4e184927fe291c00aa", null ],
+    [ "airportIcaoIdMap", "class_a_completion_data.html#a79dd0d7f80a5116a308ced917fc95196", null ],
+    [ "airportList", "class_a_completion_data.html#ae7817ca029a70a5cc1e66b7fd345d745", null ],
+    [ "airportNameIdMap", "class_a_completion_data.html#a1f3c332e66663a75da8bebe2f91431b2", null ],
+    [ "current_state", "class_a_completion_data.html#a612bf846e0d12eeae323baba191dcf75", null ],
+    [ "pilotList", "class_a_completion_data.html#a9965af9d815b2f22061b311677cc1282", null ],
+    [ "pilotsIdMap", "class_a_completion_data.html#af4cc9aa54dd7bf9814af90fd5fd36d16", null ],
+    [ "tailsIdMap", "class_a_completion_data.html#aa72061810010cad858efc7619bce8abd", null ],
+    [ "tailsList", "class_a_completion_data.html#a827b787c6dadfeedb50c3685d05d27f7", null ]
+];

+ 22 - 23
docs/html/class_a_database-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('class_a_database.html',''); initResiza
 <table class="directory">
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ADatabase</b>(const ADatabase &amp;)=delete (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">clear</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a652472c747c0ce68940b17c9c23666dd">commit</a>(AEntry entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a7d57d7696814bd013fa35e068ad909c8">commit</a>(const AEntry &amp;entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#aa6080200aa3f229251480bc416755fed">connect</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7">connectionReset</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99">createBackup</a>(const QString &amp;dest_file)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
@@ -104,7 +104,7 @@ $(document).ready(function(){initNavTree('class_a_database.html',''); initResiza
   <tr><td class="entry"><a class="el" href="class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911">dataBaseUpdated</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a1c026e7784b03fc5822077c7d0071330">dbRevision</a>() const</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#abc461aaa66304ca638e546f67a694935">disconnect</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6">exists</a>(AEntry entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12">exists</a>(const AEntry &amp;entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>exists</b>(DataPosition data_position) (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a">getAircraftEntry</a>(RowId_T row_id)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#a89de409c1828125363f46f384df47359">getCompletionList</a>(ADatabaseTarget target)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
@@ -113,8 +113,8 @@ $(document).ready(function(){initNavTree('class_a_database.html',''); initResiza
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#afc39f6136fc822e0649964fa22b84bf9">getEntryData</a>(DataPosition data_position)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a">getFlightEntry</a>(RowId_T row_id)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">getForeignKeyConstraints</a>(RowId_T foreign_row_id, ADatabaseTable target)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a5dba46567089112b28b16aaf985af0ba">getIdMap</a>(ADatabaseTarget target)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#abc8c302d07f5f14cf246c8b2fd1ba366">getLastEntry</a>(ADatabaseTable table)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#afaaaaf276d832833b0865db86de51ae5">getIdMap</a>(ADatabaseTarget target)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a0497bb70998cea6cd60fa893880c9555">getLastEntry</a>(ADatabaseTable table)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#ab99ccce4c67591f5f58832c26cf93fc8">getMinimumDatabaseRevision</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a426026d641a594863995ec5db8312259">getPilotEntry</a>(RowId_T row_id)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#a8b38405b535d603cce2b36ca2d56368f">getTable</a>(ADatabaseTable table_name)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
@@ -122,27 +122,26 @@ $(document).ready(function(){initNavTree('class_a_database.html',''); initResiza
   <tr><td class="entry"><a class="el" href="class_a_database.html#a3deb081c5abe832a65e1792c106eb083">getTableNames</a>() const</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a356df159542705635dc3898d90682039">getTailEntry</a>(RowId_T row_id)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">getTemplateTableNames</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">getUserTableNames</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a4ecb6d0c9b3813c90b3165c993e69ad5">insert</a>(AEntry new_entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>instance</b>() (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">lastError</a></td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const ADatabase &amp;)=delete (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a4903909a28daed708e1a335d3be4f57b">remove</a>(AEntry entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">removeMany</a>(QList&lt; DataPosition &gt;)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">resolveForeignPilot</a>(RowId_T foreign_key)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">resolveForeignTail</a>(RowId_T foreign_key)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">restoreBackup</a>(const QString &amp;backup_file)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">sqliteVersion</a>() const</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_database.html#a910bc0c1717e9301911343c082aa1aaa">update</a>(AEntry updated_entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a3c0fdc84000ad397d61f0efabd032194">updateLayout</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5">getUserDataState</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f">getUserTableNames</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#aa69dcdf174e48653cdf1bef473dc5623">insert</a>(const AEntry &amp;new_entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>instance</b>() (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">lastError</a></td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const ADatabase &amp;)=delete (defined in <a class="el" href="class_a_database.html">ADatabase</a>)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a4deda96cfb75518f98a4a0c9996920eb">remove</a>(const AEntry &amp;entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">removeMany</a>(QList&lt; DataPosition &gt;)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a4640a4348dad468a0ff65bad05b07227">resolveForeignPilot</a>(RowId_T foreign_key)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d">resolveForeignTail</a>(RowId_T foreign_key)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#a0bda52064f005f1463e56b60cd23b164">restoreBackup</a>(const QString &amp;backup_file)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#a491415273a771dd7ea41452c331a34b0">sqliteVersion</a>() const</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_database.html#ac73208ba1a70af19590d53f260e7cb8c">update</a>(const AEntry &amp;updated_entry)</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_database.html#a3c0fdc84000ad397d61f0efabd032194">updateLayout</a>()</td><td class="entry"><a class="el" href="class_a_database.html">ADatabase</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 58 - 57
docs/html/class_a_database.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ADatabase Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -153,10 +153,10 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <tr class="memitem:a2a43936d3ae28993f9f7eda0fdf4664d"><td class="memItemLeft" align="right" valign="top">QVector&lt; QVariant &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">customQuery</a> (QString statement, int return_values)</td></tr>
 <tr class="memdesc:a2a43936d3ae28993f9f7eda0fdf4664d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Can be used to send a complex query to the database.  <a href="class_a_database.html#a2a43936d3ae28993f9f7eda0fdf4664d">More...</a><br /></td></tr>
 <tr class="separator:a2a43936d3ae28993f9f7eda0fdf4664d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a24f938e4c8d20afddb5e5651e041a7a6"><td class="memItemLeft" align="right" valign="top"><a id="a24f938e4c8d20afddb5e5651e041a7a6"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6">exists</a> (<a class="el" href="class_a_entry.html">AEntry</a> entry)</td></tr>
-<tr class="memdesc:a24f938e4c8d20afddb5e5651e041a7a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entry exists in the database, based on position data. <br /></td></tr>
-<tr class="separator:a24f938e4c8d20afddb5e5651e041a7a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c5a017dccf7bf5d4dcbfc29c8d20e12"><td class="memItemLeft" align="right" valign="top"><a id="a0c5a017dccf7bf5d4dcbfc29c8d20e12"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12">exists</a> (const <a class="el" href="class_a_entry.html">AEntry</a> &amp;entry)</td></tr>
+<tr class="memdesc:a0c5a017dccf7bf5d4dcbfc29c8d20e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if an entry exists in the database, based on position data. <br /></td></tr>
+<tr class="separator:a0c5a017dccf7bf5d4dcbfc29c8d20e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a22ce31ddea49c144d85c05658f49fec5"><td class="memItemLeft" align="right" valign="top"><a id="a22ce31ddea49c144d85c05658f49fec5"></a>
 bool&#160;</td><td class="memItemRight" valign="bottom"><b>exists</b> (<a class="el" href="struct_data_position.html">DataPosition</a> data_position)</td></tr>
 <tr class="separator:a22ce31ddea49c144d85c05658f49fec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -164,22 +164,22 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>exists</b> (<a class=
 bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a73382f7e897f8381371cd3da458f72cc">clear</a> ()</td></tr>
 <tr class="memdesc:a73382f7e897f8381371cd3da458f72cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">clear resets the database, i.e. deletes all content in the tables containing userdata (pilots, flights, tails) <br /></td></tr>
 <tr class="separator:a73382f7e897f8381371cd3da458f72cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a652472c747c0ce68940b17c9c23666dd"><td class="memItemLeft" align="right" valign="top"><a id="a652472c747c0ce68940b17c9c23666dd"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a652472c747c0ce68940b17c9c23666dd">commit</a> (<a class="el" href="class_a_entry.html">AEntry</a> entry)</td></tr>
-<tr class="memdesc:a652472c747c0ce68940b17c9c23666dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">commits an entry to the database, calls either insert or update, based on position data <br /></td></tr>
-<tr class="separator:a652472c747c0ce68940b17c9c23666dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4ecb6d0c9b3813c90b3165c993e69ad5"><td class="memItemLeft" align="right" valign="top"><a id="a4ecb6d0c9b3813c90b3165c993e69ad5"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a4ecb6d0c9b3813c90b3165c993e69ad5">insert</a> (<a class="el" href="class_a_entry.html">AEntry</a> new_entry)</td></tr>
-<tr class="memdesc:a4ecb6d0c9b3813c90b3165c993e69ad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create new entry in the databse based on UserInput. <br /></td></tr>
-<tr class="separator:a4ecb6d0c9b3813c90b3165c993e69ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a910bc0c1717e9301911343c082aa1aaa"><td class="memItemLeft" align="right" valign="top"><a id="a910bc0c1717e9301911343c082aa1aaa"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a910bc0c1717e9301911343c082aa1aaa">update</a> (<a class="el" href="class_a_entry.html">AEntry</a> updated_entry)</td></tr>
-<tr class="memdesc:a910bc0c1717e9301911343c082aa1aaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates entry in database from existing entry tweaked by the user. <br /></td></tr>
-<tr class="separator:a910bc0c1717e9301911343c082aa1aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4903909a28daed708e1a335d3be4f57b"><td class="memItemLeft" align="right" valign="top"><a id="a4903909a28daed708e1a335d3be4f57b"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a4903909a28daed708e1a335d3be4f57b">remove</a> (<a class="el" href="class_a_entry.html">AEntry</a> entry)</td></tr>
-<tr class="memdesc:a4903909a28daed708e1a335d3be4f57b"><td class="mdescLeft">&#160;</td><td class="mdescRight">deletes an entry from the database. <br /></td></tr>
-<tr class="separator:a4903909a28daed708e1a335d3be4f57b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d57d7696814bd013fa35e068ad909c8"><td class="memItemLeft" align="right" valign="top"><a id="a7d57d7696814bd013fa35e068ad909c8"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a7d57d7696814bd013fa35e068ad909c8">commit</a> (const <a class="el" href="class_a_entry.html">AEntry</a> &amp;entry)</td></tr>
+<tr class="memdesc:a7d57d7696814bd013fa35e068ad909c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">commits an entry to the database, calls either insert or update, based on position data <br /></td></tr>
+<tr class="separator:a7d57d7696814bd013fa35e068ad909c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa69dcdf174e48653cdf1bef473dc5623"><td class="memItemLeft" align="right" valign="top"><a id="aa69dcdf174e48653cdf1bef473dc5623"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#aa69dcdf174e48653cdf1bef473dc5623">insert</a> (const <a class="el" href="class_a_entry.html">AEntry</a> &amp;new_entry)</td></tr>
+<tr class="memdesc:aa69dcdf174e48653cdf1bef473dc5623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create new entry in the databse based on UserInput. <br /></td></tr>
+<tr class="separator:aa69dcdf174e48653cdf1bef473dc5623"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac73208ba1a70af19590d53f260e7cb8c"><td class="memItemLeft" align="right" valign="top"><a id="ac73208ba1a70af19590d53f260e7cb8c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#ac73208ba1a70af19590d53f260e7cb8c">update</a> (const <a class="el" href="class_a_entry.html">AEntry</a> &amp;updated_entry)</td></tr>
+<tr class="memdesc:ac73208ba1a70af19590d53f260e7cb8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates entry in database from existing entry tweaked by the user. <br /></td></tr>
+<tr class="separator:ac73208ba1a70af19590d53f260e7cb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4deda96cfb75518f98a4a0c9996920eb"><td class="memItemLeft" align="right" valign="top"><a id="a4deda96cfb75518f98a4a0c9996920eb"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a4deda96cfb75518f98a4a0c9996920eb">remove</a> (const <a class="el" href="class_a_entry.html">AEntry</a> &amp;entry)</td></tr>
+<tr class="memdesc:a4deda96cfb75518f98a4a0c9996920eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">deletes an entry from the database. <br /></td></tr>
+<tr class="separator:a4deda96cfb75518f98a4a0c9996920eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a863d30e9e3a7c14adfe72787363618c8"><td class="memItemLeft" align="right" valign="top"><a id="a863d30e9e3a7c14adfe72787363618c8"></a>
 bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a863d30e9e3a7c14adfe72787363618c8">removeMany</a> (QList&lt; <a class="el" href="struct_data_position.html">DataPosition</a> &gt;)</td></tr>
 <tr class="memdesc:a863d30e9e3a7c14adfe72787363618c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">deletes a list of entries from the database. Optimised for speed when deleting many entries. <br /></td></tr>
@@ -212,13 +212,14 @@ RowData_T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href=
 const QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a89de409c1828125363f46f384df47359">getCompletionList</a> (ADatabaseTarget target)</td></tr>
 <tr class="memdesc:a89de409c1828125363f46f384df47359"><td class="mdescLeft">&#160;</td><td class="mdescRight">getCompletionList returns a QStringList of values for a QCompleter based on database values <br /></td></tr>
 <tr class="separator:a89de409c1828125363f46f384df47359"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5dba46567089112b28b16aaf985af0ba"><td class="memItemLeft" align="right" valign="top">const QMap&lt; QString, RowId_T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a5dba46567089112b28b16aaf985af0ba">getIdMap</a> (ADatabaseTarget target)</td></tr>
-<tr class="memdesc:a5dba46567089112b28b16aaf985af0ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a QMap&lt;QString, RowId_t&gt; of a human-readable database value and its row id. Used in the Dialogs to map user input to unique database entries.  <a href="class_a_database.html#a5dba46567089112b28b16aaf985af0ba">More...</a><br /></td></tr>
-<tr class="separator:a5dba46567089112b28b16aaf985af0ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc8c302d07f5f14cf246c8b2fd1ba366"><td class="memItemLeft" align="right" valign="top"><a id="abc8c302d07f5f14cf246c8b2fd1ba366"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#abc8c302d07f5f14cf246c8b2fd1ba366">getLastEntry</a> (ADatabaseTable table)</td></tr>
-<tr class="memdesc:abc8c302d07f5f14cf246c8b2fd1ba366"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the ROWID for the newest entry in the respective database. <br /></td></tr>
-<tr class="separator:abc8c302d07f5f14cf246c8b2fd1ba366"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaaaaf276d832833b0865db86de51ae5"><td class="memItemLeft" align="right" valign="top"><a id="afaaaaf276d832833b0865db86de51ae5"></a>
+const QHash&lt; RowId_T, QString &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#afaaaaf276d832833b0865db86de51ae5">getIdMap</a> (ADatabaseTarget target)</td></tr>
+<tr class="memdesc:afaaaaf276d832833b0865db86de51ae5"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a QHash of a human-readable database value and its row id. Used in the Dialogs to map user input to unique database entries. <br /></td></tr>
+<tr class="separator:afaaaaf276d832833b0865db86de51ae5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0497bb70998cea6cd60fa893880c9555"><td class="memItemLeft" align="right" valign="top"><a id="a0497bb70998cea6cd60fa893880c9555"></a>
+RowId_T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a0497bb70998cea6cd60fa893880c9555">getLastEntry</a> (ADatabaseTable table)</td></tr>
+<tr class="memdesc:a0497bb70998cea6cd60fa893880c9555"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the ROWID for the newest entry in the respective database. <br /></td></tr>
+<tr class="separator:a0497bb70998cea6cd60fa893880c9555"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0f88e121d421043f35e321d5dc49ba19"><td class="memItemLeft" align="right" valign="top"><a id="a0f88e121d421043f35e321d5dc49ba19"></a>
 QList&lt; RowId_T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a0f88e121d421043f35e321d5dc49ba19">getForeignKeyConstraints</a> (RowId_T foreign_row_id, ADatabaseTable target)</td></tr>
 <tr class="memdesc:a0f88e121d421043f35e321d5dc49ba19"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a list of ROWID's in the flights table for which foreign key constraints exist. <br /></td></tr>
@@ -253,6 +254,9 @@ QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hre
 QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#ad688f0e48bea4879a81e17a584f189b1">getTemplateTableNames</a> ()</td></tr>
 <tr class="memdesc:ad688f0e48bea4879a81e17a584f189b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">getTemplateTableNames returns a list of the table names of tables that contain template data (aiports, aircraft,..) <br /></td></tr>
 <tr class="separator:ad688f0e48bea4879a81e17a584f189b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9da290c8488b35196ce4e49c4cfbe9f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_user_data_state.html">UserDataState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5">getUserDataState</a> ()</td></tr>
+<tr class="memdesc:a9da290c8488b35196ce4e49c4cfbe9f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">getUserDataState returns a struct containing the current amount of entries in the tails and pilots tables.  <a href="class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5">More...</a><br /></td></tr>
+<tr class="separator:a9da290c8488b35196ce4e49c4cfbe9f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
@@ -270,7 +274,7 @@ static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
 <tr class="memitem:a88c8cb3d573d46c1ee8e5af61cf63224"><td class="memItemLeft" align="right" valign="top">QSqlError&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">lastError</a></td></tr>
-<tr class="memdesc:a88c8cb3d573d46c1ee8e5af61cf63224"><td class="mdescLeft">&#160;</td><td class="mdescRight">lastError extends QSqlError. Holds information about the last error that ocurred during a SQL operation. If the error type is QSqlError::UnknownError, the error is related to data from the database (entry not found,...), otherwise the error is related to SQL execution. In this case error.type() provides further information.  <a href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">More...</a><br /></td></tr>
+<tr class="memdesc:a88c8cb3d573d46c1ee8e5af61cf63224"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds information about the last error that ocurred during a SQL operation. If the error type is QSqlError::UnknownError, the error is related to data from the database (entry not found,...), otherwise the error is related to SQL execution. In this case error.type() provides further information.  <a href="class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224">More...</a><br /></td></tr>
 <tr class="separator:a88c8cb3d573d46c1ee8e5af61cf63224"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ae1da0311f588fd269dec80389aea8644"><td class="memItemLeft" align="right" valign="top"><a id="ae1da0311f588fd269dec80389aea8644"></a>
 const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFile</b></td></tr>
@@ -387,7 +391,7 @@ const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFi
 </div><div class="memdoc">
 
 <p>Return a summary of a database. </p>
-<p>Creates a summary of the database giving a quick overview of the relevant contents. The function runs several specialised SQL queries to create a QMap&lt;ADatabaseSummaryKey, QString&gt; containing Total Flight Time, Number of unique aircraft and pilots, as well as the date of last flight. Uses a temporary database connection separate from the default connection in order to not tamper with the currently active database connection. </p>
+<p>Creates a summary of the database giving a quick overview of the relevant contents. The function runs several specialised SQL queries to create a QHash&lt;ADatabaseSummaryKey, QString&gt; containing Total Flight Time, Number of unique aircraft and pilots, as well as the date of last flight. Uses a temporary database connection separate from the default connection in order to not tamper with the currently active database connection. </p>
 
 </div>
 </div>
@@ -451,27 +455,6 @@ const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFi
 <p>retreives a flight entry from the database. </p>
 <p>This function is a wrapper for DataBase::getEntry(DataPosition), where the table is already set and which returns an <a class="el" href="class_a_flight_entry.html">AFlightEntry</a> instead of an <a class="el" href="class_a_entry.html" title="The Entry class encapsulates table metadata(table name, row id) and data for new and existing entries...">AEntry</a>. It allows for easy access to a flight entry with only the RowId required as input. </p>
 
-</div>
-</div>
-<a id="a5dba46567089112b28b16aaf985af0ba"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5dba46567089112b28b16aaf985af0ba">&#9670;&nbsp;</a></span>getIdMap()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const QMap&lt; QString, RowId_T &gt; ADatabase::getIdMap </td>
-          <td>(</td>
-          <td class="paramtype">ADatabaseTarget&#160;</td>
-          <td class="paramname"><em>target</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>returns a QMap&lt;QString, RowId_t&gt; of a human-readable database value and its row id. Used in the Dialogs to map user input to unique database entries. </p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>What is this QString semantically? As i understand its a "QueryResult" QVariant cast to QString </dd></dl>
-
 </div>
 </div>
 <a id="a426026d641a594863995ec5db8312259"></a>
@@ -535,6 +518,26 @@ const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFi
 <p>retreives a TailEntry from the database. </p>
 <p>This function is a wrapper for DataBase::getEntry(DataPosition), where the table is already set and which returns a TailEntry instead of an Entry. It allows for easy access to a tail entry with only the RowId required as input. </p>
 
+</div>
+</div>
+<a id="a9da290c8488b35196ce4e49c4cfbe9f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9da290c8488b35196ce4e49c4cfbe9f5">&#9670;&nbsp;</a></span>getUserDataState()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="struct_user_data_state.html">UserDataState</a> ADatabase::getUserDataState </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>getUserDataState returns a struct containing the current amount of entries in the tails and pilots tables. </p>
+<dl class="section return"><dt>Returns</dt><dd></dd></dl>
+
 </div>
 </div>
 <a id="a4640a4348dad468a0ff65bad05b07227"></a>
@@ -638,7 +641,7 @@ const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFi
       </table>
 </div><div class="memdoc">
 
-<p>lastError extends QSqlError. Holds information about the last error that ocurred during a SQL operation. If the error type is QSqlError::UnknownError, the error is related to data from the database (entry not found,...), otherwise the error is related to SQL execution. In this case error.type() provides further information. </p>
+<p>Holds information about the last error that ocurred during a SQL operation. If the error type is QSqlError::UnknownError, the error is related to data from the database (entry not found,...), otherwise the error is related to SQL execution. In this case error.type() provides further information. </p>
 <p>If the error type is QSqlError::NoError, the last executed database query was successful. </p>
 
 </div>
@@ -653,9 +656,7 @@ const QFileInfo&#160;</td><td class="memItemRight" valign="bottom"><b>databaseFi
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_database.html">ADatabase</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 8 - 7
docs/html/class_a_database.js

@@ -2,7 +2,7 @@ var class_a_database =
 [
     [ "ADatabase", "class_a_database.html#aad08b473425d508107bc6c872cb53334", null ],
     [ "clear", "class_a_database.html#a73382f7e897f8381371cd3da458f72cc", null ],
-    [ "commit", "class_a_database.html#a652472c747c0ce68940b17c9c23666dd", null ],
+    [ "commit", "class_a_database.html#a7d57d7696814bd013fa35e068ad909c8", null ],
     [ "connect", "class_a_database.html#aa6080200aa3f229251480bc416755fed", null ],
     [ "connectionReset", "class_a_database.html#a0f0bffbb6cdd79975b7b5ca6c0db31a7", null ],
     [ "createBackup", "class_a_database.html#a5ab838a62a83974f9e40c62f66adfa99", null ],
@@ -12,7 +12,7 @@ var class_a_database =
     [ "dataBaseUpdated", "class_a_database.html#a5ed8c010ccc022687ce903cfde8ae911", null ],
     [ "dbRevision", "class_a_database.html#a1c026e7784b03fc5822077c7d0071330", null ],
     [ "disconnect", "class_a_database.html#abc461aaa66304ca638e546f67a694935", null ],
-    [ "exists", "class_a_database.html#a24f938e4c8d20afddb5e5651e041a7a6", null ],
+    [ "exists", "class_a_database.html#a0c5a017dccf7bf5d4dcbfc29c8d20e12", null ],
     [ "exists", "class_a_database.html#a22ce31ddea49c144d85c05658f49fec5", null ],
     [ "getAircraftEntry", "class_a_database.html#ae0a3c9273431195df6295b9da24b3a3a", null ],
     [ "getCompletionList", "class_a_database.html#a89de409c1828125363f46f384df47359", null ],
@@ -21,24 +21,25 @@ var class_a_database =
     [ "getEntryData", "class_a_database.html#afc39f6136fc822e0649964fa22b84bf9", null ],
     [ "getFlightEntry", "class_a_database.html#a7bb44738362582e4f54f68e3aa30d40a", null ],
     [ "getForeignKeyConstraints", "class_a_database.html#a0f88e121d421043f35e321d5dc49ba19", null ],
-    [ "getIdMap", "class_a_database.html#a5dba46567089112b28b16aaf985af0ba", null ],
-    [ "getLastEntry", "class_a_database.html#abc8c302d07f5f14cf246c8b2fd1ba366", null ],
+    [ "getIdMap", "class_a_database.html#afaaaaf276d832833b0865db86de51ae5", null ],
+    [ "getLastEntry", "class_a_database.html#a0497bb70998cea6cd60fa893880c9555", null ],
     [ "getPilotEntry", "class_a_database.html#a426026d641a594863995ec5db8312259", null ],
     [ "getTable", "class_a_database.html#a8b38405b535d603cce2b36ca2d56368f", null ],
     [ "getTableColumns", "class_a_database.html#a9c0dcd8c35087c8256b75d8aafa64880", null ],
     [ "getTableNames", "class_a_database.html#a3deb081c5abe832a65e1792c106eb083", null ],
     [ "getTailEntry", "class_a_database.html#a356df159542705635dc3898d90682039", null ],
     [ "getTemplateTableNames", "class_a_database.html#ad688f0e48bea4879a81e17a584f189b1", null ],
+    [ "getUserDataState", "class_a_database.html#a9da290c8488b35196ce4e49c4cfbe9f5", null ],
     [ "getUserTableNames", "class_a_database.html#a692d7ba3abc763ee7c0d1a47236f021f", null ],
-    [ "insert", "class_a_database.html#a4ecb6d0c9b3813c90b3165c993e69ad5", null ],
+    [ "insert", "class_a_database.html#aa69dcdf174e48653cdf1bef473dc5623", null ],
     [ "operator=", "class_a_database.html#a3c3e1c6b74a9e92f26f7118a6a130a64", null ],
-    [ "remove", "class_a_database.html#a4903909a28daed708e1a335d3be4f57b", null ],
+    [ "remove", "class_a_database.html#a4deda96cfb75518f98a4a0c9996920eb", null ],
     [ "removeMany", "class_a_database.html#a863d30e9e3a7c14adfe72787363618c8", null ],
     [ "resolveForeignPilot", "class_a_database.html#a4640a4348dad468a0ff65bad05b07227", null ],
     [ "resolveForeignTail", "class_a_database.html#a5878bcd4bc19e4c3fc5275ca7252860d", null ],
     [ "restoreBackup", "class_a_database.html#a0bda52064f005f1463e56b60cd23b164", null ],
     [ "sqliteVersion", "class_a_database.html#a491415273a771dd7ea41452c331a34b0", null ],
-    [ "update", "class_a_database.html#a910bc0c1717e9301911343c082aa1aaa", null ],
+    [ "update", "class_a_database.html#ac73208ba1a70af19590d53f260e7cb8c", null ],
     [ "updateLayout", "class_a_database.html#a3c0fdc84000ad397d61f0efabd032194", null ],
     [ "databaseFile", "class_a_database.html#ae1da0311f588fd269dec80389aea8644", null ],
     [ "lastError", "class_a_database.html#a88c8cb3d573d46c1ee8e5af61cf63224", null ]

+ 4 - 6
docs/html/class_a_database_error-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,9 +99,7 @@ $(document).ready(function(){initNavTree('class_a_database_error.html',''); init
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 5 - 8
docs/html/class_a_database_error.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ADatabaseError Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -116,9 +116,8 @@ QString&#160;</td><td class="memItemRight" valign="bottom"><b>text</b> () const<
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Custom Database Error derived from QSqlError. Extends text() adding "Database Error: " before the text. Errors that are related to SQL are assigned their respective error codes. Errors that occur with data in the database are handled with the error code "opl" and QSqlError::UnknownError. </p>
-</div><hr/>The documentation for this class was generated from the following files:<ul>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>src/database/<a class="el" href="adatabase_8h_source.html">adatabase.h</a></li>
-<li>src/database/adatabase.cpp</li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
@@ -126,9 +125,7 @@ QString&#160;</td><td class="memItemRight" valign="bottom"><b>text</b> () const<
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_database_error.html">ADatabaseError</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 12 - 9
docs/html/class_a_date-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -90,18 +90,21 @@ $(document).ready(function(){initNavTree('class_a_date.html',''); initResizable(
 
 <p>This is the complete list of members for <a class="el" href="class_a_date.html">ADate</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_a_date.html#aa1c79d62d44ab503ccbc984f6f681a2d">formatInput</a>(QString user_input, Opl::Date::ADateFormat format)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getDisplayNames</b>() (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getFormatString</b>(Opl::Date::ADateFormat format) (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addSeperators</b>(QString &amp;io_user_input, const Opl::Date::ADateFormat &amp;format) (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>containsSeperator</b>(const QString &amp;user_input) (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDisplayNames</b>() (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getFormatString</b>(Opl::Date::ADateFormat format) (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_date.html#ac184d215183b290f4cdacde835fd5938">padCentury</a>(QString &amp;io_user_input, Opl::Date::ADateFormat format)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_date.html#ac73a41e8dac47a3a2a3fcef5b3d19eee">padZeroes</a>(QString &amp;io_user_input)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_date.html#ad678a1eed52b81d7af4d4e31ffad2c1e">parseInput</a>(QString &amp;io_user_input, Opl::Date::ADateFormat format)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">toString</a>(const QDate &amp;date, Opl::Date::ADateFormat format=Opl::Date::ADateFormat::ISODate)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tryToFix</b>(QString &amp;io_user_input, Opl::Date::ADateFormat format) (defined in <a class="el" href="class_a_date.html">ADate</a>)</td><td class="entry"><a class="el" href="class_a_date.html">ADate</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 30 - 15
docs/html/class_a_date.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ADate Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -98,9 +98,26 @@ $(document).ready(function(){initNavTree('class_a_date.html',''); initResizable(
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:aa1c79d62d44ab503ccbc984f6f681a2d"><td class="memItemLeft" align="right" valign="top">static QDate&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_date.html#aa1c79d62d44ab503ccbc984f6f681a2d">formatInput</a> (QString user_input, Opl::Date::ADateFormat format)</td></tr>
-<tr class="memdesc:aa1c79d62d44ab503ccbc984f6f681a2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">formatInput takes a user-provided input and tries to convert it to a QDate.  <a href="class_a_date.html#aa1c79d62d44ab503ccbc984f6f681a2d">More...</a><br /></td></tr>
-<tr class="separator:aa1c79d62d44ab503ccbc984f6f681a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad678a1eed52b81d7af4d4e31ffad2c1e"><td class="memItemLeft" align="right" valign="top">static QDate&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_date.html#ad678a1eed52b81d7af4d4e31ffad2c1e">parseInput</a> (QString &amp;io_user_input, Opl::Date::ADateFormat format)</td></tr>
+<tr class="memdesc:ad678a1eed52b81d7af4d4e31ffad2c1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">takes a user-provided input and tries to convert it to a (valid) QDate.  <a href="class_a_date.html#ad678a1eed52b81d7af4d4e31ffad2c1e">More...</a><br /></td></tr>
+<tr class="separator:ad678a1eed52b81d7af4d4e31ffad2c1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae67e575b8e0ea5b351cd1208d401834b"><td class="memItemLeft" align="right" valign="top"><a id="ae67e575b8e0ea5b351cd1208d401834b"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><b>tryToFix</b> (QString &amp;io_user_input, Opl::Date::ADateFormat format)</td></tr>
+<tr class="separator:ae67e575b8e0ea5b351cd1208d401834b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac184d215183b290f4cdacde835fd5938"><td class="memItemLeft" align="right" valign="top"><a id="ac184d215183b290f4cdacde835fd5938"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_date.html#ac184d215183b290f4cdacde835fd5938">padCentury</a> (QString &amp;io_user_input, Opl::Date::ADateFormat format)</td></tr>
+<tr class="memdesc:ac184d215183b290f4cdacde835fd5938"><td class="mdescLeft">&#160;</td><td class="mdescRight">padCentury adds the century to a date where it was omitted <br /></td></tr>
+<tr class="separator:ac184d215183b290f4cdacde835fd5938"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac73a41e8dac47a3a2a3fcef5b3d19eee"><td class="memItemLeft" align="right" valign="top"><a id="ac73a41e8dac47a3a2a3fcef5b3d19eee"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_date.html#ac73a41e8dac47a3a2a3fcef5b3d19eee">padZeroes</a> (QString &amp;io_user_input)</td></tr>
+<tr class="memdesc:ac73a41e8dac47a3a2a3fcef5b3d19eee"><td class="mdescLeft">&#160;</td><td class="mdescRight">pads a user-provided date string with 0s to facilitate conversion to QDate <br /></td></tr>
+<tr class="separator:ac73a41e8dac47a3a2a3fcef5b3d19eee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d8d690389acd63098c107a223a8b7ce"><td class="memItemLeft" align="right" valign="top"><a id="a8d8d690389acd63098c107a223a8b7ce"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><b>addSeperators</b> (QString &amp;io_user_input, const Opl::Date::ADateFormat &amp;format)</td></tr>
+<tr class="separator:a8d8d690389acd63098c107a223a8b7ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a210af97b49e6c66f451f83a6251fe83a"><td class="memItemLeft" align="right" valign="top"><a id="a210af97b49e6c66f451f83a6251fe83a"></a>
+static bool&#160;</td><td class="memItemRight" valign="bottom"><b>containsSeperator</b> (const QString &amp;user_input)</td></tr>
+<tr class="separator:a210af97b49e6c66f451f83a6251fe83a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ae8a544f48462c8159748f98fe4684a56"><td class="memItemLeft" align="right" valign="top"><a id="ae8a544f48462c8159748f98fe4684a56"></a>
 static QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_date.html#ae8a544f48462c8159748f98fe4684a56">toString</a> (const QDate &amp;date, Opl::Date::ADateFormat format=Opl::Date::ADateFormat::ISODate)</td></tr>
 <tr class="memdesc:ae8a544f48462c8159748f98fe4684a56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reimplements QDate::toString to accept Opl::Date::ADateFormat enums. <br /></td></tr>
@@ -115,8 +132,8 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><b>getFo
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>The <a class="el" href="class_a_date.html" title="The ADate class is responsible for input/output of Dates and handling the different Date Formats.">ADate</a> class is responsible for input/output of Dates and handling the different Date Formats. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a id="aa1c79d62d44ab503ccbc984f6f681a2d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa1c79d62d44ab503ccbc984f6f681a2d">&#9670;&nbsp;</a></span>formatInput()</h2>
+<a id="ad678a1eed52b81d7af4d4e31ffad2c1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad678a1eed52b81d7af4d4e31ffad2c1e">&#9670;&nbsp;</a></span>parseInput()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -125,10 +142,10 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><b>getFo
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">QDate ADate::formatInput </td>
+          <td class="memname">QDate ADate::parseInput </td>
           <td>(</td>
-          <td class="paramtype">QString&#160;</td>
-          <td class="paramname"><em>user_input</em>, </td>
+          <td class="paramtype">QString &amp;&#160;</td>
+          <td class="paramname"><em>io_user_input</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -149,7 +166,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><b>getFo
 </table>
 </div><div class="memdoc">
 
-<p>formatInput takes a user-provided input and tries to convert it to a QDate. </p>
+<p>takes a user-provided input and tries to convert it to a (valid) QDate. </p>
 <dl class="section return"><dt>Returns</dt><dd>QDate (invalid if input not recognized) </dd></dl>
 
 </div>
@@ -164,9 +181,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><b>getFo
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_date.html">ADate</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_download-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -103,9 +103,7 @@ $(document).ready(function(){initNavTree('class_a_download.html',''); initResiza
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_download.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ADownload Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -136,9 +136,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>download</b> ()</td><
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_download.html">ADownload</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 12 - 13
docs/html/class_a_entry-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -95,21 +95,20 @@ $(document).ready(function(){initNavTree('class_a_entry.html',''); initResizable
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AEntry</b>(DataPosition position_) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>AEntry</b>(RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AEntry</b>(DataPosition position_, RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getData</b>() (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPosition</b>() (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const AEntry &amp;)=default (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>position</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setData</b>(RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setPosition</b>(DataPosition position_) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tableData</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getData</b>() const (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getPosition</b>() const (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_entry.html#a220a7359ee6bf14ff9a483cbbea90f91">operator QString</a>() const</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const AEntry &amp;)=default (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>position</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setData</b>(RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>setPosition</b>(DataPosition position_) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tableData</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 14 - 12
docs/html/class_a_entry.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AEntry Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -134,12 +134,16 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>setData</b> (RowData_
 <tr class="memitem:aad04dccba8fee0af4cc56883e4d67956"><td class="memItemLeft" align="right" valign="top"><a id="aad04dccba8fee0af4cc56883e4d67956"></a>
 void&#160;</td><td class="memItemRight" valign="bottom"><b>setPosition</b> (<a class="el" href="struct_data_position.html">DataPosition</a> position_)</td></tr>
 <tr class="separator:aad04dccba8fee0af4cc56883e4d67956"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae48f6751acfa43d9cef79ce1d8eea4be"><td class="memItemLeft" align="right" valign="top"><a id="ae48f6751acfa43d9cef79ce1d8eea4be"></a>
-const <a class="el" href="struct_data_position.html">DataPosition</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getPosition</b> ()</td></tr>
-<tr class="separator:ae48f6751acfa43d9cef79ce1d8eea4be"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a317b37d278b23a1bbe31761146afa3ae"><td class="memItemLeft" align="right" valign="top"><a id="a317b37d278b23a1bbe31761146afa3ae"></a>
-const RowData_T &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getData</b> ()</td></tr>
-<tr class="separator:a317b37d278b23a1bbe31761146afa3ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac1fe055c7f6073b47b01c94d41f0aa58"><td class="memItemLeft" align="right" valign="top"><a id="ac1fe055c7f6073b47b01c94d41f0aa58"></a>
+const <a class="el" href="struct_data_position.html">DataPosition</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getPosition</b> () const</td></tr>
+<tr class="separator:ac1fe055c7f6073b47b01c94d41f0aa58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab627b2b154535c8d60b2920c2a722a00"><td class="memItemLeft" align="right" valign="top"><a id="ab627b2b154535c8d60b2920c2a722a00"></a>
+const RowData_T &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getData</b> () const</td></tr>
+<tr class="separator:ab627b2b154535c8d60b2920c2a722a00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a220a7359ee6bf14ff9a483cbbea90f91"><td class="memItemLeft" align="right" valign="top"><a id="a220a7359ee6bf14ff9a483cbbea90f91"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_entry.html#a220a7359ee6bf14ff9a483cbbea90f91">operator QString</a> () const</td></tr>
+<tr class="memdesc:a220a7359ee6bf14ff9a483cbbea90f91"><td class="mdescLeft">&#160;</td><td class="mdescRight">operator QString provides compatibilty with QDebug() - prints the tableData in a readable formatting to stdout <br /></td></tr>
+<tr class="separator:a220a7359ee6bf14ff9a483cbbea90f91"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
@@ -165,9 +169,7 @@ Protected Attributes</h2></td></tr>
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_entry.html">AEntry</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 3 - 2
docs/html/class_a_entry.js

@@ -5,8 +5,9 @@ var class_a_entry =
     [ "AEntry", "class_a_entry.html#a557d4774ac036b8090ac1227c15e2434", null ],
     [ "AEntry", "class_a_entry.html#ae7a2533f99b4d7dfe9e0ce091df47572", null ],
     [ "AEntry", "class_a_entry.html#a2fed07f6ee63ea4a51cb3512cf44398c", null ],
-    [ "getData", "class_a_entry.html#a317b37d278b23a1bbe31761146afa3ae", null ],
-    [ "getPosition", "class_a_entry.html#ae48f6751acfa43d9cef79ce1d8eea4be", null ],
+    [ "getData", "class_a_entry.html#ab627b2b154535c8d60b2920c2a722a00", null ],
+    [ "getPosition", "class_a_entry.html#ac1fe055c7f6073b47b01c94d41f0aa58", null ],
+    [ "operator QString", "class_a_entry.html#a220a7359ee6bf14ff9a483cbbea90f91", null ],
     [ "operator=", "class_a_entry.html#a9984a85a351159926705f037e01bc3f6", null ],
     [ "setData", "class_a_entry.html#a71173e7faa3019c6f18e8bdf3eb39fe0", null ],
     [ "setPosition", "class_a_entry.html#aad04dccba8fee0af4cc56883e4d67956", null ],

+ 4 - 6
docs/html/class_a_file_standard_item-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -98,9 +98,7 @@ $(document).ready(function(){initNavTree('class_a_file_standard_item.html','');
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_file_standard_item.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AFileStandardItem Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -125,9 +125,7 @@ const QFileInfo &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>info
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_file_standard_item.html">AFileStandardItem</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 15 - 16
docs/html/class_a_flight_entry-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,26 +99,25 @@ $(document).ready(function(){initNavTree('class_a_flight_entry.html',''); initRe
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AFlightEntry</b>(RowId_T row_id) (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>AFlightEntry</b>(RowData_T table_data) (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AFlightEntry</b>(const AFlightEntry &amp;pe)=default (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getData</b>() (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getData</b>() const (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_flight_entry.html#a24e526b17cedbe7fdf5af3a1ebe58648">getPilotName</a>(pilotPosition)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>getPosition</b>() (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getPosition</b>() const (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_a_flight_entry.html#a603aa9ca029e7d3ecbe77d40e02b8b1c">getRegistration</a>()</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const AFlightEntry &amp;pe)=default (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const AEntry &amp;)=default (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pilotPosition</b> enum name (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>position</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setData</b>(RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setPosition</b>(DataPosition position_) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_flight_entry.html#a83b4a71633e5f3cd44e266d44f117412">summary</a>()</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tableData</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_a_entry.html#a220a7359ee6bf14ff9a483cbbea90f91">operator QString</a>() const</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const AFlightEntry &amp;pe)=default (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const AEntry &amp;)=default (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pilotPosition</b> enum name (defined in <a class="el" href="class_a_flight_entry.html">AFlightEntry</a>)</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>position</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setData</b>(RowData_T table_data) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>setPosition</b>(DataPosition position_) (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_flight_entry.html#a83b4a71633e5f3cd44e266d44f117412">summary</a>()</td><td class="entry"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tableData</b> (defined in <a class="el" href="class_a_entry.html">AEntry</a>)</td><td class="entry"><a class="el" href="class_a_entry.html">AEntry</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 17 - 15
docs/html/class_a_flight_entry.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AFlightEntry Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -103,9 +103,9 @@ Inheritance diagram for AFlightEntry:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ad5f2dac8ecce6f6c045d957185c890e3"><td class="memItemLeft" align="right" valign="top"><a id="ad5f2dac8ecce6f6c045d957185c890e3"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>pilotPosition</b> { <b>pic</b>, 
-<b>secondPilot</b>, 
-<b>thirdPilot</b>
+<tr class="memitem:ad5f2dac8ecce6f6c045d957185c890e3"><td class="memItemLeft" align="right" valign="top"><a id="ad5f2dac8ecce6f6c045d957185c890e3"></a>enum class &#160;</td><td class="memItemRight" valign="bottom"><b>pilotPosition</b> { <b>pic</b>
+, <b>secondPilot</b>
+, <b>thirdPilot</b>
  }</td></tr>
 <tr class="separator:ad5f2dac8ecce6f6c045d957185c890e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
@@ -155,12 +155,16 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>setData</b> (RowData_
 <tr class="memitem:aad04dccba8fee0af4cc56883e4d67956 inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="aad04dccba8fee0af4cc56883e4d67956"></a>
 void&#160;</td><td class="memItemRight" valign="bottom"><b>setPosition</b> (<a class="el" href="struct_data_position.html">DataPosition</a> position_)</td></tr>
 <tr class="separator:aad04dccba8fee0af4cc56883e4d67956 inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae48f6751acfa43d9cef79ce1d8eea4be inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="ae48f6751acfa43d9cef79ce1d8eea4be"></a>
-const <a class="el" href="struct_data_position.html">DataPosition</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getPosition</b> ()</td></tr>
-<tr class="separator:ae48f6751acfa43d9cef79ce1d8eea4be inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a317b37d278b23a1bbe31761146afa3ae inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="a317b37d278b23a1bbe31761146afa3ae"></a>
-const RowData_T &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getData</b> ()</td></tr>
-<tr class="separator:a317b37d278b23a1bbe31761146afa3ae inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac1fe055c7f6073b47b01c94d41f0aa58 inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="ac1fe055c7f6073b47b01c94d41f0aa58"></a>
+const <a class="el" href="struct_data_position.html">DataPosition</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getPosition</b> () const</td></tr>
+<tr class="separator:ac1fe055c7f6073b47b01c94d41f0aa58 inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab627b2b154535c8d60b2920c2a722a00 inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="ab627b2b154535c8d60b2920c2a722a00"></a>
+const RowData_T &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getData</b> () const</td></tr>
+<tr class="separator:ab627b2b154535c8d60b2920c2a722a00 inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a220a7359ee6bf14ff9a483cbbea90f91 inherit pub_methods_class_a_entry"><td class="memItemLeft" align="right" valign="top"><a id="a220a7359ee6bf14ff9a483cbbea90f91"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_entry.html#a220a7359ee6bf14ff9a483cbbea90f91">operator QString</a> () const</td></tr>
+<tr class="memdesc:a220a7359ee6bf14ff9a483cbbea90f91 inherit pub_methods_class_a_entry"><td class="mdescLeft">&#160;</td><td class="mdescRight">operator QString provides compatibilty with QDebug() - prints the tableData in a readable formatting to stdout <br /></td></tr>
+<tr class="separator:a220a7359ee6bf14ff9a483cbbea90f91 inherit pub_methods_class_a_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
 Additional Inherited Members</h2></td></tr>
@@ -231,9 +235,7 @@ RowData_T&#160;</td><td class="memItemRight" valign="bottom"><b>tableData</b></t
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_flight_entry.html">AFlightEntry</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_hash-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,9 +99,7 @@ $(document).ready(function(){initNavTree('class_a_hash.html',''); initResizable(
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_hash.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AHash Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -157,9 +157,7 @@ QByteArray&#160;</td><td class="memItemRight" valign="bottom"><b>checksum</b></t
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_hash.html">AHash</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_json-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -101,9 +101,7 @@ $(document).ready(function(){initNavTree('class_a_json.html',''); initResizable(
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 5 - 7
docs/html/class_a_json.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AJson Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -147,7 +147,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hre
 </div><div class="memdoc">
 
 <p>exportDatabase exports the currently active database to JSON. </p>
-<p>QJsonObject can be constructed from QMap&lt;QString, QVariant&gt; aka QVariantmap. All rows are put into a QJsonArray and the Array is embedded into a QJsonDocument, which can be exported. The files are created at AStandardPaths::JSON. </p>
+<p>QJsonObject can be constructed from QHash&lt;QString, QVariant&gt; aka QVariantmap. All rows are put into a QJsonArray and the Array is embedded into a QJsonDocument, which can be exported. The files are created at AStandardPaths::JSON. </p>
 
 </div>
 </div>
@@ -195,9 +195,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hre
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_json.html">AJson</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_run_guard-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -100,9 +100,7 @@ $(document).ready(function(){initNavTree('class_a_run_guard.html',''); initResiz
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_run_guard.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ARunGuard Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -123,9 +123,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_run_guard.html">ARunGuard</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 9 - 10
docs/html/class_a_settings-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -104,18 +104,17 @@ $(document).ready(function(){initNavTree('class_a_settings.html',''); initResiza
   <tr><td class="entry"><a class="el" href="class_a_settings.html#af88194014c7599e8c9fe488c5b1ebf99">stringOfKey</a>(const Main key)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>stringOfKey</b>(const FlightLogging key) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>stringOfKey</b>(const UserData key) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>UserData</b> enum name (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>write</b>(const Main key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>write</b>(const UserData key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>write</b>(const FlightLogging key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sync</b>() (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>UserData</b> enum name (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>write</b>(const Main key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>write</b>(const UserData key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>write</b>(const FlightLogging key, const QVariant &amp;val) (defined in <a class="el" href="class_a_settings.html">ASettings</a>)</td><td class="entry"><a class="el" href="class_a_settings.html">ASettings</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 43 - 50
docs/html/class_a_settings.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ASettings Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,56 +99,48 @@ $(document).ready(function(){initNavTree('class_a_settings.html',''); initResiza
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:aba5614e128b0474ef4830842e5054c5c"><td class="memItemLeft" align="right" valign="top"><a id="aba5614e128b0474ef4830842e5054c5c"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>Main</b> { <br />
-&#160;&#160;<b>SetupComplete</b>, 
-<b>Style</b>, 
-<b>Font</b>, 
-<b>FontSize</b>, 
-<br />
-&#160;&#160;<b>UseSystemFont</b>, 
-<b>LogbookView</b>, 
-<b>DateFormat</b>
+<tr class="memitem:aba5614e128b0474ef4830842e5054c5c"><td class="memItemLeft" align="right" valign="top"><a id="aba5614e128b0474ef4830842e5054c5c"></a>enum class &#160;</td><td class="memItemRight" valign="bottom"><b>Main</b> { <br />
+&#160;&#160;<b>SetupComplete</b>
+, <b>Style</b>
+, <b>Font</b>
+, <b>FontSize</b>
+, <br />
+&#160;&#160;<b>UseSystemFont</b>
+, <b>LogbookView</b>
+, <b>DateFormat</b>
 <br />
  }</td></tr>
 <tr class="separator:aba5614e128b0474ef4830842e5054c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad5929c2e477b65d82afd89afa7c8af48"><td class="memItemLeft" align="right" valign="top"><a id="ad5929c2e477b65d82afd89afa7c8af48"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>UserData</b> { <br />
-&#160;&#160;<b>DisplaySelfAs</b>, 
-<b>TailSortColumn</b>, 
-<b>PilotSortColumn</b>, 
-<b>AcftAllowIncomplete</b>, 
-<br />
-&#160;&#160;<b>FtlWarningThreshold</b>, 
-<b>CurrWarningEnabled</b>, 
-<b>CurrWarningThreshold</b>, 
-<b>ShowToLgdCurrency</b>, 
-<br />
-&#160;&#160;<b>ShowLicCurrency</b>, 
-<b>ShowTrCurrency</b>, 
-<b>ShowLckCurrency</b>, 
-<b>ShowMedCurrency</b>, 
-<br />
-&#160;&#160;<b>ShowCustom1Currency</b>, 
-<b>ShowCustom2Currency</b>, 
-<b>Custom1CurrencyName</b>, 
-<b>Custom2CurrencyName</b>
+<tr class="memitem:ad5929c2e477b65d82afd89afa7c8af48"><td class="memItemLeft" align="right" valign="top"><a id="ad5929c2e477b65d82afd89afa7c8af48"></a>enum class &#160;</td><td class="memItemRight" valign="bottom"><b>UserData</b> { <br />
+&#160;&#160;<b>DisplaySelfAs</b>
+, <b>TailSortColumn</b>
+, <b>PilotSortColumn</b>
+, <b>FtlWarningThreshold</b>
+, <br />
+&#160;&#160;<b>CurrWarningThreshold</b>
+, <b>ShowToLgdCurrency</b>
+, <b>ShowLicCurrency</b>
+, <b>ShowTrCurrency</b>
+, <br />
+&#160;&#160;<b>ShowLckCurrency</b>
+, <b>ShowMedCurrency</b>
+, <b>ShowCustom1Currency</b>
+, <b>ShowCustom2Currency</b>
+, <br />
+&#160;&#160;<b>Custom1CurrencyName</b>
+, <b>Custom2CurrencyName</b>
 <br />
  }</td></tr>
 <tr class="separator:ad5929c2e477b65d82afd89afa7c8af48"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a14b8b4d54cec3c1474f7a4402223a59a"><td class="memItemLeft" align="right" valign="top"><a id="a14b8b4d54cec3c1474f7a4402223a59a"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>FlightLogging</b> { <br />
-&#160;&#160;<b>Function</b>, 
-<b>Approach</b>, 
-<b>NightLoggingEnabled</b>, 
-<b>LogIFR</b>, 
-<br />
-&#160;&#160;<b>FlightNumberPrefix</b>, 
-<b>NumberTakeoffs</b>, 
-<b>NumberLandings</b>, 
-<b>PilotFlying</b>, 
-<br />
-&#160;&#160;<b>NightAngle</b>, 
-<b>Rules</b>, 
-<b>FlightTimeFormat</b>, 
-<b>FunctionComboBox</b>
+<tr class="memitem:a14b8b4d54cec3c1474f7a4402223a59a"><td class="memItemLeft" align="right" valign="top"><a id="a14b8b4d54cec3c1474f7a4402223a59a"></a>enum class &#160;</td><td class="memItemRight" valign="bottom"><b>FlightLogging</b> { <br />
+&#160;&#160;<b>Function</b>
+, <b>Approach</b>
+, <b>NightLoggingEnabled</b>
+, <b>LogIFR</b>
+, <br />
+&#160;&#160;<b>FlightNumberPrefix</b>
+, <b>PilotFlying</b>
+, <b>NightAngle</b>
 <br />
  }</td></tr>
 <tr class="separator:a14b8b4d54cec3c1474f7a4402223a59a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -204,6 +196,9 @@ static QString&#160;</td><td class="memItemRight" valign="bottom"><b>stringOfKey
 <tr class="memitem:ab1c6651ff2fd050d7759557f9cfe0054"><td class="memItemLeft" align="right" valign="top"><a id="ab1c6651ff2fd050d7759557f9cfe0054"></a>
 static QSettings&#160;</td><td class="memItemRight" valign="bottom"><b>settings</b> ()</td></tr>
 <tr class="separator:ab1c6651ff2fd050d7759557f9cfe0054"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a560e190e45b15bcf8d1b7dde264a651e"><td class="memItemLeft" align="right" valign="top"><a id="a560e190e45b15bcf8d1b7dde264a651e"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><b>sync</b> ()</td></tr>
+<tr class="separator:a560e190e45b15bcf8d1b7dde264a651e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Thin wrapper for the QSettings class, simplifying reading and writing of settings. </p>
@@ -217,9 +212,7 @@ static QSettings&#160;</td><td class="memItemRight" valign="bottom"><b>settings<
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_settings.html">ASettings</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 1 - 8
docs/html/class_a_settings.js

@@ -6,13 +6,8 @@ var class_a_settings =
       [ "NightLoggingEnabled", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aa7bea0d4834668bee4677e83aa843caae", null ],
       [ "LogIFR", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aabd796a26bc69f9f4a9b63784a6214872", null ],
       [ "FlightNumberPrefix", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aac8420fd63340c2098adc389092ffe66d", null ],
-      [ "NumberTakeoffs", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aabbff13aa9db52d6bbca5cd556aea1e35", null ],
-      [ "NumberLandings", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aa24927525727717c0bf5738f79bbcccf3", null ],
       [ "PilotFlying", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aae1546c76296d4f9f7c8a98dd909ed399", null ],
-      [ "NightAngle", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aad841dbf1846b8323fac804ddc11bbc10", null ],
-      [ "Rules", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aa1f4da964f8eab62e96e8cfe406e44364", null ],
-      [ "FlightTimeFormat", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aaec382f97ca538721fe75b6b25bb9e1d2", null ],
-      [ "FunctionComboBox", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aa8d641f4bcc4ff423997041b5b64c50a2", null ]
+      [ "NightAngle", "class_a_settings.html#a14b8b4d54cec3c1474f7a4402223a59aad841dbf1846b8323fac804ddc11bbc10", null ]
     ] ],
     [ "Main", "class_a_settings.html#aba5614e128b0474ef4830842e5054c5c", [
       [ "SetupComplete", "class_a_settings.html#aba5614e128b0474ef4830842e5054c5ca465f4940754b9cb1b62232d75053aa80", null ],
@@ -27,9 +22,7 @@ var class_a_settings =
       [ "DisplaySelfAs", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48acdfab00be76e8e38f6a73b5c2e894c6d", null ],
       [ "TailSortColumn", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48aaf504a921bd6cad3add5e2da5655aaf4", null ],
       [ "PilotSortColumn", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48ac188e1b64598779ccd496fc6a5b620b5", null ],
-      [ "AcftAllowIncomplete", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48ab5d20cbcdb866885f8bd78e2da9c4b57", null ],
       [ "FtlWarningThreshold", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48a883d0827b94a2cb6812a8cb2f6bc6cda", null ],
-      [ "CurrWarningEnabled", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48a90c757063e8673c23672ee56dda49722", null ],
       [ "CurrWarningThreshold", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48a1b60d9b99c6105e90ce58c416c9677ae", null ],
       [ "ShowToLgdCurrency", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48ab51d51de79eb573914075813b9562d2a", null ],
       [ "ShowLicCurrency", "class_a_settings.html#ad5929c2e477b65d82afd89afa7c8af48abb117d8d2652912e2bd198d9ea538a9c", null ],

+ 5 - 7
docs/html/class_a_standard_paths-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('class_a_standard_paths.html',''); init
 
 <p>This is the complete list of members for <a class="el" href="class_a_standard_paths.html">AStandardPaths</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_a_standard_paths.html#a775a7f2d7d99e8b7d29cc91c33c08ba8">allDirectories</a>()</td><td class="entry"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_standard_paths.html#a56108cc186aa3326bb41d8716b78e322">allDirectories</a>()</td><td class="entry"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="class_a_standard_paths.html#a43937baa78a53e1427e23f533024221b">asChildOfDir</a>(Directories location, const QString &amp;filename)</td><td class="entry"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Backup</b> enum value (defined in <a class="el" href="class_a_standard_paths.html">AStandardPaths</a>)</td><td class="entry"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>Database</b> enum value (defined in <a class="el" href="class_a_standard_paths.html">AStandardPaths</a>)</td><td class="entry"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></td><td class="entry"></td></tr>
@@ -105,9 +105,7 @@ $(document).ready(function(){initNavTree('class_a_standard_paths.html',''); init
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 18 - 20
docs/html/class_a_standard_paths.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AStandardPaths Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('class_a_standard_paths.html',''); init
 </div><!--header-->
 <div class="contents">
 
-<p>The AStandardAppPaths class encapsulates a static QMap holding the standard paths of the application.  
+<p>The AStandardAppPaths class encapsulates a static QHash holding the standard paths of the application.  
  <a href="class_a_standard_paths.html#details">More...</a></p>
 
 <p><code>#include &lt;<a class="el" href="astandardpaths_8h_source.html">astandardpaths.h</a>&gt;</code></p>
@@ -100,11 +100,11 @@ $(document).ready(function(){initNavTree('class_a_standard_paths.html',''); init
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
 <tr class="memitem:ae24b6142fdf46d370f94c03582e37e0e"><td class="memItemLeft" align="right" valign="top"><a id="ae24b6142fdf46d370f94c03582e37e0e"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>Directories</b> { <br />
-&#160;&#160;<b>Database</b>, 
-<b>Templates</b>, 
-<b>Backup</b>, 
-<b>Log</b>, 
-<br />
+&#160;&#160;<b>Database</b>
+, <b>Templates</b>
+, <b>Backup</b>
+, <b>Log</b>
+, <br />
 &#160;&#160;<b>JSON</b>
 <br />
  }</td></tr>
@@ -124,15 +124,15 @@ static const QDir &amp;&#160;</td><td class="memItemRight" valign="bottom"><a cl
 static const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_standard_paths.html#a43937baa78a53e1427e23f533024221b">asChildOfDir</a> (Directories location, const QString &amp;filename)</td></tr>
 <tr class="memdesc:a43937baa78a53e1427e23f533024221b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string of the absolute path to directory location concatenated with filename. <br /></td></tr>
 <tr class="separator:a43937baa78a53e1427e23f533024221b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a775a7f2d7d99e8b7d29cc91c33c08ba8"><td class="memItemLeft" align="right" valign="top">static const QMap&lt; Directories, QDir &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_standard_paths.html#a775a7f2d7d99e8b7d29cc91c33c08ba8">allDirectories</a> ()</td></tr>
-<tr class="memdesc:a775a7f2d7d99e8b7d29cc91c33c08ba8"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the static map of all standard directories  <a href="class_a_standard_paths.html#a775a7f2d7d99e8b7d29cc91c33c08ba8">More...</a><br /></td></tr>
-<tr class="separator:a775a7f2d7d99e8b7d29cc91c33c08ba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56108cc186aa3326bb41d8716b78e322"><td class="memItemLeft" align="right" valign="top">static const QHash&lt; Directories, QDir &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_standard_paths.html#a56108cc186aa3326bb41d8716b78e322">allDirectories</a> ()</td></tr>
+<tr class="memdesc:a56108cc186aa3326bb41d8716b78e322"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the static map of all standard directories  <a href="class_a_standard_paths.html#a56108cc186aa3326bb41d8716b78e322">More...</a><br /></td></tr>
+<tr class="separator:a56108cc186aa3326bb41d8716b78e322"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The AStandardAppPaths class encapsulates a static QMap holding the standard paths of the application. </p>
+<div class="textblock"><p>The AStandardAppPaths class encapsulates a static QHash holding the standard paths of the application. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a id="a775a7f2d7d99e8b7d29cc91c33c08ba8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a775a7f2d7d99e8b7d29cc91c33c08ba8">&#9670;&nbsp;</a></span>allDirectories()</h2>
+<a id="a56108cc186aa3326bb41d8716b78e322"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56108cc186aa3326bb41d8716b78e322">&#9670;&nbsp;</a></span>allDirectories()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -141,7 +141,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><a class
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">const QMap&lt; AStandardPaths::Directories, QDir &gt; &amp; AStandardPaths::allDirectories </td>
+          <td class="memname">const QHash&lt; AStandardPaths::Directories, QDir &gt; &amp; AStandardPaths::allDirectories </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td></td>
@@ -155,7 +155,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><a class
 </div><div class="memdoc">
 
 <p>returns the static map of all standard directories </p>
-<dl class="section return"><dt>Returns</dt><dd>static const QMap&lt;Directories, QDir&gt; </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>static const QHash&lt;Directories, QDir&gt; </dd></dl>
 
 </div>
 </div>
@@ -169,9 +169,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><a class
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_standard_paths.html">AStandardPaths</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 12 - 13
docs/html/class_a_style-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -92,21 +92,20 @@ $(document).ready(function(){initNavTree('class_a_style.html',''); initResizable
 <table class="directory">
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>darkPalette</b>() (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>defaultStyle</b> (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setStyle</b>(const QString &amp;style_key) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>setStyle</b>(const StyleSheet &amp;style_sheet) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setStyle</b>(const QPalette &amp;palette) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">setup</a>()</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>style</b>() (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>styles</b> (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>styleSheets</b> (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>loadStylesComboBox</b>(QComboBox *combo_box) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>setStyle</b>(const QString &amp;style_key) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setStyle</b>(const StyleSheet &amp;style_sheet) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>setStyle</b>(const QPalette &amp;palette) (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_a_style.html#ad061bf79f3e22640e78f8bb65ef0867c">setup</a>()</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>style</b>() (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>styles</b> (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>styleSheets</b> (defined in <a class="el" href="class_a_style.html">AStyle</a>)</td><td class="entry"><a class="el" href="class_a_style.html">AStyle</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 7 - 6
docs/html/class_a_style.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AStyle Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -118,6 +118,9 @@ static QPalette&#160;</td><td class="memItemRight" valign="bottom"><b>darkPalett
 <tr class="memitem:ade8977d8e80fc995ab593a11d17d640a"><td class="memItemLeft" align="right" valign="top"><a id="ade8977d8e80fc995ab593a11d17d640a"></a>
 static const QString &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>style</b> ()</td></tr>
 <tr class="separator:ade8977d8e80fc995ab593a11d17d640a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af2f47ea404f6b3a5621dee9d07a85c9c"><td class="memItemLeft" align="right" valign="top"><a id="af2f47ea404f6b3a5621dee9d07a85c9c"></a>
+static void&#160;</td><td class="memItemRight" valign="bottom"><b>loadStylesComboBox</b> (QComboBox *combo_box)</td></tr>
+<tr class="separator:af2f47ea404f6b3a5621dee9d07a85c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -170,9 +173,7 @@ static const QString&#160;</td><td class="memItemRight" valign="bottom"><b>defau
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_style.html">AStyle</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_timer-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -98,9 +98,7 @@ $(document).ready(function(){initNavTree('class_a_timer.html',''); initResizable
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_timer.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ATimer Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -126,9 +126,7 @@ long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_timer.html">ATimer</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_translator-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -96,9 +96,7 @@ $(document).ready(function(){initNavTree('class_a_translator.html',''); initResi
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_a_translator.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: ATranslator Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -123,9 +123,7 @@ static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" hre
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_a_translator.html">ATranslator</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_aircraft_widget-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -101,9 +101,7 @@ $(document).ready(function(){initNavTree('class_aircraft_widget.html',''); initR
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 5 - 7
docs/html/class_aircraft_widget.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: AircraftWidget Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -137,7 +137,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <p>The widget consists of two main parts, a <em>QTableView</em> on the left side and a <em>QStackedWidget</em> on the right side.</p>
 <p>In the QTableView, a QSqlTableModel is used to access a view from the database, which holds a tails' Registration, Type and Company.</p>
 <p>The welcome page shown on the QStackedWidget on the right side has a QLineEdit that functions as a search box and a QCombobox holding the possible columns that can be used to filter what is displayed. The text of the QLineEdit is used as a filter for the QSqlTableModel, so the view is updated in real time.</p>
-<p>The <em><a class="el" href="class_new_tail_dialog.html" title="The NewTail class is a dialog for adding a new tail to the database or editing an existing one.">NewTailDialog</a></em> is used for creating a new entry as well as for editing an existing entry. If the user selects a row in the QTableView, the NewTailDilog is displayed on the right side of the Widget, inside the QStackedWidget. In order to avoid leaks from any previously made selections, existing Dialogs are deleted before a new one is created. The <a class="el" href="class_new_tail_dialog.html" title="The NewTail class is a dialog for adding a new tail to the database or editing an existing one.">NewTailDialog</a>'s <code>accepted</code> and <code>rejected</code> signals are connected to refresh the view as required.</p>
+<p>The <em><a class="el" href="class_new_tail_dialog.html" title="The NewTailDialog enables adding new Tail entries to the database or editing existing ones.">NewTailDialog</a></em> is used for creating a new entry as well as for editing an existing entry. If the user selects a row in the QTableView, the NewTailDilog is displayed on the right side of the Widget, inside the QStackedWidget. In order to avoid leaks from any previously made selections, existing Dialogs are deleted before a new one is created. The <a class="el" href="class_new_tail_dialog.html" title="The NewTailDialog enables adding new Tail entries to the database or editing existing ones.">NewTailDialog</a>'s <code>accepted</code> and <code>rejected</code> signals are connected to refresh the view as required.</p>
 <p>Note: The <a class="el" href="struct_a_tail_entry.html">ATailEntry</a> class is used to operate on individual aircraft, whereas the <a class="el" href="struct_a_aircraft_entry.html">AAircraftEntry</a> class is used to retreive templates of aircraft types. For example, 'D-ABCD' and 'N-XYZ' are different tails (Registrations), but they might be the same type of aircraft, for example 'Boeing 737-800'. </p>
 </div><hr/>The documentation for this class was generated from the following files:<ul>
 <li>src/gui/widgets/<a class="el" href="aircraftwidget_8h_source.html">aircraftwidget.h</a></li>
@@ -149,9 +149,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_aircraft_widget.html">AircraftWidget</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_backup_widget-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -100,9 +100,7 @@ $(document).ready(function(){initNavTree('class_backup_widget.html',''); initRes
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_backup_widget.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: BackupWidget Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -144,9 +144,7 @@ Local backups are automatically stored in a folder determined by AStandardpaths
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_backup_widget.html">BackupWidget</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_debug_widget-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -98,9 +98,7 @@ $(document).ready(function(){initNavTree('class_debug_widget.html',''); initResi
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_debug_widget.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: DebugWidget Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -120,9 +120,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>changeEvent</b> (QEve
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_debug_widget.html">DebugWidget</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_first_run_dialog-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,9 +99,7 @@ $(document).ready(function(){initNavTree('class_first_run_dialog.html',''); init
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 34 - 7
docs/html/class_first_run_dialog.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: FirstRunDialog Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -91,6 +91,11 @@ $(document).ready(function(){initNavTree('class_first_run_dialog.html',''); init
 <div class="title">FirstRunDialog Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The <a class="el" href="class_first_run_dialog.html" title="The FirstRunDialog is used as a set-up wizard for the application.">FirstRunDialog</a> is used as a set-up wizard for the application.  
+ <a href="class_first_run_dialog.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="firstrundialog_8h_source.html">firstrundialog.h</a>&gt;</code></p>
 <div class="dynheader">
 Inheritance diagram for FirstRunDialog:</div>
 <div class="dyncontent">
@@ -113,7 +118,31 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>reject</b> () overrid
 <tr class="memdesc:a314dfc62070d7d88b9a98a5c18c31e74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shows the debug widget by pressing &lt;ctrl + t&gt;  <a href="class_first_run_dialog.html#a314dfc62070d7d88b9a98a5c18c31e74">More...</a><br /></td></tr>
 <tr class="separator:a314dfc62070d7d88b9a98a5c18c31e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<h2 class="groupheader">Member Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="class_first_run_dialog.html" title="The FirstRunDialog is used as a set-up wizard for the application.">FirstRunDialog</a> is used as a set-up wizard for the application. </p>
+<p>The Application does not ship with a database, it is created on the fly. This is the main purpose of the <a class="el" href="class_first_run_dialog.html" title="The FirstRunDialog is used as a set-up wizard for the application.">FirstRunDialog</a>. Apart from this main task, user details and preferences are gathered and saved using <a class="el" href="class_a_settings.html" title="Thin wrapper for the QSettings class, simplifying reading and writing of settings.">ASettings</a>.</p>
+<p>The Dialog contains a tabbed widget which guides the user through the set up process.</p>
+<h3><a class="anchor" id="autotoc_md7"></a>
+1 - Welcome</h3>
+<p>In this tab, the user is greeted and has the option to import an existing database instead of creating a new one.</p>
+<h3><a class="anchor" id="autotoc_md8"></a>
+2 - Personal Data</h3>
+<p>In this tab, the users personal data is collected, which is used to create the first Pilot Entry in the database. ROW ID (1) identifies the logbook owner, which is also referred to as "self" in the application.</p>
+<h3><a class="anchor" id="autotoc_md9"></a>
+3 - Currencies</h3>
+<p>In this tab, the user can enter the expiration dates of his licenses, medical or other currencies that he wishes to keep track of. These are stored in the database within the currencies table.</p>
+<h3><a class="anchor" id="autotoc_md10"></a>
+4 - Flight Logging</h3>
+<p>In this tab, the user can determine what the defualt selections for logging a new flight will be. These selections (Pilot Function, Flight Rules,...) are stored in an INI file using the <a class="el" href="class_a_settings.html" title="Thin wrapper for the QSettings class, simplifying reading and writing of settings.">ASettings</a> class.</p>
+<h3><a class="anchor" id="autotoc_md11"></a>
+5 - Customization</h3>
+<p>In this tab, the user can make selections regarding the application layout and theming, as well as with regards to how data is being displayed. These settings are stored in an INI file using the <a class="el" href="class_a_settings.html" title="Thin wrapper for the QSettings class, simplifying reading and writing of settings.">ASettings</a> class.</p>
+<h3><a class="anchor" id="autotoc_md12"></a>
+6 - Finish / Database creation</h3>
+<p>In this tab the user can select how the database is created. There are two options, either downloading database templates from the github repository, or to fall back to a set of JSON files inclnuded in the application ressources (see templates.qrc). These built in files are probably not as up-to-date, but enable the application to function if no internet connection is available or the links to the online ressources are broken.</p>
+<p>For Debug purcposes, pressing &lt;ctrl+t&gt; will enable a line edit in which a different branch than main can be selected from which the database templates are to be pulled.</p>
+<p>Upon successful completion of the <a class="el" href="class_first_run_dialog.html" title="The FirstRunDialog is used as a set-up wizard for the application.">FirstRunDialog</a>, a Setting is written so that the dialog is not shown on subsequent runs. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="a314dfc62070d7d88b9a98a5c18c31e74"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#a314dfc62070d7d88b9a98a5c18c31e74">&#9670;&nbsp;</a></span>keyPressEvent()</h2>
 
@@ -158,9 +187,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>reject</b> () overrid
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_first_run_dialog.html">FirstRunDialog</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_home_widget-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -99,9 +99,7 @@ $(document).ready(function(){initNavTree('class_home_widget.html',''); initResiz
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 4 - 6
docs/html/class_home_widget.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: HomeWidget Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -136,9 +136,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_home_widget.html">HomeWidget</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 5 - 7
docs/html/class_logbook_widget-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('class_logbook_widget.html',''); initRe
 <p>This is the complete list of members for <a class="el" href="class_logbook_widget.html">LogbookWidget</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="class_logbook_widget.html#a16abfcb25c7ae304728acb6c3554fdb0">changeEvent</a>(QEvent *event) override</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>LogbookWidget</b>(QWidget *parent=nullptr) (defined in <a class="el" href="class_logbook_widget.html">LogbookWidget</a>)</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>LogbookWidget</b>(ACompletionData &amp;completion_data, QWidget *parent=nullptr) (defined in <a class="el" href="class_logbook_widget.html">LogbookWidget</a>)</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>onLogbookWidget_viewSelectionChanged</b>(SettingsWidget::SettingSignal signal) (defined in <a class="el" href="class_logbook_widget.html">LogbookWidget</a>)</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
   <tr><td class="entry"><a class="el" href="class_logbook_widget.html#a45048f4dd6ffb82da6a725503df97cf1">refresh</a>()</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_logbook_widget.html#ac64b38cc2f5dd012ec1d12647457a8f1">repopulateModel</a>()</td><td class="entry"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
@@ -101,9 +101,7 @@ $(document).ready(function(){initNavTree('class_logbook_widget.html',''); initRe
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 7 - 9
docs/html/class_logbook_widget.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: LogbookWidget Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -120,9 +120,9 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aaf8316b43f9bddae7c9ad5cb6b993887"><td class="memItemLeft" align="right" valign="top"><a id="aaf8316b43f9bddae7c9ad5cb6b993887"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>LogbookWidget</b> (QWidget *parent=nullptr)</td></tr>
-<tr class="separator:aaf8316b43f9bddae7c9ad5cb6b993887"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0909eeda0cb51c94eb493a05d44876e4"><td class="memItemLeft" align="right" valign="top"><a id="a0909eeda0cb51c94eb493a05d44876e4"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>LogbookWidget</b> (<a class="el" href="class_a_completion_data.html">ACompletionData</a> &amp;completion_data, QWidget *parent=nullptr)</td></tr>
+<tr class="separator:a0909eeda0cb51c94eb493a05d44876e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
 Protected Member Functions</h2></td></tr>
@@ -145,9 +145,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="class_logbook_widget.html">LogbookWidget</a></li>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

+ 1 - 1
docs/html/class_logbook_widget.js

@@ -1,6 +1,6 @@
 var class_logbook_widget =
 [
-    [ "LogbookWidget", "class_logbook_widget.html#aaf8316b43f9bddae7c9ad5cb6b993887", null ],
+    [ "LogbookWidget", "class_logbook_widget.html#a0909eeda0cb51c94eb493a05d44876e4", null ],
     [ "~LogbookWidget", "class_logbook_widget.html#a7d7716c7a9506e70b9ce53a5a27753ea", null ],
     [ "changeEvent", "class_logbook_widget.html#a16abfcb25c7ae304728acb6c3554fdb0", null ],
     [ "onLogbookWidget_viewSelectionChanged", "class_logbook_widget.html#a72b4eb07e8517a138ad731c32e8a3aff", null ],

+ 8 - 9
docs/html/class_new_flight_dialog-members.html

@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.17"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>openPilotLog: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
@@ -35,10 +35,10 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.17 -->
+<!-- Generated by Doxygen 1.9.1 -->
 <script type="text/javascript">
 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
 /* @license-end */
 </script>
 <script type="text/javascript" src="menudata.js"></script>
@@ -90,17 +90,16 @@ $(document).ready(function(){initNavTree('class_new_flight_dialog.html',''); ini
 
 <p>This is the complete list of members for <a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_new_flight_dialog.html#a28d14d3bf3c2a283c43456a25d97899d">NewFlightDialog</a>(QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="class_new_flight_dialog.html#ad60b284ebebae287c00f0c9f30105f28">NewFlightDialog</a>(int row_id, QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~NewFlightDialog</b>() (defined in <a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a>)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_new_flight_dialog.html#a22f8f768399ceb22f064fb8cb24c3c28">eventFilter</a>(QObject *object, QEvent *event) override</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="class_new_flight_dialog.html#a69fe866923d7456caf890a8aa2fa0aaa">NewFlightDialog</a>(ACompletionData &amp;completion_data, QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_new_flight_dialog.html#a40c7259679534de33230b5e3c45539e1">NewFlightDialog</a>(ACompletionData &amp;completion_data, RowId_T row_id, QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~NewFlightDialog</b>() (defined in <a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a>)</td><td class="entry"><a class="el" href="class_new_flight_dialog.html">NewFlightDialog</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated by
-    <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
   </ul>
 </div>
 </body>

Some files were not shown because too many files changed in this diff