File indexing completed on 2024-04-21 04:56:54
0001 /** 0002 * SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QPointer> 0010 0011 #include <core/compositefiletransferjob.h> 0012 #include <core/kdeconnectplugin.h> 0013 0014 #define PACKET_TYPE_SHARE_REQUEST QStringLiteral("kdeconnect.share.request") 0015 #define PACKET_TYPE_SHARE_REQUEST_UPDATE QStringLiteral("kdeconnect.share.request.update") 0016 0017 class SharePlugin : public KdeConnectPlugin 0018 { 0019 Q_OBJECT 0020 Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.share") 0021 0022 public: 0023 explicit SharePlugin(QObject *parent, const QVariantList &args); 0024 0025 /// Helper method, QDBus won't recognize QUrl 0026 Q_SCRIPTABLE void shareUrl(const QString &url) 0027 { 0028 shareUrl(QUrl(url), false); 0029 } 0030 Q_SCRIPTABLE void shareUrls(const QStringList &urls); 0031 Q_SCRIPTABLE void shareText(const QString &text); 0032 Q_SCRIPTABLE void openFile(const QString &file) 0033 { 0034 shareUrl(QUrl(file), true); 0035 } 0036 0037 void receivePacket(const NetworkPacket &np) override; 0038 QString dbusPath() const override; 0039 0040 private Q_SLOTS: 0041 void openDestinationFolder(); 0042 0043 Q_SIGNALS: 0044 Q_SCRIPTABLE void shareReceived(const QString &url); 0045 0046 private: 0047 void finished(KJob *job, const qint64 dateCreated, const qint64 dateModified, const bool open); 0048 void shareUrl(const QUrl &url, bool open); 0049 QUrl destinationDir() const; 0050 QUrl getFileDestination(const QString filename) const; 0051 void setDateModified(const QUrl &destination, const qint64 timestamp); 0052 void setDateCreated(const QUrl &destination, const qint64 timestamp); 0053 0054 QPointer<CompositeFileTransferJob> m_compositeJob; 0055 };