# pragma once 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <QAbstractButton> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QMouseEvent> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QPropertyAnimation> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Toggle  :  public  QAbstractButton  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Q_OBJECT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Q_PROPERTY ( int  offset_circle  READ  offset_circle  WRITE  set_offset_circle  CONSTANT ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Toggle ( QWidget *  parent  =  nullptr ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  togglePosition ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bool  on ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  animation_duration  =  150 ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  immediateOffset  =  0 ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  offset_circle ( )  const  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  _x_circle ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  set_offset_circle ( int  o )  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _x_circle  =  o ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    update ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bool  getEnabled ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  setEnabled ( bool  value ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								protected : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  paintEvent ( QPaintEvent * )  override ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  mouseReleaseEvent ( QMouseEvent * )  override ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  enterEvent ( QEvent * )  override ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								private : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QColor  circleColor ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QColor  green ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bool  enabled  =  true ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  _x_circle ,  _y_circle ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  _height ,  _radius ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  int  _height_rect ,  _y_rect ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QPropertyAnimation  * _anim  =  nullptr ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								signals : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  void  stateChanged ( bool  new_state ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;