summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qguiapplication.cpp
diff options
context:
space:
mode:
authorSamuel Gaist <samuel.gaist@edeltech.ch>2013-08-20 18:14:48 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-04 00:05:12 +0200
commit85fc95f346a33173cea107f799cbcff2b92f6dfb (patch)
treeae32f6b2ed881d1f9488c31a0cef69839b29ca3d /src/gui/kernel/qguiapplication.cpp
parenta871f224f86e51b3d009374a1a5aa1cf70bfa66e (diff)
Add QPA session manager
The QSessionManager doesn't allow customization in platform independent way. The new QPlatformSessionManager aims to change that. Now the QSessionManagerPrivate has a new QPlatformSessionManager member to forward all the calls to QSessionManager's functions. If no platform manager is present, the current behavior is used. QPlatformSessionManager mimics the current QSessionManager behavior. A new factory function has been added to QPlatformIntegration to return a QPlatformSessionManager Task-number: QTBUG-28228 Change-Id: Ida7ac16a8f5303df5014fcb67878170ebdb37203 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com> Reviewed-by: David Faure (KDE) <faure@kde.org>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r--src/gui/kernel/qguiapplication.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 4c2adef6de..1186cc2905 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1068,7 +1068,10 @@ void QGuiApplicationPrivate::init()
bool doGrabUnderDebugger = false;
QList<QByteArray> pluginList;
// Get command line params
-
+#ifndef QT_NO_SESSIONMANAGER
+ QString session_id;
+ QString session_key;
+#endif
int j = argc ? 1 : 0;
for (int i=1; i<argc; i++) {
if (argv[i] && *argv[i] != '-') {
@@ -2767,13 +2770,13 @@ bool QGuiApplication::isSessionRestored() const
QString QGuiApplication::sessionId() const
{
Q_D(const QGuiApplication);
- return d->session_id;
+ return d->session_manager->sessionId();
}
QString QGuiApplication::sessionKey() const
{
Q_D(const QGuiApplication);
- return d->session_key;
+ return d->session_manager->sessionKey();
}
bool QGuiApplication::isSavingSession() const
@@ -2782,12 +2785,12 @@ bool QGuiApplication::isSavingSession() const
return d->is_saving_session;
}
-void QGuiApplicationPrivate::commitData(QSessionManager& manager)
+void QGuiApplicationPrivate::commitData()
{
Q_Q(QGuiApplication);
is_saving_session = true;
- emit q->commitDataRequest(manager);
- if (manager.allowsInteraction()) {
+ emit q->commitDataRequest(*session_manager);
+ if (session_manager->allowsInteraction()) {
QWindowList done;
QWindowList list = QGuiApplication::topLevelWindows();
bool cancelled = false;
@@ -2802,17 +2805,17 @@ void QGuiApplicationPrivate::commitData(QSessionManager& manager)
}
}
if (cancelled)
- manager.cancel();
+ session_manager->cancel();
}
is_saving_session = false;
}
-void QGuiApplicationPrivate::saveState(QSessionManager &manager)
+void QGuiApplicationPrivate::saveState()
{
Q_Q(QGuiApplication);
is_saving_session = true;
- emit q->saveStateRequest(manager);
+ emit q->saveStateRequest(*session_manager);
is_saving_session = false;
}
#endif //QT_NO_SESSIONMANAGER