parent
cc56ed41d2
commit
d23e5fbf82
@ -1,127 +0,0 @@
|
||||
From ceb84f777b217c4a25c0e2356ddab372fae6f562 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Becker <chemobejk@gmail.com>
|
||||
Date: Sat, 9 May 2015 17:16:27 +0300
|
||||
Subject: [PATCH] Add KConfigGui::setSessionConfig()
|
||||
|
||||
When the application receives a saveState signal it needs to replace the
|
||||
current KConfig object with a new one based on the QSessionManager
|
||||
information. Add a new interface that accepts the new session id and key.
|
||||
|
||||
BUG: 346768
|
||||
REVIEW: 123705
|
||||
---
|
||||
src/gui/kconfiggui.cpp | 41 ++++++++++++++++++++++++++++++++---------
|
||||
src/gui/kconfiggui.h | 17 +++++++++++++++--
|
||||
2 files changed, 47 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/gui/kconfiggui.cpp b/src/gui/kconfiggui.cpp
|
||||
index 0048c60..67b6009 100644
|
||||
--- a/src/gui/kconfiggui.cpp
|
||||
+++ b/src/gui/kconfiggui.cpp
|
||||
@@ -25,28 +25,51 @@
|
||||
|
||||
#include <kconfig.h>
|
||||
|
||||
+static QString configName(const QString &id, const QString &key)
|
||||
+{
|
||||
+ return(QLatin1String("session/") + QGuiApplication::applicationName() +
|
||||
+ QLatin1Char('_') + id +
|
||||
+ QLatin1Char('_') + key);
|
||||
+}
|
||||
+
|
||||
static KConfig *s_sessionConfig = Q_NULLPTR;
|
||||
|
||||
KConfig *KConfigGui::sessionConfig()
|
||||
{
|
||||
- if (!s_sessionConfig) { // create an instance specific config object
|
||||
- s_sessionConfig = new KConfig(sessionConfigName(), KConfig::SimpleConfig);
|
||||
+#ifdef QT_NO_SESSIONMANAGER
|
||||
+#error QT_NO_SESSIONMANAGER was set, this will not compile. Reconfigure Qt with Session management support.
|
||||
+#endif
|
||||
+ if (!hasSessionConfig()) {
|
||||
+ // create the default instance specific config object
|
||||
+ // from applications' -session command line parameter
|
||||
+ s_sessionConfig = new KConfig(configName(qApp->sessionId(),
|
||||
+ qApp->sessionKey()),
|
||||
+ KConfig::SimpleConfig);
|
||||
}
|
||||
+
|
||||
return s_sessionConfig;
|
||||
}
|
||||
|
||||
+void KConfigGui::setSessionConfig(const QString &id, const QString &key)
|
||||
+{
|
||||
+ if (hasSessionConfig()) {
|
||||
+ delete s_sessionConfig;
|
||||
+ s_sessionConfig = Q_NULLPTR;
|
||||
+ }
|
||||
+
|
||||
+ // create a new instance specific config object from supplied id & key
|
||||
+ s_sessionConfig = new KConfig(configName(id, key),
|
||||
+ KConfig::SimpleConfig);
|
||||
+}
|
||||
+
|
||||
bool KConfigGui::hasSessionConfig()
|
||||
{
|
||||
return s_sessionConfig != Q_NULLPTR;
|
||||
}
|
||||
|
||||
+#ifndef KDE_NO_DEPRECATED
|
||||
QString KConfigGui::sessionConfigName()
|
||||
{
|
||||
-#ifdef QT_NO_SESSIONMANAGER
|
||||
-#error QT_NO_SESSIONMANAGER was set, this will not compile. Reconfigure Qt with Session management support.
|
||||
-#endif
|
||||
- const QString sessionKey = qApp->sessionKey();
|
||||
- const QString sessionId = qApp->sessionId();
|
||||
- return QString(QLatin1String("session/%1_%2_%3")).arg(QGuiApplication::applicationName()).arg(sessionId).arg(sessionKey);
|
||||
+ return sessionConfig()->name();
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
diff --git a/src/gui/kconfiggui.h b/src/gui/kconfiggui.h
|
||||
index 173400f..fe1f820 100644
|
||||
--- a/src/gui/kconfiggui.h
|
||||
+++ b/src/gui/kconfiggui.h
|
||||
@@ -31,7 +31,7 @@ class KConfig;
|
||||
namespace KConfigGui
|
||||
{
|
||||
/**
|
||||
- * Returns the application session config object.
|
||||
+ * Returns the current application session config object.
|
||||
*
|
||||
* @return A pointer to the application's instance specific
|
||||
* KConfig object.
|
||||
@@ -40,6 +40,16 @@ namespace KConfigGui
|
||||
KCONFIGGUI_EXPORT KConfig *sessionConfig();
|
||||
|
||||
/**
|
||||
+ * Replaces the current application session config object.
|
||||
+ *
|
||||
+ * @param id new session id
|
||||
+ * @param key new session key
|
||||
+ *
|
||||
+ * @since 5.11
|
||||
+ */
|
||||
+KCONFIGGUI_EXPORT void setSessionConfig(const QString &id, const QString &key);
|
||||
+
|
||||
+/**
|
||||
* Indicates if a session config has been created for that application
|
||||
* (ie. if sessionConfig() got called at least once)
|
||||
*
|
||||
@@ -51,8 +61,11 @@ KCONFIGGUI_EXPORT bool hasSessionConfig();
|
||||
* Returns the name of the application session
|
||||
*
|
||||
* @return the application session name
|
||||
+ * @deprecated since 5.11, use sessionConfig()->name()
|
||||
*/
|
||||
-KCONFIGGUI_EXPORT QString sessionConfigName();
|
||||
+#ifndef KDE_NO_DEPRECATED
|
||||
+KCONFIGGUI_DEPRECATED QString sessionConfigName();
|
||||
+#endif
|
||||
}
|
||||
|
||||
#endif // KCONFIGGUI_H
|
||||
--
|
||||
2.4.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 661d03d14aa2342e0542b49da4b440954c9654eb Mon Sep 17 00:00:00 2001
|
||||
From: David Faure <faure@kde.org>
|
||||
Date: Tue, 12 May 2015 12:48:55 +0200
|
||||
Subject: [PATCH 3/3] fix missing export
|
||||
|
||||
---
|
||||
src/gui/kconfiggui.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gui/kconfiggui.h b/src/gui/kconfiggui.h
|
||||
index fe1f820..813ab64 100644
|
||||
--- a/src/gui/kconfiggui.h
|
||||
+++ b/src/gui/kconfiggui.h
|
||||
@@ -64,7 +64,7 @@ KCONFIGGUI_EXPORT bool hasSessionConfig();
|
||||
* @deprecated since 5.11, use sessionConfig()->name()
|
||||
*/
|
||||
#ifndef KDE_NO_DEPRECATED
|
||||
-KCONFIGGUI_DEPRECATED QString sessionConfigName();
|
||||
+KCONFIGGUI_DEPRECATED_EXPORT QString sessionConfigName();
|
||||
#endif
|
||||
}
|
||||
|
||||
--
|
||||
2.4.0
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff -up kconfig-5.12.0/src/core/CMakeLists.txt.fullpath kconfig-5.12.0/src/core/CMakeLists.txt
|
||||
--- kconfig-5.12.0/src/core/CMakeLists.txt.fullpath 2015-07-05 03:54:35.000000000 -0500
|
||||
+++ kconfig-5.12.0/src/core/CMakeLists.txt 2015-07-09 13:13:53.978827068 -0500
|
||||
@@ -21,7 +21,7 @@ add_library(KF5::ConfigCore ALIAS KF5Con
|
||||
|
||||
target_compile_definitions(KF5ConfigCore
|
||||
PRIVATE
|
||||
- KCONF_UPDATE_INSTALL_LOCATION="${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_LIBEXECDIR_KF5}/$<TARGET_FILE_NAME:KF5::kconf_update>"
|
||||
+ KCONF_UPDATE_INSTALL_LOCATION="${KDE_INSTALL_LIBEXECDIR_KF5}/$<TARGET_FILE_NAME:KF5::kconf_update>"
|
||||
)
|
||||
|
||||
target_include_directories(KF5ConfigCore INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/KConfigCore>")
|
Loading…
Reference in new issue