ManualSectionNode.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2019-2020, Sergey Bugaev <bugaevc@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "ManualNode.h"
  8. class ManualSectionNode : public ManualNode {
  9. public:
  10. virtual ~ManualSectionNode() override { }
  11. ManualSectionNode(String section, String name)
  12. : m_section(section)
  13. , m_full_name(String::formatted("{}. {}", section, name))
  14. {
  15. }
  16. virtual NonnullOwnPtrVector<ManualNode>& children() const override
  17. {
  18. reify_if_needed();
  19. return m_children;
  20. }
  21. virtual const ManualNode* parent() const override { return nullptr; }
  22. virtual String name() const override { return m_full_name; }
  23. virtual bool is_open() const override { return m_open; }
  24. void set_open(bool open);
  25. const String& section_name() const { return m_section; }
  26. String path() const;
  27. private:
  28. void reify_if_needed() const;
  29. String m_section;
  30. String m_full_name;
  31. mutable NonnullOwnPtrVector<ManualNode> m_children;
  32. mutable bool m_reified { false };
  33. bool m_open { false };
  34. };