swift
Loading...
Searching...
No Matches
datainfoareacomponent.cpp
1// SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3
5
6#include <QDateTime>
7#include <QIcon>
8#include <QTabWidget>
9#include <QtGlobal>
10
11#include "ui_datainfoareacomponent.h"
12
21#include "gui/guiapplication.h"
22#include "misc/directoryutils.h"
23#include "misc/icons.h"
24#include "misc/logmessage.h"
26#include "misc/statusmessage.h"
28#include "misc/verify.h"
29
30using namespace swift::misc;
31using namespace swift::misc::network;
32using namespace swift::gui;
33using namespace swift::gui::components;
34
36{
45
47
48 CDbModelComponent *CDataInfoAreaComponent::getModelComponent() const { return ui->comp_DbModels; }
49
50 CDbLiveryComponent *CDataInfoAreaComponent::getLiveryComponent() const { return ui->comp_DbLiveries; }
51
53
55
56 CDbAirlineIcaoComponent *CDataInfoAreaComponent::getAirlineComponent() const { return ui->comp_DbAirlineIcao; }
57
58 CDbCountryComponent *CDataInfoAreaComponent::getCountryComponent() const { return ui->comp_DbCountries; }
59
61 {
62 return ui->comp_DbAircraftCategories;
63 }
64
66 {
67 if (!sGui || !sGui->getWebDataServices()->hasSuccesfullyConnectedSwiftDb())
68 {
69 CLogMessage(this).warning(u"No connection to DB yet, no new data loaded which can be written");
70 return false;
71 }
72
73 // write to disk
74 const bool s = sGui->getWebDataServices()->writeDbDataToDisk(CSwiftDirectories::staticDbFilesDirectory());
75 if (s)
76 {
77 CLogMessage(this).info(u"Written DB data");
78 }
79 else
80 {
81 CLogMessage(this).error(u"Cannot write DB data");
82 }
83 return s;
84 }
85
87 {
88 if (!sGui)
89 {
90 return false;
91 }
92 const CStatusMessageList msgs = sGui->getWebDataServices()->initDbCachesFromLocalResourceFiles(true);
93
94 // info
95 bool ok = false;
96 if (msgs.isSuccess())
97 {
98 CLogMessage(this).info(u"Read DB data from directory: %1") << CSwiftDirectories::staticDbFilesDirectory();
99 ui->comp_DbAircraftIcao->showLoadIndicator();
100 ui->comp_DbAirlineIcao->showLoadIndicator();
101 ui->comp_DbCountries->showLoadIndicator();
102 ui->comp_DbDistributors->showLoadIndicator();
103 ui->comp_DbLiveries->showLoadIndicator();
104 ui->comp_DbModels->showLoadIndicator();
105 ok = true;
106 }
107 else
108 {
110 }
111 return ok;
112 }
113
115 {
116 auto area = static_cast<InfoArea>(areaIndex);
117 switch (area)
118 {
119 case InfoAreaAircraftIcao:
120 case InfoAreaAirlineIcao:
121 case InfoAreaLiveries:
122 case InfoAreaModels:
123 case InfoAreaCountries:
124 case InfoAreaAircraftCategories:
125 default: return { 800, 600 };
126 }
127 }
128
130 {
131 auto area = static_cast<InfoArea>(areaIndex);
132 switch (area)
133 {
134 case InfoAreaAircraftIcao: return CIcons::appAircraftIcao16();
135 case InfoAreaAirlineIcao: return CIcons::appAirlineIcao16();
136 case InfoAreaLiveries: return CIcons::appLiveries16();
137 case InfoAreaDistributors: return CIcons::appDistributors16();
138 case InfoAreaModels: return CIcons::appModels16();
139 case InfoAreaCountries: return CIcons::appCountries16();
140 case InfoAreaAircraftCategories: return CIcons::appAircraftCategories16();
141 default: return CIcons::empty();
142 }
143 }
144
146 {
147 sGui->getWebDataServices()->triggerLoadingDirectlyFromDb(
149 }
150
151 void CDataInfoAreaComponent::requestUpdatedData(CEntityFlags::Entity entity)
152 {
153 bool requested = false;
154 if (entity.testFlag(CEntityFlags::ModelEntity))
155 {
156 ui->comp_DbModels->requestUpdatedData();
157 requested = true;
158 }
159
160 // sanity
161 SWIFT_VERIFY_X(requested, Q_FUNC_INFO, "Entity not supported");
162 Q_UNUSED(requested);
163 }
164} // namespace swift::gui::components
CInfoArea(QWidget *parent=nullptr)
Constructor.
Definition infoarea.cpp:38
void setTabBarPosition(QTabWidget::TabPosition position)
Tab position for docked widgets tab.
void initInfoArea()
Init area after(!) GUI is initialized.
Definition infoarea.cpp:45
void requestUpdateOfAllDbData()
Request update of all DB data.
CDbAirlineIcaoComponent * getAirlineComponent() const
DB airline ICAO component.
CDataInfoAreaComponent(QWidget *parent=nullptr)
Constructor.
CDbModelComponent * getModelComponent() const
DB model component.
CDbAircraftIcaoComponent * getAircraftComponent() const
DB aircraft ICAO component.
CDbDistributorComponent * getDistributorComponent() const
DB distributor component.
CDbAircraftCategoryComponent * getAircraftCategoryComponent() const
DB aircraft category componentxs.
bool writeDbDataToResourceDir() const
Write to resource dir.
void requestUpdatedData(swift::misc::network::CEntityFlags::Entity entity)
Load new data (based on timestamp, incremental).
CDbLiveryComponent * getLiveryComponent() const
DB livery component.
CDbCountryComponent * getCountryComponent() const
DB country component.
QSize getPreferredSizeWhenFloating(int areaIndex) const
Preferred size when floating (size hint).
const QPixmap & indexToPixmap(int areaIndex) const
Info area (index) to icon.
static const QPixmap & appModels16()
Models.
static const QPixmap & appLiveries16()
Liveries.
static const QPixmap & appAircraftCategories16()
Categories.
static const QPixmap & appAirlineIcao16()
Airline ICAO.
static const QPixmap & empty()
Empty icon.
static const QPixmap & appAircraftIcao16()
Aircraft ICAO.
static const QPixmap & appDistributors16()
Distributors.
static const QPixmap & appCountries16()
Countries.
static const QPixmap & swiftDatabase24()
swift icon
Class for emitting a log message.
Definition logmessage.h:27
static void preformatted(const CStatusMessage &statusMessage)
Sends a verbatim, preformatted message to the log.
Derived & warning(const char16_t(&format)[N])
Set the severity to warning, providing a format string.
Derived & error(const char16_t(&format)[N])
Set the severity to error, providing a format string.
Derived & info(const char16_t(&format)[N])
Set the severity to info, providing a format string.
Status messages, e.g. from Core -> GUI.
bool isSuccess() const
All messages are marked as success.
static const QString & staticDbFilesDirectory()
Where static DB files are located.
@ AllDbEntitiesNoInfoObjectsNoAirportsAndCategories
all DB entities, no info objects and airports
Definition entityflags.h:51
High level reusable GUI components.
GUI related classes.
Free functions in swift::misc.
QObject * parent() const const
QWidget(QWidget *parent, Qt::WindowFlags f)
void setWindowIcon(const QIcon &icon)
#define SWIFT_VERIFY_X(COND, WHERE, WHAT)
A weaker kind of assert.
Definition verify.h:26