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 };