File indexing completed on 2024-04-28 16:51:32
0001 /* 0002 SPDX-FileCopyrightText: 2017 Kai Uwe Broulik <kde@privat.broulik.de> 0003 SPDX-FileCopyrightText: 2017 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: MIT 0006 */ 0007 0008 #pragma once 0009 0010 #include <KJob> 0011 0012 #include <QElapsedTimer> 0013 #include <QUrl> 0014 0015 class DownloadJob : public KJob 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 DownloadJob(); 0021 0022 enum class State { 0023 None, 0024 InProgress, 0025 Interrupted, 0026 Complete, 0027 }; 0028 0029 void start() override; 0030 0031 void update(const QJsonObject &payload); 0032 0033 Q_SIGNALS: 0034 void killRequested(); 0035 void suspendRequested(); 0036 void resumeRequested(); 0037 0038 private Q_SLOTS: 0039 void doStart(); 0040 0041 protected: 0042 bool doKill() override; 0043 bool doSuspend() override; 0044 bool doResume() override; 0045 0046 private: 0047 void updateDescription(); 0048 void addToRecentDocuments(); 0049 void saveOriginUrl(); 0050 0051 QUrl originUrl() const; 0052 0053 QUrl m_url; 0054 QUrl m_finalUrl; 0055 QUrl m_referrer; 0056 0057 QUrl m_destination; 0058 0059 QString m_fileName; 0060 0061 QString m_mimeType; 0062 0063 qulonglong m_bytesReceived = 0; 0064 QElapsedTimer m_fallbackSpeedTimer; 0065 0066 // In doubt, assume incognito 0067 bool m_incognito = true; 0068 };