swift
Loading...
Searching...
No Matches
dbaircraftcategorycomponent.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 <QStringBuilder>
7
8#include "ui_dbaircraftcategorycomponent.h"
9
11#include "gui/guiapplication.h"
12
13using namespace swift::core;
14using namespace swift::misc::network;
15using namespace swift::misc::aviation;
16using namespace swift::gui::views;
17
19{
22 {
23 ui->setupUi(this);
24 this->setViewWithIndicator(ui->tvp_AircraftCategoryView);
25
26 ui->tvp_AircraftCategoryView->setResizeMode(CAircraftCategoryView::ResizingOff);
27 ui->tvp_AircraftCategoryView->allowDragDrop(true, false);
28 ui->tvp_AircraftCategoryView->menuAddItems(CViewBaseNonTemplate::MenuCopy);
29 // ui->tvp_AircraftCategoryView->setFilterWidget(ui->filter_AircraftIcao);
30
31 connect(ui->tvp_AircraftCategoryView, &CAircraftCategoryView::requestNewBackendData, this,
32 &CDbAircraftCategoryComponent::onReload);
33 connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this,
34 &CDbAircraftCategoryComponent::onCategoryRead, Qt::QueuedConnection);
35 connect(sGui->getWebDataServices(), &CWebDataServices::entityDownloadProgress, this,
36 &CDbAircraftCategoryComponent::onEntityDownloadProgress, Qt::QueuedConnection);
38 sGui->getWebDataServices()->getAircraftCategoriesCount());
39 }
40
42
43 void CDbAircraftCategoryComponent::onCategoryRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState,
44 int count)
45 {
46 using namespace std::chrono_literals;
47 Q_UNUSED(count);
48 if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices())
49 {
50 return;
51 }
52 if (!entity.testFlag(CEntityFlags::AircraftCategoryEntity))
53 {
54 return;
55 }
56
58 {
59 this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s);
60 const CAircraftCategoryList categories = sGui->getWebDataServices()->getAircraftCategories();
61 ui->tvp_AircraftCategoryView->updateContainerMaybeAsync(categories);
62 ui->tvp_AircraftCategoryTree->updateContainer(categories);
63 }
64 else
65 {
66 this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " %
68 10s);
69 }
70 }
71
72 void CDbAircraftCategoryComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress,
73 qint64 current, qint64 max, const QUrl &url)
74 {
75 using namespace std::chrono_literals;
76
77 if (!entity.testFlag(CEntityFlags::AircraftCategoryEntity))
78 {
79 return;
80 }
81 this->showDownloadProgress(progress, current, max, url, 5s);
82 Q_UNUSED(logId);
83 }
84
85 void CDbAircraftCategoryComponent::onReload()
86 {
87 if (!sGui || sGui->isShuttingDown())
88 {
89 return;
90 }
92 }
93
94} // namespace swift::gui::components
bool isShuttingDown() const
Is application shutting down?
CWebDataServices * getWebDataServices() const
Get the web data services.
void entityDownloadProgress(swift::misc::network::CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url)
Download progress for an entity.
swift::misc::network::CEntityFlags::Entity triggerLoadingDirectlyFromDb(swift::misc::network::CEntityFlags::Entity whatToRead, const QDateTime &newerThan=QDateTime())
Trigger reload from DB, loads the DB data and bypasses the caches checks and info objects.
void dataRead(swift::misc::network::CEntityFlags::Entity entity, swift::misc::network::CEntityFlags::ReadState state, int number, const QUrl &url)
Combined read signal.
void setViewWithIndicator(swift::gui::views::CViewBaseNonTemplate *viewWithIndicator)
Set the corresponding view.
bool showOverlayHTMLMessage(const QString &htmlMessage, std::chrono::milliseconds timeout=std::chrono::milliseconds(0))
void showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, std::chrono::milliseconds timeout=std::chrono::milliseconds(0))
COverlayMessagesFrame(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
Constructor.
void requestNewBackendData()
Load data from backend (where it makes sense).
@ MenuCopy
copy (for copy/paste)
Definition viewbase.h:132
Value object encapsulating a list of ICAO codes.
static bool isFinishedReadState(ReadState state)
Any finished state.
@ AircraftCategoryEntity
aircraft category entities
Definition entityflags.h:40
static const QString & stateToString(ReadState flag)
Convert to string.
static QString entitiesToString(CEntityFlags::Entity entities, const QString &separator=", ")
Entities to string list.
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
Backend services of the swift project, like dealing with the network or the simulators.
Definition actionbind.cpp:7
High level reusable GUI components.
Views, mainly QTableView.
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
QueuedConnection
QWidget(QWidget *parent, Qt::WindowFlags f)