File indexing completed on 2024-05-05 05:28:55
0001 /* 0002 * This file is part of the KDE project 0003 * 0004 * SPDX-FileCopyrightText: 2010 Alejandro Fiestas Olivares <alex@ufocoders.com> 0005 * SPDX-FileCopyrightText: 2010 UFO Coders <info@ufocoders.com> 0006 * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com> 0007 * 0008 * SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #pragma once 0012 0013 #include "kdedobexftp.h" 0014 0015 #include <QObject> 0016 0017 #include <KIO/WorkerBase> 0018 0019 #include <BluezQt/ObexFileTransfer> 0020 0021 class KioFtp : public QObject, public KIO::WorkerBase 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 KioFtp(const QByteArray &pool, const QByteArray &app); 0027 0028 KIO::WorkerResult copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags) override; 0029 KIO::WorkerResult listDir(const QUrl &url) override; 0030 void setHost(const QString &host, quint16 port, const QString &user, const QString &pass) override; 0031 KIO::WorkerResult stat(const QUrl &url) override; 0032 KIO::WorkerResult del(const QUrl &url, bool isfile) override; 0033 KIO::WorkerResult mkdir(const QUrl &url, int permissions) override; 0034 KIO::WorkerResult rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags) override; 0035 KIO::WorkerResult get(const QUrl &url) override; 0036 0037 bool cancelTransfer(const QString &transfer); 0038 0039 private: 0040 [[nodiscard]] KIO::WorkerResult copyHelper(const QUrl &src, const QUrl &dest); 0041 [[nodiscard]] KIO::WorkerResult copyWithinObexftp(const QUrl &src, const QUrl &dest); 0042 [[nodiscard]] KIO::WorkerResult copyFromObexftp(const QUrl &src, const QUrl &dest); 0043 [[nodiscard]] KIO::WorkerResult copyToObexftp(const QUrl &src, const QUrl &dest); 0044 [[nodiscard]] KIO::WorkerResult statHelper(const QUrl &url); 0045 0046 struct ListResult { 0047 KIO::WorkerResult result; 0048 QList<KIO::UDSEntry> entries; 0049 }; 0050 [[nodiscard]] ListResult listFolder(const QUrl &url); 0051 [[nodiscard]] KIO::WorkerResult changeFolder(const QString &folder); 0052 [[nodiscard]] KIO::WorkerResult createFolder(const QString &folder); 0053 [[nodiscard]] KIO::WorkerResult deleteFile(const QString &file); 0054 0055 void updateRootEntryIcon(KIO::UDSEntry &entry, const QString &memoryType); 0056 bool createSession(const QString &target); 0057 void connectToHost(); 0058 [[nodiscard]] KIO::WorkerResult testConnection(); 0059 0060 private: 0061 QMap<QString, KIO::UDSEntry> m_statMap; 0062 QString m_host; 0063 QString m_sessionPath; 0064 org::kde::BlueDevil::ObexFtp *m_kded; 0065 BluezQt::ObexFileTransfer *m_transfer; 0066 };