gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

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 }