aboutsummaryrefslogtreecommitdiff
path: root/src/gui/kconfiggui.cpp
diff options
context:
space:
mode:
authorStefan Becker <chemobejk@gmail.com>2015-05-09 17:16:27 +0300
committerRex Dieter <rdieter@math.unl.edu>2015-05-11 15:37:13 -0500
commit9978cfd5ccd18509dd514b3a7ada8c158c209de1 (patch)
tree9ec5fc21c41796153ad477db8da1efa30651d14d /src/gui/kconfiggui.cpp
parenta9d71364dc59cb49688518c10648e7555d6fdc67 (diff)
downloadkconfig-9978cfd5ccd18509dd514b3a7ada8c158c209de1.tar.gz
kconfig-9978cfd5ccd18509dd514b3a7ada8c158c209de1.tar.bz2
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
Diffstat (limited to 'src/gui/kconfiggui.cpp')
-rw-r--r--src/gui/kconfiggui.cpp41
1 files changed, 32 insertions, 9 deletions
diff --git a/src/gui/kconfiggui.cpp b/src/gui/kconfiggui.cpp
index 0048c60a..67b6009a 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