File indexing completed on 2024-12-01 03:41:12
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2000 Stephan Kulow <coolo@kde.org> 0004 SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org> 0005 SPDX-FileCopyrightText: 2006 Kevin Ottens <ervin@kde.org> 0006 SPDX-FileCopyrightText: 2013 Dawit Alemayehu <adawit@kde.org> 0007 SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org> 0008 0009 SPDX-License-Identifier: LGPL-2.0-or-later 0010 */ 0011 0012 #ifndef KIO_JOBUIDELEGATE_H 0013 #define KIO_JOBUIDELEGATE_H 0014 0015 #include <KDialogJobUiDelegate> 0016 #include <kio/askuseractioninterface.h> 0017 #include <kio/global.h> 0018 #include <kio/jobuidelegateextension.h> 0019 #include <kio/renamedialog.h> 0020 #include <kio/skipdialog.h> 0021 0022 class KJob; 0023 class KDirOperator; 0024 class KIOWidgetJobUiDelegateFactory; 0025 0026 namespace KIO 0027 { 0028 class JobUiDelegatePrivate; 0029 0030 class FileUndoManager; 0031 0032 class Job; 0033 0034 /** 0035 * @class KIO::JobUiDelegate jobuidelegate.h <KIO/JobUiDelegate> 0036 * 0037 * A UI delegate tuned to be used with KIO Jobs. 0038 */ 0039 class KIOWIDGETS_EXPORT JobUiDelegate : public KDialogJobUiDelegate, public JobUiDelegateExtension 0040 { 0041 Q_OBJECT 0042 // Allow the factory to construct. Everyone else needs to go through the factory or derive! 0043 friend class ::KIOWidgetJobUiDelegateFactory; 0044 // KIO internals don't need to derive either 0045 friend class KIO::FileUndoManager; 0046 0047 protected: 0048 friend class ::KDirOperator; 0049 0050 /** 0051 * Constructs a new KIO Job UI delegate. 0052 * @param flags allows to enable automatic error/warning handling 0053 * @param window the window associated with this delegate, see setWindow. 0054 * @param ifaces Interface instances such as OpenWithHandlerInterface to replace the default interfaces 0055 * @since 5.98 0056 */ 0057 explicit JobUiDelegate(KJobUiDelegate::Flags flags = AutoHandlingDisabled, QWidget *window = nullptr, const QList<QObject *> &ifaces = {}); 0058 0059 public: 0060 /** 0061 * Destroys the KIO Job UI delegate. 0062 */ 0063 ~JobUiDelegate() override; 0064 0065 public: 0066 /** 0067 * Associate this job with a window given by @p window. 0068 * @param window the window to associate to 0069 * @see window() 0070 */ 0071 void setWindow(QWidget *window) override; 0072 0073 /** 0074 * Unregister the given window from kded. 0075 * This is normally done automatically when the window is destroyed. 0076 * 0077 * This method is useful for instance when keeping a hidden window 0078 * around to make it faster to reuse later. 0079 * @since 5.2 0080 */ 0081 static void unregisterWindow(QWidget *window); 0082 0083 /** 0084 * Ask for confirmation before deleting/trashing @p urls. 0085 * 0086 * Note that this method is not called automatically by KIO jobs. It's the application's 0087 * responsibility to ask the user for confirmation before calling KIO::del() or KIO::trash(). 0088 * 0089 * @param urls the urls about to be deleted/trashed 0090 * @param deletionType the type of deletion (Delete for real deletion, Trash otherwise) 0091 * @param confirmation see ConfirmationType. Normally set to DefaultConfirmation. 0092 * Note: the window passed to setWindow is used as the parent for the message box. 0093 * @return true if confirmed 0094 */ 0095 bool askDeleteConfirmation(const QList<QUrl> &urls, DeletionType deletionType, ConfirmationType confirmationType) override; 0096 0097 /** 0098 * Creates a clipboard updater 0099 */ 0100 ClipboardUpdater *createClipboardUpdater(Job *job, ClipboardUpdaterMode mode) override; 0101 /** 0102 * Update URL in clipboard, if present 0103 */ 0104 void updateUrlInClipboard(const QUrl &src, const QUrl &dest) override; 0105 0106 private: 0107 std::unique_ptr<JobUiDelegatePrivate> const d; 0108 }; 0109 } 0110 0111 #endif