1 /*
2     This file is part of the KDE libraries
3     SPDX-FileCopyrightText: 2020 David Faure <faure@kde.org>
4     SPDX-FileCopyrightText: 2020 Ahmad Samir <a.samirh78@gmail.com>
5 
6     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8 
9 #ifndef MOCKDELEGATEEXTENSIONS_H
10 #define MOCKDELEGATEEXTENSIONS_H
11 
12 #include <QUrl>
13 #include <askuseractioninterface.h>
14 #include <untrustedprogramhandlerinterface.h>
15 
16 class MockUntrustedProgramHandler : public KIO::UntrustedProgramHandlerInterface
17 {
18 public:
MockUntrustedProgramHandler(QObject * parent)19     explicit MockUntrustedProgramHandler(QObject *parent)
20         : KIO::UntrustedProgramHandlerInterface(parent)
21     {
22     }
showUntrustedProgramWarning(KJob * job,const QString & programName)23     void showUntrustedProgramWarning(KJob *job, const QString &programName) override
24     {
25         Q_UNUSED(job)
26         m_calls << programName;
27         Q_EMIT result(m_retVal);
28     }
29 
setRetVal(bool b)30     void setRetVal(bool b)
31     {
32         m_retVal = b;
33     }
34 
35     QStringList m_calls;
36 
37 private:
38     bool m_retVal = false;
39 };
40 
41 class MockAskUserInterface : public KIO::AskUserActionInterface
42 {
43 public:
44     explicit MockAskUserInterface(QObject *parent = nullptr)
AskUserActionInterface(parent)45         : KIO::AskUserActionInterface(parent)
46     {
47     }
48 
49     void askUserRename(KJob *job,
50                        const QString &caption,
51                        const QUrl &src,
52                        const QUrl &dest,
53                        KIO::RenameDialog_Options options,
54                        KIO::filesize_t sizeSrc = KIO::filesize_t(-1),
55                        KIO::filesize_t sizeDest = KIO::filesize_t(-1),
56                        const QDateTime &ctimeSrc = QDateTime(),
57                        const QDateTime &ctimeDest = QDateTime(),
58                        const QDateTime &mtimeSrc = QDateTime(),
59                        const QDateTime &mtimeDest = QDateTime()) override
60     {
61         Q_UNUSED(caption)
62         Q_UNUSED(src)
63         Q_UNUSED(dest)
64         Q_UNUSED(options)
65         Q_UNUSED(sizeSrc)
66         Q_UNUSED(sizeDest)
67         Q_UNUSED(ctimeSrc)
68         Q_UNUSED(ctimeDest)
69         Q_UNUSED(mtimeSrc)
70         Q_UNUSED(mtimeDest)
71 
72         ++m_askUserRenameCalled;
73         Q_EMIT askUserRenameResult(m_renameResult, m_newDestUrl, job);
74     }
75 
askUserSkip(KJob * job,KIO::SkipDialog_Options options,const QString & error_text)76     void askUserSkip(KJob *job, KIO::SkipDialog_Options options, const QString &error_text) override
77     {
78         Q_UNUSED(options)
79         Q_UNUSED(error_text)
80 
81         ++m_askUserSkipCalled;
82         Q_EMIT askUserSkipResult(m_skipResult, job);
83     }
84 
85     void askUserDelete(const QList<QUrl> &urls, DeletionType deletionType, ConfirmationType confirmationType, QWidget *parent = nullptr) override
86     {
87         Q_UNUSED(confirmationType)
88 
89         ++m_askUserDeleteCalled;
90         Q_EMIT askUserDeleteResult(m_deleteResult, urls, deletionType, parent);
91     }
92 
93     void requestUserMessageBox(MessageDialogType type,
94                                const QString &text,
95                                const QString &caption,
96                                const QString &buttonYes,
97                                const QString &buttonNo,
98                                const QString &iconYes = QString(),
99                                const QString &iconNo = QString(),
100                                const QString &dontAskAgainName = QString(),
101                                const QString &details = QString(),
102                                const KIO::MetaData &metaData = KIO::MetaData(),
103                                QWidget *parent = nullptr) override
104     {
105         Q_UNUSED(type)
106         Q_UNUSED(text)
107         Q_UNUSED(caption)
108         Q_UNUSED(buttonYes)
109         Q_UNUSED(buttonNo)
110         Q_UNUSED(iconYes)
111         Q_UNUSED(iconNo)
112         Q_UNUSED(dontAskAgainName)
113         Q_UNUSED(details)
114         Q_UNUSED(metaData)
115         Q_UNUSED(parent)
116     }
117 
clear()118     void clear()
119     {
120         m_askUserRenameCalled = 0;
121         m_askUserSkipCalled = 0;
122         m_askUserDeleteCalled = 0;
123         m_messageBoxCalled = 0;
124     }
125 
126     // yeah, public, for get and reset.
127     int m_askUserRenameCalled = 0;
128     int m_askUserSkipCalled = 0;
129     int m_askUserDeleteCalled = 0;
130     int m_messageBoxCalled = 0;
131 
132     KIO::RenameDialog_Result m_renameResult = KIO::Result_Skip;
133     KIO::SkipDialog_Result m_skipResult = KIO::Result_Skip;
134     bool m_deleteResult = false;
135     int m_messageBoxResult = 0;
136     QUrl m_newDestUrl;
137 };
138 
139 #endif // MOCKDELEGATEEXTENSIONS_H
140