Skip to content

Commit 73a1179

Browse files
committed
refactor: Remove program parts from plugins in misc
1 parent 03f4852 commit 73a1179

18 files changed

+238
-443
lines changed

src/gui/components/dbownmodelscomponent.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,8 @@ namespace swift::gui::components
481481

482482
if (hideIndicator) { ui->tvp_OwnAircraftModels->hideLoadIndicatorForced(); }
483483

484+
// TODO TZ check if some columns can be hidden automatically for different sims
485+
484486
// cache loads may occur in background, do not adjust UI settings
485487
if (info == IAircraftModelLoader::CacheLoaded) { return; }
486488

src/gui/components/settingssimulatorbasicscomponent.cpp

Lines changed: 89 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,39 @@ namespace swift::gui::components
233233
{
234234
const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue());
235235
this->displaySettings(simulator);
236-
if (simulator == 64)
236+
237+
// special handling for MSFS 2024 only visual changes
238+
if (simulator == CSimulatorInfo::msfs2024())
239+
{
237240
ui->gb_ModelSet->setVisible(true);
241+
ui->lbl_ExcludeDirectories->setText(QStringLiteral("modelstring exclude patterns:"));
242+
ui->lbl_ModelDirectory->setText(QStringLiteral("modelstring filter patterns:"));
243+
ui->lbl_ModelDirectory->setToolTip(
244+
QStringLiteral("If the field is not empty, these patterns are used as a filter for the model string."));
245+
ui->pb_AdjustModelDirectory->setVisible(false);
246+
ui->pb_ExcludeFileDialog->setVisible(false);
247+
ui->pb_ModelFileDialog->setVisible(false);
248+
const QString html =
249+
"<html><head/><body><p><img src=':/diagona/icons/diagona/icons/exclamation--frame.png'/>&quot;These "
250+
"filter settings are applied to the model string passed from the flight simulator to swift. If the "
251+
"effect is unclear, start with the default settings!&quot;.</p></body></html>";
252+
ui->lbl_ModelDirsInfo->setText(html);
253+
}
238254
else
255+
{
239256
ui->gb_ModelSet->setVisible(false);
257+
ui->lbl_ExcludeDirectories->setText(QStringLiteral("Exclude directory patterns:"));
258+
ui->lbl_ModelDirectory->setText(QStringLiteral("Model directories:"));
259+
ui->lbl_ModelDirectory->setToolTip(QStringLiteral("remove redundant directories, fix file paths .."));
260+
ui->pb_AdjustModelDirectory->setVisible(true);
261+
ui->pb_ExcludeFileDialog->setVisible(true);
262+
ui->pb_ModelFileDialog->setVisible(true);
263+
const QString html =
264+
"<html><head/><body><p><img "
265+
"src=':/diagona/icons/diagona/icons/exclamation--frame.png'/>&quot;If you change the model "
266+
"directories, you must update your model set. See documentation. &quot;.</p></body></html>";
267+
ui->lbl_ModelDirsInfo->setText(html);
268+
}
240269

241270
this->displayDefaultValuesAsPlaceholder(simulator);
242271
}
@@ -337,8 +366,27 @@ namespace swift::gui::components
337366

338367
void CSettingsSimulatorBasicsComponent::displaySettings(const CSimulatorInfo &simulator)
339368
{
340-
this->displayExcludeDirectoryPatterns(m_settings.getModelExcludeDirectoryPatternsIfNotDefault(simulator));
341-
this->displayModelDirectories(m_settings.getModelDirectoriesIfNotDefault(simulator));
369+
// if (simulator.isMSFS2024())
370+
//{
371+
372+
// //CSpecializedSimulatorSettings settings = this->getSimulatorSettings(simulator.isMSFS2024());
373+
// //CSimulatorSettings m_generic = settings.getGenericSettings();
374+
// //QStringList excludePatterns = m_generic.getModelExcludeDirectoryPatterns();
375+
// //QStringList filterPatterns = m_generic.getModelDirectories();
376+
377+
// //const CSimulatorSettings s = m_settings.getSettings(simulator);
378+
// //const QString es = s.getSimulatorDirectory();
379+
// ui->pte_ModelDirectories->clear();
380+
// ui->pte_ExcludeDirectories->clear();
381+
382+
// //this->displayModelDirectories(excludePatterns);
383+
// //this->displayExcludeDirectoryPatterns(filterPatterns);
384+
//}
385+
// else
386+
//{
387+
// this->displayModelDirectories(m_settings.getModelDirectoriesIfNotDefault(simulator));
388+
// this->displayExcludeDirectoryPatterns(m_settings.getModelExcludeDirectoryPatternsIfNotDefault(simulator));
389+
//}
342390

343391
// ui->le_SimulatorDirectory->setText(m_settings.getSimulatorDirectoryIfNotDefault(simulator));
344392
// based on discussion here, always display:
@@ -350,32 +398,59 @@ namespace swift::gui::components
350398
void CSettingsSimulatorBasicsComponent::displayDefaultValuesAsPlaceholder(const CSimulatorInfo &simulator)
351399
{
352400
const QString simDir = this->getFileBrowserSimulatorDirectory();
353-
ui->le_SimulatorDirectory->setPlaceholderText(simDir.isEmpty() ? "Simulator directory" : simDir);
401+
402+
// only real placeholder shut set as placeholder
403+
simDir.isEmpty() ? (ui->le_SimulatorDirectory->setPlaceholderText("Simulator directory")) :
404+
(ui->le_SimulatorDirectory->setText(simDir));
354405

355406
// we take the settings and update to latest sim.directory
356407
CSpecializedSimulatorSettings settings = m_settings.getSpecializedSettings(simulator);
357408
settings.setSimulatorDirectory(simDir);
358409

359410
CSimulatorSettings m_generic = settings.getGenericSettings();
360411

412+
// this setting is only visable for msfs2024 but we set it always to keep code simple. the checkbox is hidden in
413+
// other simulators this settings are used to load/not load the modelset when starting swiftgui
361414
ui->cb_WithDbEntry->setChecked(m_generic.getPropertyWithDbEntry());
362415
ui->cb_DistributorFiltered->setChecked(m_generic.getPropertyDistributorFiltered());
363416
ui->cb_LoadNewModelset->setChecked(m_generic.getPropertyModelSet());
364417

365-
const QStringList m = settings.getModelDirectoriesFromSimulatorDirectoryOrDefault();
366-
if (m.isEmpty()) { ui->pte_ModelDirectories->setPlaceholderText("Model directories"); }
367-
else
418+
// Storeable content should be displayed as planetext so that it is actually saved.
419+
if (simulator.isMSFS2024())
368420
{
369-
const QString ms = m.join("\n");
370-
ui->pte_ModelDirectories->setPlaceholderText(ms);
421+
QStringList m = m_generic.getModelDirectories();
422+
if (m.isEmpty()) { ui->pte_ModelDirectories->setPlainText("*"); }
423+
else
424+
{
425+
const QString ms = m.join("\n");
426+
ui->pte_ModelDirectories->setPlainText(ms);
427+
}
428+
429+
QStringList e = m_generic.getModelExcludeDirectoryPatterns();
430+
if (e.isEmpty()) { ui->pte_ExcludeDirectories->setPlainText("PassiveAircraft"); }
431+
else
432+
{
433+
const QString es = e.join("\n");
434+
ui->pte_ExcludeDirectories->setPlainText(es);
435+
}
371436
}
372-
373-
const QStringList e = settings.getDefaultModelExcludeDirectoryPatterns();
374-
if (e.isEmpty()) { ui->pte_ExcludeDirectories->setPlaceholderText("Exclude directories"); }
375437
else
376438
{
377-
const QString es = e.join("\n");
378-
ui->pte_ExcludeDirectories->setPlaceholderText(es);
439+
const QStringList m = settings.getModelDirectoriesFromSimulatorDirectoryOrDefault();
440+
if (m.isEmpty()) { ui->pte_ModelDirectories->setPlaceholderText("Model directories"); }
441+
else
442+
{
443+
const QString ms = m.join("\n");
444+
ui->pte_ModelDirectories->setPlainText(ms);
445+
}
446+
447+
const QStringList e = settings.getDefaultModelExcludePatterns();
448+
if (e.isEmpty()) { ui->pte_ExcludeDirectories->setPlaceholderText("Exclude directories"); }
449+
else
450+
{
451+
const QString es = e.join("\n");
452+
ui->pte_ExcludeDirectories->setPlainText(es);
453+
}
379454
}
380455
}
381456

src/gui/components/settingssimulatorbasicscomponent.ui

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,9 @@
159159
<property name="text">
160160
<string>reset</string>
161161
</property>
162+
<property name="toolTip">
163+
<string>Sets the input mask to the default values ​​and deletes the saved values.</string>
164+
</property>
162165
</widget>
163166
</item>
164167
<item row="1" column="0">
@@ -173,6 +176,9 @@
173176
<property name="text">
174177
<string>Model directories:</string>
175178
</property>
179+
<property name="toolTip">
180+
<string>remove redundant directories, fix file paths ...</string>
181+
</property>
176182
</widget>
177183
</item>
178184
<item row="1" column="2">
@@ -234,6 +240,12 @@
234240
<property name="wordWrap">
235241
<bool>true</bool>
236242
</property>
243+
<property name="minimumSize">
244+
<size>
245+
<width>150</width>
246+
<height>100</height>
247+
</size>
248+
</property>
237249
</widget>
238250
</item>
239251
</layout>

src/gui/models/aircraftmodellistmodel.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ namespace swift::gui::models
4646
case NotSet:
4747
case OwnAircraftModelClient:
4848
m_columns.addColumn(CColumn::standardString("model", { CAircraftModel::IndexModelString }));
49+
50+
m_columns.addColumn(CColumn::standardString("liverypart", CAircraftModel::IndexModelLivery));
4951
m_columns.addColumn(
5052
CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
5153
m_columns.addColumn(
@@ -83,6 +85,8 @@ namespace swift::gui::models
8385
case OwnAircraftModelMappingTool:
8486
case StashModel:
8587
m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
88+
89+
m_columns.addColumn(CColumn::standardString("liverypart", CAircraftModel::IndexModelLivery));
8690
m_columns.addColumn(
8791
CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
8892
if (mode == StashModel)

src/misc/simulation/aircraftmodel.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ namespace swift::misc::simulation
284284
case IndexLivery: return m_livery.propertyByIndex(index.copyFrontRemoved());
285285
case IndexCallsign: return m_callsign.propertyByIndex(index.copyFrontRemoved());
286286
case IndexMembersDbStatus: return this->getMembersDbStatus();
287+
case IndexModelLivery: return QVariant(m_modelLivery);
287288
default: return CValueObject::propertyByIndex(index);
288289
}
289290
}
@@ -776,6 +777,13 @@ namespace swift::misc::simulation
776777
return (p.contains(path, cs));
777778
}
778779

780+
bool CAircraftModel::matchesModelStringAndLivery(const QString &modelString, const QString &modelLivery,
781+
Qt::CaseSensitivity sensitivity) const
782+
{
783+
return (stringCompare(modelString, m_modelString, sensitivity) &&
784+
stringCompare(modelLivery, m_modelLivery, sensitivity));
785+
}
786+
779787
bool CAircraftModel::matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const
780788
{
781789
return stringCompare(modelString, m_modelString, sensitivity);
@@ -1009,6 +1017,7 @@ namespace swift::misc::simulation
10091017
const QString modelName(json.value(prefix % u"name").toString());
10101018
const QString modelMode(json.value(prefix % u"mode").toString());
10111019
const QString parts(json.value(prefix % u"parts").toString());
1020+
const QString modelLivery(json.value(prefix % u"modellivery").toString());
10121021

10131022
// check for undefined to rule out 0ft values
10141023
const QJsonValue cgjv = json.value(prefix % u"cgft");
@@ -1018,6 +1027,7 @@ namespace swift::misc::simulation
10181027
const CSimulatorInfo simInfo = CSimulatorInfo::fromDatabaseJson(json, prefix);
10191028
CAircraftModel model(modelString, CAircraftModel::TypeDatabaseEntry, simInfo, modelName, modelDescription);
10201029
model.setModelStringAlias(modelStringAlias);
1030+
model.setModelLivery(modelLivery); // msfs2024
10211031
model.setModelModeAsString(modelMode);
10221032
model.setSupportedParts(parts);
10231033
model.setCG(cg);

src/misc/simulation/aircraftmodel.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ namespace swift::misc
126126
IndexSupportedParts,
127127
IndexModelModeAsIcon,
128128
IndexHasQueriedModelString,
129-
IndexMembersDbStatus
129+
IndexMembersDbStatus,
130+
IndexModelLivery, // MSFS2024
130131
};
131132

132133
//! \copydoc swift::misc::CValueObject::registerMetadata
@@ -433,6 +434,10 @@ namespace swift::misc
433434
//! Matches model string?
434435
bool matchesModelString(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
435436

437+
//! Matches model string and livery?
438+
bool matchesModelStringAndLivery(const QString &modelString, const QString &modelLivery,
439+
Qt::CaseSensitivity sensitivity) const;
440+
436441
//! Matches model string or alias?
437442
bool matchesModelStringOrAlias(const QString &modelString, Qt::CaseSensitivity sensitivity) const;
438443

@@ -606,6 +611,7 @@ namespace swift::misc
606611
SWIFT_METAMEMBER(supportedParts),
607612
SWIFT_METAMEMBER(modelString, 0, CaseInsensitiveComparison),
608613
SWIFT_METAMEMBER(modelStringAlias, 0, CaseInsensitiveComparison),
614+
SWIFT_METAMEMBER(modelLivery, 0, CaseInsensitiveComparison),
609615
SWIFT_METAMEMBER(name),
610616
SWIFT_METAMEMBER(description, 0, DisabledForComparison),
611617
SWIFT_METAMEMBER(fileName, 0, DisabledForComparison),

src/misc/simulation/aircraftmodellist.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -731,12 +731,14 @@ namespace swift::misc::simulation
731731
return d;
732732
}
733733

734-
bool CAircraftModelList::removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity)
734+
bool CAircraftModelList::removeModelWithString(const QString &modelString, const QString &modelLivery,
735+
Qt::CaseSensitivity sensitivity)
735736
{
736737
if (modelString.isEmpty()) { return false; }
737738
if (this->isEmpty()) { return false; }
738-
const int r = this->removeIf(
739-
[&](const CAircraftModel &model) { return model.matchesModelString(modelString, sensitivity); });
739+
const int r = this->removeIf([&](const CAircraftModel &model) {
740+
return model.matchesModelStringAndLivery(modelString, modelLivery, sensitivity);
741+
});
740742
return r > 0;
741743
}
742744

@@ -849,7 +851,11 @@ namespace swift::misc::simulation
849851
Qt::CaseSensitivity sensitivity)
850852
{
851853
bool r = false;
852-
if (!this->isEmpty()) { r = this->removeModelWithString(addOrReplaceModel.getModelString(), sensitivity); }
854+
if (!this->isEmpty())
855+
{
856+
r = this->removeModelWithString(addOrReplaceModel.getModelString(), addOrReplaceModel.getModelLivery(),
857+
sensitivity);
858+
}
853859
this->push_back(addOrReplaceModel);
854860
return r;
855861
}
@@ -1414,10 +1420,6 @@ namespace swift::misc::simulation
14141420
break;
14151421
}
14161422

1417-
if (false) // TODO TZ true if msfs2024
1418-
break;
1419-
1420-
// from here not for MSFS2024 (no files)
14211423
if (!model.hasFileName())
14221424
{
14231425
if (ignoreEmptyFileNames) { break; }
@@ -1747,12 +1749,12 @@ namespace swift::misc::simulation
17471749
if (valid)
17481750
{
17491751
validModels.push_back(model);
1750-
invalidModels.removeModelWithString(model.getModelString(), Qt::CaseInsensitive);
1752+
invalidModels.removeModelWithString(model.getModelString(), model.getModelLivery(), Qt::CaseInsensitive);
17511753
}
17521754
else
17531755
{
17541756
invalidModels.push_back(model);
1755-
validModels.removeModelWithString(model.getModelString(), Qt::CaseInsensitive);
1757+
validModels.removeModelWithString(model.getModelString(), model.getModelLivery(), Qt::CaseInsensitive);
17561758
}
17571759
}
17581760

src/misc/simulation/aircraftmodellist.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,8 @@ namespace swift::misc
334334

335335
//! Remove those models with given model strings
336336
//! \return number of elements removed
337-
bool removeModelWithString(const QString &modelString, Qt::CaseSensitivity sensitivity);
337+
bool removeModelWithString(const QString &modelString, const QString &modelLivery,
338+
Qt::CaseSensitivity sensitivity);
338339

339340
//! Remove those models with given model strings
340341
//! \return number of elements removed

src/misc/simulation/aircraftmodelloader.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,27 @@ namespace swift::misc::simulation
131131
return;
132132
}
133133

134-
// really load from disk?
135-
const QStringList modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
136-
if (m_skipLoadingEmptyModelDir && modelDirs.isEmpty())
134+
QStringList modelDirs = { "", "" };
135+
if (!simulator.isMSFS2024())
136+
//{
137+
// emit this->loadingFinished(m_loadingMessages, simulator, LoadingSkipped);
138+
// return;
139+
//}
140+
// else
137141
{
138-
const CStatusMessage status = CStatusMessage(this, CStatusMessage::SeverityWarning,
139-
u"Empty or not existing '%1' directory '%2', skipping read")
140-
<< simulator.toQString() << modelDirectories.join(", ");
141-
m_loadingMessages.push_back(status);
142-
m_loadingMessages.freezeOrder();
143-
emit this->loadingFinished(m_loadingMessages, simulator, LoadingSkipped);
144-
return;
142+
// really load from disk?
143+
modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
144+
if (m_skipLoadingEmptyModelDir && modelDirs.isEmpty())
145+
{
146+
const CStatusMessage status =
147+
CStatusMessage(this, CStatusMessage::SeverityWarning,
148+
u"Empty or not existing '%1' directory '%2', skipping read")
149+
<< simulator.toQString() << modelDirectories.join(", ");
150+
m_loadingMessages.push_back(status);
151+
m_loadingMessages.freezeOrder();
152+
emit this->loadingFinished(m_loadingMessages, simulator, LoadingSkipped);
153+
return;
154+
}
145155
}
146156

147157
this->setObjectInfo(simulator);

0 commit comments

Comments
 (0)