27QGnomeThemePrivate::QGnomeThemePrivate()
30 QObject::connect(&m_gnomePortal, &QGnomePortalInterface::themeNameChanged, &m_gnomePortal,
31 [
this](
const QString &themeName) { m_themeName = themeName; });
43void QGnomeThemePrivate::configureFonts(
const QString >kFontName)
const
45 Q_ASSERT(!systemFont);
46 const int split = gtkFontName.lastIndexOf(QChar::Space);
47 float size = QStringView{gtkFontName}.mid(split + 1).toFloat();
48 QString fontName = gtkFontName.left(split);
50 systemFont =
new QFont(fontName, size);
51 fixedFont =
new QFont(QLatin1StringView(QGenericUnixTheme::defaultFixedFontNameC), systemFont->pointSize());
52 fixedFont->setStyleHint(QFont::TypeWriter);
53 qCDebug(lcQpaFonts) <<
"default fonts: system" << systemFont <<
"fixed" << fixedFont;
56Qt::ColorScheme QGnomeThemePrivate::colorScheme()
const
58 if (hasRequestedColorScheme())
59 return m_requestedColorScheme;
62 if (Qt::ColorScheme colorScheme = m_gnomePortal.colorScheme();
63 colorScheme != Qt::ColorScheme::Unknown)
70 if (m_themeName.contains(QLatin1StringView(
"light"), Qt::CaseInsensitive))
71 return Qt::ColorScheme::Light;
72 else if (m_themeName.contains(QLatin1StringView(
"dark"), Qt::CaseInsensitive))
73 return Qt::ColorScheme::Dark;
77 return Qt::ColorScheme::Unknown;
85QGnomeTheme::QGnomeTheme()
86 : QGenericUnixTheme(
new QGnomeThemePrivate())
91 QGnomePortalInterface *portal = &d->m_gnomePortal;
93 QObject::connect(portal, &QGnomePortalInterface::colorSchemeChanged, portal,
94 [
this](Qt::ColorScheme colorScheme) { updateColorScheme(colorScheme); });
96 QObject::connect(portal, &QGnomePortalInterface::contrastChanged, portal,
97 [
this](Qt::ContrastPreference contrast) { updateHighContrast(contrast); });
101QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint)
const
104 case QPlatformTheme::DialogButtonBoxButtonsHaveIcons:
105 return QVariant(
true);
106 case QPlatformTheme::DialogButtonBoxLayout:
107 return QVariant(QPlatformDialogHelper::GnomeLayout);
108 case QPlatformTheme::SystemIconThemeName:
109 return QVariant(QStringLiteral(
"Adwaita"));
110 case QPlatformTheme::SystemIconFallbackThemeName:
111 return QVariant(QStringLiteral(
"gnome"));
112 case QPlatformTheme::IconThemeSearchPaths:
113 return QVariant(xdgIconThemePaths());
114 case QPlatformTheme::IconPixmapSizes:
115 return QVariant::fromValue(availableXdgFileIconSizes());
116 case QPlatformTheme::StyleNames: {
117 QStringList styleNames;
118 styleNames << QStringLiteral(
"Fusion") << QStringLiteral(
"windows");
119 return QVariant(styleNames);
121 case QPlatformTheme::KeyboardScheme:
122 return QVariant(
int(GnomeKeyboardScheme));
123 case QPlatformTheme::PasswordMaskCharacter:
124 return QVariant(QChar(0x2022));
125 case QPlatformTheme::UiEffects:
126 return QVariant(
int(HoverEffect));
127 case QPlatformTheme::ButtonPressKeys:
128 return QVariant::fromValue(
129 QList<Qt::Key>({ Qt::Key_Space, Qt::Key_Return, Qt::Key_Enter, Qt::Key_Select }));
130 case QPlatformTheme::PreselectFirstFileInDirectory:
132 case QPlatformTheme::MouseCursorTheme:
133 return QVariant(mouseCursorTheme());
134 case QPlatformTheme::MouseCursorSize:
135 return QVariant(mouseCursorSize());
136 case QPlatformTheme::PreferFileIconFromTheme:
141 return QPlatformTheme::themeHint(hint);
175void QGnomeTheme::requestColorScheme(Qt::ColorScheme scheme)
178 if (d->m_requestedColorScheme == scheme)
180 QPlatformTheme::requestColorScheme(scheme);
181 d->m_requestedColorScheme = scheme;
182 QWindowSystemInterface::handleThemeChange();
230QString QGnomeTheme::standardButtonText(
int button)
const
233 case QPlatformDialogHelper::Ok:
234 return QCoreApplication::translate(
"QGnomeTheme",
"&OK");
235 case QPlatformDialogHelper::Save:
236 return QCoreApplication::translate(
"QGnomeTheme",
"&Save");
237 case QPlatformDialogHelper::Cancel:
238 return QCoreApplication::translate(
"QGnomeTheme",
"&Cancel");
239 case QPlatformDialogHelper::Close:
240 return QCoreApplication::translate(
"QGnomeTheme",
"&Close");
241 case QPlatformDialogHelper::Discard:
242 return QCoreApplication::translate(
"QGnomeTheme",
"Close without Saving");
246 return QPlatformTheme::standardButtonText(button);