package com.example.asamles.app.paint;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.asamles.app.R;
import com.example.asamles.app.constants.Constants;
import com.example.asamles.app.dialog.BlurredAlertDialog;
import com.example.asamles.app.paint.utils.PaintGalleryItem;
import com.example.asamles.app.saveload.SaveLoadFile;
import com.joanzapata.android.iconify.IconDrawable;
import com.joanzapata.android.iconify.Iconify;
import java.util.ArrayList;
public class PaintGallery extends Fragment {
public static final String IMAGES = "images";
private DoneFragmentListener doneListener = null;
private ArrayList<Integer> selectedList = new ArrayList<Integer>();
private int selected;
private ArrayList<PaintGalleryItem> imageList= new ArrayList<PaintGalleryItem>();
private Vibrator vibrator;
private GridView gridView;
private GalleryImageAdapter adapter;
public interface DoneFragmentListener {
void onDone(String tag, String image);
}
public void setOkFragmentListener(DoneFragmentListener doneListener) {
this.doneListener = doneListener;
}
public static PaintGallery newInstance(String[] imgs) {
PaintGallery fragment = new PaintGallery();
Bundle args = new Bundle();
args.putStringArray(IMAGES, imgs);
fragment.setArguments(args);
return fragment;
}
public PaintGallery() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String[] imgs = getArguments().getStringArray(IMAGES);
imageList = toPaintGalleryItem(imgs);
vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
setHasOptionsMenu(true);
View rootView = inflater.inflate(R.layout.paint_gallery, container, false);
if (rootView != null) {
gridView = (GridView) rootView.findViewById(R.id.gridView);
}
adapter = new GalleryImageAdapter(getActivity(), imageList);
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
if (doneListener != null) {
doneListener.onDone(getTag(), imageList.get(position).getImageName());
}
}
});
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
vibrator.vibrate(50);
ImageView image = (ImageView) view.findViewById(R.id.image_overflow);
if(imageList.get(position).getSelected()) {
imageList.get(position).setSelected(false);
selected--;
image.setVisibility(View.INVISIBLE);
selectedList.remove(Integer.valueOf(position));
} else {
imageList.get(position).setSelected(true);
selected++;
image.setVisibility(View.VISIBLE);
selectedList.add(position);
}
return true;
}
});
return rootView;
}
public ArrayList<PaintGalleryItem> toPaintGalleryItem(String[] imgs){
ArrayList<PaintGalleryItem> imageList = new ArrayList<PaintGalleryItem>();
PaintGalleryItem item;
for (String img : imgs) {
item = new PaintGalleryItem(img);
imageList.add(item);
// item = null;
}
return imageList;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.paint_gallery_menu, menu);
MenuItem delete = menu.findItem(R.id.action_delete);
if (delete != null) {
delete.setIcon(new IconDrawable(getActivity(), Iconify.IconValue.icon_trash)
.colorRes(R.color.grey_light)
.actionBarSize());
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_delete:
if(selected == 0){
Toast.makeText(getActivity(), getActivity().getString(R.string.nothing_to_remove), Toast.LENGTH_LONG).show();
} else {
checkDialog(getActivity().getString(R.string.paint_gallery_remove_title), String.format(getActivity().getString(R.string.paint_gallery_remove_message),"" + selected));
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void checkDialog(String title, String message) {
View v = getActivity().getWindow().getDecorView();
v.setId(1);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
BlurredAlertDialog newFragment = BlurredAlertDialog.newInstance(title, message);
newFragment.setBlurredAlertDialogListener(new BlurredAlertDialog.BlurredAlertDialogListener() {
@Override
public void onBlurredAlertDialogPositiveClick(DialogFragment dialog) {
Toast.makeText(getActivity(), "Removed " + selected + " images", Toast.LENGTH_LONG).show();
removeLoadFiles(selectedList);
selectedList.clear();
dialog.dismiss();
}
@Override
public void onBlurredAlertDialogNegativeClick(DialogFragment dialog) {
dialog.dismiss();
}
@Override
public void onBlurredAlertDialogCancel(DialogFragment dialog) {
dialog.dismiss();
}
});
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(1, newFragment).commit();
}
public void removeLoadFiles(ArrayList<Integer> list){
selected = 0;
for (Integer i : list) {
SaveLoadFile.removeFileFromPublicGallery(Constants.PAINT_GALLERY, imageList.get(i).getImageName());
}
String[] images = SaveLoadFile.loadAllPublicFiles(Constants.PAINT_GALLERY);
imageList = toPaintGalleryItem(images);
adapter = new GalleryImageAdapter(getActivity(), imageList);
adapter.notifyDataSetChanged();
gridView.invalidateViews();
gridView.setAdapter(adapter);
}
}