File indexing completed on 2024-05-12 05:25:33

0001 /*
0002    SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "archivestorage.h"
0008 #include <KLocalizedString>
0009 #include <KZip>
0010 
0011 ArchiveStorage::ArchiveStorage(const QString &filename, QObject *parent)
0012     : QObject(parent)
0013     , mArchive(new KZip(filename))
0014 {
0015 }
0016 
0017 ArchiveStorage::~ArchiveStorage()
0018 {
0019     closeArchive();
0020     delete mArchive;
0021 }
0022 
0023 void ArchiveStorage::closeArchive()
0024 {
0025     if (mArchive && mArchive->isOpen()) {
0026         mArchive->close();
0027     }
0028 }
0029 
0030 QString ArchiveStorage::filename() const
0031 {
0032     if (mArchive) {
0033         return mArchive->fileName();
0034     }
0035     return {};
0036 }
0037 
0038 bool ArchiveStorage::openArchive(bool write)
0039 {
0040     const bool result = mArchive->open(write ? QIODevice::WriteOnly : QIODevice::ReadOnly);
0041     if (!result) {
0042         if (write) {
0043             Q_EMIT error(i18n("Archive cannot be opened in write mode."));
0044         } else {
0045             Q_EMIT error(i18n("Archive cannot be opened in read mode."));
0046         }
0047     }
0048     return result;
0049 }
0050 
0051 KZip *ArchiveStorage::archive() const
0052 {
0053     return mArchive;
0054 }
0055 
0056 #include "moc_archivestorage.cpp"