#include "bouton.h"
#include <stdint.h>
#include "Constantes_partagees.h"

/* 
==================================
	 version1="2026-08-28";
==================================
*/


/** ***************************************************************************************
	CLASS TOUCH_BOUTON
********************************************************************************************/


// Constructeur
TOUCH_BOUTON::TOUCH_BOUTON()
{

}


void TOUCH_BOUTON::init(uint16_t x_i, uint16_t y_i, uint8_t dx_i, uint8_t dy_i, uint8_t dr_i, uint16_t couleur_i)
{
	x0 = x_i;
	y0 = y_i;
	dx = dx_i;
	dy = dy_i;
	dr = dr_i;
	couleur = couleur_i;

	cliked = false;
	selected = 0;
}



void TOUCH_BOUTON::affiche(uint16_t coul_select, uint8_t n_font, TFT_eSPI *TFTi)
{
	uint16_t couleur_contour = (13 << 11) | (26 << 5) | 13; // ((13 << 11) | (26 << 5) | 13) = 27469 = 0x6b4d = gris

	if(selected==0)
	{
		TFTi->setTextColor(BLANC);
		TFTi->fillRoundRect(x0, y0, dx, dy, dr, couleur); // efface
		TFTi->drawRoundRect(x0, y0, dx, dy, dr, couleur_contour); // retrace juste le contour
	}
	if(selected==1) 
	{
		TFTi->setTextColor(NOIR);
		TFTi->fillRoundRect(x0, y0, dx, dy, dr, coul_select); 
	} 


	//FM9 FMB9 FSS9... voir le fichier FrSD_Fonts.h
	if (n_font == 1) { TFTi->setFreeFont(FF0);}
	if (n_font == 2) { TFTi->setFreeFont(FM9);}
	if (n_font == 3) { TFTi->setFreeFont(FMB9);}
	if (n_font == 4) { TFTi->setFreeFont(FSS9);} 

	TFTi->drawString(label, x0+3, y0 - (2*n_font) + (dy-4)/2);
}


void TOUCH_BOUTON::test_clic(uint16_t x_tch_i, uint16_t y_tch_i)
{
 	if (  (x_tch_i > x0) && (x_tch_i < (x0 + dx)) && (y_tch_i > y0) && (y_tch_i < (y0 + dy))  )
	{
		cliked = true;
		selected = 1;
	} 
}



/** ***************************************************************************************
	CLASS PANEL_BOUTONS 
********************************************************************************************/

// Constructeur
PANEL_BOUTONS::PANEL_BOUTONS()
{

}


void PANEL_BOUTONS::init(uint16_t x_i, uint16_t y_i, uint16_t dxT_i, uint16_t nb_boutons_i, String nom_i, String s_i[5], TFT_eSPI *TFTi)
{
	x0 = x_i;
	y0 = y_i;
	dxT = dxT_i; // largeur totale

    nb_boutons = nb_boutons_i;

	uint16_t x=x0;
	uint16_t y=y0;
	uint16_t dx_bt;

	nom = nom_i;

	float L= 0.8 * (float)dxT / (float)nb_boutons;
	dx_bt = (uint16_t) L; // largeur de chaque bouton

	for(int i=0; i<5; i++)
	{
		bt_P[i].init(x, y, dx_bt, 20, 3, GRIS); bt_P[i].label=s_i[i]; x += dx_bt+7;
	}
}


void PANEL_BOUTONS::deselecte_tous(TFT_eSPI *TFTi)
{
	for(int i=0; i<nb_boutons; i++)
	{
		bt_P[i].cliked = false;
		bt_P[i].selected = 0;
		bt_P[i].affiche(VERT, 2, TFTi);		
	}
}



void PANEL_BOUTONS::affiche(TFT_eSPI *TFTi)
{

	//uint16_t x = x0;
	//uint16_t y = y0;

	for(int i=0; i<nb_boutons; i++)
	{
		bt_P[i].affiche(VERT, 2, TFTi); //x+=48;
	}
	
	TFTi->drawRect(x0-8, y0-6, dxT, 30, GRIS); // contour
	TFTi->setTextColor(CYAN, NOIR);	
	TFTi->setFreeFont(FM9);
	TFTi->drawString(nom, x0-5, y0-15);
}



uint8_t PANEL_BOUTONS::traite_boutons(uint16_t x_tch_i, uint16_t y_tch_i, uint8_t nb_bt, TFT_eSPI *TFTi)
{

	for(int n=0; n<nb_bt; n++)
	{
		bt_P[n].test_clic(x_tch_i, y_tch_i);
		if (bt_P[n].cliked) 
		{
			for(int i=0; i<nb_bt; i++) 
			{ 
				bt_P[i].selected = 0; 
				bt_P[i].affiche(GRIS, 2, TFTi);
			}
			bt_P[n].cliked = false;
			bt_P[n].selected = 1;
			bt_P[n].affiche(VERT, 2, TFTi);
			return n;
		}
	} 
	return 255;
}