package com.sqrl.android_sqrl;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

// TODO:
// Read user list from sqrl.dat

public class loginActivity extends Activity {
	private String TAG = "loginAct";
	private List<String> users = new ArrayList<String>(); // List of usernames
	private Spinner username;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_login);    		
		
		username = (Spinner) findViewById(R.id.userSpinner);
		final EditText passEdit = (EditText) findViewById(R.id.editText1);
		
		// Add listener on loginbutton
		 final Button loginButton = (Button) findViewById(R.id.button1);
		 loginButton.setOnClickListener(new View.OnClickListener() {
	            public void onClick(View v) {	           
	            	String user = users.get(username.getSelectedItemPosition());
	            	String pass = passEdit.getText().toString();
	            	
	            	identity id = loadIdentity(user, pass);
	            	
	            	if (id == null) {
	            		Toast.makeText(getApplicationContext(), "Wrong password", Toast.LENGTH_LONG).show();
	            	}
	            	else
	            	{
	            		// Send object back to parent
	            		Intent output = new Intent();
	            		output.putExtra("id",id);
	            		setResult(Activity.RESULT_OK, output);
	            		finish();
	            	}
	            }  });
		 
		// Add listener on new user button button
		 final Button regButton = (Button) findViewById(R.id.button2);
		 regButton.setOnClickListener(new View.OnClickListener() {
	            public void onClick(View v) {	           
	             // Open new activity to register new user
	            	  Intent a = new Intent(loginActivity.this, newuserActivity.class);
	                  startActivity(a);
	            }  });
		 
		 
		// Check if an identity is created	
		 identity id = new identity();		 
		 if (!id.isIdentityCreated(this.getApplicationContext())) {
			 // If not open newidActivity
			 Intent a = new Intent(loginActivity.this, newuserActivity.class);
             startActivity(a);
		 }
		 
		 addUsersToSpinner();
	}
	
	private identity loadIdentity(String user, String passwd) {
		identity id = new identity();		
		
		// TODO: Check if that user exists
		
		// load the identity
	    id.load(this.getApplicationContext());
	    if (id.deriveMasterKey(passwd)) {  		 
	    	return id; 
		} 
	    	else
		{
			return null;
		}
	}
	
	  // adds items to username list (spinner)
	  public void addUsersToSpinner() {	 
		users.add("User 1");
		users.add("User 2");
		
		ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_spinner_item, users);
		dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		username.setAdapter(dataAdapter);
	  }

}