package com.sexy.sexypa;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Environment;
import android.speech.RecognizerIntent;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;
import java.util.logging.Logger;

public class SexyPAActivity extends Activity implements View.OnClickListener, TextToSpeech.OnInitListener {

    protected static final int REQUEST_OK = 1;
    private TextToSpeech tts;
    private String spoken = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sexy_pa);
        findViewById(R.id.speak).setOnClickListener(this);

        tts = new TextToSpeech(this, this);
        findViewById(R.id.play).setOnClickListener(this);
        Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/AdventPro-Medium.ttf");

        EditText spokenWord = (EditText)findViewById(R.id.editText1);
                spokenWord.setTypeface(myFont);

        createBookFile();
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case R.id.speak:
                Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
                try
                {
                    startActivityForResult(i, REQUEST_OK);
                } catch (Exception e)
                {
                    Toast.makeText(this, "Error initializing speech to text engine.", Toast.LENGTH_LONG).show();
                }
                break;
            case R.id.play:
                if (tts!=null)
                {
                    String text = ((EditText)findViewById(R.id.editText1)).getText().toString();
                    if(text != null && text.equalsIgnoreCase("hello"))
                    {
                        if (!tts.isSpeaking())
                        {
                            tts.speak("Hello Scott, how was your night?", TextToSpeech.QUEUE_FLUSH, null);
                        }

                    }else if(text != null && text.equalsIgnoreCase("good"))
                    {
                        if(!tts.isSpeaking())
                        {
                            tts.speak("Cool, it is nice to see you today, man.", TextToSpeech.QUEUE_FLUSH, null);
                        }
                    }
                    else{
                        if(!tts.isSpeaking())
                        {
                            tts.speak("What? What? What? What?", TextToSpeech.QUEUE_FLUSH, null);
                        }
                    }

                }
        }

    }

    @Override
    protected void onDestroy()
    {
        if (tts!=null)
        {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==REQUEST_OK  && resultCode==RESULT_OK)
        {
            ArrayList<String> thingsYouSaid = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            spoken = thingsYouSaid.get(0);
            ((TextView)findViewById(R.id.editText1)).setText(spoken);
        }
    }


    @Override
    public void onInit(int code)
    {
        if (code == TextToSpeech.SUCCESS)
        {
            tts.setLanguage(Locale.getDefault());

        } else
        {
            tts = null;
            Toast.makeText(this, "Failed to initialize TTS engine.",
                    Toast.LENGTH_SHORT).show();
        }
    }

    public void createBookFile()
    {
        File folder = new File(Environment.getExternalStorageDirectory() + "/draft");
        boolean success = true;
        if (!folder.exists()) {
            success = folder.mkdir();
        }
        if (success) {
            writeToFile("Some Value", "book.txt");
        } else {
            // Do something else on failure
        }
    }

    public void writeToFile(String text, String fileName)
    {
        Context context = getBaseContext();
        try {
            FileWriter out = new FileWriter(new File(context.getFilesDir(), fileName));
            out.write(text);
            out.close();
        } catch (IOException e) {

        }
    }




}
