summaryrefslogtreecommitdiff
path: root/src/qdirfiletree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdirfiletree.cpp')
-rw-r--r--src/qdirfiletree.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/qdirfiletree.cpp b/src/qdirfiletree.cpp
new file mode 100644
index 00000000..5570060a
--- /dev/null
+++ b/src/qdirfiletree.cpp
@@ -0,0 +1,46 @@
+#include "qdirfiletree.h"
+
+#include <QDirIterator>
+
+using namespace MOBase;
+
+/**
+ *
+ */
+std::shared_ptr<const QDirFileTree> QDirFileTree::makeTree(QDir directory) {
+ return std::shared_ptr<const QDirFileTree>(new QDirFileTree(nullptr, directory));
+}
+
+/**
+ *
+ */
+QDirFileTree::QDirFileTree(std::shared_ptr<const IFileTree> parent, QDir directory) : FileTreeEntry(parent, directory.dirName()), IFileTree(), qDir(directory) {
+ qDir.setFilter(qDir.filter() | QDir::NoDotAndDotDot);
+}
+
+/**
+ * No mutable operations allowed.
+ */
+bool QDirFileTree::beforeReplace(IFileTree const* dstTree, FileTreeEntry const* destination, FileTreeEntry const* source) { return false; }
+bool QDirFileTree::beforeInsert(IFileTree const* entry, FileTreeEntry const* name) { return false; }
+bool QDirFileTree::beforeRemove(IFileTree const* entry, FileTreeEntry const* name) { return false; }
+std::shared_ptr<FileTreeEntry> QDirFileTree::makeFile(std::shared_ptr<const IFileTree> parent, QString name, QDateTime time) const { return nullptr; }
+std::shared_ptr<IFileTree> QDirFileTree::makeDirectory(std::shared_ptr<const IFileTree> parent, QString name) const { return nullptr; }
+
+void QDirFileTree::doPopulate(std::shared_ptr<const IFileTree> parent, std::vector<std::shared_ptr<FileTreeEntry>>& entries) const {
+ QDirIterator iter(qDir);
+ while (iter.hasNext()) {
+ QString name = iter.next();
+ QFileInfo info = iter.fileInfo();
+ if (info.isDir()) {
+ entries.push_back(std::shared_ptr<QDirFileTree>(new QDirFileTree(parent, QDir(info.absoluteFilePath()))));
+ }
+ else {
+ entries.push_back(createFileEntry(parent, info.fileName(), info.fileTime(QFileDevice::FileModificationTime)));
+ }
+ }
+}
+
+std::shared_ptr<IFileTree> QDirFileTree::doClone() const {
+ return std::shared_ptr<QDirFileTree>(new QDirFileTree(nullptr, qDir));
+}