]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Port Dolphin away from KApplication, KCmdLineArgs and K4AboutData
authorMathieu Tarral <mathieu.tarral@gmail.com>
Wed, 4 Feb 2015 09:22:03 +0000 (10:22 +0100)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 4 Feb 2015 09:22:03 +0000 (10:22 +0100)
CMakeLists.txt
src/CMakeLists.txt
src/dolphinapplication.cpp [deleted file]
src/dolphinapplication.h [deleted file]
src/dolphinmainwindow.cpp
src/dolphinmainwindow.h
src/main.cpp
src/settings/dolphinsettingsdialog.cpp

index 43e38075485d4149128bdaf6953fa387903a80aa..e2e93b146ecbce4857b766fb37d3e82adf6276cd 100644 (file)
@@ -19,7 +19,7 @@ ecm_setup_version(${DOLPHIN_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
                   SOVERSION 5
 )
 
-find_package(KF5 REQUIRED COMPONENTS DocTools Init KCMUtils KDELibs4Support NewStuff)
+find_package(KF5 REQUIRED COMPONENTS DocTools Init KCMUtils KDELibs4Support NewStuff CoreAddons I18n)
 find_package(KF5 COMPONENTS Activities)
 
 find_package(Phonon4Qt5 CONFIG REQUIRED)
index 748b09316bdb4961c1ef21c5609655d39805194f..6ae11c833d1af86ca99b75c3806e9bf4a95bb77b 100644 (file)
@@ -147,7 +147,6 @@ install(FILES views/versioncontrol/fileviewversioncontrolplugin.desktop DESTINAT
 ##########################################
 
 set(dolphin_SRCS
-    dolphinapplication.cpp
     dolphindockwidget.cpp
     dolphinmainwindow.cpp
     dolphinviewcontainer.cpp
@@ -236,6 +235,8 @@ target_link_libraries(kdeinit_dolphin
     KF5::Solid
     Phonon::phonon4qt5
     KF5::KDELibs4Support
+    KF5::I18n
+    KF5::CoreAddons
 )
 
 if (KF5Activities_FOUND)
diff --git a/src/dolphinapplication.cpp b/src/dolphinapplication.cpp
deleted file mode 100644 (file)
index da9358e..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006-2011 by Peter Penz <peter.penz19@gmail.com>        *
- *   Copyright (C) 2006 by Holger 'zecke' Freyther <freyther@kde.org>      *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
-
-#include "dolphinapplication.h"
-#include "dolphinmainwindow.h"
-#include "dolphin_generalsettings.h"
-
-#include <KCmdLineArgs>
-#include <KDebug>
-#include <QUrl>
-
-DolphinApplication::DolphinApplication() :
-    m_mainWindow(0)
-{
-    m_mainWindow = new DolphinMainWindow();
-    m_mainWindow->setAttribute(Qt::WA_DeleteOnClose);
-
-    KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
-
-    const int argsCount = args->count();
-
-    QList<QUrl> urls;
-    for (int i = 0; i < argsCount; ++i) {
-        const QUrl url = args->url(i);
-        if (url.isValid()) {
-            urls.append(url);
-        }
-    }
-
-    bool resetSplitSettings = false;
-    if (args->isSet("split") && !GeneralSettings::splitView()) {
-        // Dolphin should be opened with a split view although this is not
-        // set in the GeneralSettings. Temporary adjust the setting until
-        // all passed URLs have been opened.
-        GeneralSettings::setSplitView(true);
-        resetSplitSettings = true;
-
-        // We need 2 URLs to open Dolphin in split view mode
-        if (urls.isEmpty()) { // No URL given - Open home URL in all two views
-            urls.append(GeneralSettings::homeUrl());
-            urls.append(GeneralSettings::homeUrl());
-        } else if (urls.length() == 1) { // Only 1 URL given - Open given URL in all two views
-            urls.append(urls.at(0));
-        }
-    }
-
-    if (!urls.isEmpty()) {
-        if (args->isSet("select")) {
-            m_mainWindow->openFiles(urls);
-        } else {
-            m_mainWindow->openDirectories(urls);
-        }
-    } else {
-        const QUrl homeUrl(QUrl::fromLocalFile(GeneralSettings::homeUrl()));
-        m_mainWindow->openNewActivatedTab(homeUrl);
-    }
-
-    if (resetSplitSettings) {
-        GeneralSettings::setSplitView(false);
-    }
-
-    args->clear();
-
-    m_mainWindow->show();
-}
-
-DolphinApplication::~DolphinApplication()
-{
-}
-
-DolphinApplication* DolphinApplication::app()
-{
-    return qobject_cast<DolphinApplication*>(qApp);
-}
-
-void DolphinApplication::restoreSession()
-{
-    const QString className = KXmlGuiWindow::classNameOfToplevel(1);
-    if (className == QLatin1String("DolphinMainWindow")) {
-        m_mainWindow->restore(1);
-    } else {
-        kWarning() << "Unknown class " << className << " in session saved data!";
-    }
-}
-
diff --git a/src/dolphinapplication.h b/src/dolphinapplication.h
deleted file mode 100644 (file)
index 69d07c3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006-2011 by Peter Penz <peter.penz19@gmail.com>        *
- *   Copyright (C) 2006 by Holger 'zecke' Freyther <freyther@kde.org>      *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
-
-#ifndef DOLPHIN_APPLICATION_H
-#define DOLPHIN_APPLICATION_H
-
-#include <KApplication>
-
-class DolphinMainWindow;
-
-class DolphinApplication : public KApplication
-{
-    Q_OBJECT
-
-public:
-    DolphinApplication();
-    virtual ~DolphinApplication();
-
-    static DolphinApplication* app();
-
-    void restoreSession();
-
-private:
-    DolphinMainWindow* m_mainWindow;
-};
-
-#endif
index 218698bef153411e41627b7265b8f2aad8883899..0ee6e5c2cc376f64f17aaefce6047091fbf444be 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "dolphinmainwindow.h"
 
-#include "dolphinapplication.h"
 #include "dolphindockwidget.h"
 #include "dolphincontextmenu.h"
 #include "dolphinnewfilemenu.h"
@@ -69,6 +68,7 @@
 #include <KToolInvocation>
 #include <KUrlComboBox>
 
+#include <QApplication>
 #include <QMenuBar>
 #include <QClipboard>
 #include <QToolButton>
@@ -353,8 +353,7 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event)
     // Find out if Dolphin is closed directly by the user or
     // by the session manager because the session is closed
     bool closedByUser = true;
-    DolphinApplication *application = qobject_cast<DolphinApplication*>(qApp);
-    if (application && application->sessionSaving()) {
+    if (qApp->isSessionRestored()) {
         closedByUser = false;
     }
 
index 8c8d42ee41f78d1a2be23c22bbbecc06a3ef83e9..e3188aee5625c17c0bf7d1d47a98dd10bd434c81 100644 (file)
@@ -36,7 +36,6 @@
 typedef KIO::FileUndoManager::CommandType CommandType;
 
 class DolphinViewActionHandler;
-class DolphinApplication;
 class DolphinSettingsDialog;
 class DolphinViewContainer;
 class DolphinRemoteEncoding;
@@ -58,7 +57,6 @@ class DolphinMainWindow: public KXmlGuiWindow
     Q_OBJECT
     Q_CLASSINFO("D-Bus Interface", "org.kde.dolphin.MainWindow")
     Q_PROPERTY(int id READ getId SCRIPTABLE true)
-    friend class DolphinApplication;
 
 public:
     DolphinMainWindow();
@@ -121,6 +119,11 @@ public slots:
     /** Stores all settings and quits Dolphin. */
     void quit();
 
+    /**
+     * Opens a new tab showing the URL \a url and activates the tab.
+     */
+    void openNewActivatedTab(const QUrl& url);
+
 signals:
     /**
      * Is sent if the selection of the currently active view has
@@ -335,11 +338,6 @@ private slots:
      */
     void openNewTab(const QUrl& url);
 
-    /**
-     * Opens a new tab showing the URL \a url and activates the tab.
-     */
-    void openNewActivatedTab(const QUrl& url);
-
     /**
      * Opens the selected folder in a new tab.
      */
index bcd19d4d202a4d56b2b9cee325235a552f002557..ed4cfff20d1f7bbed9af6a65cb3aa6610c18b9ff 100644 (file)
@@ -1,6 +1,7 @@
 /***************************************************************************
  *   Copyright (C) 2006 by Peter Penz <peter.penz19@gmail.com>             *
  *   Copyright (C) 2006 by Stefan Monov <logixoul@gmail.com>               *
+ *   Copyright (C) 2015 by Mathieu Tarral <mathieu.tarral@gmail.com>       *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
 
-#include "dolphinapplication.h"
-
 #include "dolphinmainwindow.h"
+#include "dolphin_generalsettings.h"
 
-#include <k4aboutdata.h>
-#include <KCmdLineArgs>
+#include <KAboutData>
+#include <QCommandLineParser>
+#include <QCommandLineOption>
+#include <QApplication>
 #include <KLocalizedString>
-#include <kmainwindow.h>
-#include <kdeversion.h>
 #include <KDebug>
 
 extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
 {
-    K4AboutData about("dolphin", 0,
-                     ki18nc("@title", "Dolphin"),
-                     "4.60",
-                     ki18nc("@title", "File Manager"),
-                     K4AboutData::License_GPL,
-                     ki18nc("@info:credit", "(C) 2006-2014 Peter Penz, Frank Reininghaus, and Emmanuel Pescosta"));
-    about.setHomepage("http://dolphin.kde.org");
-    about.addAuthor(ki18nc("@info:credit", "Emmanuel Pescosta"),
-                    ki18nc("@info:credit", "Maintainer (since 2014) and developer"),
-                    "emmanuelpescosta099@gmail.com");
-    about.addAuthor(ki18nc("@info:credit", "Frank Reininghaus"),
-                    ki18nc("@info:credit", "Maintainer (2012-2014) and developer"),
-                    "frank78ac@googlemail.com");
-    about.addAuthor(ki18nc("@info:credit", "Peter Penz"),
-                    ki18nc("@info:credit", "Maintainer and developer (2006-2012)"),
-                    "peter.penz19@gmail.com");
-    about.addAuthor(ki18nc("@info:credit", "Sebastian Trüg"),
-                    ki18nc("@info:credit", "Developer"),
-                    "trueg@kde.org"),
-    about.addAuthor(ki18nc("@info:credit", "David Faure"),
-                    ki18nc("@info:credit", "Developer"),
-                    "faure@kde.org");
-    about.addAuthor(ki18nc("@info:credit", "Aaron J. Seigo"),
-                    ki18nc("@info:credit", "Developer"),
-                    "aseigo@kde.org");
-    about.addAuthor(ki18nc("@info:credit", "Rafael Fernández López"),
-                    ki18nc("@info:credit", "Developer"),
-                    "ereslibre@kde.org");
-    about.addAuthor(ki18nc("@info:credit", "Kevin Ottens"),
-                    ki18nc("@info:credit", "Developer"),
-                    "ervin@kde.org");
-    about.addAuthor(ki18nc("@info:credit", "Holger Freyther"),
-                    ki18nc("@info:credit", "Developer"),
-                    "freyther@gmx.net");
-    about.addAuthor(ki18nc("@info:credit", "Max Blazejak"),
-                    ki18nc("@info:credit", "Developer"),
-                    "m43ksrocks@gmail.com");
-    about.addAuthor(ki18nc("@info:credit", "Michael Austin"),
-                    ki18nc("@info:credit", "Documentation"),
-                    "tuxedup@users.sourceforge.net");
-    // the .desktop file is not taken into account when launching manually, so
-    // set the icon precautionally:
-    about.setProgramIconName("system-file-manager");
-
-    KCmdLineArgs::init(argc, argv, &about);
-
-    KCmdLineOptions options;
-
-    options.add("select", ki18nc("@info:shell", "The files and directories passed as arguments "
-                                                "will be selected."));
-    options.add("split", ki18nc("@info:shell", "Dolphin will get started with a split view."));
-    options.add("+[Url]", ki18nc("@info:shell", "Document to open"));
-    KCmdLineArgs::addCmdLineOptions(options);
-
-    {
-        DolphinApplication app;
-        if (app.isSessionRestored()) {
-            app.restoreSession();
+    QApplication app(argc, argv);
+    app.setWindowIcon(QIcon::fromTheme("system-file-manager"));
+
+    KAboutData aboutData("dolphin", i18n("Dolphin"), "4.60",
+                         i18nc("@title", "File Manager"),
+                         KAboutLicense::GPL,
+                         i18nc("@info:credit", "(C) 2006-2014 Peter Penz, Frank Reininghaus, and Emmanuel Pescosta"));
+    aboutData.setHomepage("http://dolphin.kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "Emmanuel Pescosta"),
+                        i18nc("@info:credit", "Maintainer (since 2014) and developer"),
+                        "emmanuelpescosta099@gmail.com");
+    aboutData.addAuthor(i18nc("@info:credit", "Frank Reininghaus"),
+                        i18nc("@info:credit", "Maintainer (2012-2014) and developer"),
+                        "frank78ac@googlemail.com");
+    aboutData.addAuthor(i18nc("@info:credit", "Peter Penz"),
+                        i18nc("@info:credit", "Maintainer and developer (2006-2012)"),
+                        "peter.penz19@gmail.com");
+    aboutData.addAuthor(i18nc("@info:credit", "Sebastian Trüg"),
+                        i18nc("@info:credit", "Developer"),
+                        "trueg@kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "David Faure"),
+                        i18nc("@info:credit", "Developer"),
+                        "faure@kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "Aaron J. Seigo"),
+                        i18nc("@info:credit", "Developer"),
+                        "aseigo@kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "Rafael Fernández López"),
+                        i18nc("@info:credit", "Developer"),
+                        "ereslibre@kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "Kevin Ottens"),
+                        i18nc("@info:credit", "Developer"),
+                        "ervin@kde.org");
+    aboutData.addAuthor(i18nc("@info:credit", "Holger Freyther"),
+                        i18nc("@info:credit", "Developer"),
+                        "freyther@gmx.net");
+    aboutData.addAuthor(i18nc("@info:credit", "Max Blazejak"),
+                        i18nc("@info:credit", "Developer"),
+                        "m43ksrocks@gmail.com");
+    aboutData.addAuthor(i18nc("@info:credit", "Michael Austin"),
+                        i18nc("@info:credit", "Documentation"),
+                        "tuxedup@users.sourceforge.net");
+
+    KAboutData::setApplicationData(aboutData);
+
+    QCommandLineParser parser;
+    parser.addVersionOption();
+    parser.addHelpOption();
+    aboutData.setupCommandLine(&parser);
+
+    // command line options
+    parser.addOption(QCommandLineOption(QStringList() << QLatin1String("select"), i18nc("@info:shell", "The files and directories passed as arguments "
+                                                                                        "will be selected.")));
+    parser.addOption(QCommandLineOption(QStringList() << QLatin1String("split"), i18nc("@info:shell", "Dolphin will get started with a split view.")));
+    parser.addPositionalArgument(QLatin1String("+[Url]"), i18nc("@info:shell", "Document to open"));
+
+    parser.process(app);
+    aboutData.processCommandLine(&parser);
+
+
+    DolphinMainWindow* m_mainWindow = new DolphinMainWindow();
+    m_mainWindow->setAttribute(Qt::WA_DeleteOnClose);
+
+    QList<QUrl> urls;
+    const QStringList args = parser.positionalArguments();
+    foreach (const QString& str,  args) {
+        const QUrl url(str);
+        if (url.isValid()) {
+            urls.append(url);
+        }
+    }
+
+    bool resetSplitSettings = false;
+    if (parser.isSet("split") && !GeneralSettings::splitView()) {
+        // Dolphin should be opened with a split view although this is not
+        // set in the GeneralSettings. Temporary adjust the setting until
+        // all passed URLs have been opened.
+        GeneralSettings::setSplitView(true);
+        resetSplitSettings = true;
+
+        // We need 2 URLs to open Dolphin in split view mode
+        if (urls.isEmpty()) { // No URL given - Open home URL in all two views
+            urls.append(GeneralSettings::homeUrl());
+            urls.append(GeneralSettings::homeUrl());
+        } else if (urls.length() == 1) { // Only 1 URL given - Open given URL in all two views
+            urls.append(urls.at(0));
+        }
+    }
+
+    if (!urls.isEmpty()) {
+        if (parser.isSet("select")) {
+            m_mainWindow->openFiles(urls);
+        } else {
+            m_mainWindow->openDirectories(urls);
+        }
+    } else {
+        const QUrl homeUrl(QUrl::fromLocalFile(GeneralSettings::homeUrl()));
+        m_mainWindow->openNewActivatedTab(homeUrl);
+    }
+
+    if (resetSplitSettings) {
+        GeneralSettings::setSplitView(false);
+    }
+
+    m_mainWindow->show();
+
+    if (app.isSessionRestored()) {
+        const QString className = KXmlGuiWindow::classNameOfToplevel(1);
+        if (className == QLatin1String("DolphinMainWindow")) {
+            m_mainWindow->restore(1);
+        } else {
+            kWarning() << "Unknown class " << className << " in session saved data!";
         }
-        app.exec(); // krazy:exclude=crashy
     }
 
-    return 0;
+    return app.exec(); // krazy:exclude=crash;
 }
index 3b72ed45c1c4aa483033610de9969481e791b82a..820fc0e68106e3091f2f1c431b6a0194fab2986a 100644 (file)
@@ -20,7 +20,6 @@
 
 #include "dolphinsettingsdialog.h"
 
-#include <dolphinapplication.h>
 #include <dolphinmainwindow.h>
 #include "dolphin_generalsettings.h"
 #include "general/generalsettingspage.h"