123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #pragma once
- #include <LibGUI/GModel.h>
- class GFileSystemModel : public GModel {
- friend class Node;
- public:
- enum Mode {
- Invalid,
- DirectoriesOnly,
- FilesAndDirectories
- };
- static NonnullRefPtr<GFileSystemModel> create(const StringView& root_path = "/", Mode mode = Mode::FilesAndDirectories)
- {
- return adopt(*new GFileSystemModel(root_path, mode));
- }
- virtual ~GFileSystemModel() override;
- String root_path() const { return m_root_path; }
- String path(const GModelIndex&) const;
- GModelIndex index(const StringView& path) const;
- virtual int row_count(const GModelIndex& = GModelIndex()) const override;
- virtual int column_count(const GModelIndex& = GModelIndex()) const override;
- virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
- virtual void update() override;
- virtual GModelIndex parent_index(const GModelIndex&) const override;
- virtual GModelIndex index(int row, int column = 0, const GModelIndex& parent = GModelIndex()) const override;
- private:
- GFileSystemModel(const StringView& root_path, Mode);
- String m_root_path;
- Mode m_mode { Invalid };
- struct Node;
- Node* m_root { nullptr };
- void cleanup();
- GIcon m_open_folder_icon;
- GIcon m_closed_folder_icon;
- GIcon m_file_icon;
- };
|