1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-19 10:16:34 +01:00

Add "Preffer color scheme" option

BUG: 439891
CCBUG: 497331

Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
This commit is contained in:
Juraj Oravec 2024-12-17 23:41:09 +01:00
parent b084416f40
commit 4f94d09258
Signed by: SGOrava
GPG Key ID: 13660A3F1D9F093B
5 changed files with 81 additions and 9 deletions

View File

@ -67,6 +67,8 @@
#include <QRegularExpression>
#include <QtWebEngineWidgetsVersion>
#include <QtWebEngineCoreVersion>
#include <QtGuiVersion>
#include <QStyleHints>
#include <QWebEngineNotification>
#include <QWebEngineUrlScheme>
@ -149,10 +151,6 @@ MainApplication::MainApplication(int &argc, char** argv)
}
#endif
QByteArray chromium_flags = qgetenv("QTWEBENGINE_CHROMIUM_FLAGS");
chromium_flags.append(" --enable-features=WebRTCPipeWireCapturer");
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", chromium_flags);
QUrl startUrl;
QString startProfile;
QStringList messages;
@ -287,11 +285,8 @@ MainApplication::MainApplication(int &argc, char** argv)
profileManager.initCurrentProfile(startProfile);
Settings::createSettings(DataPaths::currentProfilePath() + QLatin1String("/settings.ini"));
if (Settings::globalSettings()->value("Web-Browser-Settings/hardwareAccel", false).toBool()) {
chromium_flags.append(" --enable-oop-rasterization --enable-gpu-rasterization --enable-native-gpu-memory-buffers --use-gl=desktop");
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", chromium_flags);
}
setChromiumFlags();
NetworkManager::registerSchemes();
registerAllowedSchemes();
@ -412,6 +407,33 @@ MainApplication::~MainApplication()
Settings::syncSettings();
}
void MainApplication::setChromiumFlags()
{
QByteArray chromium_flags = qgetenv("QTWEBENGINE_CHROMIUM_FLAGS");
chromium_flags.append(" --enable-features=WebRTCPipeWireCapturer");
if (Settings::globalSettings()->value("Web-Browser-Settings/hardwareAccel", false).toBool()) {
chromium_flags.append(" --enable-oop-rasterization --enable-gpu-rasterization --enable-native-gpu-memory-buffers --use-gl=desktop");
}
int prefferColorScheme = Settings::globalSettings()->value("Web-Browser-Settings/prefferColorScheme", Qz::ColorScheme_Auto).toInt();
if ( (prefferColorScheme == Qz::ColorScheme_Dark)
#if QTGUI_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|| ((prefferColorScheme == Qz::ColorScheme_Auto) && (styleHints()->colorScheme() == Qt::ColorScheme::Dark))
#endif
) {
chromium_flags.append(" --blink-settings=preferredColorScheme=0");
}
else if ((prefferColorScheme == Qz::ColorScheme_Light)
#if QTGUI_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|| ((prefferColorScheme == Qz::ColorScheme_Auto) && (styleHints()->colorScheme() == Qt::ColorScheme::Light))
#endif
) {
chromium_flags.append(" --blink-settings=preferredColorScheme=1");
}
qputenv("QTWEBENGINE_CHROMIUM_FLAGS", chromium_flags);
}
bool MainApplication::isClosing() const
{
return m_isClosing;

View File

@ -71,6 +71,8 @@ public:
explicit MainApplication(int &argc, char** argv);
~MainApplication();
void setChromiumFlags();
bool isClosing() const;
bool isPrivate() const;
bool isPortable() const;

View File

@ -111,6 +111,12 @@ enum NewTabPositionFlag {
Q_DECLARE_FLAGS(NewTabPositionFlags, NewTabPositionFlag)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qz::NewTabPositionFlags)
enum ColorScheme {
ColorScheme_Auto = 0,
ColorScheme_Light,
ColorScheme_Dark
};
}
#if defined(Q_OS_WIN) || defined(Q_OS_OS2)

View File

@ -63,6 +63,7 @@
#include <QWebEngineSettings>
#include <QLibraryInfo>
#include <QtWebEngineWidgetsVersion>
#include <QtGuiVersion>
static QString createLanguageItem(const QString &lang)
{
@ -308,6 +309,19 @@ Preferences::Preferences(BrowserWindow* window)
ui->forceDarkMode->hide();
#endif
int prefferColorSchemeSetting = settings.value(QSL("prefferColorScheme"), Qz::ColorScheme_Auto).toInt();
#if QTGUI_VERSION >= QT_VERSION_CHECK(6, 5, 0)
ui->prefferColorScheme->addItem(tr("Auto"), Qz::ColorScheme_Auto);
#endif
ui->prefferColorScheme->addItem(tr("Light"), Qz::ColorScheme_Light);
ui->prefferColorScheme->addItem(tr("Dark"), Qz::ColorScheme_Dark);
#if QTGUI_VERSION < QT_VERSION_CHECK(6, 5, 0)
if (prefferColorSchemeSetting > 0) {
prefferColorSchemeSetting--;
}
#endif
ui->prefferColorScheme->setCurrentIndex(prefferColorSchemeSetting);
const auto levels = WebView::zoomLevels();
for (int level : levels) {
ui->defaultZoomLevel->addItem(tr("%1%").arg(QString::number(level)));
@ -1016,6 +1030,7 @@ void Preferences::saveSettings()
#if QTWEBENGINECORE_VERSION >= QT_VERSION_CHECK(6, 7, 0)
settings.setValue(QSL("forceDarkMode"), ui->forceDarkMode->isChecked());
#endif
settings.setValue(QSL("prefferColorScheme"), ui->prefferColorScheme->currentData().toInt());
#ifdef Q_OS_WIN
settings.setValue(QSL("CheckDefaultBrowser"), ui->checkDefaultBrowser->isChecked());
#endif

View File

@ -160,7 +160,7 @@
<x>0</x>
<y>0</y>
<width>783</width>
<height>651</height>
<height>723</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
@ -1145,6 +1145,33 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_22">
<item>
<widget class="QLabel" name="label_16">
<property name="text">
<string>Preffer color scheme:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="prefferColorScheme"/>
</item>
<item>
<spacer name="horizontalSpacer_40">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item row="2" column="0">