listitem.h (1042B)
1 #pragma once 2 3 #include "juce_gui_basics/juce_gui_basics.h" 4 5 namespace jucePluginEditorLib::patchManager 6 { 7 class ListModel; 8 9 class ListItem : public juce::Component, public juce::DragAndDropTarget 10 { 11 public: 12 explicit ListItem(ListModel& _list, int _row); 13 14 void setRow(int _row) 15 { 16 m_row = _row; 17 } 18 19 void paint(juce::Graphics& g) override; 20 21 void itemDragEnter(const SourceDetails& dragSourceDetails) override; 22 void itemDragExit(const SourceDetails& dragSourceDetails) override; 23 void itemDragMove(const SourceDetails& dragSourceDetails) override; 24 bool isInterestedInDragSource(const SourceDetails& dragSourceDetails) override; 25 void itemDropped(const SourceDetails& dragSourceDetails) override; 26 void mouseDown(const juce::MouseEvent& event) override; 27 bool hitTest(int x, int y) override; 28 private: 29 30 void updateDragTypeFromPosition(const SourceDetails& dragSourceDetails); 31 32 enum class DragType 33 { 34 Off, 35 Above, 36 Below, 37 Over 38 }; 39 40 ListModel& m_list; 41 int m_row; 42 DragType m_drag = DragType::Off; 43 }; 44 }