File indexing completed on 2024-04-21 05:45:39

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Ashish Bansal <bansal.ashish096@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "dbusinterface.h"
0008 #include "dolphin_generalsettings.h"
0009 #include "global.h"
0010 
0011 #include <KPropertiesDialog>
0012 #include <KWindowSystem>
0013 
0014 #include <QDBusConnection>
0015 #include <QDBusConnectionInterface>
0016 
0017 DBusInterface::DBusInterface()
0018     : QObject()
0019 {
0020     QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/FileManager1"),
0021                                                  this,
0022                                                  QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors);
0023     QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
0024     if (sessionInterface) {
0025         sessionInterface->registerService(QStringLiteral("org.freedesktop.FileManager1"), QDBusConnectionInterface::QueueService);
0026     }
0027 }
0028 
0029 void DBusInterface::ShowFolders(const QStringList &uriList, const QString &startUpId)
0030 {
0031     const QList<QUrl> urls = Dolphin::validateUris(uriList);
0032     if (urls.isEmpty()) {
0033         return;
0034     }
0035     const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
0036     if (!Dolphin::attachToExistingInstance(urls, false, GeneralSettings::splitView(), serviceName, startUpId)) {
0037         Dolphin::openNewWindow(urls);
0038     }
0039 }
0040 
0041 void DBusInterface::ShowItems(const QStringList &uriList, const QString &startUpId)
0042 {
0043     const QList<QUrl> urls = Dolphin::validateUris(uriList);
0044     if (urls.isEmpty()) {
0045         return;
0046     }
0047     const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
0048     if (!Dolphin::attachToExistingInstance(urls, true, GeneralSettings::splitView(), serviceName, startUpId)) {
0049         Dolphin::openNewWindow(urls, nullptr, Dolphin::OpenNewWindowFlag::Select);
0050     };
0051 }
0052 
0053 void DBusInterface::ShowItemProperties(const QStringList &uriList, const QString &startUpId)
0054 {
0055     const QList<QUrl> urls = Dolphin::validateUris(uriList);
0056     if (!urls.isEmpty()) {
0057         KWindowSystem::setCurrentXdgActivationToken(startUpId);
0058         KPropertiesDialog::showDialog(urls);
0059     }
0060 }
0061 
0062 void DBusInterface::SortOrderForUrl(const QString &url, QString &role, QString &order)
0063 {
0064     QUrl qurl(url);
0065     auto sort = Dolphin::sortOrderForUrl(qurl);
0066     role = sort.first;
0067     if (sort.second == Qt::AscendingOrder) {
0068         order = QStringLiteral("ascending");
0069     } else {
0070         order = QStringLiteral("descending");
0071     }
0072 }
0073 
0074 void DBusInterface::setAsDaemon()
0075 {
0076     m_isDaemon = true;
0077 }
0078 
0079 bool DBusInterface::isDaemon() const
0080 {
0081     return m_isDaemon;
0082 }
0083 
0084 #include "moc_dbusinterface.cpp"