1 /*
2    SPDX-FileCopyrightText: 2012-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "archivestorage.h"
8 #include <KLocalizedString>
9 #include <KZip>
10 
ArchiveStorage(const QString & filename,QObject * parent)11 ArchiveStorage::ArchiveStorage(const QString &filename, QObject *parent)
12     : QObject(parent)
13     , mArchive(new KZip(filename))
14 {
15 }
16 
~ArchiveStorage()17 ArchiveStorage::~ArchiveStorage()
18 {
19     closeArchive();
20     delete mArchive;
21 }
22 
closeArchive()23 void ArchiveStorage::closeArchive()
24 {
25     if (mArchive && mArchive->isOpen()) {
26         mArchive->close();
27     }
28 }
29 
filename() const30 QString ArchiveStorage::filename() const
31 {
32     if (mArchive) {
33         return mArchive->fileName();
34     }
35     return QString();
36 }
37 
openArchive(bool write)38 bool ArchiveStorage::openArchive(bool write)
39 {
40     const bool result = mArchive->open(write ? QIODevice::WriteOnly : QIODevice::ReadOnly);
41     if (!result) {
42         if (write) {
43             Q_EMIT error(i18n("Archive cannot be opened in write mode."));
44         } else {
45             Q_EMIT error(i18n("Archive cannot be opened in read mode."));
46         }
47     }
48     return result;
49 }
50 
archive() const51 KZip *ArchiveStorage::archive() const
52 {
53     return mArchive;
54 }
55