CharacterMapFileListModel.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright (c) 2020, Hüseyin Aslıtürk <asliturk@hotmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Vector.h>
  8. #include <LibGUI/Model.h>
  9. class CharacterMapFileListModel final : public GUI::Model {
  10. public:
  11. static NonnullRefPtr<CharacterMapFileListModel> create(Vector<String>& file_names)
  12. {
  13. return adopt_ref(*new CharacterMapFileListModel(file_names));
  14. }
  15. virtual ~CharacterMapFileListModel() override { }
  16. virtual int row_count(const GUI::ModelIndex&) const override
  17. {
  18. return m_file_names.size();
  19. }
  20. virtual int column_count(const GUI::ModelIndex&) const override
  21. {
  22. return 1;
  23. }
  24. virtual GUI::Variant data(const GUI::ModelIndex& index, GUI::ModelRole role) const override
  25. {
  26. VERIFY(index.is_valid());
  27. VERIFY(index.column() == 0);
  28. if (role == GUI::ModelRole::Display)
  29. return m_file_names.at(index.row());
  30. return {};
  31. }
  32. virtual void update() override
  33. {
  34. did_update();
  35. }
  36. private:
  37. explicit CharacterMapFileListModel(Vector<String>& file_names)
  38. : m_file_names(file_names)
  39. {
  40. }
  41. Vector<String>& m_file_names;
  42. };