swift
aircraftmodelvalidationdialog.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <atomic>
7 
8 #include <QDialogButtonBox>
9 #include <QPointer>
10 #include <QPushButton>
11 
12 #include "ui_aircraftmodelvalidationdialog.h"
13 
15 
16 using namespace swift::misc;
17 using namespace swift::misc::simulation;
18 
19 namespace swift::gui::views
20 {
21  CAircraftModelValidationDialog::CAircraftModelValidationDialog(QWidget *parent)
22  : QDialog(parent), ui(new Ui::CAircraftModelValidationDialog)
23  {
24  ui->setupUi(this);
25  this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
26 
27  QPushButton *validateButton = new QPushButton("Validate", ui->bb_ValidationDialog);
28  ui->bb_ValidationDialog->addButton(validateButton, QDialogButtonBox::ActionRole);
29  connect(validateButton, &QPushButton::released, this, &CAircraftModelValidationDialog::validate,
30  Qt::QueuedConnection);
31  }
32 
34 
36  const QString &simulatorDir)
37  {
38  m_models = models;
39  m_simulator = simulator;
40  m_simulatorDir = simulatorDir;
41  }
42 
44  {
45  QPointer<CAircraftModelValidationDialog> myself(this);
46  QTimer::singleShot(delayMs, this, [=] {
47  if (!myself) { return; }
48  this->validate();
49  });
50  }
51 
52  void CAircraftModelValidationDialog::validate()
53  {
54  // in view validation of models
55  ui->comp_StatusMessage->clear();
56  if (m_models.isEmpty()) { return; }
57 
58  CAircraftModelList valid;
59  CAircraftModelList invalid;
60  const bool ignoreEmpty = false;
61  const int maxFailedFiles = 25;
62  std::atomic_bool wasStopped { false };
63  const CStatusMessageList msgs = CAircraftModelUtilities::validateModelFiles(
64  m_simulator, m_models, valid, invalid, ignoreEmpty, maxFailedFiles, wasStopped, m_simulatorDir);
65  ui->comp_StatusMessage->clear();
66  ui->comp_StatusMessage->setNoSorting(); // we use the pre-sorted list
67  ui->comp_StatusMessage->appendStatusMessagesToList(msgs);
68  }
69 
70 } // namespace swift::gui::views
void setModels(const swift::misc::simulation::CAircraftModelList &models, const swift::misc::simulation::CSimulatorInfo &simulator, const QString &simulatorDir)
Models.
void triggerValidation(int delayMs=2500)
Trigger a validation.
bool isEmpty() const
Synonym for empty.
Definition: sequence.h:285
Status messages, e.g. from Core -> GUI.
Value object encapsulating a list of aircraft models.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
Views, mainly QTableView.
Free functions in swift::misc.
auto singleShot(int msec, QObject *target, F &&task)
Starts a single-shot timer which will call a task in the thread of the given object when it times out...
Definition: threadutils.h:30