diff --git a/kerfuffle/archive_kerfuffle.h b/kerfuffle/archive_kerfuffle.h --- a/kerfuffle/archive_kerfuffle.h +++ b/kerfuffle/archive_kerfuffle.h @@ -153,6 +153,7 @@ Q_PROPERTY(bool isSingleFolderArchive READ isSingleFolderArchive) Q_PROPERTY(EncryptionType encryptionType READ encryptionType) Q_PROPERTY(qulonglong numberOfFiles READ numberOfFiles) + Q_PROPERTY(qulonglong numberOfFolders READ numberOfFolders) Q_PROPERTY(qulonglong unpackedSize READ unpackedSize) Q_PROPERTY(qulonglong packedSize READ packedSize) Q_PROPERTY(QString subfolderName READ subfolderName) @@ -175,6 +176,7 @@ bool hasComment() const; EncryptionType encryptionType(); qulonglong numberOfFiles(); + qulonglong numberOfFolders(); qulonglong unpackedSize(); qulonglong packedSize() const; QString subfolderName(); @@ -253,6 +255,7 @@ ArchiveError m_error; EncryptionType m_encryptionType; qulonglong m_numberOfFiles; + qulonglong m_numberOfFolders; QMimeType m_mimeType; }; diff --git a/kerfuffle/archive_kerfuffle.cpp b/kerfuffle/archive_kerfuffle.cpp --- a/kerfuffle/archive_kerfuffle.cpp +++ b/kerfuffle/archive_kerfuffle.cpp @@ -130,6 +130,7 @@ , m_error(NoError) , m_encryptionType(Unencrypted) , m_numberOfFiles(0) + , m_numberOfFolders(0) { qCDebug(ARK) << "Created archive instance"; @@ -246,6 +247,16 @@ return m_numberOfFiles; } +qulonglong Archive::numberOfFolders() +{ + if (!isValid()) { + return 0; + } + + listIfNotListed(); + return m_numberOfFolders; +} + qulonglong Archive::unpackedSize() { if (!isValid()) { @@ -273,9 +284,7 @@ void Archive::onNewEntry(const ArchiveEntry &entry) { - if (!entry[IsDirectory].toBool()) { - m_numberOfFiles++; - } + entry[IsDirectory].toBool() ? m_numberOfFolders++ : m_numberOfFiles++; } bool Archive::isValid() const diff --git a/kerfuffle/propertiesdialog.cpp b/kerfuffle/propertiesdialog.cpp --- a/kerfuffle/propertiesdialog.cpp +++ b/kerfuffle/propertiesdialog.cpp @@ -65,7 +65,9 @@ m_ui->lblMimetype->setText(archive->mimeType().name()); m_ui->lblReadOnly->setText(archive->isReadOnly() ? i18n("yes") : i18n("no")); m_ui->lblHasComment->setText(archive->hasComment() ? i18n("yes") : i18n("no")); - m_ui->lblNumberOfFiles->setText(QString::number(archive->numberOfFiles())); + m_ui->lblNumberOfEntries->setText(i18n("%1 files, %2 folders", + QString::number(archive->numberOfFiles()), + QString::number(archive->numberOfFolders()))); m_ui->lblUnpackedSize->setText(KIO::convertSize(archive->unpackedSize())); m_ui->lblPackedSize->setText(KIO::convertSize(archive->packedSize())); m_ui->lblCompressionRatio->setText(QString::number(float(archive->unpackedSize()) / float(archive->packedSize()), 'f', 1)); diff --git a/kerfuffle/propertiesdialog.ui b/kerfuffle/propertiesdialog.ui --- a/kerfuffle/propertiesdialog.ui +++ b/kerfuffle/propertiesdialog.ui @@ -38,6 +38,13 @@ + + + + + + + @@ -111,12 +118,12 @@ - Number of files: + Number of entries: - + @@ -232,13 +239,6 @@ - - - - - - -