package etienned.lecteuropus;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements CardReader.AccountCallback{

    public static final String TAG = "CardReaderFragment";
    // Recommend NfcAdapter flags for reading from other Android devices. Indicates that this
    // activity is interested in NFC-A devices (including other Android devices), and that the
    // system should not check for the presence of NDEF-formatted data (e.g. Android Beam).
    public static int FLAG_MIFARE =
            NfcAdapter.FLAG_READER_NFC_A;
    public static int FLAG_OPUS =
            NfcAdapter.FLAG_READER_NFC_B;
    public CardReader mCardReader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCardReader = new CardReader(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        //disableReaderMode();
    }

    @Override
    public void onResume() {
        super.onResume();
        enableReaderMode();
    }

    private void enableReaderMode() {
        Log.i(TAG, "Enabling reader mode");
        Activity activity = this;
        NfcAdapter nfc = NfcAdapter.getDefaultAdapter(activity);
        if (!nfc.isEnabled()) {
            AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
            alertDialog.setTitle(getString(R.string.disable_title));
            alertDialog.setMessage(getString(R.string.nfc_disable));
            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));

                        }
                    });
            alertDialog.show();
        }
        else if (nfc != null) {
            nfc.enableReaderMode(activity, mCardReader, FLAG_MIFARE | FLAG_OPUS, null);
        }
    }

    private void disableReaderMode() {
        Log.i(TAG, "Disabling reader mode");
        Activity activity = this;
        NfcAdapter nfc = NfcAdapter.getDefaultAdapter(activity);
        if (nfc != null) {
            nfc.disableReaderMode(activity);
        }
    }

    public void onAccountReceived(final Card myCard) {
        // This callback is run on a background thread, but updates to UI elements must be performed
        // on the UI thread.

        this.runOnUiThread(new Runnable() {
            public void run() {
                if(myCard != null) {
                    StartNewActivity(myCard);
                }

            }
        });
    }

    private final int ADD_TASK_REQUEST = 1;
    private void StartNewActivity(Card myCard){
        Intent intent = new Intent(MainActivity.this, CardActivity.class);
        intent.putExtra("Card", myCard);
        startActivityForResult(intent, ADD_TASK_REQUEST);
    }

}