5#include <QtCore/private/qcore_ohos_p.h>
6#include <QtCore/private/qohoscommon_p.h>
7#include <QtCore/qpointer.h>
16
17
18
19
20
21
22
23
24
25
28
29
30
31
32
33
34
35
36
37
38
39
42
43
44
45
46
47
48
49
50
51
54
55
56
57
58
59
60
61
62
63
64
65
66
69
70
71
72
73
74
75
76
77
78
79
82
83
84
85
86
87
88
89
90
91
92
93
96
97
98
99
100
101
102
103
104
105
109ElementName convertElementNameFromJsonObject(
const QJsonObject &object)
112 .deviceId = object.value(QLatin1String(
"deviceId")).toString(),
113 .bundleName = object.value(QLatin1String(
"bundleName")).toString(),
114 .abilityName = object.value(QLatin1String(
"abilityName")).toString(),
115 .uri = object.value(QLatin1String(
"uri")).toString(),
116 .shortName = object.value(QLatin1String(
"shortName")).toString(),
117 .moduleName = object.value(QLatin1String(
"moduleName")).toString(),
122 StartOptions::SupportWindowMode supportWindowMode)
124 switch (supportWindowMode) {
125 case StartOptions::SupportWindowMode::FullScreen:
126 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::FULL_SCREEN);
127 case StartOptions::SupportWindowMode::Split:
128 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::SPLIT);
129 case StartOptions::SupportWindowMode::Floating:
130 return std::make_optional(QOhosStartOptionsData::SupportWindowMode::FLOATING);
135QList<QOhosStartOptionsData::SupportWindowMode> mapSupportWindowModesToQpaFunctions(
136 const QList<StartOptions::SupportWindowMode> &supportWindowModes)
138 QList<QOhosStartOptionsData::SupportWindowMode> qpaFuncsSupportWindowModes;
139 for (
auto supportWindowMode : supportWindowModes) {
140 auto optQpaFuncsSupportWindowMode = tryMapSupportWindowModeToQpaFunctions(supportWindowMode);
141 if (optQpaFuncsSupportWindowMode.has_value()) {
142 qpaFuncsSupportWindowModes.append(optQpaFuncsSupportWindowMode.value());
145 QtForOhos,
"%s: got unsupported supportWindowMode (%d), ignoring",
146 Q_FUNC_INFO,
static_cast<
int>(supportWindowMode));
150 return qpaFuncsSupportWindowModes;
153class QOhosWindowCreateParamsImpl :
public WindowCreateParams
156 QOhosWindowCreateParamsImpl();
158 void setAnimationType(AnimationType animationType)
override;
166QOhosWindowCreateParamsImpl::QOhosWindowCreateParamsImpl() =
default;
168void QOhosWindowCreateParamsImpl::setAnimationType(AnimationType animationType)
170 bool supportedAnimationType =
false;
171 switch (animationType) {
172 case AnimationType::FadeInOut:
174 supportedAnimationType =
true;
178 if (!supportedAnimationType) {
180 QtForOhos,
"%s: got unsupported AnimationType: %d",
181 Q_FUNC_INFO,
static_cast<
int>(animationType));
187 return m_qpaWindowCreateParams;
190class QOhosStartOptionsImpl :
public StartOptions
193 QOhosStartOptionsImpl()
198
199
200
201
202
203
204 void setWindowMode(StartOptions::WindowMode windowMode)
override
207 switch (windowMode) {
208 case StartOptions::WindowMode::SplitPrimary:
209 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_SPLIT_PRIMARY;
211 case StartOptions::WindowMode::SplitSecondary:
212 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_SPLIT_SECONDARY;
214 case StartOptions::WindowMode::Fullscreen:
215 internalWindowMode = QOhosStartOptionsData::WindowMode::WINDOW_MODE_FULLSCREEN;
219 if (internalWindowMode.has_value())
220 m_startOptions.windowMode = internalWindowMode.value();
222 qCWarning(QtForOhos,
"%s: unsupported windowMode: %d", Q_FUNC_INFO,
static_cast<
int>(windowMode));
226
227
228
229
230
231
232 void setDisplayId(
int displayId) override
234 m_startOptions.displayId = displayId;
238
239
240
241
242
243
244 void setWithAnimation(
bool withAnimation) override
246 m_startOptions.withAnimation = withAnimation;
250
251
252
253
254
255
256 void setWindowLeft(
int windowLeft) override
258 m_startOptions.windowLeft = windowLeft;
262
263
264
265
266
267
268 void setWindowTop(
int windowTop) override
270 m_startOptions.windowTop = windowTop;
274
275
276
277
278
279
280 void setWindowWidth(
int windowWidth) override
282 m_startOptions.windowWidth = windowWidth;
286
287
288
289
290
291
292 void setWindowHeight(
int windowHeight) override
294 m_startOptions.windowHeight = windowHeight;
298
299
300
301
302
303
304 void setProcessMode(StartOptions::ProcessMode processMode)
override
307 switch (processMode) {
308 case StartOptions::ProcessMode::NewProcessAttachToParent:
309 internalProcessMode = QOhosStartOptionsData::ProcessMode::NEW_PROCESS_ATTACH_TO_PARENT;
311 case StartOptions::ProcessMode::NewProcessAttachToStatusBarItem:
312 internalProcessMode = QOhosStartOptionsData::ProcessMode::NEW_PROCESS_ATTACH_TO_STATUS_BAR_ITEM;
316 if (internalProcessMode.has_value())
317 m_startOptions.processMode = internalProcessMode.value();
319 qCWarning(QtForOhos,
"%s: unsupported processMode: %d", Q_FUNC_INFO,
static_cast<
int>(processMode));
323
324
325
326
327
328
329 void setStartupVisibility(StartOptions::StartupVisibility startupVisibility)
override
332 switch (startupVisibility) {
333 case StartOptions::StartupVisibility::Hide:
334 internalStartupVisibility = QOhosStartOptionsData::StartupVisibility::STARTUP_HIDE;
336 case StartOptions::StartupVisibility::Show:
337 internalStartupVisibility = QOhosStartOptionsData::StartupVisibility::STARTUP_SHOW;
341 if (internalStartupVisibility.has_value())
342 m_startOptions.startupVisibility = internalStartupVisibility.value();
344 qCWarning(QtForOhos,
"%s: unsupported startupVisibility: %d", Q_FUNC_INFO,
static_cast<
int>(startupVisibility));
348
349
350
351
352
353
354
355 void setStartWindowIcon(
const QImage &startWindowIcon)
override
357 m_startOptions.windowIcon = startWindowIcon;
361
362
363
364
365
366
367
368 void setStartWindowBackgroundColor(
const QColor &startWindowBackgroundColor)
override
370 if (startWindowBackgroundColor.isValid())
371 m_startOptions.windowBackgroundColorHex = startWindowBackgroundColor.name(QColor::HexArgb);
375
376
377
378
379
380
381 void setSupportWindowModes(
const QList<SupportWindowMode> &supportWindowModes)
override
383 auto qpaFuncsSupportWindowModes = mapSupportWindowModesToQpaFunctions(supportWindowModes);
384 if (!qpaFuncsSupportWindowModes.isEmpty())
385 m_startOptions.supportWindowModes = qpaFuncsSupportWindowModes;
387 qCWarning(QtForOhos,
"%s: empty supportWindowModes is unsupported, skipping", Q_FUNC_INFO);
391
392
393
394
395
396
397
398 void setMinWindowWidth(
int minWindowWidth) override
400 m_startOptions.minWindowWidth = minWindowWidth;
404
405
406
407
408
409
410
411 void setMinWindowHeight(
int minWindowHeight) override
413 m_startOptions.minWindowHeight = minWindowHeight;
417
418
419
420
421
422
423
424 void setMaxWindowWidth(
int maxWindowWidth) override
426 m_startOptions.maxWindowWidth = maxWindowWidth;
430
431
432
433
434
435
436
437 void setMaxWindowHeight(
int maxWindowHeight) override
439 m_startOptions.maxWindowHeight = maxWindowHeight;
443
444
445
446
447
448
449
450 void setHideStartWindow(
bool hideStartWindow) override
452 m_startOptions.hideStartWindow = hideStartWindow;
456
457
458
459
460
461
462
463 void setWindowCreateParams(
const WindowCreateParams &windowCreateParams)
override
465 const auto *windowCreateParamsImpl =
dynamic_cast<
const QOhosWindowCreateParamsImpl *>(&windowCreateParams);
466 if (windowCreateParamsImpl !=
nullptr)
467 m_startOptions.windowCreateParams = windowCreateParamsImpl->qpaWindowCreateParams();
471
472
473
474
475
476
477
478
479
480
481 void setCompletionHandler(
483 std::function<
void(
bool, ElementName, QString)> callback)
override
485 m_startOptions.optCompletionHandler =
486 std::make_shared<QOhosConsumer<
bool, QJsonObject, QString>>(
487 [contextPtr = QPointer<QObject>(context), callback = std::move(callback)](
488 bool succeeded,
const QJsonObject &elementName,
const QString &message) {
489 if (!contextPtr.isNull() && callback)
490 callback(succeeded, convertElementNameFromJsonObject(elementName), message);
496 return m_startOptions;
513
514
515
516
519 return std::make_shared<QOhosWindowCreateParamsImpl>();
523
524
525
526
529 return std::make_shared<QOhosStartOptionsImpl>();
533 const StartOptions &options)
535 const auto *startOptionsImpl =
dynamic_cast<
const QOhosStartOptionsImpl *>(&options);
536 return startOptionsImpl !=
nullptr
537 ?
std::make_optional(startOptionsImpl->getStartOptions())
Combined button and popup list for selecting options.
std::optional< QOhosStartOptionsData > tryConvertStartOptionsToQpaFunctionsStruct(const StartOptions &options)
std::shared_ptr< StartOptions > createStartOptions()
Creates StartOptions instance.
std::shared_ptr< WindowCreateParams > createWindowCreateParams()
Creates WindowCreateParams instance.
bool setWindowFadeInOutAnimation