package com.odc.beachodc.fragments;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.facebook.rebound.BaseSpringSystem;
import com.facebook.rebound.SimpleSpringListener;
import com.facebook.rebound.Spring;
import com.facebook.rebound.SpringSystem;
import com.facebook.rebound.SpringUtil;
import com.facebook.widget.ProfilePictureView;
import com.odc.beachodc.activities.Playas;
import com.odc.beachodc.R;
import com.odc.beachodc.adapters.PlayasAdapter;
import com.odc.beachodc.db.models.Playa;
import com.odc.beachodc.utilities.Geo;
import com.odc.beachodc.utilities.Utilities;
import com.odc.beachodc.utilities.ValidacionPlaya;
import com.odc.beachodc.webservices.Request;
import java.util.ArrayList;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.Style;
/**
* Created by Paco on 7/01/14.
* Fragment que se encarga de Loguear al usuario, es el splash screen inicial de login
*/
public class MisDatosFragment extends Fragment {
ListView listView;
ArrayList<Playa> playas;
PlayasAdapter playasAdapter;
View rootView;
RelativeLayout noCheckins;
private final BaseSpringSystem mSpringSystem = SpringSystem.create();
private final ExampleSpringListener mSpringListener = new ExampleSpringListener();
private Spring mScaleSpring;
public MisDatosFragment() {
// Se ejecuta antes que el onCreateView
playas = new ArrayList<Playa>();
mScaleSpring = mSpringSystem.createSpring();
mScaleSpring.getSpringConfig().tension = 200;
mScaleSpring.getSpringConfig().friction = 4;
}
public void setPlayas(ArrayList<Playa> playas){
this.playas = playas;
if (this.listView != null) {
playasAdapter = new PlayasAdapter(getActivity(), Utilities.orderByDateCheckins(playas), true);
this.listView.setAdapter(playasAdapter);
playasAdapter.notifyDataSetChanged();
}
if (noCheckins != null){
if ((playas == null) || (playas.size() == 0)){
noCheckins.setVisibility(View.VISIBLE);
} else {
noCheckins.setVisibility(View.GONE);
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_misdatos, container, false);
// Empezar aqui a trabajar con la UI
final ProfilePictureView foto = (ProfilePictureView) rootView.findViewById(R.id.profilePicture);
TextView nombre = (TextView) rootView.findViewById(R.id.nombreUserTV);
TextView titleCheckins = (TextView) rootView.findViewById(R.id.title_last_checkins);
noCheckins = (RelativeLayout) rootView.findViewById(R.id.nocheckins);
try {
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/aSongforJenniferBold.ttf");
nombre.setTypeface(tf);
titleCheckins.setTypeface(tf);
foto.setCropped(true);
if (!Utilities.isAnonymous(getActivity())) {
foto.setProfileId(Utilities.getUserIdFacebook(getActivity()));
nombre.setText(Utilities.getUserNameFacebook(getActivity()));
} else {
nombre.setText(getString(R.string.anonymous));
}
} catch (Exception e){}
listView = (ListView) rootView.findViewById(R.id.listaPlayasUltimosCheckin);
playasAdapter = new PlayasAdapter(getActivity(), Utilities.orderByDateCheckins(playas), true);
if ((playas == null) || (playas.size() == 0)){
noCheckins.setVisibility(View.VISIBLE);
} else {
noCheckins.setVisibility(View.GONE);
}
listView.setAdapter(playasAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getActivity(), Playas.class);
Playa item = (Playa) listView.getItemAtPosition(i);
ValidacionPlaya.playa = item;
ValidacionPlaya.lanzadaVerPlaya = false;
ProgressDialog pd = ProgressDialog.show(getActivity(), getResources().getText(R.string.esperar), getResources().getText(R.string.esperar));
pd.setIndeterminate(false);
pd.setCancelable(true);
Request.getTemp(getActivity(), item.latitud, item.longitud, pd, intent);
Request.getComentariosPlaya(getActivity(), item.idserver, pd, intent);
Request.getImagenesPlaya(getActivity(), item.idserver, pd, intent);
if (Geo.isNearToMe(item.latitud, item.longitud))
Request.getMensajesBotella(getActivity(), item.idserver, pd, intent);
else
ValidacionPlaya.cargadosMensajesPlaya=true;
}
});
ImageView recargar = (ImageView) rootView.findViewById(R.id.recargarIV);
recargar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Utilities.isAnonymous(getActivity())){
Utilities.goToLoginAsking(getActivity());
} else {
if (Utilities.haveInternet(getActivity())) {
ValidacionPlaya.cargadaPlayas = true;
ProgressDialog pd = ProgressDialog.show(getActivity(), getResources().getText(R.string.esperar), getResources().getText(R.string.esperar));
pd.setIndeterminate(false);
pd.setCancelable(false);
pd.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
if (ValidacionPlaya.playasCheckins != null) {
setPlayas(ValidacionPlaya.playasCheckins);
playasAdapter.notifyDataSetChanged();
}
}
});
Request.getUltimosCheckins(getActivity(), pd);
} else {
Crouton.makeText(getActivity(), getString(R.string.no_internet), Style.ALERT).show();
}
}
}
});
ImageView gamification = (ImageView) rootView.findViewById(R.id.gamificationIcon);
mSpringListener.setImagen(gamification);
gamification.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mScaleSpring.setEndValue(1);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
mScaleSpring.setEndValue(0);
break;
}
return true;
}
});
return rootView;
}
@Override
public void onResume() {
super.onResume();
mScaleSpring.addListener(mSpringListener);
}
@Override
public void onPause() {
super.onPause();
mScaleSpring.removeListener(mSpringListener);
}
public class ExampleSpringListener extends SimpleSpringListener {
ImageView imagen;
public void setImagen(ImageView imagen) {
this.imagen = imagen;
}
@Override
public void onSpringUpdate(Spring spring) {
float mappedValue = (float) SpringUtil.mapValueFromRangeToRange(spring.getCurrentValue(), 0, 1, 1, 0.5);
imagen.setScaleX(mappedValue);
imagen.setScaleY(mappedValue);
}
}
}