the session manager - there's no need to reinvent the wheel ;-)
Thanks to Lubos Lunak for the hint.
svn path=/trunk/KDE/kdebase/apps/; revision=
1013726
#include <QtDBus/QDBusConnection>
DolphinApplication::DolphinApplication() :
- m_lastId(0), m_closedBySessionManager(false)
+ m_lastId(0)
{
new ApplicationAdaptor(this);
QDBusConnection::sessionBus().registerObject("/dolphin/Application", this);
return 0;
}
-bool DolphinApplication::closedBySessionManager() const
-{
- return m_closedBySessionManager;
-}
-
-void DolphinApplication::commitData(QSessionManager& sessionManager) {
- m_closedBySessionManager = true;
- KUniqueApplication::commitData(sessionManager);
- m_closedBySessionManager = false;
-}
-
int DolphinApplication::openWindow(const KUrl& url)
{
DolphinMainWindow* win = createMainWindow();
/** @see KUniqueApplication::newInstance(). */
virtual int newInstance();
- /**
- * Find out if Dolphin is closed directly by the user or
- * by the session manager because the session is closed
- */
- bool closedBySessionManager() const;
-
- /**
- * This virtual function is called by the session manager when
- * it closes Dolphin. It is reimplemented to make the information
- * if Dolphin is closed by the session manager or not accessible in
- * DolphinMainWindow (via the function closedBySessionManager()).
- */
- virtual void commitData(QSessionManager& sessionManager);
-
public slots:
int openWindow(const KUrl& url);
int openSplitWindow(const KUrl& leftUrl,const KUrl& rightUrl);
private:
QList<DolphinMainWindow*> m_mainWindows;
int m_lastId;
-
- /** Is true if Dolphin is closed by the session manager **/
- bool m_closedBySessionManager;
};
#endif
// by the session manager because the session is closed
bool closedByUser = true;
DolphinApplication *application = qobject_cast<DolphinApplication*>(qApp);
- if (application && application->closedBySessionManager()) {
+ if (application && application->sessionSaving()) {
closedByUser = false;
}