GFileSystemModel.h 1012 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <LibGUI/GModel.h>
  3. class GFileSystemModel : public GModel {
  4. friend class Node;
  5. public:
  6. static Retained<GFileSystemModel> create(const String& root_path = "/")
  7. {
  8. return adopt(*new GFileSystemModel(root_path));
  9. }
  10. virtual ~GFileSystemModel() override;
  11. String root_path() const { return m_root_path; }
  12. virtual int row_count(const GModelIndex& = GModelIndex()) const override;
  13. virtual int column_count(const GModelIndex& = GModelIndex()) const override;
  14. virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
  15. virtual void update() override;
  16. virtual GModelIndex parent_index(const GModelIndex&) const override;
  17. virtual GModelIndex index(int row, int column = 0, const GModelIndex& = GModelIndex()) const override;
  18. virtual void activate(const GModelIndex&) override;
  19. private:
  20. explicit GFileSystemModel(const String& root_path);
  21. String m_root_path;
  22. struct Node;
  23. Node* m_root { nullptr };
  24. };