diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewImgurMediaActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewImgurMediaActivity.java index d0f0071f..e04d6048 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewImgurMediaActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewImgurMediaActivity.java @@ -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(); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ViewImgurGifFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ViewImgurGifFragment.java deleted file mode 100644 index bc552268..00000000 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ViewImgurGifFragment.java +++ /dev/null @@ -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() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); - return false; - } - - @Override - public boolean onResourceReady(Drawable resource, Object model, Target 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() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - return false; - } - - @Override - public boolean onResourceReady(GifDrawable resource, Object model, Target 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; - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ImgurMedia.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ImgurMedia.java index 6ae818b1..d2979b7f 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ImgurMedia.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ImgurMedia.java @@ -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; } diff --git a/app/src/main/res/layout/fragment_view_imgur_gif.xml b/app/src/main/res/layout/fragment_view_imgur_gif.xml deleted file mode 100644 index 4a0697f4..00000000 --- a/app/src/main/res/layout/fragment_view_imgur_gif.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e4bf34b2..7194dcf4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -26,6 +26,8 @@ Edit Multireddit Selected Subreddits Report + Image %1$d/%2$d + Video %1$d/%2$d Open navigation drawer Close navigation drawer