From 85fc95f346a33173cea107f799cbcff2b92f6dfb Mon Sep 17 00:00:00 2001 From: Samuel Gaist Date: Tue, 20 Aug 2013 18:14:48 +0200 Subject: 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 Reviewed-by: Kevin Ottens Reviewed-by: David Faure (KDE) --- src/gui/kernel/qguiapplication.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/gui/kernel/qguiapplication.cpp') 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 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; isession_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 -- cgit v1.2.3