package com.ramos.munoz.tesis;

import java.util.ArrayList;

import org.apache.http.NameValuePair;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.TableLayout.LayoutParams;

public class PerfilActivity extends Activity {

    private ArrayList<NameValuePair> datos;
    public static final int RESPUESTA_PERFIL = 1;
    private ListView lista;
    private PerfilTab1Adaptador adaptador;
    private ArrayList<Perfil> perfiles;

    @Override
    public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.perfil_activity);
	inicializarComponentes();

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if (requestCode == RESPUESTA_PERFIL) {
	    if (resultCode == RESPUESTA_PERFIL) {
		iniciarLista();
	    }
	}
    }

    private void inicializarComponentes() {
	lista = (ListView) findViewById(R.id.viewListTab1);
	perfiles = new ArrayList<Perfil>();
	adaptador = new PerfilTab1Adaptador(this, R.layout.perfil_listview, perfiles);
	iniciarLista();
    }

    private void iniciarLista() {

	datos = Usuario.getDatos();
	adaptador.clear();
	perfiles.add(new Perfil("Usuario", datos.get(Usuario.INDICE_USUARIO).getValue()));
	perfiles.add(new Perfil("Contraseņa", datos.get(Usuario.INDICE_CONTRASENA).getValue()));
	perfiles.add(new Perfil("Correo", datos.get(Usuario.INDICE_EMAIL).getValue()));
	perfiles.add(new Perfil("Celular", datos.get(Usuario.INDICE_CELULAR).getValue()));
	perfiles.add(new Perfil("Nombre", datos.get(Usuario.INDICE_NOMBRE).getValue()));
	perfiles.add(new Perfil("Apellido paterno", datos.get(Usuario.INDICE_AP_PATERNO).getValue()));
	perfiles.add(new Perfil("Apellido materno", datos.get(Usuario.INDICE_AP_MATERNO).getValue()));
	adaptador.notifyDataSetChanged();
	lista.setAdapter(adaptador);
    }

    class PerfilTab1Adaptador extends ArrayAdapter<Perfil> {

	private Context contexto;
	private int layout;
	private ArrayList<Perfil> datos = null;
	private PerfilHolder holder;
	private Perfil perfiles;
	private OnClickListener imageButtonClickListener;

	public PerfilTab1Adaptador(Context context, int layout, ArrayList<Perfil> perfil) {
	    super(context, layout, perfil);
	    this.layout = layout;
	    this.contexto = context;
	    this.datos = perfil;
	    imageButtonClickListener = new OnClickListener() {

		public void onClick(View v) {
		    Perfil perfs = datos.get(v.getId());
		    String texto = perfs.valorCampo;
		    String campo = perfs.campo;
		    Bundle bolsa = new Bundle();
		    bolsa.putString("valorCampo", texto);
		    bolsa.putString("campo", campo);
		    Intent ventana = new Intent(contexto, PerfilEditarCampo.class);
		    ventana.putExtras(bolsa);
		    startActivityForResult(ventana, RESPUESTA_PERFIL);
		}
	    };

	}

	@Override
	public View getView(int pos, View v, ViewGroup parent) {
	    View fila = v;
	    holder = new PerfilHolder();

	    LayoutInflater inflater = (LayoutInflater) contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	    fila = inflater.inflate(layout, parent, false);
	    holder = new PerfilHolder();
	    holder.campo = (TextView) fila.findViewById(R.id.txtFila);
	    holder.valorCampo = (TextView) fila.findViewById(R.id.txtValor);

	    perfiles = datos.get(pos);
	    String campo = perfiles.campo;
	    String valorCampo = perfiles.valorCampo;
	    holder.campo.setText(campo);
	    holder.valorCampo.setText(valorCampo);
	    holder.valorCampo.setId(pos);
	    if (perfiles.campo.equals("Contraseņa")) {
		holder.valorCampo.setTransformationMethod(new PasswordTransformationMethod());
	    }
	    if (!perfiles.campo.equals("Usuario")) {
		holder.editar = new ImageButton(contexto);
		holder.editar.setId(pos);
		holder.editar.setImageResource(R.drawable.ic_action_edit);

		RelativeLayout.LayoutParams parametros = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
			RelativeLayout.LayoutParams.WRAP_CONTENT);
		parametros.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
		parametros.addRule(RelativeLayout.CENTER_VERTICAL);

		RelativeLayout layout = (RelativeLayout) fila.findViewById(R.id.layoutPerfilTab1);
		holder.editar.setLayoutParams(parametros);
		holder.editar.setOnClickListener(imageButtonClickListener);
		layout.addView(holder.editar);
	    }
	    return fila;
	}
    }

    class PerfilHolder {
	TextView campo;
	TextView valorCampo;
	ImageButton editar;
    }

    class Perfil {
	public String campo;
	public String valorCampo;

	public Perfil(String campo, String valorCampo) {
	    this.campo = campo;
	    this.valorCampo = valorCampo;
	}
    }

}
