mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-02-26 08:13:57 +01:00
Fix autoplay video continuing in background (#585)
Fix autoplay video continuing in background
This commit is contained in:
parent
228cc4bb75
commit
9ef1b4decd
@ -105,7 +105,7 @@ dependencies {
|
|||||||
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknifeVersion"
|
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknifeVersion"
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
def eventbusVersion = "3.2.0"
|
def eventbusVersion = "3.3.1"
|
||||||
implementation "org.greenrobot:eventbus:$eventbusVersion"
|
implementation "org.greenrobot:eventbus:$eventbusVersion"
|
||||||
annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbusVersion"
|
annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbusVersion"
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import android.net.Uri;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.text.util.Linkify;
|
import android.text.util.Linkify;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -206,6 +207,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
private Drawable mCommentIcon;
|
private Drawable mCommentIcon;
|
||||||
private float mScale;
|
private float mScale;
|
||||||
private ExoCreator mExoCreator;
|
private ExoCreator mExoCreator;
|
||||||
|
private boolean canStartActivity = true;
|
||||||
|
private boolean canPlayVideo = true;
|
||||||
|
|
||||||
public PostDetailRecyclerViewAdapter(AppCompatActivity activity, ViewPostDetailFragment fragment,
|
public PostDetailRecyclerViewAdapter(AppCompatActivity activity, ViewPostDetailFragment fragment,
|
||||||
Executor executor, CustomThemeWrapper customThemeWrapper,
|
Executor executor, CustomThemeWrapper customThemeWrapper,
|
||||||
@ -392,6 +395,10 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
mExoCreator = exoCreator;
|
mExoCreator = exoCreator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCanStartActivity(boolean canStartActivity) {
|
||||||
|
this.canStartActivity = canStartActivity;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemViewType(int position) {
|
public int getItemViewType(int position) {
|
||||||
switch (mPost.getPostType()) {
|
switch (mPost.getPostType()) {
|
||||||
@ -827,8 +834,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
if (holder instanceof PostDetailGalleryViewHolder) {
|
if (holder instanceof PostDetailGalleryViewHolder) {
|
||||||
String previewCaption = preview.getPreviewCaption();
|
String previewCaption = preview.getPreviewCaption();
|
||||||
String previewCaptionUrl = preview.getPreviewCaptionUrl();
|
String previewCaptionUrl = preview.getPreviewCaptionUrl();
|
||||||
boolean previewCaptionIsEmpty = android.text.TextUtils.isEmpty(previewCaption);
|
boolean previewCaptionIsEmpty = TextUtils.isEmpty(previewCaption);
|
||||||
boolean previewCaptionUrlIsEmpty = android.text.TextUtils.isEmpty(previewCaptionUrl);
|
boolean previewCaptionUrlIsEmpty = TextUtils.isEmpty(previewCaptionUrl);
|
||||||
if (!previewCaptionIsEmpty || !previewCaptionUrlIsEmpty) {
|
if (!previewCaptionIsEmpty || !previewCaptionUrlIsEmpty) {
|
||||||
((PostDetailGalleryViewHolder) holder).mCaptionConstraintLayout.setBackgroundColor(mCardViewColor & 0x0D000000); // Make 10% darker than CardViewColor
|
((PostDetailGalleryViewHolder) holder).mCaptionConstraintLayout.setBackgroundColor(mCardViewColor & 0x0D000000); // Make 10% darker than CardViewColor
|
||||||
((PostDetailGalleryViewHolder) holder).mCaptionConstraintLayout.setVisibility(View.VISIBLE);
|
((PostDetailGalleryViewHolder) holder).mCaptionConstraintLayout.setVisibility(View.VISIBLE);
|
||||||
@ -1083,6 +1090,10 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCanPlayVideo(boolean canPlayVideo) {
|
||||||
|
this.canPlayVideo = canPlayVideo;
|
||||||
|
}
|
||||||
|
|
||||||
public interface PostDetailRecyclerViewAdapterCallback {
|
public interface PostDetailRecyclerViewAdapterCallback {
|
||||||
void updatePost(Post post);
|
void updatePost(Post post);
|
||||||
}
|
}
|
||||||
@ -1643,36 +1654,39 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
});
|
});
|
||||||
|
|
||||||
fullscreenButton.setOnClickListener(view -> {
|
fullscreenButton.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
if (canStartActivity) {
|
||||||
if (mPost.isGfycat()) {
|
canStartActivity = false;
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
if (mPost.isGfycat()) {
|
||||||
if (mPost.isLoadGfycatOrStreamableVideoSuccess()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
||||||
|
if (mPost.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
|
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
||||||
|
}
|
||||||
|
} else if (mPost.isRedgifs()) {
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
||||||
|
if (mPost.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
|
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
||||||
|
}
|
||||||
|
} else if (mPost.isStreamable()) {
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
|
||||||
|
} else {
|
||||||
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
|
||||||
}
|
}
|
||||||
} else if (mPost.isRedgifs()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
if (helper != null) {
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
intent.putExtra(ViewVideoActivity.EXTRA_PROGRESS_SECONDS, helper.getLatestPlaybackInfo().getResumePosition());
|
||||||
if (mPost.isLoadGfycatOrStreamableVideoSuccess()) {
|
|
||||||
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
|
||||||
}
|
}
|
||||||
} else if (mPost.isStreamable()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, mPost.isNSFW());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
mActivity.startActivity(intent);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
|
|
||||||
} else {
|
|
||||||
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
|
|
||||||
}
|
}
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
|
|
||||||
if (helper != null) {
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_PROGRESS_SECONDS, helper.getLatestPlaybackInfo().getResumePosition());
|
|
||||||
}
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, mPost.isNSFW());
|
|
||||||
mActivity.startActivity(intent);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
previewImageView.setOnLongClickListener(view -> fullscreenButton.performClick());
|
previewImageView.setOnLongClickListener(view -> fullscreenButton.performClick());
|
||||||
@ -1767,7 +1781,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean wantsToPlay() {
|
public boolean wantsToPlay() {
|
||||||
return ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
return canPlayVideo && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1864,34 +1878,37 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
mLoadImageErrorTextView.setTextColor(mPrimaryTextColor);
|
mLoadImageErrorTextView.setTextColor(mPrimaryTextColor);
|
||||||
|
|
||||||
mImageView.setOnClickListener(view -> {
|
mImageView.setOnClickListener(view -> {
|
||||||
if (mPost.getPostType() == Post.VIDEO_TYPE) {
|
if (canStartActivity) {
|
||||||
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
canStartActivity = false;
|
||||||
if (mPost.isGfycat()) {
|
if (mPost.getPostType() == Post.VIDEO_TYPE) {
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
if (mPost.isGfycat()) {
|
||||||
} else if (mPost.isRedgifs()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
} else if (mPost.isRedgifs()) {
|
||||||
} else if (mPost.isStreamable()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, mPost.getGfycatId());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
|
} else if (mPost.isStreamable()) {
|
||||||
} else {
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
||||||
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
|
} else {
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
|
intent.setData(Uri.parse(mPost.getVideoUrl()));
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
|
||||||
|
}
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, mPost.isNSFW());
|
||||||
|
mActivity.startActivity(intent);
|
||||||
|
} else if (mPost.getPostType() == Post.GIF_TYPE) {
|
||||||
|
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
||||||
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditName()
|
||||||
|
+ "-" + mPost.getId() + ".gif");
|
||||||
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mPost.getVideoUrl());
|
||||||
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
||||||
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
||||||
|
mActivity.startActivity(intent);
|
||||||
}
|
}
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, mPost.isNSFW());
|
|
||||||
mActivity.startActivity(intent);
|
|
||||||
} else if (mPost.getPostType() == Post.GIF_TYPE) {
|
|
||||||
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditName()
|
|
||||||
+ "-" + mPost.getId() + ".gif");
|
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mPost.getVideoUrl());
|
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
|
||||||
mActivity.startActivity(intent);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1983,22 +2000,25 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
mLoadImageErrorTextView.setTextColor(mPrimaryTextColor);
|
mLoadImageErrorTextView.setTextColor(mPrimaryTextColor);
|
||||||
|
|
||||||
mImageView.setOnClickListener(view -> {
|
mImageView.setOnClickListener(view -> {
|
||||||
if (mPost.getPostType() == Post.IMAGE_TYPE) {
|
if (canStartActivity) {
|
||||||
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
canStartActivity = false;
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, mPost.getUrl());
|
if (mPost.getPostType() == Post.IMAGE_TYPE) {
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditNamePrefixed().substring(2)
|
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
||||||
+ "-" + mPost.getId().substring(3) + ".jpg");
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, mPost.getUrl());
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditNamePrefixed().substring(2)
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
+ "-" + mPost.getId().substring(3) + ".jpg");
|
||||||
mActivity.startActivity(intent);
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
||||||
} else if (mPost.getPostType() == Post.GIF_TYPE) {
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
||||||
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
mActivity.startActivity(intent);
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditName()
|
} else if (mPost.getPostType() == Post.GIF_TYPE) {
|
||||||
+ "-" + mPost.getId() + ".gif");
|
Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mPost.getVideoUrl());
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, mPost.getSubredditName()
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
+ "-" + mPost.getId() + ".gif");
|
||||||
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_GIF_URL_KEY, mPost.getVideoUrl());
|
||||||
mActivity.startActivity(intent);
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_POST_TITLE_KEY, mPost.getTitle());
|
||||||
|
intent.putExtra(ViewImageOrGifActivity.EXTRA_SUBREDDIT_OR_USERNAME_KEY, mPost.getSubredditName());
|
||||||
|
mActivity.startActivity(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -209,6 +209,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
private Drawable mCommentIcon;
|
private Drawable mCommentIcon;
|
||||||
private ExoCreator mExoCreator;
|
private ExoCreator mExoCreator;
|
||||||
private Callback mCallback;
|
private Callback mCallback;
|
||||||
|
private boolean canPlayVideo = true;
|
||||||
|
|
||||||
public PostRecyclerViewAdapter(AppCompatActivity activity, PostFragment fragment, Executor executor, Retrofit oauthRetrofit,
|
public PostRecyclerViewAdapter(AppCompatActivity activity, PostFragment fragment, Executor executor, Retrofit oauthRetrofit,
|
||||||
Retrofit gfycatRetrofit, Retrofit redgifsRetrofit, Retrofit streambleRetrofit,
|
Retrofit gfycatRetrofit, Retrofit redgifsRetrofit, Retrofit streambleRetrofit,
|
||||||
@ -1991,6 +1992,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCanPlayVideo(boolean canPlayVideo) {
|
||||||
|
this.canPlayVideo = canPlayVideo;
|
||||||
|
}
|
||||||
|
|
||||||
public class PostBaseViewHolder extends RecyclerView.ViewHolder {
|
public class PostBaseViewHolder extends RecyclerView.ViewHolder {
|
||||||
AspectRatioGifImageView iconGifImageView;
|
AspectRatioGifImageView iconGifImageView;
|
||||||
TextView subredditTextView;
|
TextView subredditTextView;
|
||||||
@ -2665,43 +2670,46 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
});
|
});
|
||||||
|
|
||||||
fullscreenButton.setOnClickListener(view -> {
|
fullscreenButton.setOnClickListener(view -> {
|
||||||
int position = getBindingAdapterPosition();
|
if (canStartActivity) {
|
||||||
if (position < 0) {
|
canStartActivity = false;
|
||||||
return;
|
int position = getBindingAdapterPosition();
|
||||||
}
|
if (position < 0) {
|
||||||
Post post = getItem(position);
|
return;
|
||||||
if (post != null) {
|
}
|
||||||
markPostRead(post, true);
|
Post post = getItem(position);
|
||||||
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
if (post != null) {
|
||||||
if (post.isGfycat()) {
|
markPostRead(post, true);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
Intent intent = new Intent(mActivity, ViewVideoActivity.class);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, post.getGfycatId());
|
if (post.isGfycat()) {
|
||||||
if (post.isLoadGfycatOrStreamableVideoSuccess()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_GFYCAT);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, post.getGfycatId());
|
||||||
|
if (post.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
|
intent.setData(Uri.parse(post.getVideoUrl()));
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
||||||
|
}
|
||||||
|
} else if (post.isRedgifs()) {
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, post.getGfycatId());
|
||||||
|
if (post.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
|
intent.setData(Uri.parse(post.getVideoUrl()));
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
||||||
|
}
|
||||||
|
} else if (post.isStreamable()) {
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, post.getStreamableShortCode());
|
||||||
|
} else {
|
||||||
intent.setData(Uri.parse(post.getVideoUrl()));
|
intent.setData(Uri.parse(post.getVideoUrl()));
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, post.getSubredditName());
|
||||||
|
intent.putExtra(ViewVideoActivity.EXTRA_ID, post.getId());
|
||||||
}
|
}
|
||||||
} else if (post.isRedgifs()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, post.getTitle());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_REDGIFS);
|
if (helper != null) {
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_GFYCAT_ID, post.getGfycatId());
|
intent.putExtra(ViewVideoActivity.EXTRA_PROGRESS_SECONDS, helper.getLatestPlaybackInfo().getResumePosition());
|
||||||
if (post.isLoadGfycatOrStreamableVideoSuccess()) {
|
|
||||||
intent.setData(Uri.parse(post.getVideoUrl()));
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
|
||||||
}
|
}
|
||||||
} else if (post.isStreamable()) {
|
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, post.isNSFW());
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_STREAMABLE);
|
mActivity.startActivity(intent);
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, post.getStreamableShortCode());
|
|
||||||
} else {
|
|
||||||
intent.setData(Uri.parse(post.getVideoUrl()));
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, post.getSubredditName());
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_ID, post.getId());
|
|
||||||
}
|
}
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, post.getTitle());
|
|
||||||
if (helper != null) {
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_PROGRESS_SECONDS, helper.getLatestPlaybackInfo().getResumePosition());
|
|
||||||
}
|
|
||||||
intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, post.isNSFW());
|
|
||||||
mActivity.startActivity(intent);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -2801,7 +2809,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean wantsToPlay() {
|
public boolean wantsToPlay() {
|
||||||
return mediaUri != null && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
return canPlayVideo && mediaUri != null && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -4085,7 +4093,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean wantsToPlay() {
|
public boolean wantsToPlay() {
|
||||||
return mediaUri != null && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
return canPlayVideo && mediaUri != null && ToroUtil.visibleAreaOffset(this, itemView.getParent()) >= mStartAutoplayVisibleAreaOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,6 +8,8 @@ import androidx.annotation.Nullable;
|
|||||||
import im.ene.toro.widget.Container;
|
import im.ene.toro.widget.Container;
|
||||||
|
|
||||||
public class CustomToroContainer extends Container {
|
public class CustomToroContainer extends Container {
|
||||||
|
private OnWindowFocusChangedListener listener;
|
||||||
|
|
||||||
public CustomToroContainer(Context context) {
|
public CustomToroContainer(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
}
|
}
|
||||||
@ -24,4 +26,20 @@ public class CustomToroContainer extends Container {
|
|||||||
public void onWindowVisibilityChanged(int visibility) {
|
public void onWindowVisibilityChanged(int visibility) {
|
||||||
super.onWindowVisibilityChanged(visibility);
|
super.onWindowVisibilityChanged(visibility);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWindowFocusChanged(boolean hasWindowFocus) {
|
||||||
|
super.onWindowFocusChanged(hasWindowFocus);
|
||||||
|
if (listener != null) {
|
||||||
|
listener.onWindowFocusChanged(hasWindowFocus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addOnWindowFocusChangedListener(OnWindowFocusChangedListener onWindowFocusChangedListener) {
|
||||||
|
this.listener = onWindowFocusChangedListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnWindowFocusChangedListener {
|
||||||
|
void onWindowFocusChanged(boolean hasWindowsFocus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -315,6 +315,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
applyTheme();
|
applyTheme();
|
||||||
|
|
||||||
|
mPostRecyclerView.addOnWindowFocusChangedListener(this::onWindowFocusChanged);
|
||||||
|
|
||||||
lazyModeHandler = new Handler();
|
lazyModeHandler = new Handler();
|
||||||
|
|
||||||
lazyModeInterval = Float.parseFloat(mSharedPreferences.getString(SharedPreferencesUtils.LAZY_MODE_INTERVAL_KEY, "2.5"));
|
lazyModeInterval = Float.parseFloat(mSharedPreferences.getString(SharedPreferencesUtils.LAZY_MODE_INTERVAL_KEY, "2.5"));
|
||||||
@ -2115,9 +2117,18 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
|
if (mPostRecyclerView != null) {
|
||||||
|
mPostRecyclerView.addOnWindowFocusChangedListener(null);
|
||||||
|
}
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onWindowFocusChanged(boolean hasWindowsFocus) {
|
||||||
|
if (mAdapter != null) {
|
||||||
|
mAdapter.setCanPlayVideo(hasWindowsFocus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static abstract class LazyModeRunnable implements Runnable {
|
private static abstract class LazyModeRunnable implements Runnable {
|
||||||
private int currentPosition = -1;
|
private int currentPosition = -1;
|
||||||
|
|
||||||
|
@ -263,6 +263,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
|
|
||||||
applyTheme();
|
applyTheme();
|
||||||
|
|
||||||
|
mRecyclerView.addOnWindowFocusChangedListener(this::onWindowFocusChanged);
|
||||||
|
|
||||||
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
|
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
|
||||||
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, null);
|
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, null);
|
||||||
|
|
||||||
@ -1101,6 +1103,9 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
if (mPostAdapter != null) {
|
||||||
|
mPostAdapter.setCanStartActivity(true);
|
||||||
|
}
|
||||||
if (mRecyclerView != null) {
|
if (mRecyclerView != null) {
|
||||||
mRecyclerView.onWindowVisibilityChanged(View.VISIBLE);
|
mRecyclerView.onWindowVisibilityChanged(View.VISIBLE);
|
||||||
}
|
}
|
||||||
@ -1131,6 +1136,9 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
|
if (mRecyclerView != null) {
|
||||||
|
mRecyclerView.addOnWindowFocusChangedListener(null);
|
||||||
|
}
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1899,4 +1907,10 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
mSwipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
|
mSwipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
|
||||||
mFetchPostInfoTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor());
|
mFetchPostInfoTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onWindowFocusChanged(boolean hasWindowsFocus) {
|
||||||
|
if (mPostAdapter != null) {
|
||||||
|
mPostAdapter.setCanPlayVideo(hasWindowsFocus);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user