┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/global.h
blob: ee9a7ec2716a6bf834f099200bffbe82fa9d522f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
 * SPDX-FileCopyrightText: 2015 Ashish Bansal <[email protected]>
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#ifndef GLOBAL_H
#define GLOBAL_H

#include <QList>
#include <QUrl>
#include <QWidget>

class KConfigGroup;
class OrgKdeDolphinMainWindowInterface;

namespace Dolphin {
    QList<QUrl> validateUris(const QStringList& uriList);

    /**
     * Returns the home url which is defined in General Settings
     */
    QUrl homeUrl();

    enum class OpenNewWindowFlag {
        None = 0,
        Select = 1<<1
    };
    Q_DECLARE_FLAGS(OpenNewWindowFlags, OpenNewWindowFlag)

    /**
     * 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 = QString());

    /**
     * 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: Move this somewhere global to all KDE apps, not just Dolphin
     */
    const int VERTICAL_SPACER_HEIGHT = 12;
    const int LAYOUT_SPACING_SMALL = 2;
}

enum Animated {
    WithAnimation,
    WithoutAnimation
};

class GlobalConfig : public QObject
{
    Q_OBJECT

public:
    GlobalConfig() = delete;

    /**
     * @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.
     */
    static double animationDurationFactor();

private:
    static void updateAnimationDurationFactor(const KConfigGroup &group, const QByteArrayList &names);

private:
    static double s_animationDurationFactor;
};

#endif //GLOBAL_H