This repository was archived by the owner on Dec 5, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaircraftmodelloader_8cpp_source.html
387 lines (385 loc) · 89.9 KB
/
aircraftmodelloader_8cpp_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
<!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>swift: src/blackmisc/simulation/aircraftmodelloader.cpp 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="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="doxygen-awesome.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="projectalign" style="padding-left: 0.5em;">
<div id="projectname">swift
</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&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&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>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_9687d2aaac47be79d7525830e55feee8.html">blackmisc</a></li><li class="navelem"><a class="el" href="dir_cd2f2d0ca211e9845f9d0ff4817a2bb1.html">simulation</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">aircraftmodelloader.cpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="aircraftmodelloader_8h.html">blackmisc/simulation/aircraftmodelloader.h</a>"</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "<a class="code" href="xplaneutil_8h.html">blackmisc/simulation/xplane/xplaneutil.h</a>"</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "<a class="code" href="directoryutils_8h.html">blackmisc/directoryutils.h</a>"</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "<a class="code" href="mixincompare_8h.html">blackmisc/mixin/mixincompare.h</a>"</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="logmessage_8h.html">blackmisc/logmessage.h</a>"</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <QDir></span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <Qt></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <QtGlobal></span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <QMap></span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">using namespace </span><a class="code" href="namespace_black_misc.html">BlackMisc</a>;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">using namespace </span>BlackMisc::Simulation::Data;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">using namespace </span>BlackMisc::Simulation::Settings;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">namespace </span>BlackMisc::Simulation</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> {</div>
<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1466dacd70f2eb801f42bfc3d4dfc249"> 21</a></span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> &<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1466dacd70f2eb801f42bfc3d4dfc249">IAircraftModelLoader::getLogCategories</a>()</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> cats({ <a class="code" href="class_black_misc_1_1_c_log_categories.html#ad70afa28f5cd7781ab63b6b406ee5def">CLogCategories::modelLoader</a>() });</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">return</span> cats;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  }</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  </div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4"> 27</a></span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> &<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4">IAircraftModelLoader::enumToString</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4c">IAircraftModelLoader::LoadFinishedInfo</a> info)</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> loaded(<span class="stringliteral">"cache loaded"</span>);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> skipped(<span class="stringliteral">"loading skipped"</span>);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> parsed(<span class="stringliteral">"parsed data"</span>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> failed(<span class="stringliteral">"failed"</span>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">switch</span> (info)</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> CacheLoaded: <span class="keywordflow">return</span> loaded;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">case</span> ParsedData: <span class="keywordflow">return</span> parsed;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">case</span> LoadingSkipped: <span class="keywordflow">return</span> skipped;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">case</span> LoadingFailed: <span class="keywordflow">return</span> failed;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> unknown(<span class="stringliteral">"??"</span>);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> unknown;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#af958abf759c56be71f5a475257b6d6bf"> 47</a></span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> &<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4">IAircraftModelLoader::enumToString</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbd">IAircraftModelLoader::LoadModeFlag</a> modeFlag)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> notSet(<span class="stringliteral">"not set"</span>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> directly(<span class="stringliteral">"load directly"</span>);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> background(<span class="stringliteral">"load in background"</span>);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> cacheFirst(<span class="stringliteral">"cache first"</span>);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> cacheSkipped(<span class="stringliteral">"cache skipped"</span>);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> cacheOnly(<span class="stringliteral">"cacheOnly"</span>);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">switch</span> (modeFlag)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> NotSet: <span class="keywordflow">return</span> notSet;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">case</span> LoadDirectly: <span class="keywordflow">return</span> directly;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> LoadInBackground: <span class="keywordflow">return</span> background;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> CacheFirst: <span class="keywordflow">return</span> cacheFirst;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> CacheSkipped: <span class="keywordflow">return</span> cacheSkipped;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> CacheOnly: <span class="keywordflow">return</span> cacheOnly;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> unknown(<span class="stringliteral">"??"</span>);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> unknown;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1ae42c4805d065403d1473a53de58973"> 71</a></span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4">IAircraftModelLoader::enumToString</a>(LoadMode mode)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> modes;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (mode.testFlag(NotSet)) { modes << enumToString(NotSet); }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (mode.testFlag(LoadDirectly)) { modes << enumToString(LoadDirectly); }</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (mode.testFlag(LoadInBackground)) { modes << enumToString(LoadInBackground); }</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (mode.testFlag(CacheFirst)) { modes << enumToString(CacheFirst); }</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (mode.testFlag(CacheSkipped)) { modes << enumToString(CacheSkipped); }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> modes.<a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html#join">join</a>(<span class="stringliteral">", "</span>);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4c9051277f4f7f1952d0891d2b89d841"> 82</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4c9051277f4f7f1952d0891d2b89d841">IAircraftModelLoader::needsCacheSynchronized</a>(LoadMode mode)</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> mode.testFlag(CacheFirst) || mode.testFlag(CacheOnly);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2838f562855466394b265599ed6a6f86"> 87</a></span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2838f562855466394b265599ed6a6f86">IAircraftModelLoader::IAircraftModelLoader</a>(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">CSimulatorInfo</a> &simulator, <a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html">QObject</a> *parent) : <a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html">QObject</a>(parent),</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_simulator(simulator)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Q_ASSERT_X(simulator.<a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html#a1c500dd06d851e93eaac5dcd6205da80">isSingleSimulator</a>(), Q_FUNC_INFO, <span class="stringliteral">"Only one simulator per loader"</span>);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html#connect">connect</a>(<span class="keyword">this</span>, &<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#acaba38d909086ad3cad0c6ffa80c33f2">IAircraftModelLoader::loadingFinished</a>, <span class="keyword">this</span>, &IAircraftModelLoader::onLoadingFinished, <a class="codeRef" href="http://doc.qt.io/qt-5/qt.html#ConnectionType-enum">Qt::QueuedConnection</a>);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_provider.html">CCentralMultiSimulatorModelCachesProvider</a> *centralCaches = &CCentralMultiSimulatorModelCachesProvider::modelCachesInstance();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html#connect">connect</a>(centralCaches, &CCentralMultiSimulatorModelCachesProvider::cacheChanged, <span class="keyword">this</span>, &IAircraftModelLoader::onCacheChanged, <a class="codeRef" href="http://doc.qt.io/qt-5/qt.html#ConnectionType-enum">Qt::QueuedConnection</a>);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  this->setObjectInfo(simulator);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2d16bb22a14461a0ac31f49533eca2ab"> 98</a></span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2d16bb22a14461a0ac31f49533eca2ab">IAircraftModelLoader::~IAircraftModelLoader</a>() {}</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  </div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4aaa46ccae374642917c57b26616dd9e"> 100</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4aaa46ccae374642917c57b26616dd9e">IAircraftModelLoader::startLoading</a>(LoadMode mode, <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a797283593001c8d7ca739e86049fc616">IAircraftModelLoader::ModelConsolidationCallback</a> &modelConsolidation, <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> &modelDirectories)</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">m_loadingInProgress</a>) { <span class="keywordflow">return</span>; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (mode == NotSet) { <span class="keywordflow">return</span>; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">m_loadingInProgress</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">m_loadingMessages</a>.<a class="code" href="class_black_misc_1_1_c_sequence.html#ad47999b337703232f06ad8891e4bd16b">clear</a>();</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">CSimulatorInfo</a> simulator = this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a6e5dccf768276dabc152f7ba97198ca7">getSimulator</a>();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> needsCacheSynced = <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4c9051277f4f7f1952d0891d2b89d841">IAircraftModelLoader::needsCacheSynchronized</a>(mode);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (needsCacheSynced) { this-><a class="code" href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#af9f55bc735ac34567fdd07c5bf758c6e">synchronizeCache</a>(simulator); }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> useCachedData = !mode.testFlag(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda89af057ee835990c3c742089cc5f3517">CacheSkipped</a>) && this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a53b4773068a1572c6aa9cab5e1b4df28">hasCachedData</a>();</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (useCachedData && (mode.testFlag(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda9a96ca509ad741465f50fc291ad970af">CacheFirst</a>) || mode.testFlag(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda4173aaf47dcc65336a73bc70ca3b6945">CacheOnly</a>)))</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// we just just cache data</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_c_status_message.html">CStatusMessage</a> status(<span class="keyword">this</span>, <a class="code" href="class_black_misc_1_1_c_status_message.html#a78b4f753deecdc3f14ee20a0233bdc2a">CStatusMessage::SeverityInfo</a>, u<span class="stringliteral">"Using cached data"</span>);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  emit this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#acaba38d909086ad3cad0c6ffa80c33f2">loadingFinished</a>(status, simulator, <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4ca936f3afe234efed3a69f73985ee0b369">CacheLoaded</a>);</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (mode.testFlag(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda4173aaf47dcc65336a73bc70ca3b6945">CacheOnly</a>))</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// only cache, but we did not find any data yet (still in progress?)</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// here we rely on the cache load slot, no need to emit here, will</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// be done later in ps_cacheChanged. An alternative was to sync cache here</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">m_loadingInProgress</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// really load from disk?</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> modelDirs = this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a87080fca02e4677e45938a528675d3a8">getInitializedModelDirectories</a>(modelDirectories, simulator);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a0d58573ffad69510e88b4ee4cd8fb429">m_skipLoadingEmptyModelDir</a> && modelDirs.<a class="codeRef" href="http://doc.qt.io/qt-5/qlist.html#isEmpty">isEmpty</a>())</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_c_status_message.html">CStatusMessage</a> status = <a class="code" href="class_black_misc_1_1_c_status_message.html">CStatusMessage</a>(<span class="keyword">this</span>, <a class="code" href="class_black_misc_1_1_c_status_message.html#af98a8323ed8905e51501dbf242e6ac79">CStatusMessage::SeverityWarning</a>,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  u<span class="stringliteral">"Empty or not existing '%1' directory '%2', skipping read"</span>)</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  << simulator.<a class="code" href="class_black_misc_1_1_mixin_1_1_string.html#a742439b46e1c8a650b9424277f79c98f">toQString</a>() << modelDirectories.<a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html#join">join</a>(<span class="stringliteral">", "</span>);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">m_loadingMessages</a>.<a class="code" href="class_black_misc_1_1_c_sequence.html#a3b1a591f9338825e0364e940f8e06cb0">push_back</a>(status);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">m_loadingMessages</a>.<a class="code" href="class_black_misc_1_1_i_orderable_list.html#af8979ead9b3c420e9280c988a8b92555">freezeOrder</a>();</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  emit this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#acaba38d909086ad3cad0c6ffa80c33f2">loadingFinished</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">m_loadingMessages</a>, simulator, <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4cae388ffe5344ee4fb4c8d5615bf63e921">LoadingSkipped</a>);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  this->setObjectInfo(simulator);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a5b6405e35e0f67e3ac3aafa7ca5d67a6">startLoadingFromDisk</a>(mode, modelConsolidation, modelDirs);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a08422857f2dac538e28ac74f994f8d4e"> 145</a></span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a08422857f2dac538e28ac74f994f8d4e">IAircraftModelLoader::getFirstModelDirectoryOrDefault</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword"> </span>{</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstring.html">QString</a> md = <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8fee3d62795fedc0ae1def64d8fae1e9">m_settings</a>.<a class="code" href="class_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings.html#aac456ed8cc8bdc2379d0806bb092c80e">getFirstModelDirectoryOrDefault</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#afeef38bbd13430c6ee23fb0a552c1f9f">m_simulator</a>);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> md;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a562dcff4fb99260755a8950d8f6007d0"> 151</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a562dcff4fb99260755a8950d8f6007d0">IAircraftModelLoader::setModels</a>(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_aircraft_model_list.html">CAircraftModelList</a> &models)</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  this-><a class="code" href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a770ad112e323344287811fbbbfa0b329">setModelsForSimulator</a>(models, <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#afeef38bbd13430c6ee23fb0a552c1f9f">m_simulator</a>);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1673645035d9ad3833b3df66992f1354"> 156</a></span>  <span class="keywordtype">int</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1673645035d9ad3833b3df66992f1354">IAircraftModelLoader::updateModels</a>(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_aircraft_model_list.html">CAircraftModelList</a> &models)</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> this-><a class="code" href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a7c392e1bddb5f90baa41d5ed6371319a">updateModelsForSimulator</a>(models, <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#afeef38bbd13430c6ee23fb0a552c1f9f">m_simulator</a>);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a87080fca02e4677e45938a528675d3a8"> 161</a></span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a87080fca02e4677e45938a528675d3a8">IAircraftModelLoader::getInitializedModelDirectories</a>(<span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> &modelDirectories, <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">CSimulatorInfo</a> &simulator)<span class="keyword"> const</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> modelDirs = modelDirectories.<a class="codeRef" href="http://doc.qt.io/qt-5/qlist.html#isEmpty">isEmpty</a>() ? <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8fee3d62795fedc0ae1def64d8fae1e9">m_settings</a>.<a class="code" href="class_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings.html#ab99d2297818ea1b6362ddc193541204f">getModelDirectoriesOrDefault</a>(simulator) : modelDirectories;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  modelDirs = <a class="code" href="class_black_misc_1_1_c_file_utils.html#a592d528ef2f271b23a77af5d5df48b94">CFileUtils::fixWindowsUncPaths</a>(modelDirs);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <a class="code" href="class_black_misc_1_1_c_directory_utils.html#a533343c1b22639ff0be2bd60ee5be5eb">CDirectoryUtils::getExistingUnemptyDirectories</a>(modelDirs);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a53b4773068a1572c6aa9cab5e1b4df28"> 168</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a53b4773068a1572c6aa9cab5e1b4df28">IAircraftModelLoader::hasCachedData</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="keyword"> </span>{</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> !this-><a class="code" href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a7ac504bb13e963f572eeb62f818ad7ce">getCachedModels</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#afeef38bbd13430c6ee23fb0a552c1f9f">m_simulator</a>).<a class="code" href="class_black_misc_1_1_c_sequence.html#aa68fa203f1b72b6e94834d6b85646dde">isEmpty</a>();</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">void</span> IAircraftModelLoader::setObjectInfo(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">CSimulatorInfo</a> &simulatorInfo)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  this-><a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html#objectName-prop">setObjectName</a>(<span class="stringliteral">"Model loader for: '"</span> + simulatorInfo.<a class="code" href="class_black_misc_1_1_mixin_1_1_string.html#a742439b46e1c8a650b9424277f79c98f">toQString</a>(<span class="keyword">true</span>) + <span class="stringliteral">"'"</span>);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">void</span> IAircraftModelLoader::onLoadingFinished(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_c_status_message_list.html">CStatusMessageList</a> &statusMsgs, <span class="keyword">const</span> CSimulatorInfo &simulator, <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4c">IAircraftModelLoader::LoadFinishedInfo</a> info)</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (!this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a613313db9f1e21a998eef2918267f49a">supportsSimulator</a>(simulator)) { <span class="keywordflow">return</span>; } <span class="comment">// none of my business</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  this->setObjectInfo(simulator);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// remark: in the past status used to be bool, now it is CStatusMessage</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// so there is some redundancy here between status and m_loadingMessages</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">m_loadingInProgress</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qmap.html">QMap<int, int></a> counts = statusMsgs.<a class="code" href="class_black_misc_1_1_c_status_message_list.html#a46d04e6429bdbcc4a56d9fa35b5d6711">countSeverities</a>();</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> errors = counts.<a class="codeRef" href="http://doc.qt.io/qt-5/qmap.html#value">value</a>(SeverityError);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> warnings = counts.<a class="codeRef" href="http://doc.qt.io/qt-5/qmap.html#value">value</a>(SeverityWarning);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (statusMsgs.<a class="code" href="class_black_misc_1_1_c_status_message_list.html#a0654a7fb57beeaf99c313bd287d92bff">hasWarningOrErrorMessages</a>())</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="class_black_misc_1_1_c_log_message.html">CLogMessage</a>(<span class="keyword">this</span>).<a class="code" href="class_black_misc_1_1_c_message_base.html#a2a7c9f9c2a1bc4ba9bd73b0ac46cb3b4">log</a>(<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">m_loadingMessages</a>.<a class="code" href="class_black_misc_1_1_c_status_message_list.html#a81be0e5b4ff397ea623bb69b9e5c4661">worstSeverity</a>(),</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  u<span class="stringliteral">"Message loading produced %1 error and %2 warning messages"</span>)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  << errors << warnings;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_black_misc_1_1_c_log_message.html">CLogMessage</a>(<span class="keyword">this</span>).<a class="code" href="class_black_misc_1_1_c_message_base.html#acfcc16db92d61c11cb09d72e059f872a">info</a>(u<span class="stringliteral">"Loading '%1' finished, success for '%2'"</span>) << <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4">IAircraftModelLoader::enumToString</a>(info) << simulator.toQString();</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">void</span> IAircraftModelLoader::onCacheChanged(<span class="keyword">const</span> CSimulatorInfo &simulator)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (<a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">m_loadingInProgress</a>) { <span class="keywordflow">return</span>; } <span class="comment">// this change signal is redundant as it will be handled by onLoadingFinished</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span> (!this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a613313db9f1e21a998eef2918267f49a">supportsSimulator</a>(simulator)) { <span class="keywordflow">return</span>; } <span class="comment">// none of my business</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  emit this-><a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a42637576174dcd7748092614c2f83831">cacheChanged</a>(simulator);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#a7062ccb1e60879d5717685d342c8a6f2"> 210</a></span>  <a class="code" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#a7062ccb1e60879d5717685d342c8a6f2">CDummyModelLoader::CDummyModelLoader</a>(<span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">CSimulatorInfo</a> &simulator, <a class="codeRef" href="http://doc.qt.io/qt-5/qobject.html">QObject</a> *parent) : <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html">IAircraftModelLoader</a>(simulator, parent)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// void</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#addf95ab01fa84e241975fbe8371d3584"> 215</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#addf95ab01fa84e241975fbe8371d3584">CDummyModelLoader::isLoadingFinished</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword"> </span>{</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// fake loading</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> qint64 now = <a class="codeRef" href="http://doc.qt.io/qt-5/qdatetime.html#currentMSecsSinceEpoch">QDateTime::currentMSecsSinceEpoch</a>();</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> m_loadingStartedTs > 0 && now > (m_loadingStartedTs + 5000);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div>
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#ac6fc2050d8d14c783371caf8717fd8f5"> 222</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#ac6fc2050d8d14c783371caf8717fd8f5">CDummyModelLoader::startLoadingFromDisk</a>(LoadMode mode, <span class="keyword">const</span> <a class="code" href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a797283593001c8d7ca739e86049fc616">IAircraftModelLoader::ModelConsolidationCallback</a> &modelConsolidation, <span class="keyword">const</span> <a class="codeRef" href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a> &modelDirectories)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  Q_UNUSED(mode);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  Q_UNUSED(modelConsolidation);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  Q_UNUSED(modelDirectories);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_loadingStartedTs = <a class="codeRef" href="http://doc.qt.io/qt-5/qdatetime.html#currentMSecsSinceEpoch">QDateTime::currentMSecsSinceEpoch</a>();</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> } <span class="comment">// ns</span></div>
<div class="ttc" id="aaircraftmodelloader_8h_html"><div class="ttname"><a href="aircraftmodelloader_8h.html">aircraftmodelloader.h</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_directory_utils_html_a533343c1b22639ff0be2bd60ee5be5eb"><div class="ttname"><a href="class_black_misc_1_1_c_directory_utils.html#a533343c1b22639ff0be2bd60ee5be5eb">BlackMisc::CDirectoryUtils::getExistingUnemptyDirectories</a></div><div class="ttdeci">static QStringList getExistingUnemptyDirectories(const QStringList &directories)</div><div class="ttdoc">Get the existing directories.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_file_utils_html_a592d528ef2f271b23a77af5d5df48b94"><div class="ttname"><a href="class_black_misc_1_1_c_file_utils.html#a592d528ef2f271b23a77af5d5df48b94">BlackMisc::CFileUtils::fixWindowsUncPaths</a></div><div class="ttdeci">static QStringList fixWindowsUncPaths(const QStringList &filePaths)</div><div class="ttdoc">Fix UNC file paths.</div><div class="ttdef"><b>Definition:</b> <a href="fileutils_8cpp_source.html#l00449">fileutils.cpp:449</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_log_categories_html_ad70afa28f5cd7781ab63b6b406ee5def"><div class="ttname"><a href="class_black_misc_1_1_c_log_categories.html#ad70afa28f5cd7781ab63b6b406ee5def">BlackMisc::CLogCategories::modelLoader</a></div><div class="ttdeci">static const QString & modelLoader()</div><div class="ttdoc">Model loader.</div><div class="ttdef"><b>Definition:</b> <a href="logcategories_8h_source.html#l00158">logcategories.h:158</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_log_message_html"><div class="ttname"><a href="class_black_misc_1_1_c_log_message.html">BlackMisc::CLogMessage</a></div><div class="ttdoc">Class for emitting a log message.</div><div class="ttdef"><b>Definition:</b> <a href="logmessage_8h_source.html#l00029">logmessage.h:30</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_message_base_html_a2a7c9f9c2a1bc4ba9bd73b0ac46cb3b4"><div class="ttname"><a href="class_black_misc_1_1_c_message_base.html#a2a7c9f9c2a1bc4ba9bd73b0ac46cb3b4">BlackMisc::CMessageBase::log</a></div><div class="ttdeci">Derived & log(StatusSeverity s, const char16_t(&m)[N])</div><div class="ttdoc">Set the severity and format string.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessage_8h_source.html#l00175">statusmessage.h:175</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_message_base_html_acfcc16db92d61c11cb09d72e059f872a"><div class="ttname"><a href="class_black_misc_1_1_c_message_base.html#acfcc16db92d61c11cb09d72e059f872a">BlackMisc::CMessageBase::info</a></div><div class="ttdeci">Derived & info(const char16_t(&format)[N])</div><div class="ttdoc">Set the severity to info, providing a format string.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessage_8h_source.html#l00205">statusmessage.h:205</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_sequence_html_a3b1a591f9338825e0364e940f8e06cb0"><div class="ttname"><a href="class_black_misc_1_1_c_sequence.html#a3b1a591f9338825e0364e940f8e06cb0">BlackMisc::CSequence::push_back</a></div><div class="ttdeci">void push_back(const T &value)</div><div class="ttdoc">Appends an element at the end of the sequence.</div><div class="ttdef"><b>Definition:</b> <a href="sequence_8h_source.html#l00306">sequence.h:306</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_sequence_html_aa68fa203f1b72b6e94834d6b85646dde"><div class="ttname"><a href="class_black_misc_1_1_c_sequence.html#aa68fa203f1b72b6e94834d6b85646dde">BlackMisc::CSequence::isEmpty</a></div><div class="ttdeci">bool isEmpty() const</div><div class="ttdoc">Synonym for empty.</div><div class="ttdef"><b>Definition:</b> <a href="sequence_8h_source.html#l00286">sequence.h:286</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_sequence_html_ad47999b337703232f06ad8891e4bd16b"><div class="ttname"><a href="class_black_misc_1_1_c_sequence.html#ad47999b337703232f06ad8891e4bd16b">BlackMisc::CSequence::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Removes all elements in the sequence.</div><div class="ttdef"><b>Definition:</b> <a href="sequence_8h_source.html#l00289">sequence.h:289</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_html"><div class="ttname"><a href="class_black_misc_1_1_c_status_message.html">BlackMisc::CStatusMessage</a></div><div class="ttdoc">Streamable status message, e.g.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessage_8h_source.html#l00386">statusmessage.h:391</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_html_a78b4f753deecdc3f14ee20a0233bdc2a"><div class="ttname"><a href="class_black_misc_1_1_c_status_message.html#a78b4f753deecdc3f14ee20a0233bdc2a">BlackMisc::CStatusMessage::SeverityInfo</a></div><div class="ttdeci">constexpr static auto SeverityInfo</div><div class="ttdoc">Status severities.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessage_8h_source.html#l00397">statusmessage.h:397</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_html_af98a8323ed8905e51501dbf242e6ac79"><div class="ttname"><a href="class_black_misc_1_1_c_status_message.html#af98a8323ed8905e51501dbf242e6ac79">BlackMisc::CStatusMessage::SeverityWarning</a></div><div class="ttdeci">constexpr static auto SeverityWarning</div><div class="ttdoc">Status severities.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessage_8h_source.html#l00398">statusmessage.h:398</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_list_html"><div class="ttname"><a href="class_black_misc_1_1_c_status_message_list.html">BlackMisc::CStatusMessageList</a></div><div class="ttdoc">Status messages, e.g. from Core -> GUI.</div><div class="ttdef"><b>Definition:</b> <a href="statusmessagelist_8h_source.html#l00028">statusmessagelist.h:33</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_list_html_a0654a7fb57beeaf99c313bd287d92bff"><div class="ttname"><a href="class_black_misc_1_1_c_status_message_list.html#a0654a7fb57beeaf99c313bd287d92bff">BlackMisc::CStatusMessageList::hasWarningOrErrorMessages</a></div><div class="ttdeci">bool hasWarningOrErrorMessages() const</div><div class="ttdoc">Warning or error messages.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_list_html_a46d04e6429bdbcc4a56d9fa35b5d6711"><div class="ttname"><a href="class_black_misc_1_1_c_status_message_list.html#a46d04e6429bdbcc4a56d9fa35b5d6711">BlackMisc::CStatusMessageList::countSeverities</a></div><div class="ttdeci">QMap< int, int > countSeverities() const</div><div class="ttdoc">Count number of messages per severity.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_c_status_message_list_html_a81be0e5b4ff397ea623bb69b9e5c4661"><div class="ttname"><a href="class_black_misc_1_1_c_status_message_list.html#a81be0e5b4ff397ea623bb69b9e5c4661">BlackMisc::CStatusMessageList::worstSeverity</a></div><div class="ttdeci">CStatusMessage::StatusSeverity worstSeverity() const</div><div class="ttdoc">Find worst severity.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_i_orderable_list_html_af8979ead9b3c420e9280c988a8b92555"><div class="ttname"><a href="class_black_misc_1_1_i_orderable_list.html#af8979ead9b3c420e9280c988a8b92555">BlackMisc::IOrderableList::freezeOrder</a></div><div class="ttdeci">void freezeOrder()</div><div class="ttdoc">Current order of list will be new order values.</div><div class="ttdef"><b>Definition:</b> <a href="orderablelist_8h_source.html#l00120">orderablelist.h:120</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_mixin_1_1_string_html_a742439b46e1c8a650b9424277f79c98f"><div class="ttname"><a href="class_black_misc_1_1_mixin_1_1_string.html#a742439b46e1c8a650b9424277f79c98f">BlackMisc::Mixin::String::toQString</a></div><div class="ttdeci">QString toQString(bool i18n=false) const</div><div class="ttdoc">Cast as QString.</div><div class="ttdef"><b>Definition:</b> <a href="mixinstring_8h_source.html#l00079">mixinstring.h:79</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_aircraft_model_list_html"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_aircraft_model_list.html">BlackMisc::Simulation::CAircraftModelList</a></div><div class="ttdoc">Value object encapsulating a list of aircraft models.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodellist_8h_source.html#l00052">aircraftmodellist.h:58</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_dummy_model_loader_html_a7062ccb1e60879d5717685d342c8a6f2"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#a7062ccb1e60879d5717685d342c8a6f2">BlackMisc::Simulation::CDummyModelLoader::CDummyModelLoader</a></div><div class="ttdeci">CDummyModelLoader(const CSimulatorInfo &simulator, QObject *parent)</div><div class="ttdoc">Dummy loader.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00210">aircraftmodelloader.cpp:210</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_dummy_model_loader_html_ac6fc2050d8d14c783371caf8717fd8f5"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#ac6fc2050d8d14c783371caf8717fd8f5">BlackMisc::Simulation::CDummyModelLoader::startLoadingFromDisk</a></div><div class="ttdeci">virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)</div><div class="ttdoc">IAircraftModelLoader::startLoadingFromDisk.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00222">aircraftmodelloader.cpp:222</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_dummy_model_loader_html_addf95ab01fa84e241975fbe8371d3584"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_dummy_model_loader.html#addf95ab01fa84e241975fbe8371d3584">BlackMisc::Simulation::CDummyModelLoader::isLoadingFinished</a></div><div class="ttdeci">virtual bool isLoadingFinished() const</div><div class="ttdoc">IAircraftModelLoader::isLoadingFinished.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00215">aircraftmodelloader.cpp:215</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_simulator_info_html"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html">BlackMisc::Simulation::CSimulatorInfo</a></div><div class="ttdoc">Simple hardcoded info about the corresponding simulator.</div><div class="ttdef"><b>Definition:</b> <a href="simulatorinfo_8h_source.html#l00040">simulatorinfo.h:41</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_c_simulator_info_html_a1c500dd06d851e93eaac5dcd6205da80"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_c_simulator_info.html#a1c500dd06d851e93eaac5dcd6205da80">BlackMisc::Simulation::CSimulatorInfo::isSingleSimulator</a></div><div class="ttdeci">bool isSingleSimulator() const</div><div class="ttdoc">Single simulator selected.</div><div class="ttdef"><b>Definition:</b> <a href="simulatorinfo_8cpp_source.html#l00089">simulatorinfo.cpp:89</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware_html_a770ad112e323344287811fbbbfa0b329"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a770ad112e323344287811fbbbfa0b329">BlackMisc::Simulation::Data::CCentralMultiSimulatorModelCachesAware::setModelsForSimulator</a></div><div class="ttdeci">virtual void setModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)</div><div class="ttdoc">Set models.</div><div class="ttdef"><b>Definition:</b> <a href="modelcaches_8h_source.html#l00490">modelcaches.h:490</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware_html_a7ac504bb13e963f572eeb62f818ad7ce"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a7ac504bb13e963f572eeb62f818ad7ce">BlackMisc::Simulation::Data::CCentralMultiSimulatorModelCachesAware::getCachedModels</a></div><div class="ttdeci">CAircraftModelList getCachedModels(const CSimulatorInfo &simulator) const</div><div class="ttdoc">Look like IMultiSimulatorModelCaches interface.</div><div class="ttdef"><b>Definition:</b> <a href="modelcaches_8h_source.html#l00473">modelcaches.h:473</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware_html_a7c392e1bddb5f90baa41d5ed6371319a"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#a7c392e1bddb5f90baa41d5ed6371319a">BlackMisc::Simulation::Data::CCentralMultiSimulatorModelCachesAware::updateModelsForSimulator</a></div><div class="ttdeci">virtual int updateModelsForSimulator(const CAircraftModelList &models, const CSimulatorInfo &simulator)</div><div class="ttdoc">Set models.</div><div class="ttdef"><b>Definition:</b> <a href="modelcaches_8h_source.html#l00493">modelcaches.h:493</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware_html_af9f55bc735ac34567fdd07c5bf758c6e"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_aware.html#af9f55bc735ac34567fdd07c5bf758c6e">BlackMisc::Simulation::Data::CCentralMultiSimulatorModelCachesAware::synchronizeCache</a></div><div class="ttdeci">void synchronizeCache(const CSimulatorInfo &simulator)</div><div class="ttdoc">Look like IMultiSimulatorModelCaches interface.</div><div class="ttdef"><b>Definition:</b> <a href="modelcaches_8h_source.html#l00480">modelcaches.h:480</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_provider_html"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_data_1_1_c_central_multi_simulator_model_caches_provider.html">BlackMisc::Simulation::Data::CCentralMultiSimulatorModelCachesProvider</a></div><div class="ttdoc">One central instance of the model caches.</div><div class="ttdef"><b>Definition:</b> <a href="modelcaches_8h_source.html#l00444">modelcaches.h:445</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html">BlackMisc::Simulation::IAircraftModelLoader</a></div><div class="ttdoc">Load the aircraft for a simulator.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00033">aircraftmodelloader.h:38</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a08422857f2dac538e28ac74f994f8d4e"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a08422857f2dac538e28ac74f994f8d4e">BlackMisc::Simulation::IAircraftModelLoader::getFirstModelDirectoryOrDefault</a></div><div class="ttdeci">QString getFirstModelDirectoryOrDefault() const</div><div class="ttdoc">First directory, can be used when only 1 directory is expected.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00145">aircraftmodelloader.cpp:145</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a0d58573ffad69510e88b4ee4cd8fb429"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a0d58573ffad69510e88b4ee4cd8fb429">BlackMisc::Simulation::IAircraftModelLoader::m_skipLoadingEmptyModelDir</a></div><div class="ttdeci">std::atomic< bool > m_skipLoadingEmptyModelDir</div><div class="ttdoc">loading empty model dirs might erase the cache, so normally we skip it</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00162">aircraftmodelloader.h:162</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a1466dacd70f2eb801f42bfc3d4dfc249"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1466dacd70f2eb801f42bfc3d4dfc249">BlackMisc::Simulation::IAircraftModelLoader::getLogCategories</a></div><div class="ttdeci">static const QStringList & getLogCategories()</div><div class="ttdoc">Log categories.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00021">aircraftmodelloader.cpp:21</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a1673645035d9ad3833b3df66992f1354"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a1673645035d9ad3833b3df66992f1354">BlackMisc::Simulation::IAircraftModelLoader::updateModels</a></div><div class="ttdeci">virtual int updateModels(const CAircraftModelList &models)</div><div class="ttdoc">Update models.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00156">aircraftmodelloader.cpp:156</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a2838f562855466394b265599ed6a6f86"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2838f562855466394b265599ed6a6f86">BlackMisc::Simulation::IAircraftModelLoader::IAircraftModelLoader</a></div><div class="ttdeci">IAircraftModelLoader(const CSimulatorInfo &simulator, QObject *parent=nullptr)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00087">aircraftmodelloader.cpp:87</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a2c9fdfda90a0a47c4c880e6e6207d3c4"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2c9fdfda90a0a47c4c880e6e6207d3c4">BlackMisc::Simulation::IAircraftModelLoader::enumToString</a></div><div class="ttdeci">static const QString & enumToString(LoadFinishedInfo info)</div><div class="ttdoc">Enum as string.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00027">aircraftmodelloader.cpp:27</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a2d16bb22a14461a0ac31f49533eca2ab"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a2d16bb22a14461a0ac31f49533eca2ab">BlackMisc::Simulation::IAircraftModelLoader::~IAircraftModelLoader</a></div><div class="ttdeci">virtual ~IAircraftModelLoader()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00098">aircraftmodelloader.cpp:98</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a3748ce7b8a012126f5b2544a8b163d4c"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4c">BlackMisc::Simulation::IAircraftModelLoader::LoadFinishedInfo</a></div><div class="ttdeci">LoadFinishedInfo</div><div class="ttdoc">Load mode.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00064">aircraftmodelloader.h:65</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a3748ce7b8a012126f5b2544a8b163d4ca936f3afe234efed3a69f73985ee0b369"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4ca936f3afe234efed3a69f73985ee0b369">BlackMisc::Simulation::IAircraftModelLoader::CacheLoaded</a></div><div class="ttdeci">@ CacheLoaded</div><div class="ttdoc">cache was loaded</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00066">aircraftmodelloader.h:66</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a3748ce7b8a012126f5b2544a8b163d4cae388ffe5344ee4fb4c8d5615bf63e921"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a3748ce7b8a012126f5b2544a8b163d4cae388ffe5344ee4fb4c8d5615bf63e921">BlackMisc::Simulation::IAircraftModelLoader::LoadingSkipped</a></div><div class="ttdeci">@ LoadingSkipped</div><div class="ttdoc">loading skipped (empty directory)</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00068">aircraftmodelloader.h:68</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a42637576174dcd7748092614c2f83831"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a42637576174dcd7748092614c2f83831">BlackMisc::Simulation::IAircraftModelLoader::cacheChanged</a></div><div class="ttdeci">void cacheChanged(const CSimulatorInfo &simulator)</div><div class="ttdoc">Relayed from centralized caches.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a4aaa46ccae374642917c57b26616dd9e"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4aaa46ccae374642917c57b26616dd9e">BlackMisc::Simulation::IAircraftModelLoader::startLoading</a></div><div class="ttdeci">void startLoading(LoadMode mode=InBackgroundWithCache, const ModelConsolidationCallback &modelConsolidation={}, const QStringList &modelDirectories={})</div><div class="ttdoc">Start the loading process from disk. Optional DB models can be passed and used for data consolidation...</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00100">aircraftmodelloader.cpp:100</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a4c9051277f4f7f1952d0891d2b89d841"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a4c9051277f4f7f1952d0891d2b89d841">BlackMisc::Simulation::IAircraftModelLoader::needsCacheSynchronized</a></div><div class="ttdeci">static bool needsCacheSynchronized(LoadMode mode)</div><div class="ttdoc">Is that mode needing caches synchronized?</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00082">aircraftmodelloader.cpp:82</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a53b4773068a1572c6aa9cab5e1b4df28"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a53b4773068a1572c6aa9cab5e1b4df28">BlackMisc::Simulation::IAircraftModelLoader::hasCachedData</a></div><div class="ttdeci">bool hasCachedData() const</div><div class="ttdoc">Any cached data?</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00168">aircraftmodelloader.cpp:168</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a562dcff4fb99260755a8950d8f6007d0"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a562dcff4fb99260755a8950d8f6007d0">BlackMisc::Simulation::IAircraftModelLoader::setModels</a></div><div class="ttdeci">virtual void setModels(const CAircraftModelList &models)</div><div class="ttdoc">Set models.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00151">aircraftmodelloader.cpp:151</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a5b6405e35e0f67e3ac3aafa7ca5d67a6"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a5b6405e35e0f67e3ac3aafa7ca5d67a6">BlackMisc::Simulation::IAircraftModelLoader::startLoadingFromDisk</a></div><div class="ttdeci">virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)=0</div><div class="ttdoc">Start the loading process from disk.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a613313db9f1e21a998eef2918267f49a"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a613313db9f1e21a998eef2918267f49a">BlackMisc::Simulation::IAircraftModelLoader::supportsSimulator</a></div><div class="ttdeci">bool supportsSimulator(const CSimulatorInfo &simulator) const</div><div class="ttdoc">Supported simulator.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00121">aircraftmodelloader.h:121</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a6e5dccf768276dabc152f7ba97198ca7"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a6e5dccf768276dabc152f7ba97198ca7">BlackMisc::Simulation::IAircraftModelLoader::getSimulator</a></div><div class="ttdeci">const CSimulatorInfo & getSimulator() const</div><div class="ttdoc">Simulator.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00118">aircraftmodelloader.h:118</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a797283593001c8d7ca739e86049fc616"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a797283593001c8d7ca739e86049fc616">BlackMisc::Simulation::IAircraftModelLoader::ModelConsolidationCallback</a></div><div class="ttdeci">std::function< int(BlackMisc::Simulation::CAircraftModelList &, bool)> ModelConsolidationCallback</div><div class="ttdoc">Callback to consolidate data, normally with DB data.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00092">aircraftmodelloader.h:92</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a87080fca02e4677e45938a528675d3a8"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a87080fca02e4677e45938a528675d3a8">BlackMisc::Simulation::IAircraftModelLoader::getInitializedModelDirectories</a></div><div class="ttdeci">QStringList getInitializedModelDirectories(const QStringList &modelDirectories, const CSimulatorInfo &simulator) const</div><div class="ttdoc">Get model directories from settings if empty, otherwise checked and UNC path fixed.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8cpp_source.html#l00161">aircraftmodelloader.cpp:161</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a8f0f4cee6294800436d09393d70757fa"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8f0f4cee6294800436d09393d70757fa">BlackMisc::Simulation::IAircraftModelLoader::m_loadingInProgress</a></div><div class="ttdeci">std::atomic< bool > m_loadingInProgress</div><div class="ttdoc">loading in progress</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00160">aircraftmodelloader.h:160</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_a8fee3d62795fedc0ae1def64d8fae1e9"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#a8fee3d62795fedc0ae1def64d8fae1e9">BlackMisc::Simulation::IAircraftModelLoader::m_settings</a></div><div class="ttdeci">Settings::CMultiSimulatorSettings m_settings</div><div class="ttdoc">settings</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00164">aircraftmodelloader.h:164</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_ab0eb6edb5553c47289f1a3fcd21e6dbd"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbd">BlackMisc::Simulation::IAircraftModelLoader::LoadModeFlag</a></div><div class="ttdeci">LoadModeFlag</div><div class="ttdoc">Parser mode.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00050">aircraftmodelloader.h:51</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_ab0eb6edb5553c47289f1a3fcd21e6dbda4173aaf47dcc65336a73bc70ca3b6945"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda4173aaf47dcc65336a73bc70ca3b6945">BlackMisc::Simulation::IAircraftModelLoader::CacheOnly</a></div><div class="ttdeci">@ CacheOnly</div><div class="ttdoc">only read cache, never load from disk</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00057">aircraftmodelloader.h:57</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_ab0eb6edb5553c47289f1a3fcd21e6dbda89af057ee835990c3c742089cc5f3517"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda89af057ee835990c3c742089cc5f3517">BlackMisc::Simulation::IAircraftModelLoader::CacheSkipped</a></div><div class="ttdeci">@ CacheSkipped</div><div class="ttdoc">ignore cache</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00056">aircraftmodelloader.h:56</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_ab0eb6edb5553c47289f1a3fcd21e6dbda9a96ca509ad741465f50fc291ad970af"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ab0eb6edb5553c47289f1a3fcd21e6dbda9a96ca509ad741465f50fc291ad970af">BlackMisc::Simulation::IAircraftModelLoader::CacheFirst</a></div><div class="ttdeci">@ CacheFirst</div><div class="ttdoc">always use cache (if it has data)</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00055">aircraftmodelloader.h:55</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_acaba38d909086ad3cad0c6ffa80c33f2"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#acaba38d909086ad3cad0c6ffa80c33f2">BlackMisc::Simulation::IAircraftModelLoader::loadingFinished</a></div><div class="ttdeci">void loadingFinished(const CStatusMessageList &status, const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info)</div><div class="ttdoc">Parsing is finished or cache has been loaded.</div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_ad7c963e50a663ba3a1b6c9a2e4176554"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#ad7c963e50a663ba3a1b6c9a2e4176554">BlackMisc::Simulation::IAircraftModelLoader::m_loadingMessages</a></div><div class="ttdeci">CStatusMessageList m_loadingMessages</div><div class="ttdoc">loading messages</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00163">aircraftmodelloader.h:163</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_i_aircraft_model_loader_html_afeef38bbd13430c6ee23fb0a552c1f9f"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_i_aircraft_model_loader.html#afeef38bbd13430c6ee23fb0a552c1f9f">BlackMisc::Simulation::IAircraftModelLoader::m_simulator</a></div><div class="ttdeci">const CSimulatorInfo m_simulator</div><div class="ttdoc">related simulator</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmodelloader_8h_source.html#l00159">aircraftmodelloader.h:159</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings_html_aac456ed8cc8bdc2379d0806bb092c80e"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings.html#aac456ed8cc8bdc2379d0806bb092c80e">BlackMisc::Simulation::Settings::CMultiSimulatorSettings::getFirstModelDirectoryOrDefault</a></div><div class="ttdeci">QString getFirstModelDirectoryOrDefault(const CSimulatorInfo &simulator) const</div><div class="ttdoc">First model directoy.</div><div class="ttdef"><b>Definition:</b> <a href="simulatorsettings_8cpp_source.html#l00347">simulatorsettings.cpp:347</a></div></div>
<div class="ttc" id="aclass_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings_html_ab99d2297818ea1b6362ddc193541204f"><div class="ttname"><a href="class_black_misc_1_1_simulation_1_1_settings_1_1_c_multi_simulator_settings.html#ab99d2297818ea1b6362ddc193541204f">BlackMisc::Simulation::Settings::CMultiSimulatorSettings::getModelDirectoriesOrDefault</a></div><div class="ttdeci">QStringList getModelDirectoriesOrDefault(const CSimulatorInfo &simulator) const</div><div class="ttdoc">Model directory or default model path per simulator.</div><div class="ttdef"><b>Definition:</b> <a href="simulatorsettings_8cpp_source.html#l00341">simulatorsettings.cpp:341</a></div></div>
<div class="ttc" id="adirectoryutils_8h_html"><div class="ttname"><a href="directoryutils_8h.html">directoryutils.h</a></div></div>
<div class="ttc" id="alogmessage_8h_html"><div class="ttname"><a href="logmessage_8h.html">logmessage.h</a></div></div>
<div class="ttc" id="amixincompare_8h_html"><div class="ttname"><a href="mixincompare_8h.html">mixincompare.h</a></div></div>
<div class="ttc" id="anamespace_black_misc_html"><div class="ttname"><a href="namespace_black_misc.html">BlackMisc</a></div><div class="ttdoc">Base and utility classes available in all other projects.</div><div class="ttdef"><b>Definition:</b> <a href="aircraftmatcher_8h_source.html#l00028">aircraftmatcher.h:29</a></div></div>
<div class="ttc" id="aqdatetime_html_currentMSecsSinceEpoch"><div class="ttname"><a href="http://doc.qt.io/qt-5/qdatetime.html#currentMSecsSinceEpoch">QDateTime::currentMSecsSinceEpoch</a></div><div class="ttdeci">qint64 currentMSecsSinceEpoch()</div></div>
<div class="ttc" id="aqlist_html_isEmpty"><div class="ttname"><a href="http://doc.qt.io/qt-5/qlist.html#isEmpty">QList::isEmpty</a></div><div class="ttdeci">bool isEmpty() const const</div></div>
<div class="ttc" id="aqmap_html"><div class="ttname"><a href="http://doc.qt.io/qt-5/qmap.html">QMap</a></div></div>
<div class="ttc" id="aqmap_html_value"><div class="ttname"><a href="http://doc.qt.io/qt-5/qmap.html#value">QMap::value</a></div><div class="ttdeci">const T value(const Key &key, const T &defaultValue) const const</div></div>
<div class="ttc" id="aqobject_html"><div class="ttname"><a href="http://doc.qt.io/qt-5/qobject.html">QObject</a></div></div>
<div class="ttc" id="aqobject_html_connect"><div class="ttname"><a href="http://doc.qt.io/qt-5/qobject.html#connect">QObject::connect</a></div><div class="ttdeci">QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)</div></div>
<div class="ttc" id="aqobject_html_objectName-prop"><div class="ttname"><a href="http://doc.qt.io/qt-5/qobject.html#objectName-prop">QObject::setObjectName</a></div><div class="ttdeci">void setObjectName(const QString &name)</div></div>
<div class="ttc" id="aqstring_html"><div class="ttname"><a href="http://doc.qt.io/qt-5/qstring.html">QString</a></div></div>
<div class="ttc" id="aqstringlist_html"><div class="ttname"><a href="http://doc.qt.io/qt-5/qstringlist.html">QStringList</a></div></div>
<div class="ttc" id="aqstringlist_html_join"><div class="ttname"><a href="http://doc.qt.io/qt-5/qstringlist.html#join">QStringList::join</a></div><div class="ttdeci">QString join(const QString &separator) const const</div></div>
<div class="ttc" id="aqt_html_ConnectionType-enum"><div class="ttname"><a href="http://doc.qt.io/qt-5/qt.html#ConnectionType-enum">Qt::QueuedConnection</a></div><div class="ttdeci">QueuedConnection</div></div>
<div class="ttc" id="axplaneutil_8h_html"><div class="ttname"><a href="xplaneutil_8h.html">xplaneutil.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Dec 3 2023 18:38:40 for swift 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
</small></address>
</body>
</html>