1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2022 Ahmad Samir <a.samirh78@gmail.com> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
6 | */ |
7 | |
8 | #ifndef DELETEORTRASHJOB_H |
9 | #define DELETEORTRASHJOB_H |
10 | |
11 | #include <KIO/AskUserActionInterface> |
12 | #include <kiowidgets_export.h> |
13 | |
14 | #include <KCompositeJob> |
15 | |
16 | #include <memory> |
17 | |
18 | namespace KIO |
19 | { |
20 | |
21 | class DeleteOrTrashJobPrivate; |
22 | |
23 | /** |
24 | * @class DeleteOrTrashJob deleteortrashjob.h <KIO/DeleteOrTrashJob> |
25 | * |
26 | * This job asks the user for confirmation to delete or move to Trash |
27 | * a list of URLs; or if the job is constructed with |
28 | * AskUserActionInterface::EmptyTrash, to empty the Trash. |
29 | * |
30 | * A KIO::WidgetAskUserActionHandler will be used by default, unless a |
31 | * KJobUiDelegate that implements KIO::AskUserActionInterface is set with |
32 | * setUiDelegate(). |
33 | * |
34 | * In the case of moving items to Trash, this job records the |
35 | * operation using KIO::FileUndoManager. |
36 | * |
37 | * To start the job after constructing it, you must call start(). |
38 | * |
39 | * @since 5.100 |
40 | */ |
41 | class KIOWIDGETS_EXPORT DeleteOrTrashJob : public KCompositeJob |
42 | { |
43 | Q_OBJECT |
44 | public: |
45 | /** |
46 | * Creates a DeleteOrTrashJob. |
47 | * @param urls the list of urls to delete, move to Trash, or an empty list |
48 | * in the case of AskUserActionInterface::EmptyTrash (in the latter case, |
49 | * the list of urls is ignored) |
50 | * @param deletionType one of AskUserActionInterface::DeletionType |
51 | * @param confirm one of AskUserActionInterface::ConfirmationType |
52 | * @param parent parent object, e.g. a QWidget for widget-based applications |
53 | */ |
54 | explicit DeleteOrTrashJob(const QList<QUrl> &urls, |
55 | AskUserActionInterface::DeletionType deletionType, |
56 | AskUserActionInterface::ConfirmationType confirm, |
57 | QObject *parent); |
58 | |
59 | /** |
60 | * Destructor |
61 | * |
62 | * Note that jobs auto-delete themselves after emitting result |
63 | */ |
64 | ~DeleteOrTrashJob() override; |
65 | |
66 | /** |
67 | * You must call this to actually start the job. |
68 | */ |
69 | void start() override; |
70 | |
71 | private: |
72 | void slotResult(KJob *job) override; |
73 | |
74 | friend DeleteOrTrashJobPrivate; |
75 | std::unique_ptr<DeleteOrTrashJobPrivate> d; |
76 | }; |
77 | |
78 | } // namespace KIO |
79 | |
80 | #endif // DELETEORTRASHJOB_H |
81 | |