File indexing completed on 2025-02-02 03:49:25
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2004 David Faure <faure@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KIO_TRASH_H 0009 #define KIO_TRASH_H 0010 0011 #include "trashimpl.h" 0012 #include <kio/workerbase.h> 0013 0014 namespace KIO 0015 { 0016 class Job; 0017 } 0018 0019 typedef TrashImpl::TrashedFileInfo TrashedFileInfo; 0020 typedef TrashImpl::TrashedFileInfoList TrashedFileInfoList; 0021 0022 class TrashProtocol : public QObject, public KIO::WorkerBase 0023 { 0024 Q_OBJECT 0025 public: 0026 TrashProtocol(const QByteArray &protocol, const QByteArray &pool, const QByteArray &app); 0027 ~TrashProtocol() override; 0028 KIO::WorkerResult stat(const QUrl &url) override; 0029 KIO::WorkerResult listDir(const QUrl &url) override; 0030 KIO::WorkerResult get(const QUrl &url) override; 0031 KIO::WorkerResult put(const QUrl &url, int, KIO::JobFlags flags) override; 0032 KIO::WorkerResult rename(const QUrl &src, const QUrl &dest, KIO::JobFlags) override; 0033 KIO::WorkerResult copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags) override; 0034 // TODO (maybe) chmod( const QUrl& url, int permissions ); 0035 KIO::WorkerResult del(const QUrl &url, bool isfile) override; 0036 /** 0037 * Special actions: (first int in the byte array) 0038 * 1 : empty trash 0039 * 2 : migrate old (pre-kde-3.4) trash contents 0040 * 3 : restore a file to its original location. Args: QUrl trashURL. 0041 */ 0042 KIO::WorkerResult special(const QByteArray &data) override; 0043 KIO::WorkerResult fileSystemFreeSpace(const QUrl &url) override; 0044 0045 Q_SIGNALS: 0046 void leaveModality(int errid, const QString &text); 0047 0048 private Q_SLOTS: 0049 void slotData(KIO::Job *, const QByteArray &); 0050 void slotMimetype(KIO::Job *, const QString &); 0051 void jobFinished(KJob *job); 0052 0053 private: 0054 KIO::WorkerResult initImpl(); 0055 typedef enum { Copy, Move } CopyOrMove; 0056 KIO::WorkerResult copyOrMoveFromTrash(const QUrl &src, const QUrl &dest, bool overwrite, CopyOrMove action); 0057 KIO::WorkerResult copyOrMoveToTrash(const QUrl &src, const QUrl &dest, CopyOrMove action); 0058 void createTopLevelDirEntry(KIO::UDSEntry &entry); 0059 bool createUDSEntry(const QString &physicalPath, 0060 const QString &displayFileName, 0061 const QString &internalFileName, 0062 KIO::UDSEntry &entry, 0063 const TrashedFileInfo &info); 0064 KIO::WorkerResult listRoot(); 0065 KIO::WorkerResult restore(const QUrl &trashURL); 0066 KIO::WorkerResult enterLoop(); 0067 KIO::StatDetails getStatDetails(); 0068 0069 TrashImpl impl; 0070 QString m_userName; 0071 QString m_groupName; 0072 uid_t m_userId; 0073 gid_t m_groupId; 0074 }; 0075 0076 #endif