Remove ViewImgurGifFragment.

This commit is contained in:
Alex Ning 2020-06-04 10:05:57 +08:00
parent bb42cb713d
commit 4927f82786
5 changed files with 8 additions and 292 deletions

View File

@ -33,7 +33,6 @@ import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.API.ImgurAPI;
import ml.docilealligator.infinityforreddit.ContentFontStyle;
import ml.docilealligator.infinityforreddit.FontStyle;
import ml.docilealligator.infinityforreddit.Fragment.ViewImgurGifFragment;
import ml.docilealligator.infinityforreddit.Fragment.ViewImgurImageFragment;
import ml.docilealligator.infinityforreddit.Fragment.ViewImgurVideoFragment;
import ml.docilealligator.infinityforreddit.ImgurMedia;
@ -178,17 +177,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity {
@Override
public void onPageSelected(int position) {
switch (images.get(position).getType()) {
case ImgurMedia.TYPE_GIF:
setTitle("GIF " + (position + 1) + "/" + images.size());
break;
case ImgurMedia.TYPE_VIDEO:
setTitle("Video "+ (position + 1) + "/" + images.size());
break;
default:
setTitle("Image " + (position + 1) + "/" + images.size());
}
setToolbarTitle(position);
}
@Override
@ -200,16 +189,10 @@ public class ViewImgurMediaActivity extends AppCompatActivity {
}
private void setToolbarTitle(int position) {
switch (images.get(position).getType()) {
case ImgurMedia.TYPE_GIF:
setTitle("GIF " + (position + 1) + "/" + images.size());
break;
case ImgurMedia.TYPE_VIDEO:
setTitle("Video "+ (position + 1) + "/" + images.size());
break;
default:
setTitle("Image " + (position + 1) + "/" + images.size());
if (images.get(position).getType() == ImgurMedia.TYPE_VIDEO) {
setTitle(getString(R.string.view_imgur_media_activity_video_label, position + 1, images.size()));
} else {
setTitle(getString(R.string.view_imgur_media_activity_image_label, position + 1, images.size()));
}
}
@ -250,12 +233,6 @@ public class ViewImgurMediaActivity extends AppCompatActivity {
bundle.putParcelable(ViewImgurVideoFragment.EXTRA_IMGUR_VIDEO, imgurMedia);
fragment.setArguments(bundle);
return fragment;
} else if (imgurMedia.getType() == ImgurMedia.TYPE_GIF) {
ViewImgurGifFragment fragment = new ViewImgurGifFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(ViewImgurGifFragment.EXTRA_IMGUR_GIF, imgurMedia);
fragment.setArguments(bundle);
return fragment;
} else {
ViewImgurImageFragment fragment = new ViewImgurImageFragment();
Bundle bundle = new Bundle();

View File

@ -1,222 +0,0 @@
package ml.docilealligator.infinityforreddit.Fragment;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
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.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.FileProvider;
import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import java.io.File;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.AsyncTask.SaveGIFToFileAsyncTask;
import ml.docilealligator.infinityforreddit.BuildConfig;
import ml.docilealligator.infinityforreddit.ImgurMedia;
import ml.docilealligator.infinityforreddit.R;
import pl.droidsonroids.gif.GifImageView;
/**
* A simple {@link Fragment} subclass.
*/
public class ViewImgurGifFragment extends Fragment {
public static final String EXTRA_IMGUR_GIF = "EIG";
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
@BindView(R.id.progress_bar_view_imgur_gif_fragment)
ProgressBar progressBar;
@BindView(R.id.image_view_view_imgur_gif_fragment)
GifImageView imageView;
@BindView(R.id.load_image_error_linear_layout_view_imgur_gif_fragment)
LinearLayout errorLinearLayout;
private Activity activity;
private RequestManager glide;
private ImgurMedia imgurMedia;
private boolean isActionBarHidden = false;
private boolean isDownloading = false;
public ViewImgurGifFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_view_imgur_gif, container, false);
ButterKnife.bind(this, rootView);
setHasOptionsMenu(true);
imgurMedia = getArguments().getParcelable(EXTRA_IMGUR_GIF);
glide = Glide.with(activity);
loadGif();
return rootView;
}
private void loadGif() {
glide.load(imgurMedia.getLink()).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
errorLinearLayout.setVisibility(View.VISIBLE);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
}).into(imageView);
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.view_imgur_image_fragments, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_download_view_imgur_image_fragments:
return true;
case R.id.action_share_view_imgur_image_fragments:
Toast.makeText(activity, R.string.save_gif_before_sharing, Toast.LENGTH_SHORT).show();
glide.asGif().load(imgurMedia.getLink()).listener(new RequestListener<GifDrawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
if (activity.getExternalCacheDir() != null) {
new SaveGIFToFileAsyncTask(resource, activity.getExternalCacheDir().getPath(),
imgurMedia.getFileName(),
new SaveGIFToFileAsyncTask.SaveGIFToFileAsyncTaskListener() {
@Override
public void saveSuccess(File imageFile) {
Uri uri = FileProvider.getUriForFile(activity,
BuildConfig.APPLICATION_ID + ".provider", imageFile);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, getString(R.string.share)));
}
@Override
public void saveFailed() {
Toast.makeText(activity,
R.string.cannot_save_gif, Toast.LENGTH_SHORT).show();
}
}).execute();
} else {
Toast.makeText(activity,
R.string.cannot_get_storage, Toast.LENGTH_SHORT).show();
}
return false;
}
}).submit();
return true;
}
return false;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE && grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(activity, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
} else if (grantResults[0] == PackageManager.PERMISSION_GRANTED && isDownloading) {
download();
}
isDownloading = false;
}
}
private void download() {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(imgurMedia.getLink()));
request.setTitle(imgurMedia.getFileName());
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
//Android Q support
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, imgurMedia.getFileName());
} else {
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
File directory = new File(path + "/Infinity/");
boolean saveToInfinityFolder = true;
if (!directory.exists()) {
if (!directory.mkdir()) {
saveToInfinityFolder = false;
}
} else {
if (directory.isFile()) {
if (!(directory.delete() && directory.mkdir())) {
saveToInfinityFolder = false;
}
}
}
if (saveToInfinityFolder) {
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES + "/Infinity/", imgurMedia.getFileName());
} else {
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, imgurMedia.getFileName());
}
}
DownloadManager manager = (DownloadManager) activity.getSystemService(Context.DOWNLOAD_SERVICE);
if (manager == null) {
Toast.makeText(activity, R.string.download_failed, Toast.LENGTH_SHORT).show();
return;
}
manager.enqueue(request);
Toast.makeText(activity, R.string.download_started, Toast.LENGTH_SHORT).show();
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
activity = (Activity) context;
}
}

View File

@ -5,8 +5,7 @@ import android.os.Parcelable;
public class ImgurMedia implements Parcelable {
public static final int TYPE_IMAGE = 0;
public static final int TYPE_GIF = 1;
public static final int TYPE_VIDEO = 2;
public static final int TYPE_VIDEO = 1;
private String id;
private String title;
private String description;
@ -19,8 +18,6 @@ public class ImgurMedia implements Parcelable {
this.description = description;
if (type.contains("mp4")) {
this.type = TYPE_VIDEO;
} else if (type.contains("gif")) {
this.type = TYPE_GIF;
} else {
this.type = TYPE_IMAGE;
}

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragment.ViewImgurImageFragment">
<ProgressBar
android:id="@+id/progress_bar_view_imgur_gif_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<pl.droidsonroids.gif.GifImageView
android:id="@+id/image_view_view_imgur_gif_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/load_image_error_linear_layout_view_imgur_gif_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_error_outline_white_24dp"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@android:color/white"
android:text="@string/error_loading_gif_tap_to_retry"
android:textSize="?attr/font_default" />
</LinearLayout>
</RelativeLayout>

View File

@ -26,6 +26,8 @@
<string name="edit_multi_reddit_activity_label">Edit Multireddit</string>
<string name="selected_subeddits_activity_label">Selected Subreddits</string>
<string name="report_activity_label">Report</string>
<string name="view_imgur_media_activity_image_label">Image %1$d/%2$d</string>
<string name="view_imgur_media_activity_video_label">Video %1$d/%2$d</string>
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>