5#include <QtCore/QAbstractListModel>
6#include <QtCore/QString>
8#include <QtQmlIntegration/QtQmlIntegration>
91 QUrl
archiveUrl()
const {
return QUrl::fromLocalFile(_archivePath); }
94 int count()
const {
return static_cast<int>(_filteredEntries.size()); }
105 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
106 QVariant
data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
107 QHash<int, QByteArray>
roleNames()
const override;
113 Q_INVOKABLE
void clear();
116 Q_INVOKABLE QVariantMap
get(
int index)
const;
119 Q_INVOKABLE
bool contains(
const QString &fileName)
const;
122 Q_INVOKABLE
static QString
formatSize(qint64 bytes);
140 void _setLoading(
bool loading);
141 void _setErrorString(
const QString &
error);
143 QString _archivePath;
144 QList<QGCCompression::ArchiveEntry> _allEntries;
145 QList<QGCCompression::ArchiveEntry> _filteredEntries;
147 int _directoryCount = 0;
148 qint64 _totalSize = 0;
149 bool _loading =
false;
150 QString _errorString;
Shared type definitions for compression/archive operations.
List model for archive contents, suitable for QML ListView binding.
QHash< int, QByteArray > roleNames() const override
int directoryCount() const
static Q_INVOKABLE QString formatSize(qint64 bytes)
Format bytes as human-readable string (e.g., "1.5 MB")
Q_INVOKABLE QVariantMap get(int index) const
Get entry at index (for C++ usage)
void directoryCountChanged()
void archivePathChanged()
void setArchiveUrl(const QUrl &url)
void setArchivePath(const QString &path)
void setFilterMode(FilterMode mode)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
~QGCArchiveModel() override
Role
Path to the archive file to display (QString)
@ FileNameRole
Just the filename without path (QString)
@ ModifiedRole
Last modified date (QDateTime)
@ IsDirectoryRole
Whether entry is a directory (bool)
@ PermissionsRole
Unix permissions (quint32)
@ FormattedSizeRole
Human-readable size string (QString)
@ DirectoryRole
Parent directory path (QString)
@ SizeRole
Uncompressed size in bytes (qint64)
@ NameRole
Entry name/path (QString)
QString errorString() const
void errorStringChanged()
Q_INVOKABLE bool contains(const QString &fileName) const
Check if a file exists in the archive.
FilterMode filterMode() const
void loadingComplete(bool success)
Emitted when archive loading completes (success or failure)
QString archivePath() const
Q_INVOKABLE void clear()
Clear the model and reset all properties.
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Q_INVOKABLE void refresh()
Reload archive contents (useful after external changes)
FilterMode
Filter modes for showing subsets of entries.
@ FilesOnly
Show only files (no directories)
@ DirectoriesOnly
Show only directories.
@ AllEntries
Show all files and directories.