File indexing completed on 2024-11-03 03:41:33

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2014 David Faure <faure@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef PASTEJOB_P_H
0009 #define PASTEJOB_P_H
0010 
0011 #include "pastejob.h"
0012 #include <job_p.h>
0013 
0014 #include <QMimeData>
0015 
0016 namespace KIO
0017 {
0018 class DropJobPrivate;
0019 
0020 class PasteJobPrivate : public KIO::JobPrivate
0021 {
0022 public:
0023     // Used by KIO::PasteJob (clipboard=true) and KIO::DropJob (clipboard=false)
0024     PasteJobPrivate(const QMimeData *mimeData, const QUrl &destDir, JobFlags flags, bool clipboard)
0025         : JobPrivate()
0026         , m_mimeData(mimeData)
0027         , m_destDir(destDir)
0028         , m_flags(flags)
0029         , m_clipboard(clipboard)
0030     {
0031     }
0032 
0033     friend class KIO::DropJobPrivate;
0034 
0035     QPointer<const QMimeData> m_mimeData;
0036     QUrl m_destDir;
0037     JobFlags m_flags;
0038     bool m_clipboard;
0039 
0040     Q_DECLARE_PUBLIC(PasteJob)
0041 
0042     void slotStart();
0043     void slotCopyingDone(KIO::Job *, const QUrl &, const QUrl &to)
0044     {
0045         Q_EMIT q_func()->itemCreated(to);
0046     }
0047     void slotCopyingLinkDone(KIO::Job *, const QUrl &, const QString &, const QUrl &to)
0048     {
0049         Q_EMIT q_func()->itemCreated(to);
0050     }
0051 
0052     static inline PasteJob *newJob(const QMimeData *mimeData, const QUrl &destDir, JobFlags flags, bool clipboard)
0053     {
0054         PasteJob *job = new PasteJob(*new PasteJobPrivate(mimeData, destDir, flags, clipboard));
0055         job->setUiDelegate(KIO::createDefaultJobUiDelegate());
0056         // Note: never KIO::getJobTracker()->registerJob here
0057         // The progress information comes from the underlying job (so we don't have to forward it here).
0058         return job;
0059     }
0060 };
0061 
0062 }
0063 
0064 #endif