Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.dss.invitup.vc.occasionPage.gallery;
- import android.Manifest;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.Fragment;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.widget.DefaultItemAnimator;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.StaggeredGridLayoutManager;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.Toast;
- import com.dss.invitup.MainActivity;
- import com.dss.invitup.R;
- import com.dss.invitup.adapters.GalleryAdapter;
- import com.dss.invitup.events.AddPicturePermissionEvent;
- import com.dss.invitup.events.GalleryFullImageItemClickedEvent;
- import com.dss.invitup.events.GetGalleryEntriesDeleteFinishedEvent;
- import com.dss.invitup.events.GetGalleryEntriesFinishedEvent;
- import com.dss.invitup.events.GetUpdateGalleryEntryFinishedEvent;
- import com.dss.invitup.events.MainActivityHideLoadingEvent;
- import com.dss.invitup.events.MainActivityShowLoadingEvent;
- import com.dss.invitup.models.serverResponses.OccasionGalleryEntriesResponse;
- import com.dss.invitup.singleton.AppController;
- import com.dss.invitup.singleton.InterfaceManager;
- import com.dss.invitup.singleton.ServerManager;
- import com.dss.invitup.singleton.SettingsManager;
- import com.dss.invitup.singleton.UploadManager;
- import com.dss.invitup.view.RobotoMediumTextView;
- import com.dss.invitup.view.RobotoRegularTextView;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import de.greenrobot.event.EventBus;
- import in.srain.cube.views.ptr.PtrClassicFrameLayout;
- import in.srain.cube.views.ptr.PtrFrameLayout;
- import in.srain.cube.views.ptr.PtrUIHandler;
- import in.srain.cube.views.ptr.indicator.PtrIndicator;
- import io.realm.Realm;
- /**
- * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
- */
- public class GalleryFragment extends Fragment{
- PtrClassicFrameLayout ptrClassicFrameLayout;
- RecyclerView recyclerView;
- ImageView addAttachmentImageView,
- attachmentHolderImageView,
- cancelAttachmentImageView,
- sendAttachmentImageView;
- RobotoMediumTextView imageNameTextView;
- LinearLayout attachmentLinearLayout;
- RobotoRegularTextView emptyTextView;
- Realm realm;
- GalleryAdapter galleryAdapter;
- OccasionGalleryEntriesResponse occasionGalleryEntriesResponse;
- StaggeredGridLayoutManager staggeredGridLayoutManager;
- int imageHeight=0, imageWidth=0;
- String currentOccasionId = "";
- Uri imageURI;
- File photoFile = null;
- String mCurrentPhotoPath;
- static final int PHOTO_FROM_CAMERA = 0;
- static final int PHOTO_FROM_ALBUM = 1;
- boolean isHasLocalData = false, isEligibleToTakePicture = false;
- MainActivity mainActivity;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_gallery, container, false);
- if(!EventBus.getDefault().isRegistered(this)){
- EventBus.getDefault().register(this);
- }
- ptrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_gallery_ptrClassicFrameLayout);
- recyclerView = (RecyclerView) view.findViewById(R.id.fragment_gallery_recyclerView);
- attachmentLinearLayout = (LinearLayout) view.findViewById(R.id.fragment_gallery_attachmentLinearLayout);
- addAttachmentImageView = (ImageView) view.findViewById(R.id.fragment_gallery_addButtonImageView);
- attachmentHolderImageView = (ImageView) view.findViewById(R.id.fragment_gallery_attachmentHolderImageView);
- cancelAttachmentImageView = (ImageView) view.findViewById(R.id.fragment_gallery_cancelAttachmentImageView);
- sendAttachmentImageView = (ImageView) view.findViewById(R.id.fragment_gallery_sendAttachmentImageView);
- imageNameTextView = (RobotoMediumTextView) view.findViewById(R.id.fragment_gallery_imageNameTextView);
- emptyTextView = (RobotoRegularTextView) view.findViewById(R.id.fragment_gallery_emptyTextView);
- staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
- recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setLayoutManager(staggeredGridLayoutManager);
- currentOccasionId =SettingsManager.getInstance().getCurrentOccasion().getId();
- galleryAdapter = new GalleryAdapter(getActivity(),listenerInterface);
- realm = AppController.getInstance().getRealm();
- mainActivity = (MainActivity) getActivity();
- return view;
- }
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- mainActivity.position = 2;
- if (SettingsManager.getInstance().getCurrentUserRole() == SettingsManager.UserRole.INVITED) {
- addAttachmentImageView.setVisibility(View.GONE);
- } else {
- addAttachmentImageView.setVisibility(View.VISIBLE);
- }
- addAttachmentImageView.setOnClickListener(addAttachmentListener);
- cancelAttachmentImageView.setOnClickListener(cancelAttachmentListener);
- sendAttachmentImageView.setOnClickListener(sendAttachmentListener);
- recyclerView.setAdapter(galleryAdapter);
- recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- }
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- staggeredGridLayoutManager.invalidateSpanAssignments();
- ptrClassicFrameLayout.setEnabled(false);
- if(((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPositions(null)[0] == 0 && ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPositions(null)[1] == 1){
- ptrClassicFrameLayout.setEnabled(true);
- }
- }
- });
- ptrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
- @Override
- public void onUIReset(PtrFrameLayout frame) {
- }
- @Override
- public void onUIRefreshPrepare(PtrFrameLayout frame) {
- }
- @Override
- public void onUIRefreshBegin(PtrFrameLayout frame) {
- galleryAdapter.clearAdapter();
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getAllOccasionGallery(SettingsManager.getInstance().getCurrentOccasion().getId());
- }
- @Override
- public void onUIRefreshComplete(PtrFrameLayout frame) {
- }
- @Override
- public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
- }
- });
- reloadLocalData();
- }
- @Override
- public void onDestroy(){
- super.onDestroy();
- if(EventBus.getDefault().isRegistered(this)) {
- EventBus.getDefault().unregister(this);
- }
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- Bitmap bmp = null;
- if(resultCode == getActivity().RESULT_OK) {
- if (requestCode == 0) {
- Uri selectedImageURI = Uri.fromFile(photoFile);
- Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
- try {
- if (selectedImageURI != null) {
- bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImageURI);
- } else {
- bitmap = (Bitmap) data.getExtras().getParcelable("data");
- }
- } catch (IOException e) {
- Log.d("error", " IOException");
- }
- bmp = bitmap;
- imageURI = getImageUri(bitmap);
- }else if (requestCode == 1) {
- Uri selectedImageURI = data.getData();
- try {
- if (selectedImageURI != null) {
- bmp = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImageURI);
- } else {
- bmp = (Bitmap) data.getExtras().get("data");
- }
- imageURI = getImageUri(bmp);
- } catch (IOException e) {
- Log.d("error", " IOException");
- }
- }
- attachmentHolderImageView.setImageBitmap(bmp);
- attachmentLinearLayout.setVisibility(View.VISIBLE);
- sendAttachmentImageView.setEnabled(true);
- String picturePath = InterfaceManager.sharedInstance().getFileGalleryPath(getActivity(), imageURI);
- String[] pictureName = picturePath.split("/");
- imageNameTextView.setText(pictureName[pictureName.length-1]);
- }
- }
- ImageView.OnClickListener addAttachmentListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- final CharSequence options[] = new CharSequence[]{getActivity().getResources().getString(R.string.builder_take_picture),
- getActivity().getResources().getString(R.string.builder_choose_picture)};
- builder.setTitle(getActivity().getResources().getString(R.string.builder_attach_picture_gallery));
- builder.setItems(options, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- photoFile = null;
- try {
- photoFile = createImageFile();
- } catch (IOException ex) {
- Log.e("err", ex.toString());
- }
- takePhoto(which);
- }
- });
- builder.show();
- }
- };
- ImageView.OnClickListener sendAttachmentListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- sendAttachmentImageView.setEnabled(false);
- String filename = System.currentTimeMillis() + ".png";
- File imageFile = new File(getActivity().getCacheDir(), filename);
- try {
- imageFile = InterfaceManager.sharedInstance().convertUriImageToFile(getActivity(), imageURI, imageFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
- if (imageFile != null) {
- String imageUrlFromS3 = UploadManager.getInstance().uploadImageAndGetImageURLFromGallery(currentOccasionId, imageFile);
- if(imageWidth!=0 && imageHeight!=0) {
- ServerManager.getInstance().updateOccasionGallery(currentOccasionId, imageUrlFromS3, imageWidth, imageHeight);
- }
- }
- }
- };
- ImageView.OnClickListener cancelAttachmentListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- attachmentHolderImageView.setImageDrawable(null);
- attachmentLinearLayout.setVisibility(View.GONE);
- Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.cancellation_add_picture), Toast.LENGTH_SHORT).show();
- }
- };
- private GalleryAdapter.GalleryAdapterListenerInterface listenerInterface = new GalleryAdapter.GalleryAdapterListenerInterface() {
- @Override
- public void onImageOpenTapped(String imageURL, String galleryEntryId, String ownerId) {
- EventBus.getDefault().post(new GalleryFullImageItemClickedEvent(imageURL, galleryEntryId, ownerId));
- }
- };
- public void reloadLocalData(){
- occasionGalleryEntriesResponse = realm.where(OccasionGalleryEntriesResponse.class).equalTo("id",currentOccasionId).findFirst();
- if(occasionGalleryEntriesResponse!=null){
- if(occasionGalleryEntriesResponse.getOccasionGalleryEntry().size()!=0){
- isHasLocalData = true;
- emptyTextView.setVisibility(View.GONE);
- galleryAdapter.updateAdapter(occasionGalleryEntriesResponse.getOccasionGalleryEntry());
- }else{
- isHasLocalData = false;
- emptyTextView.setVisibility(View.VISIBLE);
- }
- }else{
- isHasLocalData = false;
- emptyTextView.setVisibility(View.VISIBLE);
- }
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getAllOccasionGallery(SettingsManager.getInstance().getCurrentOccasion().getId());
- }
- public void takePhoto(int which){
- switch (which) {
- case 0:
- if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
- if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(getActivity(),
- new String[]{Manifest.permission.CAMERA,
- Manifest.permission.WRITE_EXTERNAL_STORAGE},
- 0);
- return;
- } else {
- ActivityCompat.requestPermissions(getActivity(),
- new String[]{Manifest.permission.CAMERA},
- 0);
- return;
- }
- } else {
- if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(getActivity(),
- new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
- 0);
- return;
- }else{
- isEligibleToTakePicture = true;
- }
- }
- if(isEligibleToTakePicture){
- Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- if (photoFile != null) {
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
- startActivityForResult(cameraIntent, PHOTO_FROM_CAMERA);
- }
- }
- break;
- case 1:
- if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(getActivity(),
- new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
- 1);
- return;
- }else{
- isEligibleToTakePicture = true;
- }
- if(isEligibleToTakePicture){
- Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- startActivityForResult(galleryIntent, PHOTO_FROM_ALBUM);
- }
- break;
- }
- }
- private File createImageFile() throws IOException {
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
- String imageFileName = "PNG_" + timeStamp + "_";
- File storageDir = Environment.getExternalStoragePublicDirectory(
- Environment.DIRECTORY_PICTURES);
- File image = File.createTempFile(
- imageFileName, ".png", storageDir
- );
- mCurrentPhotoPath = "file:" + image.getAbsolutePath();
- return image;
- }
- private Uri getImageUri(Bitmap inImage) {
- ByteArrayOutputStream bytes = new ByteArrayOutputStream();
- inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
- String path = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), inImage, "Title", null);
- imageWidth = inImage.getWidth();
- imageHeight = inImage.getHeight();
- return Uri.parse(path);
- }
- public void onEvent(GetGalleryEntriesDeleteFinishedEvent event){
- EventBus.getDefault().post(new MainActivityHideLoadingEvent());
- if(event.errorMessage.equalsIgnoreCase("")){
- attachmentHolderImageView.setImageDrawable(null);
- attachmentLinearLayout.setVisibility(View.GONE);
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getAllOccasionGallery(SettingsManager.getInstance().getCurrentOccasion().getId());
- }else{
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
- sendAttachmentImageView.setEnabled(true);
- }
- }
- public void onEvent(GetGalleryEntriesFinishedEvent event){
- ptrClassicFrameLayout.refreshComplete();
- EventBus.getDefault().post(new MainActivityHideLoadingEvent());
- if(event.occasionGalleryEntriesResponse!=null){
- if(event.occasionGalleryEntriesResponse.getOccasionGalleryEntry().size()!=0){
- emptyTextView.setVisibility(View.GONE);
- occasionGalleryEntriesResponse = event.occasionGalleryEntriesResponse;
- galleryAdapter.updateAdapter(occasionGalleryEntriesResponse.getOccasionGalleryEntry());
- }else{
- emptyTextView.setVisibility(View.VISIBLE);
- }
- }else{
- if(!isHasLocalData){
- emptyTextView.setVisibility(View.VISIBLE);
- }
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
- }
- }
- public void onEvent(GetUpdateGalleryEntryFinishedEvent event){
- EventBus.getDefault().post(new MainActivityHideLoadingEvent());
- if(event.errorMessage.equalsIgnoreCase("")){
- attachmentHolderImageView.setImageDrawable(null);
- attachmentLinearLayout.setVisibility(View.GONE);
- EventBus.getDefault().post(new MainActivityShowLoadingEvent());
- ServerManager.getInstance().getAllOccasionGallery(SettingsManager.getInstance().getCurrentOccasion().getId());
- }else{
- InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
- sendAttachmentImageView.setEnabled(true);
- }
- }
- public void onEvent(AddPicturePermissionEvent event){
- isEligibleToTakePicture = event.isEligible;
- if(isEligibleToTakePicture){
- takePhoto(event.requestCode);
- }
- }
- }
Add Comment
Please, Sign In to add comment