File indexing completed on 2024-05-12 04:46:02
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 "global.h" 0009 #include "dolphin_generalsettings.h" 0010 0011 #include <KPropertiesDialog> 0012 #include <KWindowSystem> 0013 0014 #include <QApplication> 0015 #include <QDBusConnection> 0016 #include <QDBusInterface> 0017 #include <QDBusConnectionInterface> 0018 0019 DBusInterface::DBusInterface() : 0020 QObject() 0021 { 0022 QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/FileManager1"), this, 0023 QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors); 0024 QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface(); 0025 if (sessionInterface) { 0026 sessionInterface->registerService(QStringLiteral("org.freedesktop.FileManager1"), QDBusConnectionInterface::QueueService); 0027 } 0028 } 0029 0030 void DBusInterface::ShowFolders(const QStringList& uriList, const QString& startUpId) 0031 { 0032 const QList<QUrl> urls = Dolphin::validateUris(uriList); 0033 if (urls.isEmpty()) { 0034 return; 0035 } 0036 KWindowSystem::setCurrentXdgActivationToken(startUpId); 0037 const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid()); 0038 if(!Dolphin::attachToExistingInstance(urls, false, GeneralSettings::splitView(), serviceName)) { 0039 Dolphin::openNewWindow(urls); 0040 } 0041 } 0042 0043 void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUpId) 0044 { 0045 const QList<QUrl> urls = Dolphin::validateUris(uriList); 0046 if (urls.isEmpty()) { 0047 return; 0048 } 0049 KWindowSystem::setCurrentXdgActivationToken(startUpId); 0050 const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid()); 0051 if(!Dolphin::attachToExistingInstance(urls, true, GeneralSettings::splitView(), serviceName)) { 0052 Dolphin::openNewWindow(urls, nullptr, Dolphin::OpenNewWindowFlag::Select); 0053 }; 0054 } 0055 0056 void DBusInterface::ShowItemProperties(const QStringList& uriList, const QString& startUpId) 0057 { 0058 const QList<QUrl> urls = Dolphin::validateUris(uriList); 0059 if (!urls.isEmpty()) { 0060 KWindowSystem::setCurrentXdgActivationToken(startUpId); 0061 KPropertiesDialog::showDialog(urls); 0062 } 0063 } 0064 0065 void DBusInterface::SortOrderForUrl(const QString &url, QString &role, QString &order) 0066 { 0067 QUrl qurl(url); 0068 auto sort = Dolphin::sortOrderForUrl(qurl); 0069 role = sort.first; 0070 if (sort.second == Qt::AscendingOrder) { 0071 order = QStringLiteral("ascending"); 0072 } else { 0073 order = QStringLiteral("descending"); 0074 } 0075 } 0076 0077 void DBusInterface::setAsDaemon() 0078 { 0079 m_isDaemon = true; 0080 } 0081 0082 bool DBusInterface::isDaemon() const 0083 { 0084 return m_isDaemon; 0085 }