mirror of
				https://github.com/JakubMelka/PDF4QT.git
				synced 2025-06-05 21:59:17 +02:00 
			
		
		
		
	Issue #181: where is the dark mode?
This commit is contained in:
		| @@ -20,6 +20,7 @@ | |||||||
|  |  | ||||||
| #include <map> | #include <map> | ||||||
| #include <set> | #include <set> | ||||||
|  | #include <optional> | ||||||
|  |  | ||||||
| #include <QMenu> | #include <QMenu> | ||||||
| #include <QAction> | #include <QAction> | ||||||
| @@ -30,6 +31,7 @@ | |||||||
| #include <QGroupBox> | #include <QGroupBox> | ||||||
| #include <QMessageBox> | #include <QMessageBox> | ||||||
| #include <QApplication> | #include <QApplication> | ||||||
|  | #include <QStyleHints> | ||||||
|  |  | ||||||
| #include "pdfdbgheap.h" | #include "pdfdbgheap.h" | ||||||
|  |  | ||||||
| @@ -44,6 +46,8 @@ int qt_default_dpi_y() { return 96; } | |||||||
| namespace pdf | namespace pdf | ||||||
| { | { | ||||||
|  |  | ||||||
|  | std::optional<bool> s_isDarkThemeOverride; | ||||||
|  |  | ||||||
| static constexpr bool isScalingNeeded() | static constexpr bool isScalingNeeded() | ||||||
| { | { | ||||||
|     return QT_VERSION_MAJOR < 6; |     return QT_VERSION_MAJOR < 6; | ||||||
| @@ -172,13 +176,20 @@ void PDFWidgetUtils::style(QWidget* widget) | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void PDFWidgetUtils::overrideDarkTheme(bool isDarkTheme) | ||||||
|  | { | ||||||
|  |     s_isDarkThemeOverride = isDarkTheme; | ||||||
|  | } | ||||||
|  |  | ||||||
| bool PDFWidgetUtils::isDarkTheme() | bool PDFWidgetUtils::isDarkTheme() | ||||||
| { | { | ||||||
|     QPalette palette = QApplication::palette(); |     if (s_isDarkThemeOverride.has_value()) | ||||||
|     QColor backgroundColor = palette.color(QPalette::Window); |     { | ||||||
|     QColor textColor = palette.color(QPalette::WindowText); |         return s_isDarkThemeOverride.value(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return backgroundColor.lightness() < textColor.lightness(); |     Qt::ColorScheme colorScheme = QApplication::styleHints()->colorScheme(); | ||||||
|  |     return colorScheme == Qt::ColorScheme::Dark; | ||||||
| } | } | ||||||
|  |  | ||||||
| void PDFWidgetUtils::convertActionForDarkTheme(QAction* action, QSize iconSize, qreal devicePixelRatioF) | void PDFWidgetUtils::convertActionForDarkTheme(QAction* action, QSize iconSize, qreal devicePixelRatioF) | ||||||
|   | |||||||
| @@ -60,8 +60,10 @@ public: | |||||||
|     /// Apply style to the widget |     /// Apply style to the widget | ||||||
|     static void style(QWidget* widget); |     static void style(QWidget* widget); | ||||||
|  |  | ||||||
|     /// Vrátí true, pokud je aktuálně nastavená dark theme |     /// Overrides automatically detected dark theme / light theme settings | ||||||
|     /// pro aplikaci. |     static void overrideDarkTheme(bool isDarkTheme); | ||||||
|  |  | ||||||
|  |     /// Returns true if the dark theme is currently set for the application. | ||||||
|     static bool isDarkTheme(); |     static bool isDarkTheme(); | ||||||
|  |  | ||||||
|     /// Converts an action's icon for use in a dark theme. |     /// Converts an action's icon for use in a dark theme. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user