25QGnomeThemePrivate::QGnomeThemePrivate()
28 QObject::connect(&m_gnomePortal, &QGnomePortalInterface::themeNameChanged, &m_gnomePortal,
29 [
this](
const QString &themeName) { m_themeName = themeName; });
41void QGnomeThemePrivate::configureFonts(
const QString >kFontName)
const
43 Q_ASSERT(!systemFont);
44 const int split = gtkFontName.lastIndexOf(QChar::Space);
45 float size = QStringView{gtkFontName}.mid(split + 1).toFloat();
46 QString fontName = gtkFontName.left(split);
48 systemFont =
new QFont(fontName, size);
49 fixedFont =
new QFont(QLatin1StringView(QGenericUnixTheme::defaultFixedFontNameC), systemFont->pointSize());
50 fixedFont->setStyleHint(QFont::TypeWriter);
51 qCDebug(lcQpaFonts) <<
"default fonts: system" << systemFont <<
"fixed" << fixedFont;
54Qt::ColorScheme QGnomeThemePrivate::colorScheme()
const
56 if (hasRequestedColorScheme())
57 return m_requestedColorScheme;
60 if (Qt::ColorScheme colorScheme = m_gnomePortal.colorScheme();
61 colorScheme != Qt::ColorScheme::Unknown)
68 if (m_themeName.contains(QLatin1StringView(
"light"), Qt::CaseInsensitive))
69 return Qt::ColorScheme::Light;
70 else if (m_themeName.contains(QLatin1StringView(
"dark"), Qt::CaseInsensitive))
71 return Qt::ColorScheme::Dark;
75 return Qt::ColorScheme::Unknown;
83QGnomeTheme::QGnomeTheme()
84 : QGenericUnixTheme(
new QGnomeThemePrivate())
89 QGnomePortalInterface *portal = &d->m_gnomePortal;
91 QObject::connect(portal, &QGnomePortalInterface::colorSchemeChanged, portal,
92 [
this](Qt::ColorScheme colorScheme) { updateColorScheme(colorScheme); });
94 QObject::connect(portal, &QGnomePortalInterface::contrastChanged, portal,
95 [
this](Qt::ContrastPreference contrast) { updateHighContrast(contrast); });
99QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint)
const
102 case QPlatformTheme::DialogButtonBoxButtonsHaveIcons:
103 return QVariant(
true);
104 case QPlatformTheme::DialogButtonBoxLayout:
105 return QVariant(QPlatformDialogHelper::GnomeLayout);
106 case QPlatformTheme::SystemIconThemeName:
107 return QVariant(QStringLiteral(
"Adwaita"));
108 case QPlatformTheme::SystemIconFallbackThemeName:
109 return QVariant(QStringLiteral(
"gnome"));
110 case QPlatformTheme::IconThemeSearchPaths:
111 return QVariant(xdgIconThemePaths());
112 case QPlatformTheme::IconPixmapSizes:
113 return QVariant::fromValue(availableXdgFileIconSizes());
114 case QPlatformTheme::StyleNames: {
115 QStringList styleNames;
116 styleNames << QStringLiteral(
"Fusion") << QStringLiteral(
"windows");
117 return QVariant(styleNames);
119 case QPlatformTheme::KeyboardScheme:
120 return QVariant(
int(GnomeKeyboardScheme));
121 case QPlatformTheme::PasswordMaskCharacter:
122 return QVariant(QChar(0x2022));
123 case QPlatformTheme::UiEffects:
124 return QVariant(
int(HoverEffect));
125 case QPlatformTheme::ButtonPressKeys:
126 return QVariant::fromValue(
127 QList<Qt::Key>({ Qt::Key_Space, Qt::Key_Return, Qt::Key_Enter, Qt::Key_Select }));
128 case QPlatformTheme::PreselectFirstFileInDirectory:
130 case QPlatformTheme::MouseCursorTheme:
131 return QVariant(mouseCursorTheme());
132 case QPlatformTheme::MouseCursorSize:
133 return QVariant(mouseCursorSize());
134 case QPlatformTheme::PreferFileIconFromTheme:
139 return QPlatformTheme::themeHint(hint);
173void QGnomeTheme::requestColorScheme(Qt::ColorScheme scheme)
176 if (d->m_requestedColorScheme == scheme)
178 QPlatformTheme::requestColorScheme(scheme);
179 d->m_requestedColorScheme = scheme;
180 QWindowSystemInterface::handleThemeChange();
228QString QGnomeTheme::standardButtonText(
int button)
const
231 case QPlatformDialogHelper::Ok:
232 return QCoreApplication::translate(
"QGnomeTheme",
"&OK");
233 case QPlatformDialogHelper::Save:
234 return QCoreApplication::translate(
"QGnomeTheme",
"&Save");
235 case QPlatformDialogHelper::Cancel:
236 return QCoreApplication::translate(
"QGnomeTheme",
"&Cancel");
237 case QPlatformDialogHelper::Close:
238 return QCoreApplication::translate(
"QGnomeTheme",
"&Close");
239 case QPlatformDialogHelper::Discard:
240 return QCoreApplication::translate(
"QGnomeTheme",
"Close without Saving");
244 return QPlatformTheme::standardButtonText(button);