]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinapplication.h
Do not warn the user about closing Dolphin windows with multiple tabs
[dolphin.git] / src / dolphinapplication.h
index 69d306863965fe9e6c727c6b679e100bed7a0e48..4c65443612b777643ee7e7b85c507f34cc76da09 100644 (file)
 #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();
 
@@ -50,15 +53,37 @@ public:
     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