// MorseSpeaker, by Seb Luca, UNamur, June 2018

package com.projet.sluca.morsespeaker;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.text.Normalizer;

public class MainActivity extends AppCompatActivity implements View.OnClickListener
{
    private static int REQUEST_CODE = 1;

    private Button buttonPlay;  // bouton "Play"
    private Button buttonBack;  // bouton "Back"
    private Button buttonNew;   // bouton "New Phrase"

    private Context context;

    GlobalDatas globalDatas; // Appel de la classe traitant les variables globales.

    public String message;  // String qui retiendra les messages d'erreur.

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;

        // Etablissement de la liaison avec la classe GlobalsDatas.
        globalDatas = (GlobalDatas) getApplication();

        // Ecoute du bouton "Translate".
        Button translateBtn = (Button)findViewById(R.id.btn_send);
        translateBtn.setOnClickListener(this);
    }


    @Override
    public void onClick(View v)
    {
        // Récupération du contenu de l'input.
        EditText inputTxt = (EditText) findViewById(R.id.textaera);
        String input = inputTxt.getText().toString();

        // VERIFICATION 1 : L'entrée n'est pas vide.
        if(!inputTxt.getText().toString().matches(""))
        {
            // Retrait des accents.
            input = Normalizer.normalize(input, Normalizer.Form.NFD);
            input = input.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

            input = input.toUpperCase(); // Mise en majuscules de la phrase entière.

            // VERIFICATION 2 : L'entrée est strictement alphanumérique.
            if(input.matches("[ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789]+"))
            {
                // Si les vérification sont vraies :

                globalDatas.setphrase(input); // Mémorisation en globale de l'entrée.

                // Transition vers l'activity suivante.
                Intent intent = new Intent(context, TranslateActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
            else // Si VERIFICATION 2 est fausse : message d'erreur.
            {
                message = "Special characters are not allowed,\nexcept SPACE.";

                message(message); // Affichage du message via la méthode "message()".
            }
        }
        else // Si VERIFICATION 1 est fausse : message d'erreur.
        {
            message = "You must enter\nsome text, before.";

            message(message); // Affichage du message via la méthode "message()".
        }
    }


    public void message(String message)
    {
        Toast toast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL, 0, -208);                     // position du toast
        TextView tv = (TextView) toast.getView().findViewById(android.R.id.message); tv.setGravity(Gravity.CENTER); // centrage du texte
        toast.show();
    }
}
