GitFilesView.h 929 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/LexicalPath.h>
  8. #include <LibGUI/ListView.h>
  9. #include <LibGfx/Bitmap.h>
  10. namespace HackStudio {
  11. // A "GitFileAction" is either the staging or the unstaging of a file.
  12. using GitFileActionCallback = Function<void(const LexicalPath& file)>;
  13. class GitFilesView : public GUI::ListView {
  14. C_OBJECT(GitFilesView)
  15. public:
  16. virtual ~GitFilesView() override;
  17. protected:
  18. GitFilesView(GitFileActionCallback, NonnullRefPtr<Gfx::Bitmap> action_icon);
  19. private:
  20. virtual void paint_list_item(GUI::Painter& painter, int row_index, int painted_item_index) override;
  21. virtual void mousedown_event(GUI::MouseEvent&) override;
  22. virtual Gfx::IntRect action_icon_rect(size_t painted_item_index);
  23. GitFileActionCallback m_action_callback;
  24. NonnullRefPtr<Gfx::Bitmap> m_action_icon;
  25. };
  26. }