| 
									
										
										
										
											2019-05-24 16:32:20 +02:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibGUI/GWidget.h>
 | 
					
						
							| 
									
										
										
										
											2019-05-24 22:54:37 +02:00
										 |  |  | #include <SharedGraphics/TextAlignment.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GPainter; | 
					
						
							| 
									
										
										
										
											2019-05-24 16:32:20 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class GAbstractButton : public GWidget { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~GAbstractButton() override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 17:11:42 +02:00
										 |  |  |     Function<void(bool)> on_checked; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 16:32:20 +02:00
										 |  |  |     void set_text(const String&); | 
					
						
							|  |  |  |     const String& text() const { return m_text; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool is_checked() const { return m_checked; } | 
					
						
							|  |  |  |     void set_checked(bool); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool is_checkable() const { return m_checkable; } | 
					
						
							|  |  |  |     void set_checkable(bool); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool is_hovered() const { return m_hovered; } | 
					
						
							|  |  |  |     bool is_being_pressed() const { return m_being_pressed; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void click() = 0; | 
					
						
							|  |  |  |     virtual const char* class_name() const override { return "GAbstractButton"; } | 
					
						
							| 
									
										
										
										
											2019-05-24 17:11:42 +02:00
										 |  |  |     virtual bool accepts_focus() const override { return true; } | 
					
						
							| 
									
										
										
										
											2019-05-24 16:32:20 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  |     explicit GAbstractButton(GWidget* parent); | 
					
						
							|  |  |  |     GAbstractButton(const String&, GWidget* parent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void mousedown_event(GMouseEvent&) override; | 
					
						
							|  |  |  |     virtual void mousemove_event(GMouseEvent&) override; | 
					
						
							|  |  |  |     virtual void mouseup_event(GMouseEvent&) override; | 
					
						
							|  |  |  |     virtual void keydown_event(GKeyEvent&) override; | 
					
						
							|  |  |  |     virtual void enter_event(CEvent&) override; | 
					
						
							|  |  |  |     virtual void leave_event(CEvent&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 22:54:37 +02:00
										 |  |  |     void paint_text(GPainter&, const Rect&, const Font&, TextAlignment); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 16:32:20 +02:00
										 |  |  | private: | 
					
						
							|  |  |  |     String m_text; | 
					
						
							|  |  |  |     bool m_checked { false }; | 
					
						
							|  |  |  |     bool m_checkable { false }; | 
					
						
							|  |  |  |     bool m_hovered { false }; | 
					
						
							|  |  |  |     bool m_being_pressed { false }; | 
					
						
							|  |  |  | }; |