#ifndef _DOLPHIN_APPLICATION_H
#define _DOLPHIN_APPLICATION_H
-#include <kapplication.h>
+#include <kuniqueapplication.h>
+#include <kurl.h>
class DolphinMainWindow;
+class KUrl;
/**
- *
- * DolphinApplication will hold application wide data which
- * can be accessed.
+ * @brief Holds the application data which can be accessed.
* At first this will hold a list of DolphinMainWindows which
- * we will delete on application exit.
+ * we will delete on application exit.
*/
-class DolphinApplication : public KApplication {
+class DolphinApplication : public KUniqueApplication
+{
Q_OBJECT
+ Q_CLASSINFO("D-Bus Interface", "org.kde.dolphin.Application")
friend class DolphinMainWindow;
+
public:
DolphinApplication();
- ~DolphinApplication();
+ virtual ~DolphinApplication();
static DolphinApplication* app();
DolphinMainWindow* createMainWindow();
void refreshMainWindows();
-protected:
+ /** @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;
+
/**
- * called by the MainWindow to deregister
+ * 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()).
*/
- void removeMainWindow( DolphinMainWindow* );
+ virtual void commitData(QSessionManager& sessionManager);
+
+public slots:
+ int openWindow(const KUrl& url);
+ int openSplitWindow(const KUrl& leftUrl,const KUrl& rightUrl);
+
+protected:
+ /** Called by the DolphinMainWindow to deregister. */
+ void removeMainWindow(DolphinMainWindow* mainWindow);
private:
QList<DolphinMainWindow*> m_mainWindows;
-};
+ int m_lastId;
+ /** Is true if Dolphin is closed by the session manager **/
+ bool m_closedBySessionManager;
+};
#endif