GitFilesView.h 896 B

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