1
0
mirror of https://framagit.org/tom79/fedilab-tube synced 2025-06-05 21:09:11 +02:00

Filter languages

This commit is contained in:
Thomas
2020-09-20 15:14:48 +02:00
parent 7a8e2f32b4
commit a1790bf32d
8 changed files with 115 additions and 27 deletions

View File

@ -75,9 +75,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.PlayerControlView;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util;
@ -360,7 +358,11 @@ public class PeertubeActivity extends AppCompatActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
if (playInMinimized && player != null) {
enterVideoMode();
} else {
finish();
}
return true;
} else if (item.getItemId() == R.id.action_report) {
androidx.appcompat.app.AlertDialog.Builder dialogBuilder = new androidx.appcompat.app.AlertDialog.Builder(PeertubeActivity.this);
@ -707,8 +709,7 @@ public class PeertubeActivity extends AppCompatActivity {
if (player != null)
player.release();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory());
player = ExoPlayerFactory.newSimpleInstance(PeertubeActivity.this, trackSelector);
ProgressiveMediaSource videoSource;
MediaSource subtitleSource = null;
@ -724,13 +725,16 @@ public class PeertubeActivity extends AppCompatActivity {
videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(apiResponse.getPeertubes().get(0).getFileUrl(null, PeertubeActivity.this)));
if (uri != null)
subtitleSource = new SingleSampleMediaSource(uri, dataSourceFactory, subtitleFormat, C.TIME_UNSET);
subtitleSource = new SingleSampleMediaSource.Factory(dataSourceFactory).createMediaSource(uri, subtitleFormat, C.TIME_UNSET);
// subtitleSource = new SingleSampleMediaSource(uri, dataSourceFactory, subtitleFormat, C.TIME_UNSET);
} else {
CacheDataSourceFactory cacheDataSourceFactory = new CacheDataSourceFactory(PeertubeActivity.this);
videoSource = new ProgressiveMediaSource.Factory(cacheDataSourceFactory)
.createMediaSource(Uri.parse(apiResponse.getPeertubes().get(0).getFileUrl(null, PeertubeActivity.this)));
if (uri != null)
subtitleSource = new SingleSampleMediaSource(uri, cacheDataSourceFactory, subtitleFormat, C.TIME_UNSET);
subtitleSource = new SingleSampleMediaSource.Factory(cacheDataSourceFactory).createMediaSource(uri, subtitleFormat, C.TIME_UNSET);
// subtitleSource = new SingleSampleMediaSource(uri, cacheDataSourceFactory, subtitleFormat, C.TIME_UNSET);
}
playerView.setPlayer(player);
@ -744,13 +748,13 @@ public class PeertubeActivity extends AppCompatActivity {
player.seekTo(0, position);
player.setPlayWhenReady(true);
dialog.dismiss();
});
dialogBuilder.setOnDismissListener(dialogInterface -> {
});
dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> dialog.dismiss());
dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
androidx.appcompat.app.AlertDialog alertDialog = dialogBuilder.create();
alertDialog.setTitle(getString(R.string.pickup_captions));
@ -817,9 +821,14 @@ public class PeertubeActivity extends AppCompatActivity {
Toasty.error(PeertubeActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
return;
}
List<Status> statuses = apiResponse.getStatuses();
List<Status> statuses = new ArrayList<>();
for (Status status : apiResponse.getStatuses()) {
if (status.getContent() != null && status.getContent().trim().length() > 0) {
statuses.add(status);
}
}
RecyclerView lv_comments = findViewById(R.id.peertube_comments);
if (statuses != null && statuses.size() > 0) {
if (statuses.size() > 0) {
lv_comments.setVisibility(View.VISIBLE);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
@ -891,7 +900,7 @@ public class PeertubeActivity extends AppCompatActivity {
} else {
setFullscreen(FullScreenMediaController.fullscreen.OFF);
if (onStopCalled) {
finish();
finishAndRemoveTask();
}
}
}

View File

@ -41,6 +41,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import app.fedilab.fedilabtube.BuildConfig;
import app.fedilab.fedilabtube.R;
@ -1494,7 +1495,16 @@ public class PeertubeAPI {
params.put("sort", "publishedAt");
if (filter != null)
params.put("filter", filter);
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
Set<String> selection = sharedpreferences.getStringSet(context.getString(R.string.set_video_language_choice), null);
if (selection != null && selection.size() > 0) {
StringBuilder parameters = new StringBuilder();
for (String languageOneOf : selection)
parameters.append("languageOneOf[]=").append(languageOneOf).append("&");
parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(16));
params.put("languageOneOf[]", parameters.toString());
}
boolean nsfw = sharedpreferences.getBoolean(Helper.SET_VIDEO_NSFW, false);
params.put("nsfw", String.valueOf(nsfw));
List<Peertube> peertubes = new ArrayList<>();

View File

@ -111,7 +111,7 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
status.setVisibility("public");
}
if (status.getAccount().getId().equals(userId))
if (status.getAccount() != null && status.getAccount().getId().equals(userId))
holder.status_peertube_delete.setVisibility(View.VISIBLE);
else
holder.status_peertube_delete.setVisibility(View.GONE);
@ -150,23 +150,23 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
final Account accountForUrl;
accountForUrl = status.getAccount();
holder.status_account_displayname.setVisibility(View.GONE);
holder.status_account_displayname_owner.setText(status.getAccount().getUsername().replace("@", ""), TextView.BufferType.SPANNABLE);
if (status.getAccount() != null) {
holder.status_account_displayname_owner.setText(status.getAccount().getUsername().replace("@", ""), TextView.BufferType.SPANNABLE);
Spannable wordtoSpan;
Pattern hashAcct;
wordtoSpan = new SpannableString("@" + status.getAccount().getAcct());
hashAcct = Pattern.compile("(@" + status.getAccount().getAcct() + ")");
Matcher matcherAcct = hashAcct.matcher(wordtoSpan);
while (matcherAcct.find()) {
int matchStart = matcherAcct.start(1);
int matchEnd = matcherAcct.end();
if (wordtoSpan.length() >= matchEnd && matchStart < matchEnd) {
wordtoSpan.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, android.R.color.darker_gray)), matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
Spannable wordtoSpan;
Pattern hashAcct;
wordtoSpan = new SpannableString("@" + status.getAccount().getAcct());
hashAcct = Pattern.compile("(@" + status.getAccount().getAcct() + ")");
Matcher matcherAcct = hashAcct.matcher(wordtoSpan);
while (matcherAcct.find()) {
int matchStart = matcherAcct.start(1);
int matchEnd = matcherAcct.end();
if (wordtoSpan.length() >= matchEnd && matchStart < matchEnd) {
wordtoSpan.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, android.R.color.darker_gray)), matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
holder.status_account_username.setText(wordtoSpan);
}
holder.status_account_username.setText(wordtoSpan);
holder.status_toot_date.setText(Helper.dateDiff(context, status.getCreated_at()));

View File

@ -6,17 +6,26 @@ import android.os.Bundle;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.ListPreference;
import androidx.preference.MultiSelectListPreference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import app.fedilab.fedilabtube.R;
import app.fedilab.fedilabtube.helper.Helper;
import es.dmoral.toasty.Toasty;
import static app.fedilab.fedilabtube.MainActivity.peertubeInformation;
/* Copyright 2020 Thomas Schneider
*
* This file is a part of TubeLab
@ -82,8 +91,14 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
}
if (key.compareTo(getString(R.string.set_video_minimize_choice)) == 0) {
SwitchPreference set_video_minimize_choice = findPreference(getString(R.string.set_video_minimize_choice));
assert set_video_minimize_choice != null;
editor.putBoolean(getString(R.string.set_video_minimize_choice), set_video_minimize_choice.isChecked());
}
if (key.compareTo(getString(R.string.set_video_language_choice)) == 0) {
MultiSelectListPreference set_video_language_choice = findPreference(getString(R.string.set_video_language_choice));
assert set_video_language_choice != null;
editor.putStringSet(getString(R.string.set_video_language_choice), set_video_language_choice.getValues());
}
editor.apply();
}
}
@ -117,6 +132,29 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
boolean minimized = sharedpref.getBoolean(getString(R.string.set_video_minimize_choice), true);
SwitchPreference set_video_minimize_choice = findPreference(getString(R.string.set_video_minimize_choice));
assert set_video_minimize_choice != null;
set_video_minimize_choice.setChecked(minimized);
LinkedHashMap<String, String> languages = new LinkedHashMap<>(peertubeInformation.getLanguages());
List<CharSequence> entriesLanguages = new ArrayList<>();
List<CharSequence> valuesLanguages = new ArrayList<>();
Iterator<Map.Entry<String, String>> it = languages.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pair = it.next();
entriesLanguages.add(pair.getValue());
valuesLanguages.add(pair.getKey());
it.remove();
}
MultiSelectListPreference set_video_language_choice = findPreference(getString(R.string.set_video_language_choice));
Set<String> selection = sharedpref.getStringSet(getString(R.string.set_video_language_choice), null);
assert set_video_language_choice != null;
set_video_language_choice.setEntries(entriesLanguages.toArray(new CharSequence[]{}));
set_video_language_choice.setEntryValues(valuesLanguages.toArray(new CharSequence[]{}));
if (selection != null) {
set_video_language_choice.setValues(selection);
}
}
}