package com.odc.beachodc.fragments; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.daimajia.slider.library.Animations.DescriptionAnimation; import com.daimajia.slider.library.SliderLayout; import com.daimajia.slider.library.SliderTypes.BaseSliderView; import com.daimajia.slider.library.SliderTypes.TextSliderView; import com.facebook.widget.ProfilePictureView; import com.kbeanie.imagechooser.api.ChooserType; import com.kbeanie.imagechooser.api.ChosenImage; import com.kbeanie.imagechooser.api.ImageChooserListener; import com.kbeanie.imagechooser.api.ImageChooserManager; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.odc.beachodc.R; import com.odc.beachodc.adapters.ComentariosAdapter; import com.odc.beachodc.db.models.Imagen; import com.odc.beachodc.utilities.AnimateFirstDisplayListener; import com.odc.beachodc.utilities.DescriptionAnimationSlider; import com.odc.beachodc.utilities.Image; import com.odc.beachodc.utilities.Utilities; import com.odc.beachodc.utilities.ValidacionPlaya; import com.odc.beachodc.webservices.Request; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; 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 ImagenesPlayaFragment extends Fragment implements BaseSliderView.OnSliderClickListener, ImageChooserListener { View rootView; TextView nombreAutor; ProfilePictureView autorProfile; private SliderLayout mSlider; Fragment fragment; RelativeLayout no_photos; public ImagenesPlayaFragment() { // Se ejecuta antes que el onCreateView fragment = this; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (rootView != null) { ViewGroup parent = (ViewGroup) rootView.getParent(); if (parent != null) parent.removeView(rootView); } try { rootView = inflater.inflate(R.layout.fragment_imagenes_playa, container, false); } catch (InflateException e) {} // Empezar aqui a trabajar con la UI nombreAutor = (TextView) rootView.findViewById(R.id.nombreAutorTV); autorProfile = (ProfilePictureView) rootView.findViewById(R.id.fotoAutorImage); no_photos = (RelativeLayout) rootView.findViewById(R.id.no_photos); mSlider = (SliderLayout) rootView.findViewById(R.id.slider); updateImages(false); Button uploadBTN = (Button) rootView.findViewById(R.id.uploadBTN); uploadBTN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (Utilities.isAnonymous(getActivity())){ Utilities.goToLoginAsking(getActivity()); } else { if (Utilities.haveInternet(getActivity())) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(getString(R.string.description_choose_image)) .setTitle(getString(R.string.title_choose_image)) .setPositiveButton(getString(R.string.choose_gallery), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { chooseImage(); dialog.cancel(); } }) .setNegativeButton(getString(R.string.choose_camera), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { takePicture(); dialog.cancel(); } }); builder.show(); } else { Crouton.makeText(getActivity(), getString(R.string.no_internet), Style.ALERT).show(); } } } }); Button reloadBTN = (Button) rootView.findViewById(R.id.updateBTN); reloadBTN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { updateImages(true); } }); return rootView; } @Override public void onSliderClick(BaseSliderView slider) { // Al hacer click sobre la imagen la abrimos en el Gallery de Android Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(slider.getBundle().get("link").toString()),"image/*"); startActivity(intent); } private void chooseImage() { Image.chooserType = ChooserType.REQUEST_PICK_PICTURE; Image.imageChooserManager = new ImageChooserManager(this, ChooserType.REQUEST_PICK_PICTURE, "ShorcialPhotos", true); Image.imageChooserManager.setImageChooserListener(this); try { Image.filePath = Image.imageChooserManager.choose(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } private void takePicture() { Image.chooserType = ChooserType.REQUEST_CAPTURE_PICTURE; Image.imageChooserManager = new ImageChooserManager(this,ChooserType.REQUEST_CAPTURE_PICTURE, "ShorcialPhotos", true); Image.imageChooserManager.setImageChooserListener(this); try { Image.filePath = Image.imageChooserManager.choose(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onImageChosen(final ChosenImage image) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { if (image != null) { if (Utilities.haveInternet(getActivity())) { ProgressDialog pd = ProgressDialog.show(getActivity(), getResources().getText(R.string.esperar), getResources().getText(R.string.esperar)); pd.setIndeterminate(false); pd.setCancelable(true); Bitmap bitmap = null; File fichero = new File(image.getFilePathOriginal()); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), Uri.fromFile(fichero)); } catch (Exception e) { } if (bitmap == null) { Crouton.makeText(getActivity(), getString(R.string.error_unknown), Style.ALERT).show(); pd.dismiss(); return; } pd.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { updateImages(false); } }); Image.enviarImagen(getActivity(), bitmap, pd); try { // Para borrar la foto (y sus Thumbails que crea la libreria), y asi no almacenarlas // TODO: En el futuro ¿Permitir almacenarlas en funcion de lo que diga el usuario? File carpeta = fichero.getParentFile(); for (File file : carpeta.listFiles()) { file.delete(); } } catch (Exception e) { } } else { Crouton.makeText(getActivity(), getString(R.string.no_internet), Style.ALERT).show(); } } } }); } @Override public void onError(final String reason) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getActivity(), reason, Toast.LENGTH_LONG).show(); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == getActivity().RESULT_OK && (requestCode == ChooserType.REQUEST_PICK_PICTURE || requestCode == ChooserType.REQUEST_CAPTURE_PICTURE)) { if (Image.imageChooserManager == null) { Image.reinitializeImageChooser(getActivity(), "ShorcialPhotos", this); } Image.imageChooserManager.submit(requestCode, data); } } private void updateImages (boolean isButton){ mSlider.removeAllSliders(); if ((ValidacionPlaya.imagenes != null) && (ValidacionPlaya.imagenes.size() > 0)){ no_photos.setVisibility(View.GONE); if (Image.imageChooserManager == null) { Image.reinitializeImageChooser(getActivity(), "ShorcialPhotos", this); } for (Imagen imagen : ValidacionPlaya.imagenes) { TextSliderView textSliderView = new TextSliderView(getActivity()); // initialize a SliderLayout textSliderView .description(Utilities.formatFechaNotHour(imagen.fecha)) .image(imagen.link) .setScaleType(BaseSliderView.ScaleType.CenterInside) .setOnSliderClickListener(this); textSliderView.getBundle().putString("link", imagen.link); textSliderView.getBundle().putString("comentario", imagen.comentario); textSliderView.getBundle().putString("idfb", imagen.idfbautor); textSliderView.getBundle().putString("nombrefb", imagen.nombreautor); mSlider.addSlider(textSliderView); } mSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); mSlider.setPresetTransformer(SliderLayout.Transformer.Tablet); if (ValidacionPlaya.imagenes.size() > 1) { DescriptionAnimationSlider descriptionAnimationSlider = new DescriptionAnimationSlider(); descriptionAnimationSlider.setParams(mSlider, autorProfile, nombreAutor); mSlider.setCustomAnimation(descriptionAnimationSlider); mSlider.setDuration(6000); } else { mSlider.stopAutoCycle(); autorProfile.setProfileId(mSlider.getCurrentSlider().getBundle().get("idfb").toString()); nombreAutor.setText(mSlider.getCurrentSlider().getBundle().get("nombrefb").toString()); } } else { if (isButton) { ProgressDialog pd = ProgressDialog.show(getActivity(), getResources().getText(R.string.esperar), getResources().getText(R.string.esperar)); pd.setIndeterminate(false); pd.setCancelable(true); pd.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { if ((ValidacionPlaya.imagenes != null) && (ValidacionPlaya.imagenes.size() > 0)) { no_photos.setVisibility(View.VISIBLE); } } }); Request.getImagenesPlaya(getActivity(), ValidacionPlaya.playa.idserver, pd, null); } else { no_photos.setVisibility(View.VISIBLE); } } } }