]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use KUniqueApplication::newInstance() as David suggested some time ago. This simplifi...
authorPeter Penz <peter.penz19@gmail.com>
Thu, 22 Mar 2007 07:19:07 +0000 (07:19 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Thu, 22 Mar 2007 07:19:07 +0000 (07:19 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=645276

src/dolphinapplication.cpp
src/dolphinapplication.h
src/main.cpp

index 59e870adb4691680e48db16b9048a21106704690..9e6d0565f5b7fd19e461459ad59ea14cfb659ae5 100644 (file)
@@ -22,6 +22,7 @@
 #include "dolphinmainwindow.h"
 
 #include <applicationadaptor.h>
+#include <kcmdlineargs.h>
 #include <kurl.h>
 #include <QDBusConnection>
 
@@ -55,17 +56,6 @@ DolphinMainWindow* DolphinApplication::createMainWindow()
     return mainWindow;
 }
 
-int DolphinApplication::openWindow(const QString& url)
-{
-    DolphinMainWindow* win = createMainWindow();
-    if ((win->activeView() != 0) && !url.isEmpty()) {
-        win->activeView()->setUrl(KUrl(url));
-    }
-    win->show();
-    //TODO find how to raise a window (as if we've launched a new dolphin process)
-    return win->getId();
-}
-
 void DolphinApplication::removeMainWindow(DolphinMainWindow* mainWindow)
 {
     m_mainWindows.removeAll(mainWindow);
@@ -78,4 +68,34 @@ void DolphinApplication::refreshMainWindows()
     }
 }
 
+
+int DolphinApplication::newInstance()
+{
+    int exitValue = KUniqueApplication::newInstance();
+
+    KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
+    if (args->count() > 0) {
+        for (int i = 0; i < args->count(); ++i) {
+            openWindow(args->arg(i));
+        }
+    }
+    else {
+        openWindow(QString());
+    }
+
+    args->clear();
+
+    return exitValue;
+}
+
+int DolphinApplication::openWindow(const QString& url)
+{
+    DolphinMainWindow* win = createMainWindow();
+    if ((win->activeView() != 0) && !url.isEmpty()) {
+        win->activeView()->setUrl(KUrl(url));
+    }
+    win->show();
+    return win->getId();
+}
+
 #include "dolphinapplication.moc"
index fa6a1ceeefb6f0b7399b49d6accfaaaf5f5941be..4ea91db83853282083f375915b83e0fe93473772 100644 (file)
@@ -51,6 +51,9 @@ public:
     DolphinMainWindow* createMainWindow();
     void refreshMainWindows();
 
+    /** @see KUniqueApplication::newInstance(). */
+    virtual int newInstance();
+
 public slots:
     int openWindow(const QString& url);
 
index 5a6d3dd8e81356c9a17941f7686017720d8d5d0a..47095c3a5dfee5409a1c1dd0b1d2bfa7c831ad89 100644 (file)
@@ -33,18 +33,6 @@ static KCmdLineOptions options[] =
     KCmdLineLastOption
 };
 
-void openWindow(DolphinApplication* app, const QString& url = QString())
-{
-    if (app != 0) {
-        app->openWindow(url);
-        return;
-    }
-
-    static QDBusInterface dbusIface("org.kde.dolphin", "/dolphin/Application", "",
-                                    QDBusConnection::connectToBus(QDBusConnection::SessionBus, "session_bus"));
-    QDBusReply<int> reply = dbusIface.call("openWindow", url);
-}
-
 int main(int argc, char **argv)
 {
     KAboutData about("dolphin",
@@ -67,11 +55,10 @@ int main(int argc, char **argv)
 
     KCmdLineArgs::init(argc, argv, &about);
     KCmdLineArgs::addCmdLineOptions(options);
-    DolphinApplication *app = 0;
+
+    DolphinApplication* app = 0;
     if (DolphinApplication::start()) {
         app = new DolphinApplication();
-    }
-
 
 #ifdef __GNUC__
 #warning TODO, SessionManagement
@@ -85,18 +72,11 @@ int main(int argc, char **argv)
         }
     } else {
 #endif
-
-    KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
-    if (args->count() > 0) {
-        for (int i = 0; i < args->count(); ++i) {
-            openWindow(app, args->arg(i));
-        }
-    }
-    else {
-        openWindow(app);
-    }
-    args->clear();
-    if (app != 0) {
         return app->exec();
     }
+
+    static QDBusInterface dbusIface("org.kde.dolphin", "/dolphin/Application", "",
+                                    QDBusConnection::connectToBus(QDBusConnection::SessionBus, "session_bus"));
+    dbusIface.call("openWindow");
+    return 0;
 }