1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2000 Stephan Kulow <coolo@kde.org> |
4 | SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org> |
5 | SPDX-FileCopyrightText: 2006 Kevin Ottens <ervin@kde.org> |
6 | SPDX-FileCopyrightText: 2013 Dawit Alemayehu <adawit@kde.org> |
7 | SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org> |
8 | |
9 | SPDX-License-Identifier: LGPL-2.0-or-later |
10 | */ |
11 | |
12 | #ifndef KIO_JOBUIDELEGATE_H |
13 | #define KIO_JOBUIDELEGATE_H |
14 | |
15 | #include <KDialogJobUiDelegate> |
16 | #include <kio/askuseractioninterface.h> |
17 | #include <kio/global.h> |
18 | #include <kio/jobuidelegateextension.h> |
19 | #include <kio/renamedialog.h> |
20 | #include <kio/skipdialog.h> |
21 | |
22 | class KJob; |
23 | class KDirOperator; |
24 | class KIOWidgetJobUiDelegateFactory; |
25 | |
26 | namespace KIO |
27 | { |
28 | class JobUiDelegatePrivate; |
29 | |
30 | class FileUndoManager; |
31 | |
32 | class Job; |
33 | |
34 | /** |
35 | * @class KIO::JobUiDelegate jobuidelegate.h <KIO/JobUiDelegate> |
36 | * |
37 | * A UI delegate tuned to be used with KIO Jobs. |
38 | */ |
39 | class KIOWIDGETS_EXPORT JobUiDelegate : public KDialogJobUiDelegate, public JobUiDelegateExtension |
40 | { |
41 | Q_OBJECT |
42 | // Allow the factory to construct. Everyone else needs to go through the factory or derive! |
43 | friend class ::KIOWidgetJobUiDelegateFactory; |
44 | // KIO internals don't need to derive either |
45 | friend class KIO::FileUndoManager; |
46 | |
47 | protected: |
48 | friend class ::KDirOperator; |
49 | |
50 | /** |
51 | * Constructs a new KIO Job UI delegate. |
52 | * @param flags allows to enable automatic error/warning handling |
53 | * @param window the window associated with this delegate, see setWindow. |
54 | * @param ifaces Interface instances such as OpenWithHandlerInterface to replace the default interfaces |
55 | * @since 5.98 |
56 | */ |
57 | explicit JobUiDelegate(KJobUiDelegate::Flags flags = AutoHandlingDisabled, QWidget *window = nullptr, const QList<QObject *> &ifaces = {}); |
58 | |
59 | public: |
60 | /** |
61 | * Destroys the KIO Job UI delegate. |
62 | */ |
63 | ~JobUiDelegate() override; |
64 | |
65 | public: |
66 | /** |
67 | * Associate this job with a window given by @p window. |
68 | * @param window the window to associate to |
69 | * @see window() |
70 | */ |
71 | void setWindow(QWidget *window) override; |
72 | |
73 | /** |
74 | * Unregister the given window from kded. |
75 | * This is normally done automatically when the window is destroyed. |
76 | * |
77 | * This method is useful for instance when keeping a hidden window |
78 | * around to make it faster to reuse later. |
79 | * @since 5.2 |
80 | */ |
81 | static void unregisterWindow(QWidget *window); |
82 | |
83 | /** |
84 | * Ask for confirmation before deleting/trashing @p urls. |
85 | * |
86 | * Note that this method is not called automatically by KIO jobs. It's the application's |
87 | * responsibility to ask the user for confirmation before calling KIO::del() or KIO::trash(). |
88 | * |
89 | * @param urls the urls about to be deleted/trashed |
90 | * @param deletionType the type of deletion (Delete for real deletion, Trash otherwise) |
91 | * @param confirmation see ConfirmationType. Normally set to DefaultConfirmation. |
92 | * Note: the window passed to setWindow is used as the parent for the message box. |
93 | * @return true if confirmed |
94 | */ |
95 | bool askDeleteConfirmation(const QList<QUrl> &urls, DeletionType deletionType, ConfirmationType confirmationType) override; |
96 | |
97 | /** |
98 | * Creates a clipboard updater |
99 | */ |
100 | ClipboardUpdater *createClipboardUpdater(Job *job, ClipboardUpdaterMode mode) override; |
101 | /** |
102 | * Update URL in clipboard, if present |
103 | */ |
104 | void updateUrlInClipboard(const QUrl &src, const QUrl &dest) override; |
105 | |
106 | private: |
107 | std::unique_ptr<JobUiDelegatePrivate> const d; |
108 | }; |
109 | } |
110 | |
111 | #endif |
112 | |