package com.example.lamano;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Spinner;

/* Clase de la actividad que se llama cuando un usuario inicia su sesión.
 * Esta actividad contiene dos contenedores para Fragments, uno es el menú
 * y el otro es donde se despliega la información.
 */
public class HomeActivity extends FragmentActivity 
		implements AmigosFragment.OnFriendSelectedListener, OnLocalSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_view);
        
        // El view tiene id fragment_container
        
        if(findViewById(R.id.fragment_container) != null) {
        	
        	
        	if(savedInstanceState != null) {
        		return;
        	}
        	
        	InicioFragment inicio = new InicioFragment();
        	
        	
        	FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
        	tr.add(R.id.fragment_container, inicio);
        	tr.commit();
        	
        	
        }
    }


    /* 
     * Método que reemplaza el Fragment de despliegue de información dependiendo
     * del botón presionado del menú
     */
	public void cambiarMenu(View view) {
    	
		if(view.getId() == R.id.button1) {
			System.out.println("Cambiando a inicio");
			InicioFragment inicio = new InicioFragment();
			FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
        	tr.replace(R.id.fragment_container, inicio);
        	tr.addToBackStack(null);
        	tr.commit();
		}
		else if(view.getId() == R.id.button2) {
			System.out.println("Cambiando a buscar");
			BuscarFragment buscar = new BuscarFragment();
			FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
        	tr.replace(R.id.fragment_container, buscar);
        	tr.addToBackStack(null);
        	tr.commit();
		}
		else if(view.getId() == R.id.button3) {
			System.out.println("Cambiando a amigos");
			AmigosFragment amigos = new AmigosFragment();
			FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
        	tr.replace(R.id.fragment_container, amigos);
        	tr.addToBackStack(null);
        	tr.commit();
		}
		else if(view.getId() == R.id.button4) {
			System.out.println("Cambiando a perfil");
			PerfilFragment perfil = new PerfilFragment();
			FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
        	tr.replace(R.id.fragment_container, perfil);
        	tr.addToBackStack(null);
        	tr.commit();
		}  
    	
    }

	/*
	 * Método que implementa la acción del botón Buscar.
	 * Reemplaza el Fragment por ResultadoFragment con el nombre de la ubicación a buscar
	 */
	public void buscar(View view) {
		Spinner sp = (Spinner)findViewById(R.id.buscarSpinner);
		String r = sp.getSelectedItem().toString();
		ResultadoFragment rf = new ResultadoFragment();
		rf.setFilter(r);
		FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
    	tr.replace(R.id.fragment_container, rf);
    	tr.addToBackStack(null);
    	tr.commit();
	}



	/*
	 * Método que implementa la interfaz OnFriendSelectedListener
	 * Reacciona al oprimir un nombre de la lista de amigos para desplegar
	 * un Fragment con el perfil de ese Amigo
	 */
	@Override
	public void onFriendSelected(String name) {
		AmigoFragment amigo = new AmigoFragment();
		amigo.setName(name);
		FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
    	tr.replace(R.id.fragment_container, amigo);
    	tr.addToBackStack(null);
    	tr.commit();
		
	}

	/*
	 * Método que implementa la interfaz OnLocalSelectedListener
	 * Reacciona al oprimir un nombre de la lista de locales para desplegar
	 * un Fragment con el perfil de ese Local
	 */
	@Override
	public void OnLocalSelected(String name) {
		LocalFragment local = new LocalFragment();
		local.setName(name);
		FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
    	tr.replace(R.id.fragment_container, local);
    	tr.addToBackStack(null);
    	tr.commit();
		
	}
	
	/*
	 * Método que implementa la acción del botón Salir.
	 * Termina HomeActivity e inicia MainActivity
	 */
	public void logout(View v) {
		Intent i = new Intent(this, MainActivity.class);
		startActivity(i);
		this.finish();
	}

}
