--- /dev/null
+#ifndef DIRECTORYMODEL_H_
+#define DIRECTORYMODEL_H_
+
+#include <QAbstractListModel>
+#include <QList>
+
+class DirectoryModel: public QAbstractListModel
+{
+ Q_OBJECT
+
+ Q_ENUMS(EntryType)
+
+public:
+ enum EntryType
+ {
+ ParentDir,
+ SubDir,
+ File
+ };
+
+private:
+ struct Entry
+ {
+ QString name;
+ EntryType type;
+
+ bool operator<(const Entry &) const;
+ };
+
+ QList<Entry> entries;
+
+public:
+ void clear();
+ void add_entry(const QString &, EntryType);
+
+ virtual QHash<int, QByteArray> roleNames() const;
+ virtual int rowCount(const QModelIndex &) const;
+ virtual QVariant data(const QModelIndex &, int) const;
+};
+
+#endif