File indexing completed on 2024-05-05 17:57:24
0001 /* 0002 SPDX-FileCopyrightText: 2003 Csaba Karai <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef SPLITTER_H 0009 #define SPLITTER_H 0010 0011 // QtCore 0012 #include <QString> 0013 #include <QUrl> 0014 // QtWidgets 0015 #include <QProgressDialog> 0016 0017 #include <KIO/Job> 0018 0019 #include "crc32.h" 0020 0021 class Splitter : public QProgressDialog 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 Splitter(QWidget *parent, QUrl fileNameIn, QUrl destinationDirIn, bool overWriteIn); 0027 ~Splitter() override; 0028 0029 void split(KIO::filesize_t splitSizeIn); 0030 0031 private slots: 0032 void splitDataReceived(KIO::Job *, const QByteArray &); 0033 void splitDataSend(KIO::Job *, QByteArray &); 0034 void splitSendFinished(KJob *); 0035 void splitReceiveFinished(KJob *); 0036 void splitReceivePercent(KJob *, unsigned long); 0037 void splitFileSend(KIO::Job *, QByteArray &); 0038 void splitFileFinished(KJob *); 0039 void statOutputFileResult(KJob *job); 0040 0041 private: 0042 void splitAbortJobs(); 0043 void nextOutputFile(); 0044 void openOutputFile(); 0045 0046 // parameters 0047 QUrl fileName; 0048 QUrl destinationDir; 0049 KIO::filesize_t splitSize; 0050 int permissions; 0051 bool overwrite; 0052 0053 // current split file stuff 0054 int fileNumber; 0055 QUrl writeURL; 0056 // how much can still be written to the current output file 0057 KIO::filesize_t outputFileRemaining; 0058 0059 QByteArray transferArray; 0060 KIO::filesize_t receivedSize; 0061 QString splitInfoFileContent; 0062 CRC32 *crcContext; 0063 KIO::Job *statJob; 0064 KIO::TransferJob *splitReadJob; 0065 KIO::TransferJob *splitWriteJob; 0066 }; 0067 0068 #endif /* __SPLITTER_H__ */