/*
- * Copyright 2015 Ashish Bansal<bansal.ashish096@gmail.com>
+ * SPDX-FileCopyrightText: 2015 Ashish Bansal <bansal.ashish096@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
- * 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
+ * SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef GLOBAL_H
#include <QUrl>
#include <QWidget>
-namespace Dolphin {
- QList<QUrl> validateUris(const QStringList& uriList);
+class KConfigGroup;
+class OrgKdeDolphinMainWindowInterface;
- /**
- * Returns the home url which is defined in General Settings
- */
- QUrl homeUrl();
+namespace Dolphin
+{
+QList<QUrl> validateUris(const QStringList &uriList);
- enum class OpenNewWindowFlag {
- None = 0,
- Select = 1<<1
- };
- Q_DECLARE_FLAGS(OpenNewWindowFlags, OpenNewWindowFlag)
+/**
+ * Returns the home url which is defined in General Settings
+ */
+QUrl homeUrl();
- /**
- * Opens a new Dolphin window
- */
- void openNewWindow(const QList<QUrl> &urls = {}, QWidget *window = nullptr, const OpenNewWindowFlags &flags = OpenNewWindowFlag::None);
+enum class OpenNewWindowFlag { None = 0, Select = 1 << 1 };
+Q_DECLARE_FLAGS(OpenNewWindowFlags, OpenNewWindowFlag)
- /**
- * Attaches URLs to an existing Dolphin instance if possible.
- * Returns true if URLs were successfully attached
- */
- bool attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFiles, bool splitView, const QString& preferredService = QString());
+/**
+ * Opens a new Dolphin window
+ */
+void openNewWindow(const QList<QUrl> &urls = {}, QWidget *window = nullptr, const OpenNewWindowFlags &flags = OpenNewWindowFlag::None);
+
+/**
+ * Attaches URLs to an existing Dolphin instance if possible.
+ * If @p preferredService is a valid dbus service, it will be tried first.
+ * @p preferredService needs to support the org.kde.dolphin.MainWindow dbus interface with the /dolphin/Dolphin_1 path.
+ * Returns true if the URLs were successfully attached.
+ */
+bool attachToExistingInstance(const QList<QUrl> &inputUrls, bool openFiles, bool splitView, const QString &preferredService, const QString &activationToken);
+
+/**
+ * Returns a QVector with all GUI-capable Dolphin instances
+ */
+QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> dolphinGuiInstances(const QString &preferredService);
+
+QPair<QString, Qt::SortOrder> sortOrderForUrl(QUrl &url);
+
+/**
+ * TODO: Use global KDE spacings instead of Dolphin-specific ones once we have them.
+ */
+constexpr int VERTICAL_SPACER_HEIGHT = 12;
+constexpr int LAYOUT_SPACING_SMALL = 4;
+}
+
+enum Animated { WithAnimation, WithoutAnimation };
+
+class GlobalConfig : public QObject
+{
+ Q_OBJECT
+
+public:
+ GlobalConfig() = delete;
/**
- * TODO: Move this somewhere global to all KDE apps, not just Dolphin
+ * @return a value from the global KDE config that should be
+ * multiplied with every animation duration once.
+ * 0.0 is returned if animations are globally turned off.
+ * 1.0 is the default value.
*/
- const int VERTICAL_SPACER_HEIGHT = 18;
- const int LAYOUT_SPACING_SMALL = 2;
-}
+ static double animationDurationFactor();
+
+private:
+ static void updateAnimationDurationFactor(const KConfigGroup &group, const QByteArrayList &names);
+
+private:
+ static double s_animationDurationFactor;
+};
#endif //GLOBAL_H