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