package pfc.android.gestormensajeria.activities;

import pfc.android.gestormensajeria.R;
import pfc.android.gestormensajeria.parametros.ParametrosNavegacion;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

/**
 * ListActivity encargada de mostrar un listado de los contactos contenidos en la agenda del dispositivo móvil y devolver 
 * la información del contacto seleccionado en el listado
 * @author Francisco José Lamela
 *
 */
public class ListaContactosActivity extends ListActivity {

	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_contactos);
		setTitle(R.string.title_seleccionar_contacto);
		
		
		//Si nos pasan ids de contactos ya incluidos en el grupo los quitamos de la consulta
		String idsYaInluidos = null;
		Bundle b = this.getIntent().getExtras();
	    if(b != null)
	    	idsYaInluidos = b.getString(ParametrosNavegacion.IDS_CONTACTOS_INCLUIDOS);
	    
	    String filtroIds = "";
	    if(idsYaInluidos != null)
	    	filtroIds = " AND NOT _ID IN (" + idsYaInluidos + ")"; 
	    
	 
        //Consultamos los contactos ordenados por nombre
        Cursor mCursor = getContentResolver().query(Data.CONTENT_URI,
        											new String[] {Data._ID, Data.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE},
        											Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "' AND " + Phone.NUMBER + " IS NOT NULL" + filtroIds, 
        											null,
        											Data.DISPLAY_NAME + " ASC");
 
        startManagingCursor(mCursor);
 
        //Creamos y preparamos la lista
		ListAdapter adapter = new SimpleCursorAdapter(this, 
													  android.R.layout.simple_list_item_2,
													  mCursor,
													  new String[] { Data.DISPLAY_NAME, Phone.NUMBER },
													  new int[] { android.R.id.text1, android.R.id.text2 });
        setListAdapter(adapter);
		
	}

	
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent result = new Intent();
 
        //Obtenemos los datos seleccionados
        Cursor c = (Cursor) getListAdapter().getItem(position);

        //Metemos los datos que queremos enviar de vuelta
        result.putExtra(ParametrosNavegacion.CONTACTO_ID, c.getInt(c.getColumnIndex(Phone._ID)));
        result.putExtra(ParametrosNavegacion.CONTACTO_NUMERO, c.getString(c.getColumnIndex(Phone.NUMBER)));
        result.putExtra(ParametrosNavegacion.CONTACTO_NOMBRE, c.getString(c.getColumnIndex(Phone.DISPLAY_NAME)));

        //Indicamos el resultado de la consulta y pasamos los datos
        setResult(ParametrosNavegacion.CONTACTO_OK, result);
 
        //Cerramos la activity devolviendo el control
        finish();
	}
}
