summaryrefslogtreecommitdiff
path: root/src/filetreemodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/filetreemodel.h')
-rw-r--r--src/filetreemodel.h38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/filetreemodel.h b/src/filetreemodel.h
index c363266a..c2f7d8cf 100644
--- a/src/filetreemodel.h
+++ b/src/filetreemodel.h
@@ -4,6 +4,7 @@
#include "filetreeitem.h"
#include "iconfetcher.h"
#include "directoryentry.h"
+#include <unordered_set>
class OrganizerCore;
@@ -36,9 +37,11 @@ public:
int rowCount(const QModelIndex& parent={}) const override;
int columnCount(const QModelIndex& parent={}) const override;
bool hasChildren(const QModelIndex& parent={}) const override;
+ bool canFetchMore(const QModelIndex& parent) const override;
QVariant data(const QModelIndex& index, int role=Qt::DisplayRole) const override;
QVariant headerData(int i, Qt::Orientation ori, int role=Qt::DisplayRole) const override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
+
FileTreeItem* itemFromIndex(const QModelIndex& index) const;
private:
@@ -66,6 +69,31 @@ private:
bool showArchives() const;
+
+ void update(
+ FileTreeItem& parentItem, const MOShared::DirectoryEntry& parentEntry,
+ const std::wstring& parentPath);
+
+ void updateDirectories(
+ FileTreeItem& parentItem, const std::wstring& path,
+ const MOShared::DirectoryEntry& parentEntry, FillFlags flags);
+
+ void removeDisappearingDirectories(
+ FileTreeItem& parentItem, const MOShared::DirectoryEntry& parentEntry,
+ std::unordered_set<std::wstring_view>& seen);
+
+ void addNewDirectories(
+ FileTreeItem& parentItem, const MOShared::DirectoryEntry& parentEntry,
+ const std::wstring& parentPath,
+ const std::unordered_set<std::wstring_view>& seen);
+
+ void removeRange(FileTreeItem& parentItem, int first, int last);
+
+ void addRange(
+ FileTreeItem& parentItem, int at,
+ std::vector<std::unique_ptr<FileTreeItem>>& items);
+
+
void fill(
FileTreeItem& parentItem, const MOShared::DirectoryEntry& parentEntry,
const std::wstring& parentPath);
@@ -79,14 +107,6 @@ private:
const std::vector<MOShared::FileEntry::Ptr>& files, FillFlags flags);
- void update(
- FileTreeItem& parentItem, const MOShared::DirectoryEntry& parentEntry,
- const std::wstring& parentPath);
-
- void updateDirectories(
- FileTreeItem& parentItem, const std::wstring& path,
- const MOShared::DirectoryEntry& parentEntry, FillFlags flags);
-
void updateFiles(
FileTreeItem& parentItem, const std::wstring& path,
const MOShared::DirectoryEntry& parentEntry, FillFlags flags);
@@ -102,7 +122,7 @@ private:
QString makeTooltip(const FileTreeItem& item) const;
QVariant makeIcon(const FileTreeItem& item, const QModelIndex& index) const;
- QModelIndex indexFromItem(FileTreeItem* item, int row, int col) const;
+ QModelIndex indexFromItem(FileTreeItem& item) const;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(FileTreeModel::Flags);