summaryrefslogtreecommitdiff
path: root/src/filetree.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-12-19 18:42:17 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-04 03:33:18 -0500
commite0c605be1d32b74b14da18cc7de4a66a4f6f3ecb (patch)
treed35ab520b6e99bb3458f3a3c9d338766ee1a994f /src/filetree.h
parent219bd59a21430f830136927564e18dfc25421927 (diff)
initial implementation for updating file tree, buggy
Diffstat (limited to 'src/filetree.h')
-rw-r--r--src/filetree.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/filetree.h b/src/filetree.h
index 08ebdcb7..f92f10f2 100644
--- a/src/filetree.h
+++ b/src/filetree.h
@@ -35,6 +35,8 @@ public:
FileTreeItem& operator=(FileTreeItem&&) = default;
void add(std::unique_ptr<FileTreeItem> child);
+ void insert(std::unique_ptr<FileTreeItem> child, std::size_t at);
+ void remove(std::size_t i);
const std::vector<std::unique_ptr<FileTreeItem>>& children() const;
FileTreeItem* parent();
@@ -59,6 +61,11 @@ public:
void setLoaded(bool b);
bool isLoaded() const;
+ void unload();
+
+ void setExpanded(bool b);
+ bool isStrictlyExpanded() const;
+ bool areChildrenVisible() const;
QString debugName() const;
@@ -71,6 +78,7 @@ private:
QString m_file;
QString m_mod;
bool m_loaded;
+ bool m_expanded;
std::vector<std::unique_ptr<FileTreeItem>> m_children;
};
@@ -136,15 +144,31 @@ private:
FileTreeItem& parentItem, const std::wstring& path,
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);
+
std::wstring makeModName(const MOShared::FileEntry& file, int originID) const;
void ensureLoaded(FileTreeItem* item) const;
void updatePendingIcons();
+ void removePendingIcons(const QModelIndex& parent, int first, int last);
bool shouldShowFile(const MOShared::FileEntry& file) const;
bool hasFilesAnywhere(const MOShared::DirectoryEntry& dir) const;
QString makeTooltip(const FileTreeItem& item) const;
QVariant makeIcon(const FileTreeItem& item, const QModelIndex& index) const;
+
+ QModelIndex indexFromItem(FileTreeItem* item, int row, int col) const;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(FileTreeModel::Flags);
@@ -187,8 +211,10 @@ private:
FileTreeModel* m_model;
FileTreeItem* singleSelection();
+ void onExpandedChanged(const QModelIndex& index, bool expanded);
void onContextMenu(const QPoint &pos);
+
void addDirectoryMenus(QMenu& menu, FileTreeItem& item);
void addFileMenus(QMenu& menu, const MOShared::FileEntry& file, int originID);
void addOpenMenus(QMenu& menu, const MOShared::FileEntry& file);