6#include <QtCore/qpointer.h>
7#include <QtCore/private/qcore_ohos_p.h>
8#include <QtCore/private/qohoscommon_p.h>
17
18
19
20
21
22
23
24
25
26
29
30
31
32
33
34
35
36
37
38
39
40
43
44
45
46
47
48
49
50
51
52
55
56
57
58
59
60
61
62
63
64
65
66
67
70
71
72
73
74
75
76
77
78
79
80
83
84
85
86
87
88
89
90
91
92
93
94
97
98
99
100
101
102
103
104
105
106
110ElementName convertElementNameFromJsonObject(
const QJsonObject &object)
113 .deviceId = object.value(QLatin1String(
"deviceId")).toString(),
114 .bundleName = object.value(QLatin1String(
"bundleName")).toString(),
115 .abilityName = object.value(QLatin1String(
"abilityName")).toString(),
116 .uri = object.value(QLatin1String(
"uri")).toString(),
117 .shortName = object.value(QLatin1String(
"shortName")).toString(),
118 .moduleName = object.value(QLatin1String(
"moduleName")).toString(),
123 StartOptions::SupportWindowMode supportWindowMode)
125 switch (supportWindowMode) {
126 case StartOptions::SupportWindowMode::FullScreen:
127 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::FULL_SCREEN);
128 case StartOptions::SupportWindowMode::Split:
129 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::SPLIT);
130 case StartOptions::SupportWindowMode::Floating:
131 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::FLOATING);
136QList<QOhosStartOptionsData::SupportWindowMode> mapSupportWindowModesToQpaFunctions(
137 const QList<StartOptions::SupportWindowMode> &supportWindowModes)
139 QList<QOhosStartOptionsData::SupportWindowMode> qpaFuncsSupportWindowModes;
140 for (
auto supportWindowMode : supportWindowModes) {
141 auto optQpaFuncsSupportWindowMode = tryMapSupportWindowModeToQpaFunctions(supportWindowMode);
142 if (optQpaFuncsSupportWindowMode.has_value()) {
143 qpaFuncsSupportWindowModes.append(optQpaFuncsSupportWindowMode.value());
146 QtForOhos,
"%s: got unsupported supportWindowMode (%d), ignoring",
147 Q_FUNC_INFO,
static_cast<
int>(supportWindowMode));
151 return qpaFuncsSupportWindowModes;
154class QOhosWindowCreateParamsImpl :
public WindowCreateParams
157 QOhosWindowCreateParamsImpl();
159 void setAnimationType(AnimationType animationType)
override;
167QOhosWindowCreateParamsImpl::QOhosWindowCreateParamsImpl() =
default;
169void QOhosWindowCreateParamsImpl::setAnimationType(AnimationType animationType)
171 bool supportedAnimationType =
false;
172 switch (animationType) {
173 case AnimationType::FadeInOut:
175 supportedAnimationType =
true;
179 if (!supportedAnimationType) {
181 QtForOhos,
"%s: got unsupported AnimationType: %d",
182 Q_FUNC_INFO,
static_cast<
int>(animationType));
188 return m_qpaWindowCreateParams;
191class QOhosStartOptionsImpl :
public StartOptions
194 QOhosStartOptionsImpl()
199
200
201
202
203
204
205 void setWindowMode(StartOptions::WindowMode windowMode)
override
208 switch (windowMode) {
209 case StartOptions::WindowMode::SplitPrimary:
210 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_SPLIT_PRIMARY;
212 case StartOptions::WindowMode::SplitSecondary:
213 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_SPLIT_SECONDARY;
215 case StartOptions::WindowMode::Fullscreen:
216 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_FULLSCREEN;
220 if (internalWindowMode.has_value())
221 m_startOptions.windowMode = internalWindowMode.value();
223 qCWarning(QtForOhos,
"%s: unsupported windowMode: %d", Q_FUNC_INFO,
static_cast<
int>(windowMode));
227
228
229
230
231
232
233 void setDisplayId(
int displayId) override
235 m_startOptions.displayId = displayId;
239
240
241
242
243
244
245 void setWithAnimation(
bool withAnimation) override
247 m_startOptions.withAnimation = withAnimation;
251
252
253
254
255
256
257 void setWindowLeft(
int windowLeft) override
259 m_startOptions.windowLeft = windowLeft;
263
264
265
266
267
268
269 void setWindowTop(
int windowTop) override
271 m_startOptions.windowTop = windowTop;
275
276
277
278
279
280
281 void setWindowWidth(
int windowWidth) override
283 m_startOptions.windowWidth = windowWidth;
287
288
289
290
291
292
293 void setWindowHeight(
int windowHeight) override
295 m_startOptions.windowHeight = windowHeight;
299
300
301
302
303
304
305 void setProcessMode(StartOptions::ProcessMode processMode)
override
308 switch (processMode) {
309 case StartOptions::ProcessMode::NewProcessAttachToParent:
310 internalProcessMode = QOhosStartOptionsData::ProcessMode::NEW_PROCESS_ATTACH_TO_PARENT;
312 case StartOptions::ProcessMode::NewProcessAttachToStatusBarItem:
313 internalProcessMode = QOhosStartOptionsData::ProcessMode::NEW_PROCESS_ATTACH_TO_STATUS_BAR_ITEM;
317 if (internalProcessMode.has_value())
318 m_startOptions.processMode = internalProcessMode.value();
320 qCWarning(QtForOhos,
"%s: unsupported processMode: %d", Q_FUNC_INFO,
static_cast<
int>(processMode));
324
325
326
327
328
329
330 void setStartupVisibility(StartOptions::StartupVisibility startupVisibility)
override
333 switch (startupVisibility) {
334 case StartOptions::StartupVisibility::Hide:
335 internalStartupVisibility = QOhosStartOptionsData::StartupVisibility::STARTUP_HIDE;
337 case StartOptions::StartupVisibility::Show:
338 internalStartupVisibility = QOhosStartOptionsData::StartupVisibility::STARTUP_SHOW;
342 if (internalStartupVisibility.has_value())
343 m_startOptions.startupVisibility = internalStartupVisibility.value();
345 qCWarning(QtForOhos,
"%s: unsupported startupVisibility: %d", Q_FUNC_INFO,
static_cast<
int>(startupVisibility));
349
350
351
352
353
354
355
356 void setStartWindowIcon(
const QImage &startWindowIcon)
override
358 m_startOptions.windowIcon = startWindowIcon;
362
363
364
365
366
367
368
369 void setStartWindowBackgroundColor(
const QColor &startWindowBackgroundColor)
override
371 if (startWindowBackgroundColor.isValid())
372 m_startOptions.windowBackgroundColorHex = startWindowBackgroundColor.name(QColor::HexArgb);
376
377
378
379
380
381
382 void setSupportWindowModes(
const QList<SupportWindowMode> &supportWindowModes)
override
384 auto qpaFuncsSupportWindowModes = mapSupportWindowModesToQpaFunctions(supportWindowModes);
385 if (!qpaFuncsSupportWindowModes.isEmpty())
386 m_startOptions.supportWindowModes = qpaFuncsSupportWindowModes;
388 qCWarning(QtForOhos,
"%s: empty supportWindowModes is unsupported, skipping", Q_FUNC_INFO);
392
393
394
395
396
397
398
399 void setMinWindowWidth(
int minWindowWidth) override
401 m_startOptions.minWindowWidth = minWindowWidth;
405
406
407
408
409
410
411
412 void setMinWindowHeight(
int minWindowHeight) override
414 m_startOptions.minWindowHeight = minWindowHeight;
418
419
420
421
422
423
424
425 void setMaxWindowWidth(
int maxWindowWidth) override
427 m_startOptions.maxWindowWidth = maxWindowWidth;
431
432
433
434
435
436
437
438 void setMaxWindowHeight(
int maxWindowHeight) override
440 m_startOptions.maxWindowHeight = maxWindowHeight;
444
445
446
447
448
449
450
451 void setHideStartWindow(
bool hideStartWindow) override
453 m_startOptions.hideStartWindow = hideStartWindow;
457
458
459
460
461
462
463
464 void setWindowCreateParams(
const WindowCreateParams &windowCreateParams)
override
466 const auto *windowCreateParamsImpl =
dynamic_cast<
const QOhosWindowCreateParamsImpl *>(&windowCreateParams);
467 if (windowCreateParamsImpl !=
nullptr)
468 m_startOptions.windowCreateParams = windowCreateParamsImpl->qpaWindowCreateParams();
472
473
474
475
476
477
478
479
480
481
482 void setCompletionHandler(
484 std::function<
void(
bool, ElementName, QString)> callback)
override
486 m_startOptions.optCompletionHandler =
487 std::make_shared<QOhosConsumer<
bool, QJsonObject, QString>>(
488 [contextPtr = QPointer<QObject>(context), callback = std::move(callback)](
489 bool succeeded,
const QJsonObject &elementName,
const QString &message) {
490 if (!contextPtr.isNull() && callback)
491 callback(succeeded, convertElementNameFromJsonObject(elementName), message);
497 return m_startOptions;
514
515
516
517
520 return std::make_shared<QOhosWindowCreateParamsImpl>();
524
525
526
527
530 return std::make_shared<QOhosStartOptionsImpl>();
534 const StartOptions &options)
536 const auto *startOptionsImpl =
dynamic_cast<
const QOhosStartOptionsImpl *>(&options);
537 return startOptionsImpl !=
nullptr
538 ?
std::make_optional(startOptionsImpl->getStartOptions())
Combined button and popup list for selecting options.