File indexing completed on 2024-05-05 17:57:23

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 COMBINER_H
0009 #define COMBINER_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 Combiner : public QProgressDialog
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     Combiner(QWidget *parent, QUrl baseURLIn, QUrl destinationURLIn, bool unixNamingIn = false);
0027     ~Combiner() override;
0028 
0029     void combine();
0030 
0031 private slots:
0032     void statDest();
0033     void statDestResult(KJob *job);
0034     void combineSplitFileDataReceived(KIO::Job *, const QByteArray &byteArray);
0035     void combineSplitFileFinished(KJob *job);
0036     void combineDataReceived(KIO::Job *, const QByteArray &);
0037     void combineReceiveFinished(KJob *);
0038     void combineDataSend(KIO::Job *, QByteArray &);
0039     void combineSendFinished(KJob *);
0040     void combineWritePercent(KJob *, unsigned long);
0041 
0042 private:
0043     void openNextFile();
0044     void combineAbortJobs();
0045 
0046     QUrl splURL;
0047     QUrl readURL;
0048     QUrl writeURL;
0049 
0050     QUrl baseURL;
0051     QUrl destinationURL;
0052     CRC32 *crcContext;
0053     QByteArray transferArray;
0054 
0055     QString splitFile;
0056     QString error;
0057 
0058     bool hasValidSplitFile;
0059     QString expectedFileName;
0060     KIO::filesize_t expectedSize;
0061     QString expectedCrcSum;
0062 
0063     int fileCounter;
0064     bool firstFileIs000;
0065     int permissions;
0066     KIO::filesize_t receivedSize;
0067 
0068     KIO::Job *statJob;
0069     KIO::TransferJob *combineReadJob;
0070     KIO::TransferJob *combineWriteJob;
0071 
0072     bool unixNaming;
0073 };
0074 
0075 #endif /* __COMBINER_H__ */