]> cloud.milkyroute.net Git - dolphin.git/blob - src/dbusinterface.cpp
Merge branch 'release/21.08'
[dolphin.git] / src / dbusinterface.cpp
1 /*
2 * SPDX-FileCopyrightText: 2015 Ashish Bansal <bansal.ashish096@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "dbusinterface.h"
8 #include "global.h"
9 #include "dolphin_generalsettings.h"
10
11 #include <KPropertiesDialog>
12 #include <KWindowSystem>
13
14 #include <QApplication>
15 #include <QDBusConnection>
16 #include <QDBusInterface>
17 #include <QDBusConnectionInterface>
18
19 DBusInterface::DBusInterface() :
20 QObject()
21 {
22 QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/FileManager1"), this,
23 QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors);
24 QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
25 if (sessionInterface) {
26 sessionInterface->registerService(QStringLiteral("org.freedesktop.FileManager1"), QDBusConnectionInterface::QueueService);
27 }
28 }
29
30 void DBusInterface::ShowFolders(const QStringList& uriList, const QString& startUpId)
31 {
32 const QList<QUrl> urls = Dolphin::validateUris(uriList);
33 if (urls.isEmpty()) {
34 return;
35 }
36 KWindowSystem::setCurrentXdgActivationToken(startUpId);
37 const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
38 if(!Dolphin::attachToExistingInstance(urls, false, GeneralSettings::splitView(), serviceName)) {
39 Dolphin::openNewWindow(urls);
40 }
41 }
42
43 void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUpId)
44 {
45 const QList<QUrl> urls = Dolphin::validateUris(uriList);
46 if (urls.isEmpty()) {
47 return;
48 }
49 KWindowSystem::setCurrentXdgActivationToken(startUpId);
50 const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
51 if(!Dolphin::attachToExistingInstance(urls, true, GeneralSettings::splitView(), serviceName)) {
52 Dolphin::openNewWindow(urls, nullptr, Dolphin::OpenNewWindowFlag::Select);
53 };
54 }
55
56 void DBusInterface::ShowItemProperties(const QStringList& uriList, const QString& startUpId)
57 {
58 const QList<QUrl> urls = Dolphin::validateUris(uriList);
59 if (!urls.isEmpty()) {
60 KWindowSystem::setCurrentXdgActivationToken(startUpId);
61 KPropertiesDialog::showDialog(urls);
62 }
63 }
64
65 void DBusInterface::SortOrderForUrl(const QString &url, QString &role, QString &order)
66 {
67 QUrl qurl(url);
68 auto sort = Dolphin::sortOrderForUrl(qurl);
69 role = sort.first;
70 if (sort.second == Qt::AscendingOrder) {
71 order = QStringLiteral("ascending");
72 } else {
73 order = QStringLiteral("descending");
74 }
75 }
76
77 void DBusInterface::setAsDaemon()
78 {
79 m_isDaemon = true;
80 }
81
82 bool DBusInterface::isDaemon() const
83 {
84 return m_isDaemon;
85 }