mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	Merge pull request #7613 from litetex/increase-minsdk
Bump minSdk to 21 - Android 5 / Lollipop
This commit is contained in:
		| @@ -14,15 +14,12 @@ android { | |||||||
|     defaultConfig { |     defaultConfig { | ||||||
|         applicationId "org.schabi.newpipe" |         applicationId "org.schabi.newpipe" | ||||||
|         resValue "string", "app_name", "NewPipe" |         resValue "string", "app_name", "NewPipe" | ||||||
|         minSdk 19 |         minSdk 21 | ||||||
|         targetSdk 29 |         targetSdk 29 | ||||||
|         versionCode 987 |         versionCode 987 | ||||||
|         versionName "0.23.1" |         versionName "0.23.1" | ||||||
|  |  | ||||||
|         multiDexEnabled true |  | ||||||
|  |  | ||||||
|         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||||
|         vectorDrawables.useSupportLibrary = true |  | ||||||
|  |  | ||||||
|         javaCompileOptions { |         javaCompileOptions { | ||||||
|             annotationProcessorOptions { |             annotationProcessorOptions { | ||||||
| @@ -210,7 +207,6 @@ dependencies { | |||||||
|     implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}" |     implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}" | ||||||
|     implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' |     implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' | ||||||
|     implementation 'androidx.media:media:1.5.0' |     implementation 'androidx.media:media:1.5.0' | ||||||
|     implementation 'androidx.multidex:multidex:2.0.1' |  | ||||||
|     implementation 'androidx.preference:preference:1.2.0' |     implementation 'androidx.preference:preference:1.2.0' | ||||||
|     implementation 'androidx.recyclerview:recyclerview:1.2.1' |     implementation 'androidx.recyclerview:recyclerview:1.2.1' | ||||||
|     implementation "androidx.room:room-runtime:${androidxRoomVersion}" |     implementation "androidx.room:room-runtime:${androidxRoomVersion}" | ||||||
| @@ -220,7 +216,6 @@ dependencies { | |||||||
|     // Newer version specified to prevent accessibility regressions with RecyclerView, see: |     // Newer version specified to prevent accessibility regressions with RecyclerView, see: | ||||||
|     // https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01 |     // https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01 | ||||||
|     implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' |     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-runtime-ktx:${androidxWorkVersion}" | ||||||
|     implementation "androidx.work:work-rxjava3:${androidxWorkVersion}" |     implementation "androidx.work:work-rxjava3:${androidxWorkVersion}" | ||||||
|     implementation 'com.google.android.material:material:1.5.0' |     implementation 'com.google.android.material:material:1.5.0' | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| package org.schabi.newpipe; | package org.schabi.newpipe; | ||||||
|  |  | ||||||
|  | import android.app.Application; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| @@ -7,7 +8,6 @@ import android.util.Log; | |||||||
| import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||||
| import androidx.core.app.NotificationChannelCompat; | import androidx.core.app.NotificationChannelCompat; | ||||||
| import androidx.core.app.NotificationManagerCompat; | import androidx.core.app.NotificationManagerCompat; | ||||||
| import androidx.multidex.MultiDexApplication; |  | ||||||
| import androidx.preference.PreferenceManager; | import androidx.preference.PreferenceManager; | ||||||
|  |  | ||||||
| import com.jakewharton.processphoenix.ProcessPhoenix; | 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/>. |  * 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; |     public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID; | ||||||
|     private static final String TAG = App.class.toString(); |     private static final String TAG = App.class.toString(); | ||||||
|     private static App app; |     private static App app; | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| package org.schabi.newpipe; | package org.schabi.newpipe; | ||||||
|  |  | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.os.Build; |  | ||||||
|  |  | ||||||
| import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||||
| import androidx.annotation.Nullable; | 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.extractor.exceptions.ReCaptchaException; | ||||||
| import org.schabi.newpipe.util.CookieUtils; | import org.schabi.newpipe.util.CookieUtils; | ||||||
| import org.schabi.newpipe.util.InfoCache; | import org.schabi.newpipe.util.InfoCache; | ||||||
| import org.schabi.newpipe.util.TLSSocketFactoryCompat; |  | ||||||
|  |  | ||||||
| import java.io.IOException; | 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.ArrayList; | ||||||
| import java.util.Arrays; |  | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.concurrent.TimeUnit; | 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.OkHttpClient; | ||||||
| import okhttp3.RequestBody; | import okhttp3.RequestBody; | ||||||
| import okhttp3.ResponseBody; | import okhttp3.ResponseBody; | ||||||
|  |  | ||||||
| import static org.schabi.newpipe.MainActivity.DEBUG; |  | ||||||
|  |  | ||||||
| public final class DownloaderImpl extends Downloader { | public final class DownloaderImpl extends Downloader { | ||||||
|     public static final String USER_AGENT |     public static final String USER_AGENT | ||||||
|             = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"; |             = "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 final OkHttpClient client; | ||||||
|  |  | ||||||
|     private DownloaderImpl(final OkHttpClient.Builder builder) { |     private DownloaderImpl(final OkHttpClient.Builder builder) { | ||||||
|         if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { |  | ||||||
|             enableModernTLS(builder); |  | ||||||
|         } |  | ||||||
|         this.client = builder |         this.client = builder | ||||||
|                 .readTimeout(30, TimeUnit.SECONDS) |                 .readTimeout(30, TimeUnit.SECONDS) | ||||||
| //                .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"), | //                .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"), | ||||||
| @@ -81,55 +62,6 @@ public final class DownloaderImpl extends Downloader { | |||||||
|         return instance; |         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) { |     public String getCookies(final String url) { | ||||||
|         final List<String> resultCookies = new ArrayList<>(); |         final List<String> resultCookies = new ArrayList<>(); | ||||||
|         if (url.contains(YOUTUBE_DOMAIN)) { |         if (url.contains(YOUTUBE_DOMAIN)) { | ||||||
|   | |||||||
| @@ -3,7 +3,6 @@ package org.schabi.newpipe; | |||||||
| import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
|  |  | ||||||
| import org.schabi.newpipe.util.NavigationHelper; | import org.schabi.newpipe.util.NavigationHelper; | ||||||
| @@ -44,11 +43,7 @@ public class ExitActivity extends Activity { | |||||||
|     protected void onCreate(final Bundle savedInstanceState) { |     protected void onCreate(final Bundle savedInstanceState) { | ||||||
|         super.onCreate(savedInstanceState); |         super.onCreate(savedInstanceState); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         finishAndRemoveTask(); |         finishAndRemoveTask(); | ||||||
|         } else { |  | ||||||
|             finish(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         NavigationHelper.restartApp(this); |         NavigationHelper.restartApp(this); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -28,7 +28,6 @@ import android.content.Intent; | |||||||
| import android.content.IntentFilter; | import android.content.IntentFilter; | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.content.pm.PackageManager; | import android.content.pm.PackageManager; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
| import android.os.Handler; | import android.os.Handler; | ||||||
| import android.os.Looper; | 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.SerializedCache; | ||||||
| import org.schabi.newpipe.util.ServiceHelper; | import org.schabi.newpipe.util.ServiceHelper; | ||||||
| import org.schabi.newpipe.util.StateSaver; | import org.schabi.newpipe.util.StateSaver; | ||||||
| import org.schabi.newpipe.util.TLSSocketFactoryCompat; |  | ||||||
| import org.schabi.newpipe.util.ThemeHelper; | import org.schabi.newpipe.util.ThemeHelper; | ||||||
| import org.schabi.newpipe.views.FocusOverlayView; | import org.schabi.newpipe.views.FocusOverlayView; | ||||||
|  |  | ||||||
| @@ -131,11 +129,6 @@ public class MainActivity extends AppCompatActivity { | |||||||
|                     + "savedInstanceState = [" + savedInstanceState + "]"); |                     + "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.setDayNightMode(this); | ||||||
|         ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this)); |         ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this)); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,7 +3,6 @@ package org.schabi.newpipe; | |||||||
| import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -40,10 +39,6 @@ public class PanicResponderActivity extends Activity { | |||||||
|             ExitActivity.exitAndRemoveFromRecentApps(this); |             ExitActivity.exitAndRemoveFromRecentApps(this); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         finishAndRemoveTask(); |         finishAndRemoveTask(); | ||||||
|         } else { |  | ||||||
|             finish(); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -114,13 +114,7 @@ class ErrorUtil { | |||||||
|                     context, |                     context, | ||||||
|                     context.getString(R.string.error_report_channel_id) |                     context.getString(R.string.error_report_channel_id) | ||||||
|                 ) |                 ) | ||||||
|                     .setSmallIcon( |                     .setSmallIcon(R.drawable.ic_bug_report) | ||||||
|                         // 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 |  | ||||||
|                     ) |  | ||||||
|                     .setContentTitle(context.getString(R.string.error_report_notification_title)) |                     .setContentTitle(context.getString(R.string.error_report_notification_title)) | ||||||
|                     .setContentText(context.getString(errorInfo.messageStringId)) |                     .setContentText(context.getString(errorInfo.messageStringId)) | ||||||
|                     .setAutoCancel(true) |                     .setAutoCancel(true) | ||||||
|   | |||||||
| @@ -3,14 +3,15 @@ package org.schabi.newpipe.error; | |||||||
| import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| import android.view.Menu; | import android.view.Menu; | ||||||
| import android.view.MenuItem; | import android.view.MenuItem; | ||||||
| import android.webkit.CookieManager; | import android.webkit.CookieManager; | ||||||
|  | import android.webkit.WebResourceRequest; | ||||||
| import android.webkit.WebSettings; | import android.webkit.WebSettings; | ||||||
| import android.webkit.WebView; | import android.webkit.WebView; | ||||||
|  | import android.webkit.WebViewClient; | ||||||
|  |  | ||||||
| import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||||
| import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||||
| @@ -18,7 +19,6 @@ import androidx.appcompat.app.ActionBar; | |||||||
| import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||||
| import androidx.core.app.NavUtils; | import androidx.core.app.NavUtils; | ||||||
| import androidx.preference.PreferenceManager; | import androidx.preference.PreferenceManager; | ||||||
| import androidx.webkit.WebViewClientCompat; |  | ||||||
|  |  | ||||||
| import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; | import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; | ||||||
| import org.schabi.newpipe.DownloaderImpl; | import org.schabi.newpipe.DownloaderImpl; | ||||||
| @@ -86,14 +86,15 @@ public class ReCaptchaActivity extends AppCompatActivity { | |||||||
|         webSettings.setJavaScriptEnabled(true); |         webSettings.setJavaScriptEnabled(true); | ||||||
|         webSettings.setUserAgentString(DownloaderImpl.USER_AGENT); |         webSettings.setUserAgentString(DownloaderImpl.USER_AGENT); | ||||||
|  |  | ||||||
|         recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClientCompat() { |         recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClient() { | ||||||
|             @Override |             @Override | ||||||
|             public boolean shouldOverrideUrlLoading(final WebView view, final String url) { |             public boolean shouldOverrideUrlLoading(final WebView view, | ||||||
|  |                                                     final WebResourceRequest request) { | ||||||
|                 if (MainActivity.DEBUG) { |                 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; |                 return false; | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -107,12 +108,7 @@ public class ReCaptchaActivity extends AppCompatActivity { | |||||||
|         // cleaning cache, history and cookies from webView |         // cleaning cache, history and cookies from webView | ||||||
|         recaptchaBinding.reCaptchaWebView.clearCache(true); |         recaptchaBinding.reCaptchaWebView.clearCache(true); | ||||||
|         recaptchaBinding.reCaptchaWebView.clearHistory(); |         recaptchaBinding.reCaptchaWebView.clearHistory(); | ||||||
|         final CookieManager cookieManager = CookieManager.getInstance(); |         CookieManager.getInstance().removeAllCookies(null); | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|             cookieManager.removeAllCookies(value -> { }); |  | ||||||
|         } else { |  | ||||||
|             cookieManager.removeAllCookie(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         recaptchaBinding.reCaptchaWebView.loadUrl(url); |         recaptchaBinding.reCaptchaWebView.loadUrl(url); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1922,13 +1922,7 @@ public final class VideoDetailFragment | |||||||
|         } |         } | ||||||
|         scrollToTop(); |         scrollToTop(); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         addVideoPlayerView(); |         addVideoPlayerView(); | ||||||
|         } else { |  | ||||||
|             // KitKat needs a delay before addVideoPlayerView call or it reports wrong height in |  | ||||||
|             // activity.getWindow().getDecorView().getHeight() |  | ||||||
|             new Handler().post(this::addVideoPlayerView); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -1991,11 +1985,9 @@ public final class VideoDetailFragment | |||||||
|         } |         } | ||||||
|         activity.getWindow().getDecorView().setSystemUiVisibility(0); |         activity.getWindow().getDecorView().setSystemUiVisibility(0); | ||||||
|         activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); |         activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( |         activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( | ||||||
|                 requireContext(), android.R.attr.colorPrimary)); |                 requireContext(), android.R.attr.colorPrimary)); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private void hideSystemUi() { |     private void hideSystemUi() { | ||||||
|         if (DEBUG) { |         if (DEBUG) { | ||||||
| @@ -2025,8 +2017,7 @@ public final class VideoDetailFragment | |||||||
|         } |         } | ||||||
|         activity.getWindow().getDecorView().setSystemUiVisibility(visibility); |         activity.getWindow().getDecorView().setSystemUiVisibility(visibility); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP |         if (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen())) { | ||||||
|                 && (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen()))) { |  | ||||||
|             activity.getWindow().setStatusBarColor(Color.TRANSPARENT); |             activity.getWindow().setStatusBarColor(Color.TRANSPARENT); | ||||||
|             activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); |             activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -497,9 +497,6 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I | |||||||
|                     + lastSearchedString); |                     + lastSearchedString); | ||||||
|         } |         } | ||||||
|         searchEditText.setText(searchString); |         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())) { |         if (TextUtils.isEmpty(searchString) || TextUtils.isEmpty(searchEditText.getText())) { | ||||||
|             searchToolbarContainer.setTranslationX(100); |             searchToolbarContainer.setTranslationX(100); | ||||||
|   | |||||||
| @@ -12,7 +12,6 @@ import android.view.View | |||||||
| import androidx.annotation.ColorInt | import androidx.annotation.ColorInt | ||||||
| import androidx.annotation.FloatRange | import androidx.annotation.FloatRange | ||||||
| import androidx.core.animation.addListener | import androidx.core.animation.addListener | ||||||
| import androidx.core.view.ViewCompat |  | ||||||
| import androidx.core.view.isGone | import androidx.core.view.isGone | ||||||
| import androidx.core.view.isInvisible | import androidx.core.view.isInvisible | ||||||
| import androidx.core.view.isVisible | import androidx.core.view.isVisible | ||||||
| @@ -21,10 +20,6 @@ import org.schabi.newpipe.MainActivity | |||||||
|  |  | ||||||
| private const val TAG = "ViewUtils" | private const val TAG = "ViewUtils" | ||||||
|  |  | ||||||
| inline var View.backgroundTintListCompat: ColorStateList? |  | ||||||
|     get() = ViewCompat.getBackgroundTintList(this) |  | ||||||
|     set(value) = ViewCompat.setBackgroundTintList(this, value) |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Animate the view. |  * Animate the view. | ||||||
|  * |  * | ||||||
| @@ -106,11 +101,11 @@ fun View.animateBackgroundColor(duration: Long, @ColorInt colorStart: Int, @Colo | |||||||
|     viewPropertyAnimator.interpolator = FastOutSlowInInterpolator() |     viewPropertyAnimator.interpolator = FastOutSlowInInterpolator() | ||||||
|     viewPropertyAnimator.duration = duration |     viewPropertyAnimator.duration = duration | ||||||
|     viewPropertyAnimator.addUpdateListener { animation: ValueAnimator -> |     viewPropertyAnimator.addUpdateListener { animation: ValueAnimator -> | ||||||
|         backgroundTintListCompat = ColorStateList(empty, intArrayOf(animation.animatedValue as Int)) |         backgroundTintList = ColorStateList(empty, intArrayOf(animation.animatedValue as Int)) | ||||||
|     } |     } | ||||||
|     viewPropertyAnimator.addListener( |     viewPropertyAnimator.addListener( | ||||||
|         onCancel = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) }, |         onCancel = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) }, | ||||||
|         onEnd = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) } |         onEnd = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) } | ||||||
|     ) |     ) | ||||||
|     viewPropertyAnimator.start() |     viewPropertyAnimator.start() | ||||||
| } | } | ||||||
|   | |||||||
| @@ -8,12 +8,10 @@ import android.view.View | |||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import android.view.inputmethod.InputMethodManager | import android.view.inputmethod.InputMethodManager | ||||||
| import android.widget.Toast | import android.widget.Toast | ||||||
| import androidx.appcompat.content.res.AppCompatResources |  | ||||||
| import androidx.core.content.getSystemService | import androidx.core.content.getSystemService | ||||||
| import androidx.core.os.bundleOf | import androidx.core.os.bundleOf | ||||||
| import androidx.core.view.isGone | import androidx.core.view.isGone | ||||||
| import androidx.core.view.isVisible | import androidx.core.view.isVisible | ||||||
| import androidx.core.widget.ImageViewCompat |  | ||||||
| import androidx.core.widget.doOnTextChanged | import androidx.core.widget.doOnTextChanged | ||||||
| import androidx.fragment.app.DialogFragment | import androidx.fragment.app.DialogFragment | ||||||
| import androidx.lifecycle.Observer | import androidx.lifecycle.Observer | ||||||
| @@ -124,14 +122,6 @@ class FeedGroupDialog : DialogFragment(), BackPressable { | |||||||
|         _feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view) |         _feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view) | ||||||
|         _searchLayoutBinding = feedGroupCreateBinding.subscriptionsHeaderSearchContainer |         _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( |         viewModel = ViewModelProvider( | ||||||
|             this, |             this, | ||||||
|             FeedGroupDialogViewModel.Factory( |             FeedGroupDialogViewModel.Factory( | ||||||
|   | |||||||
| @@ -1963,10 +1963,9 @@ public final class Player implements | |||||||
|     private void showSystemUIPartially() { |     private void showSystemUIPartially() { | ||||||
|         final AppCompatActivity activity = getParentActivity(); |         final AppCompatActivity activity = getParentActivity(); | ||||||
|         if (isFullscreen && activity != null) { |         if (isFullscreen && activity != null) { | ||||||
|             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|             activity.getWindow().setStatusBarColor(Color.TRANSPARENT); |             activity.getWindow().setStatusBarColor(Color.TRANSPARENT); | ||||||
|             activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); |             activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); | ||||||
|             } |  | ||||||
|             final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |             final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | ||||||
|                     | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |                     | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | ||||||
|                     | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; |                     | 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().putBoolean(Constants.KEY_THEME_CHANGE, true).apply(); | ||||||
|         defaultPreferences.edit().putString(themeKey, newValue.toString()).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 (!newValue.equals(beginningThemeKey) && getActivity() != null) { | ||||||
|             // if it's not the current theme |             // if it's not the current theme | ||||||
|   | |||||||
| @@ -66,16 +66,10 @@ public class DownloadSettingsFragment extends BasePreferenceFragment { | |||||||
|         prefStorageAsk = findPreference(downloadStorageAsk); |         prefStorageAsk = findPreference(downloadStorageAsk); | ||||||
|  |  | ||||||
|         final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference); |         final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference); | ||||||
|         prefUseSaf.setDefaultValue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP); |  | ||||||
|         prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx)); |         prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx)); | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q |  | ||||||
|                 || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|             prefUseSaf.setEnabled(false); |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { |         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { | ||||||
|  |             prefUseSaf.setEnabled(false); | ||||||
|             prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29); |             prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29); | ||||||
|             } else { |  | ||||||
|                 prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_19); |  | ||||||
|             } |  | ||||||
|             prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary_no_saf_notice); |             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, "")); |         forgetSAFTree(context, defaultPreferences.getString(key, "")); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP |         if (!FilePickerActivityHelper.isOwnFileUri(context, uri)) { | ||||||
|                 && !FilePickerActivityHelper.isOwnFileUri(context, uri)) { |  | ||||||
|             // steps to acquire the selected path: |             // steps to acquire the selected path: | ||||||
|             //     1. acquire permissions on the new save path |             //     1. acquire permissions on the new save path | ||||||
|             //     2. save the new path, if step(2) was successful |             //     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) { |     public static boolean useStorageAccessFramework(final Context context) { | ||||||
|         // There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a |         // There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a | ||||||
|         // remote (see #6455). |         // remote (see #6455). | ||||||
|         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || DeviceUtils.isFireTv()) { |         if (DeviceUtils.isFireTv()) { | ||||||
|             return false; |             return false; | ||||||
|         } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { |         } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { | ||||||
|             return true; |             return true; | ||||||
|   | |||||||
| @@ -1,19 +1,9 @@ | |||||||
| package org.schabi.newpipe.settings | package org.schabi.newpipe.settings | ||||||
|  |  | ||||||
| import android.os.Build |  | ||||||
| import android.os.Bundle | import android.os.Bundle | ||||||
| import androidx.preference.Preference |  | ||||||
| import org.schabi.newpipe.R |  | ||||||
|  |  | ||||||
| class NotificationSettingsFragment : BasePreferenceFragment() { | class NotificationSettingsFragment : BasePreferenceFragment() { | ||||||
|     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { |     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { | ||||||
|         addPreferencesFromResourceRegistry() |         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 | package org.schabi.newpipe.settings | ||||||
|  |  | ||||||
| import android.os.Build |  | ||||||
| import android.os.Bundle | import android.os.Bundle | ||||||
| import androidx.preference.Preference |  | ||||||
| import org.schabi.newpipe.R |  | ||||||
|  |  | ||||||
| class PlayerNotificationSettingsFragment : BasePreferenceFragment() { | class PlayerNotificationSettingsFragment : BasePreferenceFragment() { | ||||||
|     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { |     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { | ||||||
|         addPreferencesFromResourceRegistry() |         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.Context; | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.os.Build; |  | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
|  |  | ||||||
| import androidx.preference.PreferenceManager; | 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. |             // 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 |             // 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 |             // 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 |             // NoNonsenseFilePicker. Also, there's a bug on FireOS in which SAF open/close | ||||||
|             // is set to false in that case. Also, there's a bug on FireOS in which SAF open/close |  | ||||||
|             // dialogs cannot be confirmed with a remote (see #6455). |             // dialogs cannot be confirmed with a remote (see #6455). | ||||||
|             sp.edit().putBoolean(context.getString(R.string.storage_use_saf), |             sp.edit().putBoolean( | ||||||
|                     Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP |                     context.getString(R.string.storage_use_saf), | ||||||
|                             && !DeviceUtils.isFireTv()).apply(); |                     !DeviceUtils.isFireTv() | ||||||
|  |             ).apply(); | ||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -218,7 +218,7 @@ public class NotificationActionsPreference extends Preference { | |||||||
|                         final int color = ThemeHelper.resolveColorFromAttr(getContext(), |                         final int color = ThemeHelper.resolveColorFromAttr(getContext(), | ||||||
|                                 android.R.attr.textColorPrimary); |                                 android.R.attr.textColorPrimary); | ||||||
|                         drawable = DrawableCompat.wrap(drawable).mutate(); |                         drawable = DrawableCompat.wrap(drawable).mutate(); | ||||||
|                         DrawableCompat.setTint(drawable, color); |                         drawable.setTint(color); | ||||||
|                         radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null, |                         radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null, | ||||||
|                                 null, drawable, null); |                                 null, drawable, null); | ||||||
|                     } |                     } | ||||||
|   | |||||||
| @@ -6,7 +6,6 @@ import android.graphics.PorterDuff; | |||||||
| import android.graphics.PorterDuffColorFilter; | import android.graphics.PorterDuffColorFilter; | ||||||
| import android.graphics.drawable.Drawable; | import android.graphics.drawable.Drawable; | ||||||
| import android.graphics.drawable.RippleDrawable; | import android.graphics.drawable.RippleDrawable; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Handler; | import android.os.Handler; | ||||||
| import android.os.Looper; | import android.os.Looper; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| @@ -65,8 +64,7 @@ public final class PreferenceSearchResultHighlighter { | |||||||
|                             recyclerView.findViewHolderForAdapterPosition(position); |                             recyclerView.findViewHolderForAdapterPosition(position); | ||||||
|                     if (holder != null) { |                     if (holder != null) { | ||||||
|                         final Drawable background = holder.itemView.getBackground(); |                         final Drawable background = holder.itemView.getBackground(); | ||||||
|                         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP |                         if (background instanceof RippleDrawable) { | ||||||
|                                 && background instanceof RippleDrawable) { |  | ||||||
|                             showRippleAnimation((RippleDrawable) background); |                             showRippleAnimation((RippleDrawable) background); | ||||||
|                             return; |                             return; | ||||||
|                         } |                         } | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ import android.content.Context; | |||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.database.Cursor; | import android.database.Cursor; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| import android.os.Build; |  | ||||||
| import android.provider.DocumentsContract; | import android.provider.DocumentsContract; | ||||||
|  |  | ||||||
| import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||||
| @@ -53,10 +52,6 @@ public class StoredDirectoryHelper { | |||||||
|             throw new IOException(e); |             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); |         this.docTree = DocumentFile.fromTreeUri(context, path); | ||||||
|  |  | ||||||
|         if (this.docTree == null) { |         if (this.docTree == null) { | ||||||
| @@ -73,7 +68,7 @@ public class StoredDirectoryHelper { | |||||||
|         final String[] filename = splitFilename(name); |         final String[] filename = splitFilename(name); | ||||||
|         final String lcFilename = filename[0].toLowerCase(); |         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()) { |             for (final File file : ioTree.listFiles()) { | ||||||
|                 addIfStartWith(matches, lcFilename, file.getName()); |                 addIfStartWith(matches, lcFilename, file.getName()); | ||||||
|             } |             } | ||||||
| @@ -277,7 +272,7 @@ public class StoredDirectoryHelper { | |||||||
|      */ |      */ | ||||||
|     static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree, |     static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree, | ||||||
|                                           final String filename) { |                                           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 |             return tree.findFile(filename); // warning: this is very slow | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| package org.schabi.newpipe.streams.io; | package org.schabi.newpipe.streams.io; | ||||||
|  |  | ||||||
| import android.annotation.TargetApi; |  | ||||||
| import android.content.ContentResolver; | import android.content.ContentResolver; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| @@ -74,7 +73,6 @@ public class StoredFileHelper implements Serializable { | |||||||
|         this.tag = tag; |         this.tag = tag; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @TargetApi(Build.VERSION_CODES.LOLLIPOP) |  | ||||||
|     StoredFileHelper(@Nullable final Context context, final DocumentFile tree, |     StoredFileHelper(@Nullable final Context context, final DocumentFile tree, | ||||||
|                      final String filename, final String mime, final boolean safe) |                      final String filename, final String mime, final boolean safe) | ||||||
|             throws IOException { |             throws IOException { | ||||||
| @@ -124,7 +122,6 @@ public class StoredFileHelper implements Serializable { | |||||||
|         this.srcType = mime; |         this.srcType = mime; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @TargetApi(Build.VERSION_CODES.KITKAT) |  | ||||||
|     public StoredFileHelper(final Context context, @Nullable final Uri parent, |     public StoredFileHelper(final Context context, @Nullable final Uri parent, | ||||||
|                             @NonNull final Uri path, final String tag) throws IOException { |                             @NonNull final Uri path, final String tag) throws IOException { | ||||||
|         this.tag = tag; |         this.tag = tag; | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ public final class DeviceUtils { | |||||||
|         boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class) |         boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class) | ||||||
|                 .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION |                 .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION | ||||||
|                 || isFireTv() |                 || isFireTv() | ||||||
|                 || pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION); |                 || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); | ||||||
|  |  | ||||||
|         // from https://stackoverflow.com/a/58932366 |         // from https://stackoverflow.com/a/58932366 | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { |         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | ||||||
| @@ -77,10 +77,6 @@ public final class DeviceUtils { | |||||||
|                     && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); |                     && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|             isTv = isTv || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         DeviceUtils.isTV = isTv; |         DeviceUtils.isTV = isTv; | ||||||
|         return DeviceUtils.isTV; |         return DeviceUtils.isTV; | ||||||
|     } |     } | ||||||
| @@ -131,11 +127,10 @@ public final class DeviceUtils { | |||||||
|     /** |     /** | ||||||
|      * Some devices have broken tunneled video playback but claim to support it. |      * Some devices have broken tunneled video playback but claim to support it. | ||||||
|      * See https://github.com/TeamNewPipe/NewPipe/issues/5911 |      * 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() { |     public static boolean shouldSupportMediaTunneling() { | ||||||
|         return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP |         return !HI3798MV200 | ||||||
|                 && !HI3798MV200 |  | ||||||
|                 && !CVT_MT5886_EU_1G |                 && !CVT_MT5886_EU_1G | ||||||
|                 && !REALTEKATV |                 && !REALTEKATV | ||||||
|                 && !QM16XE_U; |                 && !QM16XE_U; | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ public final class PermissionHelper { | |||||||
|         return checkWriteStoragePermissions(activity, requestCode); |         return checkWriteStoragePermissions(activity, requestCode); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) |  | ||||||
|     public static boolean checkReadStoragePermissions(final Activity activity, |     public static boolean checkReadStoragePermissions(final Activity activity, | ||||||
|                                                       final int requestCode) { |                                                       final int requestCode) { | ||||||
|         if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) |         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. |         // Migrate any clip data and flags from the original intent. | ||||||
|         final int permFlags; |         final int permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | ||||||
|         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_WRITE_URI_PERMISSION | ||||||
|                 | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION |                 | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | ||||||
|                 | Intent.FLAG_GRANT_PREFIX_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); |  | ||||||
|         } |  | ||||||
|         if (permFlags != 0) { |         if (permFlags != 0) { | ||||||
|             ClipData targetClipData = intent.getClipData(); |             ClipData targetClipData = intent.getClipData(); | ||||||
|             if (targetClipData == null && intent.getData() != null) { |             if (targetClipData == null && intent.getData() != null) { | ||||||
|   | |||||||
| @@ -21,7 +21,6 @@ package org.schabi.newpipe.views; | |||||||
|  |  | ||||||
| import android.animation.ValueAnimator; | import android.animation.ValueAnimator; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Parcelable; | import android.os.Parcelable; | ||||||
| import android.util.AttributeSet; | import android.util.AttributeSet; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| @@ -29,7 +28,6 @@ import android.widget.LinearLayout; | |||||||
|  |  | ||||||
| import androidx.annotation.IntDef; | import androidx.annotation.IntDef; | ||||||
| import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||||
| import androidx.annotation.RequiresApi; |  | ||||||
|  |  | ||||||
| import org.schabi.newpipe.ktx.ViewUtils; | import org.schabi.newpipe.ktx.ViewUtils; | ||||||
|  |  | ||||||
| @@ -76,7 +74,6 @@ public class CollapsibleView extends LinearLayout { | |||||||
|         super(context, attrs, defStyleAttr); |         super(context, attrs, defStyleAttr); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) |  | ||||||
|     public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr, |     public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr, | ||||||
|                            final int defStyleRes) { |                            final int defStyleRes) { | ||||||
|         super(context, attrs, defStyleAttr, defStyleRes); |         super(context, attrs, defStyleAttr, defStyleRes); | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| package org.schabi.newpipe.views; | package org.schabi.newpipe.views; | ||||||
|  |  | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.os.Build; |  | ||||||
| import android.util.AttributeSet; | import android.util.AttributeSet; | ||||||
| import android.view.SurfaceView; | import android.view.SurfaceView; | ||||||
|  |  | ||||||
| @@ -45,10 +44,7 @@ public class ExpandableSurfaceView extends SurfaceView { | |||||||
|         scaleX = 1.0f; |         scaleX = 1.0f; | ||||||
|         scaleY = 1.0f; |         scaleY = 1.0f; | ||||||
|  |  | ||||||
|         if (resizeMode == RESIZE_MODE_FIT |         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 (aspectDeformation > 0) { |             if (aspectDeformation > 0) { | ||||||
|                 height = (int) (width / videoAspectRatio); |                 height = (int) (width / videoAspectRatio); | ||||||
|             } else { |             } else { | ||||||
|   | |||||||
| @@ -17,10 +17,8 @@ | |||||||
|  */ |  */ | ||||||
| package org.schabi.newpipe.views; | package org.schabi.newpipe.views; | ||||||
|  |  | ||||||
| import android.annotation.TargetApi; |  | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.graphics.Rect; | import android.graphics.Rect; | ||||||
| import android.os.Build; |  | ||||||
| import android.util.AttributeSet; | import android.util.AttributeSet; | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.ViewGroup; | 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 |      * Makes possible for multiple fragments to co-exist. Without this code | ||||||
|      * the first ViewGroup who consumes will be the last who receive the insets |      * the first ViewGroup who consumes will be the last who receive the insets | ||||||
|      */ |      */ | ||||||
|     @TargetApi(Build.VERSION_CODES.LOLLIPOP) |  | ||||||
|     @Override |     @Override | ||||||
|     public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) { |     public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) { | ||||||
|         boolean consumed = false; |         boolean consumed = false; | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| package us.shandian.giga.get; | package us.shandian.giga.get; | ||||||
|  |  | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Handler; | import android.os.Handler; | ||||||
| import android.system.ErrnoException; | import android.system.ErrnoException; | ||||||
| import android.system.OsConstants; | import android.system.OsConstants; | ||||||
| @@ -316,7 +315,6 @@ public class DownloadMission extends Mission { | |||||||
|  |  | ||||||
|     public synchronized void notifyError(int code, Exception err) { |     public synchronized void notifyError(int code, Exception err) { | ||||||
|         Log.e(TAG, "notifyError() code = " + code, err); |         Log.e(TAG, "notifyError() code = " + code, err); | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         if (err != null && err.getCause() instanceof ErrnoException) { |         if (err != null && err.getCause() instanceof ErrnoException) { | ||||||
|             int errno = ((ErrnoException) err.getCause()).errno; |             int errno = ((ErrnoException) err.getCause()).errno; | ||||||
|             if (errno == OsConstants.ENOSPC) { |             if (errno == OsConstants.ENOSPC) { | ||||||
| @@ -327,7 +325,6 @@ public class DownloadMission extends Mission { | |||||||
|                 err = null; |                 err = null; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if (err instanceof IOException) { |         if (err instanceof IOException) { | ||||||
|             if (err.getMessage().contains("Permission denied")) { |             if (err.getMessage().contains("Permission denied")) { | ||||||
|   | |||||||
| @@ -4,10 +4,8 @@ import android.app.Notification; | |||||||
| import android.app.NotificationManager; | import android.app.NotificationManager; | ||||||
| import android.app.PendingIntent; | import android.app.PendingIntent; | ||||||
| import android.app.Service; | import android.app.Service; | ||||||
| import android.content.BroadcastReceiver; |  | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.content.IntentFilter; |  | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.content.SharedPreferences.OnSharedPreferenceChangeListener; | import android.content.SharedPreferences.OnSharedPreferenceChangeListener; | ||||||
| import android.graphics.Bitmap; | import android.graphics.Bitmap; | ||||||
| @@ -18,7 +16,6 @@ import android.net.NetworkInfo; | |||||||
| import android.net.NetworkRequest; | import android.net.NetworkRequest; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| import android.os.Binder; | import android.os.Binder; | ||||||
| import android.os.Build; |  | ||||||
| import android.os.Handler; | import android.os.Handler; | ||||||
| import android.os.Handler.Callback; | import android.os.Handler.Callback; | ||||||
| import android.os.IBinder; | import android.os.IBinder; | ||||||
| @@ -100,7 +97,6 @@ public class DownloadManagerService extends Service { | |||||||
|     private final ArrayList<Callback> mEchoObservers = new ArrayList<>(1); |     private final ArrayList<Callback> mEchoObservers = new ArrayList<>(1); | ||||||
|  |  | ||||||
|     private ConnectivityManager mConnectivityManager; |     private ConnectivityManager mConnectivityManager; | ||||||
|     private BroadcastReceiver mNetworkStateListener = null; |  | ||||||
|     private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null; |     private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null; | ||||||
|  |  | ||||||
|     private SharedPreferences mPrefs = null; |     private SharedPreferences mPrefs = null; | ||||||
| @@ -166,7 +162,6 @@ public class DownloadManagerService extends Service { | |||||||
|         mConnectivityManager = ContextCompat.getSystemService(this, |         mConnectivityManager = ContextCompat.getSystemService(this, | ||||||
|                 ConnectivityManager.class); |                 ConnectivityManager.class); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() { |         mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() { | ||||||
|             @Override |             @Override | ||||||
|             public void onAvailable(Network network) { |             public void onAvailable(Network network) { | ||||||
| @@ -179,15 +174,6 @@ public class DownloadManagerService extends Service { | |||||||
|             } |             } | ||||||
|         }; |         }; | ||||||
|         mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL); |         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)); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener); |         mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener); | ||||||
|  |  | ||||||
| @@ -246,10 +232,7 @@ public class DownloadManagerService extends Service { | |||||||
|  |  | ||||||
|         manageLock(false); |         manageLock(false); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) |  | ||||||
|         mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL); |         mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL); | ||||||
|         else |  | ||||||
|             unregisterReceiver(mNetworkStateListener); |  | ||||||
|  |  | ||||||
|         mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener); |         mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener); | ||||||
|  |  | ||||||
| @@ -263,21 +246,6 @@ public class DownloadManagerService extends Service { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public IBinder onBind(Intent intent) { |     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; |         return mBinder; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -473,12 +441,7 @@ public class DownloadManagerService extends Service { | |||||||
|         if (downloadDoneCount == 1) { |         if (downloadDoneCount == 1) { | ||||||
|             downloadDoneList.append(name); |             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.setContentText(Localization.downloadCount(this, downloadDoneCount)); | ||||||
|             downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle() |             downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle() | ||||||
|                     .setBigContentTitle(Localization.downloadCount(this, downloadDoneCount)) |                     .setBigContentTitle(Localization.downloadCount(this, downloadDoneCount)) | ||||||
| @@ -511,16 +474,10 @@ public class DownloadManagerService extends Service { | |||||||
|                     .setContentIntent(mOpenDownloadList); |                     .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.setContentTitle(getString(R.string.download_failed)); | ||||||
|         downloadFailedNotification.setContentText(mission.storage.getName()); |         downloadFailedNotification.setContentText(mission.storage.getName()); | ||||||
|         downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() |         downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() | ||||||
|                 .bigText(mission.storage.getName())); |                 .bigText(mission.storage.getName())); | ||||||
|         } |  | ||||||
|  |  | ||||||
|         mNotificationManager.notify(id, downloadFailedNotification.build()); |         mNotificationManager.notify(id, downloadFailedNotification.build()); | ||||||
|     } |     } | ||||||
| @@ -556,12 +513,7 @@ public class DownloadManagerService extends Service { | |||||||
|  |  | ||||||
|         if (path.charAt(0) == File.separatorChar) { |         if (path.charAt(0) == File.separatorChar) { | ||||||
|             Log.i(TAG, "Old save path style present: " + path); |             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(); |             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 intent = new Intent(Intent.ACTION_VIEW); | ||||||
|         intent.setDataAndType(resolveShareableUri(mission), mimeType); |         intent.setDataAndType(resolveShareableUri(mission), mimeType); | ||||||
|         intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); |         intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); | ||||||
|  |  | ||||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |  | ||||||
|         intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION); |         intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION); | ||||||
|         } |  | ||||||
|         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { |         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { | ||||||
|             intent.addFlags(FLAG_ACTIVITY_NEW_TASK); |             intent.addFlags(FLAG_ACTIVITY_NEW_TASK); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -138,8 +138,8 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|  |                 android:src="@drawable/ic_pause" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_pause" |  | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|             <ProgressBar |             <ProgressBar | ||||||
| @@ -199,8 +199,8 @@ | |||||||
|                 android:gravity="center" |                 android:gravity="center" | ||||||
|                 android:minWidth="50dp" |                 android:minWidth="50dp" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|  |                 android:src="@drawable/ic_previous" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_previous" |  | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|             <ImageButton |             <ImageButton | ||||||
| @@ -214,8 +214,8 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:src="@drawable/ic_repeat" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_repeat" |  | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|             <View |             <View | ||||||
| @@ -235,8 +235,8 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:src="@drawable/ic_shuffle" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_shuffle" |  | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|             <androidx.appcompat.widget.AppCompatImageButton |             <androidx.appcompat.widget.AppCompatImageButton | ||||||
| @@ -253,8 +253,8 @@ | |||||||
|                 android:gravity="center" |                 android:gravity="center" | ||||||
|                 android:minWidth="50dp" |                 android:minWidth="50dp" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|  |                 android:src="@drawable/ic_next" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_next" |  | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|         </RelativeLayout> |         </RelativeLayout> | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
|   | |||||||
| @@ -65,8 +65,8 @@ | |||||||
|                             android:layout_height="64dp" |                             android:layout_height="64dp" | ||||||
|                             android:layout_gravity="center" |                             android:layout_gravity="center" | ||||||
|                             android:background="@android:color/transparent" |                             android:background="@android:color/transparent" | ||||||
|  |                             android:src="@drawable/ic_play_arrow_shadow" | ||||||
|                             android:visibility="invisible" |                             android:visibility="invisible" | ||||||
|                             app:srcCompat="@drawable/ic_play_arrow_shadow" |  | ||||||
|                             tools:ignore="ContentDescription" |                             tools:ignore="ContentDescription" | ||||||
|                             tools:visibility="visible" /> |                             tools:visibility="visible" /> | ||||||
|  |  | ||||||
| @@ -199,7 +199,7 @@ | |||||||
|                             android:layout_gravity="top|end" |                             android:layout_gravity="top|end" | ||||||
|                             android:layout_marginTop="11dp" |                             android:layout_marginTop="11dp" | ||||||
|                             android:layout_marginEnd="10dp" |                             android:layout_marginEnd="10dp" | ||||||
|                             app:srcCompat="@drawable/ic_expand_more" |                             android:src="@drawable/ic_expand_more" | ||||||
|                             tools:ignore="ContentDescription" /> |                             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|                     </FrameLayout> |                     </FrameLayout> | ||||||
| @@ -326,18 +326,6 @@ | |||||||
|                                         tools:text="Uploader" /> |                                         tools:text="Uploader" /> | ||||||
|                                 </LinearLayout> |                                 </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> |                             </LinearLayout> | ||||||
|  |  | ||||||
|                             <!-- VIEW & THUMBS --> |                             <!-- VIEW & THUMBS --> | ||||||
| @@ -369,7 +357,7 @@ | |||||||
|                                     android:layout_height="@dimen/video_item_detail_like_image_height" |                                     android:layout_height="@dimen/video_item_detail_like_image_height" | ||||||
|                                     android:layout_below="@id/detail_view_count_view" |                                     android:layout_below="@id/detail_view_count_view" | ||||||
|                                     android:contentDescription="@string/detail_likes_img_view_description" |                                     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 |                                 <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                     android:id="@+id/detail_thumbs_up_count_view" |                                     android:id="@+id/detail_thumbs_up_count_view" | ||||||
| @@ -393,7 +381,7 @@ | |||||||
|                                     android:layout_marginLeft="12dp" |                                     android:layout_marginLeft="12dp" | ||||||
|                                     android:layout_toRightOf="@id/detail_thumbs_up_count_view" |                                     android:layout_toRightOf="@id/detail_thumbs_up_count_view" | ||||||
|                                     android:contentDescription="@string/detail_dislikes_img_view_description" |                                     android:contentDescription="@string/detail_dislikes_img_view_description" | ||||||
|                                     app:srcCompat="@drawable/ic_thumb_down" |                                     android:src="@drawable/ic_thumb_down" | ||||||
|                                     tools:ignore="RtlHardcoded" /> |                                     tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
|                                 <org.schabi.newpipe.views.NewPipeTextView |                                 <org.schabi.newpipe.views.NewPipeTextView | ||||||
| @@ -447,12 +435,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/add_to_playlist" |                                 android:contentDescription="@string/add_to_playlist" | ||||||
|  |                                 android:drawableTop="@drawable/ic_playlist_add" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/controls_add_to_playlist_title" |                                 android:text="@string/controls_add_to_playlist_title" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_playlist_add" /> |  | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_background" |                                 android:id="@+id/detail_controls_background" | ||||||
| @@ -463,12 +451,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/play_audio" |                                 android:contentDescription="@string/play_audio" | ||||||
|  |                                 android:drawableTop="@drawable/ic_headset" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/controls_background_title" |                                 android:text="@string/controls_background_title" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_headset" /> |  | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_popup" |                                 android:id="@+id/detail_controls_popup" | ||||||
| @@ -479,12 +467,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/open_in_popup_mode" |                                 android:contentDescription="@string/open_in_popup_mode" | ||||||
|  |                                 android:drawableTop="@drawable/ic_picture_in_picture" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/controls_popup_title" |                                 android:text="@string/controls_popup_title" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_picture_in_picture" /> |  | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_download" |                                 android:id="@+id/detail_controls_download" | ||||||
| @@ -495,12 +483,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/controls_download_desc" |                                 android:contentDescription="@string/controls_download_desc" | ||||||
|  |                                 android:drawableTop="@drawable/ic_file_download" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/download" |                                 android:text="@string/download" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_file_download" /> |  | ||||||
|  |  | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
|  |  | ||||||
| @@ -526,12 +514,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/share" |                                 android:contentDescription="@string/share" | ||||||
|  |                                 android:drawableTop="@drawable/ic_share" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/share" |                                 android:text="@string/share" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_share" /> |  | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_open_in_browser" |                                 android:id="@+id/detail_controls_open_in_browser" | ||||||
| @@ -542,12 +530,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/open_in_browser" |                                 android:contentDescription="@string/open_in_browser" | ||||||
|  |                                 android:drawableTop="@drawable/ic_language" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/open_in_browser" |                                 android:text="@string/open_in_browser" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_language" /> |  | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_play_with_kodi" |                                 android:id="@+id/detail_controls_play_with_kodi" | ||||||
| @@ -558,14 +546,14 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/play_with_kodi_title" |                                 android:contentDescription="@string/play_with_kodi_title" | ||||||
|  |                                 android:drawableTop="@drawable/ic_cast" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/play_with_kodi_title" |                                 android:text="@string/play_with_kodi_title" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_cast" /> |  | ||||||
|  |  | ||||||
|                             <TextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_controls_crash_the_player" |                                 android:id="@+id/detail_controls_crash_the_player" | ||||||
|                                 android:layout_width="@dimen/detail_control_width" |                                 android:layout_width="@dimen/detail_control_width" | ||||||
|                                 android:layout_height="@dimen/detail_control_height" |                                 android:layout_height="@dimen/detail_control_height" | ||||||
| @@ -574,12 +562,12 @@ | |||||||
|                                 android:background="?attr/selectableItemBackgroundBorderless" |                                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                                 android:clickable="true" |                                 android:clickable="true" | ||||||
|                                 android:contentDescription="@string/crash_the_player" |                                 android:contentDescription="@string/crash_the_player" | ||||||
|  |                                 android:drawableTop="@drawable/ic_bug_report" | ||||||
|                                 android:focusable="true" |                                 android:focusable="true" | ||||||
|                                 android:gravity="center" |                                 android:gravity="center" | ||||||
|                                 android:paddingVertical="@dimen/detail_control_padding" |                                 android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                                 android:text="@string/crash_the_player" |                                 android:text="@string/crash_the_player" | ||||||
|                                 android:textSize="@dimen/detail_control_text_size" |                                 android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                                 app:drawableTopCompat="@drawable/ic_bug_report" /> |  | ||||||
|  |  | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
|  |  | ||||||
| @@ -719,7 +707,7 @@ | |||||||
|                 android:scaleType="center" |                 android:scaleType="center" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:focusedByDefault="true" |                 android:focusedByDefault="true" | ||||||
|                 app:srcCompat="@drawable/ic_play_arrow" |                 android:src="@drawable/ic_play_arrow" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|             <ImageButton |             <ImageButton | ||||||
| @@ -729,7 +717,7 @@ | |||||||
|                 android:background="?attr/selectableItemBackground" |                 android:background="?attr/selectableItemBackground" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="center" |                 android:scaleType="center" | ||||||
|                 app:srcCompat="@drawable/ic_close" |                 android:src="@drawable/ic_close" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|         </LinearLayout> |         </LinearLayout> | ||||||
|   | |||||||
| @@ -174,8 +174,8 @@ | |||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:scaleType="fitXY" |             android:scaleType="fitXY" | ||||||
|  |             android:src="@drawable/ic_repeat" | ||||||
|             android:tint="?attr/colorAccent" |             android:tint="?attr/colorAccent" | ||||||
|             app:srcCompat="@drawable/ic_repeat" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <androidx.appcompat.widget.AppCompatImageButton |         <androidx.appcompat.widget.AppCompatImageButton | ||||||
| @@ -189,8 +189,8 @@ | |||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:scaleType="fitCenter" |             android:scaleType="fitCenter" | ||||||
|  |             android:src="@drawable/ic_previous" | ||||||
|             android:tint="?attr/colorAccent" |             android:tint="?attr/colorAccent" | ||||||
|             app:srcCompat="@drawable/ic_previous" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <ImageButton |         <ImageButton | ||||||
| @@ -219,8 +219,8 @@ | |||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:scaleType="fitCenter" |             android:scaleType="fitCenter" | ||||||
|  |             android:src="@drawable/ic_pause" | ||||||
|             android:tint="?attr/colorAccent" |             android:tint="?attr/colorAccent" | ||||||
|             app:srcCompat="@drawable/ic_pause" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <ProgressBar |         <ProgressBar | ||||||
| @@ -268,8 +268,8 @@ | |||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:scaleType="fitCenter" |             android:scaleType="fitCenter" | ||||||
|  |             android:src="@drawable/ic_next" | ||||||
|             android:tint="?attr/colorAccent" |             android:tint="?attr/colorAccent" | ||||||
|             app:srcCompat="@drawable/ic_next" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <ImageButton |         <ImageButton | ||||||
| @@ -284,8 +284,8 @@ | |||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:scaleType="fitXY" |             android:scaleType="fitXY" | ||||||
|  |             android:src="@drawable/ic_shuffle" | ||||||
|             android:tint="?attr/colorAccent" |             android:tint="?attr/colorAccent" | ||||||
|             app:srcCompat="@drawable/ic_shuffle" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
|   | |||||||
| @@ -193,8 +193,8 @@ | |||||||
|             android:layout_centerVertical="true" |             android:layout_centerVertical="true" | ||||||
|             android:minWidth="0dp" |             android:minWidth="0dp" | ||||||
|             android:scaleType="centerInside" |             android:scaleType="centerInside" | ||||||
|  |             android:src="@drawable/ic_delete" | ||||||
|             android:visibility="gone" |             android:visibility="gone" | ||||||
|             app:srcCompat="@drawable/ic_delete" |  | ||||||
|             tools:ignore="ContentDescription" |             tools:ignore="ContentDescription" | ||||||
|             tools:visibility="visible" /> |             tools:visibility="visible" /> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent" |     android:layout_height="match_parent" | ||||||
| @@ -154,7 +153,7 @@ | |||||||
|             android:layout_alignParentEnd="true" |             android:layout_alignParentEnd="true" | ||||||
|             android:clickable="true" |             android:clickable="true" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             app:srcCompat="@drawable/ic_expand_more" |             android:src="@drawable/ic_expand_more" | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <LinearLayout |         <LinearLayout | ||||||
|   | |||||||
| @@ -1,5 +1,4 @@ | |||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent"> |     android:layout_height="match_parent"> | ||||||
| @@ -20,7 +19,7 @@ | |||||||
|             android:layout_centerVertical="true" |             android:layout_centerVertical="true" | ||||||
|             android:layout_marginLeft="12dp" |             android:layout_marginLeft="12dp" | ||||||
|             android:layout_marginRight="12dp" |             android:layout_marginRight="12dp" | ||||||
|             app:srcCompat="@drawable/ic_playlist_add" |             android:src="@drawable/ic_playlist_add" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ | |||||||
|                 android:layout_width="@dimen/drawer_header_newpipe_icon_size" |                 android:layout_width="@dimen/drawer_header_newpipe_icon_size" | ||||||
|                 android:layout_height="@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" |                 android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space" | ||||||
|                 app:srcCompat="@drawable/splash_foreground" |                 android:src="@drawable/splash_foreground" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|             <org.schabi.newpipe.views.NewPipeTextView |             <org.schabi.newpipe.views.NewPipeTextView | ||||||
| @@ -86,7 +86,7 @@ | |||||||
|                     android:scaleType="fitCenter" |                     android:scaleType="fitCenter" | ||||||
|                     app:tint="@color/drawer_header_font_color" |                     app:tint="@color/drawer_header_font_color" | ||||||
|                     tools:ignore="ContentDescription" |                     tools:ignore="ContentDescription" | ||||||
|                     tools:srcCompat="@drawable/ic_smart_display" /> |                     tools:src="@drawable/ic_smart_display" /> | ||||||
|  |  | ||||||
|                 <org.schabi.newpipe.views.NewPipeTextView |                 <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                     android:id="@+id/drawer_header_service_view" |                     android:id="@+id/drawer_header_service_view" | ||||||
| @@ -104,7 +104,7 @@ | |||||||
|                 android:layout_width="24dp" |                 android:layout_width="24dp" | ||||||
|                 android:layout_height="24dp" |                 android:layout_height="24dp" | ||||||
|                 android:layout_marginStart="4dp" |                 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" |                 app:tint="@color/drawer_header_font_color" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|         </LinearLayout> |         </LinearLayout> | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
|             android:layout_height="14dp" |             android:layout_height="14dp" | ||||||
|             android:layout_gravity="center" |             android:layout_gravity="center" | ||||||
|             android:scaleType="centerInside" |             android:scaleType="centerInside" | ||||||
|             app:srcCompat="@drawable/ic_add" |             android:src="@drawable/ic_add" | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
|             android:paddingTop="12dp" |             android:paddingTop="12dp" | ||||||
|             android:paddingRight="16dp" |             android:paddingRight="16dp" | ||||||
|             android:paddingBottom="12dp" |             android:paddingBottom="12dp" | ||||||
|             app:srcCompat="@drawable/ic_drag_handle" |             android:src="@drawable/ic_drag_handle" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
| </androidx.cardview.widget.CardView> | </androidx.cardview.widget.CardView> | ||||||
| @@ -1,5 +1,4 @@ | |||||||
| <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent" |     android:layout_height="match_parent" | ||||||
| @@ -20,7 +19,7 @@ | |||||||
|             android:layout_gravity="center_horizontal" |             android:layout_gravity="center_horizontal" | ||||||
|             android:layout_marginBottom="8dp" |             android:layout_marginBottom="8dp" | ||||||
|             android:contentDescription="@string/app_name" |             android:contentDescription="@string/app_name" | ||||||
|             app:srcCompat="@mipmap/ic_launcher" /> |             android:src="@mipmap/ic_launcher" /> | ||||||
|  |  | ||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|   | |||||||
| @@ -40,10 +40,10 @@ | |||||||
|         android:layout_marginBottom="16dp" |         android:layout_marginBottom="16dp" | ||||||
|         android:clickable="true" |         android:clickable="true" | ||||||
|         android:focusable="true" |         android:focusable="true" | ||||||
|  |         android:src="@drawable/ic_add" | ||||||
|         app:backgroundTint="?attr/colorPrimary" |         app:backgroundTint="?attr/colorPrimary" | ||||||
|         app:fabSize="auto" |         app:fabSize="auto" | ||||||
|         app:layout_constraintBottom_toBottomOf="parent" |         app:layout_constraintBottom_toBottomOf="parent" | ||||||
|         app:layout_constraintEnd_toEndOf="parent" |         app:layout_constraintEnd_toEndOf="parent" /> | ||||||
|         app:srcCompat="@drawable/ic_add" /> |  | ||||||
|  |  | ||||||
| </androidx.constraintlayout.widget.ConstraintLayout> | </androidx.constraintlayout.widget.ConstraintLayout> | ||||||
|   | |||||||
| @@ -38,11 +38,11 @@ | |||||||
|             android:contentDescription="@string/description_select_enable" |             android:contentDescription="@string/description_select_enable" | ||||||
|             android:focusable="true" |             android:focusable="true" | ||||||
|             android:padding="5dp" |             android:padding="5dp" | ||||||
|  |             android:src="@drawable/ic_select_all" | ||||||
|             app:layout_constraintBottom_toTopOf="@+id/barrier" |             app:layout_constraintBottom_toTopOf="@+id/barrier" | ||||||
|             app:layout_constraintDimensionRatio="1" |             app:layout_constraintDimensionRatio="1" | ||||||
|             app:layout_constraintEnd_toEndOf="parent" |             app:layout_constraintEnd_toEndOf="parent" | ||||||
|             app:layout_constraintTop_toTopOf="parent" |             app:layout_constraintTop_toTopOf="parent" /> | ||||||
|             app:srcCompat="@drawable/ic_select_all" /> |  | ||||||
|  |  | ||||||
|         <androidx.constraintlayout.widget.Barrier |         <androidx.constraintlayout.widget.Barrier | ||||||
|             android:id="@+id/barrier" |             android:id="@+id/barrier" | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent"> |     android:layout_height="match_parent"> | ||||||
| @@ -57,7 +56,7 @@ | |||||||
|             android:layout_alignParentEnd="true" |             android:layout_alignParentEnd="true" | ||||||
|             android:layout_marginStart="6dp" |             android:layout_marginStart="6dp" | ||||||
|             android:layout_marginEnd="12dp" |             android:layout_marginEnd="12dp" | ||||||
|             app:srcCompat="@drawable/ic_refresh" |             android:src="@drawable/ic_refresh" | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|         <View |         <View | ||||||
|   | |||||||
| @@ -44,8 +44,8 @@ | |||||||
|         android:layout_marginBottom="16dp" |         android:layout_marginBottom="16dp" | ||||||
|         android:clickable="true" |         android:clickable="true" | ||||||
|         android:focusable="true" |         android:focusable="true" | ||||||
|  |         android:src="@drawable/ic_add" | ||||||
|         app:backgroundTint="?attr/colorPrimary" |         app:backgroundTint="?attr/colorPrimary" | ||||||
|         app:fabSize="auto" |         app:fabSize="auto" /> | ||||||
|         app:srcCompat="@drawable/ic_add" /> |  | ||||||
|  |  | ||||||
| </RelativeLayout> | </RelativeLayout> | ||||||
|   | |||||||
| @@ -55,8 +55,8 @@ | |||||||
|                         android:layout_height="64dp" |                         android:layout_height="64dp" | ||||||
|                         android:layout_gravity="center" |                         android:layout_gravity="center" | ||||||
|                         android:background="@android:color/transparent" |                         android:background="@android:color/transparent" | ||||||
|  |                         android:src="@drawable/ic_play_arrow_shadow" | ||||||
|                         android:visibility="invisible" |                         android:visibility="invisible" | ||||||
|                         app:srcCompat="@drawable/ic_play_arrow_shadow" |  | ||||||
|                         tools:ignore="ContentDescription" |                         tools:ignore="ContentDescription" | ||||||
|                         tools:visibility="visible" /> |                         tools:visibility="visible" /> | ||||||
|  |  | ||||||
| @@ -187,7 +187,7 @@ | |||||||
|                         android:layout_gravity="top|end" |                         android:layout_gravity="top|end" | ||||||
|                         android:layout_marginTop="11dp" |                         android:layout_marginTop="11dp" | ||||||
|                         android:layout_marginEnd="10dp" |                         android:layout_marginEnd="10dp" | ||||||
|                         app:srcCompat="@drawable/ic_expand_more" |                         android:src="@drawable/ic_expand_more" | ||||||
|                         tools:ignore="ContentDescription" /> |                         tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
|                 </FrameLayout> |                 </FrameLayout> | ||||||
| @@ -313,19 +313,6 @@ | |||||||
|                                     tools:text="Uploader" /> |                                     tools:text="Uploader" /> | ||||||
|  |  | ||||||
|                             </LinearLayout> |                             </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> |                         </LinearLayout> | ||||||
|  |  | ||||||
|                         <!-- VIEW & THUMBS --> |                         <!-- VIEW & THUMBS --> | ||||||
| @@ -357,7 +344,7 @@ | |||||||
|                                 android:layout_height="@dimen/video_item_detail_like_image_height" |                                 android:layout_height="@dimen/video_item_detail_like_image_height" | ||||||
|                                 android:layout_below="@id/detail_view_count_view" |                                 android:layout_below="@id/detail_view_count_view" | ||||||
|                                 android:contentDescription="@string/detail_likes_img_view_description" |                                 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 |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                                 android:id="@+id/detail_thumbs_up_count_view" |                                 android:id="@+id/detail_thumbs_up_count_view" | ||||||
| @@ -381,7 +368,7 @@ | |||||||
|                                 android:layout_marginLeft="12dp" |                                 android:layout_marginLeft="12dp" | ||||||
|                                 android:layout_toRightOf="@id/detail_thumbs_up_count_view" |                                 android:layout_toRightOf="@id/detail_thumbs_up_count_view" | ||||||
|                                 android:contentDescription="@string/detail_dislikes_img_view_description" |                                 android:contentDescription="@string/detail_dislikes_img_view_description" | ||||||
|                                 app:srcCompat="@drawable/ic_thumb_down" |                                 android:src="@drawable/ic_thumb_down" | ||||||
|                                 tools:ignore="RtlHardcoded" /> |                                 tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
|                             <org.schabi.newpipe.views.NewPipeTextView |                             <org.schabi.newpipe.views.NewPipeTextView | ||||||
| @@ -433,12 +420,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/add_to_playlist" |                             android:contentDescription="@string/add_to_playlist" | ||||||
|  |                             android:drawableTop="@drawable/ic_playlist_add" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/controls_add_to_playlist_title" |                             android:text="@string/controls_add_to_playlist_title" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_playlist_add" /> |  | ||||||
|  |  | ||||||
|                         <org.schabi.newpipe.views.NewPipeTextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_background" |                             android:id="@+id/detail_controls_background" | ||||||
| @@ -449,12 +436,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/play_audio" |                             android:contentDescription="@string/play_audio" | ||||||
|  |                             android:drawableTop="@drawable/ic_headset" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/controls_background_title" |                             android:text="@string/controls_background_title" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_headset" /> |  | ||||||
|  |  | ||||||
|                         <org.schabi.newpipe.views.NewPipeTextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_popup" |                             android:id="@+id/detail_controls_popup" | ||||||
| @@ -465,12 +452,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/open_in_popup_mode" |                             android:contentDescription="@string/open_in_popup_mode" | ||||||
|  |                             android:drawableTop="@drawable/ic_picture_in_picture" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/controls_popup_title" |                             android:text="@string/controls_popup_title" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_picture_in_picture" /> |  | ||||||
|  |  | ||||||
|                         <org.schabi.newpipe.views.NewPipeTextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_download" |                             android:id="@+id/detail_controls_download" | ||||||
| @@ -481,12 +468,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/controls_download_desc" |                             android:contentDescription="@string/controls_download_desc" | ||||||
|  |                             android:drawableTop="@drawable/ic_file_download" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/download" |                             android:text="@string/download" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_file_download" /> |  | ||||||
|  |  | ||||||
|                     </LinearLayout> |                     </LinearLayout> | ||||||
|  |  | ||||||
| @@ -510,12 +497,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/share" |                             android:contentDescription="@string/share" | ||||||
|  |                             android:drawableTop="@drawable/ic_share" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/share" |                             android:text="@string/share" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_share" /> |  | ||||||
|  |  | ||||||
|                         <org.schabi.newpipe.views.NewPipeTextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_open_in_browser" |                             android:id="@+id/detail_controls_open_in_browser" | ||||||
| @@ -526,12 +513,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/open_in_browser" |                             android:contentDescription="@string/open_in_browser" | ||||||
|  |                             android:drawableTop="@drawable/ic_language" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/open_in_browser" |                             android:text="@string/open_in_browser" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_language" /> |  | ||||||
|  |  | ||||||
|                         <org.schabi.newpipe.views.NewPipeTextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_play_with_kodi" |                             android:id="@+id/detail_controls_play_with_kodi" | ||||||
| @@ -542,14 +529,14 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/play_with_kodi_title" |                             android:contentDescription="@string/play_with_kodi_title" | ||||||
|  |                             android:drawableTop="@drawable/ic_cast" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/play_with_kodi_title" |                             android:text="@string/play_with_kodi_title" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_cast" /> |  | ||||||
|  |  | ||||||
|                         <TextView |                         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|                             android:id="@+id/detail_controls_crash_the_player" |                             android:id="@+id/detail_controls_crash_the_player" | ||||||
|                             android:layout_width="@dimen/detail_control_width" |                             android:layout_width="@dimen/detail_control_width" | ||||||
|                             android:layout_height="@dimen/detail_control_height" |                             android:layout_height="@dimen/detail_control_height" | ||||||
| @@ -558,12 +545,12 @@ | |||||||
|                             android:background="?attr/selectableItemBackgroundBorderless" |                             android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                             android:clickable="true" |                             android:clickable="true" | ||||||
|                             android:contentDescription="@string/crash_the_player" |                             android:contentDescription="@string/crash_the_player" | ||||||
|  |                             android:drawableTop="@drawable/ic_bug_report" | ||||||
|                             android:focusable="true" |                             android:focusable="true" | ||||||
|                             android:gravity="center" |                             android:gravity="center" | ||||||
|                             android:paddingVertical="@dimen/detail_control_padding" |                             android:paddingVertical="@dimen/detail_control_padding" | ||||||
|                             android:text="@string/crash_the_player" |                             android:text="@string/crash_the_player" | ||||||
|                             android:textSize="@dimen/detail_control_text_size" |                             android:textSize="@dimen/detail_control_text_size" /> | ||||||
|                             app:drawableTopCompat="@drawable/ic_bug_report" /> |  | ||||||
|  |  | ||||||
|                     </LinearLayout> |                     </LinearLayout> | ||||||
|  |  | ||||||
| @@ -696,7 +683,7 @@ | |||||||
|                 android:scaleType="center" |                 android:scaleType="center" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:focusedByDefault="true" |                 android:focusedByDefault="true" | ||||||
|                 app:srcCompat="@drawable/ic_play_arrow" |                 android:src="@drawable/ic_play_arrow" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|             <ImageButton |             <ImageButton | ||||||
| @@ -706,7 +693,7 @@ | |||||||
|                 android:background="?attr/selectableItemBackground" |                 android:background="?attr/selectableItemBackground" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="center" |                 android:scaleType="center" | ||||||
|                 app:srcCompat="@drawable/ic_close" |                 android:src="@drawable/ic_close" | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|         </LinearLayout> |         </LinearLayout> | ||||||
|   | |||||||
| @@ -75,7 +75,7 @@ | |||||||
|             android:paddingTop="12dp" |             android:paddingTop="12dp" | ||||||
|             android:paddingRight="10dp" |             android:paddingRight="10dp" | ||||||
|             android:paddingBottom="12dp" |             android:paddingBottom="12dp" | ||||||
|             app:srcCompat="@drawable/ic_drag_handle" |             android:src="@drawable/ic_drag_handle" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
| </androidx.cardview.widget.CardView> | </androidx.cardview.widget.CardView> | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="wrap_content" |     android:layout_height="wrap_content" | ||||||
| @@ -64,7 +63,7 @@ | |||||||
|             android:layout_width="20dp" |             android:layout_width="20dp" | ||||||
|             android:layout_height="20dp" |             android:layout_height="20dp" | ||||||
|             android:layout_gravity="center" |             android:layout_gravity="center" | ||||||
|             app:srcCompat="@drawable/ic_search_add" |             android:src="@drawable/ic_search_add" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|     </LinearLayout> |     </LinearLayout> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
|             android:paddingTop="12dp" |             android:paddingTop="12dp" | ||||||
|             android:paddingRight="16dp" |             android:paddingRight="16dp" | ||||||
|             android:paddingBottom="12dp" |             android:paddingBottom="12dp" | ||||||
|             app:srcCompat="@drawable/ic_drag_handle" |             android:src="@drawable/ic_drag_handle" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
| </androidx.cardview.widget.CardView> | </androidx.cardview.widget.CardView> | ||||||
|   | |||||||
| @@ -32,8 +32,8 @@ | |||||||
|         android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin" |         android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin" | ||||||
|         android:layout_toEndOf="@+id/itemThumbnailView" |         android:layout_toEndOf="@+id/itemThumbnailView" | ||||||
|         android:contentDescription="@string/detail_pinned_comment_view_description" |         android:contentDescription="@string/detail_pinned_comment_view_description" | ||||||
|  |         android:src="@drawable/ic_pin" | ||||||
|         android:visibility="gone" |         android:visibility="gone" | ||||||
|         app:srcCompat="@drawable/ic_pin" |  | ||||||
|         tools:visibility="visible" /> |         tools:visibility="visible" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
| @@ -69,7 +69,7 @@ | |||||||
|         android:layout_below="@id/itemCommentContentView" |         android:layout_below="@id/itemCommentContentView" | ||||||
|         android:layout_toRightOf="@+id/itemThumbnailView" |         android:layout_toRightOf="@+id/itemThumbnailView" | ||||||
|         android:contentDescription="@string/detail_likes_img_view_description" |         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 |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|         android:id="@+id/detail_thumbs_up_count_view" |         android:id="@+id/detail_thumbs_up_count_view" | ||||||
| @@ -92,37 +92,9 @@ | |||||||
|         android:layout_marginLeft="@dimen/video_item_detail_heart_margin" |         android:layout_marginLeft="@dimen/video_item_detail_heart_margin" | ||||||
|         android:layout_toRightOf="@+id/detail_thumbs_up_count_view" |         android:layout_toRightOf="@+id/detail_thumbs_up_count_view" | ||||||
|         android:contentDescription="@string/detail_heart_img_view_description" |         android:contentDescription="@string/detail_heart_img_view_description" | ||||||
|  |         android:src="@drawable/ic_heart" | ||||||
|         android:visibility="gone" |         android:visibility="gone" | ||||||
|         tools:visibility="visible" |         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" />--> |  | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|         android:id="@+id/itemPublishedTime" |         android:id="@+id/itemPublishedTime" | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ | |||||||
|         android:layout_below="@id/itemCommentContentView" |         android:layout_below="@id/itemCommentContentView" | ||||||
|         android:layout_toRightOf="@+id/itemThumbnailView" |         android:layout_toRightOf="@+id/itemThumbnailView" | ||||||
|         android:contentDescription="@string/detail_likes_img_view_description" |         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 |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|         android:id="@+id/detail_thumbs_up_count_view" |         android:id="@+id/detail_thumbs_up_count_view" | ||||||
| @@ -54,33 +54,6 @@ | |||||||
|         tools:ignore="RtlHardcoded" |         tools:ignore="RtlHardcoded" | ||||||
|         tools:text="12M" /> |         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 |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|         android:id="@+id/itemPublishedTime" |         android:id="@+id/itemPublishedTime" | ||||||
|         android:layout_width="wrap_content" |         android:layout_width="wrap_content" | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
| @@ -29,6 +28,8 @@ | |||||||
|         android:layout_alignEnd="@id/itemThumbnailView" |         android:layout_alignEnd="@id/itemThumbnailView" | ||||||
|         android:layout_alignBottom="@id/itemThumbnailView" |         android:layout_alignBottom="@id/itemThumbnailView" | ||||||
|         android:background="@color/playlist_stream_count_background_color" |         android:background="@color/playlist_stream_count_background_color" | ||||||
|  |         android:drawableTop="@drawable/ic_playlist_play" | ||||||
|  |         android:drawableTint="@color/duration_text_color" | ||||||
|         android:gravity="center" |         android:gravity="center" | ||||||
|         android:paddingTop="16dp" |         android:paddingTop="16dp" | ||||||
|         android:paddingBottom="14dp" |         android:paddingBottom="14dp" | ||||||
| @@ -36,8 +37,6 @@ | |||||||
|         android:textColor="@color/duration_text_color" |         android:textColor="@color/duration_text_color" | ||||||
|         android:textSize="@dimen/video_item_search_duration_text_size" |         android:textSize="@dimen/video_item_search_duration_text_size" | ||||||
|         android:textStyle="bold" |         android:textStyle="bold" | ||||||
|         app:drawableTint="@color/duration_text_color" |  | ||||||
|         app:drawableTopCompat="@drawable/ic_playlist_play" |  | ||||||
|         tools:text="314159" /> |         tools:text="314159" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
| @@ -30,6 +29,8 @@ | |||||||
|         android:layout_alignEnd="@id/itemThumbnailView" |         android:layout_alignEnd="@id/itemThumbnailView" | ||||||
|         android:layout_alignBottom="@id/itemThumbnailView" |         android:layout_alignBottom="@id/itemThumbnailView" | ||||||
|         android:background="@color/playlist_stream_count_background_color" |         android:background="@color/playlist_stream_count_background_color" | ||||||
|  |         android:drawableTop="@drawable/ic_playlist_play" | ||||||
|  |         android:drawableTint="@color/duration_text_color" | ||||||
|         android:gravity="center" |         android:gravity="center" | ||||||
|         android:paddingTop="16dp" |         android:paddingTop="16dp" | ||||||
|         android:paddingBottom="14dp" |         android:paddingBottom="14dp" | ||||||
| @@ -37,8 +38,6 @@ | |||||||
|         android:textColor="@color/duration_text_color" |         android:textColor="@color/duration_text_color" | ||||||
|         android:textSize="@dimen/video_item_search_duration_text_size" |         android:textSize="@dimen/video_item_search_duration_text_size" | ||||||
|         android:textStyle="bold" |         android:textStyle="bold" | ||||||
|         app:drawableTint="@color/duration_text_color" |  | ||||||
|         app:drawableTopCompat="@drawable/ic_playlist_play" |  | ||||||
|         tools:text="314159" /> |         tools:text="314159" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
| @@ -30,6 +29,8 @@ | |||||||
|         android:layout_alignEnd="@id/itemThumbnailView" |         android:layout_alignEnd="@id/itemThumbnailView" | ||||||
|         android:layout_alignBottom="@id/itemThumbnailView" |         android:layout_alignBottom="@id/itemThumbnailView" | ||||||
|         android:background="@color/playlist_stream_count_background_color" |         android:background="@color/playlist_stream_count_background_color" | ||||||
|  |         android:drawableTop="@drawable/ic_playlist_play" | ||||||
|  |         android:drawableTint="@color/duration_text_color" | ||||||
|         android:gravity="center" |         android:gravity="center" | ||||||
|         android:paddingTop="4dp" |         android:paddingTop="4dp" | ||||||
|         android:paddingBottom="6dp" |         android:paddingBottom="6dp" | ||||||
| @@ -37,8 +38,6 @@ | |||||||
|         android:textColor="@color/duration_text_color" |         android:textColor="@color/duration_text_color" | ||||||
|         android:textSize="@dimen/video_item_search_duration_text_size" |         android:textSize="@dimen/video_item_search_duration_text_size" | ||||||
|         android:textStyle="bold" |         android:textStyle="bold" | ||||||
|         app:drawableTint="@color/duration_text_color" |  | ||||||
|         app:drawableTopCompat="@drawable/ic_playlist_play" |  | ||||||
|         tools:text="3141" /> |         tools:text="3141" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
| @@ -49,7 +48,7 @@ | |||||||
|         android:contentDescription="@string/detail_drag_description" |         android:contentDescription="@string/detail_drag_description" | ||||||
|         android:paddingLeft="@dimen/video_item_search_image_right_margin" |         android:paddingLeft="@dimen/video_item_search_image_right_margin" | ||||||
|         android:scaleType="center" |         android:scaleType="center" | ||||||
|         app:srcCompat="@drawable/ic_drag_handle" |         android:src="@drawable/ic_drag_handle" | ||||||
|         tools:ignore="RtlHardcoded,RtlSymmetry" /> |         tools:ignore="RtlHardcoded,RtlSymmetry" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:id="@+id/itemRoot" |     android:id="@+id/itemRoot" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
| @@ -50,7 +49,7 @@ | |||||||
|         android:contentDescription="@string/detail_drag_description" |         android:contentDescription="@string/detail_drag_description" | ||||||
|         android:paddingLeft="@dimen/video_item_search_image_right_margin" |         android:paddingLeft="@dimen/video_item_search_image_right_margin" | ||||||
|         android:scaleType="center" |         android:scaleType="center" | ||||||
|         app:srcCompat="@drawable/ic_drag_handle" |         android:src="@drawable/ic_drag_handle" | ||||||
|         tools:ignore="RtlHardcoded,RtlSymmetry" /> |         tools:ignore="RtlHardcoded,RtlSymmetry" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ | |||||||
|                 android:layout_marginRight="1dp" |                 android:layout_marginRight="1dp" | ||||||
|                 android:contentDescription="TODO" |                 android:contentDescription="TODO" | ||||||
|                 android:scaleType="center" |                 android:scaleType="center" | ||||||
|                 app:srcCompat="@drawable/ic_more_vert" |                 android:src="@drawable/ic_more_vert" | ||||||
|                 app:tint="?attr/actionColor" /> |                 app:tint="?attr/actionColor" /> | ||||||
|  |  | ||||||
|         </RelativeLayout> |         </RelativeLayout> | ||||||
|   | |||||||
| @@ -72,7 +72,7 @@ | |||||||
|             android:layout_marginRight="4dp" |             android:layout_marginRight="4dp" | ||||||
|             android:contentDescription="TODO" |             android:contentDescription="TODO" | ||||||
|             android:scaleType="centerInside" |             android:scaleType="centerInside" | ||||||
|             app:srcCompat="@drawable/ic_more_vert" |             android:src="@drawable/ic_more_vert" | ||||||
|             app:tint="?attr/actionColor" /> |             app:tint="?attr/actionColor" /> | ||||||
|  |  | ||||||
|     </RelativeLayout> |     </RelativeLayout> | ||||||
|   | |||||||
| @@ -52,8 +52,8 @@ | |||||||
|             android:layout_gravity="top|center_horizontal" |             android:layout_gravity="top|center_horizontal" | ||||||
|             android:layout_marginTop="4dp" |             android:layout_marginTop="4dp" | ||||||
|             android:scaleType="centerInside" |             android:scaleType="centerInside" | ||||||
|  |             android:src="@drawable/ic_done" | ||||||
|             app:tint="@color/white" |             app:tint="@color/white" | ||||||
|             app:srcCompat="@drawable/ic_done" |  | ||||||
|             tools:ignore="ContentDescription" /> |             tools:ignore="ContentDescription" /> | ||||||
|     </FrameLayout> |     </FrameLayout> | ||||||
| </FrameLayout> | </FrameLayout> | ||||||
|   | |||||||
| @@ -89,10 +89,10 @@ | |||||||
|         android:layout_gravity="center_vertical" |         android:layout_gravity="center_vertical" | ||||||
|         android:paddingHorizontal="@dimen/video_item_search_image_right_margin" |         android:paddingHorizontal="@dimen/video_item_search_image_right_margin" | ||||||
|         android:scaleType="center" |         android:scaleType="center" | ||||||
|  |         android:src="@drawable/ic_drag_handle" | ||||||
|         app:layout_constraintBottom_toBottomOf="parent" |         app:layout_constraintBottom_toBottomOf="parent" | ||||||
|         app:layout_constraintEnd_toEndOf="parent" |         app:layout_constraintEnd_toEndOf="parent" | ||||||
|         app:layout_constraintTop_toTopOf="parent" |         app:layout_constraintTop_toTopOf="parent" | ||||||
|         app:srcCompat="@drawable/ic_drag_handle" |  | ||||||
|         tools:ignore="ContentDescription,RtlHardcoded" /> |         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
| </androidx.constraintlayout.widget.ConstraintLayout> | </androidx.constraintlayout.widget.ConstraintLayout> | ||||||
|   | |||||||
| @@ -112,8 +112,8 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|  |                         android:src="@drawable/ic_close" | ||||||
|                         android:visibility="gone" |                         android:visibility="gone" | ||||||
|                         app:srcCompat="@drawable/ic_close" |  | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="ContentDescription,RtlHardcoded" /> |                         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -198,8 +198,8 @@ | |||||||
|                         android:paddingEnd="3dp" |                         android:paddingEnd="3dp" | ||||||
|                         android:paddingBottom="3dp" |                         android:paddingBottom="3dp" | ||||||
|                         android:scaleType="fitCenter" |                         android:scaleType="fitCenter" | ||||||
|  |                         android:src="@drawable/ic_list" | ||||||
|                         android:visibility="gone" |                         android:visibility="gone" | ||||||
|                         app:srcCompat="@drawable/ic_list" |  | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="ContentDescription,RtlHardcoded" /> |                         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -216,8 +216,8 @@ | |||||||
|                         android:paddingEnd="6dp" |                         android:paddingEnd="6dp" | ||||||
|                         android:paddingBottom="3dp" |                         android:paddingBottom="3dp" | ||||||
|                         android:scaleType="fitCenter" |                         android:scaleType="fitCenter" | ||||||
|  |                         android:src="@drawable/ic_format_list_numbered" | ||||||
|                         android:visibility="gone" |                         android:visibility="gone" | ||||||
|                         app:srcCompat="@drawable/ic_format_list_numbered" |  | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="ContentDescription,RtlHardcoded" /> |                         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -230,7 +230,7 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|                         app:srcCompat="@drawable/ic_expand_more" |                         android:src="@drawable/ic_expand_more" | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="ContentDescription,RtlHardcoded" /> |                         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -294,7 +294,7 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|                         app:srcCompat="@drawable/ic_cast" |                         android:src="@drawable/ic_cast" | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="RtlHardcoded" /> |                         tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -309,7 +309,7 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|                         app:srcCompat="@drawable/ic_language" |                         android:src="@drawable/ic_language" | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="RtlHardcoded" /> |                         tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -324,7 +324,7 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|                         app:srcCompat="@drawable/ic_share" |                         android:src="@drawable/ic_share" | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="RtlHardcoded" /> |                         tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -338,7 +338,7 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitXY" |                         android:scaleType="fitXY" | ||||||
|                         app:srcCompat="@drawable/ic_volume_off" |                         android:src="@drawable/ic_volume_off" | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="RtlHardcoded" /> |                         tools:ignore="RtlHardcoded" /> | ||||||
|  |  | ||||||
| @@ -351,8 +351,8 @@ | |||||||
|                         android:focusable="true" |                         android:focusable="true" | ||||||
|                         android:padding="@dimen/player_main_buttons_padding" |                         android:padding="@dimen/player_main_buttons_padding" | ||||||
|                         android:scaleType="fitCenter" |                         android:scaleType="fitCenter" | ||||||
|  |                         android:src="@drawable/ic_fullscreen" | ||||||
|                         android:visibility="gone" |                         android:visibility="gone" | ||||||
|                         app:srcCompat="@drawable/ic_fullscreen" |  | ||||||
|                         app:tint="@color/white" |                         app:tint="@color/white" | ||||||
|                         tools:ignore="ContentDescription,RtlHardcoded" |                         tools:ignore="ContentDescription,RtlHardcoded" | ||||||
|                         tools:visibility="visible" /> |                         tools:visibility="visible" /> | ||||||
| @@ -397,8 +397,8 @@ | |||||||
|                         android:layout_width="wrap_content" |                         android:layout_width="wrap_content" | ||||||
|                         android:layout_height="wrap_content" |                         android:layout_height="wrap_content" | ||||||
|                         android:paddingTop="2dp" |                         android:paddingTop="2dp" | ||||||
|  |                         android:src="@drawable/dummy_thumbnail" | ||||||
|                         android:visibility="gone" |                         android:visibility="gone" | ||||||
|                         app:srcCompat="@drawable/dummy_thumbnail" |  | ||||||
|                         tools:visibility="visible" /> |                         tools:visibility="visible" /> | ||||||
|  |  | ||||||
|                 </LinearLayout> |                 </LinearLayout> | ||||||
| @@ -475,8 +475,8 @@ | |||||||
|                     android:nextFocusUp="@id/playbackSeekBar" |                     android:nextFocusUp="@id/playbackSeekBar" | ||||||
|                     android:padding="@dimen/player_main_buttons_padding" |                     android:padding="@dimen/player_main_buttons_padding" | ||||||
|                     android:scaleType="fitCenter" |                     android:scaleType="fitCenter" | ||||||
|  |                     android:src="@drawable/ic_fullscreen" | ||||||
|                     android:visibility="gone" |                     android:visibility="gone" | ||||||
|                     app:srcCompat="@drawable/ic_fullscreen" |  | ||||||
|                     app:tint="@color/white" |                     app:tint="@color/white" | ||||||
|                     tools:ignore="ContentDescription,RtlHardcoded" |                     tools:ignore="ContentDescription,RtlHardcoded" | ||||||
|                     tools:visibility="visible" /> |                     tools:visibility="visible" /> | ||||||
| @@ -500,7 +500,7 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|                 app:srcCompat="@drawable/ic_previous" |                 android:src="@drawable/ic_previous" | ||||||
|                 app:tint="@color/white" |                 app:tint="@color/white" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
| @@ -512,7 +512,7 @@ | |||||||
|                 android:layout_weight="1" |                 android:layout_weight="1" | ||||||
|                 android:background="?attr/selectableItemBackgroundBorderless" |                 android:background="?attr/selectableItemBackgroundBorderless" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|                 app:srcCompat="@drawable/ic_pause" |                 android:src="@drawable/ic_pause" | ||||||
|                 app:tint="@color/white" |                 app:tint="@color/white" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
| @@ -526,7 +526,7 @@ | |||||||
|                 android:clickable="true" |                 android:clickable="true" | ||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:scaleType="fitCenter" |                 android:scaleType="fitCenter" | ||||||
|                 app:srcCompat="@drawable/ic_next" |                 android:src="@drawable/ic_next" | ||||||
|                 app:tint="@color/white" |                 app:tint="@color/white" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|  |  | ||||||
| @@ -577,8 +577,8 @@ | |||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:src="@drawable/exo_controls_repeat_off" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/exo_controls_repeat_off" |  | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|             <androidx.appcompat.widget.AppCompatImageButton |             <androidx.appcompat.widget.AppCompatImageButton | ||||||
| @@ -592,8 +592,8 @@ | |||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:src="@drawable/ic_shuffle" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_shuffle" |  | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|             <androidx.appcompat.widget.AppCompatTextView |             <androidx.appcompat.widget.AppCompatTextView | ||||||
| @@ -618,8 +618,8 @@ | |||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|  |                 android:src="@drawable/ic_playlist_add" | ||||||
|                 android:tint="?attr/colorAccent" |                 android:tint="?attr/colorAccent" | ||||||
|                 app:srcCompat="@drawable/ic_playlist_add" |  | ||||||
|                 tools:ignore="ContentDescription,RtlHardcoded" /> |                 tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|             <androidx.appcompat.widget.AppCompatImageButton |             <androidx.appcompat.widget.AppCompatImageButton | ||||||
| @@ -635,7 +635,7 @@ | |||||||
|                 android:focusable="true" |                 android:focusable="true" | ||||||
|                 android:padding="10dp" |                 android:padding="10dp" | ||||||
|                 android:scaleType="fitXY" |                 android:scaleType="fitXY" | ||||||
|                 app:srcCompat="@drawable/ic_close" |                 android:src="@drawable/ic_close" | ||||||
|                 app:tint="@color/white" /> |                 app:tint="@color/white" /> | ||||||
|  |  | ||||||
|         </RelativeLayout> |         </RelativeLayout> | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <merge xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     tools:ignore="ContentDescription" |     tools:ignore="ContentDescription" | ||||||
|     tools:layout_height="wrap_content" |     tools:layout_height="wrap_content" | ||||||
| @@ -19,21 +18,21 @@ | |||||||
|             android:id="@+id/icon_1" |             android:id="@+id/icon_1" | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|             android:layout_height="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" /> |             tools:alpha="0.18" /> | ||||||
|  |  | ||||||
|         <androidx.appcompat.widget.AppCompatImageView |         <androidx.appcompat.widget.AppCompatImageView | ||||||
|             android:id="@+id/icon_2" |             android:id="@+id/icon_2" | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|             android:layout_height="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" /> |             tools:alpha="0.5" /> | ||||||
|  |  | ||||||
|         <androidx.appcompat.widget.AppCompatImageView |         <androidx.appcompat.widget.AppCompatImageView | ||||||
|             android:id="@+id/icon_3" |             android:id="@+id/icon_3" | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|             android:layout_height="wrap_content" |             android:layout_height="wrap_content" | ||||||
|             app:srcCompat="@drawable/ic_play_seek_triangle" |             android:src="@drawable/ic_play_seek_triangle" | ||||||
|             tools:alpha="1" /> |             tools:alpha="1" /> | ||||||
|  |  | ||||||
|     </LinearLayout> |     </LinearLayout> | ||||||
|   | |||||||
| @@ -10,8 +10,8 @@ | |||||||
|         android:layout_height="wrap_content" |         android:layout_height="wrap_content" | ||||||
|         android:layout_gravity="bottom|center_horizontal" |         android:layout_gravity="bottom|center_horizontal" | ||||||
|         android:layout_marginBottom="24dp" |         android:layout_marginBottom="24dp" | ||||||
|  |         android:src="@drawable/ic_close" | ||||||
|         app:backgroundTint="@color/light_youtube_primary_color" |         app:backgroundTint="@color/light_youtube_primary_color" | ||||||
|         app:borderWidth="0dp" |         app:borderWidth="0dp" | ||||||
|         app:fabSize="normal" |         app:fabSize="normal" /> | ||||||
|         app:srcCompat="@drawable/ic_close" /> |  | ||||||
| </FrameLayout> | </FrameLayout> | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="wrap_content" |     android:layout_height="wrap_content" | ||||||
| @@ -20,13 +19,12 @@ | |||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|             android:layout_height="wrap_content" |             android:layout_height="wrap_content" | ||||||
|  |             android:drawableStart="@drawable/ic_headset" | ||||||
|             android:drawablePadding="4dp" |             android:drawablePadding="4dp" | ||||||
|             android:gravity="center_vertical" |             android:gravity="center_vertical" | ||||||
|             android:text="@string/controls_background_title" |             android:text="@string/controls_background_title" | ||||||
|             android:textColor="?attr/colorAccent" |             android:textColor="?attr/colorAccent" | ||||||
|             android:textSize="@dimen/channel_rss_title_size" |             android:textSize="@dimen/channel_rss_title_size" /> | ||||||
|             app:drawableLeftCompat="@drawable/ic_headset" |  | ||||||
|             app:drawableStartCompat="@drawable/ic_headset" /> |  | ||||||
|     </LinearLayout> |     </LinearLayout> | ||||||
|  |  | ||||||
|     <View |     <View | ||||||
| @@ -77,12 +75,11 @@ | |||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|             android:layout_height="wrap_content" |             android:layout_height="wrap_content" | ||||||
|  |             android:drawableStart="@drawable/ic_picture_in_picture" | ||||||
|             android:drawablePadding="4dp" |             android:drawablePadding="4dp" | ||||||
|             android:gravity="center_vertical" |             android:gravity="center_vertical" | ||||||
|             android:text="@string/controls_popup_title" |             android:text="@string/controls_popup_title" | ||||||
|             android:textColor="?attr/colorAccent" |             android:textColor="?attr/colorAccent" | ||||||
|             android:textSize="@dimen/channel_rss_title_size" |             android:textSize="@dimen/channel_rss_title_size" /> | ||||||
|             app:drawableLeftCompat="@drawable/ic_picture_in_picture" |  | ||||||
|             app:drawableStartCompat="@drawable/ic_picture_in_picture" /> |  | ||||||
|     </LinearLayout> |     </LinearLayout> | ||||||
| </LinearLayout> | </LinearLayout> | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="wrap_content" |     android:layout_height="wrap_content" | ||||||
| @@ -22,7 +21,7 @@ | |||||||
|             android:layout_centerVertical="true" |             android:layout_centerVertical="true" | ||||||
|             android:layout_marginLeft="12dp" |             android:layout_marginLeft="12dp" | ||||||
|             android:layout_marginRight="12dp" |             android:layout_marginRight="12dp" | ||||||
|             app:srcCompat="@drawable/ic_filter_list" |             android:src="@drawable/ic_filter_list" | ||||||
|             tools:ignore="ContentDescription,RtlHardcoded" /> |             tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|         <org.schabi.newpipe.views.NewPipeTextView |         <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <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" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="48dp"> |     android:layout_height="48dp"> | ||||||
| @@ -13,7 +12,7 @@ | |||||||
|         android:layout_centerVertical="true" |         android:layout_centerVertical="true" | ||||||
|         android:layout_marginLeft="6dp" |         android:layout_marginLeft="6dp" | ||||||
|         android:scaleType="fitCenter" |         android:scaleType="fitCenter" | ||||||
|         app:srcCompat="@drawable/ic_volume_off" |         android:src="@drawable/ic_volume_off" | ||||||
|         tools:ignore="ContentDescription,RtlHardcoded" /> |         tools:ignore="ContentDescription,RtlHardcoded" /> | ||||||
|  |  | ||||||
|     <org.schabi.newpipe.views.NewPipeTextView |     <org.schabi.newpipe.views.NewPipeTextView | ||||||
|   | |||||||
| @@ -48,8 +48,8 @@ | |||||||
|             android:layout_gravity="center" |             android:layout_gravity="center" | ||||||
|             android:contentDescription="@string/search" |             android:contentDescription="@string/search" | ||||||
|             android:scaleType="fitCenter" |             android:scaleType="fitCenter" | ||||||
|  |             android:src="@drawable/ic_close" | ||||||
|             app:tint="?attr/toolbarSearchColor" |             app:tint="?attr/toolbarSearchColor" | ||||||
|             app:srcCompat="@drawable/ic_close" |  | ||||||
|             tools:ignore="RtlHardcoded" /> |             tools:ignore="RtlHardcoded" /> | ||||||
|     </FrameLayout> |     </FrameLayout> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -673,7 +673,6 @@ | |||||||
|     <string name="feed_load_error_account_info">تعذر تحميل تغذية لـ\'%s\'.</string> |     <string name="feed_load_error_account_info">تعذر تحميل تغذية لـ\'%s\'.</string> | ||||||
|     <string name="feed_load_error">خطأ في تحميل الخلاصة</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_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="downloads_storage_ask_summary_no_saf_notice">سيتم سؤالك عن مكان حفظ كل تنزيل</string> | ||||||
|     <string name="no_dir_yet">لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن</string> |     <string name="no_dir_yet">لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن</string> | ||||||
|     <string name="off">إيقاف</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_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="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_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="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="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> |     <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="one">S\'ha suprimit %1$s baixada</item> | ||||||
|         <item quantity="other">S\'han suprimit %1$s baixades</item> |         <item quantity="other">S\'han suprimit %1$s baixades</item> | ||||||
|     </plurals> |     </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="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_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> |     <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="downloads_storage_ask_summary_no_saf_notice">بۆ دابهزاندنی ههر بابهتێك پرست پێ دهكرێت لهبارهی شوێنی دابهزاندنیان</string> | ||||||
|     <string name="disable_media_tunneling_title">ناكاراكردنی تونێلكردنی میدیا</string> |     <string name="disable_media_tunneling_title">ناكاراكردنی تونێلكردنی میدیا</string> | ||||||
|     <string name="show_age_restricted_content_summary">ئهو بابهتانهی نهگونجاون بۆ منداڵان پیشان بدرێن كه سنووری تهمهن دهیانگرێتهوه (وهك +18)</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="crash_the_app">كڕاشی بهرنامهكه</string> | ||||||
|     <string name="show_memory_leaks">پیشاندانی دزهكردنی بیرگه</string> |     <string name="show_memory_leaks">پیشاندانی دزهكردنی بیرگه</string> | ||||||
|     <string name="enqueued">لهنۆبهت دانرا</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_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="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_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="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="no_dir_yet">Adresář pro stažené soubory dosud nenastaven, zvolte, prosím, výchozí adresář nyní</string> | ||||||
|     <string name="off">Vypnuto</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="no_dir_yet">Noch kein Downloadordner festgelegt, wähle jetzt den Standard-Downloadordner</string> | ||||||
|     <string name="open_website_license">Webseite öffnen</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_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="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">Fehler beim Laden des Feeds</string> | ||||||
|     <string name="feed_load_error_account_info">Konnte Feed für \'%s\' nicht laden.</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_account_info">Αδυναμία φόρτωσης τροφοδοσίας για \'%s\'.</string> | ||||||
|     <string name="feed_load_error">Σφάλμα φόρτωσης τροφοδοσίας</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_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="downloads_storage_ask_summary_no_saf_notice">Θα ερωτηθείτε πού να αποθηκεύσετε κάθε λήψη</string> | ||||||
|     <string name="no_dir_yet">Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα</string> |     <string name="no_dir_yet">Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα</string> | ||||||
|     <string name="metadata_host">Host</string> |     <string name="metadata_host">Host</string> | ||||||
|   | |||||||
| @@ -633,7 +633,6 @@ | |||||||
| \n¿Desea desuscribirse de este canal\?</string> | \n¿Desea desuscribirse de este canal\?</string> | ||||||
|     <string name="feed_load_error">Error al cargar el muro</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_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="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_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> |     <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="settings_category_feed_title">Voog</string> | ||||||
|     <string name="choose_instance_prompt">Vali eksemplar</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_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="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="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). |     <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_account_info">Ezin izan da \'%s\' jarioa kargatu.</string> | ||||||
|     <string name="feed_load_error">Errorea jarioa kargatzean</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_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="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="no_dir_yet">Ez da deskargatzeko karpetarik ezarri oraindik, aukeratu lehenetsitako deskargatzeko karpeta orain</string> | ||||||
|     <string name="metadata_privacy">Pribatutasuna</string> |     <string name="metadata_privacy">Pribatutasuna</string> | ||||||
|   | |||||||
| @@ -636,7 +636,6 @@ | |||||||
|     <string name="description_select_note">اکنون میتوانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند.</string> |     <string name="description_select_note">اکنون میتوانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند.</string> | ||||||
|     <string name="no_dir_yet">هنوز شاخهٔ بارگیریای تنظیم نشده. اکنون شاخهٔ بارگیری پیشگزیده را برگزینید</string> |     <string name="no_dir_yet">هنوز شاخهٔ بارگیریای تنظیم نشده. اکنون شاخهٔ بارگیری پیشگزیده را برگزینید</string> | ||||||
|     <string name="downloads_storage_ask_summary_no_saf_notice">برای ذخیرهٔ هر بارگیری از شما پرسیده خواهد شد</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="downloads_storage_use_saf_summary_api_29">از اندروید ۱۰، تنها «چارچوب دسترسی ذخیره» پشتیبانی میشود</string> | ||||||
|     <string name="feed_load_error_account_info">نتوانست خوراک را برای «%s» بار کند.</string> |     <string name="feed_load_error_account_info">نتوانست خوراک را برای «%s» بار کند.</string> | ||||||
|     <string name="feed_load_error_terminated">حساب این نگارنده نابود شده است. |     <string name="feed_load_error_terminated">حساب این نگارنده نابود شده است. | ||||||
|   | |||||||
| @@ -638,7 +638,6 @@ | |||||||
| \nHaluatko poistaa kanavan tilauksesta\?</string> | \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_account_info">Ei voitu ladata syötettä hakusanalle \'%s\'.</string> | ||||||
|     <string name="feed_load_error">Virhe syötteen lataamisessa</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="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="dont_show">Älä näytä</string> | ||||||
|     <string name="low_quality_smaller">Matala laatu (pienempi)</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. | \nNewPipe ne sera plus en mesure de charger ce flux à l’avenir. | ||||||
| \nSouhaitez-vous vous désabonner de cette chaîne \?</string> | \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_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="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="comments_are_disabled">Les commentaires sont désactivés</string> | ||||||
|     <string name="dont_show">Ne pas afficher</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="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="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="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="feed_new_items">Novos elementos</string> | ||||||
|     <string name="progressive_load_interval_exoplayer_default">Predefinido do ExoPlayer</string> |     <string name="progressive_load_interval_exoplayer_default">Predefinido do ExoPlayer</string> | ||||||
|     <string name="show_crash_the_player_title">Amosar \"Travar o reprodutor\"</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_account_info">לא ניתן לטעון את ההזנה עבור ‚%s’.</string> | ||||||
|     <string name="feed_load_error">שגיאה בהורדת ההזנה</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_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="downloads_storage_ask_summary_no_saf_notice">תופיע שאלה לאן לשמור כל הורדה</string> | ||||||
|     <string name="no_dir_yet">טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת</string> |     <string name="no_dir_yet">טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת</string> | ||||||
|     <string name="off">כבוי</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_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="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_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="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="dont_show">Ne prikazuj</string> | ||||||
|     <string name="low_quality_smaller">Niska kvaliteta (manji)</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="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="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_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="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_oldest_subscription_update">Lista legutóbbi frissítése: %s</string> | ||||||
|     <string name="feed_notification_loading">Lista betöltése…</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_account_info">Tidak bisa memuat langganan untuk \'%s\'.</string> | ||||||
|     <string name="feed_load_error">Galat memuat langganan</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_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="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="no_dir_yet">Belum ada folder unduhan, pilih folder unduhan sekarang</string> | ||||||
|     <string name="off">Nonaktif</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_account_info">Impossibile caricare feed per \"%s\".</string> | ||||||
|     <string name="feed_load_error">Errore caricamento feed</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_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="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="no_dir_yet">Non è impostata alcuna cartella per i file scaricati, scegliere quella predefinita</string> | ||||||
|     <string name="off">Disattivata</string> |     <string name="off">Disattivata</string> | ||||||
|   | |||||||
| @@ -614,7 +614,6 @@ | |||||||
|     <string name="downloads_storage_ask_summary_no_saf_notice">ダウンロードのたびに保存する場所を尋ねます</string> |     <string name="downloads_storage_ask_summary_no_saf_notice">ダウンロードのたびに保存する場所を尋ねます</string> | ||||||
|     <string name="no_dir_yet">ダウンロードフォルダがまだ設定されていません。今すぐデフォルトのフォルダを選択してください</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_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_fast_unknown">高速モードでこの情報の詳細は提供されません。</string> | ||||||
|     <string name="feed_load_error_account_info">\'%s\' のフィードを読み込めませんでした。</string> |     <string name="feed_load_error_account_info">\'%s\' のフィードを読み込めませんでした。</string> | ||||||
|     <string name="feed_load_error">フィードの読み込みエラー</string> |     <string name="feed_load_error">フィードの読み込みエラー</string> | ||||||
|   | |||||||
| @@ -647,7 +647,6 @@ | |||||||
| \nAr norite atsisakyti šio kanalo prenumeratos\?</string> | \nAr norite atsisakyti šio kanalo prenumeratos\?</string> | ||||||
|     <string name="feed_load_error">Klaida įkeliant srautą</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_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="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="no_dir_yet">Atsiuntimo aplankas dar nenustatytas, pasirinkite numatytąjį atsiuntimų aplanką dabar</string> | ||||||
|     <string name="comments_are_disabled">Komentarai yra išjungti</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_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="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="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="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="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> |     <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="feed_load_error">ഫീഡ് ലോഡ് ചെയ്യുന്നതിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു</string> | ||||||
|     <string name="downloads_storage_use_saf_summary_api_29">ആൻഡ്രോയ്ഡ് 10 മുതൽ മാത്രമേ \"സ്റ്റോറേജ് അക്സസ് ഫ്രെയിംവർക്ക്\" പിന്തുണക്കു</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_ask_summary_no_saf_notice">എവിടെ ആണ് ഡൌൺലോഡ് ചെയ്യ്യപെടുന്ന ഓരോ ഫയൽലും സംരക്ഷിക്കപ്പെടേണ്ടത് എന്ന് തങ്കളോട് ചോദിക്കും</string> | ||||||
|     <string name="downloads_storage_use_saf_summary_api_19">ആൻഡ്രോയ്ഡ് കിറ്റ് ക്യാറ്റോ അതിനു താഴെക്കോ ഉള്ളതിൽ \"സ്റ്റോറേജ് ആസസ്സ് ഫ്രെയിംവർക്ക് പിന്തുണക്കുന്നില്ല</string> |  | ||||||
|     <string name="dont_show">കാണിക്കരുത്</string> |     <string name="dont_show">കാണിക്കരുത്</string> | ||||||
|     <string name="low_quality_smaller">കുറഞ്ഞ നിലവാരം (ചെറുത് )</string> |     <string name="low_quality_smaller">കുറഞ്ഞ നിലവാരം (ചെറുത് )</string> | ||||||
|     <string name="high_quality_larger">ഉയർന്ന നിലവാരം (വലിയത് )</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_account_info">Kunne ikke laste inn informasjonskanal for «%s».</string> | ||||||
|     <string name="feed_load_error">Kunne ikke laste inn informasjonskanal</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_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="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="seekbar_preview_thumbnail_title">Miniatyrbildeforhåndsvisning</string> | ||||||
|     <string name="no_dir_yet">Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå.</string> |     <string name="no_dir_yet">Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå.</string> | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| <resources> | <resources> | ||||||
| 
 | 
 | ||||||
|     <!-- Opening Theme --> |     <!-- 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> |         <item name="android:navigationBarColor">@color/dark_youtube_primary_color</item> | ||||||
|     </style> |     </style> | ||||||
| 
 | 
 | ||||||
| @@ -637,7 +637,6 @@ | |||||||
|     <string name="feed_load_error_account_info">Kan geen feed laden voor \'%s\'.</string> |     <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="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_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="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="no_dir_yet">Nog geen downloadfolder gekozen, kies de standaard downloadfolder</string> | ||||||
|     <string name="detail_heart_img_view_description">Geliefd door de maker</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="app_language_title">ਐਪ ਭਾਸ਼ਾ</string> | ||||||
|     <string name="choose_instance_prompt">ਕੋਈ ਸਥਿਤੀ ਚੁਣੋ</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_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="downloads_storage_ask_summary_no_saf_notice">ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ</string> | ||||||
|     <string name="delete_downloaded_files">ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ</string> |     <string name="delete_downloaded_files">ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ</string> | ||||||
|     <string name="clear_download_history">ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ</string> |     <string name="clear_download_history">ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ</string> | ||||||
|   | |||||||
| @@ -646,7 +646,6 @@ | |||||||
| \nCzy chcesz anulować subskrypcję tego kanału\?</string> | \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="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_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="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="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> |     <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_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="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_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="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="no_dir_yet">Nenhuma pasta de download definida ainda, escolha a pasta de download padrão agora</string> | ||||||
|     <string name="off">Desligado</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_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="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_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="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="dont_show">Não mostrar</string> | ||||||
|     <string name="low_quality_smaller">Baixa qualidade (menor)</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_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="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_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="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="mark_as_watched">Marcar como visto</string> | ||||||
|     <string name="off">Desligado</string> |     <string name="off">Desligado</string> | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Stypox
					Stypox