Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qohosplatformtheme.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "private/qohosplatformtheme_p.h"
10#include <QtCore/private/qohoslogger_p.h>
11#include <QtGui/private/qguiapplication_p.h>
12#include <QtGui/private/qhighdpiscaling_p.h>
13#include <initializer_list>
14#include <qohosqpafunctions_p.h>
15#include <qohosutils.h>
16#include <qpa/qplatformfontdatabase.h>
17#include <qpa/qplatformintegration.h>
18#include <tuple>
19
21
22namespace {
23
25{
26 auto disabledColor = color;
27 disabledColor.setAlphaF(qBound(0.0, color.alphaF() * 0.4, 1.0));
28
29 return disabledColor;
30}
31
57
59{
60 const auto activeWindow = QColor("#FFFFFFFF");
61 const auto activeButtonText = QColor("#0A59F7");
62 const auto activeHighlight = QColor("#FF007DFF");
63 const auto highlighted = QColor("#FF0A59F7");
64 const auto textPrimary = QColor("#FF182431");
65
66 return {
67 .activeWindow = activeWindow,
68 .inactiveWindow = makeInactiveOrDisabledFromColor(activeWindow),
69 .activeButtonText = activeButtonText,
70 .inactiveButtonText = makeInactiveOrDisabledFromColor(activeButtonText),
71 .activeHighlight = activeHighlight,
72 .inactiveHighlight = makeInactiveOrDisabledFromColor(activeHighlight),
73 .clickEffect = QColor("#1A000000"),
74 .hover = QColor("#0D000000"),
75 .foregroundContrary = QColor("#FFFFFF"),
76 .highlighted = highlighted,
77 .inactiveHighlighted = makeInactiveOrDisabledFromColor(highlighted),
78 .textPrimary = textPrimary,
79 .inactiveTextPrimary = textPrimary,
80 .disabledTextPrimary = makeInactiveOrDisabledFromColor(textPrimary),
81 .inactiveText = makeInactiveOrDisabledFromColor(textPrimary),
82 .componentNormal = QColor("#19182431"),
83 .componentActivated = QColor("#007DFF"),
84 .indicatorArrow = QColor("#E5182431"),
85 .scrollBarSlider = QColor("#182431"),
86 .switchBgOff = QColor("#33FFFFFF"),
87 .switchOutlineOff = QColor("#66182431"),
88 .window = QColor("#FFF1F3F5"),
89 };
90};
91
93{
94 const auto activeWindow = QColor("#18181A");
95 const auto activeButtonText = QColor("#3F97E9");
96 const auto activeHighlight = QColor("#006CDE");
97 const auto highlighted = QColor("#3F97E9");
98 const auto textPrimary = QColor("#DBFFFFFF");
99
100 return {
101 .activeWindow = activeWindow,
102 .inactiveWindow = makeInactiveOrDisabledFromColor(activeWindow),
103 .activeButtonText = activeButtonText,
104 .inactiveButtonText = makeInactiveOrDisabledFromColor(activeButtonText),
105 .activeHighlight = activeHighlight,
106 .inactiveHighlight = makeInactiveOrDisabledFromColor(activeHighlight),
107 .clickEffect = QColor("#26FFFFFF"),
108 .hover = QColor("#19FFFFFF"),
109 .foregroundContrary = QColor("#E5E5E5"),
110 .highlighted = highlighted,
111 .inactiveHighlighted = makeInactiveOrDisabledFromColor(highlighted),
112 .textPrimary = textPrimary,
113 .inactiveTextPrimary = textPrimary,
114 .disabledTextPrimary = makeInactiveOrDisabledFromColor(textPrimary),
115 .inactiveText = makeInactiveOrDisabledFromColor(textPrimary),
116 .componentNormal = QColor("#19FFFFFF"),
117 .componentActivated = QColor("#3F97E9"),
118 .indicatorArrow = QColor("#DBFFFFFF"),
119 .scrollBarSlider = QColor("#FFFFFF"),
120 .switchBgOff = QColor("#33000000"),
121 .switchOutlineOff = QColor("#66FFFFFF"),
122 .window = QColor("#FF000000"),
123 };
124}
125
133
135{
136 const auto activeButton = QColor("#0C182431");
137
138 return {
139 .activeButton = activeButton,
140 .inactiveButton = makeInactiveOrDisabledFromColor(activeButton),
141 .focusedOutline = QColor("#007DFF"),
142 .enabledDefaultButtonText = QColor("#FFFFFFFF"),
143 };
144};
145
147{
148 const auto activeButton = QColor("#19FFFFFF");
149
150 return {
151 .activeButton = activeButton,
152 .inactiveButton = makeInactiveOrDisabledFromColor(activeButton),
153 .focusedOutline = QColor("#3F97E9"),
154 .enabledDefaultButtonText = QColor("#E5E5E5"),
155 };
156}
157
162
164{
165 return {
166 .windowButtonBackground = QColor("#FFD0CFD5"),
167 };
168};
169
171{
172 return {
173 .windowButtonBackground = QColor("#FFD0CFD5"),
174 };
175};
176
184
186{
187 return {
188 .activeWindowFrame = QColor("#FFE4E4E4"),
189 .inactiveWindowFrame = QColor("#FFF2F3F5"),
190 .textHint = QColor("#99182431"),
191 .textTertiary = QColor("#66182431"),
192 };
193};
194
196{
197 return {
198 .activeWindowFrame = QColor("#FF000000"),
199 .inactiveWindowFrame = QColor("#FF18181A"),
200 .textHint = QColor("#99FFFFFF"),
201 .textTertiary = QColor("#66FFFFFF"),
202 };
203}
204
210
212{
213 return {
214 .listSeparator = QColor("#1A000000"),
215 .inactiveText = makeInactiveOrDisabledFromColor(palettes.textPrimary),
216 };
217};
218
220{
221 return {
222 .listSeparator = QColor("#33FFFFFF"),
223 .inactiveText = makeInactiveOrDisabledFromColor(palettes.textPrimary),
224 };
225}
226
233
235{
236 const auto inactiveWindowText = QColor("#99182431");
237
238 return {
239 .activeWindowText = QColor("#FF007DFF"),
240 .inactiveWindowText = inactiveWindowText,
241 .disabledWindowText = makeInactiveOrDisabledFromColor(inactiveWindowText),
242 };
243};
244
246{
247 const auto inactiveWindowText = QColor("#99FFFFFF");
248
249 return {
250 .activeWindowText = QColor("#FF3F97E9"),
251 .inactiveWindowText = inactiveWindowText,
252 .disabledWindowText = makeInactiveOrDisabledFromColor(inactiveWindowText),
253 };
254}
255
261
263{
264 const auto textEditBackground = QColor("#0C182431");
265 return {
266 .textEditBackground = textEditBackground,
267 .inactiveTextEditBackground = makeInactiveOrDisabledFromColor(textEditBackground),
268 };
269};
270
272{
273 const auto textEditBackground = QColor("#19FFFFFF");
274 return {
275 .textEditBackground = textEditBackground,
276 .inactiveTextEditBackground = makeInactiveOrDisabledFromColor(textEditBackground),
277 };
278}
279
286
288{
289 return {
290 .background = QColor("#00000000"),
291 .groupBoxFrame = QColor("#66000000"),
292 .shadowXS = QColor("#19000000"),
293 };
294};
295
297{
298 return {
299 .background = QColor("#00000000"),
300 .groupBoxFrame = QColor("#66FFFFFF"),
301 .shadowXS = QColor("#19FFFFFF"),
302 };
303}
304
309
311{
312 return {
313 .activeButton = QColor("#FFFFFFFF"),
314 };
315};
316
318{
319 return {
320 .activeButton = QColor("#FF18181A"),
321 };
322}
323
329
331{
332 return {
333 .toolTipBorder = QColor("#1A000000"),
334 .toolTipBase = QColor("#FFFFFFFF"),
335 };
336};
337
339{
340 return {
341 .toolTipBorder = QColor("#1AFFFFFF"),
342 .toolTipBase = QColor("#404040"),
343 };
344}
345
359
361{
362 const auto palettes = makePalettesColorsLight();
363
364 return {
365 .palettes = palettes,
369 .menu = makeMenuPaletteColorsLight(palettes),
375 };
376}
377
379{
380 const auto palettes = makePalettesColorsDark();
381
382 return {
383 .palettes = palettes,
387 .menu = makeMenuPaletteColorsDark(palettes),
393 };
394}
395
397{
398 switch (scheme) {
399 case Qt::ColorScheme::Light: return makeAllPalettesColorsLight();
400 case Qt::ColorScheme::Dark: return makeAllPalettesColorsDark();
401 default:
402 break;
403 }
404
405 qOhosReportFatalErrorAndAbort(
406 "%s: got unsupported ColorScheme: %d", Q_FUNC_INFO, static_cast<int>(scheme));
407}
408
409constexpr int mouseDoubleClickDistance = 60;
410constexpr int mouseDoubleClickInterval = 300;
411
413 const QPalette &basePalette, std::initializer_list<std::tuple<QPalette::ColorGroup, QPalette::ColorRole, const QColor &>> brushEntries)
414{
415 auto palette = basePalette;
416
417 for (const auto &brushEntry : brushEntries) {
418 palette.setBrush(
419 std::get<QPalette::ColorGroup>(brushEntry),
420 std::get<QPalette::ColorRole>(brushEntry),
421 std::get<const QColor &>(brushEntry));
422 }
423
424 return palette;
425}
426
427QPalette makePalette(std::initializer_list<std::tuple<QPalette::ColorGroup, QPalette::ColorRole, const QColor &>> brushEntries)
428{
429 return makePalette(QPalette(), brushEntries);
430}
431
433{
434 return makePalette(
435 {
436 {QPalette::Active, QPalette::AlternateBase, palettesColors.palettes.componentActivated},
437
438 {QPalette::Active, QPalette::Button, palettesColors.button.activeButton},
439 {QPalette::Disabled, QPalette::Button, palettesColors.button.inactiveButton},
440 {QPalette::Inactive, QPalette::Button, palettesColors.button.inactiveButton},
441
442 {QPalette::Active, QPalette::ButtonText, palettesColors.palettes.activeButtonText},
443 {QPalette::Disabled, QPalette::ButtonText, palettesColors.palettes.inactiveButtonText},
444 {QPalette::Inactive, QPalette::ButtonText, palettesColors.palettes.inactiveButtonText},
445
446 {QPalette::All, QPalette::BrightText, palettesColors.button.enabledDefaultButtonText},
447
448 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
449 {QPalette::Active, QPalette::Dark, palettesColors.palettes.clickEffect},
450
451 {QPalette::Active, QPalette::Highlight, palettesColors.button.focusedOutline},
452 {QPalette::Active, QPalette::WindowText, palettesColors.palettes.indicatorArrow}
453 });
454}
455
457{
458 return makePalette(
459 makeButtonPalette(palettesColors),
460 {
461 {QPalette::Active, QPalette::AlternateBase, palettesColors.toolButton.windowButtonBackground},
462 });
463}
464
466{
467 return makePalette(
468 {
469 {QPalette::Active, QPalette::Window, palettesColors.palettes.activeWindow},
470 {QPalette::Disabled, QPalette::Window, palettesColors.palettes.inactiveWindow},
471 {QPalette::Inactive, QPalette::Window, palettesColors.palettes.inactiveWindow},
472
473 {QPalette::Active, QPalette::WindowText, palettesColors.palettes.textPrimary},
474 {QPalette::Disabled, QPalette::WindowText, palettesColors.palettes.disabledTextPrimary},
475 {QPalette::Inactive, QPalette::WindowText, palettesColors.palettes.inactiveTextPrimary},
476
477 {QPalette::Active, QPalette::Text, palettesColors.palettes.textPrimary},
478 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.disabledTextPrimary},
479 {QPalette::Inactive, QPalette::Text, palettesColors.palettes.inactiveTextPrimary},
480
481 {QPalette::Active, QPalette::Base, palettesColors.system.activeWindowFrame},
482 {QPalette::Disabled, QPalette::Base, palettesColors.system.inactiveWindowFrame},
483 {QPalette::Inactive, QPalette::Base, palettesColors.system.inactiveWindowFrame},
484
485 {QPalette::Active, QPalette::AlternateBase, palettesColors.palettes.textPrimary},
486
487 {QPalette::Active, QPalette::Highlight, palettesColors.palettes.highlighted},
488
489 {QPalette::All, QPalette::PlaceholderText, palettesColors.system.textHint},
490 {QPalette::Disabled, QPalette::PlaceholderText, palettesColors.system.textTertiary},
491
492 {QPalette::Active, QPalette::Midlight, palettesColors.palettes.scrollBarSlider},
493
494 {QPalette::Active, QPalette::Mid, palettesColors.palettes.componentNormal}
495 });
496}
497
499{
500 return makePalette(
501 {
502 {QPalette::Inactive, QPalette::Base, palettesColors.palettes.switchBgOff},
503 {QPalette::Inactive, QPalette::Button, palettesColors.palettes.switchOutlineOff},
504 {QPalette::Active, QPalette::Button, palettesColors.palettes.highlighted},
505 {QPalette::Active, QPalette::WindowText, palettesColors.palettes.highlighted},
506 {QPalette::Inactive, QPalette::WindowText, palettesColors.palettes.inactiveText},
507 {QPalette::Disabled, QPalette::WindowText, palettesColors.palettes.inactiveHighlighted},
508 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
509 {QPalette::Active, QPalette::Dark, palettesColors.palettes.clickEffect},
510 });
511}
512
514{
515 return makePalette(
516 {
517 {QPalette::Active, QPalette::AlternateBase, palettesColors.palettes.componentActivated},
518 {QPalette::All, QPalette::Base, palettesColors.palettes.window},
519 {QPalette::All, QPalette::Window, palettesColors.palettes.window},
520 {QPalette::Active, QPalette::Text, palettesColors.palettes.highlighted},
521 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.inactiveText},
522 {QPalette::Inactive, QPalette::Text, palettesColors.palettes.inactiveHighlighted},
523 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
524 {QPalette::Active, QPalette::Dark, palettesColors.palettes.clickEffect},
525 {QPalette::Active, QPalette::WindowText, palettesColors.palettes.indicatorArrow}
526 });
527}
528
530{
531 return makePalette(
532 {
533 {QPalette::Active, QPalette::Window, palettesColors.palettes.activeWindow},
534 {QPalette::Inactive, QPalette::Base, palettesColors.palettes.switchBgOff},
535 {QPalette::Inactive, QPalette::Button, palettesColors.palettes.switchOutlineOff},
536 {QPalette::Active, QPalette::Button, palettesColors.palettes.highlighted},
537
538 {QPalette::Active, QPalette::Text, palettesColors.palettes.textPrimary},
539 {QPalette::Disabled, QPalette::Text, palettesColors.menu.inactiveText},
540 {QPalette::Inactive, QPalette::Text, palettesColors.menu.inactiveText},
541
542 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
543 {QPalette::Active, QPalette::Dark, palettesColors.palettes.clickEffect},
544
545 {QPalette::Active, QPalette::Mid, palettesColors.menu.listSeparator}
546 });
547}
548
550{
551 return makePalette(
552 {
553 {QPalette::Active, QPalette::ButtonText, palettesColors.palettes.textPrimary},
554 {QPalette::Disabled, QPalette::ButtonText, palettesColors.menu.inactiveText},
555 {QPalette::Inactive, QPalette::ButtonText, palettesColors.menu.inactiveText},
556 });
557}
558
560{
561 return makePalette(
562 {
563 {QPalette::Active, QPalette::WindowText, palettesColors.tabBar.activeWindowText},
564 {QPalette::Inactive, QPalette::WindowText, palettesColors.tabBar.inactiveWindowText},
565 {QPalette::Disabled, QPalette::WindowText, palettesColors.tabBar.disabledWindowText},
566
567 {QPalette::Active, QPalette::Window, palettesColors.palettes.activeWindow},
568 {QPalette::Inactive, QPalette::Window, palettesColors.palettes.inactiveWindow},
569 {QPalette::Disabled, QPalette::Window, palettesColors.palettes.inactiveWindow},
570
571 {QPalette::Active, QPalette::Highlight, palettesColors.palettes.activeHighlight},
572 {QPalette::Inactive, QPalette::Highlight, palettesColors.palettes.inactiveHighlight},
573 {QPalette::Disabled, QPalette::Highlight, palettesColors.palettes.inactiveHighlight},
574 });
575}
576
578{
579 return makePalette(
580 makeSystemPalette(palettesColors),
581 {
582 {QPalette::Active, QPalette::AlternateBase, palettesColors.palettes.componentActivated},
583 {QPalette::All, QPalette::Base, palettesColors.textLineEdit.textEditBackground},
584 {QPalette::Disabled, QPalette::Base, palettesColors.textLineEdit.inactiveTextEditBackground},
585 {QPalette::All, QPalette::Text, palettesColors.palettes.textPrimary},
586 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.disabledTextPrimary},
587 });
588}
589
591{
592 return makePalette(
593 makeTextLineEditPalette(palettesColors),
594 {
595 {QPalette::All, QPalette::Base, palettesColors.palettes.activeWindow},
596 });
597}
598
600{
601 return makePalette(
602 {
603 {QPalette::Active, QPalette::Button, palettesColors.palettes.highlighted},
604 {QPalette::Inactive, QPalette::Button, palettesColors.palettes.switchOutlineOff},
605 {QPalette::Active, QPalette::Base, palettesColors.system.activeWindowFrame},
606 {QPalette::Inactive, QPalette::Base, palettesColors.palettes.switchBgOff},
607 {QPalette::Active, QPalette::AlternateBase, palettesColors.groupBox.groupBoxFrame},
608 {QPalette::Active, QPalette::Window, palettesColors.groupBox.background},
609 {QPalette::Inactive, QPalette::Window, palettesColors.groupBox.background},
610 {QPalette::Active, QPalette::Window, palettesColors.palettes.window},
611 {QPalette::Disabled, QPalette::Window, palettesColors.palettes.window},
612 {QPalette::Active, QPalette::Text, palettesColors.palettes.highlighted},
613 {QPalette::Inactive, QPalette::Text, palettesColors.palettes.highlighted},
614 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.inactiveHighlighted},
615 {QPalette::Current, QPalette::Text, palettesColors.palettes.highlighted},
616 {QPalette::Disabled, QPalette::WindowText, palettesColors.palettes.inactiveHighlighted},
617 {QPalette::Active, QPalette::ButtonText, palettesColors.palettes.textPrimary},
618 {QPalette::Disabled, QPalette::ButtonText, palettesColors.palettes.inactiveHighlighted},
619 {QPalette::Active, QPalette::Dark, palettesColors.palettes.clickEffect},
620 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
621 {QPalette::Active, QPalette::Shadow, palettesColors.groupBox.shadowXS},
622 {QPalette::Active, QPalette::Midlight, palettesColors.palettes.scrollBarSlider},
623 {QPalette::Active, QPalette::Mid, palettesColors.palettes.componentNormal}
624 });
625}
626
628{
629 return makePalette(
630 {
631 {QPalette::Active, QPalette::Button, palettesColors.header.activeButton},
632 {QPalette::Inactive, QPalette::Button, palettesColors.header.activeButton},
633 {QPalette::Disabled, QPalette::Button, palettesColors.palettes.inactiveWindow},
634
635 {QPalette::Current, QPalette::ButtonText, palettesColors.palettes.activeButtonText},
636 {QPalette::Active, QPalette::ButtonText, palettesColors.palettes.activeButtonText},
637 {QPalette::Inactive, QPalette::ButtonText, palettesColors.palettes.activeButtonText},
638 {QPalette::Disabled, QPalette::ButtonText, palettesColors.palettes.inactiveButtonText},
639 });
640}
641
643{
644 return makePalette(
645 {
646 {QPalette::Active, QPalette::Base, palettesColors.palettes.window},
647 {QPalette::Inactive, QPalette::Base, palettesColors.palettes.window},
648 {QPalette::Disabled, QPalette::Base, palettesColors.palettes.window},
649
650 {QPalette::Active, QPalette::AlternateBase, palettesColors.palettes.activeWindow},
651 {QPalette::Inactive, QPalette::AlternateBase, palettesColors.palettes.activeWindow},
652 {QPalette::Disabled, QPalette::AlternateBase, palettesColors.palettes.inactiveWindow},
653 {QPalette::Current, QPalette::AlternateBase, palettesColors.palettes.activeWindow},
654
655 {QPalette::Active, QPalette::Highlight, palettesColors.palettes.activeHighlight},
656 {QPalette::Inactive, QPalette::Highlight, palettesColors.palettes.activeHighlight},
657 {QPalette::Disabled, QPalette::Highlight, palettesColors.palettes.inactiveHighlight},
658
659 {QPalette::Active, QPalette::Window, palettesColors.palettes.activeWindow},
660 {QPalette::Inactive, QPalette::Window, palettesColors.palettes.activeWindow},
661 {QPalette::Disabled, QPalette::Window, palettesColors.palettes.inactiveWindow},
662
663 {QPalette::Active, QPalette::Text, palettesColors.palettes.activeHighlight},
664 {QPalette::Inactive, QPalette::Text, palettesColors.palettes.activeHighlight},
665 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.inactiveHighlight},
666
667 {QPalette::Active, QPalette::HighlightedText, palettesColors.palettes.activeWindow},
668 {QPalette::Inactive, QPalette::HighlightedText, palettesColors.palettes.activeWindow},
669 {QPalette::Disabled, QPalette::HighlightedText, palettesColors.palettes.inactiveWindow},
670
671 {QPalette::Active, QPalette::Dark, palettesColors.palettes.activeWindow},
672 {QPalette::Inactive, QPalette::Dark, palettesColors.palettes.activeWindow},
673 {QPalette::Disabled, QPalette::Dark, palettesColors.palettes.inactiveWindow},
674 {QPalette::Current, QPalette::Dark, palettesColors.palettes.activeWindow},
675 {QPalette::All, QPalette::Dark, palettesColors.palettes.activeWindow},
676
677 {QPalette::Active, QPalette::Light, palettesColors.palettes.hover},
678 {QPalette::Inactive, QPalette::Light, palettesColors.palettes.activeWindow},
679 {QPalette::Disabled, QPalette::Light, palettesColors.palettes.inactiveWindow},
680
681 {QPalette::Active, QPalette::Mid, palettesColors.palettes.activeWindow},
682 {QPalette::Inactive, QPalette::Mid, palettesColors.palettes.activeWindow},
683 {QPalette::Disabled, QPalette::Mid, palettesColors.palettes.inactiveWindow},
684 {QPalette::Current, QPalette::Mid, palettesColors.palettes.activeWindow},
685 {QPalette::All, QPalette::Mid, palettesColors.palettes.activeWindow},
686 });
687}
688
690{
691 return makePalette(
692 {
693 {QPalette::Active, QPalette::WindowText, palettesColors.palettes.highlighted},
694 {QPalette::Inactive, QPalette::WindowText, palettesColors.palettes.inactiveText},
695 {QPalette::Disabled, QPalette::WindowText, palettesColors.palettes.inactiveHighlighted},
696
697 {QPalette::Active, QPalette::Text, palettesColors.palettes.highlighted},
698 {QPalette::Disabled, QPalette::Text, palettesColors.palettes.inactiveText},
699 {QPalette::Inactive, QPalette::Text, palettesColors.palettes.inactiveHighlighted},
700 });
701}
702
704{
705 return makePalette(
706 {
707 {QPalette::All, QPalette::Base, palettesColors.toolTip.toolTipBorder},
708 {QPalette::All, QPalette::ToolTipBase, palettesColors.toolTip.toolTipBase},
709 {QPalette::All, QPalette::ToolTipText, palettesColors.palettes.highlighted},
710 });
711}
712
714{
715 auto font = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont();
716 font.setPointSize(12);
717 font.setBold(false);
718
719 return font;
720}
721
723{
724 auto font = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont();
725 font.setPointSize(16);
726
727 return font;
728}
729
731{
732 auto font = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont();
733 font.setPointSize(16);
734
735 return font;
736}
737
739{
740 auto font = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont();
741 font.setPointSize(16);
742
743 return font;
744}
745
747{
748 auto font = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont();
749 font.setPointSize(14);
750
751 return font;
752}
753
755{
756 const AllPalletesColors palettesColors = makeAllPalettesColors(scheme);
757 return {
758 {QPlatformTheme::ButtonPalette, makeButtonPalette(palettesColors)},
759 {QPlatformTheme::CheckBoxPalette, makeCheckBoxOrRadioButtonPalette(palettesColors)},
760 {QPlatformTheme::ComboBoxPalette, makeComboBoxPalette(palettesColors)},
761 {QPlatformTheme::GroupBoxPalette, makeGroupBoxPalette(palettesColors)},
762 {QPlatformTheme::HeaderPalette, makeHeaderPalette(palettesColors)},
763 {QPlatformTheme::ItemViewPalette, makeItemViewPalette(palettesColors)},
764 {QPlatformTheme::LabelPalette, makeLabelPalette(palettesColors)},
765 {QPlatformTheme::MenuPalette, makeMenuPalette(palettesColors)},
766 {QPlatformTheme::MenuBarPalette, makeMenuBarPalette(palettesColors)},
767 {QPlatformTheme::RadioButtonPalette, makeCheckBoxOrRadioButtonPalette(palettesColors)},
768 {QPlatformTheme::SystemPalette, makeSystemPalette(palettesColors)},
769 {QPlatformTheme::TabBarPalette, makeTabBarPalette(palettesColors)},
770 {QPlatformTheme::TextEditPalette, makeTextEditPalette(palettesColors)},
771 {QPlatformTheme::TextLineEditPalette, makeTextLineEditPalette(palettesColors)},
772 {QPlatformTheme::ToolButtonPalette, makeToolButtonPalette(palettesColors)},
773 {QPlatformTheme::ToolTipPalette, makeToolTipPalette(palettesColors)},
774 };
775}
776
778 Qt::ColorScheme scheme)
779{
780 switch (scheme) {
781 case Qt::ColorScheme::Unknown:
783 case Qt::ColorScheme::Light:
784 return makeQOhosOptional(false);
785 case Qt::ColorScheme::Dark:
786 return makeQOhosOptional(true);
787 };
789}
790
792 QOhosOptional<bool> darkModeFlag)
793{
794 if (darkModeFlag.hasValue()) {
795 if (!darkModeFlag.valueOr(false))
796 return Qt::ColorScheme::Light;
797 else
798 return Qt::ColorScheme::Dark;
799 } else {
800 return Qt::ColorScheme::Unknown;
801 }
802}
803
804}
805
808 {
811 })
812 , m_fonts(
813 {
822 })
823 , m_wheelScrollLines(defaultWheelScrollLines)
824{
825 m_ohosConfigDarkModeFlagSupplier = QtOhos::getQOhosQpaFunctions().makeOhosConfigDarkModeFlagDataSource(
826 [](auto) {
827 QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>();
828 });
829}
830
831void QOhosPlatformTheme::requestColorScheme(Qt::ColorScheme scheme)
832{
833 QOhosOptional<bool> isDarkMode = mapOhosThemeFromColorScheme(scheme);
835}
836
838{
839 return mapOhosThemeToColorScheme(m_ohosConfigDarkModeFlagSupplier());
840}
841
843{
844 auto _dbg = make_QCScopedDebug("QOhosPlatformTheme::createPlatformDialogHelper");
845 return QOhosDialogs::createHelper(type);
846}
847
848bool QOhosPlatformTheme::usePlatformNativeDialog(QPlatformTheme::DialogType type) const
849{
850 auto _dbg = make_QCScopedDebug("QOhosPlatformTheme::usePlatformNativeDialog");
851 return (type == QOhosPlatformTheme::FileDialog);
852}
853
855{
856 switch (hint) {
857 case StyleNames:
858 return QStringList(QString::fromUtf8(ohosThemeName));
859 case MouseDoubleClickDistance:
860 case TouchDoubleTapDistance:
861 {
862 auto *primaryScreen = qGuiApp->primaryScreen();
863 auto *platformScreen = primaryScreen != nullptr
864 ? static_cast<QOhosPlatformScreen *>(primaryScreen->handle())
865 : nullptr;
866 return platformScreen != nullptr
867 ? QHighDpi::fromNativePixels(
868 QHighDpi::toNative(
869 mouseDoubleClickDistance, platformScreen->pixelScalingCoefficient()),
870 platformScreen)
871 : mouseDoubleClickDistance;
872 }
873 case MouseDoubleClickInterval:
875 case WheelScrollLines:
876 return m_wheelScrollLines;
877 default:
878 return QPlatformTheme::themeHint(hint);
879 }
880}
881
882const QPalette *QOhosPlatformTheme::palette(Palette type) const
883{
884 const auto &palettes = m_themesPalettes[colorScheme()];
885 const auto it = palettes.find(type);
886 if (it != palettes.end())
887 return &it.value();
888 else
889 return QPlatformTheme::palette(type);
890}
891
892const QFont *QOhosPlatformTheme::font(Font type) const
893{
894 const auto fontIter = m_fonts.find(type);
895 return fontIter != m_fonts.end()
896 ? &fontIter.value()
897 : QPlatformTheme::font(type);
898}
899
900void QOhosPlatformTheme::setWheelScrollLines(int wheelScrollLines)
901{
902 m_wheelScrollLines = wheelScrollLines;
903}
904
906{
907 return makeQOhosSystemTrayIcon().release();
908}
909
910QT_END_NAMESPACE
std::enable_if_t< qohosplugincore_h_detail::isQOhosOptional< QOhosInvokeResult< Func, T > >, QOhosInvokeResult< Func, T > > andThen(Func &&func) const
void requestColorScheme(Qt::ColorScheme scheme) override
Qt::ColorScheme colorScheme() const override
void setWheelScrollLines(int wheelScrollLines)
QPlatformDialogHelper * createPlatformDialogHelper(DialogType type) const override
const QFont * font(Font type) const override
const QPalette * palette(Palette type) const override
Return a color palette for type type.
QPlatformSystemTrayIcon * createPlatformSystemTrayIcon() const override
Factory function for QSystemTrayIcon.
static constexpr int defaultWheelScrollLines
QVariant themeHint(ThemeHint hint) const override
virtual void setOhosConfigDarkModeFlag(QOhosOptional< bool > darkModeFlag)=0
Combined button and popup list for selecting options.
SystemPaletteColors makeSystemButtonPaletteColorsDark()
AllPalletesColors makeAllPalettesColorsLight()
QOhosOptional< bool > mapOhosThemeFromColorScheme(Qt::ColorScheme scheme)
QPalette makeLabelPalette(const AllPalletesColors &palettesColors)
QPalette makeCheckBoxOrRadioButtonPalette(const AllPalletesColors &palettesColors)
TabBarPaletteColors makeTabBarPaletteColorsDark()
QPalette makeSystemPalette(const AllPalletesColors &palettesColors)
SystemPaletteColors makeSystemButtonPaletteColorsLight()
QColor makeInactiveOrDisabledFromColor(const QColor &color)
AllPalletesColors makeAllPalettesColors(Qt::ColorScheme scheme)
QHash< QPlatformTheme::Palette, QPalette > makePalettesMap(Qt::ColorScheme scheme)
QPalette makeTextEditPalette(const AllPalletesColors &palettesColors)
TooltipPaletteColors makeTooltipPaletteColorsDark()
QPalette makePalette(const QPalette &basePalette, std::initializer_list< std::tuple< QPalette::ColorGroup, QPalette::ColorRole, const QColor & > > brushEntries)
Qt::ColorScheme mapOhosThemeToColorScheme(QOhosOptional< bool > darkModeFlag)
QPalette makePalette(std::initializer_list< std::tuple< QPalette::ColorGroup, QPalette::ColorRole, const QColor & > > brushEntries)
ButtonPaletteColors makeButtonPaletteColorsLight()
AllPalletesColors makeAllPalettesColorsDark()
MenuPaletteColors makeMenuPaletteColorsDark(const PalettesColors &palettes)
TooltipPaletteColors makeTooltipPaletteColorsLight()
PalettesColors makePalettesColorsDark()
ToolButtonPaletteColors makeToolButtonPaletteColorsDark()
GroupboxPaletteColors makeGroupboxPaletteColorsDark()
QPalette makeHeaderPalette(const AllPalletesColors &palettesColors)
ButtonPaletteColors makeButtonPaletteColorsDark()
MenuPaletteColors makeMenuPaletteColorsLight(const PalettesColors &palettes)
QPalette makeItemViewPalette(const AllPalletesColors &palettesColors)
constexpr int mouseDoubleClickInterval
constexpr int mouseDoubleClickDistance
QPalette makeTabBarPalette(const AllPalletesColors &palettesColors)
ToolButtonPaletteColors makeToolButtonPaletteColorsLight()
TextLineEditPaletteColors makeTextLineEditPaletteColorsLight()
TabBarPaletteColors makeTabBarPaletteColorsLight()
QPalette makeMenuBarPalette(const AllPalletesColors &palettesColors)
PalettesColors makePalettesColorsLight()
HeaderPaletteColors makeHeaderPaletteColorsDark()
QPalette makeComboBoxPalette(const AllPalletesColors &palettesColors)
TextLineEditPaletteColors makeTextLineEditPaletteColorsDark()
QPalette makeMenuPalette(const AllPalletesColors &palettesColors)
HeaderPaletteColors makeHeaderPaletteColorsLight()
QPalette makeGroupBoxPalette(const AllPalletesColors &palettesColors)
QPalette makeButtonPalette(const AllPalletesColors &palettesColors)
QPalette makeTextLineEditPalette(const AllPalletesColors &palettesColors)
QPalette makeToolTipPalette(const AllPalletesColors &palettesColors)
GroupboxPaletteColors makeGroupboxPaletteColorsLight()
QPalette makeToolButtonPalette(const AllPalletesColors &palettesColors)
QOhosQpaFunctions & getQOhosQpaFunctions()
QOhosOptional< void > makeEmptyQOhosOptional()