mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-21 15:40:32 +00:00
Merge pull request #7613 from litetex/increase-minsdk
Bump minSdk to 21 - Android 5 / Lollipop
This commit is contained in:
commit
bc3731265e
@ -14,15 +14,12 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "org.schabi.newpipe"
|
||||
resValue "string", "app_name", "NewPipe"
|
||||
minSdk 19
|
||||
minSdk 21
|
||||
targetSdk 29
|
||||
versionCode 987
|
||||
versionName "0.23.1"
|
||||
|
||||
multiDexEnabled true
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
@ -210,7 +207,6 @@ dependencies {
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
|
||||
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
|
||||
implementation 'androidx.media:media:1.5.0'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'androidx.preference:preference:1.2.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||
implementation "androidx.room:room-runtime:${androidxRoomVersion}"
|
||||
@ -220,7 +216,6 @@ dependencies {
|
||||
// Newer version specified to prevent accessibility regressions with RecyclerView, see:
|
||||
// https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
||||
implementation 'androidx.webkit:webkit:1.4.0'
|
||||
implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}"
|
||||
implementation "androidx.work:work-rxjava3:${androidxWorkVersion}"
|
||||
implementation 'com.google.android.material:material:1.5.0'
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
@ -7,7 +8,6 @@ import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.NotificationChannelCompat;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
import androidx.multidex.MultiDexApplication;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.jakewharton.processphoenix.ProcessPhoenix;
|
||||
@ -56,7 +56,7 @@ import io.reactivex.rxjava3.plugins.RxJavaPlugins;
|
||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class App extends MultiDexApplication {
|
||||
public class App extends Application {
|
||||
public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID;
|
||||
private static final String TAG = App.class.toString();
|
||||
private static App app;
|
||||
|
@ -1,7 +1,6 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@ -14,33 +13,18 @@ import org.schabi.newpipe.extractor.downloader.Response;
|
||||
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
|
||||
import org.schabi.newpipe.util.CookieUtils;
|
||||
import org.schabi.newpipe.util.InfoCache;
|
||||
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.TrustManagerFactory;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
import okhttp3.CipherSuite;
|
||||
import okhttp3.ConnectionSpec;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.ResponseBody;
|
||||
|
||||
import static org.schabi.newpipe.MainActivity.DEBUG;
|
||||
|
||||
public final class DownloaderImpl extends Downloader {
|
||||
public static final String USER_AGENT
|
||||
= "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0";
|
||||
@ -54,9 +38,6 @@ public final class DownloaderImpl extends Downloader {
|
||||
private final OkHttpClient client;
|
||||
|
||||
private DownloaderImpl(final OkHttpClient.Builder builder) {
|
||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
|
||||
enableModernTLS(builder);
|
||||
}
|
||||
this.client = builder
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
// .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"),
|
||||
@ -81,55 +62,6 @@ public final class DownloaderImpl extends Downloader {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable TLS 1.2 and 1.1 on Android Kitkat. This function is mostly taken
|
||||
* from the documentation of OkHttpClient.Builder.sslSocketFactory(_,_).
|
||||
* <p>
|
||||
* If there is an error, the function will safely fall back to doing nothing
|
||||
* and printing the error to the console.
|
||||
* </p>
|
||||
*
|
||||
* @param builder The HTTPClient Builder on which TLS is enabled on (will be modified in-place)
|
||||
*/
|
||||
private static void enableModernTLS(final OkHttpClient.Builder builder) {
|
||||
try {
|
||||
// get the default TrustManager
|
||||
final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
|
||||
TrustManagerFactory.getDefaultAlgorithm());
|
||||
trustManagerFactory.init((KeyStore) null);
|
||||
final TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
|
||||
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
|
||||
throw new IllegalStateException("Unexpected default trust managers:"
|
||||
+ Arrays.toString(trustManagers));
|
||||
}
|
||||
final X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
|
||||
|
||||
// insert our own TLSSocketFactory
|
||||
final SSLSocketFactory sslSocketFactory = TLSSocketFactoryCompat.getInstance();
|
||||
|
||||
builder.sslSocketFactory(sslSocketFactory, trustManager);
|
||||
|
||||
// This will try to enable all modern CipherSuites(+2 more)
|
||||
// that are supported on the device.
|
||||
// Necessary because some servers (e.g. Framatube.org)
|
||||
// don't support the old cipher suites.
|
||||
// https://github.com/square/okhttp/issues/4053#issuecomment-402579554
|
||||
final List<CipherSuite> cipherSuites =
|
||||
new ArrayList<>(ConnectionSpec.MODERN_TLS.cipherSuites());
|
||||
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA);
|
||||
cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA);
|
||||
final ConnectionSpec legacyTLS = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
|
||||
.cipherSuites(cipherSuites.toArray(new CipherSuite[0]))
|
||||
.build();
|
||||
|
||||
builder.connectionSpecs(Arrays.asList(legacyTLS, ConnectionSpec.CLEARTEXT));
|
||||
} catch (final KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
|
||||
if (DEBUG) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getCookies(final String url) {
|
||||
final List<String> resultCookies = new ArrayList<>();
|
||||
if (url.contains(YOUTUBE_DOMAIN)) {
|
||||
|
@ -3,7 +3,6 @@ package org.schabi.newpipe;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.schabi.newpipe.util.NavigationHelper;
|
||||
@ -44,11 +43,7 @@ public class ExitActivity extends Activity {
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
finishAndRemoveTask();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
finishAndRemoveTask();
|
||||
|
||||
NavigationHelper.restartApp(this);
|
||||
}
|
||||
|
@ -28,7 +28,6 @@ import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@ -86,7 +85,6 @@ import org.schabi.newpipe.util.PermissionHelper;
|
||||
import org.schabi.newpipe.util.SerializedCache;
|
||||
import org.schabi.newpipe.util.ServiceHelper;
|
||||
import org.schabi.newpipe.util.StateSaver;
|
||||
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
|
||||
import org.schabi.newpipe.util.ThemeHelper;
|
||||
import org.schabi.newpipe.views.FocusOverlayView;
|
||||
|
||||
@ -131,11 +129,6 @@ public class MainActivity extends AppCompatActivity {
|
||||
+ "savedInstanceState = [" + savedInstanceState + "]");
|
||||
}
|
||||
|
||||
// enable TLS1.1/1.2 for kitkat devices, to fix download and play for media.ccc.de sources
|
||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
|
||||
TLSSocketFactoryCompat.setAsDefault();
|
||||
}
|
||||
|
||||
ThemeHelper.setDayNightMode(this);
|
||||
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this));
|
||||
|
||||
|
@ -3,7 +3,6 @@ package org.schabi.newpipe;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
/*
|
||||
@ -40,10 +39,6 @@ public class PanicResponderActivity extends Activity {
|
||||
ExitActivity.exitAndRemoveFromRecentApps(this);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
finishAndRemoveTask();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
finishAndRemoveTask();
|
||||
}
|
||||
}
|
||||
|
@ -114,13 +114,7 @@ class ErrorUtil {
|
||||
context,
|
||||
context.getString(R.string.error_report_channel_id)
|
||||
)
|
||||
.setSmallIcon(
|
||||
// the vector drawable icon causes crashes on KitKat devices
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||
R.drawable.ic_bug_report
|
||||
else
|
||||
android.R.drawable.stat_notify_error
|
||||
)
|
||||
.setSmallIcon(R.drawable.ic_bug_report)
|
||||
.setContentTitle(context.getString(R.string.error_report_notification_title))
|
||||
.setContentText(context.getString(errorInfo.messageStringId))
|
||||
.setAutoCancel(true)
|
||||
|
@ -3,14 +3,15 @@ package org.schabi.newpipe.error;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.WebResourceRequest;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@ -18,7 +19,6 @@ import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.app.NavUtils;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.webkit.WebViewClientCompat;
|
||||
|
||||
import org.schabi.newpipe.databinding.ActivityRecaptchaBinding;
|
||||
import org.schabi.newpipe.DownloaderImpl;
|
||||
@ -86,14 +86,15 @@ public class ReCaptchaActivity extends AppCompatActivity {
|
||||
webSettings.setJavaScriptEnabled(true);
|
||||
webSettings.setUserAgentString(DownloaderImpl.USER_AGENT);
|
||||
|
||||
recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClientCompat() {
|
||||
recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
|
||||
public boolean shouldOverrideUrlLoading(final WebView view,
|
||||
final WebResourceRequest request) {
|
||||
if (MainActivity.DEBUG) {
|
||||
Log.d(TAG, "shouldOverrideUrlLoading: url=" + url);
|
||||
Log.d(TAG, "shouldOverrideUrlLoading: url=" + request.getUrl().toString());
|
||||
}
|
||||
|
||||
handleCookiesFromUrl(url);
|
||||
handleCookiesFromUrl(request.getUrl().toString());
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -107,12 +108,7 @@ public class ReCaptchaActivity extends AppCompatActivity {
|
||||
// cleaning cache, history and cookies from webView
|
||||
recaptchaBinding.reCaptchaWebView.clearCache(true);
|
||||
recaptchaBinding.reCaptchaWebView.clearHistory();
|
||||
final CookieManager cookieManager = CookieManager.getInstance();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
cookieManager.removeAllCookies(value -> { });
|
||||
} else {
|
||||
cookieManager.removeAllCookie();
|
||||
}
|
||||
CookieManager.getInstance().removeAllCookies(null);
|
||||
|
||||
recaptchaBinding.reCaptchaWebView.loadUrl(url);
|
||||
}
|
||||
|
@ -1922,13 +1922,7 @@ public final class VideoDetailFragment
|
||||
}
|
||||
scrollToTop();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
addVideoPlayerView();
|
||||
} else {
|
||||
// KitKat needs a delay before addVideoPlayerView call or it reports wrong height in
|
||||
// activity.getWindow().getDecorView().getHeight()
|
||||
new Handler().post(this::addVideoPlayerView);
|
||||
}
|
||||
addVideoPlayerView();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1991,10 +1985,8 @@ public final class VideoDetailFragment
|
||||
}
|
||||
activity.getWindow().getDecorView().setSystemUiVisibility(0);
|
||||
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr(
|
||||
requireContext(), android.R.attr.colorPrimary));
|
||||
}
|
||||
activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr(
|
||||
requireContext(), android.R.attr.colorPrimary));
|
||||
}
|
||||
|
||||
private void hideSystemUi() {
|
||||
@ -2025,8 +2017,7 @@ public final class VideoDetailFragment
|
||||
}
|
||||
activity.getWindow().getDecorView().setSystemUiVisibility(visibility);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
||||
&& (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen()))) {
|
||||
if (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen())) {
|
||||
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
|
||||
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
|
||||
}
|
||||
|
@ -497,9 +497,6 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
|
||||
+ lastSearchedString);
|
||||
}
|
||||
searchEditText.setText(searchString);
|
||||
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
|
||||
searchEditText.setHintTextColor(searchEditText.getTextColors().withAlpha(128));
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(searchString) || TextUtils.isEmpty(searchEditText.getText())) {
|
||||
searchToolbarContainer.setTranslationX(100);
|
||||
|
@ -12,7 +12,6 @@ import android.view.View
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.FloatRange
|
||||
import androidx.core.animation.addListener
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
@ -21,10 +20,6 @@ import org.schabi.newpipe.MainActivity
|
||||
|
||||
private const val TAG = "ViewUtils"
|
||||
|
||||
inline var View.backgroundTintListCompat: ColorStateList?
|
||||
get() = ViewCompat.getBackgroundTintList(this)
|
||||
set(value) = ViewCompat.setBackgroundTintList(this, value)
|
||||
|
||||
/**
|
||||
* Animate the view.
|
||||
*
|
||||
@ -106,11 +101,11 @@ fun View.animateBackgroundColor(duration: Long, @ColorInt colorStart: Int, @Colo
|
||||
viewPropertyAnimator.interpolator = FastOutSlowInInterpolator()
|
||||
viewPropertyAnimator.duration = duration
|
||||
viewPropertyAnimator.addUpdateListener { animation: ValueAnimator ->
|
||||
backgroundTintListCompat = ColorStateList(empty, intArrayOf(animation.animatedValue as Int))
|
||||
backgroundTintList = ColorStateList(empty, intArrayOf(animation.animatedValue as Int))
|
||||
}
|
||||
viewPropertyAnimator.addListener(
|
||||
onCancel = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) },
|
||||
onEnd = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) }
|
||||
onCancel = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) },
|
||||
onEnd = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) }
|
||||
)
|
||||
viewPropertyAnimator.start()
|
||||
}
|
||||
|
@ -8,12 +8,10 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.widget.ImageViewCompat
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.Observer
|
||||
@ -124,14 +122,6 @@ class FeedGroupDialog : DialogFragment(), BackPressable {
|
||||
_feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view)
|
||||
_searchLayoutBinding = feedGroupCreateBinding.subscriptionsHeaderSearchContainer
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
|
||||
// KitKat doesn't apply container's theme to <include> content
|
||||
val contrastColor = AppCompatResources.getColorStateList(requireContext(), R.color.contrastColor)
|
||||
searchLayoutBinding.toolbarSearchEditText.setTextColor(contrastColor)
|
||||
searchLayoutBinding.toolbarSearchEditText.setHintTextColor(contrastColor.withAlpha(128))
|
||||
ImageViewCompat.setImageTintList(searchLayoutBinding.toolbarSearchClearIcon, contrastColor)
|
||||
}
|
||||
|
||||
viewModel = ViewModelProvider(
|
||||
this,
|
||||
FeedGroupDialogViewModel.Factory(
|
||||
|
@ -1963,10 +1963,9 @@ public final class Player implements
|
||||
private void showSystemUIPartially() {
|
||||
final AppCompatActivity activity = getParentActivity();
|
||||
if (isFullscreen && activity != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
|
||||
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
|
||||
}
|
||||
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
|
||||
activity.getWindow().setNavigationBarColor(Color.TRANSPARENT);
|
||||
|
||||
final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
|
||||
|
@ -74,7 +74,7 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment {
|
||||
defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply();
|
||||
defaultPreferences.edit().putString(themeKey, newValue.toString()).apply();
|
||||
|
||||
ThemeHelper.setDayNightMode(getContext(), newValue.toString());
|
||||
ThemeHelper.setDayNightMode(requireContext(), newValue.toString());
|
||||
|
||||
if (!newValue.equals(beginningThemeKey) && getActivity() != null) {
|
||||
// if it's not the current theme
|
||||
|
@ -66,16 +66,10 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
|
||||
prefStorageAsk = findPreference(downloadStorageAsk);
|
||||
|
||||
final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference);
|
||||
prefUseSaf.setDefaultValue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
|
||||
prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx));
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
|
||||
|| Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
prefUseSaf.setEnabled(false);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29);
|
||||
} else {
|
||||
prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_19);
|
||||
}
|
||||
prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29);
|
||||
prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary_no_saf_notice);
|
||||
}
|
||||
|
||||
@ -253,8 +247,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
|
||||
|
||||
forgetSAFTree(context, defaultPreferences.getString(key, ""));
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
||||
&& !FilePickerActivityHelper.isOwnFileUri(context, uri)) {
|
||||
if (!FilePickerActivityHelper.isOwnFileUri(context, uri)) {
|
||||
// steps to acquire the selected path:
|
||||
// 1. acquire permissions on the new save path
|
||||
// 2. save the new path, if step(2) was successful
|
||||
|
@ -116,7 +116,7 @@ public final class NewPipeSettings {
|
||||
public static boolean useStorageAccessFramework(final Context context) {
|
||||
// There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a
|
||||
// remote (see #6455).
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || DeviceUtils.isFireTv()) {
|
||||
if (DeviceUtils.isFireTv()) {
|
||||
return false;
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
return true;
|
||||
|
@ -1,19 +1,9 @@
|
||||
package org.schabi.newpipe.settings
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.preference.Preference
|
||||
import org.schabi.newpipe.R
|
||||
|
||||
class NotificationSettingsFragment : BasePreferenceFragment() {
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResourceRegistry()
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key))
|
||||
colorizePref?.let {
|
||||
preferenceScreen.removePreference(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,9 @@
|
||||
package org.schabi.newpipe.settings
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.preference.Preference
|
||||
import org.schabi.newpipe.R
|
||||
|
||||
class PlayerNotificationSettingsFragment : BasePreferenceFragment() {
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
addPreferencesFromResourceRegistry()
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key))
|
||||
colorizePref?.let {
|
||||
preferenceScreen.removePreference(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package org.schabi.newpipe.settings;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.preference.PreferenceManager;
|
||||
@ -71,12 +70,12 @@ public final class SettingMigrations {
|
||||
// and standard way to access folders and files to be used consistently everywhere.
|
||||
// We reset the setting to its default value, i.e. "use SAF", since now there are no
|
||||
// more issues with SAF and users should use that one instead of the old
|
||||
// NoNonsenseFilePicker. SAF does not work on KitKat and below, though, so the setting
|
||||
// is set to false in that case. Also, there's a bug on FireOS in which SAF open/close
|
||||
// NoNonsenseFilePicker. Also, there's a bug on FireOS in which SAF open/close
|
||||
// dialogs cannot be confirmed with a remote (see #6455).
|
||||
sp.edit().putBoolean(context.getString(R.string.storage_use_saf),
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
||||
&& !DeviceUtils.isFireTv()).apply();
|
||||
sp.edit().putBoolean(
|
||||
context.getString(R.string.storage_use_saf),
|
||||
!DeviceUtils.isFireTv()
|
||||
).apply();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -218,7 +218,7 @@ public class NotificationActionsPreference extends Preference {
|
||||
final int color = ThemeHelper.resolveColorFromAttr(getContext(),
|
||||
android.R.attr.textColorPrimary);
|
||||
drawable = DrawableCompat.wrap(drawable).mutate();
|
||||
DrawableCompat.setTint(drawable, color);
|
||||
drawable.setTint(color);
|
||||
radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null,
|
||||
null, drawable, null);
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffColorFilter;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.RippleDrawable;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
@ -65,8 +64,7 @@ public final class PreferenceSearchResultHighlighter {
|
||||
recyclerView.findViewHolderForAdapterPosition(position);
|
||||
if (holder != null) {
|
||||
final Drawable background = holder.itemView.getBackground();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
||||
&& background instanceof RippleDrawable) {
|
||||
if (background instanceof RippleDrawable) {
|
||||
showRippleAnimation((RippleDrawable) background);
|
||||
return;
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.provider.DocumentsContract;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@ -53,10 +52,6 @@ public class StoredDirectoryHelper {
|
||||
throw new IOException(e);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
throw new IOException("Storage Access Framework with Directory API is not available");
|
||||
}
|
||||
|
||||
this.docTree = DocumentFile.fromTreeUri(context, path);
|
||||
|
||||
if (this.docTree == null) {
|
||||
@ -73,7 +68,7 @@ public class StoredDirectoryHelper {
|
||||
final String[] filename = splitFilename(name);
|
||||
final String lcFilename = filename[0].toLowerCase();
|
||||
|
||||
if (docTree == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (docTree == null) {
|
||||
for (final File file : ioTree.listFiles()) {
|
||||
addIfStartWith(matches, lcFilename, file.getName());
|
||||
}
|
||||
@ -277,7 +272,7 @@ public class StoredDirectoryHelper {
|
||||
*/
|
||||
static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree,
|
||||
final String filename) {
|
||||
if (context == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (context == null) {
|
||||
return tree.findFile(filename); // warning: this is very slow
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package org.schabi.newpipe.streams.io;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@ -74,7 +73,6 @@ public class StoredFileHelper implements Serializable {
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
StoredFileHelper(@Nullable final Context context, final DocumentFile tree,
|
||||
final String filename, final String mime, final boolean safe)
|
||||
throws IOException {
|
||||
@ -124,7 +122,6 @@ public class StoredFileHelper implements Serializable {
|
||||
this.srcType = mime;
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
public StoredFileHelper(final Context context, @Nullable final Uri parent,
|
||||
@NonNull final Uri path, final String tag) throws IOException {
|
||||
this.tag = tag;
|
||||
|
@ -65,7 +65,7 @@ public final class DeviceUtils {
|
||||
boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class)
|
||||
.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION
|
||||
|| isFireTv()
|
||||
|| pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION);
|
||||
|| pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
|
||||
|
||||
// from https://stackoverflow.com/a/58932366
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
@ -77,10 +77,6 @@ public final class DeviceUtils {
|
||||
&& pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET));
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
isTv = isTv || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
|
||||
}
|
||||
|
||||
DeviceUtils.isTV = isTv;
|
||||
return DeviceUtils.isTV;
|
||||
}
|
||||
@ -131,11 +127,10 @@ public final class DeviceUtils {
|
||||
/**
|
||||
* Some devices have broken tunneled video playback but claim to support it.
|
||||
* See https://github.com/TeamNewPipe/NewPipe/issues/5911
|
||||
* @return false if Kitkat (does not support tunneling) or affected device
|
||||
* @return false if affected device
|
||||
*/
|
||||
public static boolean shouldSupportMediaTunneling() {
|
||||
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
||||
&& !HI3798MV200
|
||||
return !HI3798MV200
|
||||
&& !CVT_MT5886_EU_1G
|
||||
&& !REALTEKATV
|
||||
&& !QM16XE_U;
|
||||
|
@ -37,7 +37,6 @@ public final class PermissionHelper {
|
||||
return checkWriteStoragePermissions(activity, requestCode);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
|
||||
public static boolean checkReadStoragePermissions(final Activity activity,
|
||||
final int requestCode) {
|
||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
|
@ -1,104 +0,0 @@
|
||||
package org.schabi.newpipe.util;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLSocket;
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
/**
|
||||
* This is an extension of the SSLSocketFactory which enables TLS 1.2 and 1.1.
|
||||
* Created for usage on Android 4.1-4.4 devices, which haven't enabled those by default.
|
||||
*/
|
||||
public class TLSSocketFactoryCompat extends SSLSocketFactory {
|
||||
|
||||
private static final String TAG = "TLSSocketFactoryCom";
|
||||
|
||||
private static TLSSocketFactoryCompat instance = null;
|
||||
|
||||
private final SSLSocketFactory internalSSLSocketFactory;
|
||||
|
||||
public TLSSocketFactoryCompat() throws KeyManagementException, NoSuchAlgorithmException {
|
||||
final SSLContext context = SSLContext.getInstance("TLS");
|
||||
context.init(null, null, null);
|
||||
internalSSLSocketFactory = context.getSocketFactory();
|
||||
}
|
||||
|
||||
public static TLSSocketFactoryCompat getInstance()
|
||||
throws NoSuchAlgorithmException, KeyManagementException {
|
||||
if (instance != null) {
|
||||
return instance;
|
||||
}
|
||||
instance = new TLSSocketFactoryCompat();
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static void setAsDefault() {
|
||||
try {
|
||||
HttpsURLConnection.setDefaultSSLSocketFactory(getInstance());
|
||||
} catch (NoSuchAlgorithmException | KeyManagementException e) {
|
||||
Log.e(TAG, "Unable to setAsDefault", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getDefaultCipherSuites() {
|
||||
return internalSSLSocketFactory.getDefaultCipherSuites();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getSupportedCipherSuites() {
|
||||
return internalSSLSocketFactory.getSupportedCipherSuites();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket() throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(final Socket s, final String host, final int port,
|
||||
final boolean autoClose) throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(final String host, final int port) throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(final String host, final int port, final InetAddress localHost,
|
||||
final int localPort) throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(
|
||||
host, port, localHost, localPort));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(final InetAddress host, final int port) throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Socket createSocket(final InetAddress address, final int port,
|
||||
final InetAddress localAddress, final int localPort)
|
||||
throws IOException {
|
||||
return enableTLSOnSocket(internalSSLSocketFactory.createSocket(
|
||||
address, port, localAddress, localPort));
|
||||
}
|
||||
|
||||
private Socket enableTLSOnSocket(final Socket socket) {
|
||||
if (socket instanceof SSLSocket) {
|
||||
((SSLSocket) socket).setEnabledProtocols(new String[]{"TLSv1.1", "TLSv1.2"});
|
||||
}
|
||||
return socket;
|
||||
}
|
||||
}
|
@ -185,17 +185,10 @@ public final class ShareUtils {
|
||||
}
|
||||
|
||||
// Migrate any clip data and flags from the original intent.
|
||||
final int permFlags;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
|
||||
} else {
|
||||
permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
|
||||
}
|
||||
final int permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
|
||||
if (permFlags != 0) {
|
||||
ClipData targetClipData = intent.getClipData();
|
||||
if (targetClipData == null && intent.getData() != null) {
|
||||
|
@ -21,7 +21,6 @@ package org.schabi.newpipe.views;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@ -29,7 +28,6 @@ import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import org.schabi.newpipe.ktx.ViewUtils;
|
||||
|
||||
@ -76,7 +74,6 @@ public class CollapsibleView extends LinearLayout {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr,
|
||||
final int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
|
@ -1,7 +1,6 @@
|
||||
package org.schabi.newpipe.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.SurfaceView;
|
||||
|
||||
@ -45,10 +44,7 @@ public class ExpandableSurfaceView extends SurfaceView {
|
||||
scaleX = 1.0f;
|
||||
scaleY = 1.0f;
|
||||
|
||||
if (resizeMode == RESIZE_MODE_FIT
|
||||
// KitKat doesn't work well when a view has a scale like needed for ZOOM
|
||||
|| (resizeMode == RESIZE_MODE_ZOOM
|
||||
&& Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)) {
|
||||
if (resizeMode == RESIZE_MODE_FIT) {
|
||||
if (aspectDeformation > 0) {
|
||||
height = (int) (width / videoAspectRatio);
|
||||
} else {
|
||||
|
@ -17,10 +17,8 @@
|
||||
*/
|
||||
package org.schabi.newpipe.views;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@ -74,7 +72,6 @@ public final class FocusAwareCoordinator extends CoordinatorLayout {
|
||||
* Makes possible for multiple fragments to co-exist. Without this code
|
||||
* the first ViewGroup who consumes will be the last who receive the insets
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) {
|
||||
boolean consumed = false;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package us.shandian.giga.get;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.OsConstants;
|
||||
@ -316,16 +315,14 @@ public class DownloadMission extends Mission {
|
||||
|
||||
public synchronized void notifyError(int code, Exception err) {
|
||||
Log.e(TAG, "notifyError() code = " + code, err);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (err != null && err.getCause() instanceof ErrnoException) {
|
||||
int errno = ((ErrnoException) err.getCause()).errno;
|
||||
if (errno == OsConstants.ENOSPC) {
|
||||
code = ERROR_INSUFFICIENT_STORAGE;
|
||||
err = null;
|
||||
} else if (errno == OsConstants.EACCES) {
|
||||
code = ERROR_PERMISSION_DENIED;
|
||||
err = null;
|
||||
}
|
||||
if (err != null && err.getCause() instanceof ErrnoException) {
|
||||
int errno = ((ErrnoException) err.getCause()).errno;
|
||||
if (errno == OsConstants.ENOSPC) {
|
||||
code = ERROR_INSUFFICIENT_STORAGE;
|
||||
err = null;
|
||||
} else if (errno == OsConstants.EACCES) {
|
||||
code = ERROR_PERMISSION_DENIED;
|
||||
err = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,10 +4,8 @@ import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.Service;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||
import android.graphics.Bitmap;
|
||||
@ -18,7 +16,6 @@ import android.net.NetworkInfo;
|
||||
import android.net.NetworkRequest;
|
||||
import android.net.Uri;
|
||||
import android.os.Binder;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Handler.Callback;
|
||||
import android.os.IBinder;
|
||||
@ -100,7 +97,6 @@ public class DownloadManagerService extends Service {
|
||||
private final ArrayList<Callback> mEchoObservers = new ArrayList<>(1);
|
||||
|
||||
private ConnectivityManager mConnectivityManager;
|
||||
private BroadcastReceiver mNetworkStateListener = null;
|
||||
private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null;
|
||||
|
||||
private SharedPreferences mPrefs = null;
|
||||
@ -166,28 +162,18 @@ public class DownloadManagerService extends Service {
|
||||
mConnectivityManager = ContextCompat.getSystemService(this,
|
||||
ConnectivityManager.class);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() {
|
||||
@Override
|
||||
public void onAvailable(Network network) {
|
||||
handleConnectivityState(false);
|
||||
}
|
||||
mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() {
|
||||
@Override
|
||||
public void onAvailable(Network network) {
|
||||
handleConnectivityState(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLost(Network network) {
|
||||
handleConnectivityState(false);
|
||||
}
|
||||
};
|
||||
mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL);
|
||||
} else {
|
||||
mNetworkStateListener = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
handleConnectivityState(false);
|
||||
}
|
||||
};
|
||||
registerReceiver(mNetworkStateListener, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||
}
|
||||
@Override
|
||||
public void onLost(Network network) {
|
||||
handleConnectivityState(false);
|
||||
}
|
||||
};
|
||||
mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL);
|
||||
|
||||
mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener);
|
||||
|
||||
@ -246,10 +232,7 @@ public class DownloadManagerService extends Service {
|
||||
|
||||
manageLock(false);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||
mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL);
|
||||
else
|
||||
unregisterReceiver(mNetworkStateListener);
|
||||
mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL);
|
||||
|
||||
mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener);
|
||||
|
||||
@ -263,21 +246,6 @@ public class DownloadManagerService extends Service {
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
/*
|
||||
int permissionCheck;
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
|
||||
permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
if (permissionCheck == PermissionChecker.PERMISSION_DENIED) {
|
||||
Toast.makeText(this, "Permission denied (read)", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
if (permissionCheck == PermissionChecker.PERMISSION_DENIED) {
|
||||
Toast.makeText(this, "Permission denied (write)", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
*/
|
||||
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
@ -473,12 +441,7 @@ public class DownloadManagerService extends Service {
|
||||
if (downloadDoneCount == 1) {
|
||||
downloadDoneList.append(name);
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
downloadDoneNotification.setContentTitle(getString(R.string.app_name));
|
||||
} else {
|
||||
downloadDoneNotification.setContentTitle(null);
|
||||
}
|
||||
|
||||
downloadDoneNotification.setContentTitle(null);
|
||||
downloadDoneNotification.setContentText(Localization.downloadCount(this, downloadDoneCount));
|
||||
downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.setBigContentTitle(Localization.downloadCount(this, downloadDoneCount))
|
||||
@ -511,16 +474,10 @@ public class DownloadManagerService extends Service {
|
||||
.setContentIntent(mOpenDownloadList);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
downloadFailedNotification.setContentTitle(getString(R.string.app_name));
|
||||
downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(getString(R.string.download_failed).concat(": ").concat(mission.storage.getName())));
|
||||
} else {
|
||||
downloadFailedNotification.setContentTitle(getString(R.string.download_failed));
|
||||
downloadFailedNotification.setContentText(mission.storage.getName());
|
||||
downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(mission.storage.getName()));
|
||||
}
|
||||
downloadFailedNotification.setContentTitle(getString(R.string.download_failed));
|
||||
downloadFailedNotification.setContentText(mission.storage.getName());
|
||||
downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(mission.storage.getName()));
|
||||
|
||||
mNotificationManager.notify(id, downloadFailedNotification.build());
|
||||
}
|
||||
@ -556,12 +513,7 @@ public class DownloadManagerService extends Service {
|
||||
|
||||
if (path.charAt(0) == File.separatorChar) {
|
||||
Log.i(TAG, "Old save path style present: " + path);
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
|
||||
path = Uri.fromFile(new File(path)).toString();
|
||||
else
|
||||
path = "";
|
||||
|
||||
path = "";
|
||||
mPrefs.edit().putString(getString(prefKey), "").apply();
|
||||
}
|
||||
|
||||
|
@ -350,10 +350,8 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setDataAndType(resolveShareableUri(mission), mimeType);
|
||||
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
|
||||
intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION);
|
||||
}
|
||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
|
||||
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
|
||||
}
|
||||
|
@ -138,8 +138,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_pause"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_pause"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ProgressBar
|
||||
@ -199,8 +199,8 @@
|
||||
android:gravity="center"
|
||||
android:minWidth="50dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_previous"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_previous"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ImageButton
|
||||
@ -214,8 +214,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_repeat"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_repeat"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<View
|
||||
@ -235,8 +235,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_shuffle"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_shuffle"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
@ -253,8 +253,8 @@
|
||||
android:gravity="center"
|
||||
android:minWidth="50dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_next"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_next"
|
||||
tools:ignore="ContentDescription" />
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
@ -65,8 +65,8 @@
|
||||
android:layout_height="64dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@android:color/transparent"
|
||||
android:src="@drawable/ic_play_arrow_shadow"
|
||||
android:visibility="invisible"
|
||||
app:srcCompat="@drawable/ic_play_arrow_shadow"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:visibility="visible" />
|
||||
|
||||
@ -199,7 +199,7 @@
|
||||
android:layout_gravity="top|end"
|
||||
android:layout_marginTop="11dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
app:srcCompat="@drawable/ic_expand_more"
|
||||
android:src="@drawable/ic_expand_more"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
</FrameLayout>
|
||||
@ -326,18 +326,6 @@
|
||||
tools:text="Uploader" />
|
||||
</LinearLayout>
|
||||
|
||||
<!--<Button
|
||||
android:id="@+id/detail_uploader_subscribe"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|right"
|
||||
android:layout_marginRight="12dp"
|
||||
android:text="@string/rss_button_title"
|
||||
android:textSize="12sp"
|
||||
android:theme="@style/RedButton"
|
||||
app:drawableLeftCompat="@drawable/ic_rss_feed"
|
||||
tools:ignore="RtlHardcoded"
|
||||
android:visibility="gone"/>-->
|
||||
</LinearLayout>
|
||||
|
||||
<!-- VIEW & THUMBS -->
|
||||
@ -369,7 +357,7 @@
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detail_view_count_view"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_up" />
|
||||
android:src="@drawable/ic_thumb_up" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_up_count_view"
|
||||
@ -393,7 +381,7 @@
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_down"
|
||||
android:src="@drawable/ic_thumb_down"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
@ -447,12 +435,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/add_to_playlist"
|
||||
android:drawableTop="@drawable/ic_playlist_add"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_add_to_playlist_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_playlist_add" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_background"
|
||||
@ -463,12 +451,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/play_audio"
|
||||
android:drawableTop="@drawable/ic_headset"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_background_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_headset" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_popup"
|
||||
@ -479,12 +467,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/open_in_popup_mode"
|
||||
android:drawableTop="@drawable/ic_picture_in_picture"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_popup_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_picture_in_picture" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_download"
|
||||
@ -495,12 +483,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/controls_download_desc"
|
||||
android:drawableTop="@drawable/ic_file_download"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/download"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_file_download" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -526,12 +514,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/share"
|
||||
android:drawableTop="@drawable/ic_share"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/share"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_share" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_open_in_browser"
|
||||
@ -542,12 +530,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/open_in_browser"
|
||||
android:drawableTop="@drawable/ic_language"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/open_in_browser"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_language" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_play_with_kodi"
|
||||
@ -558,14 +546,14 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/play_with_kodi_title"
|
||||
android:drawableTop="@drawable/ic_cast"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/play_with_kodi_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_cast" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<TextView
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_crash_the_player"
|
||||
android:layout_width="@dimen/detail_control_width"
|
||||
android:layout_height="@dimen/detail_control_height"
|
||||
@ -574,12 +562,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/crash_the_player"
|
||||
android:drawableTop="@drawable/ic_bug_report"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/crash_the_player"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_bug_report" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -719,7 +707,7 @@
|
||||
android:scaleType="center"
|
||||
android:focusable="true"
|
||||
android:focusedByDefault="true"
|
||||
app:srcCompat="@drawable/ic_play_arrow"
|
||||
android:src="@drawable/ic_play_arrow"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<ImageButton
|
||||
@ -729,7 +717,7 @@
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="10dp"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
android:src="@drawable/ic_close"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -174,8 +174,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_repeat"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_repeat"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
@ -189,8 +189,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_previous"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_previous"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ImageButton
|
||||
@ -219,8 +219,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_pause"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_pause"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ProgressBar
|
||||
@ -268,8 +268,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_next"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_next"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ImageButton
|
||||
@ -284,8 +284,8 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_shuffle"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_shuffle"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -193,8 +193,8 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:minWidth="0dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_delete"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_delete"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView 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"
|
||||
@ -154,7 +153,7 @@
|
||||
android:layout_alignParentEnd="true"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:srcCompat="@drawable/ic_expand_more"
|
||||
android:src="@drawable/ic_expand_more"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
|
@ -1,5 +1,4 @@
|
||||
<RelativeLayout 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">
|
||||
@ -20,7 +19,7 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
app:srcCompat="@drawable/ic_playlist_add"
|
||||
android:src="@drawable/ic_playlist_add"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -39,7 +39,7 @@
|
||||
android:layout_width="@dimen/drawer_header_newpipe_icon_size"
|
||||
android:layout_height="@dimen/drawer_header_newpipe_icon_size"
|
||||
android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space"
|
||||
app:srcCompat="@drawable/splash_foreground"
|
||||
android:src="@drawable/splash_foreground"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
@ -86,7 +86,7 @@
|
||||
android:scaleType="fitCenter"
|
||||
app:tint="@color/drawer_header_font_color"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:srcCompat="@drawable/ic_smart_display" />
|
||||
tools:src="@drawable/ic_smart_display" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/drawer_header_service_view"
|
||||
@ -104,7 +104,7 @@
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="4dp"
|
||||
app:srcCompat="@drawable/ic_arrow_drop_down"
|
||||
android:src="@drawable/ic_arrow_drop_down"
|
||||
app:tint="@color/drawer_header_font_color"
|
||||
tools:ignore="ContentDescription" />
|
||||
</LinearLayout>
|
||||
|
@ -24,7 +24,7 @@
|
||||
android:layout_height="14dp"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerInside"
|
||||
app:srcCompat="@drawable/ic_add"
|
||||
android:src="@drawable/ic_add"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -55,7 +55,7 @@
|
||||
android:paddingTop="12dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingBottom="12dp"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
</RelativeLayout>
|
||||
</androidx.cardview.widget.CardView>
|
@ -1,5 +1,4 @@
|
||||
<androidx.core.widget.NestedScrollView 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"
|
||||
@ -20,7 +19,7 @@
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:contentDescription="@string/app_name"
|
||||
app:srcCompat="@mipmap/ic_launcher" />
|
||||
android:src="@mipmap/ic_launcher" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -40,10 +40,10 @@
|
||||
android:layout_marginBottom="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:src="@drawable/ic_add"
|
||||
app:backgroundTint="?attr/colorPrimary"
|
||||
app:fabSize="auto"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:srcCompat="@drawable/ic_add" />
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -38,11 +38,11 @@
|
||||
android:contentDescription="@string/description_select_enable"
|
||||
android:focusable="true"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/ic_select_all"
|
||||
app:layout_constraintBottom_toTopOf="@+id/barrier"
|
||||
app:layout_constraintDimensionRatio="1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_select_all" />
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/barrier"
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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">
|
||||
@ -57,7 +56,7 @@
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginStart="6dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
app:srcCompat="@drawable/ic_refresh"
|
||||
android:src="@drawable/ic_refresh"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<View
|
||||
|
@ -44,8 +44,8 @@
|
||||
android:layout_marginBottom="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:src="@drawable/ic_add"
|
||||
app:backgroundTint="?attr/colorPrimary"
|
||||
app:fabSize="auto"
|
||||
app:srcCompat="@drawable/ic_add" />
|
||||
app:fabSize="auto" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -55,8 +55,8 @@
|
||||
android:layout_height="64dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@android:color/transparent"
|
||||
android:src="@drawable/ic_play_arrow_shadow"
|
||||
android:visibility="invisible"
|
||||
app:srcCompat="@drawable/ic_play_arrow_shadow"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:visibility="visible" />
|
||||
|
||||
@ -187,7 +187,7 @@
|
||||
android:layout_gravity="top|end"
|
||||
android:layout_marginTop="11dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
app:srcCompat="@drawable/ic_expand_more"
|
||||
android:src="@drawable/ic_expand_more"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
</FrameLayout>
|
||||
@ -313,19 +313,6 @@
|
||||
tools:text="Uploader" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!--<Button
|
||||
android:id="@+id/detail_uploader_subscribe"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|right"
|
||||
android:layout_marginRight="12dp"
|
||||
android:text="@string/rss_button_title"
|
||||
android:textSize="12sp"
|
||||
android:theme="@style/RedButton"
|
||||
app:drawableLeftCompat="@drawable/ic_rss_feed"
|
||||
tools:ignore="RtlHardcoded"
|
||||
android:visibility="gone"/>-->
|
||||
</LinearLayout>
|
||||
|
||||
<!-- VIEW & THUMBS -->
|
||||
@ -357,7 +344,7 @@
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/detail_view_count_view"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_up" />
|
||||
android:src="@drawable/ic_thumb_up" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_up_count_view"
|
||||
@ -381,7 +368,7 @@
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_down"
|
||||
android:src="@drawable/ic_thumb_down"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
@ -433,12 +420,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/add_to_playlist"
|
||||
android:drawableTop="@drawable/ic_playlist_add"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_add_to_playlist_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_playlist_add" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_background"
|
||||
@ -449,12 +436,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/play_audio"
|
||||
android:drawableTop="@drawable/ic_headset"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_background_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_headset" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_popup"
|
||||
@ -465,12 +452,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/open_in_popup_mode"
|
||||
android:drawableTop="@drawable/ic_picture_in_picture"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/controls_popup_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_picture_in_picture" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_download"
|
||||
@ -481,12 +468,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/controls_download_desc"
|
||||
android:drawableTop="@drawable/ic_file_download"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/download"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_file_download" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -510,12 +497,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/share"
|
||||
android:drawableTop="@drawable/ic_share"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/share"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_share" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_open_in_browser"
|
||||
@ -526,12 +513,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/open_in_browser"
|
||||
android:drawableTop="@drawable/ic_language"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/open_in_browser"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_language" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_play_with_kodi"
|
||||
@ -542,14 +529,14 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/play_with_kodi_title"
|
||||
android:drawableTop="@drawable/ic_cast"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/play_with_kodi_title"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_cast" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
<TextView
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_controls_crash_the_player"
|
||||
android:layout_width="@dimen/detail_control_width"
|
||||
android:layout_height="@dimen/detail_control_height"
|
||||
@ -558,12 +545,12 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/crash_the_player"
|
||||
android:drawableTop="@drawable/ic_bug_report"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="@dimen/detail_control_padding"
|
||||
android:text="@string/crash_the_player"
|
||||
android:textSize="@dimen/detail_control_text_size"
|
||||
app:drawableTopCompat="@drawable/ic_bug_report" />
|
||||
android:textSize="@dimen/detail_control_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -696,7 +683,7 @@
|
||||
android:scaleType="center"
|
||||
android:focusable="true"
|
||||
android:focusedByDefault="true"
|
||||
app:srcCompat="@drawable/ic_play_arrow"
|
||||
android:src="@drawable/ic_play_arrow"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<ImageButton
|
||||
@ -706,7 +693,7 @@
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="10dp"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
android:src="@drawable/ic_close"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -75,7 +75,7 @@
|
||||
android:paddingTop="12dp"
|
||||
android:paddingRight="10dp"
|
||||
android:paddingBottom="12dp"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
</RelativeLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="wrap_content"
|
||||
@ -64,7 +63,7 @@
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_gravity="center"
|
||||
app:srcCompat="@drawable/ic_search_add"
|
||||
android:src="@drawable/ic_search_add"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
||||
android:paddingTop="12dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingBottom="12dp"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
</RelativeLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
@ -32,8 +32,8 @@
|
||||
android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin"
|
||||
android:layout_toEndOf="@+id/itemThumbnailView"
|
||||
android:contentDescription="@string/detail_pinned_comment_view_description"
|
||||
android:src="@drawable/ic_pin"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_pin"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
@ -69,7 +69,7 @@
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_toRightOf="@+id/itemThumbnailView"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_up" />
|
||||
android:src="@drawable/ic_thumb_up" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_up_count_view"
|
||||
@ -92,37 +92,9 @@
|
||||
android:layout_marginLeft="@dimen/video_item_detail_heart_margin"
|
||||
android:layout_toRightOf="@+id/detail_thumbs_up_count_view"
|
||||
android:contentDescription="@string/detail_heart_img_view_description"
|
||||
android:src="@drawable/ic_heart"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:srcCompat="@drawable/ic_heart" />
|
||||
|
||||
|
||||
<!--we can uncomment below code if we need dislike button and count in future-->
|
||||
|
||||
<!--<ImageView
|
||||
android:id="@+id/detail_thumbs_down_img_view"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
app:srcCompat="?attr/thumbs_down"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_down_count_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
||||
android:layout_toRightOf="@id/detail_thumbs_down_img_view"
|
||||
android:gravity="center_vertical"
|
||||
android:lines="1"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
||||
tools:ignore="RtlHardcoded"
|
||||
tools:text="10K" />-->
|
||||
tools:visibility="visible" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/itemPublishedTime"
|
||||
|
@ -39,7 +39,7 @@
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_toRightOf="@+id/itemThumbnailView"
|
||||
android:contentDescription="@string/detail_likes_img_view_description"
|
||||
app:srcCompat="@drawable/ic_thumb_up" />
|
||||
android:src="@drawable/ic_thumb_up" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_up_count_view"
|
||||
@ -54,33 +54,6 @@
|
||||
tools:ignore="RtlHardcoded"
|
||||
tools:text="12M" />
|
||||
|
||||
<!--we can uncomment below code if we need dislike button and count in future-->
|
||||
|
||||
<!--<ImageView
|
||||
android:id="@+id/detail_thumbs_down_img_view"
|
||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toRightOf="@id/detail_thumbs_up_count_view"
|
||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||
app:srcCompat="?attr/thumbs_down"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/detail_thumbs_down_count_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||
android:layout_below="@id/itemCommentContentView"
|
||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
||||
android:layout_toRightOf="@id/detail_thumbs_down_img_view"
|
||||
android:gravity="center_vertical"
|
||||
android:lines="1"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
||||
tools:ignore="RtlHardcoded"
|
||||
tools:text="10K" />-->
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:id="@+id/itemPublishedTime"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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:id="@+id/itemRoot"
|
||||
android:layout_width="match_parent"
|
||||
@ -29,6 +28,8 @@
|
||||
android:layout_alignEnd="@id/itemThumbnailView"
|
||||
android:layout_alignBottom="@id/itemThumbnailView"
|
||||
android:background="@color/playlist_stream_count_background_color"
|
||||
android:drawableTop="@drawable/ic_playlist_play"
|
||||
android:drawableTint="@color/duration_text_color"
|
||||
android:gravity="center"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="14dp"
|
||||
@ -36,8 +37,6 @@
|
||||
android:textColor="@color/duration_text_color"
|
||||
android:textSize="@dimen/video_item_search_duration_text_size"
|
||||
android:textStyle="bold"
|
||||
app:drawableTint="@color/duration_text_color"
|
||||
app:drawableTopCompat="@drawable/ic_playlist_play"
|
||||
tools:text="314159" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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:id="@+id/itemRoot"
|
||||
android:layout_width="match_parent"
|
||||
@ -30,6 +29,8 @@
|
||||
android:layout_alignEnd="@id/itemThumbnailView"
|
||||
android:layout_alignBottom="@id/itemThumbnailView"
|
||||
android:background="@color/playlist_stream_count_background_color"
|
||||
android:drawableTop="@drawable/ic_playlist_play"
|
||||
android:drawableTint="@color/duration_text_color"
|
||||
android:gravity="center"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="14dp"
|
||||
@ -37,8 +38,6 @@
|
||||
android:textColor="@color/duration_text_color"
|
||||
android:textSize="@dimen/video_item_search_duration_text_size"
|
||||
android:textStyle="bold"
|
||||
app:drawableTint="@color/duration_text_color"
|
||||
app:drawableTopCompat="@drawable/ic_playlist_play"
|
||||
tools:text="314159" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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:id="@+id/itemRoot"
|
||||
android:layout_width="match_parent"
|
||||
@ -30,6 +29,8 @@
|
||||
android:layout_alignEnd="@id/itemThumbnailView"
|
||||
android:layout_alignBottom="@id/itemThumbnailView"
|
||||
android:background="@color/playlist_stream_count_background_color"
|
||||
android:drawableTop="@drawable/ic_playlist_play"
|
||||
android:drawableTint="@color/duration_text_color"
|
||||
android:gravity="center"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="6dp"
|
||||
@ -37,8 +38,6 @@
|
||||
android:textColor="@color/duration_text_color"
|
||||
android:textSize="@dimen/video_item_search_duration_text_size"
|
||||
android:textStyle="bold"
|
||||
app:drawableTint="@color/duration_text_color"
|
||||
app:drawableTopCompat="@drawable/ic_playlist_play"
|
||||
tools:text="3141" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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:id="@+id/itemRoot"
|
||||
android:layout_width="match_parent"
|
||||
@ -49,7 +48,7 @@
|
||||
android:contentDescription="@string/detail_drag_description"
|
||||
android:paddingLeft="@dimen/video_item_search_image_right_margin"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
tools:ignore="RtlHardcoded,RtlSymmetry" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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:id="@+id/itemRoot"
|
||||
android:layout_width="match_parent"
|
||||
@ -50,7 +49,7 @@
|
||||
android:contentDescription="@string/detail_drag_description"
|
||||
android:paddingLeft="@dimen/video_item_search_image_right_margin"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
tools:ignore="RtlHardcoded,RtlSymmetry" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -39,7 +39,7 @@
|
||||
android:layout_marginRight="1dp"
|
||||
android:contentDescription="TODO"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_more_vert"
|
||||
android:src="@drawable/ic_more_vert"
|
||||
app:tint="?attr/actionColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -72,7 +72,7 @@
|
||||
android:layout_marginRight="4dp"
|
||||
android:contentDescription="TODO"
|
||||
android:scaleType="centerInside"
|
||||
app:srcCompat="@drawable/ic_more_vert"
|
||||
android:src="@drawable/ic_more_vert"
|
||||
app:tint="?attr/actionColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -52,8 +52,8 @@
|
||||
android:layout_gravity="top|center_horizontal"
|
||||
android:layout_marginTop="4dp"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_done"
|
||||
app:tint="@color/white"
|
||||
app:srcCompat="@drawable/ic_done"
|
||||
tools:ignore="ContentDescription" />
|
||||
</FrameLayout>
|
||||
</FrameLayout>
|
||||
|
@ -89,10 +89,10 @@
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingHorizontal="@dimen/video_item_search_image_right_margin"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_drag_handle"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_drag_handle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -112,8 +112,8 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_close"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
@ -198,8 +198,8 @@
|
||||
android:paddingEnd="3dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_list"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_list"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
@ -216,8 +216,8 @@
|
||||
android:paddingEnd="6dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_format_list_numbered"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_format_list_numbered"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
@ -230,7 +230,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_expand_more"
|
||||
android:src="@drawable/ic_expand_more"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
@ -294,7 +294,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_cast"
|
||||
android:src="@drawable/ic_cast"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
@ -309,7 +309,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_language"
|
||||
android:src="@drawable/ic_language"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
@ -324,7 +324,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_share"
|
||||
android:src="@drawable/ic_share"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
@ -338,7 +338,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_volume_off"
|
||||
android:src="@drawable/ic_volume_off"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
@ -351,8 +351,8 @@
|
||||
android:focusable="true"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_fullscreen"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_fullscreen"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded"
|
||||
tools:visibility="visible" />
|
||||
@ -397,8 +397,8 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="2dp"
|
||||
android:src="@drawable/dummy_thumbnail"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/dummy_thumbnail"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
@ -475,8 +475,8 @@
|
||||
android:nextFocusUp="@id/playbackSeekBar"
|
||||
android:padding="@dimen/player_main_buttons_padding"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_fullscreen"
|
||||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_fullscreen"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription,RtlHardcoded"
|
||||
tools:visibility="visible" />
|
||||
@ -500,7 +500,7 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_previous"
|
||||
android:src="@drawable/ic_previous"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
@ -512,7 +512,7 @@
|
||||
android:layout_weight="1"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_pause"
|
||||
android:src="@drawable/ic_pause"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
@ -526,7 +526,7 @@
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_next"
|
||||
android:src="@drawable/ic_next"
|
||||
app:tint="@color/white"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
@ -577,8 +577,8 @@
|
||||
android:focusable="true"
|
||||
android:padding="10dp"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/exo_controls_repeat_off"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/exo_controls_repeat_off"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
@ -592,8 +592,8 @@
|
||||
android:focusable="true"
|
||||
android:padding="10dp"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_shuffle"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_shuffle"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
@ -618,8 +618,8 @@
|
||||
android:focusable="true"
|
||||
android:padding="10dp"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic_playlist_add"
|
||||
android:tint="?attr/colorAccent"
|
||||
app:srcCompat="@drawable/ic_playlist_add"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
@ -635,7 +635,7 @@
|
||||
android:focusable="true"
|
||||
android:padding="10dp"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
android:src="@drawable/ic_close"
|
||||
app:tint="@color/white" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge 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"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:layout_height="wrap_content"
|
||||
@ -19,21 +18,21 @@
|
||||
android:id="@+id/icon_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_play_seek_triangle"
|
||||
android:src="@drawable/ic_play_seek_triangle"
|
||||
tools:alpha="0.18" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/icon_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_play_seek_triangle"
|
||||
android:src="@drawable/ic_play_seek_triangle"
|
||||
tools:alpha="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/icon_3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_play_seek_triangle"
|
||||
android:src="@drawable/ic_play_seek_triangle"
|
||||
tools:alpha="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -10,8 +10,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:src="@drawable/ic_close"
|
||||
app:backgroundTint="@color/light_youtube_primary_color"
|
||||
app:borderWidth="0dp"
|
||||
app:fabSize="normal"
|
||||
app:srcCompat="@drawable/ic_close" />
|
||||
app:fabSize="normal" />
|
||||
</FrameLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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="wrap_content"
|
||||
@ -20,13 +19,12 @@
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/ic_headset"
|
||||
android:drawablePadding="4dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/controls_background_title"
|
||||
android:textColor="?attr/colorAccent"
|
||||
android:textSize="@dimen/channel_rss_title_size"
|
||||
app:drawableLeftCompat="@drawable/ic_headset"
|
||||
app:drawableStartCompat="@drawable/ic_headset" />
|
||||
android:textSize="@dimen/channel_rss_title_size" />
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
@ -77,12 +75,11 @@
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/ic_picture_in_picture"
|
||||
android:drawablePadding="4dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/controls_popup_title"
|
||||
android:textColor="?attr/colorAccent"
|
||||
android:textSize="@dimen/channel_rss_title_size"
|
||||
app:drawableLeftCompat="@drawable/ic_picture_in_picture"
|
||||
app:drawableStartCompat="@drawable/ic_picture_in_picture" />
|
||||
android:textSize="@dimen/channel_rss_title_size" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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="wrap_content"
|
||||
@ -22,7 +21,7 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
app:srcCompat="@drawable/ic_filter_list"
|
||||
android:src="@drawable/ic_filter_list"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="48dp">
|
||||
@ -13,7 +12,7 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_volume_off"
|
||||
android:src="@drawable/ic_volume_off"
|
||||
tools:ignore="ContentDescription,RtlHardcoded" />
|
||||
|
||||
<org.schabi.newpipe.views.NewPipeTextView
|
||||
|
@ -48,8 +48,8 @@
|
||||
android:layout_gravity="center"
|
||||
android:contentDescription="@string/search"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_close"
|
||||
app:tint="?attr/toolbarSearchColor"
|
||||
app:srcCompat="@drawable/ic_close"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
</FrameLayout>
|
||||
|
||||
|
@ -673,7 +673,6 @@
|
||||
<string name="feed_load_error_account_info">تعذر تحميل تغذية لـ\'%s\'.</string>
|
||||
<string name="feed_load_error">خطأ في تحميل الخلاصة</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">بدءًا من Android 10، يتم دعم \"Storage Access Framework\" فقط</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\"Storage Access Framework\" غير مدعوم على Android KitKat والإصدارات الأقدم</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">سيتم سؤالك عن مكان حفظ كل تنزيل</string>
|
||||
<string name="no_dir_yet">لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن</string>
|
||||
<string name="off">إيقاف</string>
|
||||
|
@ -463,7 +463,6 @@
|
||||
<string name="error_http_no_content">Server məlumat göndərmir</string>
|
||||
<string name="error_download_resource_gone">Bu endirməni bərpa etmək mümkün deyil</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Sizdən hər endirmənin harada saxlanacağı soruşulacaq</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Yaddaş Giriş Çərçivəsi\' Android KitKat və ondan aşağı versiyalarda dəstəklənmir</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">\"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir</string>
|
||||
<string name="detail_sub_channel_thumbnail_view_description">Kanalın avatar miniatürü</string>
|
||||
<string name="select_night_theme_toast">Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz</string>
|
||||
|
@ -675,7 +675,6 @@
|
||||
<item quantity="one">S\'ha suprimit %1$s baixada</item>
|
||||
<item quantity="other">S\'han suprimit %1$s baixades</item>
|
||||
</plurals>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">El \"Sistema d\'Accés a l\'Emmagatzematge\" no està implementat a Android KitKat i a versions anteriors</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">A partir de l\'Android 10 només s\'admet el \"Sistema d\'Accés a l\'Emmagatzematge\"</string>
|
||||
<string name="feed_new_items">Elements de feed nous</string>
|
||||
<string name="feed_load_error_fast_unknown">El mode d\'alimentació ràpida no proporciona més informació sobre això.</string>
|
||||
|
@ -625,7 +625,6 @@
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">بۆ دابهزاندنی ههر بابهتێك پرست پێ دهكرێت لهبارهی شوێنی دابهزاندنیان</string>
|
||||
<string name="disable_media_tunneling_title">ناكاراكردنی تونێلكردنی میدیا</string>
|
||||
<string name="show_age_restricted_content_summary">ئهو بابهتانهی نهگونجاون بۆ منداڵان پیشان بدرێن كه سنووری تهمهن دهیانگرێتهوه (وهك +18)</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' پشتگیری نهكراوه لهسهر وهشانهكانی ئهندرۆید كیتكات و نزمتر</string>
|
||||
<string name="crash_the_app">كڕاشی بهرنامهكه</string>
|
||||
<string name="show_memory_leaks">پیشاندانی دزهكردنی بیرگه</string>
|
||||
<string name="enqueued">لهنۆبهت دانرا</string>
|
||||
|
@ -643,7 +643,6 @@
|
||||
<string name="feed_load_error_account_info">Feed pro \'%s\' nemohl být načten.</string>
|
||||
<string name="feed_load_error">Chyba při načítání feedu</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Počínaje Android 10 je podporován pouze \"Storage Access Framework\"</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\"Storage Access Framework\" není podporován na KitKat a níže</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Budete dotázáni, kde uložit každý stažený soubor</string>
|
||||
<string name="no_dir_yet">Adresář pro stažené soubory dosud nenastaven, zvolte, prosím, výchozí adresář nyní</string>
|
||||
<string name="off">Vypnuto</string>
|
||||
|
@ -638,7 +638,6 @@
|
||||
<string name="no_dir_yet">Noch kein Downloadordner festgelegt, wähle jetzt den Standard-Downloadordner</string>
|
||||
<string name="open_website_license">Webseite öffnen</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Ab Android 10 wird nur noch „Storage Access Framework“ unterstützt</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Das „Storage Access Framework“ wird auf Android KitKat und niedriger nicht unterstützt</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Du wirst jedes Mal gefragt werden, wohin der Download gespeichert werden soll</string>
|
||||
<string name="feed_load_error">Fehler beim Laden des Feeds</string>
|
||||
<string name="feed_load_error_account_info">Konnte Feed für \'%s\' nicht laden.</string>
|
||||
|
@ -632,7 +632,6 @@
|
||||
<string name="feed_load_error_account_info">Αδυναμία φόρτωσης τροφοδοσίας για \'%s\'.</string>
|
||||
<string name="feed_load_error">Σφάλμα φόρτωσης τροφοδοσίας</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Από το Android 10 και μετά, μόνο το SAF υποστηρίζεται</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Το «Πλαίσιο Πρόσβασης Αποθήκευσης» δεν υποστηρίζεται σε Android KitKat και παλαιότερο</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Θα ερωτηθείτε πού να αποθηκεύσετε κάθε λήψη</string>
|
||||
<string name="no_dir_yet">Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα</string>
|
||||
<string name="metadata_host">Host</string>
|
||||
|
@ -633,7 +633,6 @@
|
||||
\n¿Desea desuscribirse de este canal\?</string>
|
||||
<string name="feed_load_error">Error al cargar el muro</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Desde Android 10 solo el \'Sistema de Acceso al Almacenamiento\' es soportado</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">El \'Sistema de Acceso al Almacenamiento\' no es sorportado en Android KitKat o versiones anteriores</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Se le preguntará dónde guardar cada descarga</string>
|
||||
<string name="disable_media_tunneling_summary">Deshabilitar el túnel de medios si experimenta una pantalla negra o interrupciones en la reproduccción de videos</string>
|
||||
<string name="disable_media_tunneling_title">Deshabilitar el túnel de medios</string>
|
||||
|
@ -632,7 +632,6 @@
|
||||
<string name="settings_category_feed_title">Voog</string>
|
||||
<string name="choose_instance_prompt">Vali eksemplar</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Android 10st alates on toetatud ainult salvestusjuurdepääsu raamistik \'Storage Access Framework\'</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Android KitKat ja vanemad versioonid ei toeta salvestusjuurdepääsu raamistikku \'Storage Access Framework\'</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Sinult küsitakse iga kord, kuhu alla laadimine salvestada</string>
|
||||
<string name="detail_heart_img_view_description">Südamlik autor</string>
|
||||
<string name="feed_use_dedicated_fetch_method_help_text">Kas sinu meelest on voo laadimine aeglane\? Sel juhul proovi lubada kiire laadimine (seda saad muuta seadetes või vajutades allolevat nuppu).
|
||||
|
@ -626,7 +626,6 @@
|
||||
<string name="feed_load_error_account_info">Ezin izan da \'%s\' jarioa kargatu.</string>
|
||||
<string name="feed_load_error">Errorea jarioa kargatzean</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Android 10etik aurrera \'Biltegiaren Sarrera Framework\'a soilik onartzen da</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Biltegiaren Sarrera Framework\'a ez da Android KitKat eta aurreko bertsioetan onartzen</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Non gorde galdetuko zaizu deskarga bakoitzean</string>
|
||||
<string name="no_dir_yet">Ez da deskargatzeko karpetarik ezarri oraindik, aukeratu lehenetsitako deskargatzeko karpeta orain</string>
|
||||
<string name="metadata_privacy">Pribatutasuna</string>
|
||||
|
@ -636,7 +636,6 @@
|
||||
<string name="description_select_note">اکنون میتوانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند.</string>
|
||||
<string name="no_dir_yet">هنوز شاخهٔ بارگیریای تنظیم نشده. اکنون شاخهٔ بارگیری پیشگزیده را برگزینید</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">برای ذخیرهٔ هر بارگیری از شما پرسیده خواهد شد</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">«چارچوب دسترسی ذخیره» روی اندروید کیتکت و پایینتر پشتیبانی نمیشود</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">از اندروید ۱۰، تنها «چارچوب دسترسی ذخیره» پشتیبانی میشود</string>
|
||||
<string name="feed_load_error_account_info">نتوانست خوراک را برای «%s» بار کند.</string>
|
||||
<string name="feed_load_error_terminated">حساب این نگارنده نابود شده است.
|
||||
|
@ -638,7 +638,6 @@
|
||||
\nHaluatko poistaa kanavan tilauksesta\?</string>
|
||||
<string name="feed_load_error_account_info">Ei voitu ladata syötettä hakusanalle \'%s\'.</string>
|
||||
<string name="feed_load_error">Virhe syötteen lataamisessa</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' ei ole tuettu Android KitKatissa tai vanhemmissa versioissa</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Sinulta kysytään joka kerta, minne tiedosto ladataan</string>
|
||||
<string name="dont_show">Älä näytä</string>
|
||||
<string name="low_quality_smaller">Matala laatu (pienempi)</string>
|
||||
|
@ -640,7 +640,6 @@
|
||||
\nNewPipe ne sera plus en mesure de charger ce flux à l’avenir.
|
||||
\nSouhaitez-vous vous désabonner de cette chaîne \?</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">À partir d’Android 10, seule « l’Infrastructure d’accès au stockage » est prise en charge</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">L’« Infrastructure d’accès au stockage » n’est pas prise en charge par Android KitKat et les versions antérieures</string>
|
||||
<string name="feed_load_error_fast_unknown">Le mode flux rapide ne fournit pas plus d’info à ce sujet.</string>
|
||||
<string name="comments_are_disabled">Les commentaires sont désactivés</string>
|
||||
<string name="dont_show">Ne pas afficher</string>
|
||||
|
@ -678,7 +678,6 @@
|
||||
<string name="processing_may_take_a_moment">Procesando... Pode devagar un momento</string>
|
||||
<string name="create_error_notification">Crear unha notificación de erro</string>
|
||||
<string name="show_image_indicators_summary">Amosar fitas coloridas de Picasso na cima das imaxes que indican a súa fonte: vermello para a rede, azul para o disco e verde para a memoria</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">O \'Sistema de Acceso ao almacenamento\' non está soportado en Android KitKat e anteriores</string>
|
||||
<string name="feed_new_items">Novos elementos</string>
|
||||
<string name="progressive_load_interval_exoplayer_default">Predefinido do ExoPlayer</string>
|
||||
<string name="show_crash_the_player_title">Amosar \"Travar o reprodutor\"</string>
|
||||
|
@ -653,7 +653,6 @@
|
||||
<string name="feed_load_error_account_info">לא ניתן לטעון את ההזנה עבור ‚%s’.</string>
|
||||
<string name="feed_load_error">שגיאה בהורדת ההזנה</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">התמיכה ב‚תשתית גישה לאחסון’ נתמכת מ־Android 10 בלבד</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">‚תשתית הגישה לאחסון’ אינה נתמכת על ידי Android KitKat ומטה</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">תופיע שאלה לאן לשמור כל הורדה</string>
|
||||
<string name="no_dir_yet">טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת</string>
|
||||
<string name="off">כבוי</string>
|
||||
|
@ -643,7 +643,6 @@
|
||||
<string name="feed_load_error_account_info">Nije moguće učitati feed za \'%s\'.</string>
|
||||
<string name="feed_load_error">Pogreška pri učitavanju feeda</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Počevši od Androida 10, podržan je samo \'Storage Access Framework\'</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">„Storage Access Framework“ nije podržan na Androidu KitKat i starijim</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Od vas će se tražiti gdje spremiti svako preuzimanje</string>
|
||||
<string name="dont_show">Ne prikazuj</string>
|
||||
<string name="low_quality_smaller">Niska kvaliteta (manji)</string>
|
||||
|
@ -582,7 +582,6 @@
|
||||
<string name="disable_media_tunneling_summary">Tiltsa le a médiacsatornázást, ha fekete képernyőt vagy akadozást tapasztal videólejátszáskor</string>
|
||||
<string name="show_image_indicators_summary">Picasso színes szalagok megjelenítése a képek fölött, megjelölve a forrásukat: piros a hálózathoz, kék a lemezhez, zöld a memóriához</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Minden letöltésnél meg fogja kérdezni, hogy hova mentse el</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">A „Storage Access Framework” nem támogatott Android KitKaten vagy régebbin</string>
|
||||
<string name="choose_instance_prompt">Válasszon egy példányt</string>
|
||||
<string name="feed_oldest_subscription_update">Lista legutóbbi frissítése: %s</string>
|
||||
<string name="feed_notification_loading">Lista betöltése…</string>
|
||||
|
@ -623,7 +623,6 @@
|
||||
<string name="feed_load_error_account_info">Tidak bisa memuat langganan untuk \'%s\'.</string>
|
||||
<string name="feed_load_error">Galat memuat langganan</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Mulai Android 10, hanya \'Storage Access Framework\' yang didukung</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' tidak didukung pada Android KitKat dan yang lebih rendah</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Anda akan ditanya lokasi penyimpanan berkas unduhan</string>
|
||||
<string name="no_dir_yet">Belum ada folder unduhan, pilih folder unduhan sekarang</string>
|
||||
<string name="off">Nonaktif</string>
|
||||
|
@ -633,7 +633,6 @@
|
||||
<string name="feed_load_error_account_info">Impossibile caricare feed per \"%s\".</string>
|
||||
<string name="feed_load_error">Errore caricamento feed</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">A partire da Android 10 è supportato solo il Framework di accesso all\'archiviazione</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Il Framework di accesso all\'archiviazione non è supportato su Android KitKat e versioni precedenti</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">È necessario specificare la destinazione di ogni dowload</string>
|
||||
<string name="no_dir_yet">Non è impostata alcuna cartella per i file scaricati, scegliere quella predefinita</string>
|
||||
<string name="off">Disattivata</string>
|
||||
|
@ -614,7 +614,6 @@
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">ダウンロードのたびに保存する場所を尋ねます</string>
|
||||
<string name="no_dir_yet">ダウンロードフォルダがまだ設定されていません。今すぐデフォルトのフォルダを選択してください</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Android 10 以降は \'Storage Access Framework\' のみがサポートされます</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' は Android KitKat 以下ではサポートされていません</string>
|
||||
<string name="feed_load_error_fast_unknown">高速モードでこの情報の詳細は提供されません。</string>
|
||||
<string name="feed_load_error_account_info">\'%s\' のフィードを読み込めませんでした。</string>
|
||||
<string name="feed_load_error">フィードの読み込みエラー</string>
|
||||
|
@ -647,7 +647,6 @@
|
||||
\nAr norite atsisakyti šio kanalo prenumeratos\?</string>
|
||||
<string name="feed_load_error">Klaida įkeliant srautą</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Pradedant Android 10 palaikoma tik \'Storage Access Framework\'</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' nėra palaikomas Android KitKat ir žemesnėse versijose</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Jūsų bus paklausta, kur išsaugoti kiekvieną atsiuntimą</string>
|
||||
<string name="no_dir_yet">Atsiuntimo aplankas dar nenustatytas, pasirinkite numatytąjį atsiuntimų aplanką dabar</string>
|
||||
<string name="comments_are_disabled">Komentarai yra išjungti</string>
|
||||
|
@ -636,7 +636,6 @@
|
||||
<string name="disable_media_tunneling_title">Izslēgt multivides tuneļošanu</string>
|
||||
<string name="disable_media_tunneling_summary">Izslēdziet multivides tuneļošanu, ja jums video atskaņošanas laikā parādās melns ekrāns vai aizķeršanās</string>
|
||||
<string name="show_image_indicators_summary">Rādīt krāsainas lentes virs attēliem, norādot to avotu: sarkana - tīkls, zila - disks, zaļa - atmiņa</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">“Krātuves Piekļuves Sistēma” ir neatbalstīta uz Android KitKat un zemākām versijām</string>
|
||||
<string name="description_select_enable">Ieslēgt teksta atlasīšanu video aprakstā</string>
|
||||
<string name="no_dir_yet">Lejupielādes mape vēl nav iestatīta, izvēlieties noklusējuma lejupielādes mapi</string>
|
||||
<string name="main_page_content_swipe_remove">Pārvelciet objektus, lai tos noņemtu</string>
|
||||
|
@ -639,7 +639,6 @@
|
||||
<string name="feed_load_error">ഫീഡ് ലോഡ് ചെയ്യുന്നതിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">ആൻഡ്രോയ്ഡ് 10 മുതൽ മാത്രമേ \"സ്റ്റോറേജ് അക്സസ് ഫ്രെയിംവർക്ക്\" പിന്തുണക്കു</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">എവിടെ ആണ് ഡൌൺലോഡ് ചെയ്യ്യപെടുന്ന ഓരോ ഫയൽലും സംരക്ഷിക്കപ്പെടേണ്ടത് എന്ന് തങ്കളോട് ചോദിക്കും</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">ആൻഡ്രോയ്ഡ് കിറ്റ് ക്യാറ്റോ അതിനു താഴെക്കോ ഉള്ളതിൽ \"സ്റ്റോറേജ് ആസസ്സ് ഫ്രെയിംവർക്ക് പിന്തുണക്കുന്നില്ല</string>
|
||||
<string name="dont_show">കാണിക്കരുത്</string>
|
||||
<string name="low_quality_smaller">കുറഞ്ഞ നിലവാരം (ചെറുത് )</string>
|
||||
<string name="high_quality_larger">ഉയർന്ന നിലവാരം (വലിയത് )</string>
|
||||
|
@ -618,7 +618,6 @@
|
||||
<string name="feed_load_error_account_info">Kunne ikke laste inn informasjonskanal for «%s».</string>
|
||||
<string name="feed_load_error">Kunne ikke laste inn informasjonskanal</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Fra Android 10 er kun «lagringstilgangsrammeverk» støttet</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">«Lagringstilgangsrammeverket» støttes ikke på Android KitKat og tidligere.</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Du vil bli spurt om hvor du vil lagre hver nedlastning</string>
|
||||
<string name="seekbar_preview_thumbnail_title">Miniatyrbildeforhåndsvisning</string>
|
||||
<string name="no_dir_yet">Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå.</string>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
|
||||
<!-- Opening Theme -->
|
||||
<style name="Base.V21.OpeningTheme" parent="Base.V19.OpeningTheme">
|
||||
<style name="Base.OpeningTheme" parent="Base.V21.OpeningTheme">
|
||||
<item name="android:navigationBarColor">@color/dark_youtube_primary_color</item>
|
||||
</style>
|
||||
|
@ -637,7 +637,6 @@
|
||||
<string name="feed_load_error_account_info">Kan geen feed laden voor \'%s\'.</string>
|
||||
<string name="feed_load_error">Error bij het inladen van de feed</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Vanaf Android 10 is enkel \'Storage Access Framework\' ondersteund</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Het \'Storage Access Framework\' is niet ondersteund op Android KitKat en lager</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">U wordt gevraagd waar elk bestand wordt opgeslagen</string>
|
||||
<string name="no_dir_yet">Nog geen downloadfolder gekozen, kies de standaard downloadfolder</string>
|
||||
<string name="detail_heart_img_view_description">Geliefd door de maker</string>
|
||||
|
@ -529,7 +529,6 @@
|
||||
<string name="app_language_title">ਐਪ ਭਾਸ਼ਾ</string>
|
||||
<string name="choose_instance_prompt">ਕੋਈ ਸਥਿਤੀ ਚੁਣੋ</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">\'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ 10 ਤੋਂ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ ਕਿਟਕੈਟ ਅਤੇ ਇਸਤੋਂ ਹੇਠਾਂ ਦੇ ਵਰਜਨਾਂ \'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਦਾ</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ</string>
|
||||
<string name="delete_downloaded_files">ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ</string>
|
||||
<string name="clear_download_history">ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ</string>
|
||||
|
@ -646,7 +646,6 @@
|
||||
\nCzy chcesz anulować subskrypcję tego kanału\?</string>
|
||||
<string name="feed_load_error_account_info">Nie udało się załadować kanału dla „%s”.</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">Począwszy od Androida 10 obsługiwany jest tylko systemowy selektor folderów (SAF)</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">Systemowy selektor folderów (SAF) nie jest obsługiwany przez system Android KitKat i niższy</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Zostaniesz zapytany(-na), gdzie zapisać każdy pobierany plik</string>
|
||||
<string name="no_dir_yet">Nie ustawiono jeszcze folderu zapisywania, wybierz domyślny teraz</string>
|
||||
<string name="feed_load_error">Błąd podczas ładowania kanału</string>
|
||||
|
@ -633,7 +633,6 @@
|
||||
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
|
||||
<string name="feed_load_error">Erro ao carregar o feed</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">O \'Storage Access Framework\' é compatível apenas com versões a partir do Android 10</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">O \'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Você será questionado onde salvar cada download</string>
|
||||
<string name="no_dir_yet">Nenhuma pasta de download definida ainda, escolha a pasta de download padrão agora</string>
|
||||
<string name="off">Desligado</string>
|
||||
|
@ -638,7 +638,6 @@
|
||||
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
|
||||
<string name="feed_load_error">Erro ao carregar o feed</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">\'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores</string>
|
||||
<string name="downloads_storage_ask_summary_no_saf_notice">Sempre que descarregar um ficheiro, terá que indicar o local para o guardar</string>
|
||||
<string name="dont_show">Não mostrar</string>
|
||||
<string name="low_quality_smaller">Baixa qualidade (menor)</string>
|
||||
|
@ -619,7 +619,6 @@
|
||||
<string name="feed_load_error_account_info">Não foi possível carregar o feed para \'%s\'.</string>
|
||||
<string name="feed_load_error">Erro ao carregar o feed</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_29">A partir do Android 10, apenas o \'Storage Access Framework\' é compatível</string>
|
||||
<string name="downloads_storage_use_saf_summary_api_19">A \'Framework de acesso ao armazenamento\' não está disponível no Android KitKat e anteriores</string>
|
||||
<string name="seekbar_preview_thumbnail_title">Pré-visualização da miniatura da barra de pesquisa</string>
|
||||
<string name="mark_as_watched">Marcar como visto</string>
|
||||
<string name="off">Desligado</string>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user