mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 04:37:25 +01:00
Remove RPAN.
This commit is contained in:
parent
bc03d20845
commit
f173a5d576
@ -70,12 +70,6 @@
|
||||
android:parentActivityName=".activities.MainActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name=".activities.RPANActivity"
|
||||
android:configChanges="orientation|screenSize|layoutDirection"
|
||||
android:parentActivityName=".activities.MainActivity"
|
||||
android:theme="@style/AppTheme.TranslucentStatusBar"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
<activity
|
||||
android:name=".activities.LockScreenActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
|
@ -37,7 +37,6 @@ import ml.docilealligator.infinityforreddit.activities.PostLinkActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.PostPollActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.PostTextActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.PostVideoActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.RPANActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.ReportActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.RulesActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.SearchActivity;
|
||||
@ -81,7 +80,6 @@ import ml.docilealligator.infinityforreddit.fragments.UserListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewImgurImageFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewImgurVideoFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewRPANBroadcastFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryImageOrGifFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryVideoFragment;
|
||||
import ml.docilealligator.infinityforreddit.services.DownloadMediaService;
|
||||
@ -281,10 +279,6 @@ public interface AppComponent {
|
||||
|
||||
void inject(LockScreenActivity lockScreenActivity);
|
||||
|
||||
void inject(RPANActivity rpanActivity);
|
||||
|
||||
void inject(ViewRPANBroadcastFragment viewRPANBroadcastFragment);
|
||||
|
||||
void inject(PostGalleryActivity postGalleryActivity);
|
||||
|
||||
void inject(TrendingActivity trendingActivity);
|
||||
|
@ -1,236 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||
|
||||
public class RPANBroadcast implements Parcelable {
|
||||
|
||||
public int upvotes;
|
||||
public int downvotes;
|
||||
public int uniqueWatchers;
|
||||
public int continuousWatchers;
|
||||
public int totalContinuousWatchers;
|
||||
public boolean chatDisabled;
|
||||
public double broadcastTime;
|
||||
public double estimatedRemainingTime;
|
||||
|
||||
public RPANPost rpanPost;
|
||||
public RPANStream rpanStream;
|
||||
|
||||
public RPANBroadcast(int upvotes, int downvotes, int uniqueWatchers, int continuousWatchers,
|
||||
int totalContinuousWatchers, boolean chatDisabled, double broadcastTime,
|
||||
double estimatedRemainingTime, RPANPost rpanPost, RPANStream rpanStream) {
|
||||
this.upvotes = upvotes;
|
||||
this.downvotes = downvotes;
|
||||
this.uniqueWatchers = uniqueWatchers;
|
||||
this.continuousWatchers = continuousWatchers;
|
||||
this.totalContinuousWatchers = totalContinuousWatchers;
|
||||
this.chatDisabled = chatDisabled;
|
||||
this.broadcastTime = broadcastTime;
|
||||
this.estimatedRemainingTime = estimatedRemainingTime;
|
||||
this.rpanPost = rpanPost;
|
||||
this.rpanStream = rpanStream;
|
||||
}
|
||||
|
||||
protected RPANBroadcast(Parcel in) {
|
||||
upvotes = in.readInt();
|
||||
downvotes = in.readInt();
|
||||
uniqueWatchers = in.readInt();
|
||||
continuousWatchers = in.readInt();
|
||||
totalContinuousWatchers = in.readInt();
|
||||
chatDisabled = in.readByte() != 0;
|
||||
broadcastTime = in.readDouble();
|
||||
estimatedRemainingTime = in.readDouble();
|
||||
rpanPost = in.readParcelable(RPANPost.class.getClassLoader());
|
||||
rpanStream = in.readParcelable(RPANStream.class.getClassLoader());
|
||||
}
|
||||
|
||||
public static final Creator<RPANBroadcast> CREATOR = new Creator<RPANBroadcast>() {
|
||||
@Override
|
||||
public RPANBroadcast createFromParcel(Parcel in) {
|
||||
return new RPANBroadcast(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RPANBroadcast[] newArray(int size) {
|
||||
return new RPANBroadcast[size];
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel parcel, int i) {
|
||||
parcel.writeInt(upvotes);
|
||||
parcel.writeInt(downvotes);
|
||||
parcel.writeInt(uniqueWatchers);
|
||||
parcel.writeInt(continuousWatchers);
|
||||
parcel.writeInt(totalContinuousWatchers);
|
||||
parcel.writeByte((byte) (chatDisabled ? 1 : 0));
|
||||
parcel.writeDouble(broadcastTime);
|
||||
parcel.writeDouble(estimatedRemainingTime);
|
||||
parcel.writeParcelable(rpanPost, i);
|
||||
parcel.writeParcelable(rpanStream, i);
|
||||
}
|
||||
|
||||
public static class RPANPost implements Parcelable {
|
||||
public String fullname;
|
||||
public String title;
|
||||
public String subredditName;
|
||||
public String subredditIconUrl;
|
||||
public String username;
|
||||
public int postScore;
|
||||
public String voteState;
|
||||
public double upvoteRatio;
|
||||
public String postPermalink;
|
||||
public String rpanUrl;
|
||||
public boolean isNsfw;
|
||||
public boolean isLocked;
|
||||
public boolean isArchived;
|
||||
public boolean isSpoiler;
|
||||
public String suggestedCommentSort;
|
||||
public String liveCommentsWebsocketUrl;
|
||||
|
||||
public RPANPost(String fullname, String title, String subredditName, String subredditIconUrl, String username,
|
||||
int postScore, String voteState, double upvoteRatio, String postPermalink, String rpanUrl,
|
||||
boolean isNsfw, boolean isLocked, boolean isArchived, boolean isSpoiler,
|
||||
String suggestedCommentSort, String liveCommentsWebsocketUrl) {
|
||||
this.fullname = fullname;
|
||||
this.title = title;
|
||||
this.subredditName = subredditName;
|
||||
this.subredditIconUrl = subredditIconUrl;
|
||||
this.username = username;
|
||||
this.postScore = postScore;
|
||||
this.voteState = voteState;
|
||||
this.upvoteRatio = upvoteRatio;
|
||||
this.postPermalink = APIUtils.API_BASE_URI + postPermalink;
|
||||
this.rpanUrl = rpanUrl;
|
||||
this.isNsfw = isNsfw;
|
||||
this.isLocked = isLocked;
|
||||
this.isArchived = isArchived;
|
||||
this.isSpoiler = isSpoiler;
|
||||
this.suggestedCommentSort = suggestedCommentSort;
|
||||
this.liveCommentsWebsocketUrl = liveCommentsWebsocketUrl;
|
||||
}
|
||||
|
||||
protected RPANPost(Parcel in) {
|
||||
fullname = in.readString();
|
||||
title = in.readString();
|
||||
subredditName = in.readString();
|
||||
subredditIconUrl = in.readString();
|
||||
username = in.readString();
|
||||
postScore = in.readInt();
|
||||
voteState = in.readString();
|
||||
upvoteRatio = in.readDouble();
|
||||
postPermalink = in.readString();
|
||||
rpanUrl = in.readString();
|
||||
isNsfw = in.readByte() != 0;
|
||||
isLocked = in.readByte() != 0;
|
||||
isArchived = in.readByte() != 0;
|
||||
isSpoiler = in.readByte() != 0;
|
||||
suggestedCommentSort = in.readString();
|
||||
liveCommentsWebsocketUrl = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<RPANPost> CREATOR = new Creator<RPANPost>() {
|
||||
@Override
|
||||
public RPANPost createFromParcel(Parcel in) {
|
||||
return new RPANPost(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RPANPost[] newArray(int size) {
|
||||
return new RPANPost[size];
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel parcel, int i) {
|
||||
parcel.writeString(fullname);
|
||||
parcel.writeString(title);
|
||||
parcel.writeString(subredditName);
|
||||
parcel.writeString(subredditIconUrl);
|
||||
parcel.writeString(username);
|
||||
parcel.writeInt(postScore);
|
||||
parcel.writeString(voteState);
|
||||
parcel.writeDouble(upvoteRatio);
|
||||
parcel.writeString(postPermalink);
|
||||
parcel.writeString(rpanUrl);
|
||||
parcel.writeByte((byte) (isNsfw ? 1 : 0));
|
||||
parcel.writeByte((byte) (isLocked ? 1 : 0));
|
||||
parcel.writeByte((byte) (isArchived ? 1 : 0));
|
||||
parcel.writeByte((byte) (isSpoiler ? 1 : 0));
|
||||
parcel.writeString(suggestedCommentSort);
|
||||
parcel.writeString(liveCommentsWebsocketUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RPANStream implements Parcelable {
|
||||
public String streamId;
|
||||
public String hlsUrl;
|
||||
public String thumbnail;
|
||||
public int width;
|
||||
public int height;
|
||||
public long publishAt;
|
||||
public String state;
|
||||
|
||||
public RPANStream(String streamId, String hlsUrl, String thumbnail, int width, int height, long publishAt,
|
||||
String state) {
|
||||
this.streamId = streamId;
|
||||
this.hlsUrl = hlsUrl;
|
||||
this.thumbnail = thumbnail;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.publishAt = publishAt;
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
protected RPANStream(Parcel in) {
|
||||
streamId = in.readString();
|
||||
hlsUrl = in.readString();
|
||||
thumbnail = in.readString();
|
||||
width = in.readInt();
|
||||
height = in.readInt();
|
||||
publishAt = in.readLong();
|
||||
state = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<RPANStream> CREATOR = new Creator<RPANStream>() {
|
||||
@Override
|
||||
public RPANStream createFromParcel(Parcel in) {
|
||||
return new RPANStream(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RPANStream[] newArray(int size) {
|
||||
return new RPANStream[size];
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel parcel, int i) {
|
||||
parcel.writeString(streamId);
|
||||
parcel.writeString(hlsUrl);
|
||||
parcel.writeString(thumbnail);
|
||||
parcel.writeInt(width);
|
||||
parcel.writeInt(height);
|
||||
parcel.writeLong(publishAt);
|
||||
parcel.writeString(state);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
public class RPANComment {
|
||||
public String author;
|
||||
public String authorIconImage;
|
||||
public String content;
|
||||
public long createdUTC;
|
||||
|
||||
public RPANComment(String author, String authorIconImage, String content, long createdUTC) {
|
||||
this.author = author;
|
||||
this.authorIconImage = authorIconImage;
|
||||
this.content = content;
|
||||
this.createdUTC = createdUTC;
|
||||
}
|
||||
}
|
@ -49,7 +49,6 @@ public class LinkResolverActivity extends AppCompatActivity {
|
||||
private static final String IMGUR_GALLERY_PATTERN = "/gallery/\\w+/?";
|
||||
private static final String IMGUR_ALBUM_PATTERN = "/(album|a)/\\w+/?";
|
||||
private static final String IMGUR_IMAGE_PATTERN = "/\\w+/?";
|
||||
private static final String RPAN_BROADCAST_PATTERN = "/rpan/r/[\\w-]+/\\w+/?\\w+/?";
|
||||
private static final String WIKI_PATTERN = "/[rR]/[\\w-]+/(wiki|w)(?:/[\\w-]+)*";
|
||||
private static final String GOOGLE_AMP_PATTERN = "/amp/s/amp.reddit.com/.*";
|
||||
private static final String STREAMABLE_PATTERN = "/\\w+/?";
|
||||
@ -248,10 +247,6 @@ public class LinkResolverActivity extends AppCompatActivity {
|
||||
intent.putExtra(ViewSubredditDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
||||
intent.putExtra(ViewSubredditDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
|
||||
startActivity(intent);
|
||||
} else if (path.matches(RPAN_BROADCAST_PATTERN)) {
|
||||
Intent intent = new Intent(this, RPANActivity.class);
|
||||
intent.putExtra(RPANActivity.EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID, path.substring(path.lastIndexOf('/') + 1));
|
||||
startActivity(intent);
|
||||
} else if (authority.equals("redd.it") && path.matches(REDD_IT_POST_PATTERN)) {
|
||||
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, path.substring(1));
|
||||
|
@ -779,8 +779,6 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
|
||||
} else if (stringId == R.string.history) {
|
||||
intent = new Intent(MainActivity.this, HistoryActivity.class);
|
||||
} else if (stringId == R.string.rpan) {
|
||||
intent = new Intent(MainActivity.this, RPANActivity.class);
|
||||
} else if (stringId == R.string.trending) {
|
||||
intent = new Intent(MainActivity.this, TrendingActivity.class);
|
||||
} else if (stringId == R.string.upvoted) {
|
||||
|
@ -1,426 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit.activities;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.Html;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.evernote.android.state.State;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.livefront.bridge.Bridge;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RPANBroadcast;
|
||||
import ml.docilealligator.infinityforreddit.apis.Strapi;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.font.ContentFontFamily;
|
||||
import ml.docilealligator.infinityforreddit.font.ContentFontStyle;
|
||||
import ml.docilealligator.infinityforreddit.font.FontFamily;
|
||||
import ml.docilealligator.infinityforreddit.font.FontStyle;
|
||||
import ml.docilealligator.infinityforreddit.font.TitleFontFamily;
|
||||
import ml.docilealligator.infinityforreddit.font.TitleFontStyle;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewRPANBroadcastFragment;
|
||||
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||
import okhttp3.ResponseBody;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class RPANActivity extends AppCompatActivity implements CustomFontReceiver {
|
||||
|
||||
public static final String EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID = "ERBFOI";
|
||||
|
||||
@BindView(R.id.coordinator_layout_rpan_activity)
|
||||
CoordinatorLayout coordinatorLayout;
|
||||
@BindView(R.id.view_pager_2_rpan_activity)
|
||||
ViewPager2 viewPager2;
|
||||
@BindView(R.id.progress_bar_rpan_activity)
|
||||
ProgressBar progressBar;
|
||||
@Inject
|
||||
@Named("strapi")
|
||||
Retrofit strapiRetrofit;
|
||||
@Inject
|
||||
@Named("default")
|
||||
SharedPreferences mSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
@Inject
|
||||
Executor mExecutor;
|
||||
@State
|
||||
ArrayList<RPANBroadcast> rpanBroadcasts;
|
||||
@State
|
||||
String nextCursor;
|
||||
public Typeface typeface;
|
||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
((Infinity) getApplication()).getAppComponent().inject(this);
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
getTheme().applyStyle(R.style.Theme_Normal, true);
|
||||
|
||||
getTheme().applyStyle(FontStyle.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.FONT_SIZE_KEY, FontStyle.Normal.name())).getResId(), true);
|
||||
|
||||
getTheme().applyStyle(TitleFontStyle.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY, TitleFontStyle.Normal.name())).getResId(), true);
|
||||
|
||||
getTheme().applyStyle(ContentFontStyle.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY, ContentFontStyle.Normal.name())).getResId(), true);
|
||||
|
||||
getTheme().applyStyle(FontFamily.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.FONT_FAMILY_KEY, FontFamily.Default.name())).getResId(), true);
|
||||
|
||||
getTheme().applyStyle(TitleFontFamily.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.TITLE_FONT_FAMILY_KEY, TitleFontFamily.Default.name())).getResId(), true);
|
||||
|
||||
getTheme().applyStyle(ContentFontFamily.valueOf(mSharedPreferences
|
||||
.getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name())).getResId(), true);
|
||||
|
||||
setContentView(R.layout.activity_rpanactivity);
|
||||
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
|
||||
Bridge.restoreInstanceState(this, savedInstanceState);
|
||||
|
||||
ButterKnife.bind(this);
|
||||
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp);
|
||||
actionBar.setHomeAsUpIndicator(upArrow);
|
||||
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));
|
||||
actionBar.setTitle(Utils.getTabTextWithCustomFont(typeface, Html.fromHtml("<font color=\"#FFFFFF\">" + getString(R.string.rpan_activity_label) + "</font>")));
|
||||
|
||||
if (rpanBroadcasts == null) {
|
||||
loadRPANVideos();
|
||||
} else {
|
||||
initializeViewPager();
|
||||
}
|
||||
}
|
||||
|
||||
private void loadRPANVideos() {
|
||||
String rpanBroadcastFullNameOrId = getIntent().getStringExtra(EXTRA_RPAN_BROADCAST_FULLNAME_OR_ID);
|
||||
if (rpanBroadcastFullNameOrId == null) {
|
||||
strapiRetrofit.create(Strapi.class).getAllBroadcasts().enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (response.isSuccessful()) {
|
||||
parseRPANBroadcasts(response.body());
|
||||
} else {
|
||||
try {
|
||||
ResponseBody responseBody = response.errorBody();
|
||||
if (responseBody != null) {
|
||||
JSONObject errorObject = new JSONObject(responseBody.string());
|
||||
String errorMessage = errorObject.getString(JSONUtils.DATA_KEY);
|
||||
if (!errorMessage.isEmpty() && !errorMessage.equals("null")) {
|
||||
Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_LONG).show();
|
||||
} else {
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} catch (IOException | JSONException e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
strapiRetrofit.create(Strapi.class).getRPANBroadcast(rpanBroadcastFullNameOrId).enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (response.isSuccessful()) {
|
||||
Handler handler = new Handler();
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
rpanBroadcasts = new ArrayList<>();
|
||||
rpanBroadcasts.add(parseSingleRPANBroadcast(new JSONObject(response.body()).getJSONObject(JSONUtils.DATA_KEY)));
|
||||
handler.post(() -> initializeViewPager());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
handler.post(() -> Toast.makeText(RPANActivity.this,
|
||||
R.string.parse_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
ResponseBody responseBody = response.errorBody();
|
||||
if (responseBody != null) {
|
||||
JSONObject errorObject = new JSONObject(responseBody.string());
|
||||
String errorMessage = errorObject.getString(JSONUtils.DATA_KEY);
|
||||
if (!errorMessage.isEmpty() && !errorMessage.equals("null")) {
|
||||
Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_LONG).show();
|
||||
} else {
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} catch (IOException | JSONException e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
Toast.makeText(RPANActivity.this,
|
||||
R.string.load_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void parseRPANBroadcasts(String response) {
|
||||
Handler handler = new Handler();
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
ArrayList<RPANBroadcast> rpanBroadcasts = new ArrayList<>();
|
||||
JSONObject responseObject = new JSONObject(response);
|
||||
String nextCursor = responseObject.getString(JSONUtils.NEXT_CURSOR_KEY);
|
||||
|
||||
JSONArray dataArray = responseObject.getJSONArray(JSONUtils.DATA_KEY);
|
||||
for (int i = 0; i < dataArray.length(); i++) {
|
||||
try {
|
||||
JSONObject singleData = dataArray.getJSONObject(i);
|
||||
rpanBroadcasts.add(parseSingleRPANBroadcast(singleData));
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
handler.post(() -> {
|
||||
RPANActivity.this.rpanBroadcasts = rpanBroadcasts;
|
||||
RPANActivity.this.nextCursor = nextCursor;
|
||||
|
||||
initializeViewPager();
|
||||
});
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
handler.post(() -> Toast.makeText(RPANActivity.this,
|
||||
R.string.parse_rpan_broadcasts_failed, Toast.LENGTH_SHORT).show());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private RPANBroadcast parseSingleRPANBroadcast(JSONObject singleData) throws JSONException {
|
||||
JSONObject rpanPostObject = singleData.getJSONObject(JSONUtils.POST_KEY);
|
||||
RPANBroadcast.RPANPost rpanPost = new RPANBroadcast.RPANPost(
|
||||
rpanPostObject.getString(JSONUtils.ID_KEY),
|
||||
rpanPostObject.getString(JSONUtils.TITLE_KEY),
|
||||
rpanPostObject.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.NAME_KEY),
|
||||
rpanPostObject.getJSONObject(JSONUtils.SUBREDDIT_KEY).getJSONObject(JSONUtils.STYLES_KEY).getString(JSONUtils.ICON_KEY),
|
||||
rpanPostObject.getJSONObject(JSONUtils.AUTHOR_INFO_KEY).getString(JSONUtils.NAME_KEY),
|
||||
rpanPostObject.getInt(JSONUtils.SCORE_KEY),
|
||||
rpanPostObject.getString(JSONUtils.VOTE_STATE_KEY),
|
||||
rpanPostObject.getDouble(JSONUtils.UPVOTE_RATIO_CAMEL_CASE_KEY),
|
||||
rpanPostObject.getString(JSONUtils.PERMALINK_KEY),
|
||||
rpanPostObject.getJSONObject(JSONUtils.OUTBOUND_LINK_KEY).getString(JSONUtils.URL_KEY),
|
||||
rpanPostObject.getBoolean(JSONUtils.IS_NSFW_KEY),
|
||||
rpanPostObject.getBoolean(JSONUtils.IS_LOCKED_KEY),
|
||||
rpanPostObject.getBoolean(JSONUtils.IS_ARCHIVED_KEY),
|
||||
rpanPostObject.getBoolean(JSONUtils.IS_SPOILER),
|
||||
rpanPostObject.getString(JSONUtils.SUGGESTED_COMMENT_SORT_CAMEL_CASE_KEY),
|
||||
rpanPostObject.getString(JSONUtils.LIVE_COMMENTS_WEBSOCKET_KEY)
|
||||
);
|
||||
|
||||
JSONObject rpanStreamObject = singleData.getJSONObject(JSONUtils.STREAM_KEY);
|
||||
RPANBroadcast.RPANStream rpanStream = new RPANBroadcast.RPANStream(
|
||||
rpanStreamObject.getString(JSONUtils.STREAM_ID_KEY),
|
||||
rpanStreamObject.getString(JSONUtils.HLS_URL_KEY),
|
||||
rpanStreamObject.getString(JSONUtils.THUMBNAIL_KEY),
|
||||
rpanStreamObject.getInt(JSONUtils.WIDTH_KEY),
|
||||
rpanStreamObject.getInt(JSONUtils.HEIGHT_KEY),
|
||||
rpanStreamObject.getLong(JSONUtils.PUBLISH_AT_KEY),
|
||||
rpanStreamObject.getString(JSONUtils.STATE_KEY)
|
||||
);
|
||||
|
||||
return new RPANBroadcast(
|
||||
singleData.getInt(JSONUtils.UPVOTES_KEY),
|
||||
singleData.getInt(JSONUtils.DOWNVOTES_KEY),
|
||||
singleData.getInt(JSONUtils.UNIQUE_WATCHERS_KEY),
|
||||
singleData.getInt(JSONUtils.CONTINUOUS_WATCHERS_KEY),
|
||||
singleData.getInt(JSONUtils.TOTAL_CONTINUOUS_WATCHERS_KEY),
|
||||
singleData.getBoolean(JSONUtils.CHAT_DISABLED_KEY),
|
||||
singleData.getDouble(JSONUtils.BROADCAST_TIME_KEY),
|
||||
singleData.getDouble(JSONUtils.ESTIMATED_REMAINING_TIME_KEY),
|
||||
rpanPost,
|
||||
rpanStream
|
||||
);
|
||||
}
|
||||
|
||||
private void initializeViewPager() {
|
||||
sectionsPagerAdapter = new SectionsPagerAdapter(this);
|
||||
viewPager2.setAdapter(sectionsPagerAdapter);
|
||||
viewPager2.setOffscreenPageLimit(3);
|
||||
fixViewPager2Sensitivity(viewPager2);
|
||||
}
|
||||
|
||||
private void fixViewPager2Sensitivity(ViewPager2 viewPager2) {
|
||||
try {
|
||||
Field recyclerViewField = ViewPager2.class.getDeclaredField("mRecyclerView");
|
||||
recyclerViewField.setAccessible(true);
|
||||
|
||||
RecyclerView recyclerView = (RecyclerView) recyclerViewField.get(viewPager2);
|
||||
|
||||
Field touchSlopField = RecyclerView.class.getDeclaredField("mTouchSlop");
|
||||
touchSlopField.setAccessible(true);
|
||||
|
||||
Object touchSlopBox = touchSlopField.get(recyclerView);
|
||||
if (touchSlopBox != null) {
|
||||
int touchSlop = (int) touchSlopBox;
|
||||
touchSlopField.set(recyclerView, touchSlop * 4);
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignore) {}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.rpan_activity, menu);
|
||||
for (int i = 0; i < menu.size(); i++) {
|
||||
Utils.setTitleWithCustomFontToMenuItem(typeface, menu.getItem(i), null);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.action_share_rpan_link_rpan_activity) {
|
||||
if (rpanBroadcasts != null) {
|
||||
int position = viewPager2.getCurrentItem();
|
||||
if (position >= 0 && position < rpanBroadcasts.size()) {
|
||||
shareLink(rpanBroadcasts.get(position).rpanPost.rpanUrl);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (item.getItemId() == R.id.action_share_post_link_rpan_activity) {
|
||||
if (rpanBroadcasts != null) {
|
||||
int position = viewPager2.getCurrentItem();
|
||||
if (position >= 0 && position < rpanBroadcasts.size()) {
|
||||
shareLink(rpanBroadcasts.get(position).rpanPost.postPermalink);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
private void shareLink(String link) {
|
||||
try {
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.setType("text/plain");
|
||||
intent.putExtra(Intent.EXTRA_TEXT, link);
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.share)));
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(this, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCustomFont(Typeface typeface, Typeface titleTypeface, Typeface contentTypeface) {
|
||||
this.typeface = typeface;
|
||||
}
|
||||
|
||||
private class SectionsPagerAdapter extends FragmentStateAdapter {
|
||||
|
||||
public SectionsPagerAdapter(FragmentActivity fa) {
|
||||
super(fa);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment createFragment(int position) {
|
||||
ViewRPANBroadcastFragment fragment = new ViewRPANBroadcastFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(ViewRPANBroadcastFragment.EXTRA_RPAN_BROADCAST, rpanBroadcasts.get(position));
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Fragment getCurrentFragment() {
|
||||
if (viewPager2 == null || getSupportFragmentManager() == null) {
|
||||
return null;
|
||||
}
|
||||
return getSupportFragmentManager().findFragmentByTag("f" + viewPager2.getCurrentItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return rpanBroadcasts == null ? 0 : rpanBroadcasts.size();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit.adapters;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RPANComment;
|
||||
import ml.docilealligator.infinityforreddit.activities.RPANActivity;
|
||||
|
||||
public class RPANCommentStreamRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
private RPANActivity activity;
|
||||
private RequestManager glide;
|
||||
private ArrayList<RPANComment> rpanComments;
|
||||
|
||||
public RPANCommentStreamRecyclerViewAdapter(RPANActivity activity) {
|
||||
this.activity = activity;
|
||||
glide = Glide.with(activity);
|
||||
rpanComments = new ArrayList<>();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new RPANCommentViewHolder(LayoutInflater.from(parent.getContext()).inflate(
|
||||
R.layout.item_rpan_comment, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
if (holder instanceof RPANCommentViewHolder) {
|
||||
((RPANCommentViewHolder) holder).authorTextView.setText(rpanComments.get(position).author);
|
||||
((RPANCommentViewHolder) holder).contentTextView.setText(rpanComments.get(position).content);
|
||||
glide.load(rpanComments.get(position).authorIconImage)
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
|
||||
.into(((RPANCommentViewHolder) holder).iconImageView);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return rpanComments == null ? 0 : rpanComments.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||
super.onViewRecycled(holder);
|
||||
if (holder instanceof RPANCommentViewHolder) {
|
||||
glide.clear(((RPANCommentViewHolder) holder).iconImageView);
|
||||
}
|
||||
}
|
||||
|
||||
public void addRPANComment(RPANComment rpanComment) {
|
||||
rpanComments.add(rpanComment);
|
||||
notifyItemInserted(rpanComments.size() - 1);
|
||||
}
|
||||
|
||||
class RPANCommentViewHolder extends RecyclerView.ViewHolder {
|
||||
ImageView iconImageView;
|
||||
TextView authorTextView;
|
||||
TextView contentTextView;
|
||||
|
||||
public RPANCommentViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
iconImageView = itemView.findViewById(R.id.icon_image_view_item_rpan_comment);
|
||||
authorTextView = itemView.findViewById(R.id.author_text_view_item_rpan_comment);
|
||||
contentTextView = itemView.findViewById(R.id.content_text_view_item_rpan_comment);
|
||||
|
||||
if (activity.typeface != null) {
|
||||
authorTextView.setTypeface(activity.typeface);
|
||||
contentTextView.setTypeface(activity.typeface);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ public class RedditSectionRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
||||
|
||||
private static final int VIEW_TYPE_MENU_GROUP_TITLE = 1;
|
||||
private static final int VIEW_TYPE_MENU_ITEM = 2;
|
||||
private static final int REDDIT_SECTION_ITEMS = 2;
|
||||
private static final int REDDIT_SECTION_ITEMS = 1;
|
||||
|
||||
private BaseActivity baseActivity;
|
||||
private int primaryTextColor;
|
||||
@ -85,10 +85,6 @@ public class RedditSectionRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
||||
|
||||
switch (position) {
|
||||
case 1:
|
||||
stringId = R.string.rpan;
|
||||
drawableId = R.drawable.ic_rpan_24dp;
|
||||
break;
|
||||
case 2:
|
||||
stringId = R.string.trending;
|
||||
drawableId = R.drawable.ic_trending_24dp;
|
||||
break;
|
||||
|
@ -1,13 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit.apis;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Path;
|
||||
|
||||
public interface Strapi {
|
||||
@GET("/broadcasts")
|
||||
Call<String> getAllBroadcasts();
|
||||
|
||||
@GET("/videos/{rpan_id_or_fullname}")
|
||||
Call<String> getRPANBroadcast(@Path("rpan_id_or_fullname") String rpanIdOrFullname);
|
||||
}
|
@ -1,423 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit.fragments;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||
import com.google.android.exoplayer2.ExoPlayer;
|
||||
import com.google.android.exoplayer2.MediaItem;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.Tracks;
|
||||
import com.google.android.exoplayer2.source.BehindLiveWindowException;
|
||||
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.ui.PlayerView;
|
||||
import com.google.android.exoplayer2.ui.TrackSelectionDialogBuilder;
|
||||
import com.google.android.exoplayer2.upstream.DataSource;
|
||||
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
|
||||
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
|
||||
import com.google.android.exoplayer2.upstream.cache.SimpleCache;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RPANBroadcast;
|
||||
import ml.docilealligator.infinityforreddit.RPANComment;
|
||||
import ml.docilealligator.infinityforreddit.activities.RPANActivity;
|
||||
import ml.docilealligator.infinityforreddit.adapters.RPANCommentStreamRecyclerViewAdapter;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.WebSocket;
|
||||
import okhttp3.WebSocketListener;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class ViewRPANBroadcastFragment extends Fragment {
|
||||
|
||||
public static final String EXTRA_RPAN_BROADCAST = "ERB";
|
||||
private static final String IS_MUTE_STATE = "IMS";
|
||||
|
||||
@BindView(R.id.constraint_layout_exo_rpan_broadcast_playback_control_view)
|
||||
ConstraintLayout constraintLayout;
|
||||
@BindView(R.id.player_view_view_rpan_broadcast_fragment)
|
||||
PlayerView playerView;
|
||||
@BindView(R.id.subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view)
|
||||
ImageView subredditIconImageView;
|
||||
@BindView(R.id.subreddit_name_text_view_exo_rpan_broadcast_playback_control_view)
|
||||
TextView subredditNameTextView;
|
||||
@BindView(R.id.username_text_view_exo_rpan_broadcast_playback_control_view)
|
||||
TextView usernameTextView;
|
||||
@BindView(R.id.title_text_view_exo_rpan_broadcast_playback_control_view)
|
||||
TextView titleTextView;
|
||||
@BindView(R.id.recycler_view_exo_rpan_broadcast_playback_control_view)
|
||||
RecyclerView recyclerView;
|
||||
@BindView(R.id.mute_exo_rpan_broadcast_playback_control_view)
|
||||
ImageButton muteButton;
|
||||
@BindView(R.id.hd_exo_rpan_broadcast_playback_control_view)
|
||||
ImageButton hdButton;
|
||||
@Inject
|
||||
@Named("strapi")
|
||||
Retrofit mStrapiRetrofit;
|
||||
@Inject
|
||||
@Named("default")
|
||||
SharedPreferences mSharedPreferences;
|
||||
@Inject
|
||||
@Named("current_account")
|
||||
SharedPreferences mCurrentAccountSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
@Inject
|
||||
Executor mExecutor;
|
||||
@Inject
|
||||
@Named("rpan")
|
||||
OkHttpClient okHttpClient;
|
||||
@Inject
|
||||
SimpleCache mSimpleCache;
|
||||
private RPANActivity mActivity;
|
||||
private RPANBroadcast rpanBroadcast;
|
||||
private ExoPlayer player;
|
||||
private DefaultTrackSelector trackSelector;
|
||||
private DataSource.Factory dataSourceFactory;
|
||||
private Handler handler;
|
||||
private RPANCommentStreamRecyclerViewAdapter adapter;
|
||||
private WebSocket webSocket;
|
||||
|
||||
private boolean wasPlaying;
|
||||
private boolean isMute = false;
|
||||
private long resumePosition = -1;
|
||||
private boolean isDataSavingMode;
|
||||
|
||||
public ViewRPANBroadcastFragment() {
|
||||
// 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_rpan_broadcast, container, false);
|
||||
|
||||
((Infinity) mActivity.getApplication()).getAppComponent().inject(this);
|
||||
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
if (mActivity.typeface != null) {
|
||||
subredditNameTextView.setTypeface(mActivity.typeface);
|
||||
usernameTextView.setTypeface(mActivity.typeface);
|
||||
titleTextView.setTypeface(mActivity.typeface);
|
||||
}
|
||||
|
||||
rpanBroadcast = getArguments().getParcelable(EXTRA_RPAN_BROADCAST);
|
||||
|
||||
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || getResources().getBoolean(R.bool.isTablet)) {
|
||||
//Set player controller bottom margin in order to display it above the navbar
|
||||
int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
|
||||
//LinearLayout controllerLinearLayout = findViewById(R.id.linear_layout_exo_playback_control_view);
|
||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) constraintLayout.getLayoutParams();
|
||||
params.bottomMargin = getResources().getDimensionPixelSize(resourceId);
|
||||
} else {
|
||||
//Set player controller right margin in order to display it above the navbar
|
||||
int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
|
||||
//LinearLayout controllerLinearLayout = findViewById(R.id.linear_layout_exo_playback_control_view);
|
||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) constraintLayout.getLayoutParams();
|
||||
params.rightMargin = getResources().getDimensionPixelSize(resourceId);
|
||||
}
|
||||
|
||||
playerView.setControllerVisibilityListener(visibility -> {
|
||||
switch (visibility) {
|
||||
case View.GONE:
|
||||
mActivity.getWindow().getDecorView().setSystemUiVisibility(
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE);
|
||||
playerView.setControllerShowTimeoutMs(0);
|
||||
break;
|
||||
case View.VISIBLE:
|
||||
mActivity.getWindow().getDecorView().setSystemUiVisibility(
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
|
||||
}
|
||||
});
|
||||
|
||||
trackSelector = new DefaultTrackSelector(mActivity);
|
||||
player = new ExoPlayer.Builder(mActivity).setTrackSelector(trackSelector).build();
|
||||
playerView.setPlayer(player);
|
||||
|
||||
wasPlaying = true;
|
||||
|
||||
boolean muteVideo = mSharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_VIDEO, false) ||
|
||||
(mSharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_NSFW_VIDEO, false) && rpanBroadcast.rpanPost.isNsfw);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
isMute = savedInstanceState.getBoolean(IS_MUTE_STATE);
|
||||
if (isMute) {
|
||||
player.setVolume(0f);
|
||||
muteButton.setImageResource(R.drawable.ic_mute_24dp);
|
||||
} else {
|
||||
player.setVolume(1f);
|
||||
muteButton.setImageResource(R.drawable.ic_unmute_24dp);
|
||||
}
|
||||
} else if (muteVideo) {
|
||||
isMute = true;
|
||||
player.setVolume(0f);
|
||||
muteButton.setImageResource(R.drawable.ic_mute_24dp);
|
||||
} else {
|
||||
muteButton.setImageResource(R.drawable.ic_unmute_24dp);
|
||||
}
|
||||
|
||||
player.addListener(new Player.Listener() {
|
||||
@Override
|
||||
public void onTracksChanged(@NonNull Tracks tracks) {
|
||||
ImmutableList<Tracks.Group> trackGroups = tracks.getGroups();
|
||||
if (!trackGroups.isEmpty()) {
|
||||
if (isDataSavingMode) {
|
||||
trackSelector.setParameters(
|
||||
trackSelector.buildUponParameters()
|
||||
.setMaxVideoSize(720, 720));
|
||||
}
|
||||
|
||||
hdButton.setVisibility(View.VISIBLE);
|
||||
hdButton.setOnClickListener(view -> {
|
||||
TrackSelectionDialogBuilder builder = new TrackSelectionDialogBuilder(mActivity, getString(R.string.select_video_quality), player, 0);
|
||||
builder.setShowDisableOption(true);
|
||||
builder.setAllowAdaptiveSelections(false);
|
||||
Dialog dialog = builder.build();
|
||||
dialog.show();
|
||||
if (dialog instanceof AlertDialog) {
|
||||
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
|
||||
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
|
||||
}
|
||||
});
|
||||
|
||||
for (int i = 0; i < trackGroups.size(); i++) {
|
||||
String mimeType = trackGroups.get(i).getTrackFormat(0).sampleMimeType;
|
||||
if (mimeType != null && mimeType.contains("audio")) {
|
||||
muteButton.setVisibility(View.VISIBLE);
|
||||
muteButton.setOnClickListener(view -> {
|
||||
if (isMute) {
|
||||
isMute = false;
|
||||
player.setVolume(1f);
|
||||
muteButton.setImageResource(R.drawable.ic_unmute_24dp);
|
||||
} else {
|
||||
isMute = true;
|
||||
player.setVolume(0f);
|
||||
muteButton.setImageResource(R.drawable.ic_mute_24dp);
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
muteButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Glide.with(mActivity).load(rpanBroadcast.rpanPost.subredditIconUrl)
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||
.error(Glide.with(mActivity).load(R.drawable.subreddit_default_icon)
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
|
||||
.into(subredditIconImageView);
|
||||
subredditNameTextView.setText(rpanBroadcast.rpanPost.subredditName);
|
||||
usernameTextView.setText(rpanBroadcast.rpanPost.username);
|
||||
titleTextView.setText(rpanBroadcast.rpanPost.title);
|
||||
|
||||
recyclerView.setOnTouchListener(new View.OnTouchListener() {
|
||||
float x1;
|
||||
float x2;
|
||||
float y1;
|
||||
float y2;
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
switch (motionEvent.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
x1 = motionEvent.getX();
|
||||
y1 = motionEvent.getY();
|
||||
return true;
|
||||
case MotionEvent.ACTION_UP:
|
||||
x2 = motionEvent.getX();
|
||||
y2 = motionEvent.getY();
|
||||
|
||||
if (x1 == x2 && y1 == y2) {
|
||||
playerView.hideController();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
adapter = new RPANCommentStreamRecyclerViewAdapter(mActivity);
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
handler = new Handler();
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
private boolean isBehindLiveWindow(ExoPlaybackException e) {
|
||||
if (e.type != ExoPlaybackException.TYPE_SOURCE) {
|
||||
return false;
|
||||
}
|
||||
Throwable cause = e.getSourceException();
|
||||
while (cause != null) {
|
||||
if (cause instanceof BehindLiveWindowException) {
|
||||
return true;
|
||||
}
|
||||
cause = cause.getCause();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void parseComment(String commentJson) {
|
||||
mExecutor.execute(() -> {
|
||||
try {
|
||||
JSONObject commentObject = new JSONObject(commentJson);
|
||||
if (commentObject.getString(JSONUtils.TYPE_KEY).equals("new_comment")) {
|
||||
JSONObject payload = commentObject.getJSONObject(JSONUtils.PAYLOAD_KEY);
|
||||
RPANComment rpanComment = new RPANComment(
|
||||
payload.getString(JSONUtils.AUTHOR_KEY),
|
||||
payload.getString(JSONUtils.AUTHOR_ICON_IMAGE),
|
||||
payload.getString(JSONUtils.BODY_KEY),
|
||||
payload.getLong(JSONUtils.CREATED_UTC_KEY));
|
||||
|
||||
handler.post(() -> {
|
||||
LinearLayoutManagerBugFixed manager = ((LinearLayoutManagerBugFixed) recyclerView.getLayoutManager());
|
||||
boolean shouldScrollToBottom = false;
|
||||
if (manager != null) {
|
||||
int lastPosition = manager.findLastCompletelyVisibleItemPosition();
|
||||
int currentItemCount = adapter.getItemCount();
|
||||
if (currentItemCount > 0 && lastPosition == currentItemCount - 1) {
|
||||
shouldScrollToBottom = true;
|
||||
}
|
||||
}
|
||||
adapter.addRPANComment(rpanComment);
|
||||
if (shouldScrollToBottom) {
|
||||
recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putBoolean(IS_MUTE_STATE, isMute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (dataSourceFactory == null) {
|
||||
dataSourceFactory = new CacheDataSource.Factory().setCache(mSimpleCache)
|
||||
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory().setUserAgent(APIUtils.USER_AGENT));
|
||||
// Prepare the player with the source.
|
||||
player.prepare();
|
||||
player.setMediaSource(new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(rpanBroadcast.rpanStream.hlsUrl)));
|
||||
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.LOOP_VIDEO, true)) {
|
||||
player.setRepeatMode(Player.REPEAT_MODE_ALL);
|
||||
} else {
|
||||
player.setRepeatMode(Player.REPEAT_MODE_OFF);
|
||||
}
|
||||
if (resumePosition > 0) {
|
||||
player.seekTo(resumePosition);
|
||||
}
|
||||
}
|
||||
|
||||
if (wasPlaying) {
|
||||
player.setPlayWhenReady(true);
|
||||
}
|
||||
|
||||
if (webSocket == null) {
|
||||
Request request = new Request.Builder().url(rpanBroadcast.rpanPost.liveCommentsWebsocketUrl).build();
|
||||
CommentStreamWebSocketListener listener = new CommentStreamWebSocketListener(this::parseComment);
|
||||
webSocket = okHttpClient.newWebSocket(request, listener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
wasPlaying = player.getPlayWhenReady();
|
||||
player.setPlayWhenReady(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
player.seekToDefaultPosition();
|
||||
player.stop(true);
|
||||
player.release();
|
||||
|
||||
if (webSocket != null) {
|
||||
webSocket.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
mActivity = (RPANActivity) context;
|
||||
}
|
||||
|
||||
private static class CommentStreamWebSocketListener extends WebSocketListener {
|
||||
MessageReceivedListener messageReceivedListener;
|
||||
|
||||
CommentStreamWebSocketListener(MessageReceivedListener messageReceivedListener) {
|
||||
this.messageReceivedListener = messageReceivedListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(@NonNull WebSocket webSocket, @NonNull String text) {
|
||||
messageReceivedListener.onMessage(text);
|
||||
}
|
||||
|
||||
interface MessageReceivedListener {
|
||||
void onMessage(String text);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M21,6h-7.59l3.29,-3.29L16,2l-4,4 -4,-4 -0.71,0.71L10.59,6L3,6c-1.1,0 -2,0.89 -2,2v12c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,8c0,-1.11 -0.9,-2 -2,-2zM21,20L3,20L3,8h18v12zM9,10v8l7,-4z"/>
|
||||
</vector>
|
@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M21,6h-7.59l3.29,-3.29L16,2l-4,4 -4,-4 -0.71,0.71L10.59,6L3,6c-1.1,0 -2,0.89 -2,2v12c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,8c0,-1.11 -0.9,-2 -2,-2zM21,20L3,20L3,8h18v12zM9,10v8l7,-4z"/>
|
||||
</vector>
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#000000"
|
||||
android:id="@+id/coordinator_layout_rpan_activity"
|
||||
android:keepScreenOn="true"
|
||||
tools:context=".activities.RPANActivity">
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/view_pager_2_rpan_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar_rpan_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -1,192 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#44000000"
|
||||
android:id="@+id/constraint_layout_exo_rpan_broadcast_playback_control_view"
|
||||
android:focusableInTouchMode="true"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/title_text_view_exo_rpan_broadcast_playback_control_view"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="1">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subreddit_name_text_view_exo_rpan_broadcast_playback_control_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:textColor="@color/colorAccent"
|
||||
app:layout_constraintBottom_toTopOf="@id/username_text_view_exo_rpan_broadcast_playback_control_view"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/barrier5" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/username_text_view_exo_rpan_broadcast_playback_control_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:textColor="#02BAEE"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/barrier5" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/barrier5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="end"
|
||||
app:constraint_referenced_ids="subreddit_icon_image_view_exo_rpan_broadcast_playback_control_view" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title_text_view_exo_rpan_broadcast_playback_control_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/control_linear_layout"
|
||||
app:layout_constraintVertical_bias="1" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/control_linear_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="4dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/hd_exo_rpan_broadcast_playback_control_view"
|
||||
style="@style/ExoMediaButton"
|
||||
android:src="@drawable/ic_video_quality_24dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toStartOf="@+id/exo_rew"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_rew"
|
||||
style="@style/ExoMediaButton.Rewind"
|
||||
app:layout_constraintEnd_toStartOf="@+id/exo_play"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/hd_exo_rpan_broadcast_playback_control_view"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_play"
|
||||
style="@style/ExoMediaButton.Play"
|
||||
app:layout_constraintEnd_toStartOf="@+id/exo_pause"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/exo_rew"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_pause"
|
||||
style="@style/ExoMediaButton.Pause"
|
||||
app:layout_constraintEnd_toStartOf="@+id/exo_ffwd"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/exo_play"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@id/exo_ffwd"
|
||||
style="@style/ExoMediaButton.FastForward"
|
||||
app:layout_constraintEnd_toStartOf="@+id/mute_exo_rpan_broadcast_playback_control_view"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/exo_pause"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/mute_exo_rpan_broadcast_playback_control_view"
|
||||
style="@style/ExoMediaButton"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/exo_ffwd"
|
||||
tools:layout_editor_absoluteY="4dp" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view_exo_rpan_broadcast_playback_control_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/control_linear_layout"
|
||||
app:layout_constraintBottom_toTopOf="@id/time_bar_linear_layout"
|
||||
app:layoutManager="ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/time_bar_linear_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:padding="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<TextView android:id="@id/exo_position"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:includeFontPadding="false"
|
||||
android:textColor="#FFFFFF"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.exoplayer2.ui.DefaultTimeBar
|
||||
android:id="@id/exo_progress"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="26dp"
|
||||
app:bar_height="2dp"
|
||||
app:scrubber_color="@color/colorAccent"
|
||||
app:played_color="@color/colorAccent" />
|
||||
|
||||
<TextView android:id="@id/exo_duration"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:includeFontPadding="false"
|
||||
android:textColor="#FFFFFF"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:context=".fragments.ViewRPANBroadcastFragment">
|
||||
|
||||
<com.google.android.exoplayer2.ui.PlayerView
|
||||
android:id="@+id/player_view_view_rpan_broadcast_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:controller_layout_id="@layout/exo_rpan_broadcast_playback_control_view" />
|
||||
|
||||
</FrameLayout>
|
@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_image_view_item_rpan_comment"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center_vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/author_text_view_item_rpan_comment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#02BAEE" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/content_text_view_item_rpan_comment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:textColor="#FFFFFF" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_share_rpan_link_rpan_activity"
|
||||
android:orderInCategory="1"
|
||||
android:title="@string/action_share_rpan_link"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share_post_link_rpan_activity"
|
||||
android:orderInCategory="1"
|
||||
android:title="@string/action_share_post_link"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
@ -1021,12 +1021,9 @@ Zpráva: %2$s"</string>
|
||||
|
||||
Stále chcete tuto možnost povolit?"</string>
|
||||
<string name="reply">"Odpovědět"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Příspěvek galerie"</string>
|
||||
<string name="trending_activity_label">"Trendy"</string>
|
||||
<string name="action_share_rpan_link">"Sdílet RPAN odkaz"</string>
|
||||
<string name="action_share_post_link">"Sdílet odkaz příspěvku"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Trendy"</string>
|
||||
<string name="receive_post_reply_notifications">"Získávat oznámení o odpovědích na příspěvek"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galerie"</string>
|
||||
@ -1056,9 +1053,6 @@ Pokud ano, přejmenujte je, než povolíte Material You."</string>
|
||||
<string name="upload_image_success">"Obrázek úspěšně nahrán. Klikněte znovu na tlačítko obrázku pro zobrazení nahraných obrázků."</string>
|
||||
<string name="get_image_bitmap_failed">"Nepodařilo se získat bitmapu obrázku"</string>
|
||||
<string name="upload_image_failed">"Nepodařilo se nahrát obrázek"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Nepodařilo se načíst vysílání RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Nepodařilo se parsovat vysílání RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Nepodařilo se parsovat vysílání RPAN"</string>
|
||||
<string name="search_comments">"Hledat komentáře"</string>
|
||||
<string name="please_wait_image_is_uploading">"Obrázek se stále nahrává. Čekejte prosím."</string>
|
||||
<string name="error_fetch_trending_search">"Získávání trendů selhalo.
|
||||
|
@ -1104,12 +1104,9 @@ Nachricht: %2$s"</string>
|
||||
|
||||
Möchtest du trotzdem fortfahren?"</string>
|
||||
<string name="reply">"Antworten"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Galeriebeitrag"</string>
|
||||
<string name="trending_activity_label">"Trending"</string>
|
||||
<string name="action_share_rpan_link">"Teile RPAN-Link"</string>
|
||||
<string name="action_share_post_link">"Teile Beitragslink"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Trending"</string>
|
||||
<string name="receive_post_reply_notifications">"Benachrichtigungen für Antworten auf Beiträge empfangen"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galerie"</string>
|
||||
@ -1141,9 +1138,6 @@ Benenne diese Themen sonst neu."</string>
|
||||
<string name="upload_image_success">"Bild erfolgreich hochgeladen. Klicken Sie nochmal auf Bilder um hochgeladene Bilder zu sehen."</string>
|
||||
<string name="get_image_bitmap_failed">"Konnte das Bitmap des Bildes nicht herunterladen"</string>
|
||||
<string name="upload_image_failed">"Das Bild konnte nicht hochgeladen werden"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"RPAN Broadcasts konnten nicht geladen werden"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"RPAN Broadcasts konnten nicht gelesen werden"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"RPAN Broadcast konnte nicht gelesen werden"</string>
|
||||
<string name="search_comments">"Kommentare durchsuchen"</string>
|
||||
<string name="please_wait_image_is_uploading">"Ein Bild wird noch hochgeladen. Bitte warten Sie."</string>
|
||||
|
||||
|
@ -1074,12 +1074,9 @@ Mensaje: %2$s"</string>
|
||||
|
||||
¿Seguro que quieres activarlo?"</string>
|
||||
<string name="reply">"Responder"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Publicación de galería"</string>
|
||||
<string name="trending_activity_label">"Tendencias"</string>
|
||||
<string name="action_share_rpan_link">"Compartir enlace de RPAN"</string>
|
||||
<string name="action_share_post_link">"Compartir enlace de publicación"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Tendencias"</string>
|
||||
<string name="receive_post_reply_notifications">"Recibir notificaciones de respuesta a publicaciones"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galería"</string>
|
||||
@ -1109,9 +1106,6 @@ De lo contrario, cambia el nombre antes de habilitar Material You."</string>
|
||||
<string name="upload_image_success">"Imagen subida correctamente. Haga clic en el botón de imagen nuevamente para ver las imágenes cargadas."</string>
|
||||
<string name="get_image_bitmap_failed">"No es posible obtener el mapa de bits de la imagen"</string>
|
||||
<string name="upload_image_failed">"No es posible subir la imagen"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"No es posible cargar transmisiones RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"No es posible analizar las transmisiones RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"No es posible analizar la transmisión RPAN"</string>
|
||||
<string name="search_comments">"Buscar comentarios"</string>
|
||||
<string name="please_wait_image_is_uploading">"Aún se está cargando una imagen. Espere por favor."</string>
|
||||
<string name="error_fetch_trending_search">"Falló la obtención de las búsquedas de tendencias.
|
||||
|
@ -1091,11 +1091,8 @@ Les onglets pourraient perdre tout leur contenu quand vous passez d'un onglet à
|
||||
|
||||
Vous voulez toujours l'activer ?"</string>
|
||||
<string name="reply">"Répondre"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="trending_activity_label">"Tendance"</string>
|
||||
<string name="action_share_rpan_link">"Partager le lien RPAN"</string>
|
||||
<string name="action_share_post_link">"Partager le lien du Post"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Tendance"</string>
|
||||
<string name="receive_post_reply_notifications">"Recevoir des notifications de réponse de publication"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Gallerie"</string>
|
||||
@ -1124,9 +1121,6 @@ Sinon, renommez-les avant d'activer Material You."</string>
|
||||
<string name="upload_image_success">"Image uploadée avec succès. Clique sur le bouton image de nouveau pour voir les images uploadées."</string>
|
||||
<string name="get_image_bitmap_failed">"Impossible d'obtenir le bitmap de l'image"</string>
|
||||
<string name="upload_image_failed">"Impossible d'uploader l'image"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Impossible de charger les diffusions RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Impossible d'analyser les diffusions RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Impossible d'analyser la diffusion RPAN"</string>
|
||||
<string name="search_comments">"Chercher des commentaires"</string>
|
||||
<string name="please_wait_image_is_uploading">"Une image est toujours sn train d'être uploadée. Merci d'attendre"</string>
|
||||
<string name="error_fetch_trending_search">"Échec de la récupération des recherches de tendance.
|
||||
|
@ -1010,12 +1010,9 @@ La riproduzione automatica video è disabilitata"</string>
|
||||
|
||||
Vuoi comunque abilitare l'opzione?"</string>
|
||||
<string name="reply">"Rispondi"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Galleria post"</string>
|
||||
<string name="trending_activity_label">"Popolari"</string>
|
||||
<string name="action_share_rpan_link">"Condividi link RPAN"</string>
|
||||
<string name="action_share_post_link">"Condividi post link"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Popolari"</string>
|
||||
<string name="receive_post_reply_notifications">"Ricevi notifiche per le risposte"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galleria"</string>
|
||||
@ -1045,9 +1042,6 @@ Se hai dei temi con questi nomi devi cambiarli prima di attivare la Personalizza
|
||||
<string name="upload_image_success">"Immagine caricata. Clicca sul pulsante delle immagini per vedere le altre immagini caricate"</string>
|
||||
<string name="get_image_bitmap_failed">"Impossibile prendere il bitmap dell'immagine"</string>
|
||||
<string name="upload_image_failed">"Impossibile caricare l'immagine"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Impossibile caricare RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Impossibile analizzare i broadcast RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Impossibile analizzare il broadcast RPAN"</string>
|
||||
<string name="search_comments">"Cerca tra i commenti"</string>
|
||||
<string name="please_wait_image_is_uploading">"Attendere prego. Immagine in caricamento"</string>
|
||||
<string name="error_fetch_trending_search">"Pagina non caricata. Tocca per riprovare"</string>
|
||||
|
@ -1009,12 +1009,9 @@ Bericht: %2$s"</string>
|
||||
|
||||
Wil je het nog steeds activeren?"</string>
|
||||
<string name="reply">"Antwoord"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Gallerijpost"</string>
|
||||
<string name="trending_activity_label">"Trending"</string>
|
||||
<string name="action_share_rpan_link">"Deel RPAN Link"</string>
|
||||
<string name="action_share_post_link">"Deel Post Link"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Trending"</string>
|
||||
<string name="receive_post_reply_notifications">"Ontvang Post Reactie Notificaties"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Gallerij"</string>
|
||||
@ -1039,7 +1036,6 @@ Zo wel, hernoem ze voordat je Material You aanzet."</string>
|
||||
<string name="uploading_image">"Uploaden"</string>
|
||||
<string name="upload_image_success">"Afbeelding succesvol geüpload. Klik de afbeelding knop nogmaals om de geüploade afbeeldingen te zien."</string>
|
||||
<string name="upload_image_failed">"Niet in staat de afbeelding te uploaden"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Kan RPAN uitzending Niet laden"</string>
|
||||
<string name="search_comments">"Zoek reacties"</string>
|
||||
<string name="please_wait_image_is_uploading">"Een afbeelding is nog aan het uploaden. Even geduld aub."</string>
|
||||
<string name="no_trending_search">"Geen trending zoekopdrachten gevonden. Tik om het opnieuw te proberen."</string>
|
||||
|
@ -1019,12 +1019,9 @@ Mensagem: %2$s"</string>
|
||||
|
||||
Ainda deseja ativá-lo?"</string>
|
||||
<string name="reply">"Responder"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Postar Galeria"</string>
|
||||
<string name="trending_activity_label">"Tendências"</string>
|
||||
<string name="action_share_rpan_link">"Compartilhar Link de RPAN"</string>
|
||||
<string name="action_share_post_link">"Compartilhar Link do Post"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Em Alta"</string>
|
||||
<string name="receive_post_reply_notifications">"Receber Notificações de Respostas às Postagens"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galeria"</string>
|
||||
@ -1054,9 +1051,6 @@ Se você tiver, os renomeie antes de ativar o Material You."</string>
|
||||
<string name="upload_image_success">"Imagem enviada com sucesso. Clique novamente no botão de imagem para ver as imagem enviadas."</string>
|
||||
<string name="get_image_bitmap_failed">"Erro ao receber o bitmap da imagem"</string>
|
||||
<string name="upload_image_failed">"Erro ao enviar a imagem"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Não foi possível carregar transmissões RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Não foi possível analisar transmissões RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Não foi possível analisar transmissão RPAN"</string>
|
||||
<string name="search_comments">"Procurar Comentários"</string>
|
||||
<string name="please_wait_image_is_uploading">"Uma imagem ainda está sendo enviada. Por favor, aguarde."</string>
|
||||
<string name="error_fetch_trending_search">"Busca de pesquisas em alta falhou.
|
||||
|
@ -1020,12 +1020,9 @@ Mensagem: %2$s"</string>
|
||||
|
||||
Ainda deseja ativar esta opção?"</string>
|
||||
<string name="reply">"Responder"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Publicação de Galeria"</string>
|
||||
<string name="trending_activity_label">"Tendências"</string>
|
||||
<string name="action_share_rpan_link">"Partilhar Endereço RPAN"</string>
|
||||
<string name="action_share_post_link">"Partilhar Endereço da Publicação"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Tendências"</string>
|
||||
<string name="receive_post_reply_notifications">"Receber notificações de respostas de publicações"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galeria"</string>
|
||||
@ -1055,9 +1052,6 @@ Caso contrário, altere o nome antes de ativar Material You"</string>
|
||||
<string name="upload_image_success">"Imagem enviada com sucesso. Clicar no botão da imagem para ver as imagens enviadas."</string>
|
||||
<string name="get_image_bitmap_failed">"Incapaz de obter o bitmap da imagem"</string>
|
||||
<string name="upload_image_failed">"Incapaz de enviar a imagem"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Não é possível carregar as emissões RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Não é possível analisar as emissões de RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Não é possível analisar a emissão de RPAN"</string>
|
||||
<string name="search_comments">"Pesquisar Comentários"</string>
|
||||
<string name="please_wait_image_is_uploading">"Uma imagem ainda a ser enviada. Por favor aguarde."</string>
|
||||
<string name="error_fetch_trending_search">"A obtenção de tendências falharam.
|
||||
|
@ -1063,12 +1063,9 @@ Mesaj: %2$s"</string>
|
||||
|
||||
Încă dorești să-l activezi?"</string>
|
||||
<string name="reply">"Răspunde"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Postare Galerie"</string>
|
||||
<string name="trending_activity_label">"În Tendințe"</string>
|
||||
<string name="action_share_rpan_link">"Distribuie Link-ul RPAN"</string>
|
||||
<string name="action_share_post_link">"Distribuie Link-ul Postării"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"În Tendințe"</string>
|
||||
<string name="receive_post_reply_notifications">"Primește notificări de răspuns la postări"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galerie"</string>
|
||||
@ -1098,9 +1095,6 @@ Mesaj: %2$s"</string>
|
||||
<string name="upload_image_success">"Imaginea a fost încărcată cu succes. Apasă din nou pe butonul de imagine pentru a vedea imaginile încărcate."</string>
|
||||
<string name="get_image_bitmap_failed">"Nu s-a putut obține bitmap-ul imaginii"</string>
|
||||
<string name="upload_image_failed">"Nu s-a putut încărca imaginea"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Nu s-a putut încărca emisiunile RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Nu s-a putut afișa emisiunile RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Nu s-a putut afișa emisiunea RPAN"</string>
|
||||
<string name="search_comments">"Caută Comentariile"</string>
|
||||
<string name="please_wait_image_is_uploading">"O imagine este încă în curs de încărcare. Te rugăm să aștepți."</string>
|
||||
<string name="error_fetch_trending_search">"Obținerea căutărilor în tendințe a eșuat.
|
||||
|
@ -1033,12 +1033,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
|
||||
Всё ещё хотите включить его?"</string>
|
||||
<string name="reply">"Ответ"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Пост в галерее"</string>
|
||||
<string name="trending_activity_label">"Популярное"</string>
|
||||
<string name="action_share_rpan_link">"Поделиться ссылкой RPAN"</string>
|
||||
<string name="action_share_post_link">"Поделиться ссылкой на пост"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Популярное"</string>
|
||||
<string name="receive_post_reply_notifications">"Получать уведомления об ответах на пост"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Галерея"</string>
|
||||
@ -1068,9 +1065,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="upload_image_success">"Изображение успешно загружено. Нажмите кнопку «Изображение» ещё раз, чтобы просмотреть загруженные изображения."</string>
|
||||
<string name="get_image_bitmap_failed">"Невозможно получить растровое изображение"</string>
|
||||
<string name="upload_image_failed">"Невозможно загрузить изображение"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Невозможно загрузить широковещательные сообщения RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Невозможно разобрать широковещательные сообщения RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Невозможно разобрать широковещательную передачу RPAN"</string>
|
||||
<string name="search_comments">"Поиск комментариев"</string>
|
||||
<string name="please_wait_image_is_uploading">"Изображение загружается, подождите."</string>
|
||||
<string name="error_fetch_trending_search">"Невозможно получить популярные поисковые запросы.
|
||||
|
@ -1063,12 +1063,9 @@ Yine de etkinleştirmek istiyor musunuz?"</string>
|
||||
<string name="reply">"Yanıtla"</string>
|
||||
|
||||
<!-- What is RPAN? -->
|
||||
<string name="rpan_activity_label">"Canlı Yayın"</string>
|
||||
<string name="post_gallery_activity_label">"Galeri Gönderisi"</string>
|
||||
<string name="trending_activity_label">"Trendler"</string>
|
||||
<string name="action_share_rpan_link">"Canlı Yayın Bağlantısını Paylaş"</string>
|
||||
<string name="action_share_post_link">"Gönderi Bağlantısını Paylaş"</string>
|
||||
<string name="rpan">"Canlı Yayın"</string>
|
||||
<string name="trending">"Trendler"</string>
|
||||
<string name="receive_post_reply_notifications">"Gönderi yanıtlanınca bildirimlerini al"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Galeri"</string>
|
||||
@ -1098,9 +1095,6 @@ Yoksa, Material You'u etkinleştirmeden önce bunları yeniden adlandırın."</s
|
||||
<string name="upload_image_success">"Fotoğraf başarıyla yüklendi. Yüklenen fotoğrafları görmek için fotoğraf düğmesine tekrar tıklayın."</string>
|
||||
<string name="get_image_bitmap_failed">"Fotoğrafın bitmap'i alınamıyor"</string>
|
||||
<string name="upload_image_failed">"Fotoğraf yüklenemiyor"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Canlı Yayınlar yüklenemiyor"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Canlı Yayınlar ayrıştırılamıyor"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Canlı Yayın ayrıştırılamıyor"</string>
|
||||
<string name="search_comments">"Yorumları Ara"</string>
|
||||
<string name="please_wait_image_is_uploading">"Hâlâ bir fotoğraf yükleniyor. Lütfen bekleyin."</string>
|
||||
<string name="error_fetch_trending_search">"Trend aramalar getirilemedi.
|
||||
|
@ -1013,12 +1013,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
|
||||
Усе ще бажаєте ввімкнути це?"</string>
|
||||
<string name="reply">"Відповісти"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Допис галереї"</string>
|
||||
<string name="trending_activity_label">"Тенденції"</string>
|
||||
<string name="action_share_rpan_link">"Поширити ланку RPAN"</string>
|
||||
<string name="action_share_post_link">"Поширити ланку допису"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Тенденції"</string>
|
||||
<string name="receive_post_reply_notifications">"Отримувати сповіщення про відповіді на дописи"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Галерея"</string>
|
||||
@ -1048,9 +1045,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="upload_image_success">"Зображення успішно відвантажене. Клацніть кнопку зображення ще раз, щоб переглянути відвантажені зображення."</string>
|
||||
<string name="get_image_bitmap_failed">"Неможливо отримати bitmap зображення"</string>
|
||||
<string name="upload_image_failed">"Неможливо відвантажити зображення"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Не вдалося завантажити трансляції RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Не вдалося проаналізувати трансляції RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Не вдалося проаналізувати трансляцію RPAN"</string>
|
||||
<string name="search_comments">"Пошук коментарів"</string>
|
||||
<string name="please_wait_image_is_uploading">"Зображення все ще завантажується. Будь ласка, зачекайте."</string>
|
||||
<string name="error_fetch_trending_search">"Не вдалося отримати тенденції пошуку.
|
||||
|
@ -1034,12 +1034,9 @@ Thông báo: %2$s"</string>
|
||||
|
||||
Bạn có vẫn muốn bật tuỳ chọn này không?"</string>
|
||||
<string name="reply">"Trả lời"</string>
|
||||
<string name="rpan_activity_label">"RPAN"</string>
|
||||
<string name="post_gallery_activity_label">"Bài đăng bộ sưu tập"</string>
|
||||
<string name="trending_activity_label">"Trending"</string>
|
||||
<string name="action_share_rpan_link">"Chia sẻ đường link RPAN"</string>
|
||||
<string name="action_share_post_link">"Chia sẻ đường link bài đăng"</string>
|
||||
<string name="rpan">"RPAN"</string>
|
||||
<string name="trending">"Trending"</string>
|
||||
<string name="receive_post_reply_notifications">"Nhận thông báo trả lời trong bài đăng"</string>
|
||||
<string name="bottom_sheet_post_gallery">"Bộ sưu tập"</string>
|
||||
@ -1069,9 +1066,6 @@ Nếu không thì thay tên chúng trước khi Bật Material You."</string>
|
||||
<string name="upload_image_success">"Tải hình ảnh thành công. Ấn vào nút hình ảnh lần nữa để thấy hình ảnh vửa tải lên."</string>
|
||||
<string name="get_image_bitmap_failed">"Không thể lấy bitmap của hình ảnh"</string>
|
||||
<string name="upload_image_failed">"Không thể tải hình ảnh lên"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"Không thể tải broadcast RPAN"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"Không thể xử lý broadcast RPAN"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"Không thể xử lý broadcast RPAN"</string>
|
||||
<string name="search_comments">"Tìm kiếm bình luận"</string>
|
||||
<string name="please_wait_image_is_uploading">"Hình ảnh vẫn đang tải. Vui lòng đợi."</string>
|
||||
<string name="error_fetch_trending_search">"Lấy mục tìm kiếm thịnh hành thất bại.
|
||||
|
@ -1102,12 +1102,9 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
|
||||
仍然要继续吗?"</string>
|
||||
<string name="reply">"回复"</string>
|
||||
<string name="rpan_activity_label">"直播"</string>
|
||||
<string name="post_gallery_activity_label">"相册帖"</string>
|
||||
<string name="trending_activity_label">"热门"</string>
|
||||
<string name="action_share_rpan_link">"分享直播链接"</string>
|
||||
<string name="action_share_post_link">"分享帖子链接"</string>
|
||||
<string name="rpan">"直播"</string>
|
||||
<string name="trending">"热门"</string>
|
||||
<string name="receive_post_reply_notifications">"接收帖子回复提醒"</string>
|
||||
<string name="bottom_sheet_post_gallery">"相册"</string>
|
||||
@ -1137,9 +1134,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="upload_image_success">"上传图片成功。再次点击图片按钮查看已上传的图片。"</string>
|
||||
<string name="get_image_bitmap_failed">"无法获取图片位图"</string>
|
||||
<string name="upload_image_failed">"无法上传图片"</string>
|
||||
<string name="load_rpan_broadcasts_failed">"无法加载 RPAN 直播"</string>
|
||||
<string name="parse_rpan_broadcasts_failed">"无法解析 RPAN 直播"</string>
|
||||
<string name="parse_rpan_broadcast_failed">"无法解析 RPAN 直播"</string>
|
||||
<string name="search_comments">"搜索评论"</string>
|
||||
<string name="please_wait_image_is_uploading">"仍有图片正在上传,请稍候。"</string>
|
||||
<string name="error_fetch_trending_search">"获取热搜失败。
|
||||
|
@ -39,7 +39,6 @@
|
||||
<string name="post_filter_preference_activity_label">Post Filter</string>
|
||||
<string name="search_users_result_activity_label">Users</string>
|
||||
<string name="multireddit_selection_activity_label">Select a Multireddit</string>
|
||||
<string name="rpan_activity_label">RPAN</string>
|
||||
<string name="post_gallery_activity_label">Gallery Post</string>
|
||||
<string name="trending_activity_label">Trending</string>
|
||||
<string name="wiki_activity_label">Wiki</string>
|
||||
@ -91,7 +90,6 @@
|
||||
<string name="action_add_to_post_filter">Add to Post Filter</string>
|
||||
<string name="action_delete_logs">Delete Logs</string>
|
||||
<string name="action_create_github_issue">Create GitHub Issue</string>
|
||||
<string name="action_share_rpan_link">Share RPAN Link</string>
|
||||
<string name="action_share_post_link">Share Post Link</string>
|
||||
<string name="action_go_to_wiki">Go to Wiki</string>
|
||||
<string name="action_playback_speed">Playback Speed</string>
|
||||
@ -139,7 +137,6 @@
|
||||
<string name="history">History</string>
|
||||
<string name="inbox">Inbox</string>
|
||||
<string name="inbox_with_count">Inbox (%1$,d)</string>
|
||||
<string name="rpan">RPAN</string>
|
||||
<string name="trending">Trending</string>
|
||||
<string name="upvoted">Upvoted</string>
|
||||
<string name="downvoted">Downvoted</string>
|
||||
@ -1211,10 +1208,6 @@
|
||||
<string name="get_image_bitmap_failed">Unable to get the bitmap of the image</string>
|
||||
<string name="upload_image_failed">Unable to upload the image</string>
|
||||
|
||||
<string name="load_rpan_broadcasts_failed">Cannot load RPAN broadcasts</string>
|
||||
<string name="parse_rpan_broadcasts_failed">Cannot parse RPAN broadcasts</string>
|
||||
<string name="parse_rpan_broadcast_failed">Cannot parse RPAN broadcast</string>
|
||||
|
||||
<string name="search_comments">Search Comments</string>
|
||||
|
||||
<string name="please_wait_image_is_uploading">An image is still being uploaded. Please wait.</string>
|
||||
|
Loading…
Reference in New Issue
Block a user