//---------------------------------------------------------------------------
#include <vcl.h>
#include "stdio.h"

#pragma hdrstop

#include "setupmain.h"
#include "threadsearch.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSetupScreen *SetupScreen;

char sbuffer[100];
int i,j;

char id_m[MAX_SWITCHES + 1][25];
char name_m[MAX_SWITCHES + 1][25];
char list_nr[MAX_SWITCHES + 1][10];
char listbox_strings[MAX_SWITCHES + 1][40];
int item;

int LearnId;

extern unsigned char switch_id[MAX_SWITCHES + 1][8];
extern char name[MAX_SWITCHES + 1][25];
extern int blinking;
extern unsigned char com_port;       	/* serial com port */
extern int LanguageChoice;

extern int Open_Port( unsigned char );
extern void CloseComport();

extern int read_init();
extern int write_ini_file();
//---------------------------------------------------------------------------
__fastcall TSetupScreen::TSetupScreen(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSetupScreen::fill_in_config_listbox()
{
    switch(com_port)
    {
        case 1: Com1 -> Checked = true;
                break;
        case 2: Com2 -> Checked = true;
                break;
        case 3: Com3 -> Checked = true;
                break;
        case 4: Com4 -> Checked = true;
                break;
    }
    if(LanguageChoice == DUTCH)
    {
        Nederlands -> Checked = TRUE;
        SetupOKButton -> Caption = "OK and Save";
        ListBox1->Hint = "Dubbelklik om te bewerken....";
    }
    else
    {
        English -> Checked = TRUE;
        SetupOKButton -> Caption = "OK en Save";
        ListBox1->Hint = "Doubleclick to edit....";
    }
    ListBox1->Items->Clear();
    for(i = 1;i <= MAX_SWITCHES;i++)
    {
        if(LanguageChoice == DUTCH)
        {
            sprintf(list_nr[i],"knop:%2d",i);
        }
        else
        {
            sprintf(list_nr[i],"But.:%2d",i);
        }

        for(j=7;j>=0;j--)
        {
            sprintf(sbuffer,"%02X ",switch_id[i][j]);
            if(j==7)
                strcpy(id_m[i],sbuffer);
            else
                strcat(id_m[i],sbuffer);
        }
        strcpy(name_m[i],name[i]);

        sprintf(listbox_strings[i],"%7s  %s %s",list_nr[i],id_m[i],name_m[i]);
        ListBox1->Items->Append(listbox_strings[i]);
    }
    ListBox1     -> ItemIndex = 0;

	KeyLabel     -> Text      = list_nr[1];
    IdLabel      -> Text      = id_m[1];
    NameEdit     -> Text      = name_m[1];

    EditPanel    -> Enabled   = false;
    KeyLabel     -> Enabled   = false;
    IdLabel      -> Enabled   = false;
    NameEdit     -> Enabled   = false;
    EditOKButton -> Enabled   = false;
    ClearButton  -> Enabled   = false;
    LearnKeyId   -> Visible   = false;
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::ListBox1Click(TObject *Sender)
{
    item          = ListBox1->ItemIndex;
    
	KeyLabel     -> Text = list_nr[item+1];
    IdLabel      -> Text = id_m[item+1];
    NameEdit     -> Text = name_m[item+1];

    ListBox1     -> Enabled  = false;
    ListBox1     -> Color   = clInactiveBorder;

    EditPanel    -> Enabled = true;
    KeyLabel     -> Enabled = true;
    IdLabel      -> Enabled = true;
    NameEdit     -> Enabled = true;
    EditOKButton -> Enabled = true;
    ClearButton  -> Enabled = true;
    LearnKeyId   -> Visible = true;
    SetupOKButton     -> Enabled = false;
    SetupCancelButton -> Enabled = false;

    LearnId  = true;
    blinking = true;
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::EditOKButtonClick(TObject *Sender)
{
    strcpy(id_m[item + 1],IdLabel->Text.c_str());
    strcpy(name_m[item + 1],NameEdit->Text.c_str());

    sprintf(listbox_strings[0],"%7s  %s %s",list_nr[item + 1],id_m[item + 1],name_m[item + 1]);
	ListBox1->Items->Strings[ListBox1->ItemIndex] = listbox_strings[0];

    EditPanel         -> Enabled       = false;
    KeyLabel          -> Enabled       = false;
    IdLabel           -> Enabled       = false;
    NameEdit          -> Enabled       = false;
    EditOKButton      -> Enabled       = false;
    ClearButton       -> Enabled       = false;
    LearnKeyId        -> Visible       = false;

    ListBox1          -> Enabled       = true;
    ListBox1          -> Color         = clWindow;
    LearnKeyId        -> Color         = clSilver;
    LearnKeyId        -> Font -> Color = clBlack;
    SetupOKButton     -> Enabled       = true;
    SetupCancelButton -> Enabled       = true;

    LearnId  = false;
    blinking = false;
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::SetupCancelButtonClick(TObject *Sender)
{
    EditPanel    -> Enabled = false;
    KeyLabel     -> Enabled = false;
    IdLabel      -> Enabled = false;
    NameEdit     -> Enabled = false;
    EditOKButton -> Enabled = false;
    ClearButton  -> Enabled = false;
    LearnKeyId   -> Visible = false;

    ListBox1     -> Enabled = true;
    ListBox1     -> Color   = clWindow;

    NewFound     = false;
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::ClearButtonClick(TObject *Sender)
{
    strcpy(id_m[item+1],"00 00 00 00 00 00 00 00 ");
    IdLabel -> Text = id_m[item+1];
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::SetupOKButtonClick(TObject *Sender)
{
    int k;

    if(Com1 -> Checked == TRUE)
    {
        com_port = 1;
    }
    if(Com2 -> Checked == TRUE)
    {
        com_port = 2;
    }
    if(Com3 -> Checked == TRUE)
    {
        com_port = 3;
    }
    if(Com4 -> Checked == TRUE)
    {
        com_port = 4;
    }

    if(Nederlands -> Checked == TRUE)
    {
        LanguageChoice = DUTCH;
    }
    else
    {
        LanguageChoice = ENGLISH;
    }

    for(i = 1;i <= MAX_SWITCHES;i++)
    {
        strcpy(name[i],name_m[i]);
        j = 0;
        k = 7;
        while(j<23)
        {
	        if(id_m[i][j] <= '9')
		        switch_id[i][k]  = (unsigned char)((id_m[i][j] - '0') * 16);
		    else
			    switch_id[i][k]  = (unsigned char)((id_m[i][j] - '7') * 16);
            j++;
		    if(id_m[i][j] <= '9')
			    switch_id[i][k] += (unsigned char)(id_m[i][j] - '0'); // Filter name from the data
		    else
		        switch_id[i][k] += (unsigned char)(id_m[i][j] - '7'); // Filter name from the data
            j+=2; // Skip space
            if(k)
                k--;
        }
    }

    ListBox1 -> Enabled = true;
    ListBox1 -> Color   = clWindow;
    NewFound = false;

    write_ini_file();
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::EnglishClick(TObject *Sender)
{
    SetupOKButton -> Caption = "OK and Save";
    Uitleg1 -> Text = "But. nr  internal buttonnumber    Team name";
    LearnKeyId -> Caption    = "Learn nr: Press Quiz-button";
    ClearButton -> Caption   = "Clear number";
    ListBox1->Hint = "Doubleclick to edit....";
    ListBox1->Items->Clear();
    for(i = 1;i <= MAX_SWITCHES;i++)
    {
        sprintf(list_nr[i],"but.:%2d",i);
        for(j=7;j>=0;j--)
        {
            sprintf(sbuffer,"%02X ",switch_id[i][j]);
            if(j==7)
                strcpy(id_m[i],sbuffer);
            else
                strcat(id_m[i],sbuffer);
        }
        strcpy(name_m[i],name[i]);

        sprintf(listbox_strings[i],"%7s  %s %s",list_nr[i],id_m[i],name_m[i]);
        ListBox1->Items->Append(listbox_strings[i]);

    }
}
//---------------------------------------------------------------------------

void __fastcall TSetupScreen::NederlandsClick(TObject *Sender)
{
    SetupOKButton -> Caption = "OK en Save";
    Uitleg1 -> Text = "Knop nr  intern knopnummer        Team naam";
    LearnKeyId -> Caption = "Leer nr: Druk Quiz-toets";
    ClearButton -> Caption = "Wis nummer";
    ListBox1->Items->Clear();
    ListBox1->Hint = "Dubbelklik om te bewerken....";
    for(i = 1;i <= MAX_SWITCHES;i++)
    {
        sprintf(list_nr[i],"knop:%2d",i);
        for(j=7;j>=0;j--)
        {
            sprintf(sbuffer,"%02X ",switch_id[i][j]);
            if(j==7)
                strcpy(id_m[i],sbuffer);
            else
                strcat(id_m[i],sbuffer);
        }
        strcpy(name_m[i],name[i]);

        sprintf(listbox_strings[i],"%7s  %s %s",list_nr[i],id_m[i],name_m[i]);
        ListBox1->Items->Append(listbox_strings[i]);

    }
}
//---------------------------------------------------------------------------

