1 /*
2     SPDX-FileCopyrightText: 2008-2010 Volker Lanz <vl@fidra.de>
3     SPDX-FileCopyrightText: 2016-2018 Andrius Štikonas <andrius@stikonas.eu>
4     SPDX-FileCopyrightText: 2019 Yuri Chornoivan <yurchor@ukr.net>
5 
6     SPDX-License-Identifier: GPL-3.0-or-later
7 */
8 
9 #ifndef KPMCORE_COPYSOURCEFILE_H
10 #define KPMCORE_COPYSOURCEFILE_H
11 
12 #include "core/copysource.h"
13 
14 #include <QtGlobal>
15 #include <QFile>
16 
17 class QString;
18 class CopyTarget;
19 
20 /** A file to copy from.
21 
22     Represents a file to copy from. Used to restore a FileSystem from a backup file.
23 
24     @author Volker Lanz <vl@fidra.de>
25 */
26 class CopySourceFile : public CopySource
27 {
28 public:
29     explicit CopySourceFile(const QString& filename);
30 
31 public:
32     bool open() override;
33     qint64 length() const override;
34 
overlaps(const CopyTarget &)35     bool overlaps(const CopyTarget&) const override {
36         return false;    /**< @return false for file */
37     }
firstByte()38     qint64 firstByte() const override {
39         return 0;    /**< @return 0 for file */
40     }
lastByte()41     qint64 lastByte() const override {
42         return length();    /**< @return equal to length for file. @see length() */
43     }
path()44     QString path() const override {
45         return m_File.fileName();
46     }
47 
48 protected:
file()49     QFile& file() {
50         return m_File;
51     }
file()52     const QFile& file() const {
53         return m_File;
54     }
55 
56 protected:
57     QFile m_File;
58 };
59 
60 #endif
61