Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/Application.cpp')
-rw-r--r--src/gui/Application.cpp59
1 files changed, 53 insertions, 6 deletions
diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp
index b79f2c30a..625540c1d 100644
--- a/src/gui/Application.cpp
+++ b/src/gui/Application.cpp
@@ -18,8 +18,14 @@
*/
#include "Application.h"
-#include "MainWindow.h"
+
+#include "autotype/AutoType.h"
#include "core/Config.h"
+#include "core/Global.h"
+#include "gui/MainWindow.h"
+#include "gui/osutils/OSUtils.h"
+#include "gui/styles/dark/DarkStyle.h"
+#include "gui/styles/light/LightStyle.h"
#include <QFileInfo>
#include <QFileOpenEvent>
@@ -28,9 +34,6 @@
#include <QStandardPaths>
#include <QtNetwork/QLocalSocket>
-#include "autotype/AutoType.h"
-#include "core/Global.h"
-
#if defined(Q_OS_WIN) || (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS))
#include "core/OSEventFilter.h"
#endif
@@ -96,7 +99,7 @@ Application::Application(int& argc, char** argv)
m_lockServer.listen(m_socketName);
break;
case QLockFile::LockFailedError: {
- if (config()->get("SingleInstance").toBool()) {
+ if (config()->get(Config::SingleInstance).toBool()) {
// Attempt to connect to the existing instance
QLocalSocket client;
for (int i = 0; i < 3; ++i) {
@@ -139,6 +142,32 @@ Application::~Application()
}
}
+void Application::applyTheme()
+{
+ QString appTheme = config()->get(Config::GUI_ApplicationTheme).toString();
+ if (appTheme == "auto") {
+ if (osUtils->isDarkMode()) {
+ setStyle(new DarkStyle);
+ m_darkTheme = true;
+ } else {
+ setStyle(new LightStyle);
+ }
+ } else if (appTheme == "light") {
+ setStyle(new LightStyle);
+ } else if (appTheme == "dark") {
+ setStyle(new DarkStyle);
+ m_darkTheme = true;
+ } else {
+ // Classic mode, don't check for dark theme on Windows
+ // because Qt 5.x does not support it
+#ifndef Q_OS_WIN
+ m_darkTheme = osUtils->isDarkMode();
+#endif
+ }
+
+ setPalette(style()->standardPalette());
+}
+
bool Application::event(QEvent* event)
{
// Handle Apple QFileOpenEvent from finder (double click on .kdbx file)
@@ -257,7 +286,7 @@ bool Application::isAlreadyRunning() const
// In DEBUG mode we can run unlimited instances
return false;
#endif
- return config()->get("SingleInstance").toBool() && m_alreadyRunning;
+ return config()->get(Config::SingleInstance).toBool() && m_alreadyRunning;
}
bool Application::sendFileNamesToRunningInstance(const QStringList& fileNames)
@@ -281,3 +310,21 @@ bool Application::sendFileNamesToRunningInstance(const QStringList& fileNames)
const bool disconnected = client.waitForDisconnected(WaitTimeoutMSec);
return writeOk && disconnected;
}
+
+bool Application::isDarkTheme() const
+{
+ return m_darkTheme;
+}
+
+void Application::restart()
+{
+ // Disable single instance
+ m_lockServer.close();
+ if (m_lockFile) {
+ m_lockFile->unlock();
+ delete m_lockFile;
+ m_lockFile = nullptr;
+ }
+
+ exit(RESTART_EXITCODE);
+}