summaryrefslogtreecommitdiff
path: root/src/filetreemodel.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-01-15 16:14:34 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-04 03:33:19 -0500
commitbb9a4600bb3e83ad35a061db228c81cf8e108407 (patch)
tree97387c8418d82caf1ff2f0a357667b7a85734fff /src/filetreemodel.h
parent08188830a3cf67924980b4183e2ca7a4b5e12c3d (diff)
rewriting FileTreeModel, implemented add/remove folders in root
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);