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"