From 52f82ed2280918ec5c4c3d5c09a9f6fc6d5e6bec Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 4 Oct 2019 21:47:01 +0300 Subject: [PATCH 01/99] Show video thumbnail on the lock screen --- .../newpipe/player/BackgroundPlayer.java | 60 ++++++++++++++----- .../player/helper/MediaSessionManager.java | 43 +++++++++++-- .../org/schabi/newpipe/util/BitmapUtils.java | 42 +++++++++++++ 3 files changed, 124 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index ab07ded22..4bcd719c2 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -25,6 +25,7 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; import android.os.IBinder; @@ -48,6 +49,7 @@ import org.schabi.newpipe.player.helper.LockManager; import org.schabi.newpipe.player.playqueue.PlayQueueItem; import org.schabi.newpipe.player.resolver.AudioPlaybackResolver; import org.schabi.newpipe.player.resolver.MediaSourceTag; +import org.schabi.newpipe.util.BitmapUtils; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.ThemeHelper; @@ -189,18 +191,37 @@ public final class BackgroundPlayer extends Service { setupNotification(notRemoteView); setupNotification(bigNotRemoteView); - NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)) - .setOngoing(true) - .setSmallIcon(R.drawable.ic_newpipe_triangle_white) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setCustomContentView(notRemoteView) - .setCustomBigContentView(bigNotRemoteView); + NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)); + builder.setOngoing(true); + builder.setSmallIcon(R.drawable.ic_newpipe_triangle_white); + builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); + builder.setCustomContentView(notRemoteView); + builder.setCustomBigContentView(bigNotRemoteView); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + basePlayerImpl.mediaSessionManager.setLockScreenArt( + builder, + getCenteredThumbnailBitmap() + ); + } + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { builder.setPriority(NotificationCompat.PRIORITY_MAX); } return builder; } + @Nullable + private Bitmap getCenteredThumbnailBitmap() { + int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels; + int screenHeight = Resources.getSystem().getDisplayMetrics().heightPixels; + + return BitmapUtils.centerCrop( + basePlayerImpl.getThumbnail(), + screenWidth, + screenHeight); + } + private void setupNotification(RemoteViews remoteViews) { if (basePlayerImpl == null) return; @@ -248,8 +269,10 @@ public final class BackgroundPlayer extends Service { //if (DEBUG) Log.d(TAG, "updateNotification() called with: drawableId = [" + drawableId + "]"); if (notBuilder == null) return; if (drawableId != -1) { - if (notRemoteView != null) notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); - if (bigNotRemoteView != null) bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); + if (notRemoteView != null) + notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); + if (bigNotRemoteView != null) + bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); } notificationManager.notify(NOTIFICATION_ID, notBuilder.build()); } @@ -275,7 +298,8 @@ public final class BackgroundPlayer extends Service { protected class BasePlayerImpl extends BasePlayer { - @NonNull final private AudioPlaybackResolver resolver; + @NonNull + final private AudioPlaybackResolver resolver; private int cachedDuration; private String cachedDurationString; @@ -294,8 +318,10 @@ public final class BackgroundPlayer extends Service { super.handleIntent(intent); resetNotification(); - if (bigNotRemoteView != null) bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); - if (notRemoteView != null) notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); + if (bigNotRemoteView != null) + bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); + if (notRemoteView != null) + notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); startForeground(NOTIFICATION_ID, notBuilder.build()); } @@ -330,6 +356,7 @@ public final class BackgroundPlayer extends Service { updateNotificationThumbnail(); updateNotification(-1); } + /*////////////////////////////////////////////////////////////////////////// // States Implementation //////////////////////////////////////////////////////////////////////////*/ @@ -352,9 +379,10 @@ public final class BackgroundPlayer extends Service { if (!shouldUpdateOnProgress) return; resetNotification(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) updateNotificationThumbnail(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) + updateNotificationThumbnail(); if (bigNotRemoteView != null) { - if(cachedDuration != duration) { + if (cachedDuration != duration) { cachedDuration = duration; cachedDurationString = getTimeString(duration); } @@ -382,8 +410,10 @@ public final class BackgroundPlayer extends Service { @Override public void destroy() { super.destroy(); - if (notRemoteView != null) notRemoteView.setImageViewBitmap(R.id.notificationCover, null); - if (bigNotRemoteView != null) bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null); + if (notRemoteView != null) + notRemoteView.setImageViewBitmap(R.id.notificationCover, null); + if (bigNotRemoteView != null) + bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null); } /*////////////////////////////////////////////////////////////////////////// diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index a5c703837..ec53e72fe 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -2,12 +2,18 @@ package org.schabi.newpipe.player.helper; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.media.MediaMetadata; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.RequiresApi; +import android.support.v4.app.NotificationCompat; +import android.support.v4.media.MediaMetadataCompat; +import android.support.v4.media.session.MediaButtonReceiver; import android.support.v4.media.session.MediaSessionCompat; import android.view.KeyEvent; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.media.session.MediaButtonReceiver; +import android.support.v4.media.app.NotificationCompat.MediaStyle; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector; @@ -40,13 +46,38 @@ public class MediaSessionManager { return MediaButtonReceiver.handleIntent(mediaSession, intent); } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public void setLockScreenArt( + NotificationCompat.Builder builder, + @Nullable Bitmap thumbnailBitmap + ) { + if (thumbnailBitmap == null) { + return; + } + + if (!mediaSession.isActive()) { + return; + } + + mediaSession.setMetadata( + new MediaMetadataCompat.Builder() + .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, thumbnailBitmap) + .build() + ); + + MediaStyle mediaStyle = new MediaStyle() + .setMediaSession(mediaSession.getSessionToken()); + + builder.setStyle(mediaStyle); + } + /** * Should be called on player destruction to prevent leakage. - * */ + */ public void dispose() { this.sessionConnector.setPlayer(null); this.sessionConnector.setQueueNavigator(null); this.mediaSession.setActive(false); this.mediaSession.release(); - } + } } diff --git a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java new file mode 100644 index 000000000..2dac94912 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java @@ -0,0 +1,42 @@ +package org.schabi.newpipe.util; + +import android.graphics.Bitmap; +import android.support.annotation.Nullable; + +public class BitmapUtils { + + @Nullable + public static Bitmap centerCrop(Bitmap inputBitmap, int newWidth, int newHeight) { + if (inputBitmap == null || inputBitmap.isRecycled()) { + return null; + } + + float sourceWidth = inputBitmap.getWidth(); + float sourceHeight = inputBitmap.getHeight(); + + float xScale = newWidth / sourceWidth; + float yScale = newHeight / sourceHeight; + + float newXScale; + float newYScale; + + if (yScale > xScale) { + newXScale = (1.0f / yScale) * xScale; + newYScale = 1.0f; + } else { + newXScale = 1.0f; + newYScale = (1.0f / xScale) * yScale; + } + + float scaledWidth = newXScale * sourceWidth; + float scaledHeight = newYScale * sourceHeight; + + int left = (int) ((sourceWidth - scaledWidth) / 2); + int top = (int) ((sourceHeight - scaledHeight) / 2); + int width = (int) scaledWidth; + int height = (int) scaledHeight; + + return Bitmap.createBitmap(inputBitmap, left, top, width, height); + } + +} From cf13f5ca56950944f5ab44e8c00c8c7566e55ed2 Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 8 Nov 2019 20:47:42 +0300 Subject: [PATCH 02/99] Rebase onto the latest dev, update appcompat dependencies to use androidx --- .../player/helper/MediaSessionManager.java | 21 +++++++++++-------- .../org/schabi/newpipe/util/BitmapUtils.java | 3 ++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index ec53e72fe..b75ddb706 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -5,15 +5,16 @@ import android.content.Intent; import android.graphics.Bitmap; import android.media.MediaMetadata; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; -import android.support.v4.app.NotificationCompat; import android.support.v4.media.MediaMetadataCompat; -import android.support.v4.media.session.MediaButtonReceiver; import android.support.v4.media.session.MediaSessionCompat; import android.view.KeyEvent; -import android.support.v4.media.app.NotificationCompat.MediaStyle; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.core.app.NotificationCompat; +import androidx.media.session.MediaButtonReceiver; +import androidx.media.app.NotificationCompat.MediaStyle; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector; @@ -25,8 +26,10 @@ import org.schabi.newpipe.player.mediasession.PlayQueuePlaybackController; public class MediaSessionManager { private static final String TAG = "MediaSessionManager"; - @NonNull private final MediaSessionCompat mediaSession; - @NonNull private final MediaSessionConnector sessionConnector; + @NonNull + private final MediaSessionCompat mediaSession; + @NonNull + private final MediaSessionConnector sessionConnector; public MediaSessionManager(@NonNull final Context context, @NonNull final Player player, @@ -72,7 +75,7 @@ public class MediaSessionManager { } /** - * Should be called on player destruction to prevent leakage. + * Should be called on player destruction to prevent leakage.BitmapUtils */ public void dispose() { this.sessionConnector.setPlayer(null); diff --git a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java index 2dac94912..a0e7de4ac 100644 --- a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java @@ -1,7 +1,8 @@ package org.schabi.newpipe.util; import android.graphics.Bitmap; -import android.support.annotation.Nullable; + +import androidx.annotation.Nullable; public class BitmapUtils { From e8437052d8565ab7c524c96186a69528a30f5a1c Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Thu, 28 Nov 2019 21:46:37 +0300 Subject: [PATCH 03/99] Add a setting for the lock screen thumbnail feature --- .../newpipe/player/BackgroundPlayer.java | 28 ++++++++++++++++--- .../player/helper/MediaSessionManager.java | 14 ++++++++++ app/src/main/res/values/settings_keys.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/video_audio_settings.xml | 7 +++++ 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index 4bcd719c2..521daf184 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -25,13 +25,17 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; import android.os.IBinder; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.core.app.NotificationCompat; + +import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.RemoteViews; @@ -77,6 +81,7 @@ public final class BackgroundPlayer extends Service { private BasePlayerImpl basePlayerImpl; private LockManager lockManager; + private SharedPreferences sharedPreferences; /*////////////////////////////////////////////////////////////////////////// // Service-Activity Binder @@ -106,6 +111,7 @@ public final class BackgroundPlayer extends Service { if (DEBUG) Log.d(TAG, "onCreate() called"); notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)); lockManager = new LockManager(this); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); ThemeHelper.setTheme(this); basePlayerImpl = new BasePlayerImpl(this); @@ -199,10 +205,7 @@ public final class BackgroundPlayer extends Service { builder.setCustomBigContentView(bigNotRemoteView); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - basePlayerImpl.mediaSessionManager.setLockScreenArt( - builder, - getCenteredThumbnailBitmap() - ); + setLockScreenThumbnail(builder); } if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { @@ -211,6 +214,23 @@ public final class BackgroundPlayer extends Service { return builder; } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + private void setLockScreenThumbnail(NotificationCompat.Builder builder) { + boolean isLockScreenThumbnailEnabled = sharedPreferences.getBoolean( + getString(R.string.enable_lock_screen_video_thumbnail_key), + true + ); + + if (isLockScreenThumbnailEnabled) { + basePlayerImpl.mediaSessionManager.setLockScreenArt( + builder, + getCenteredThumbnailBitmap() + ); + } else { + basePlayerImpl.mediaSessionManager.clearLockScreenArt(builder); + } + } + @Nullable private Bitmap getCenteredThumbnailBitmap() { int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels; diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index b75ddb706..64022e39c 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -74,6 +74,20 @@ public class MediaSessionManager { builder.setStyle(mediaStyle); } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public void clearLockScreenArt(NotificationCompat.Builder builder) { + mediaSession.setMetadata( + new MediaMetadataCompat.Builder() + .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, null) + .build() + ); + + MediaStyle mediaStyle = new MediaStyle() + .setMediaSession(mediaSession.getSessionToken()); + + builder.setStyle(mediaStyle); + } + /** * Should be called on player destruction to prevent leakage.BitmapUtils */ diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 80f2bb1f4..109010b4e 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -152,6 +152,7 @@ main_page_content enable_playback_resume enable_playback_state_lists + enable_lock_screen_video_thumbnail import_data export_data diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a34b00ea9..16cf110a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,7 +58,9 @@ Kore app not found. Install it? org.xbmc.kore Show \"Play with Kodi\" option + Enable lock screen video thumbnail Display an option to play a video via Kodi media center + When using the background player a video thumbnail will be displayed on the lock screen Audio Default audio format Default video format diff --git a/app/src/main/res/xml/video_audio_settings.xml b/app/src/main/res/xml/video_audio_settings.xml index 4e1b1f8b2..a814fe0a9 100644 --- a/app/src/main/res/xml/video_audio_settings.xml +++ b/app/src/main/res/xml/video_audio_settings.xml @@ -81,6 +81,13 @@ android:summary="@string/show_play_with_kodi_summary" android:title="@string/show_play_with_kodi_title"/> + + Date: Thu, 19 Dec 2019 16:10:09 +0100 Subject: [PATCH 04/99] Added initial strings.xml for Occitan language --- app/src/main/res/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/strings.xml diff --git a/app/src/main/res/strings.xml b/app/src/main/res/strings.xml new file mode 100644 index 000000000..0e5b7ccd6 --- /dev/null +++ b/app/src/main/res/strings.xml @@ -0,0 +1,2 @@ + + From a08cd4ce6a8e730e77ec13b5ef9b6e41c179a135 Mon Sep 17 00:00:00 2001 From: Louis-Berlic Date: Thu, 19 Dec 2019 16:11:17 +0100 Subject: [PATCH 05/99] Move to values-oc --- app/src/main/res/{ => values-oc}/strings.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/res/{ => values-oc}/strings.xml (100%) diff --git a/app/src/main/res/strings.xml b/app/src/main/res/values-oc/strings.xml similarity index 100% rename from app/src/main/res/strings.xml rename to app/src/main/res/values-oc/strings.xml From cc869b98a30ff9572a0a41293003667c87ec0fdf Mon Sep 17 00:00:00 2001 From: Igor Nedoboy Date: Sat, 28 Dec 2019 20:32:13 +0000 Subject: [PATCH 06/99] Translated using Weblate (Russian) Currently translated at 100.0% (508 of 508 strings) --- app/src/main/res/values-ru/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 9e28d4ff6..48b7c4e4c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -326,7 +326,7 @@ Добавлено в плейлист Миниатюра плейлиста изменена Не удалось удалить плейлист - Без титров + Без субтитров Подогнать Заполнить Приблизить @@ -372,9 +372,9 @@ Удалить все загруженные данные веб-страниц При открытии ссылки на контент — %s Нет потоков для загрузки - Титры + Субтитры Приложение для воспроизведения этого файла не установлено - Изменить размер текста и стиль титров. Нужен перезапуск + Изменить размер текста и стиль субтитров. Нужен перезапуск Очистить историю Удалить всю историю просмотров\? История просмотров удалена From 8da8ce0a0a40234f080093d289eddcd44012a5ef Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Sat, 28 Dec 2019 14:42:33 +0000 Subject: [PATCH 07/99] Translated using Weblate (Kurdish) Currently translated at 70.9% (360 of 508 strings) --- app/src/main/res/values-ku/strings.xml | 348 ++++++++++++++++++++++++- 1 file changed, 339 insertions(+), 9 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 228849b33..24e9441ca 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -1,5 +1,6 @@ - -گرته‌ له‌ گه‌ڕان بكه‌ بۆ ده‌ستپێكردن + + + گرته‌ له‌ گه‌ڕان بكه‌ بۆ ده‌ستپێكردن %1$s بینراو بڵاوكراوه‌ته‌وه‌ له‌ %1$s هیچ كارپێكه‌رێكی ڤیدیۆیی نه‌دۆزرایه‌وه‌، ده‌ته‌وێت VLC داگریت؟ @@ -27,25 +28,19 @@ ناتوانیت گۆڕانكاری له‌م به‌شدارییه‌دا بكه‌یت ناتوانرێت به‌شداریكردنه‌كه‌ نوێبكرێته‌وه‌ پیشاندانی زانیاری - سه‌ره‌كی به‌شدارییه‌كان نیشانكردنه‌كان - چی نوێ هه‌یه‌ - له‌پشته‌وه‌ په‌نجه‌ره‌ ناردن بۆ - شوێنی داگرتنی ڤیدیۆ شوێنی ڤیدیۆ داگیراوه‌كان نوسینی شوێنی داگرتنی ڤیدیۆكان - شوێنی داگرتنی ده‌نگ شوێنی ده‌نگه‌ داگیراوه‌كان نوسینی شوێنی داگرتنی ده‌نگه‌كان - كاركردنی خۆكارانه‌ قه‌باره‌ی سه‌ره‌كی قه‌باره‌ی سه‌ره‌كی په‌نجه‌ره‌ @@ -68,4 +63,339 @@ ناچالاكی بكه‌ بۆ ڕاگرتنی وێنۆچكه‌كان له‌ باركردن و پاشه‌كه‌وتبوون له‌سه‌ر بیرگه‌ی ئامێره‌كه‌ت. \nگۆڕینی ئه‌مه‌ ده‌بێته‌ هۆی سڕینه‌وه‌یان له‌سه‌ر بیرگه‌ی مۆبایله‌كه‌ت. پاشماوه‌ی وێنۆچكه‌كان سڕایه‌وه‌ - + ڤیدیۆ لێبدرێ کاتێ NewPipe لە ئەپێکیتر کرایەوە + بەکارهێنانی بەدواگەڕانی ناتەواوی خێرا + خاوێنکردنەوەی پاشماوەی داتا + سڕینەوەی پاشماوەی هەموو داتاکان + پاشماوەی داتاکان سڕانەوە + ڕیزکردنی خۆکاری لێدانی دواتر + کۆنتڕۆڵی لێدەر بەجوڵەی پەنجە + جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی دەنگ و ڕووناکی + گەڕان بەنێو پێشنیارکراوەکان + پیشاندانی پێشنیارەکان لەکاتی گەڕان + مێژووی گەڕان + مێژووی تەماشاکردن + هێشتنەوەی تراکی ڤیدیۆ لێدراوەکان + بەردەوام بوونی ڤیدیۆ لەدوای هەبوونی هەر بڕینێک (وەک پەیوەندیکردن) + داگرتن + دواتر + پیشاندانی دواتر و ڤیدیۆ هاوشێوەکان + بەستەرەکە پشتگیری نەکراوە + وڵاتی سەرەکی + خزمەتگوزاری + لێدەری ڤیدیۆیی + ڤیدیۆ & دەنگ + مێژوو & پاشماوە + پەنجەرەی بچووک + ڕووکار + هیتر + ڕاستکردنەوە + لێدان لە پاشبنەما + لێدان لە پەنجەرەی بچووک + ڕیزکرا لە لێدان لە پاشبنەما + ڕیزکرا لە لێدان لە پەنجەرەی بچووک + لێدان + ناوەڕۆک + سنوردانانی تەمەن + ڕاستەوخۆ + داگرتنەکان + داگرتنەکان + ناتوانرێ سکاڵابکرێ + هەمووی + کەناڵ + لیستی ڤیدیۆ + بەڵێ + دواتر + ناچالاککراوە + فلتەر + نوێکردنەوە + سڕینەوە + قەبارە دانانەوە + باشترین قەبارە + گەڕانەوە + لێدانی هەمووی + هەمیشە + تەنها ئێستا + فایل + ئاگانامەکانی ئەپ + ئاگانامەکانی ئەپەکە بۆ پاشبنەما و لێدانەکانی پەنجەرەی بچووک + (نەزانراو) + چەسپاندنی لاربوونەوە + گۆڕین بۆ پاشبنەما + گۆڕین بۆ پەنجەرەی بچووک + گۆڕین بۆ سەرەکی + هێنانی داتابەیس + دەرکردنی داتابەیس + جێگەی مێژوو و بەشداربووەکانی ئێستات دەگرێتەوە + زەخیرەکردنی مێژوو و بەشداربوون و لیستەکان + هەڵەیەک ڕوویدا + کێشە لە هێڵەکەتدا هەیە + ناتوانرێ هەموو وێنۆچکەکان باربکرێن + ناتوانرێ وێبسایت شیبکرێتەوە + ناتوانرێ وێبسایت بەتەواوی شیبکرێتەوە + ناوەڕۆک بوونی نییە + ناتوانرێ لیستی داگرتن دابنرێ + پەخشی ڕاستەوخۆ پشتگیری ناکرێ لەئێستادا + هیچ پەخشێ نەدۆزرایەوە + ناتوانرێ وێنە باربکرێ + ئەپ کڕاشبوو + ناتوانرێ ئەم پەخشە لێبدرێ + لێدەرە ڤیدیۆییە دەرەکییەکان پشتگیری ئەم جۆرە بەستەرانە ناکەن + بەستەر هەڵەیە + هیچ پەخشێکی ڤیدیۆیی نەدۆزرایەوە + پەخشی هیچ دەنگێک نەدۆزرایەوە + ئەو فایلە بوونی نییە یان دەسەڵاتی خوێندنەوە و نوسینی لاوازە + ناوی فایل ناکرێ بەتاڵ بێت + هەڵەیەک ڕوویدا : %1$s + ببوورە، ناتوانرێ ئەوە ڕووبدات. + سکاڵا لەسەر کێشە لەڕێگای ئیمێڵ + ببورە، هەندێ کێشە ڕوویدا. + سکاڵا + زانیاری: + چی ڕوویدا: + "لێدوانەکەت (بە ئینگلیزی):" + وردەکارییەکان: + وێنۆچکەی پیشاندانی ڤیدیۆ + ماوەی لێدانی ڤیدیۆ: + وێنۆچکەی کەسی بەرزکەرەوە + بەدڵبوون + بەدڵنەبوون + بەکارهێنانی Tor + سکاڵا لەبوونی کێشە + سکاڵا لەبەکاربەر + هیچ ئەنجامێک نییە + هیچ شتێک لێرەدا نییە + ڕاکێشان بۆ دووبارە داواکردنەوە + ناتوانرێ شوێنی داگرتن دروستبکرێ \'%1$s\' + شوێنی داگرتن دانرا \'%1$s\' + ڤیدیۆ + دەنگ + هەوڵدانەوە + دەسەڵاتی گەیشتن بە بیرگە نەدرا + هەزار + ملیۆن + بلیۆن + هیچ بەشداربوویەک نییە + + %s بەشداربوو + %s بەشداربوون + + هیچ بینراوێک نییە + + %s بینراو + %s بینرااو + + هیچ ڤیدیۆیەک نییە + + ڤیدیۆکان + + + دەستپێکردن + ڕاگرتن + لێدان + دروستکردن + سڕینەوە + سڕینەوەی یەکیان + سڕینەوەی هەمووی + تاقیکردنەوەی هێڵێک + ڕێپێنەدان + دانانەوەی ناو + فرمانی نوێ + باشە + ناوی فایل + دابەشکراوەکان + کێشە ڕوویدا + سێرڤەر پشتگیرینەکراوە + فایل بوونی هەیە + داگرتنەکانی ئەپ + گرتەبکە بۆ وردەکاری + تکایە چاوەڕێبکە… + لەبەرگیرایەوە + تکایە فۆڵدەرێک بۆ شوێنی داگرتن دیاریبکە لە ڕێکخستنەکان + ئەم دەسەڵاتە پێویستە بۆ +\nکردنەوەی پەنجەرەی بچووک + reCAPTCHA + reCAPTCHA challenge + reCAPTCHA challenge requested + داگرتن + پیت و ژمارەکان + کارەکتەرە تایبەتییەکان + دەربارەی ئەپ + ڕێکخستنەکان + دەربارە + © %1$s by %2$s under %3$s + ناتوانرێ مۆڵەت باربکرێ + کردنەوەی وێبسایت + دەربارە + هاوبەشەکان + مۆڵەتەکان + هاوبەشبوون + Whether you have ideas of; translation, design changes, code cleaning, or real heavy code changes—help is always welcome. The more is done the better it gets! + View on GitHub + بەخشین + NewPipe is developed by volunteers spending time bringing you the best experience. Give back to help developers make NewPipe even better while enjoying a cup of coffee. + پێدانەوە + وێبسایت + سەردانی وێبسایتی NewPipe بکە بۆ زانیاری و هەواڵی نوێ. + Read license + مێژوو + گەڕا + تەماشاکراوە + مێژوو ناچالاکە + مێژوو + مێژوو بەتاڵە + مێژوو سڕایەوە + بابەت سڕایەوە + ئایا دەتەوێ ئەم بابەتە لە مێژووی گەڕان بسڕدرێتەوە؟ + ئایا دەتەوێ ئەم بابەتە لە مێژووی تەماشاکردن بسڕدرێتەوە؟ + ئایا دڵنیای لە سڕینەوەی هەموو بابەتەکان لە مێژوودا؟ + دواین لێدراو + زۆرترین لێدان + ناوەڕۆکی پەڕەی سەرەکی + لێدانی پەنجەرەی بچووک + لادان + وردەکارییەکان + ڕێکخستنەکانی دەنگ + دەستپێکردنی لێدان لێرەوە + دەستپێکردنی لێدان لە پاشبنەماوە + دەستپێکردنی لێدان لە پەنجەرەی بچووکەوە + بەمزووانە شتێک لێرەدا دەردەکەوێ :D + لێدەری ڤیدیۆیی + لێدەری پاشبنەما + لێدەری پەنجەرەی بچووک + هەمیشە بپرسە + دەستکەوتنی زانیاری… + بارکردنی ناوەڕۆکی داواکراو + لیستی نوێ + سڕینەوە + ناوںْوسینەوە + ناو + زیادکردن بۆ لیست + دانان لەسەر وێنۆچکەی لیست + لیستی نیشانەکراو + لادانی نیشانەکراو + ئەم لیستە بسڕدرێتەوە؟ + لیست دروستکرا + لیست دانرا + وێنۆچکەی لیست گۆڕدرا. + ناتوانی ئەم لیستە بسڕیتەوە. + هیچ ژێرنووسێک نییە + گونجاو بە ڕونما + پڕ بە ڕونما + هێنانەپێش + خۆکاری دانرا + چالاککردنی LeakCanary + سکاڵا لەسەر کێشەکان + Force reporting of undeliverable Rx exceptions outside of fragment or activity lifecycle after disposal + هێنانەوە/خەزنکردن + هێنانەوە + هێنانەوە لە + خەزنکردن بۆ + دەهێنرێتەوە… + خەزندەکرێ… + هێنانەوەی فایل + خەزنی پێشووتر + ناتوانرێ بەشدارییەکان بهێنرێتەوە + ناتوانرێ بەشدارییەکان خەزن بکرێن + بۆ هێنانەوەی بەشداربوونەکانی یوتوب پێویستە فایلی خەزن بوو بگەڕێنیتەوە: +\n +\n1. ئەم بەستەرە بکەوە: %1$ +\n2. بچۆرەژوورەوە گەر داوای‌ کرد +\n3. داگرتنێک دەست پێدەکات (ئەمە فایلی خەزنکراوە) + Import a SoundCloud profile by typing either the URL or your ID: +\n +\n1. Enable \"desktop mode\" in a web-browser (the site is not available for mobile devices) +\n2. Go to this URL: %1$s +\n3. Log in when asked +\n4. Copy the profile URL you were redirected to. + yourID, soundcloud.com/yourid + ئەوە بزانە ئەم کردارە پێویستی بە هێڵێکی گران هەیە. +\n +\nدەتەوێ بەردەوامبیت؟ + کۆنترۆڵی خێرایی + خێراییەکان + شەپۆلی دەنگ + سڕینەوەی بەستەر (ڕەنگە ببێتە هۆی تێکدان) + هیچ پەخشێک نییە بۆ داگرتن + ژێرنووس + بەهۆی گۆڕانکاری لە شێوەی ژێرنووسکردنەکە. پێویستە ئەپەکە دابخەیت و دیسانەوە بیکەیتەوە. + هیچ ئەپێک دانەمەزراوە بۆ لێدانی ئەم فایلە + سڕینەوەی مێژوو + مێژوو دەسڕێتەوە لەگەڵ ڤیدیۆ لێدراوەکان و شوێنی لیستە ڤیدیۆییەکان + سڕینەوەی تەواوی مێژوو؟ + سڕینەوەی مێژووی گەڕان + مێژووی گەڕانەکانت دەسڕێتەوە + تەواوی گەڕانەکانت بسڕدرێنەوە؟ + مێژووی گەڕانەکانت سڕانەوە. + 1 بابەت سڕایەوە. + NewPipe is copyleft libre software: You can use, study share and improve it at will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + NewPipe\'s Privacy Policy + The NewPipe project takes your privacy very seriously. Therefore, the app does not collect any data without your consent. +\nNewPipe\'s privacy policy explains in detail what data is sent and stored when you send a crash report. + Read privacy policy + کەناڵەکان + لیستی ڤیدیۆکان + تراکەکان + بەکاربەرەکان + بەشدارنەبوون + پەڕەیەکی نوێ + هەڵبژاردنی پەڕە + کۆنترۆڵی دەنگ بەجوڵەی پەنجە + جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی دەنگ + کۆنترۆڵی ڕووناکی بەجوڵەی پەنجە + جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی ڕووناکی ڕونما + زمانی سەرەکی + نوێکارییەکان + فایل سڕایەوە + ئاگانامەی نوێکاری ئەپ + ئاگانامەکانی وەشانی نوێی ئەپ + بیرگەی دەرەکی بەردەست نییە + داگرتن لە بیرگەی دەرەکی ناکرێت. +\nشوێنی فۆڵدەری داگرتنەکان دابنرێتەوە؟ + گێڕانەوە بۆ شێوازی سەرەکی + ئایا دەتەوێ بگەڕێنرێتەوە بۆ شێوازی سەرەکی؟ + ژمارەی بەشداربووان نادیارە + داگرتنێکیترت هەیە بەهەمان ناو + پیشاندانی کێشە + کۆد + فۆڵدەری مەبەست ناتوانرێ دروست بکرێ + فایل ناتوانرێ دروستبکرێ + ڕێگەپێدان ڕەتکرایەوە لەلایەن سیستەمەوە + پەیوەستبوونی پارێزراو شکستی هێنا + ناتوانرێ ڕاژە بدۆزرێتەوە + ناتوانرێ بە ڕاژەوە پەیوەست بیت + ڕاژەکە هیچ داتایەک نانێرێت + ئەم ڕاژەیە ناتوانێ چەندین داگرتن لەیەک کاتدا بکات + ڕووداوەکان + پیشاندانی لێدوانەکان + ناچالاککردنی وەستان بۆ پیشاندانی لێدوانەکان + لێدانی خۆکاری + + لێدوانەکان + + + هیچ لێدوانێک نییە + لێدانەوەی لیست + لێدانەوەی لیست لە شوێنی پێشووتر + شوێنەکان لە لیستدا + سڕینەوەی داتا + مێژوو سڕایەوە. + شوێنی لیستەکان سڕانەوە. + شوێنی فایل گۆڕدراوە یان سڕاوەتەوە + داگرتنێکیتر هەیە بەهەمان ناو + سڕینەوەی شوێنی لیستەکان + شوێنی هەموو لیستەکان دەسڕێتەوە + شوێنی هەموو لیستەکان بسڕدرێتەوە؟ + فۆڵدەری داگرتن بگۆڕە بۆ ئەنجامدانی کاریگەری + خزمەتگوزاری چەسپاو، ئێستا هەڵبژێردراو: + هیچ کەسێک تەماشای ناکات + + %s تەماشا دەکات + %s تەماشا دەکەن + + هیچ کەسێ گوێناگرێ + + %s گوێی لێدەگرێ + %s گوێی لێدەگرن + + \ No newline at end of file From 457ebe3aa2259a8a58778eead1f1cbdb0a10fd29 Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Sun, 29 Dec 2019 14:15:28 +0000 Subject: [PATCH 08/99] Translated using Weblate (Kurdish) Currently translated at 78.5% (410 of 522 strings) --- app/src/main/res/values-ku/strings.xml | 109 ++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 24e9441ca..f1917a36d 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -188,7 +188,7 @@ هیچ ڤیدیۆیەک نییە ڤیدیۆکان - + دەستپێکردن ڕاگرتن @@ -215,7 +215,7 @@ ئەم دەسەڵاتە پێویستە بۆ \nکردنەوەی پەنجەرەی بچووک reCAPTCHA - reCAPTCHA challenge + reCAPTCHA داواکاری reCAPTCHA challenge requested داگرتن پیت و ژمارەکان @@ -372,7 +372,7 @@ لێدانی خۆکاری لێدوانەکان - + هیچ لێدوانێک نییە لێدانەوەی لیست @@ -398,4 +398,107 @@ %s گوێی لێدەگرێ %s گوێی لێدەگرن + + پاشکۆی خۆکاری پەخشێکی بەستراوە لەکاتی کارپێکردنی کۆتا پەخشدا + کۆگای گەڕانی داواکاری نێوخۆیی + گێڕانەوە لەدۆخی سەرنج + پیشاندانی ڕێنمایی ”داگرتن تا پاشکۆ” + پیشاندانی ڕێنمایی کاتێ لە پاشبنەما یاخوود پەنجەرەی بچووکدا گرتە دەکرێ لەسەر وردەکاری ڤیدیۆیەک + ڕەفتار + پیشاندانی ئەو ڤیدیۆیانەی سنوری تەمەنیان بۆ دانراوە. لە ڕێکخستنەکانەوە ڕێگەی پێدەدرێت. + ناتوانرێ واژووی بەستەری ڤیدیۆ بخوێنرێتەوە + نەگێڕانەوەی کارپێکەر بۆ پێش کێشە ڕوویدا + گێڕانەوەی کارپێکەر بۆکاتی پێش کێشە + + + + + بەستەر هەڵەیە یاخوود بەئینتەرنێتەوە پەیوەست نەبوویت + هێما ڕێگەپێدراوەکان لە فایلێکی ناویدا + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + پەڕە بنەڕەتییەکان بەکاردەبردرێن, ناتوانرێ پەڕە پاشەکەوتکراوەکان بخوێنرێنەوە + + + + + + + + + + + + + + + + + + + + + + + + + + پیشاندانی نیشانەکەری شوێنی کارپێکراو لە لیستەکان + + + + + + خێرا بردنە پێشەوە\\ گێڕانەوە بۆکاتی سەرەتا + دۆخی PeerTube + ئارەزوومەندییەکانی دۆخی PeerTube ڕێکبخە + ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە https://joinpeertube.org/instances#instances-list + زیادکردنی دۆخ + بەستەری دۆخ دابنێ + ناتوانرێ پشتگیری دۆخەکە بکرێ + تەنها بەستەرەکانی https پشتگیریکراون + هەمان دۆخ کاراکراوە \ No newline at end of file From f4c8fdaf0767e8ef32ea92696e63be910dddfb23 Mon Sep 17 00:00:00 2001 From: Igor Nedoboy Date: Sun, 29 Dec 2019 18:20:37 +0000 Subject: [PATCH 09/99] Translated using Weblate (Russian) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-ru/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 48b7c4e4c..f4848e499 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -522,4 +522,20 @@ %s слушателей Язык будет изменён после перезапуска + Шаг перемотки вперёд/назад + Серверы PeerTube + Настройте предпочтительные серверы PeerTube + Выберите подходящие серверы на https://joinpeertube.org/instances#instances-list + Новый сервер + URL сервера + Не удалось проверить сервер + Поддерживается только https + Сервер уже существует + Локальное + Новое + Популярное + Создан автоматически (автор не найден) + восстановление + Не удалось восстановить загрузку + Выберите сервер \ No newline at end of file From c1e1c191d031eb3f30df3dd83582a5969bcebd52 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 30 Dec 2019 00:03:26 +0000 Subject: [PATCH 10/99] Translated using Weblate (German) Currently translated at 99.2% (518 of 522 strings) --- app/src/main/res/values-de/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d72b3de29..b5aaac094 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -517,4 +517,14 @@ %s Zuhörer Die Sprache ändert sich, sobald die App neu gestartet wird. + PeerTube Instanzen + Finde die Instanz, die am besten zu dir passt auf https://joinpeertube.org/instances#instances-list + Instanz hinzufügen + Gib die URL der Instanz ein + Validieren der Instanz fehlgeschlagen + Diese Instanz existiert bereits + Lokal + Kürzlich hinzugefügt + Auto-generiert (kein Uploader gefunden) + Wähle eine Instanz \ No newline at end of file From 6f3fd50ed865e6a8f483031db8796389af6deb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Mon, 30 Dec 2019 12:55:21 +0000 Subject: [PATCH 11/99] Translated using Weblate (German) Currently translated at 99.2% (518 of 522 strings) --- app/src/main/res/values-de/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b5aaac094..8be521d02 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -527,4 +527,6 @@ Kürzlich hinzugefügt Auto-generiert (kein Uploader gefunden) Wähle eine Instanz + Bevorzugte Peertube-Instanzen festlegen + Es werden nur https-Adressen unterstützt \ No newline at end of file From 1e7e8d4121adb3f6af37bf6e6f537609eea72ef1 Mon Sep 17 00:00:00 2001 From: Mauricio Colli Date: Tue, 31 Dec 2019 02:51:32 -0300 Subject: [PATCH 12/99] Fix for player access out of its creation thread --- .../org/schabi/newpipe/player/playback/MediaSourceManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java index 85c852f57..e4cef8c5c 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java @@ -319,6 +319,7 @@ public class MediaSourceManager { private Observable getEdgeIntervalSignal() { return Observable.interval(progressUpdateIntervalMillis, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) .filter(ignored -> playbackListener.isApproachingPlaybackEdge(playbackNearEndGapMillis)); } From 2b4190d85d3d5aae7b134c2b0cbd44af65e8369f Mon Sep 17 00:00:00 2001 From: yausername Date: Tue, 31 Dec 2019 20:10:51 +0530 Subject: [PATCH 13/99] made instance list url non translatable --- .../newpipe/settings/PeertubeInstanceListFragment.java | 7 +++++++ app/src/main/res/values-ar/strings.xml | 1 - app/src/main/res/values/strings.xml | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java index 1f8d552d0..a0c16af75 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/PeertubeInstanceListFragment.java @@ -89,6 +89,13 @@ public class PeertubeInstanceListFragment extends Fragment { public void onViewCreated(@NonNull View rootView, @Nullable Bundle savedInstanceState) { super.onViewCreated(rootView, savedInstanceState); + initViews(rootView); + } + + private void initViews(@NonNull View rootView) { + TextView instanceHelpTV = rootView.findViewById(R.id.instanceHelpTV); + instanceHelpTV.setText(getString(R.string.peertube_instance_url_help, getString(R.string.peertube_instance_list_url))); + initButton(rootView); RecyclerView listInstances = rootView.findViewById(R.id.instances); diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index e42f1d7b4..3ad4c2f39 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -543,7 +543,6 @@ تسريع إلى الأمام/-ترجيع وقت البحث نموذج بيرتوب تعيين حالات بيرتوب المفضلة لديك - ابحث عن النموذج التي يناسبك على https://joinpeertube.org/instances#instances-list إضافة نموذج أدخل رابط نموذج فشل في التحقق من النموذج diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 19013322d..6021df15e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -112,7 +112,8 @@ Default content language PeerTube instances Set your favorite peertube instances - Find the instances that best suit you on https://joinpeertube.org/instances#instances-list + Find the instances that best suit you on %s + https://joinpeertube.org/instances#instances-list Add instance Enter instance url Failed to validate instance From 17c0b981d1ef9b19c7ace99b295665ca44b0487c Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Tue, 31 Dec 2019 18:01:20 +0000 Subject: [PATCH 14/99] Added translation using Weblate (Interlingua) --- app/src/main/res/values-ia/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-ia/strings.xml diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ia/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 7ddb856ccd971ab4a97e8e06e5a64901974875d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 29 Dec 2019 19:57:21 +0000 Subject: [PATCH 15/99] Translated using Weblate (Turkish) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-tr/strings.xml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 06bb3946c..533c0d736 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -15,7 +15,7 @@ Şununla paylaş Tarayıcı seçin döndürme - Harici video oynatıcı kullanın + Harici video oynatıcı kullan Harici ses oynatıcı kullanın Video indirme dizini İndirilen video dosyaları burada depolanır @@ -29,7 +29,7 @@ Kodi ile oynat Kore uygulaması bulunamadı. Yüklensin mi\? \"Kodi ile oynat\" seçeneğini göster - Kodi ortam merkezi üzerinden video oynatmak için bir seçenek görüntüleyin + Kodi ortam merkezi üzerinden video oynatmak için bir seçenek göster Varsayılan ses formatı Tema Koyu @@ -175,7 +175,7 @@ Arama geçmişi Arama sorgularını yerel olarak saklayın İzleme geçmişi - İzlenen videoların kaydını tutun + İzlenen videoların kaydını tut Odaklanıldığında sürdür Kesintilerden sonra (örneğin telefon çağrısı) oynatmaya devam et Oynatıcı @@ -208,7 +208,7 @@ Öge silindi Bu ögeyi arama geçmişinden silmek istiyor musunuz\? \"Eklemek için basılı tutun\" ipucunu göster - Vidyo ayrıntıları sayfasında arka plan veya açılır pencere düğmesine basıldığında ipucu gösterilir + Video ayrıntıları sayfasında arka plan veya açılır pencere düğmesine basıldığında ipucu göster Arka plan oynatıcısı kuyruğuna eklendi Açılır pencere oynatıcısı kuyruğuna eklendi Tümünü Oynat @@ -517,4 +517,20 @@ %s dinleyici Uygulama yeniden başlatıldıktan sonra dil değişecektir. + Hızlı ileri/geri sarma süresi + PeerTube örnekleri + Favori peertube örneklerinizi ayarlayın + https://joinpeertube.org/instances#instances-list adresinde size en uygun örnekleri bulun + Örnek ekle + Örnek URL\'sini girin + Örnek doğrulanamadı + Yalnızca https URL\'leri desteklenmektedir + Örnek zaten var + Yerel + Son eklenen + En çok beğenilen + Otomatik oluşturulan (yükleyen bulunamadı) + kurtarılıyor + Bu indirme kurtarılamıyor + Bir örnek seçin \ No newline at end of file From 0c664e346a6a08c537cee06b2c06e453e2a3083d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Mon, 30 Dec 2019 13:06:09 +0000 Subject: [PATCH 16/99] Translated using Weblate (German) Currently translated at 99.2% (518 of 522 strings) --- app/src/main/res/values-de/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 8be521d02..e16d7d69b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -517,8 +517,8 @@ %s Zuhörer Die Sprache ändert sich, sobald die App neu gestartet wird. - PeerTube Instanzen - Finde die Instanz, die am besten zu dir passt auf https://joinpeertube.org/instances#instances-list + PeerTube-Instanzen + Finde auf https://joinpeertube.org/instances#instances-list die Instanzen, die am besten zu dir passen Instanz hinzufügen Gib die URL der Instanz ein Validieren der Instanz fehlgeschlagen From e1e2add61695e38587df6ae297a6280ded5b8e5a Mon Sep 17 00:00:00 2001 From: Igor Nedoboy Date: Sun, 29 Dec 2019 22:30:10 +0000 Subject: [PATCH 17/99] Translated using Weblate (Russian) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f4848e499..ef233baee 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -522,7 +522,7 @@ %s слушателей Язык будет изменён после перезапуска - Шаг перемотки вперёд/назад + Перемотка двойным нажатием Серверы PeerTube Настройте предпочтительные серверы PeerTube Выберите подходящие серверы на https://joinpeertube.org/instances#instances-list From 741a872c3928984e4a67dc1c34b08b3f78dcace5 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 29 Dec 2019 19:20:57 +0000 Subject: [PATCH 18/99] Translated using Weblate (Hebrew) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-he/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index fbcf5ce63..9eaedb71e 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -529,4 +529,20 @@ השפה תוחלף עם הפעלת היישומון מחדש. קיוסק בררת מחדל + משך קפיצה מהירה קדימה/אחורה + מופעים של PeerTube + נא להגדיר את מופעי ה־peertube המועדפים עליך + איתור המופעים שהכי מתאימים לך תחת https://joinpeertube.org/instances#instances-list + הוספת מופע + נא להכניס כתובת מופע + אימות המופע נכשל + יש תמיכה בכתובות https בלבד + המופע כבר קיים + מקומי + נוספו לאחרונה + האהובים ביותר + נוצרה אוטומטית (לא נמצא מעלה) + בשחזור + לא ניתן לשחזר את ההורדה הזאת + נא לבחור מופע \ No newline at end of file From b1fd2c007d19f0929c5220d59edd707a332d2728 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Sun, 29 Dec 2019 20:24:48 +0000 Subject: [PATCH 19/99] Translated using Weblate (Polish) Currently translated at 99.2% (518 of 522 strings) --- app/src/main/res/values-pl/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 769fa67a6..0b52d3c79 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -523,4 +523,20 @@ %s słuchaczy Język zmieni się po ponownym uruchomieniu aplikacji. + Szybkie przewijanie do przodu/do tyłu szukaj czasu trwania + Wystąpienia PeerTube + Ustaw swoje ulubione instancje peertube + Znajdź instancje, które najbardziej Ci odpowiadają, na https://joinpeertube.org/instances#instances-list + Dodaj instancję + Wprowadź adres URL instancji + Nie udało się sprawdzić poprawności instancji + Obsługiwane są tylko adresy URL https + Instancja już istnieje + Lokalny + Ostatnio dodane + Ulubione + Generowane automatycznie (nie znaleziono uploadera) + odzyskiwanie + Nie można odzyskać tego pobrania + Wybierz instancję \ No newline at end of file From 56364c4a2c7844379fb63757615af1bd6b947950 Mon Sep 17 00:00:00 2001 From: pjammo Date: Mon, 30 Dec 2019 13:25:35 +0000 Subject: [PATCH 20/99] Translated using Weblate (Italian) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-it/strings.xml | 218 +++++++++++++------------ 1 file changed, 117 insertions(+), 101 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 631922433..3af36f579 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -14,21 +14,21 @@ Condividi con Scegli browser rotazione - Cartella dei video scaricati + Cartella Video Scaricati I video scaricati saranno salvati qui Scegli la cartella per i video scaricati - Risoluzione predefinita + Risoluzione Predefinita Riproduci con Kodi - L\'applicazione Kore non è stata trovata. Vuoi installarla? + L\'applicazione Kore non è stata trovata. Installarla\? Mostra l\'opzione \"Riproduci con Kodi\" Mostra l\'opzione per riprodurre i video tramite Kodi Audio - Formato audio predefinito + Formato Audio Predefinito Scarica Prossimo - Mostra video \'Prossimo\' e \'Simili\' + Mostra video \"Prossimo\" e \"Simili\" URL non supportato - Lingua predefinita per i contenuti + Lingua Predefinita per Contenuti Video e Audio Miniatura anteprima video Riproduci video, durata: @@ -39,7 +39,7 @@ Creata la cartella per i download \'%1$s\' Usa un lettore video esterno Usa un lettore audio esterno - Cartella degli audio scaricati + Cartella Audio Scaricati Gli audio scaricati saranno salvati qui Scegli la cartella per gli audio scaricati Tema @@ -47,7 +47,7 @@ Chiaro Aspetto Altro - Riproduzione in sottofondo + Riproduzione in Sottofondo Riproduci Errore Errore di connessione @@ -60,10 +60,10 @@ Impossibile impostare il menu di download I contenuti in diretta non sono al momento supportati Contenuti - Contenuti vietati ai minori + Contenuti Vietati ai Minori Mostra video riservati a un pubblico maggiorenne. Si possono abilitare dalle Impostazioni. Tocca Cerca per iniziare - Riproduzione automatica + Riproduzione Automatica Riproduci i video quando NewPipe viene aperto da un\'altra app IN DIRETTA Impossibile analizzare completamente il sito web @@ -84,7 +84,7 @@ È stato negato il permesso di accesso all\'archiviazione di massa Download Download - Segnalazione errori + Segnalazione Errori Inizia Pausa Riproduci @@ -102,7 +102,7 @@ Tocca per maggiori dettagli Attendi… Copiato negli appunti - Nelle impostazioni seleziona una cartella per i download + Seleziona una cartella per i download Impossibile caricare l\'immagine L\'app/UI si è interrotta Cosa:\\nRichiesta:\\nLingua contenuto:\\nServizio:\\nOrario GMT:\\nPacchetto:\\nVersione:\\nVersione SO: @@ -119,21 +119,21 @@ Più tardi Apri in modalità popup Modalità popup di NewPipe - Riproduzione in modalità popup + Riproduzione in Modalità Popup Disattivato Non riproduce l\'audio con ALCUNE risoluzioni In sottofondo Popup - Risoluzione predefinita per la modalità popup - Mostra risoluzioni più alte + Risoluzione Predefinita Popup + Mostra Altre Risoluzioni Solo alcuni dispositivi supportano la riproduzione video in 2K e 4K - Formato video predefinito - Ricorda dimensione e posizione del popup - Ricorda l\'ultima dimensione e posizione del popup - Controlli gestuali del lettore multimediale - Usa i gesti per controllare la luminosità e il volume del lettore multimediale - Suggerimenti di ricerca - Mostra i suggerimenti durante la ricerca + Formato Video Predefinito + Ricorda Dimensione e Posizione Popup + Ricorda l\'ultima dimensione e posizione della finestra popup + Controllo Movimenti Lettore Multimediale + Usa i movimenti per controllare luminosità e volume del lettore multimediale + Suggerimenti Ricerca + Mostra suggerimenti durante la ricerca Popup Filtra i risultati Ricarica @@ -144,18 +144,18 @@ \nper riprodurre in modalità popup Impostazioni Informazioni - Licenze di terze parti + Licenze di Terze Parti © %1$s di %2$s protetto da licenza %3$s Impossible caricare la licenza - Visita il sito + Visita il Sito Informazioni Contributori Licenze Streaming libero e leggero su Android. Mostra su GitHub Licenza di NewPipe - Un aiuto è sempre il benvenuto: nuove idee e funzionalità, traduzioni, modifiche al design o cambiamenti radicali del codice rendono l\'applicazione sempre migliore! - Leggi la licenza + Un aiuto è sempre gradito: traduzioni, modifiche al design, pulizia del codice, cambiamenti radicali. Più si fa, meglio è! + Leggi la Licenza Contribuisci Informazioni su NewPipe Iscriviti @@ -165,18 +165,18 @@ Impossibile aggiornare l\'iscrizione Iscrizioni Novità - Cronologia ricerche - Salva le ricerche - Visualizza storico + Cronologia Ricerche + Salva le ricerche localmente + Cronologia Visualizzazioni Salva la cronologia dei video visualizzati - Riprendi tornando in primo piano + Riprendi Riproduzione Continua a riprodurre dopo le interruzioni (es. chiamate) Scarica - Caratteri ammessi nei nomi dei file + Caratteri Ammessi per i Nomi dei File I caratteri non validi vengono sostituiti con - Carattere sostitutivo - Lettere e cifre - Caratteri speciali + Carattere Sostitutivo + Lettere e Cifre + La Maggio Parte dei Caratteri Speciali Cronologia Ricerche effettuate Visualizzati @@ -185,9 +185,9 @@ La cronologia è vuota Cronologia cancellata Principale - Lettore multimediale + Lettore Multimediale Comportamento - Cronologia e cache + Cronologia e Cache Playlist Annulla Notifiche NewPipe @@ -211,23 +211,23 @@ Elemento eliminato Nulla da mostrare Vuoi eliminare questo elemento dalla cronologia? - Contenuto della pagina principale - Pagina vuota - Locandina - Pagina iscrizione - Pagina feed - Pagina del canale - Seleziona un canale - Nessuna iscrizione ad un canale - Seleziona una locandina + Contenuto della Pagina Principale + Pagina Vuota + Contenuti in Evidenza Personalizzati + Iscrizioni + Feed Iscrizioni + Canale Personalizzato + Seleziona Canale + Nessuna Iscrizione + Seleziona Contenuto Locandina Tendenze Top 50 New & hot - Mostra il suggerimento \"Tenere premuto per aggiungere video alla coda\" - Mostra suggerimento quando il pulsante per la riproduzione popup o in sottofondo viene premuto nella pagina dei dettagli del video - In coda al lettore multimediale in sottofondo - In coda al lettore multimediale a comparsa + Mostra Suggerimento \"Tieni Premuto per Accocodare\" + Mostra suggerimento quando il pulsante per la riproduzione \"popup\" o \"in sottofondo\" viene premuto nella pagina dei dettagli del video + In Coda in Sottofondo + In Coda in Modalità Popup Riproduci tutto Impossibile riprodurre questo flusso Si è verificato un errore irreversibile @@ -245,14 +245,14 @@ Avvia riproduzione in sottofondo Avvia riproduzione a comparsa Dona - Sito web - Visita il sito web di NewPipe per maggiori informazioni e novità. - NewPipe è sviluppato da volontari che trascorrono il loro tempo libero per offrire la migliore esperienza. Restituisci il favore per aiutare gli sviluppatori a rendere NewPipe ancora più piacevole mentre si gustano una tazza di caffè. + Sito + Visita il sito di NewPipe per informazioni e novità. + NewPipe è sviluppato da volontari che impiegano il loro tempo libero per offrire un\'esperienza migliore. Restituisci il favore, aiutandoli a rendere NewPipe ancora più piacevole, mentre si gustano una tazza di caffè. Restituisci - Paese predefinito per i contenuti + Paese Predefinito per Contenuti Cambia orientamento Passa alla riproduzione in background - Passa alla visualizzazione popup + Passa a Popup Passa alla produzione predefinita Servizio Apri il menu @@ -292,21 +292,21 @@ Sei sicuro di voler eliminare tutti gli elementi dalla cronologia? Ultima riproduzione I più riprodotti - Chiedi sempre - Nuova scaletta - Elimina scaletta - Rinomina scaletta + Chiedi ogni volta + Nuova Playlist + Elimina + Rinomina Nome Aggiunti alla playlist Imposta come miniatura della playlist Segnalibri playlist Rimuovi segnalibro - Eliminare questa scaletta\? + Eliminare la playlist\? Playlist creata - Aggiunti alla scaletta - Miniatura della scaletta cambiata. - Impossibile eliminare la scaletta. - No sottotitoli + Aggiunto alla Playlist + Miniatura della Playlist cambiata. + Impossibile eliminare la Playlist. + Nessun Sottotitolo Rientrato Pieno Ingrandito @@ -317,10 +317,10 @@ Il monitoraggio delle perdite di memoria potrebbe causare la mancata risposta dell\'applicazione durante il dumping dell\'heap Segnala Errori \"Out-of-lifecycle\" Forza la segnalazione di eccezioni Rx non consegnabili al di fuori del ciclo di vita dell\'attività dopo la chiusura - Usa la ricerca rapida ma imprecisa - La ricerca imprecisa permette al lettore multimediale di spostarsi nelle posizioni più velocemente con una precisione ridotta - Metti in coda automaticamente il prossimo flusso - Aggiungi automaticamente un contenuto correlato raggiunta la fine della coda se la ripetizione è disattivata + Usa Ricerca Rapida (Imprecisa) + Consente al lettore multimediale di spostarsi più velocemente, ma con precisione ridotta + Accoda Automaticamente l\'Elemento Successivo + Accoda un contenuto consigliato quando è in corso la riproduzione dell\'ultimo elemento, in una coda non ripetitiva File Nessuna cartella Nessun file o cartella che contiene sorgenti @@ -352,12 +352,12 @@ Tieni presente che questa operazione può consumare una grande quantità di traffico dati. \n \nVuoi continuare? - Carica miniature - Disabilita per prevenire il caricamento delle miniature, risparmiando dati e memoria. La modifica di questa opzione cancellerà la cache delle immagini in memoria e sul disco. - Pulizia della cache delle immagini completata - Pulisci la cache dei metadati - Rimuovi tutti i dati delle pagine web memorizzati nella cache - Pulizia della cache dei metadati completata + Carica Anteprime + Disabilita per prevenire il caricamento delle anteprime, risparmiando dati e memoria. La modifica di questa opzione cancellerà la cache delle immagini in memoria e sul disco. + Cache immagini svuotata + Pulisci Cache Metadati + Rimuovi i dati delle pagine web memorizzati nella cache + Cache metadati svuotata Controlli della velocità di riproduzione Tempo Tono @@ -367,7 +367,7 @@ \'Apri\' preferibilmente con Azione predefinita all\'apertura del contenuto — %s Sottotitoli - Modifica la dimensione e gli stili di sfondo dei sottotitoli. Per applicare le modifiche è richesto un riavvio. + Modifica dimensione e stile dei sottotitoli. Riavviare per applicare le modifiche. Nessuna app installata per riprodurre questo file Pulisci cronologia visualizzazioni Elimina la cronologia dei flussi riprodotti e la posizione di riproduzione @@ -378,9 +378,9 @@ Elimina l\'intera cronologia delle ricerche\? Cronologia delle ricerche eliminata. 1 elemento eliminato. - NewPipe è un software libero con licenza copyleft: si può utilizzarlo, studiarlo, condividerlo e migliorarlo a proprio piacimento. In particolare, è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License pubblicata dalla Free Software Foundation, sia nella versione 3 della Licenza, sia (a propria discrezione) in qualsiasi versione successiva. + NewPipe è un software libero con licenza copyleft: si può utilizzare, studiare, condividere e migliorare a proprio piacimento. In particolare, è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License (Free Software Foundation), nella versione 3 o successiva, a propria discrezione. Vuoi anche importare le impostazioni? - Informativa sulla privacy + Informativa sulla Privacy Il progetto NewPipe tiene molto alla tua privacy. Perciò, l\'app non raccoglie alcun dato senza il tuo consenso. \nL\'informativa sulla privacy di NewPipe spiega in dettaglio quali dati vengono inviati e memorizzati quando si invia un rapporto sugli arresti anomali. Leggi l\'informativa sulla privacy @@ -405,45 +405,45 @@ Disiscriviti Nuova scheda Scegli scheda - Movimenti per il controllo del volume + Movimenti Controllo Volume Utilizza i movimenti per controllare il volume del riproduttore - Movimenti per la gestione della luminosità + Movimenti Controllo Luminosità Utilizza i movimenti per controllare la luminosità del riproduttore Aggiornamenti File eliminato Notifiche di aggiornamenti dell\'applicazione Notifiche per una nuova versione di NewPipe Archiviazione esterna non disponibile - Impossibile effettuare il download sulla memoria esterna SD. Reimpostare la posizione della cartella di download\? + Impossibile scaricare sulla scheda SD esterna. Ripristinare la cartella dei download\? Utilizzando le schede predefinite, c\'è stato un errore durante la lettura delle schede salvate Ripristina predefiniti Davvero ripristinare i predefiniti\? Contatore degli iscritti non disponibile - Quali schede sono mostrate nella pagina principale + Schede mostrate nella pagina principale Selezione Aggiornamenti Mostra una notifica per suggerire l\'aggiornamento dell\'app se una nuova versione è disponibile Visualizzazione a lista Lista Griglia - Automatico - Cambia vista + Automatica + Cambia Visualizzazione Aggiornamento di NewPipe disponibile! Premi per scaricare Finito - In attesa di + In attesa in pausa in coda post-processo Accoda Azione negata dal sistema Download fallito - Download finito - %s download finiti + Download terminato + %s download terminati Genera un nome unico Sovrascrivi Esiste già un file scaricato con lo stesso nome - C\'è un download in progresso con questo nome + C\'è un download in corso con questo nome Mostra errore Codice Impossibile creare il file @@ -458,16 +458,16 @@ Post-processing fallito Pulisci i download completati Ferma - Tentativi massimi - Tentativi massimi prima di cancellare il download + Numero Massimo Tentativi + Quante volte provare prima di annullare il download Interrompi con le connessioni a consumo Utile quando si passa alla connessione dati mobile, altrimenti alcuni download potrebbero essere sospesi Eventi Conferenze Connesione finita - Mostra commenti + Mostra Commenti Disattiva per non visualizzare i commenti - Riproduzione automatica + Riproduzione Automatica Commenti @@ -475,11 +475,11 @@ Nessun commento Impossibile caricare i commenti Chiudi - Recupera riproduzione + Riprendi la Riproduzione Recupera l\'ultima posizione di riproduzione - Posizioni in lista - Mostra l indicatore di posizione di riproduzione nelle liste - Pulisci dati + Posizioni nelle Liste + Mostra indicatore di posizione di riproduzione nelle liste + Pulisci Dati Posizione di riproduzione eliminata. File spostato o cancellato Esiste già un file con questo nome @@ -489,16 +489,16 @@ Spazio insufficiente sul dispositivo Progresso perso poiché il file è stato eliminato Sei sicuro\? - Un download si avvierà allo stesso tempo + Sarà avviato un solo dowload per volta Avvia downloads Metti in pausa i downloads - Chiedi dove scaricare - Ti sarà chiesto dove salvare i file ogni volta + Chiedi Dove Scaricare + Ogni volta verrà chiesta la destinazione dei file Utilizza SAF - Limite download coda - Ti verrà chiesto dove salvare ogni download. + Limita Coda Download + Ogni volta verrà chiesta la destinazione dei file. \nScegli SAF se vuoi scaricare su una scheda SD esterna - Lo Storage Access Framework permette scaricamenti su una scheda SD esterna. + Lo Storage Access Framework consente di scaricare su una scheda SD esterna. \nNota: alcuni dispositivi non sono compatibili Elimina posizioni di riproduzione Elimina tutte le posizioni di riproduzione @@ -516,5 +516,21 @@ %s ascoltatori La lingua verrà cambiata al riavvio dell\'applicazione. - Pagina predefinita + Contenuti in Evidenza Predefiniti + Durata Avanzamento e Riavvolgimento Rapidi + Istanze PeerTube + Imposta le tue istanze PeerTube preferite + Trova le istanze più adatte a te su https://joinpeertube.org/instances#instances-list + Aggiungi Istanza + Inserisci URL Istanza + Impossibile convalidare l\'istanza + Sono supportati solo gli URL HTTPS + L\'istanza esiste già + Locale + Aggiunti di Recente + Più Piaciuti + Generato Automaticamente (nessun uploader trovato) + recupero + Impossibile recuperare questo download + Scegli un\'Istanza \ No newline at end of file From b9de3c202a14cfa5354c390fdb6773bd931835bf Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Sun, 29 Dec 2019 18:20:44 +0000 Subject: [PATCH 21/99] Translated using Weblate (Arabic) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-ar/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index e42f1d7b4..e496cdc53 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -541,19 +541,19 @@ مستمعين تسريع إلى الأمام/-ترجيع وقت البحث - نموذج بيرتوب - تعيين حالات بيرتوب المفضلة لديك - ابحث عن النموذج التي يناسبك على https://joinpeertube.org/instances#instances-list - إضافة نموذج - أدخل رابط نموذج - فشل في التحقق من النموذج + مثيلات خوادم پيرتيوب + عيّن مثيلات خوادم پيرتيوب التي تُفضّلها + ابحث عن مثيلات الخوادم التي تناسبك على https://joinpeertube.org/instances#instances-list + إضافة مثيل خادم + أدخل رابط مثيل الخادم + فشل في التحقق من مثيل الخادم فقط عناوين https المدعومة - نموذج موجود بالفعل + مثيل الخادم موجود بالفعل محلي أضيف مؤخرا الأكثر إعجابا تم إنشاؤه-تلقائيًا (لم يتم العثور على برنامج تحميل) استرد لا يمكن استرداد هذا التنزيل - اختيار نموذج + اختيار مثيل خادم \ No newline at end of file From 867f633d16bf2c73191c343688c609a24dd5ae32 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 30 Dec 2019 11:18:16 +0000 Subject: [PATCH 22/99] Translated using Weblate (French) Currently translated at 99.4% (519 of 522 strings) --- app/src/main/res/values-fr/strings.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index aecf113d1..c8e238487 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -517,4 +517,19 @@ %s auditeurs La langue changera lors du redémarrage de l\'application. + Avance/rembobinage rapide sur une durée + Instances PeerTube + Définissez vos instances peertube préférées + Cherchez des instances qui pourraient vous intéresser sur https://joinpeertube.org/instances#instances-list + Ajouter une instance + Entrez l’URL de l’instance + Échec de validation de l’instance + Sont prises en charge uniquement les URLs en https + L’instance existe déjà + Local + Ajoutées récemment + Les plus aimées + récupération + Impossible de récupérer ce téléchargement + Choisissez une instance \ No newline at end of file From 2227a7a6bd999da82ffd7d2413ea267d8884d92d Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Sun, 29 Dec 2019 21:55:36 +0000 Subject: [PATCH 23/99] Translated using Weblate (Kurdish) Currently translated at 99.8% (521 of 522 strings) --- app/src/main/res/values-ku/strings.xml | 248 ++++++++++++++----------- 1 file changed, 141 insertions(+), 107 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index f1917a36d..9fad2cf88 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -3,50 +3,51 @@ گرته‌ له‌ گه‌ڕان بكه‌ بۆ ده‌ستپێكردن %1$s بینراو بڵاوكراوه‌ته‌وه‌ له‌ %1$s - هیچ كارپێكه‌رێكی ڤیدیۆیی نه‌دۆزرایه‌وه‌، ده‌ته‌وێت VLC داگریت؟ - هیچ كارپێكه‌رێكی ڤیدیۆییت نییه‌ ده‌توانیت VLC داگریت بۆ لێدان - داگرتن + هیچ كارپێكه‌رێكی ڤیدیۆیی نه‌دۆزرایه‌وه‌. ده‌ته‌وێت VLC داگریت؟ + هیچ کارپێکەرێکی ڤیدیۆ نەدۆزرایەوە (دەتوانی کارپێکەری VLC دامەزرێنی) . + دامەزراندن پاشگه‌زبوونه‌وه‌ كردنه‌وه‌ له‌ وێبگه‌ر - كردنه‌وه‌ له‌ په‌نجه‌ره‌ی بچووك + كردنه‌وه‌ له‌ په‌نجه‌ره‌ی بچووک هاوبه‌شپێكردن داگرتن - .داگرتنی په‌ڕگه‌ + داگرتنی فایلی پەخش گه‌ڕان ڕێكخستنه‌كان - مه‌به‌ستت ئه‌مه‌یه‌: %1$s + مەبەستت ئەمەیە: +\n%1$s\? "هاوبه‌شپێكردن له‌گه‌ڵ " هه‌ڵبژاردنی وێبگه‌ر - سوڕان + لاربوونەوە به‌كارهێنانی كارپێكه‌ری ڤیدیۆی ده‌ره‌كی - هه‌نێ له‌ قه‌باره‌كان ده‌نگیان تێدا نابێت له‌حاڵه‌تی كارا كردنی ئه‌م بژارده‌یه‌ + هه‌نێ له‌ قه‌باره‌كان ده‌نگیان تێدا نابێت به‌كارهێنانی كارپێكه‌ری ده‌نگی ده‌ره‌كی - په‌نجه‌ره‌ی بچووك + په‌نجه‌ره‌ی بچووکی NewPipe به‌شداربوون به‌شداربوویت - به‌شدارنابیت له‌ كه‌ناڵ + به‌شداریت نەما له‌ كه‌ناڵ ناتوانیت گۆڕانكاری له‌م به‌شدارییه‌دا بكه‌یت ناتوانرێت به‌شداریكردنه‌كه‌ نوێبكرێته‌وه‌ پیشاندانی زانیاری سه‌ره‌كی به‌شدارییه‌كان - نیشانكردنه‌كان + لیستی کارپێکردنەکان نیشانەکران چی نوێ هه‌یه‌ - له‌پشته‌وه‌ - په‌نجه‌ره‌ - ناردن بۆ - شوێنی داگرتنی ڤیدیۆ - شوێنی ڤیدیۆ داگیراوه‌كان - نوسینی شوێنی داگرتنی ڤیدیۆكان - شوێنی داگرتنی ده‌نگ - شوێنی ده‌نگه‌ داگیراوه‌كان - نوسینی شوێنی داگرتنی ده‌نگه‌كان + لە پاشبنەما + په‌نجه‌ره‌ی بچووک + زیادکردن بۆ + فۆڵدەری داگرتنی ڤیدیۆ + ڤیدیۆ داگیراوەکان لێرەدا هەڵدەگیرێن + فۆڵدەری داگرتن بۆ ڤیدیۆکان هەڵبژێرە + فۆڵدەری داگرتنی ده‌نگ + دەنگە داگیراوەکان لێرەدا هەڵدەگیرێن + فۆڵدەری داگرتنی دەنگەکان هەڵبژێرە كاركردنی خۆكارانه‌ - قه‌باره‌ی سه‌ره‌كی - قه‌باره‌ی سه‌ره‌كی په‌نجه‌ره‌ + قه‌باره‌ی بنەڕەتی + قه‌باره‌ی بنەڕەتی په‌نجه‌ره‌ی بچووک پیشاندانی قه‌باره‌ی به‌رزتر - چه‌ند مۆبایلێك پشتگیری له‌ قه‌باره‌ی 2K/4K ده‌كه‌ن - كاركردن به‌ Kodi + تەنها چەند مۆبایلێک پشتگیری کارپێکردنی ڤیدیۆی 2K/4K دەکەن + كارپێكردن به‌ Kodi نه‌رمه‌واڵا نه‌دۆزرایه‌وه‌. دابمه‌زرێت؟ پیشاندانی بژارده‌ی “كاركردن به‌ Kodi” پیشاندانی بژارده‌ی كارپێكردنی ڤیدیۆ به‌ Kodi @@ -63,7 +64,7 @@ ناچالاكی بكه‌ بۆ ڕاگرتنی وێنۆچكه‌كان له‌ باركردن و پاشه‌كه‌وتبوون له‌سه‌ر بیرگه‌ی ئامێره‌كه‌ت. \nگۆڕینی ئه‌مه‌ ده‌بێته‌ هۆی سڕینه‌وه‌یان له‌سه‌ر بیرگه‌ی مۆبایله‌كه‌ت. پاشماوه‌ی وێنۆچكه‌كان سڕایه‌وه‌ - ڤیدیۆ لێبدرێ کاتێ NewPipe لە ئەپێکیتر کرایەوە + ڤیدیۆ کارپێبکرێ کاتێ NewPipe لە ئەپێکیتر کرایەوە بەکارهێنانی بەدواگەڕانی ناتەواوی خێرا خاوێنکردنەوەی پاشماوەی داتا سڕینەوەی پاشماوەی هەموو داتاکان @@ -153,7 +154,7 @@ سکاڵا زانیاری: چی ڕوویدا: - "لێدوانەکەت (بە ئینگلیزی):" + لێدوانەکەت (بە ئینگلیزی): وردەکارییەکان: وێنۆچکەی پیشاندانی ڤیدیۆ ماوەی لێدانی ڤیدیۆ: @@ -223,7 +224,7 @@ دەربارەی ئەپ ڕێکخستنەکان دەربارە - © %1$s by %2$s under %3$s + © %1$s لەلایەن %2$s لەژێر %3$s ناتوانرێ مۆڵەت باربکرێ کردنەوەی وێبسایت دەربارە @@ -398,7 +399,7 @@ %s گوێی لێدەگرێ %s گوێی لێدەگرن - + داواکردنی ناتەواو وا لە کارپێکەرەکە دەکات زۆر بەخێرایی شوێنەکان بگۆڕێت لەگەڵ وردییەکی داشکێنراو پاشکۆی خۆکاری پەخشێکی بەستراوە لەکاتی کارپێکردنی کۆتا پەخشدا کۆگای گەڕانی داواکاری نێوخۆیی گێڕانەوە لەدۆخی سەرنج @@ -409,89 +410,90 @@ ناتوانرێ واژووی بەستەری ڤیدیۆ بخوێنرێتەوە نەگێڕانەوەی کارپێکەر بۆ پێش کێشە ڕوویدا گێڕانەوەی کارپێکەر بۆکاتی پێش کێشە - - - - + هەمان فۆڵدەر بوونی نییە + هەمان فایل بوونی نییە + چی:\\nداواکراو:\\nناوەڕۆک:\\nلانگ:\\nخزمەتگوزاری:\\nGMT:\\nکات:\\nپاکێج:\\nوەشان:\\nوەشانی سیستەم: + |(تاقیکاری) داگرتنی خێرا بەبەکارهێنانی Tor بۆ زیادکردنی تایبەتێتی (پشتگیری پەخشە ڕاستەوخۆکان ناکات) . بەستەر هەڵەیە یاخوود بەئینتەرنێتەوە پەیوەست نەبوویت هێما ڕێگەپێدراوەکان لە فایلێکی ناویدا - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + هێما نادروستەکان بەم بەهایە جێگۆڕکێ دەکرێن + هێمای جێگۆڕین + مۆڵەتنامەی ئەپ + ئەپێکی خۆڕایی و کێشی کەم بۆ پەخشی ڕاستەوخۆ لەسەر ئەندرۆید. + مۆڵەتنامەی NewPipe + پەڕە بەتاڵە + پەڕەی کیۆسک + پەڕەی بەشدارییەکان + پەڕەی نوێترینەکان + پەڕەی کەناڵەکان + هەڵبژاردنی کەناڵ + هیچ کەناڵێکی بەشداری نییە + هەڵبژاردنی کیۆسک + خەزنکرا + هێنرایەوە + فایلی ZIP دروست نییە + ئاگاداربە: ناتوانرێ هەمان فایلەکان بهێنرێنەوە. + ئەمە لەسەر ڕێکخستنەکانی ئێستات جێگیردەبێت. + کیۆسک + پڕبینەرەکان + باشترین 50 + نوێ & چالاک + کارپێکەری پاشبنەما + داگرە تا ڕیزنەکران + ڕیزنەبوون لە پاشبنەما + ڕیزنەبوون لە پەنجەرەی بچووک + کردنەوەی پلیکانە + داخستنی پلیکانە + چاودێری دزەکردنی بیرگە ڕەنگە ببێتە هۆی وەڵامنەدانەوەی لەکاتی گەرمبوون + کرداری ’کردنەوە’ی پێشنیارکراو + کرداری بنەڕەتی لەکاتی کردنەوەی بابەت — %s + ئایا دەتەوێت ڕێکخستنەکانیش بهێنرێنەوە؟ + بۆ جێبەجێکردنی فرمانەکان لەگەڵ یاسای پاراستنی داتای گشتی ئەوروپیدا (GDPR) , ئێمە سەرنجت ڕادەکێشین بۆ سیاسەتە تایبەتییەکانی ئەپەکەمان. تکایە بەئاگادارییەوە بیخوێنەوە. +\nپێویستە قبوڵی بکەیت بۆ ناردنی سکاڵاکانت. + قبوڵکردن + ڕەتکردنەوە + بێ سنوور + سنووری قەبارە لەکاتی بەکارهێنانی داتای مۆبایل + بچوکبوونەوە لەکاتی گۆڕینی ئەپ + کرداری کاتی گۆڕین بۆ ئەپێکیتر لە کارپێکەری ڤیدیۆییەوە — %s + هیچیان + بچوککردنەوە بۆ کارپێکەری پاشبنەما + بچووککردنەوە بۆ پەنجەرەی بچووک + بردنەپێشەوەی خێرا لەکاتی بێدەنگکردن + هەنگاو + ڕێکخستنەوە پەڕە بنەڕەتییەکان بەکاردەبردرێن, ناتوانرێ پەڕە پاشەکەوتکراوەکان بخوێنرێنەوە - - - - - - - - - - - - - - - - - - - - - - - - - + چ پەڕەیەک نیشانبدرێ لە پەڕەی سەرەکی + هەڵبژاردن + نوێکارییەکان + پیشاندانی ئاگانامەیەک بۆ ئامادەبوونی ئەپ لەکاتی بەردەست بوونی وەشانی نوێ + لیستی شێوازی بینین + لیست + چوار خانە + خۆکار + گۆڕینی شێواز + وەشانی نوێی ئەپ بەردەستە! + گرتەبکە بۆ داگرتن + تەواوبوو + لە چاوەڕوانیدایە + ڕاگیراوە + لەڕیزدایە + چارەسەردەکرێت + لە ڕیز + کردار ڕەتکرایەوە لەلایەن سیستەمەوە + داگرتن شکستی هێنا + داگرتن تەواوبوو + %s داگرتن تەواوبوون + دانانی ناوی نوێ + جێگیرکردن + کۆنفرانسەکان + ناتوانرێ لێدوانەکان باربکرێ پیشاندانی نیشانەکەری شوێنی کارپێکراو لە لیستەکان - - - - - + فایلێک بەهەمان ناو هەیە + فایلێکی داگیراو بەم ناوەوە هەیە + ناتوانرێ لەسەر ئەو فایلە جێگیربکرێ + زمان دەگۆڕدرێ لەدوای داخستن و پاشان کردنەوەی ئەپ. + کیۆسکی بنەڕەتی خێرا بردنە پێشەوە\\ گێڕانەوە بۆکاتی سەرەتا دۆخی PeerTube ئارەزوومەندییەکانی دۆخی PeerTube ڕێکبخە @@ -501,4 +503,36 @@ ناتوانرێ پشتگیری دۆخەکە بکرێ تەنها بەستەرەکانی https پشتگیریکراون هەمان دۆخ کاراکراوە + نەدۆزرایەوە + چارەسەرکردن شکستی هێنا + سڕینەوەی داگرتنە تەواوبووەکان + ڕاوەستان + زیاترین هەوڵدانەکان + زۆرترین ژمارەی هەوڵدان پێش پاشگەزبوونەوە لە داگرتنەکە + ڕاوەستا لەسەر کێشەی هێڵ + بەسوودە بۆ کاتی گۆڕینی هێڵ بۆ داتای مۆبایل, لەگەڵ ئەوەشدا زۆربەی داگرتنەکان ڕاناگرێت + داخستن + NewPipe داخرا لەکاتی کارکردن لەسەر ئەو فایلە + بیرگەی ناوەکیت پڕبووە + کردارەکە شکستی هێنا, چونکە ئەو فایلە سڕاوەتەوە + هێڵی ئینتەرنێت نەما + ئایا دڵنیای؟ + سنوری ڕیزبوونی داگرتنەکان + تەنها یەک داگرتن کاردەکات لەیەک کاتدا + دەستپێکردنەوەی داگرتنەکان + ڕاگرتنی داگرتنەکان + پرسیاربکرێ لەکوێ دابگیرێ + پرسیارت لێ دەکرێت بۆ شوێنی داگرتنی هەر فایلێک + پرسیارت لێ دەکرێت بۆ شوێنی داگرتنی هەر فایلێک +\nدەتوانیت SAF بەکاربهێنیت گەر دەتەوێ لە بیرگەی دەرەکیدا فایلەکان دابگریت + بەکارهێنانی SAF + چوارچێوەی گەیشتن بە بیرگە ڕێگەدەدات بە داگرتنی فایلەکان لە بیرگەی دەرەکیدا. +\nتێبینی: هەندێ لە مۆبایلەکان پشتگیری ناکرێن + ناوخۆ + لەم ماوەیەدا بڵاوکرابێتەوە + زۆرترین بەدڵبوون + خۆکاری دانرا (هیچ بەرزکەرەوەیەک نەدۆزرایەوە) + دەگەڕێنرێتەوە + ناتوانرێ ئەم داگرتنە بهێنرێتەوە + دۆزێک هەڵبژێرە \ No newline at end of file From 87e29dbd840aaf2ecf1017f7bf72da28d5f1c141 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 30 Dec 2019 06:26:28 +0000 Subject: [PATCH 24/99] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-zh-rTW/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cc0dbe639..9713e4665 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -513,4 +513,20 @@ 語言將會在重新啟動應用程式後變更。 + 快轉/快退搜尋持續時間 + PeerTube 站臺 + 設定您最愛的 PeerTube 站臺 + 在 https://joinpeertube.org/instances#instances-list 上找到最適合您的站臺 + 新增站臺 + 輸入站臺 URL + 驗證站臺失敗 + 僅支援 https URL + 站臺已存在 + 本機 + 最近新增 + 最喜歡 + 自動生成(未找到上傳者) + 正在恢復 + 無法復原此下載 + 選擇一個站臺 \ No newline at end of file From d063d39dbc2e07c8c03149f45ece54a2ca302f3b Mon Sep 17 00:00:00 2001 From: chr56 Date: Tue, 31 Dec 2019 16:02:47 +0000 Subject: [PATCH 25/99] Translated using Weblate (Chinese (Simplified)) Currently translated at 98.7% (515 of 522 strings) --- .../main/res/values-b+zh+HANS+CN/strings.xml | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-b+zh+HANS+CN/strings.xml b/app/src/main/res/values-b+zh+HANS+CN/strings.xml index 8714c6aca..f4c199e9e 100644 --- a/app/src/main/res/values-b+zh+HANS+CN/strings.xml +++ b/app/src/main/res/values-b+zh+HANS+CN/strings.xml @@ -39,7 +39,7 @@ 网络错误 视频 - + 禁用 背景 @@ -160,7 +160,7 @@ 使用第三方视频播放器 使用第三方视频播放器 音频下载文件夹 - 从其他应用打开 NewPipe 时就播放视频 + 从其他应用调用 NewPipe 时播放视频 默认分辨率 找不到Kore。是否安装? 显示“用Kodi播放”选项 @@ -507,7 +507,7 @@ 无人在线观看 %s 人在观看 - + 没人在听 @@ -515,4 +515,19 @@ 重新启动应用后,语言将更改。 + PeerTube 服务器 + 设置自己喜欢的peertube服务器 + 查找最适合你的服务器https://joinpeertube.org/instances#instances-list + 添加服务器 + 输入服务器网址 + 无法验证服务器 + 仅支持 https URL + 该服务器已存在 + 本地 + 最近添加 + 最喜欢的 + 自动生成的(未找到上传者) + 正在恢复 + 无法恢复此下载 + 选择一个服务器 \ No newline at end of file From 22a9a06b875d1640f91ba7c15d8f5ed0a17a1cc2 Mon Sep 17 00:00:00 2001 From: Ariel Shulman Date: Wed, 1 Jan 2020 08:24:52 +0000 Subject: [PATCH 26/99] Translated using Weblate (Hebrew) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-he/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 9eaedb71e..3e5f1aa8b 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -111,8 +111,8 @@ היסטוריית צפייה תיעוד הסרטונים שנצפו להמשיך את הניגון עם החזרת המיקוד - להמשיך לנגן לאחר הפרעות (למשל: שיחות טלפון) - להציג את העצה „להחזיק כדי להוסיף לרשימת נגינה” + המשך לנגן לאחר הפרעות (למשל: שיחות טלפון) + הצג את העצה „החזק כדי להוסיף לרשימת נגינה” להציג עצה בעת לחיצה על כפתור בנגן רקע או צף בעמוד פרטי סרטון נגן התנהגות @@ -122,7 +122,7 @@ רשימת נגינה רזולוציה מיטבית ביטול - לנגן הכול + נגן הכול התראה מ־NewPipe התראות עבור נגן הרקע והנגן הצף של NewPipe [לא ידוע] @@ -249,12 +249,12 @@ הסרה פרטים אפשרויות שמע - להחזיק כדי להוסיף לרשימת נגינה - להוסיף לרשימת הנגינה ברקע + החזק כדי להוסיף לרשימת נגינה + הוסף לרשימת הנגינה ברקע הוספה לתור בנגן צף חדש - להתחיל לנגן מכאן - להתחיל לנגן ברקע - להתחיל לנגן בחלון צף חדש + התחל לנגן מכאן + התחל לנגן ברקע + התחל לנגן בחלון צף חדש הורדת קובץ הזרמה הצגת מידע רשימות נגינה מסומנות @@ -338,7 +338,7 @@ כיבוי האפשרות מונע את טעינת התמונות הממוזערות, חוסך בתקשורת נתונים ובניצולת הזיכרון. שינויים באפשרות זו מוחקים את המטמון בזיכרון ובכונן. הסרת כל נתוני העמודים שבמטמון הוספת התזרים הבא לרשימת הנגינה אוטומטית - להוסיף אוטומטית תזרים דומה בעת נגינת התזרים האחרון בתור שאינו מחזורי + הוסף אוטומטית תזרים דומה בעת נגינת התזרים האחרון בתור שאינו מחזורי החלפת כיווניות העברה לראשי משכתב את ההיסטוריה והמינויים הנוכחיים שלך @@ -393,7 +393,7 @@ מזעור בעת מעבר בין יישומונים הפעולה לביצוע בעת מעבר ליישומון אחר מנגן הווידאו הראשי — %s כלום - מזעור לנגן הרקע + מזער לנגן הרקע הקטנה לנגן צף ביטול מינוי לשונית חדשה @@ -490,7 +490,7 @@ מיקומי הנגינה נמחקו. הקובץ הועבר או נמחק כבר קיים קובץ בשם הזה - לא ניתן לשכתב על הקובץ + לא ניתן לשכתב את הקובץ כבר יש הורדה ממתינה בשם הזה NewPipe נסגר בזמן העבודה על הקובץ לא נשאר מקום במכשיר From cc17d268fce0fea2028b7d7d5a91d1d357c4776b Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 1 Jan 2020 12:26:09 +0000 Subject: [PATCH 27/99] Translated using Weblate (Hebrew) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-he/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 3e5f1aa8b..1b7444e1e 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -254,7 +254,7 @@ הוספה לתור בנגן צף חדש התחל לנגן מכאן התחל לנגן ברקע - התחל לנגן בחלון צף חדש + להתחיל כאן בנגן הצף הורדת קובץ הזרמה הצגת מידע רשימות נגינה מסומנות From a29df9a2dd374a39c46b8ad70be4a5f688862f89 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Tue, 31 Dec 2019 18:02:37 +0000 Subject: [PATCH 28/99] Translated using Weblate (Interlingua) Currently translated at 9.4% (49 of 522 strings) --- app/src/main/res/values-ia/strings.xml | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index a6b3daec9..1d053a370 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -1,2 +1,27 @@ - \ No newline at end of file + + Installar + Aperir in le navigator + Compartir + Discargar + Cercar + Configurationes + Compartir con + Seliger un navigator + Subscribite + Cancellar le subscription + Non poteva cambiar le subscription + Non poteva actualisar le subscription + Monstrar information + Principal + Subscriptiones + Nove scheda + Seliger le scheda + Novitates + Fundo + Emergente + Adder a + Dossier de discarga de video + Selige le dossier de discarga pro files de video + Dossier de discarga de audio + \ No newline at end of file From a3dc95bef1ee497e06daa1ad8633efe53bc3a6d9 Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Wed, 1 Jan 2020 10:09:09 +0000 Subject: [PATCH 29/99] Translated using Weblate (Kurdish) Currently translated at 99.8% (521 of 522 strings) --- app/src/main/res/values-ku/strings.xml | 50 +++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 9fad2cf88..da2c3aa21 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -48,17 +48,17 @@ پیشاندانی قه‌باره‌ی به‌رزتر تەنها چەند مۆبایلێک پشتگیری کارپێکردنی ڤیدیۆی 2K/4K دەکەن كارپێكردن به‌ Kodi - نه‌رمه‌واڵا نه‌دۆزرایه‌وه‌. دابمه‌زرێت؟ - پیشاندانی بژارده‌ی “كاركردن به‌ Kodi” + ئەپەکە نه‌دۆزرایه‌وه‌. دابمه‌زرێت؟ + بژاردەی ”کارپێکردن بە Kodi“ پیشانبدرێت پیشاندانی بژارده‌ی كارپێكردنی ڤیدیۆ به‌ Kodi ده‌نگ - جۆری سه‌ره‌كی ده‌نگ - جۆری سه‌ره‌كی ڤیدیۆ + جۆری بنەڕەتی ده‌نگ + جۆری بنەڕەتی ڤیدیۆ ڕووكار - ڕووناك - تاریك + سپی + تاریک ڕه‌ش - بیرهاتنه‌وه‌ی شوێن و قه‌باره‌ی په‌نجه‌ره‌ + بیرهاتنه‌وه‌ی شوێن و قه‌باره‌ی په‌نجه‌ره‌ی بچووک بیرهاتنه‌وه‌ی كۆتا قه‌باره‌ و شوێنی په‌نجه‌ره‌ی بچووك باركردنی وێنۆچكه‌كان ناچالاكی بكه‌ بۆ ڕاگرتنی وێنۆچكه‌كان له‌ باركردن و پاشه‌كه‌وتبوون له‌سه‌ر بیرگه‌ی ئامێره‌كه‌ت. @@ -69,32 +69,32 @@ خاوێنکردنەوەی پاشماوەی داتا سڕینەوەی پاشماوەی هەموو داتاکان پاشماوەی داتاکان سڕانەوە - ڕیزکردنی خۆکاری لێدانی دواتر - کۆنتڕۆڵی لێدەر بەجوڵەی پەنجە + ڕیزکردنی خۆکاری کارپێکردنی دواتر + کۆنتڕۆڵی کارپێکەر بەجوڵەی پەنجە جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی دەنگ و ڕووناکی - گەڕان بەنێو پێشنیارکراوەکان + گەڕانی پێشنیارکراوەکان پیشاندانی پێشنیارەکان لەکاتی گەڕان مێژووی گەڕان مێژووی تەماشاکردن - هێشتنەوەی تراکی ڤیدیۆ لێدراوەکان - بەردەوام بوونی ڤیدیۆ لەدوای هەبوونی هەر بڕینێک (وەک پەیوەندیکردن) + هێشتنەوەی تراکی ڤیدیۆ کارپێکراوەکان + بەردەوام بوونی ڤیدیۆ لەدوای هەبوونی هەر بڕینێک (وەک پەیوەندی تەلەفۆنی) داگرتن دواتر - پیشاندانی دواتر و ڤیدیۆ هاوشێوەکان + پیشاندانی ’دواتر’ و ڤیدیۆ ’هاوشێوەکان’ بەستەرەکە پشتگیری نەکراوە - وڵاتی سەرەکی + وڵاتی بنەڕەتی خزمەتگوزاری - لێدەری ڤیدیۆیی + کارپێکەری ڤیدیۆ ڤیدیۆ & دەنگ مێژوو & پاشماوە پەنجەرەی بچووک ڕووکار هیتر ڕاستکردنەوە - لێدان لە پاشبنەما - لێدان لە پەنجەرەی بچووک - ڕیزکرا لە لێدان لە پاشبنەما - ڕیزکرا لە لێدان لە پەنجەرەی بچووک + کارپێکردن لە پاشبنەما + کارپێکردن لە پەنجەرەی بچووک + ڕیزکرا لە کارپێکردن لە پاشبنەما + ڕیزکرا لە کارپێکردن لە پەنجەرەی بچووک لێدان ناوەڕۆک سنوردانانی تەمەن @@ -345,7 +345,7 @@ جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی دەنگ کۆنترۆڵی ڕووناکی بەجوڵەی پەنجە جوڵەی پەنجەت لەسەر ڕونما بەکاربهێنە بۆ گۆڕینی ئاستی ڕووناکی ڕونما - زمانی سەرەکی + زمانی بنەڕەتی ئەپ نوێکارییەکان فایل سڕایەوە ئاگانامەی نوێکاری ئەپ @@ -369,15 +369,15 @@ ئەم ڕاژەیە ناتوانێ چەندین داگرتن لەیەک کاتدا بکات ڕووداوەکان پیشاندانی لێدوانەکان - ناچالاککردنی وەستان بۆ پیشاندانی لێدوانەکان - لێدانی خۆکاری + ناچالاککردن بۆ پیشان نەدانی لێدوانەکان + کارپێکردنی خۆکاری لێدوانەکان هیچ لێدوانێک نییە - لێدانەوەی لیست - لێدانەوەی لیست لە شوێنی پێشووتر + کارپێکردنەوەی لیست + گێڕانەوەی لیست بۆ شوێنی پێشووتر شوێنەکان لە لیستدا سڕینەوەی داتا مێژوو سڕایەوە. @@ -401,7 +401,7 @@ داواکردنی ناتەواو وا لە کارپێکەرەکە دەکات زۆر بەخێرایی شوێنەکان بگۆڕێت لەگەڵ وردییەکی داشکێنراو پاشکۆی خۆکاری پەخشێکی بەستراوە لەکاتی کارپێکردنی کۆتا پەخشدا - کۆگای گەڕانی داواکاری نێوخۆیی + کۆگای گەڕانی نێوخۆیی گێڕانەوە لەدۆخی سەرنج پیشاندانی ڕێنمایی ”داگرتن تا پاشکۆ” پیشاندانی ڕێنمایی کاتێ لە پاشبنەما یاخوود پەنجەرەی بچووکدا گرتە دەکرێ لەسەر وردەکاری ڤیدیۆیەک From a8e26238a8febfc01302ae4a9ac3e99d42a4b665 Mon Sep 17 00:00:00 2001 From: Matsuri Date: Wed, 1 Jan 2020 03:28:15 +0000 Subject: [PATCH 30/99] Translated using Weblate (Chinese (Simplified)) Currently translated at 98.7% (515 of 522 strings) --- app/src/main/res/values-b+zh+HANS+CN/strings.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-b+zh+HANS+CN/strings.xml b/app/src/main/res/values-b+zh+HANS+CN/strings.xml index f4c199e9e..e246d54eb 100644 --- a/app/src/main/res/values-b+zh+HANS+CN/strings.xml +++ b/app/src/main/res/values-b+zh+HANS+CN/strings.xml @@ -180,7 +180,7 @@ 错误报告 错误 无法加载所有缩略图 - 无法解密视频 URL 的签名 + 无法解密视频的 URL 签名 无法解析网址 无法完全解析网址 内容不可用 @@ -483,7 +483,7 @@ 命名冲突,已存在具有此名称文件 无法覆盖文件 有此名称的已暂停下载 - 处理文件时,NewPipe 已关闭 + NewPipe 在处理文件时被关闭 设备上没有剩余储存空间 进度丢失,文件已被删除 连接超时 @@ -511,8 +511,8 @@ 没人在听 - %s个听众 - + %s 人在听 + 重新启动应用后,语言将更改。 PeerTube 服务器 @@ -530,4 +530,5 @@ 正在恢复 无法恢复此下载 选择一个服务器 + 快进 / 快退的单位时间 \ No newline at end of file From ee65e892300d6aa7391239215871dbc27adf0b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Matuszewski?= Date: Wed, 30 Oct 2019 23:17:09 +0100 Subject: [PATCH 31/99] limit amount of notification thumbnail updates limits amount of calls to updateNotificationThumbnail in background player --- .../org/schabi/newpipe/player/BackgroundPlayer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index ab07ded22..90af3c29f 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -95,6 +95,9 @@ public final class BackgroundPlayer extends Service { private boolean shouldUpdateOnProgress; + private static final int NOTIFICATION_UPDATES_BEFORE_RESET = 60; + private int timesNotificationUpdated; + /*////////////////////////////////////////////////////////////////////////// // Service's LifeCycle //////////////////////////////////////////////////////////////////////////*/ @@ -180,6 +183,7 @@ public final class BackgroundPlayer extends Service { private void resetNotification() { notBuilder = createNotification(); + timesNotificationUpdated = 0; } private NotificationCompat.Builder createNotification() { @@ -252,6 +256,7 @@ public final class BackgroundPlayer extends Service { if (bigNotRemoteView != null) bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); } notificationManager.notify(NOTIFICATION_ID, notBuilder.build()); + timesNotificationUpdated++; } /*////////////////////////////////////////////////////////////////////////// @@ -351,8 +356,10 @@ public final class BackgroundPlayer extends Service { updateProgress(currentProgress, duration, bufferPercent); if (!shouldUpdateOnProgress) return; - resetNotification(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) updateNotificationThumbnail(); + if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) { + resetNotification(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) updateNotificationThumbnail(); + } if (bigNotRemoteView != null) { if(cachedDuration != duration) { cachedDuration = duration; From 8e1d7f162d4360e4d789796d9e288f557a969106 Mon Sep 17 00:00:00 2001 From: Igor Nedoboy Date: Wed, 1 Jan 2020 18:08:43 +0000 Subject: [PATCH 32/99] Translated using Weblate (Russian) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ef233baee..5230f00a2 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -265,7 +265,7 @@ Неверная ссылка Видеопотоки не найдены Аудиопотоки не найдены - Пожертвовать + Пожертвование Разработчики NewPipe ценой своего свободного времени делают вашу жизнь чуть удобнее. Отплатите им тем же — наслаждаясь чашечкой кофе, они смогут сделать NewPipe ещё круче. Воздать должное Веб-сайт From f04d2e76fa4cf2c81593b0cc52a04a2c3388a4a6 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 1 Jan 2020 12:26:52 +0000 Subject: [PATCH 33/99] Translated using Weblate (Hebrew) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-he/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 1b7444e1e..f98fb7b3e 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -111,8 +111,8 @@ היסטוריית צפייה תיעוד הסרטונים שנצפו להמשיך את הניגון עם החזרת המיקוד - המשך לנגן לאחר הפרעות (למשל: שיחות טלפון) - הצג את העצה „החזק כדי להוסיף לרשימת נגינה” + להמשיך לנגן לאחר הפרעות (למשל: שיחות טלפון) + להציג את העצה „להחזיק כדי להוסיף לרשימת נגינה” להציג עצה בעת לחיצה על כפתור בנגן רקע או צף בעמוד פרטי סרטון נגן התנהגות @@ -122,7 +122,7 @@ רשימת נגינה רזולוציה מיטבית ביטול - נגן הכול + לנגן הכול התראה מ־NewPipe התראות עבור נגן הרקע והנגן הצף של NewPipe [לא ידוע] @@ -249,12 +249,12 @@ הסרה פרטים אפשרויות שמע - החזק כדי להוסיף לרשימת נגינה - הוסף לרשימת הנגינה ברקע + להחזיק כדי להוסיף לרשימת נגינה + להוסיף לרשימת הנגינה ברקע הוספה לתור בנגן צף חדש - התחל לנגן מכאן - התחל לנגן ברקע - להתחיל כאן בנגן הצף + להתחיל לנגן מכאן + להתחיל לנגן ברקע + להתחיל לנגן בנגן צף חדש הורדת קובץ הזרמה הצגת מידע רשימות נגינה מסומנות @@ -338,7 +338,7 @@ כיבוי האפשרות מונע את טעינת התמונות הממוזערות, חוסך בתקשורת נתונים ובניצולת הזיכרון. שינויים באפשרות זו מוחקים את המטמון בזיכרון ובכונן. הסרת כל נתוני העמודים שבמטמון הוספת התזרים הבא לרשימת הנגינה אוטומטית - הוסף אוטומטית תזרים דומה בעת נגינת התזרים האחרון בתור שאינו מחזורי + להוסיף אוטומטית תזרים דומה בעת נגינת התזרים האחרון בתור שאינו מחזורי החלפת כיווניות העברה לראשי משכתב את ההיסטוריה והמינויים הנוכחיים שלך @@ -393,7 +393,7 @@ מזעור בעת מעבר בין יישומונים הפעולה לביצוע בעת מעבר ליישומון אחר מנגן הווידאו הראשי — %s כלום - מזער לנגן הרקע + מזעור לנגן הרקע הקטנה לנגן צף ביטול מינוי לשונית חדשה From 33caad469000f45d5ec9e8d8cf26351849222e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Matuszewski?= Date: Sat, 14 Dec 2019 16:05:36 +0100 Subject: [PATCH 34/99] make main page tabs scrollable --- .../newpipe/fragments/MainFragment.java | 3 +- .../newpipe/views/ScrollableTabLayout.java | 83 +++++++++++++++++++ app/src/main/res/layout/fragment_main.xml | 3 +- 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java diff --git a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java index 720e0f216..88a4c9c63 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java @@ -30,6 +30,7 @@ import org.schabi.newpipe.settings.tabs.Tab; import org.schabi.newpipe.settings.tabs.TabsManager; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.ServiceHelper; +import org.schabi.newpipe.views.ScrollableTabLayout; import java.util.ArrayList; import java.util.List; @@ -37,7 +38,7 @@ import java.util.List; public class MainFragment extends BaseFragment implements TabLayout.OnTabSelectedListener { private ViewPager viewPager; private SelectedTabsPagerAdapter pagerAdapter; - private TabLayout tabLayout; + private ScrollableTabLayout tabLayout; private List tabsList = new ArrayList<>(); private TabsManager tabsManager; diff --git a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java new file mode 100644 index 000000000..88b108052 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java @@ -0,0 +1,83 @@ +package org.schabi.newpipe.views; + +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewTreeObserver.OnGlobalLayoutListener; + +import androidx.annotation.NonNull; + +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayout.Tab; + +/** + * A TabLayout that is scrollable when tabs exceed its width. + */ +public class ScrollableTabLayout extends TabLayout { + private static final String TAG = ScrollableTabLayout.class.getSimpleName(); + + public ScrollableTabLayout(Context context) { + super(context); + } + + public ScrollableTabLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + + setTabMode(TabLayout.MODE_FIXED); + resetMode(); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + resetMode(); + } + + @Override + public void addTab(@NonNull Tab tab, int position, boolean setSelected) { + super.addTab(tab, position, setSelected); + + resetMode(); + } + + @Override + public void removeTabAt(int position) { + super.removeTabAt(position); + + resetMode(); + } + + private void resetMode() { + if (getTabCount() == 0 || getTabAt(0).view == null) return; + setTabMode(TabLayout.MODE_FIXED); + + int layoutWidth = getWidth(); + int minimumWidth = ((View) getTabAt(0).view).getMinimumWidth(); + if (minimumWidth * getTabCount() > layoutWidth) { + setTabMode(TabLayout.MODE_SCROLLABLE); + return; + } + + int actualWidth = 0; + for (int i = 0; i < getTabCount(); ++i) { + if (getTabAt(i).view == null) return; + actualWidth += ((View) getTabAt(i).view).getWidth(); + if (actualWidth > layoutWidth) { + setTabMode(TabLayout.MODE_SCROLLABLE); + return; + } + } + } +} diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 85614342d..1a2455691 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -6,12 +6,13 @@ android:layout_height="match_parent"> - Date: Sun, 15 Dec 2019 12:41:19 +0100 Subject: [PATCH 35/99] hide main page tab selector with single tab --- .../org/schabi/newpipe/views/ScrollableTabLayout.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java index 88b108052..ffbb804af 100644 --- a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java +++ b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java @@ -14,6 +14,7 @@ import com.google.android.material.tabs.TabLayout.Tab; /** * A TabLayout that is scrollable when tabs exceed its width. + * Hides when there are less than 2 tabs. */ public class ScrollableTabLayout extends TabLayout { private static final String TAG = ScrollableTabLayout.class.getSimpleName(); @@ -60,6 +61,13 @@ public class ScrollableTabLayout extends TabLayout { } private void resetMode() { + if (getTabCount() < 2) { + setVisibility(View.GONE); + return; + } else { + setVisibility(View.VISIBLE); + } + if (getTabCount() == 0 || getTabAt(0).view == null) return; setTabMode(TabLayout.MODE_FIXED); From b674cfec241acfa6006c3b13fb419ff23dbc2a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Matuszewski?= Date: Mon, 16 Dec 2019 00:11:54 +0100 Subject: [PATCH 36/99] simplify ScrollableTabLayout tabs width checking --- .../newpipe/views/ScrollableTabLayout.java | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java index ffbb804af..40c021cec 100644 --- a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java +++ b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java @@ -25,18 +25,21 @@ public class ScrollableTabLayout extends TabLayout { public ScrollableTabLayout(Context context, AttributeSet attrs) { super(context, attrs); + setTabMode(TabLayout.MODE_FIXED); } public ScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + setTabMode(TabLayout.MODE_FIXED); } @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); - setTabMode(TabLayout.MODE_FIXED); - resetMode(); + if (changed) { + resetMode(); + } } @Override @@ -68,21 +71,15 @@ public class ScrollableTabLayout extends TabLayout { setVisibility(View.VISIBLE); } - if (getTabCount() == 0 || getTabAt(0).view == null) return; + int layoutWidth = getWidth(); + if (layoutWidth == 0) return; + setTabMode(TabLayout.MODE_FIXED); - int layoutWidth = getWidth(); - int minimumWidth = ((View) getTabAt(0).view).getMinimumWidth(); - if (minimumWidth * getTabCount() > layoutWidth) { - setTabMode(TabLayout.MODE_SCROLLABLE); - return; - } - - int actualWidth = 0; + int tabsRequestedWidth = 0; for (int i = 0; i < getTabCount(); ++i) { - if (getTabAt(i).view == null) return; - actualWidth += ((View) getTabAt(i).view).getWidth(); - if (actualWidth > layoutWidth) { + tabsRequestedWidth += ((View) getTabAt(i).view).getMinimumWidth(); + if (tabsRequestedWidth > layoutWidth) { setTabMode(TabLayout.MODE_SCROLLABLE); return; } From 1393d3ad7f3f44b6dc8afeefd5696617699bc09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Matuszewski?= Date: Tue, 17 Dec 2019 19:59:29 +0100 Subject: [PATCH 37/99] fix ScrollableTabLayout content width calculation fix bug where only minimum width requested by tab was counted even if actual content was wider --- .../newpipe/views/ScrollableTabLayout.java | 90 +++++++++++++------ 1 file changed, 65 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java index 40c021cec..6dd6411e1 100644 --- a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java +++ b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java @@ -5,7 +5,6 @@ import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.view.View; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; import androidx.annotation.NonNull; @@ -19,70 +18,111 @@ import com.google.android.material.tabs.TabLayout.Tab; public class ScrollableTabLayout extends TabLayout { private static final String TAG = ScrollableTabLayout.class.getSimpleName(); + private int layoutWidth = 0; + private int prevVisibility = View.GONE; + public ScrollableTabLayout(Context context) { super(context); } public ScrollableTabLayout(Context context, AttributeSet attrs) { super(context, attrs); - setTabMode(TabLayout.MODE_FIXED); } public ScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - setTabMode(TabLayout.MODE_FIXED); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); - if (changed) { - resetMode(); - } + remeasureTabs(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); - resetMode(); + layoutWidth = w; } @Override public void addTab(@NonNull Tab tab, int position, boolean setSelected) { super.addTab(tab, position, setSelected); - resetMode(); + hasMultipleTabs(); + + // Adding a tab won't decrease total tabs' width so tabMode won't have to change to FIXED + if (getTabMode() != MODE_SCROLLABLE) { + remeasureTabs(); + } } @Override public void removeTabAt(int position) { super.removeTabAt(position); - resetMode(); + hasMultipleTabs(); + + // Removing a tab won't increase total tabs' width so tabMode won't have to change to SCROLLABLE + if (getTabMode() != MODE_FIXED) { + remeasureTabs(); + } } - private void resetMode() { - if (getTabCount() < 2) { - setVisibility(View.GONE); - return; - } else { - setVisibility(View.VISIBLE); - } + @Override + protected void onVisibilityChanged(View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); - int layoutWidth = getWidth(); + // Recheck content width in case some tabs have been added or removed while ScrollableTabLayout was invisible + // We don't have to check if it was GONE because then requestLayout() will be called + if (changedView == this) { + if (prevVisibility == View.INVISIBLE) { + remeasureTabs(); + } + prevVisibility = visibility; + } + } + + private void setMode(int mode) { + if (mode == getTabMode()) return; + + setTabMode(mode); + } + + /** + * Make ScrollableTabLayout not visible if there are less than two tabs + */ + private void hasMultipleTabs() { + if (getTabCount() > 1) { + setVisibility(View.VISIBLE); + } else { + setVisibility(View.GONE); + } + } + + /** + * Calculate minimal width required by tabs and set tabMode accordingly + */ + private void remeasureTabs() { + if (getVisibility() != View.VISIBLE) return; if (layoutWidth == 0) return; - setTabMode(TabLayout.MODE_FIXED); - - int tabsRequestedWidth = 0; - for (int i = 0; i < getTabCount(); ++i) { - tabsRequestedWidth += ((View) getTabAt(i).view).getMinimumWidth(); - if (tabsRequestedWidth > layoutWidth) { - setTabMode(TabLayout.MODE_SCROLLABLE); - return; + final int count = getTabCount(); + int contentWidth = 0; + for (int i = 0; i < count; i++) { + View child = getTabAt(i).view; + if (child.getVisibility() == View.VISIBLE) { + // Use tab's minimum requested width should actual content be too small + contentWidth += Math.max(child.getMinimumWidth(), child.getMeasuredWidth()); } } + + if (contentWidth > layoutWidth) { + setMode(TabLayout.MODE_SCROLLABLE); + } else { + setMode(TabLayout.MODE_FIXED); + } } } From 3625a38a234ebf8a92f2ac05c562c4440248b5b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Matuszewski?= Date: Wed, 1 Jan 2020 14:12:45 +0100 Subject: [PATCH 38/99] improve code consistency in ScrollableTabLayout --- .../main/java/org/schabi/newpipe/views/ScrollableTabLayout.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java index 6dd6411e1..48327220a 100644 --- a/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java +++ b/app/src/main/java/org/schabi/newpipe/views/ScrollableTabLayout.java @@ -106,7 +106,7 @@ public class ScrollableTabLayout extends TabLayout { * Calculate minimal width required by tabs and set tabMode accordingly */ private void remeasureTabs() { - if (getVisibility() != View.VISIBLE) return; + if (prevVisibility != View.VISIBLE) return; if (layoutWidth == 0) return; final int count = getTabCount(); From f44883e79fbb3d20e45902d3cfd4c4875f86f165 Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 4 Oct 2019 21:47:01 +0300 Subject: [PATCH 39/99] Show video thumbnail on the lock screen --- .../newpipe/player/BackgroundPlayer.java | 61 ++++++++++++++----- .../player/helper/MediaSessionManager.java | 43 +++++++++++-- .../org/schabi/newpipe/util/BitmapUtils.java | 42 +++++++++++++ 3 files changed, 125 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index 90af3c29f..6486f4b03 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -25,6 +25,7 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; import android.os.IBinder; @@ -48,6 +49,7 @@ import org.schabi.newpipe.player.helper.LockManager; import org.schabi.newpipe.player.playqueue.PlayQueueItem; import org.schabi.newpipe.player.resolver.AudioPlaybackResolver; import org.schabi.newpipe.player.resolver.MediaSourceTag; +import org.schabi.newpipe.util.BitmapUtils; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.ThemeHelper; @@ -193,18 +195,37 @@ public final class BackgroundPlayer extends Service { setupNotification(notRemoteView); setupNotification(bigNotRemoteView); - NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)) - .setOngoing(true) - .setSmallIcon(R.drawable.ic_newpipe_triangle_white) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setCustomContentView(notRemoteView) - .setCustomBigContentView(bigNotRemoteView); + NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)); + builder.setOngoing(true); + builder.setSmallIcon(R.drawable.ic_newpipe_triangle_white); + builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); + builder.setCustomContentView(notRemoteView); + builder.setCustomBigContentView(bigNotRemoteView); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + basePlayerImpl.mediaSessionManager.setLockScreenArt( + builder, + getCenteredThumbnailBitmap() + ); + } + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { builder.setPriority(NotificationCompat.PRIORITY_MAX); } return builder; } + @Nullable + private Bitmap getCenteredThumbnailBitmap() { + int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels; + int screenHeight = Resources.getSystem().getDisplayMetrics().heightPixels; + + return BitmapUtils.centerCrop( + basePlayerImpl.getThumbnail(), + screenWidth, + screenHeight); + } + private void setupNotification(RemoteViews remoteViews) { if (basePlayerImpl == null) return; @@ -252,8 +273,10 @@ public final class BackgroundPlayer extends Service { //if (DEBUG) Log.d(TAG, "updateNotification() called with: drawableId = [" + drawableId + "]"); if (notBuilder == null) return; if (drawableId != -1) { - if (notRemoteView != null) notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); - if (bigNotRemoteView != null) bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); + if (notRemoteView != null) + notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); + if (bigNotRemoteView != null) + bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId); } notificationManager.notify(NOTIFICATION_ID, notBuilder.build()); timesNotificationUpdated++; @@ -280,7 +303,8 @@ public final class BackgroundPlayer extends Service { protected class BasePlayerImpl extends BasePlayer { - @NonNull final private AudioPlaybackResolver resolver; + @NonNull + final private AudioPlaybackResolver resolver; private int cachedDuration; private String cachedDurationString; @@ -299,8 +323,10 @@ public final class BackgroundPlayer extends Service { super.handleIntent(intent); resetNotification(); - if (bigNotRemoteView != null) bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); - if (notRemoteView != null) notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); + if (bigNotRemoteView != null) + bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); + if (notRemoteView != null) + notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false); startForeground(NOTIFICATION_ID, notBuilder.build()); } @@ -335,6 +361,7 @@ public final class BackgroundPlayer extends Service { updateNotificationThumbnail(); updateNotification(-1); } + /*////////////////////////////////////////////////////////////////////////// // States Implementation //////////////////////////////////////////////////////////////////////////*/ @@ -358,10 +385,12 @@ public final class BackgroundPlayer extends Service { if (!shouldUpdateOnProgress) return; if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) { resetNotification(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) updateNotificationThumbnail(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) + updateNotificationThumbnail(); } + if (bigNotRemoteView != null) { - if(cachedDuration != duration) { + if (cachedDuration != duration) { cachedDuration = duration; cachedDurationString = getTimeString(duration); } @@ -389,8 +418,10 @@ public final class BackgroundPlayer extends Service { @Override public void destroy() { super.destroy(); - if (notRemoteView != null) notRemoteView.setImageViewBitmap(R.id.notificationCover, null); - if (bigNotRemoteView != null) bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null); + if (notRemoteView != null) + notRemoteView.setImageViewBitmap(R.id.notificationCover, null); + if (bigNotRemoteView != null) + bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null); } /*////////////////////////////////////////////////////////////////////////// diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index a5c703837..ec53e72fe 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -2,12 +2,18 @@ package org.schabi.newpipe.player.helper; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.media.MediaMetadata; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.RequiresApi; +import android.support.v4.app.NotificationCompat; +import android.support.v4.media.MediaMetadataCompat; +import android.support.v4.media.session.MediaButtonReceiver; import android.support.v4.media.session.MediaSessionCompat; import android.view.KeyEvent; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.media.session.MediaButtonReceiver; +import android.support.v4.media.app.NotificationCompat.MediaStyle; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector; @@ -40,13 +46,38 @@ public class MediaSessionManager { return MediaButtonReceiver.handleIntent(mediaSession, intent); } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public void setLockScreenArt( + NotificationCompat.Builder builder, + @Nullable Bitmap thumbnailBitmap + ) { + if (thumbnailBitmap == null) { + return; + } + + if (!mediaSession.isActive()) { + return; + } + + mediaSession.setMetadata( + new MediaMetadataCompat.Builder() + .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, thumbnailBitmap) + .build() + ); + + MediaStyle mediaStyle = new MediaStyle() + .setMediaSession(mediaSession.getSessionToken()); + + builder.setStyle(mediaStyle); + } + /** * Should be called on player destruction to prevent leakage. - * */ + */ public void dispose() { this.sessionConnector.setPlayer(null); this.sessionConnector.setQueueNavigator(null); this.mediaSession.setActive(false); this.mediaSession.release(); - } + } } diff --git a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java new file mode 100644 index 000000000..2dac94912 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java @@ -0,0 +1,42 @@ +package org.schabi.newpipe.util; + +import android.graphics.Bitmap; +import android.support.annotation.Nullable; + +public class BitmapUtils { + + @Nullable + public static Bitmap centerCrop(Bitmap inputBitmap, int newWidth, int newHeight) { + if (inputBitmap == null || inputBitmap.isRecycled()) { + return null; + } + + float sourceWidth = inputBitmap.getWidth(); + float sourceHeight = inputBitmap.getHeight(); + + float xScale = newWidth / sourceWidth; + float yScale = newHeight / sourceHeight; + + float newXScale; + float newYScale; + + if (yScale > xScale) { + newXScale = (1.0f / yScale) * xScale; + newYScale = 1.0f; + } else { + newXScale = 1.0f; + newYScale = (1.0f / xScale) * yScale; + } + + float scaledWidth = newXScale * sourceWidth; + float scaledHeight = newYScale * sourceHeight; + + int left = (int) ((sourceWidth - scaledWidth) / 2); + int top = (int) ((sourceHeight - scaledHeight) / 2); + int width = (int) scaledWidth; + int height = (int) scaledHeight; + + return Bitmap.createBitmap(inputBitmap, left, top, width, height); + } + +} From 96de70b71e62cb70339a6185e6b53f4a31f8f5d3 Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 8 Nov 2019 20:47:42 +0300 Subject: [PATCH 40/99] Rebase onto the latest dev, update appcompat dependencies to use androidx --- .../player/helper/MediaSessionManager.java | 21 +++++++++++-------- .../org/schabi/newpipe/util/BitmapUtils.java | 3 ++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index ec53e72fe..b75ddb706 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -5,15 +5,16 @@ import android.content.Intent; import android.graphics.Bitmap; import android.media.MediaMetadata; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; -import android.support.v4.app.NotificationCompat; import android.support.v4.media.MediaMetadataCompat; -import android.support.v4.media.session.MediaButtonReceiver; import android.support.v4.media.session.MediaSessionCompat; import android.view.KeyEvent; -import android.support.v4.media.app.NotificationCompat.MediaStyle; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.core.app.NotificationCompat; +import androidx.media.session.MediaButtonReceiver; +import androidx.media.app.NotificationCompat.MediaStyle; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector; @@ -25,8 +26,10 @@ import org.schabi.newpipe.player.mediasession.PlayQueuePlaybackController; public class MediaSessionManager { private static final String TAG = "MediaSessionManager"; - @NonNull private final MediaSessionCompat mediaSession; - @NonNull private final MediaSessionConnector sessionConnector; + @NonNull + private final MediaSessionCompat mediaSession; + @NonNull + private final MediaSessionConnector sessionConnector; public MediaSessionManager(@NonNull final Context context, @NonNull final Player player, @@ -72,7 +75,7 @@ public class MediaSessionManager { } /** - * Should be called on player destruction to prevent leakage. + * Should be called on player destruction to prevent leakage.BitmapUtils */ public void dispose() { this.sessionConnector.setPlayer(null); diff --git a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java index 2dac94912..a0e7de4ac 100644 --- a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java @@ -1,7 +1,8 @@ package org.schabi.newpipe.util; import android.graphics.Bitmap; -import android.support.annotation.Nullable; + +import androidx.annotation.Nullable; public class BitmapUtils { From 0395dc6e9e81e04aee8bb420383401832193054f Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Thu, 28 Nov 2019 21:46:37 +0300 Subject: [PATCH 41/99] Add a setting for the lock screen thumbnail feature --- .../newpipe/player/BackgroundPlayer.java | 28 ++++++++++++++++--- .../player/helper/MediaSessionManager.java | 14 ++++++++++ app/src/main/res/values/settings_keys.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/video_audio_settings.xml | 7 +++++ 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index 6486f4b03..cbcd702f4 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -25,13 +25,17 @@ import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Build; import android.os.IBinder; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.core.app.NotificationCompat; + +import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.RemoteViews; @@ -77,6 +81,7 @@ public final class BackgroundPlayer extends Service { private BasePlayerImpl basePlayerImpl; private LockManager lockManager; + private SharedPreferences sharedPreferences; /*////////////////////////////////////////////////////////////////////////// // Service-Activity Binder @@ -109,6 +114,7 @@ public final class BackgroundPlayer extends Service { if (DEBUG) Log.d(TAG, "onCreate() called"); notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)); lockManager = new LockManager(this); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); ThemeHelper.setTheme(this); basePlayerImpl = new BasePlayerImpl(this); @@ -203,10 +209,7 @@ public final class BackgroundPlayer extends Service { builder.setCustomBigContentView(bigNotRemoteView); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - basePlayerImpl.mediaSessionManager.setLockScreenArt( - builder, - getCenteredThumbnailBitmap() - ); + setLockScreenThumbnail(builder); } if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { @@ -215,6 +218,23 @@ public final class BackgroundPlayer extends Service { return builder; } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + private void setLockScreenThumbnail(NotificationCompat.Builder builder) { + boolean isLockScreenThumbnailEnabled = sharedPreferences.getBoolean( + getString(R.string.enable_lock_screen_video_thumbnail_key), + true + ); + + if (isLockScreenThumbnailEnabled) { + basePlayerImpl.mediaSessionManager.setLockScreenArt( + builder, + getCenteredThumbnailBitmap() + ); + } else { + basePlayerImpl.mediaSessionManager.clearLockScreenArt(builder); + } + } + @Nullable private Bitmap getCenteredThumbnailBitmap() { int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels; diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index b75ddb706..64022e39c 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -74,6 +74,20 @@ public class MediaSessionManager { builder.setStyle(mediaStyle); } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + public void clearLockScreenArt(NotificationCompat.Builder builder) { + mediaSession.setMetadata( + new MediaMetadataCompat.Builder() + .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, null) + .build() + ); + + MediaStyle mediaStyle = new MediaStyle() + .setMediaSession(mediaSession.getSessionToken()); + + builder.setStyle(mediaStyle); + } + /** * Should be called on player destruction to prevent leakage.BitmapUtils */ diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 6aaaa0630..4813833d1 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -175,6 +175,7 @@ main_page_content enable_playback_resume enable_playback_state_lists + enable_lock_screen_video_thumbnail import_data export_data diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6021df15e..a296e2db7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,7 +58,9 @@ Kore app not found. Install it? org.xbmc.kore Show \"Play with Kodi\" option + Enable lock screen video thumbnail Display an option to play a video via Kodi media center + When using the background player a video thumbnail will be displayed on the lock screen Audio Default audio format Default video format diff --git a/app/src/main/res/xml/video_audio_settings.xml b/app/src/main/res/xml/video_audio_settings.xml index 0ff43ce90..ddf85811a 100644 --- a/app/src/main/res/xml/video_audio_settings.xml +++ b/app/src/main/res/xml/video_audio_settings.xml @@ -81,6 +81,13 @@ android:summary="@string/show_play_with_kodi_summary" android:title="@string/show_play_with_kodi_title"/> + + Date: Wed, 1 Jan 2020 17:18:58 +0100 Subject: [PATCH 42/99] Enable lockscreen video thumbnail by default --- .../org/schabi/newpipe/player/helper/MediaSessionManager.java | 2 +- app/src/main/res/xml/video_audio_settings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index 64022e39c..51684f506 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -89,7 +89,7 @@ public class MediaSessionManager { } /** - * Should be called on player destruction to prevent leakage.BitmapUtils + * Should be called on player destruction to prevent leakage. */ public void dispose() { this.sessionConnector.setPlayer(null); diff --git a/app/src/main/res/xml/video_audio_settings.xml b/app/src/main/res/xml/video_audio_settings.xml index ddf85811a..d1757919b 100644 --- a/app/src/main/res/xml/video_audio_settings.xml +++ b/app/src/main/res/xml/video_audio_settings.xml @@ -83,7 +83,7 @@ From 718acb505930e4a7d2dbd7b3840b73677f5512bb Mon Sep 17 00:00:00 2001 From: TobiGr Date: Thu, 2 Jan 2020 15:00:22 +0100 Subject: [PATCH 43/99] Code improvements --- .../newpipe/player/helper/MediaSessionManager.java | 11 ++--------- .../java/org/schabi/newpipe/util/BitmapUtils.java | 4 ++-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index 51684f506..8b9369613 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -50,15 +50,8 @@ public class MediaSessionManager { } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - public void setLockScreenArt( - NotificationCompat.Builder builder, - @Nullable Bitmap thumbnailBitmap - ) { - if (thumbnailBitmap == null) { - return; - } - - if (!mediaSession.isActive()) { + public void setLockScreenArt(NotificationCompat.Builder builder, @Nullable Bitmap thumbnailBitmap) { + if (thumbnailBitmap == null || !mediaSession.isActive()) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java index a0e7de4ac..7ad71eb5c 100644 --- a/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/BitmapUtils.java @@ -22,11 +22,11 @@ public class BitmapUtils { float newYScale; if (yScale > xScale) { - newXScale = (1.0f / yScale) * xScale; + newXScale = xScale / yScale; newYScale = 1.0f; } else { newXScale = 1.0f; - newYScale = (1.0f / xScale) * yScale; + newYScale = yScale / xScale; } float scaledWidth = newXScale * sourceWidth; From c46a0f7b2ebd9fbe73c3bc33c5b62ae64c529a23 Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 3 Jan 2020 13:00:53 +0300 Subject: [PATCH 44/99] Code-review changes --- .../org/schabi/newpipe/player/BackgroundPlayer.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index f36e352a6..9e896b14f 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -201,12 +201,12 @@ public final class BackgroundPlayer extends Service { setupNotification(notRemoteView); setupNotification(bigNotRemoteView); - NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)); - builder.setOngoing(true); - builder.setSmallIcon(R.drawable.ic_newpipe_triangle_white); - builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); - builder.setCustomContentView(notRemoteView); - builder.setCustomBigContentView(bigNotRemoteView); + NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getString(R.string.notification_channel_id)) + .setOngoing(true) + .setSmallIcon(R.drawable.ic_newpipe_triangle_white) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setCustomContentView(notRemoteView) + .setCustomBigContentView(bigNotRemoteView); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setLockScreenThumbnail(builder); From eb5fb42da9776149db8c882cf16a4da4f8531c9f Mon Sep 17 00:00:00 2001 From: k1rakishou Date: Fri, 3 Jan 2020 16:29:04 +0300 Subject: [PATCH 45/99] Couple more code review changes --- .../org/schabi/newpipe/player/BackgroundPlayer.java | 10 +++++++--- .../newpipe/player/helper/MediaSessionManager.java | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java index 9e896b14f..76da7da36 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java @@ -403,9 +403,13 @@ public final class BackgroundPlayer extends Service { updateProgress(currentProgress, duration, bufferPercent); if (!shouldUpdateOnProgress) return; - if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) {resetNotification(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) - updateNotificationThumbnail();} + if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) { + resetNotification(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) { + updateNotificationThumbnail(); + } + } if (bigNotRemoteView != null) { if (cachedDuration != duration) { cachedDuration = duration; diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java index 9134d6144..8b9369613 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/MediaSessionManager.java @@ -82,7 +82,7 @@ public class MediaSessionManager { } /** - * Should be called on player destruction to prevent leakage.BitmapUtils + * Should be called on player destruction to prevent leakage. */ public void dispose() { this.sessionConnector.setPlayer(null); From 014682664d46f09b7c9a4b4312d16303c2ffee04 Mon Sep 17 00:00:00 2001 From: ssantos Date: Thu, 2 Jan 2020 07:38:24 +0000 Subject: [PATCH 46/99] Translated using Weblate (German) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-de/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e16d7d69b..17c2e55d0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -529,4 +529,8 @@ Wähle eine Instanz Bevorzugte Peertube-Instanzen festlegen Es werden nur https-Adressen unterstützt + Dauer der Suche bei schnellem Vor-/Zurückspulen + Am beliebtesten + Wiederherstellen + Dieser Download kann nicht wiederhergestellt werden \ No newline at end of file From f17b92512c7713e414bb364f0ea2fa722875561d Mon Sep 17 00:00:00 2001 From: THANOS SIOURDAKIS Date: Wed, 1 Jan 2020 18:36:11 +0000 Subject: [PATCH 47/99] Translated using Weblate (Greek) Currently translated at 97.9% (511 of 522 strings) --- app/src/main/res/values-el/strings.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 142813119..dd6643755 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -206,7 +206,7 @@ Λυπούμαστε, αυτό δεν έπρεπε να έχει συμβεί. Αναφορά σφάλματος με ηλεκτρονικό ταχυδρομίο Λυπούμαστε, συνέβησαν κάποια σφάλματα. - What:\\nΑίτημα:\\nΓλώσσα περιεχομένου:\\nΥπηρεσία:\\nΏρα GMT:\\nΠακέτο:\\nΈκδοση:\\nΈκδοση λειτουργικού: + Τι:\\nΑίτημα:\\nΓλώσσα περιεχομένου:\\nΥπηρεσία:\\nΏρα GMT:\\nΠακέτο:\\nΈκδοση:\\nΈκδοση λειτουργικού συστήματος: Αναφορά χρήστη Κανένα αποτέλεσμα Δεν υπάρχει τίποτα εδώ @@ -516,4 +516,10 @@ Η γλώσσα θα αλλάξει μόλις θα επανεκκινηθεί η εφαρμογή. Προεπιλεγμένο περίπτερο + Υποστηρίζονται μόνο διευθύνσεις URL HTTPS + Τοπικό + Προστέθηκε πρόσφατα + Δημιουργήθηκε αυτόματα (δεν βρέθηκε χρήστης μεταφόρτωσης) + Ανάκτηση + Δεν είναι δυνατή η ανάκτηση αυτής της λήψης \ No newline at end of file From 21895caa3a94e5743f1974bfd342f16bc61decf3 Mon Sep 17 00:00:00 2001 From: B0pol Date: Wed, 1 Jan 2020 22:05:58 +0000 Subject: [PATCH 48/99] Translated using Weblate (Esperanto) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-eo/strings.xml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index c14195276..784357da3 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -61,7 +61,7 @@ Signali eraron per retpoŝto SIGNALI Informoj: - Via komento (en la angla): + Via komento (angle): Detaloj: Signali eraron Filmeto @@ -80,7 +80,7 @@ Montri informojn Ĉefa Abonoj - Legosigno + Konservitaj ludlistoj Kio novas Fono Ŝprucfenestro @@ -516,4 +516,20 @@ %s aŭskultantoj La lingvo ŝanĝos kiam la apo restartos. + Rapida antaŭen / posten daŭron + Instancoj de PeerTube + Registri viajn preferitajn instancojn de PeerTube + Trovu la instancojn kiu vi povus ŝati ĉe https://joinpeertube.org/instances#instances-list + Aldoni instanco + Eniri la ligilon de la instanco + Malsukcesis validigi instanco + Nur https ligiloj estas subtenitaj + La instanco jam ekzistas + Loka + Freŝdate ĝisdatigita + La plej ŝatitatj + Aŭtomate generita (neniu alŝutilo trovita) + Reakiranta + Ne povas reakiri tion elŝuton + Elektu instancon \ No newline at end of file From 8fb29ae6c29139b45ec08c89edb5c4cd7a9d9a0a Mon Sep 17 00:00:00 2001 From: Osoitz Date: Thu, 2 Jan 2020 04:55:59 +0000 Subject: [PATCH 49/99] Translated using Weblate (Basque) Currently translated at 99.8% (521 of 522 strings) --- app/src/main/res/values-eu/strings.xml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index adf7d6720..2233c42ba 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -500,13 +500,13 @@ Aldatu deskargen karpetak indarrean jartzeko Ez dago inor ikusten - %s ikusten - %s ikusten + ikusle %s + %s ikusle Ez dago inor entzuten - %s entzuten - %s entzuten + entzule %s + %s entzule SAF erabili Biltegian Sartzeko Armazoiak kanpoko SD txartel betera jaitsierak egitea ahalbidetzen du. @@ -517,4 +517,20 @@ Aktibatu zerbitzua, orain hautatua: Hizkuntza aldatuko da aplikazioa berrabiarazterakoan. Kiosko Lehenetsia + Aurreratze/atzeratze bilaketaren iraupena + PeerTube instantziak + Ezarri zure gogoko peertube instantziak + Aurkitu instantziak hemen: https://joinpeertube.org/instances#instances-list + Gehitu instantzia + Sartu instantziaren URLa + Huts egin du instantzia balioztatzean + https URLak onartzen dira soilik + Instantzia badago aurretik + Lokala + Berriki gehitua + Gogokoenak + Automatikoki sortua (igotzailea ez da aurkitu) + berreskuratzen + Ezin da deskarga hau berreskuratu + Aukeratu instantzia \ No newline at end of file From 21a39b06e7df69fd8fbf702e76f15f2df1366252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 2 Jan 2020 08:35:14 +0000 Subject: [PATCH 50/99] Translated using Weblate (Ukrainian) Currently translated at 98.1% (512 of 522 strings) --- app/src/main/res/values-uk/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index ff9907890..6aea1ad79 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -522,4 +522,10 @@ %s слухачів Мова зміниться після перезапуску програми. + Швидке перемотування + Не вдалося перевірити екземпляр + Оберіть ваш улюблений екземпляр peertube. + Знайдіть екземпляри, які найбільше підходять вам на https://joinpeertube.org/instance#instance-list + Додати екземпляр + Введіть посилання на екземпляр \ No newline at end of file From 28063c35c29f6aaa71a4a5f030f77df9a4c1f628 Mon Sep 17 00:00:00 2001 From: Enol P Date: Fri, 3 Jan 2020 14:24:55 +0000 Subject: [PATCH 51/99] Translated using Weblate (Asturian) Currently translated at 49.2% (257 of 522 strings) --- app/src/main/res/values-b+ast/strings.xml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml index 4ea5dae26..08b22c616 100644 --- a/app/src/main/res/values-b+ast/strings.xml +++ b/app/src/main/res/values-b+ast/strings.xml @@ -206,7 +206,7 @@ Sotítulos Aceutar ¿Quies reafitar los valores\? - + El sirvidor nun aceuta descargues multifilu, volvi probar con @string/msg_threads = 1 Nun hai comentarios Llimpieza de datos @@ -243,4 +243,18 @@ Siguir cola reproducción Les llingüetes que s\'amuesen na páxina principal Entrugar ánde baxar - + Descargues + Descargues + + Vídeos + + + Control per xestos del reproductor + Cargando\'l conteníu solicitáu + Política de Privacidá de NewPipe + Control per xestos del volume + Control per xestos del brilléu + El ficheru nun pue crease + El sirvidor nun unvia datos + La llingua va camudar namái que se reanicie l\'aplicación. + \ No newline at end of file From 23f9ffdab718ee9a044a41b3e3a47970fbf3af85 Mon Sep 17 00:00:00 2001 From: ssantos Date: Fri, 3 Jan 2020 22:19:09 +0000 Subject: [PATCH 52/99] Translated using Weblate (Portuguese) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-pt/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c26c57aad..4bf692801 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -516,4 +516,20 @@ %s ouvintes O idioma mudará quando a app for reiniciada. + Duração da busca de avanço/retrocesso rápido + Instâncias do PeerTube + Defina as suas instâncias favoritas de peertube + Encontre as instâncias que lhe melhor convêm em https://joinpeertube.org/instances#instances-list + Adicionar instância + Digite o URL da instância + Falha ao validar a instância + Somente URLs HTTPS são suportadas + A instância já existe + Local + Recentemente adicionado + Os mais apreciados + Geração automática (não foi encontrado nenhum enviador) + recuperando + Não é possível recuperar este descarregamento + Escolha uma instância \ No newline at end of file From db87df743df00dfcb5e8a7b2e0b5aaecf16cd27b Mon Sep 17 00:00:00 2001 From: pietrasagh Date: Sat, 4 Jan 2020 13:13:50 +0000 Subject: [PATCH 53/99] Translated using Weblate (Polish) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-pl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 0b52d3c79..75ce1029d 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -523,7 +523,7 @@ %s słuchaczy Język zmieni się po ponownym uruchomieniu aplikacji. - Szybkie przewijanie do przodu/do tyłu szukaj czasu trwania + Krok czasu przewijania Wystąpienia PeerTube Ustaw swoje ulubione instancje peertube Znajdź instancje, które najbardziej Ci odpowiadają, na https://joinpeertube.org/instances#instances-list From e2ec95e6ffa305de0f1689a679cc3339c6d14d9c Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Thu, 2 Jan 2020 17:04:44 +0000 Subject: [PATCH 54/99] Translated using Weblate (Interlingua) Currently translated at 10.9% (57 of 522 strings) --- app/src/main/res/values-ia/strings.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 1d053a370..981724304 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -24,4 +24,12 @@ Dossier de discarga de video Selige le dossier de discarga pro files de video Dossier de discarga de audio + Cancellar + Subscriber + Selige le dossier de discarga pro files de audio + Thema + Monstrar le commentos + Initiar discargas + Pausar le discargas + Seliger un instantia \ No newline at end of file From 2ea404659bd0e0534fc4d2f84474886625f2fe3f Mon Sep 17 00:00:00 2001 From: JoC Date: Sat, 4 Jan 2020 15:38:24 +0000 Subject: [PATCH 55/99] Translated using Weblate (Spanish) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-es/strings.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 5691c2ab6..eacda9f4a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -518,4 +518,18 @@ %s escuchas El idioma cambiará luego de que la app sea reiniciada. + Duración de búsqueda al avanzar y/o retroceder + Instancias de PeerTube + Elige tus instancias favoritas de PeerTube + Encuentra las mejores instancias para ti en https://joinpeertube.org/instances#instances-list + Agregar instancia + Dirección URL de la instancia + Error al validar la instancia + Sólo URLs con HTTPS + La instancia ya existe + Local + Agregados recientemente + Más gustados + Generado automáticamente (no se encontró creador) + Elige una instancia \ No newline at end of file From 594d77e713440515373707baea3e40976547be66 Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Fri, 3 Jan 2020 17:20:48 +0000 Subject: [PATCH 56/99] Translated using Weblate (Kurdish) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-ku/strings.xml | 145 +++++++++++++------------ 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index da2c3aa21..938175f71 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -95,16 +95,16 @@ کارپێکردن لە پەنجەرەی بچووک ڕیزکرا لە کارپێکردن لە پاشبنەما ڕیزکرا لە کارپێکردن لە پەنجەرەی بچووک - لێدان + کارپێکردن ناوەڕۆک سنوردانانی تەمەن - ڕاستەوخۆ + زیندو داگرتنەکان داگرتنەکان ناتوانرێ سکاڵابکرێ هەمووی کەناڵ - لیستی ڤیدیۆ + لیستی کارپێکردن بەڵێ دواتر ناچالاککراوە @@ -114,34 +114,34 @@ قەبارە دانانەوە باشترین قەبارە گەڕانەوە - لێدانی هەمووی + کارپێکردنی هەمووی هەمیشە تەنها ئێستا فایل - ئاگانامەکانی ئەپ - ئاگانامەکانی ئەپەکە بۆ پاشبنەما و لێدانەکانی پەنجەرەی بچووک + ئاگانامەکانی NewPipe + ئاگانامەکانی NewPipe بۆ پاشبنەما و کارپێکردنەکانی پەنجەرەی بچووک (نەزانراو) چەسپاندنی لاربوونەوە گۆڕین بۆ پاشبنەما گۆڕین بۆ پەنجەرەی بچووک گۆڕین بۆ سەرەکی - هێنانی داتابەیس - دەرکردنی داتابەیس - جێگەی مێژوو و بەشداربووەکانی ئێستات دەگرێتەوە - زەخیرەکردنی مێژوو و بەشداربوون و لیستەکان + هێنانەوەی بنکەی زانیاریەکان + دەرکردنی بنکەی زانیارییەکان + لەسەر مێژوو و بەشداربووەکانی ئێستات جێگیردەبێت + خەزنکردنی مێژوو و بەشداربوون و لیستەکان هەڵەیەک ڕوویدا کێشە لە هێڵەکەتدا هەیە ناتوانرێ هەموو وێنۆچکەکان باربکرێن - ناتوانرێ وێبسایت شیبکرێتەوە - ناتوانرێ وێبسایت بەتەواوی شیبکرێتەوە + ناتوانرێ ماڵپەڕ شیبکرێتەوە + ناتوانرێ ماڵپەڕ بەتەواوی شیبکرێتەوە ناوەڕۆک بوونی نییە ناتوانرێ لیستی داگرتن دابنرێ پەخشی ڕاستەوخۆ پشتگیری ناکرێ لەئێستادا هیچ پەخشێ نەدۆزرایەوە ناتوانرێ وێنە باربکرێ - ئەپ کڕاشبوو + ئەپ/ڕووکار ڕاوەستا ناتوانرێ ئەم پەخشە لێبدرێ - لێدەرە ڤیدیۆییە دەرەکییەکان پشتگیری ئەم جۆرە بەستەرانە ناکەن + کارپێکەرە ڤیدیۆییە دەرەکییەکان پشتگیری ئەم جۆرە بەستەرانە ناکەن بەستەر هەڵەیە هیچ پەخشێکی ڤیدیۆیی نەدۆزرایەوە پەخشی هیچ دەنگێک نەدۆزرایەوە @@ -157,7 +157,7 @@ لێدوانەکەت (بە ئینگلیزی): وردەکارییەکان: وێنۆچکەی پیشاندانی ڤیدیۆ - ماوەی لێدانی ڤیدیۆ: + کارپێکردنی ڤیدیۆ، ماوەی: وێنۆچکەی کەسی بەرزکەرەوە بەدڵبوون بەدڵنەبوون @@ -183,32 +183,32 @@ هیچ بینراوێک نییە - %s بینراو - %s بینرااو + %s بینرااو + %s بینراو هیچ ڤیدیۆیەک نییە - ڤیدیۆکان - + ڤیدیۆ + ڤیدیۆکان دەستپێکردن ڕاگرتن - لێدان + کارپێکردن دروستکردن سڕینەوە - سڕینەوەی یەکیان + سڕینەوەی یەک دانە سڕینەوەی هەمووی تاقیکردنەوەی هێڵێک ڕێپێنەدان دانانەوەی ناو - فرمانی نوێ + ئەرکی نوێ باشە ناوی فایل دابەشکراوەکان کێشە ڕوویدا سێرڤەر پشتگیرینەکراوە فایل بوونی هەیە - داگرتنەکانی ئەپ + داگرتنەکانی NewPipe گرتەبکە بۆ وردەکاری تکایە چاوەڕێبکە… لەبەرگیرایەوە @@ -217,28 +217,28 @@ \nکردنەوەی پەنجەرەی بچووک reCAPTCHA reCAPTCHA داواکاری - reCAPTCHA challenge requested + reCAPTCHA داواکراوە داگرتن پیت و ژمارەکان - کارەکتەرە تایبەتییەکان - دەربارەی ئەپ + هێما تایبەتییەکان + دەربارەی NewPipe ڕێکخستنەکان دەربارە © %1$s لەلایەن %2$s لەژێر %3$s ناتوانرێ مۆڵەت باربکرێ - کردنەوەی وێبسایت + کردنەوەی ماڵپەڕ دەربارە هاوبەشەکان مۆڵەتەکان هاوبەشبوون - Whether you have ideas of; translation, design changes, code cleaning, or real heavy code changes—help is always welcome. The more is done the better it gets! - View on GitHub + هەرکاتێ بیرۆکەیەکت هەبوو وەک ; وەرگێڕان، گۆڕینی دیزاین ، سڕینەوەی کۆد ،یان هەر گۆڕانکارییەکیتر ئەوا یارمەتییەکەت لەسەرچاوانمانە. ئێمە هەمیشە دەمانەوێ ئەپەکە زیاتر بەرەوپێش ببەین! + بینین لە GitHub بەخشین - NewPipe is developed by volunteers spending time bringing you the best experience. Give back to help developers make NewPipe even better while enjoying a cup of coffee. + ئەم ئەپە لەلایەن چەند خۆبەخشێکەوە دروستکراوە کەکاتی خۆیان پێ بەخشیووە تاکو باشترین خزمەتگوزاریت پێشکەش بکەن. هیچ نەبێت بە کڕینی کوپێک قاوە یارمەتی گەشەپێدەرەکانمان بدە بۆ ئەوەی کاتی زیاتر تەرخان بکەین بۆ بەرەوپێشبردنی NewPipe. پێدانەوە - وێبسایت - سەردانی وێبسایتی NewPipe بکە بۆ زانیاری و هەواڵی نوێ. - Read license + ماڵپەڕ + سەردانی ماڵپەڕی NewPipe بکە بۆ زانیاری و هەواڵی نوێ. + خوێندنەوەی مۆڵەتنامە مێژوو گەڕا تەماشاکراوە @@ -250,10 +250,10 @@ ئایا دەتەوێ ئەم بابەتە لە مێژووی گەڕان بسڕدرێتەوە؟ ئایا دەتەوێ ئەم بابەتە لە مێژووی تەماشاکردن بسڕدرێتەوە؟ ئایا دڵنیای لە سڕینەوەی هەموو بابەتەکان لە مێژوودا؟ - دواین لێدراو - زۆرترین لێدان + دواین کارپێکراو + زۆرترین کارپێکردن ناوەڕۆکی پەڕەی سەرەکی - لێدانی پەنجەرەی بچووک + کارپێکەری پەنجەرەی بچووک لادان وردەکارییەکان ڕێکخستنەکانی دەنگ @@ -261,9 +261,9 @@ دەستپێکردنی لێدان لە پاشبنەماوە دەستپێکردنی لێدان لە پەنجەرەی بچووکەوە بەمزووانە شتێک لێرەدا دەردەکەوێ :D - لێدەری ڤیدیۆیی - لێدەری پاشبنەما - لێدەری پەنجەرەی بچووک + کارپێکەری ڤیدیۆیی + کارپێکەری پاشبنەما + کارپێکەری پەنجەرەی بچووک هەمیشە بپرسە دەستکەوتنی زانیاری… بارکردنی ناوەڕۆکی داواکراو @@ -284,10 +284,10 @@ گونجاو بە ڕونما پڕ بە ڕونما هێنانەپێش - خۆکاری دانرا + دانانی خۆکاری چالاککردنی LeakCanary سکاڵا لەسەر کێشەکان - Force reporting of undeliverable Rx exceptions outside of fragment or activity lifecycle after disposal + سکاڵاکردن لەسەر نەگەیاندنی Rx ی پەسەندنەکرا لە دەرەوەی پارچە یان چالاکی لەدوای پوختەکردن هێنانەوە/خەزنکردن هێنانەوە هێنانەوە لە @@ -303,13 +303,13 @@ \n1. ئەم بەستەرە بکەوە: %1$ \n2. بچۆرەژوورەوە گەر داوای‌ کرد \n3. داگرتنێک دەست پێدەکات (ئەمە فایلی خەزنکراوە) - Import a SoundCloud profile by typing either the URL or your ID: + هێنانەوەی پەڕەی کەسی SoundCloud بەدانانی بەستەر یاخوود ئایدی: \n -\n1. Enable \"desktop mode\" in a web-browser (the site is not available for mobile devices) -\n2. Go to this URL: %1$s -\n3. Log in when asked -\n4. Copy the profile URL you were redirected to. - yourID, soundcloud.com/yourid +\n1. دۆخی ”Desktop mode” لە وێبگەرەکەتدا چالاک بکە (ئەم ماڵپەڕە بۆ وێبگەری مۆبایلەکان بەردەست نییە) +\n2. ئەم بەستەرە بکەرەوە : %1$s +\n3. بچۆرە ژوورەوە گەر داواکرا +\n4. بەستەری پەڕەی کەسییەکەت دابنێ. + ئایدییەکەت , soundcloud.com/yourid ئەوە بزانە ئەم کردارە پێویستی بە هێڵێکی گران هەیە. \n \nدەتەوێ بەردەوامبیت؟ @@ -320,22 +320,23 @@ هیچ پەخشێک نییە بۆ داگرتن ژێرنووس بەهۆی گۆڕانکاری لە شێوەی ژێرنووسکردنەکە. پێویستە ئەپەکە دابخەیت و دیسانەوە بیکەیتەوە. - هیچ ئەپێک دانەمەزراوە بۆ لێدانی ئەم فایلە - سڕینەوەی مێژوو - مێژوو دەسڕێتەوە لەگەڵ ڤیدیۆ لێدراوەکان و شوێنی لیستە ڤیدیۆییەکان - سڕینەوەی تەواوی مێژوو؟ + هیچ ئەپێک دانەمەزراوە بۆ کارپێکردنی ئەم فایلە + سڕینەوەی مێژووی تەماشاکردن + مێژوو دەسڕێتەوە لەگەڵ ڤیدیۆ کارپێکراوەکان و شوێنی لیستە ڤیدیۆییەکان + سڕینەوەی تەواوی مێژووی تەماشاکردن؟ سڕینەوەی مێژووی گەڕان مێژووی گەڕانەکانت دەسڕێتەوە تەواوی گەڕانەکانت بسڕدرێنەوە؟ مێژووی گەڕانەکانت سڕانەوە. 1 بابەت سڕایەوە. - NewPipe is copyleft libre software: You can use, study share and improve it at will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - NewPipe\'s Privacy Policy - The NewPipe project takes your privacy very seriously. Therefore, the app does not collect any data without your consent. -\nNewPipe\'s privacy policy explains in detail what data is sent and stored when you send a crash report. - Read privacy policy + ئەم ئەپە سەرچاوە کراوەیە : دەتوانی بەکاریبهێنی، بیخوێنیتەوە و هاوبەشی پێبکەیت و بەرەوپێشی ببەیت. +\nبەتایبەتی دەتوانی دابەشیبکەیتەوە یاخوود بگۆڕیت بەپێی مەرجەکانی GNU مۆڵەتنامەی گشتی وەک ئەپێکی بڵاوی خۆڕایی! + سیاسەتی تایبەتی NewPipe + پڕۆژەی NewPipe زانیارییە تایبەتییەکانت بەوردی دەپارێزێ. هەروەها ئەپەکە هیچ داتایەک بەبێ ئاگاداری تۆ بەکارنابات. +\nسیاسەتی تایبەتی NewPipe بەوردەکاری ڕوونکردنەوەت دەداتێ لەسەر ئەو داتایانەی وەریاندەگرێ و بەکاریاندەبات. + خوێندنەوەی سیاسەتی تایبەتی کەناڵەکان - لیستی ڤیدیۆکان + لیستی کارپێکردنەکان تراکەکان بەکاربەرەکان بەشدارنەبوون @@ -349,12 +350,12 @@ نوێکارییەکان فایل سڕایەوە ئاگانامەی نوێکاری ئەپ - ئاگانامەکانی وەشانی نوێی ئەپ + ئاگانامەکانی وەشانی نوێی NewPipe بیرگەی دەرەکی بەردەست نییە داگرتن لە بیرگەی دەرەکی ناکرێت. \nشوێنی فۆڵدەری داگرتنەکان دابنرێتەوە؟ - گێڕانەوە بۆ شێوازی سەرەکی - ئایا دەتەوێ بگەڕێنرێتەوە بۆ شێوازی سەرەکی؟ + گێڕانەوە بۆ بنەڕەتی + ئایا دەتەوێ بگەڕێنرێتەوە بۆ شێوازی بنەڕەتی؟ ژمارەی بەشداربووان نادیارە داگرتنێکیترت هەیە بەهەمان ناو پیشاندانی کێشە @@ -372,21 +373,21 @@ ناچالاککردن بۆ پیشان نەدانی لێدوانەکان کارپێکردنی خۆکاری - لێدوانەکان - + لێدوان + لێدوانەکان هیچ لێدوانێک نییە کارپێکردنەوەی لیست گێڕانەوەی لیست بۆ شوێنی پێشووتر شوێنەکان لە لیستدا سڕینەوەی داتا - مێژوو سڕایەوە. - شوێنی لیستەکان سڕانەوە. + مێژووی تەماشاکردن سڕایەوە. + شوێنی کارپێکراوەکان سڕانەوە. شوێنی فایل گۆڕدراوە یان سڕاوەتەوە داگرتنێکیتر هەیە بەهەمان ناو - سڕینەوەی شوێنی لیستەکان - شوێنی هەموو لیستەکان دەسڕێتەوە - شوێنی هەموو لیستەکان بسڕدرێتەوە؟ + سڕینەوەی شوێنی کارپێکراوەکان + شوێنی هەموو کارپێکراوەکان دەسڕێتەوە + شوێنی هەموو کارپێکراوەکان بسڕدرێتەوە؟ فۆڵدەری داگرتن بگۆڕە بۆ ئەنجامدانی کاریگەری خزمەتگوزاری چەسپاو، ئێستا هەڵبژێردراو: هیچ کەسێک تەماشای ناکات @@ -394,7 +395,7 @@ %s تەماشا دەکات %s تەماشا دەکەن - هیچ کەسێ گوێناگرێ + هیچ کەسێ گوێی لێ ناگرێ %s گوێی لێدەگرێ %s گوێی لێدەگرن @@ -411,7 +412,7 @@ نەگێڕانەوەی کارپێکەر بۆ پێش کێشە ڕوویدا گێڕانەوەی کارپێکەر بۆکاتی پێش کێشە هەمان فۆڵدەر بوونی نییە - هەمان فایل بوونی نییە + هەمان فایل/بابەت بوونی نییە چی:\\nداواکراو:\\nناوەڕۆک:\\nلانگ:\\nخزمەتگوزاری:\\nGMT:\\nکات:\\nپاکێج:\\nوەشان:\\nوەشانی سیستەم: |(تاقیکاری) داگرتنی خێرا بەبەکارهێنانی Tor بۆ زیادکردنی تایبەتێتی (پشتگیری پەخشە ڕاستەوخۆکان ناکات) . بەستەر هەڵەیە یاخوود بەئینتەرنێتەوە پەیوەست نەبوویت @@ -421,7 +422,7 @@ مۆڵەتنامەی ئەپ ئەپێکی خۆڕایی و کێشی کەم بۆ پەخشی ڕاستەوخۆ لەسەر ئەندرۆید. مۆڵەتنامەی NewPipe - پەڕە بەتاڵە + پەڕەی بەتاڵ پەڕەی کیۆسک پەڕەی بەشدارییەکان پەڕەی نوێترینەکان @@ -439,7 +440,7 @@ باشترین 50 نوێ & چالاک کارپێکەری پاشبنەما - داگرە تا ڕیزنەکران + پەنجەت داگرە بۆ ڕیزنەبوون ڕیزنەبوون لە پاشبنەما ڕیزنەبوون لە پەنجەرەی بچووک کردنەوەی پلیکانە @@ -534,5 +535,5 @@ خۆکاری دانرا (هیچ بەرزکەرەوەیەک نەدۆزرایەوە) دەگەڕێنرێتەوە ناتوانرێ ئەم داگرتنە بهێنرێتەوە - دۆزێک هەڵبژێرە + دۆخێک هەڵبژێرە \ No newline at end of file From deeac118a1661af4fbb961378850bceb0648a86b Mon Sep 17 00:00:00 2001 From: Daniele Lira Mereb Date: Mon, 6 Jan 2020 16:18:31 +0000 Subject: [PATCH 57/99] Translated using Weblate (Portuguese (Brazil)) Currently translated at 97.3% (508 of 522 strings) --- app/src/main/res/values-pt-rBR/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index febc9ef41..9aeb53b3b 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -525,4 +525,6 @@ abrir em modo popup %s ouvintes O idioma será atualizado assim que o aplicativo for reiniciado. + Duração do avançar/retroceder rápido + Instâncias PeerTube \ No newline at end of file From 41e18ae6948ef30475fe1e317d94de183f852ca4 Mon Sep 17 00:00:00 2001 From: pjammo Date: Mon, 6 Jan 2020 08:24:21 +0000 Subject: [PATCH 58/99] Translated using Weblate (Italian) Currently translated at 100.0% (522 of 522 strings) --- app/src/main/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3af36f579..4942f4720 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,6 +1,6 @@ - %1$s visualizzazioni + %1$ visualizzazioni Pubblicato il %1$s Nessun lettore multimediale trovato. Vuoi installare VLC\? Installa @@ -121,7 +121,7 @@ Modalità popup di NewPipe Riproduzione in Modalità Popup Disattivato - Non riproduce l\'audio con ALCUNE risoluzioni + L\'audio potrebbe non essere disponibile per ALCUNE risoluzioni In sottofondo Popup Risoluzione Predefinita Popup From dad88b83fb4e9236c6d71521fd6a0edbd1a2e06d Mon Sep 17 00:00:00 2001 From: TobiGr Date: Tue, 7 Jan 2020 22:32:54 +0100 Subject: [PATCH 59/99] Fix Arabic translation --- app/src/main/res/values-ar/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index f0e2f9d0a..b1dad5672 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -544,7 +544,6 @@ مثيلات خوادم پيرتيوب عيّن مثيلات خوادم پيرتيوب التي تُفضّلها إضافة نموذج - إضافة مثيل خادم أدخل رابط مثيل الخادم فشل في التحقق من مثيل الخادم فقط عناوين https المدعومة From 8de367e03f1d9b1640e730e35988a292f022cbf5 Mon Sep 17 00:00:00 2001 From: decarvalhobo Date: Mon, 2 Dec 2019 22:20:43 +0100 Subject: [PATCH 60/99] fix issue: thumbnail update when element deleted + thumbnail update when element added and no thumbnail --- .../local/dialog/PlaylistAppendDialog.java | 16 +++++++++++++--- .../local/playlist/LocalPlaylistFragment.java | 14 ++++++++++++++ .../local/playlist/LocalPlaylistManager.java | 4 ++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java index ac02b0b37..72df33576 100644 --- a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java @@ -152,9 +152,19 @@ public final class PlaylistAppendDialog extends PlaylistDialog { final Toast successToast = Toast.makeText(getContext(), R.string.playlist_add_stream_success, Toast.LENGTH_SHORT); - playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(ignored -> successToast.show())); + if(playlist.thumbnailUrl.equals("https://i.ytimg.com/")){ //empty playlist + playlistDisposables.add(manager.createPlaylist(playlist.name, streams) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(ignored -> successToast.show())); + playlistDisposables.add(manager.deletePlaylist(playlist.uid) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(ignored -> successToast.show())); + } + else { + playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(ignored -> successToast.show())); + } getDialog().dismiss(); } diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index c60cdac3f..35451d344 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -413,10 +413,24 @@ public class LocalPlaylistFragment extends BaseLocalListFragment modifyPlaylist(final long playlistId, @Nullable final String name, @Nullable final String thumbnailUrl) { From e9a4caaf0b35ec6ad3e4269dd1a6b924860c2101 Mon Sep 17 00:00:00 2001 From: De Carvalho Marcio Antonio Date: Tue, 3 Dec 2019 01:18:41 +0100 Subject: [PATCH 61/99] remove comments --- .../schabi/newpipe/local/playlist/LocalPlaylistFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index 35451d344..34278382a 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -428,7 +428,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment Date: Tue, 3 Dec 2019 01:19:48 +0100 Subject: [PATCH 62/99] remove comments --- .../org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java index 72df33576..f34e016b7 100644 --- a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java @@ -152,7 +152,7 @@ public final class PlaylistAppendDialog extends PlaylistDialog { final Toast successToast = Toast.makeText(getContext(), R.string.playlist_add_stream_success, Toast.LENGTH_SHORT); - if(playlist.thumbnailUrl.equals("https://i.ytimg.com/")){ //empty playlist + if(playlist.thumbnailUrl.equals("https://i.ytimg.com/")){ playlistDisposables.add(manager.createPlaylist(playlist.name, streams) .observeOn(AndroidSchedulers.mainThread()) .subscribe(ignored -> successToast.show())); From 752a76eb443c1b78a804b2c391cd5f903f8eca75 Mon Sep 17 00:00:00 2001 From: decarvalhobo Date: Wed, 4 Dec 2019 19:24:34 +0100 Subject: [PATCH 63/99] Usage of drawable instead of remote image + refactor the append to an empty playlist by just updating the thumbnail before adding the item in it. --- .../local/dialog/PlaylistAppendDialog.java | 16 ++++++---------- .../local/playlist/LocalPlaylistFragment.java | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java index f34e016b7..884fec599 100644 --- a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java @@ -152,20 +152,16 @@ public final class PlaylistAppendDialog extends PlaylistDialog { final Toast successToast = Toast.makeText(getContext(), R.string.playlist_add_stream_success, Toast.LENGTH_SHORT); - if(playlist.thumbnailUrl.equals("https://i.ytimg.com/")){ - playlistDisposables.add(manager.createPlaylist(playlist.name, streams) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(ignored -> successToast.show())); - playlistDisposables.add(manager.deletePlaylist(playlist.uid) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(ignored -> successToast.show())); - } - else { - playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams) + if(playlist.thumbnailUrl.equals("drawable://" + R.drawable.dummy_thumbnail_playlist)){ + playlistDisposables.add(manager.changePlaylistThumbnail(playlist.uid,streams.get(0).getThumbnailUrl()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(ignored -> successToast.show())); } + playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(ignored -> successToast.show())); + getDialog().dismiss(); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index 34278382a..af9ef0037 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -419,7 +419,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment Date: Tue, 7 Jan 2020 22:48:35 +0100 Subject: [PATCH 64/99] Fix code style and improve imports --- .../local/dialog/PlaylistAppendDialog.java | 13 ++++++------ .../local/playlist/LocalPlaylistFragment.java | 20 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java index 884fec599..81058eee6 100644 --- a/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistAppendDialog.java @@ -1,15 +1,16 @@ package org.schabi.newpipe.local.dialog; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import org.schabi.newpipe.NewPipeDatabase; import org.schabi.newpipe.R; import org.schabi.newpipe.database.LocalItem; @@ -152,8 +153,8 @@ public final class PlaylistAppendDialog extends PlaylistDialog { final Toast successToast = Toast.makeText(getContext(), R.string.playlist_add_stream_success, Toast.LENGTH_SHORT); - if(playlist.thumbnailUrl.equals("drawable://" + R.drawable.dummy_thumbnail_playlist)){ - playlistDisposables.add(manager.changePlaylistThumbnail(playlist.uid,streams.get(0).getThumbnailUrl()) + if (playlist.thumbnailUrl.equals("drawable://" + R.drawable.dummy_thumbnail_playlist)) { + playlistDisposables.add(manager.changePlaylistThumbnail(playlist.uid, streams.get(0).getThumbnailUrl()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(ignored -> successToast.show())); } diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index af9ef0037..9f21e05ff 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -4,11 +4,6 @@ import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Parcelable; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.ItemTouchHelper; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -18,6 +13,12 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.ItemTouchHelper; +import androidx.recyclerview.widget.RecyclerView; + import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import org.schabi.newpipe.NewPipeDatabase; @@ -416,10 +417,11 @@ public class LocalPlaylistFragment extends BaseLocalListFragment Date: Sun, 29 Dec 2019 17:56:32 -0300 Subject: [PATCH 65/99] fixup * [DownloadDialog.java] use *.opus extension instead of *.webm (bad change from https://github.com/TeamNewPipe/NewPipe/pull/2679/commits/844f80a5f1b0762a043afd2b4aec63b402830e53) * [StreamItemAdapter.java] show "opus" in format label instead of "WebM Opus" --- .../org/schabi/newpipe/download/DownloadDialog.java | 12 ++++++++++-- .../org/schabi/newpipe/util/StreamItemAdapter.java | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 4fbf4ab5f..853bb6d68 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -559,8 +559,16 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck case R.id.audio_button: mainStorage = mainStorageAudio; format = audioStreamsAdapter.getItem(selectedAudioIndex).getFormat(); - mime = format.mimeType; - filename += format.suffix; + switch(format) { + case WEBMA_OPUS: + mime = "audio/ogg"; + filename += "opus"; + break; + default: + mime = format.mimeType; + filename += format.suffix; + break; + } break; case R.id.video_button: mainStorage = mainStorageVideo; diff --git a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java index 312c47263..cb2fae4f0 100644 --- a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java @@ -140,7 +140,15 @@ public class StreamItemAdapter extends BaseA if (stream instanceof SubtitlesStream) { formatNameView.setText(((SubtitlesStream) stream).getLanguageTag()); } else { - formatNameView.setText(stream.getFormat().getName()); + switch (stream.getFormat()) { + case WEBMA_OPUS: + // noinspection AndroidLintSetTextI18n + formatNameView.setText("opus"); + break; + default: + formatNameView.setText(stream.getFormat().getName()); + break; + } } qualityView.setText(qualityString); From e2e0a9bfa2193ed9d9487832daf5ee73882db6dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 8 Jan 2020 17:51:35 +0100 Subject: [PATCH 66/99] Spelling: Could not, PeerTube, HTTPS, URL --- app/src/main/res/values/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a296e2db7..0e4bdf751 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,13 +113,13 @@ Service Default content language PeerTube instances - Set your favorite peertube instances + Set your favorite PeerTube instances Find the instances that best suit you on %s https://joinpeertube.org/instances#instances-list Add instance - Enter instance url - Failed to validate instance - Only https urls are supported + Enter instance URL + Could not validate instance + Only HTTPS URLs are supported Instance already exists Player Behavior From d316bbad442da95a58a79ae0d2101d51ebf73675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 8 Jan 2020 18:22:17 +0100 Subject: [PATCH 67/99] Select your favorite Co-Authored-By: Stypox --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e4bdf751..54ae40d1d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,7 +113,7 @@ Service Default content language PeerTube instances - Set your favorite PeerTube instances + Select your favorite PeerTube instances Find the instances that best suit you on %s https://joinpeertube.org/instances#instances-list Add instance From 1602ecbaf9ceb6e69516f10d8890439ab3fed3b3 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Wed, 8 Jan 2020 03:47:45 +0000 Subject: [PATCH 68/99] Translated using Weblate (Interlingua) Currently translated at 11.1% (58 of 522 strings) --- app/src/main/res/values-ia/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 981724304..f077e3e24 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -32,4 +32,5 @@ Initiar discargas Pausar le discargas Seliger un instantia + Non poteva connecter con le servitor \ No newline at end of file From 99bcd8d043f15bfc6d2c6cd7f6ad04e23f258910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 8 Jan 2020 16:44:00 +0000 Subject: [PATCH 69/99] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 96.0% (501 of 522 strings) --- app/src/main/res/values-nb-rNO/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index d874e9b0e..8afd21f54 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -516,4 +516,5 @@ Språk vil ikke bli endret før programmet startes på ny. Forvalgt kiosk + PeerTube-instanser \ No newline at end of file From bff5371e419002e4a5965fe8047bed8e26098d72 Mon Sep 17 00:00:00 2001 From: Igor Nedoboy Date: Thu, 9 Jan 2020 01:44:21 +0000 Subject: [PATCH 70/99] Translated using Weblate (Russian) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-ru/strings.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5230f00a2..f3fdbbc18 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -524,12 +524,12 @@ Язык будет изменён после перезапуска Перемотка двойным нажатием Серверы PeerTube - Настройте предпочтительные серверы PeerTube - Выберите подходящие серверы на https://joinpeertube.org/instances#instances-list + Выберите предпочтительные серверы PeerTube + Выберите подходящие серверы на %s Новый сервер URL сервера Не удалось проверить сервер - Поддерживается только https + Поддерживается только HTTPS Сервер уже существует Локальное Новое @@ -538,4 +538,6 @@ восстановление Не удалось восстановить загрузку Выберите сервер + Миниатюра на экране блокировки + Показать миниатюру видео на экране блокировки при воспроизведении в фоне \ No newline at end of file From 99cdaec40e98b30cd04ea372dc5db8bee235cd7b Mon Sep 17 00:00:00 2001 From: TobiGr Date: Wed, 8 Jan 2020 19:58:11 +0000 Subject: [PATCH 71/99] Translated using Weblate (German) Currently translated at 99.0% (520 of 525 strings) --- app/src/main/res/values-de/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 17c2e55d0..6d4fe2e13 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -202,8 +202,8 @@ Keine Videos - Video - Videos + %s Video + %s Videos Die meisten Sonderzeichen Element gelöscht @@ -518,7 +518,7 @@ Die Sprache ändert sich, sobald die App neu gestartet wird. PeerTube-Instanzen - Finde auf https://joinpeertube.org/instances#instances-list die Instanzen, die am besten zu dir passen + "Finde auf %s die Instanzen, die am besten zu dir passen" Instanz hinzufügen Gib die URL der Instanz ein Validieren der Instanz fehlgeschlagen From 707e4f7167b537804b6abf9ae11dbe5a128b3bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Fri, 11 Oct 2019 15:07:51 +0200 Subject: [PATCH 72/99] Add option to remove downloaded files when clearing finished downloads --- .../shandian/giga/ui/adapter/MissionAdapter.java | 12 +++++++++++- .../giga/ui/fragment/MissionsFragment.java | 8 +++++++- app/src/main/res/layout/delete_files_checkbox.xml | 14 ++++++++++++++ app/src/main/res/values/strings.xml | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/layout/delete_files_checkbox.xml diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 8420e343b..e20417aa9 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -19,6 +19,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.MimeTypeMap; +import android.widget.CheckBox; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.TextView; @@ -557,7 +558,16 @@ public class MissionAdapter extends Adapter implements Handler.Callb ); } - public void clearFinishedDownloads() { + public void clearFinishedDownloads(boolean delete) { + if (delete && mIterator.hasFinishedMissions()) { + for(int i=0; i mAdapter.clearFinishedDownloads()); + prompt.setView(checkBoxView); + prompt.setPositiveButton(android.R.string.ok, (dialog, which) -> { + CheckBox checkBox = checkBoxView.findViewById(R.id.delete_files_checkbox); + mAdapter.clearFinishedDownloads(checkBox.isChecked()); + }); prompt.setNegativeButton(R.string.cancel, null); prompt.create().show(); return true; diff --git a/app/src/main/res/layout/delete_files_checkbox.xml b/app/src/main/res/layout/delete_files_checkbox.xml new file mode 100644 index 000000000..cbc6ecd10 --- /dev/null +++ b/app/src/main/res/layout/delete_files_checkbox.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54ae40d1d..d3899583b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -587,5 +587,5 @@ Use SAF The Storage Access Framework allows downloads to an external SD card.\nNote: some devices are not compatible Choose an instance - + Delete downloaded files From f6bbc69cf9a8db92aafb4c20bde999f3c90598c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Fri, 11 Oct 2019 16:16:10 +0200 Subject: [PATCH 73/99] Remove unnecessary import --- .../main/java/us/shandian/giga/ui/adapter/MissionAdapter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index e20417aa9..ab3f22886 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -19,7 +19,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.MimeTypeMap; -import android.widget.CheckBox; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.TextView; From b18236a27e05076225f2b151560511d6279e36ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Fri, 11 Oct 2019 16:36:47 +0200 Subject: [PATCH 74/99] Put call to forget finished downloads in an else statement to prevent potential bugs --- .../main/java/us/shandian/giga/ui/adapter/MissionAdapter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index ab3f22886..4842e6b2e 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -566,8 +566,9 @@ public class MissionAdapter extends Adapter implements Handler.Callb mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mission.storage.getUri())); } } + } else if (!delete) { + mDownloadManager.forgetFinishedDownloads(); } - mDownloadManager.forgetFinishedDownloads(); applyChanges(); } From cfad3fb5ded10334317501fde5b18cf7859c6746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Wed, 11 Dec 2019 15:56:04 +0100 Subject: [PATCH 75/99] Fix inconsistent style --- .../main/java/us/shandian/giga/ui/adapter/MissionAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 4842e6b2e..eea3f2795 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -559,7 +559,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb public void clearFinishedDownloads(boolean delete) { if (delete && mIterator.hasFinishedMissions()) { - for(int i=0; i Date: Fri, 13 Dec 2019 11:48:01 +0100 Subject: [PATCH 76/99] Use a dialog option instead of a checkbox --- .../giga/ui/fragment/MissionsFragment.java | 8 ++------ app/src/main/res/layout/delete_files_checkbox.xml | 14 -------------- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 3 insertions(+), 21 deletions(-) delete mode 100644 app/src/main/res/layout/delete_files_checkbox.xml diff --git a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java index edaa01e0f..98231cffe 100644 --- a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java +++ b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java @@ -190,14 +190,10 @@ public class MissionsFragment extends Fragment { return true; case R.id.clear_list: AlertDialog.Builder prompt = new AlertDialog.Builder(mContext); - View checkBoxView = View.inflate(this.getContext(), R.layout.delete_files_checkbox, null); prompt.setTitle(R.string.clear_finished_download); prompt.setMessage(R.string.confirm_prompt); - prompt.setView(checkBoxView); - prompt.setPositiveButton(android.R.string.ok, (dialog, which) -> { - CheckBox checkBox = checkBoxView.findViewById(R.id.delete_files_checkbox); - mAdapter.clearFinishedDownloads(checkBox.isChecked()); - }); + prompt.setPositiveButton(R.string.clear_finished_download, (dialog, which) -> mAdapter.clearFinishedDownloads(false)); + prompt.setNeutralButton(R.string.delete_downloaded_files, (dialog, which) -> mAdapter.clearFinishedDownloads(true)); prompt.setNegativeButton(R.string.cancel, null); prompt.create().show(); return true; diff --git a/app/src/main/res/layout/delete_files_checkbox.xml b/app/src/main/res/layout/delete_files_checkbox.xml deleted file mode 100644 index cbc6ecd10..000000000 --- a/app/src/main/res/layout/delete_files_checkbox.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d3899583b..94a50972f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -570,7 +570,7 @@ Connection timeout Cannot recover this download Clear finished downloads - Are you sure? + Do you want to clear your download history or delete all downloaded files? Stop Maximum retries Maximum number of attempts before canceling the download From 986acc5fc5962e67fd85f4034c4118932da136f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Thu, 26 Dec 2019 16:15:30 +0100 Subject: [PATCH 77/99] Reorder buttons in clear downloads dialog --- .../us/shandian/giga/ui/fragment/MissionsFragment.java | 9 +++++---- app/src/main/res/menu/download_menu.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java index 98231cffe..be0b0bb25 100644 --- a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java +++ b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java @@ -190,11 +190,12 @@ public class MissionsFragment extends Fragment { return true; case R.id.clear_list: AlertDialog.Builder prompt = new AlertDialog.Builder(mContext); - prompt.setTitle(R.string.clear_finished_download); + prompt.setTitle(R.string.clear_download_history); prompt.setMessage(R.string.confirm_prompt); - prompt.setPositiveButton(R.string.clear_finished_download, (dialog, which) -> mAdapter.clearFinishedDownloads(false)); - prompt.setNeutralButton(R.string.delete_downloaded_files, (dialog, which) -> mAdapter.clearFinishedDownloads(true)); - prompt.setNegativeButton(R.string.cancel, null); + // Intentionally misusing button's purpose in order to achieve good order + prompt.setNegativeButton(R.string.clear_download_history, (dialog, which) -> mAdapter.clearFinishedDownloads(false)); + prompt.setPositiveButton(R.string.delete_downloaded_files, (dialog, which) -> mAdapter.clearFinishedDownloads(true)); + prompt.setNeutralButton(R.string.cancel, null); prompt.create().show(); return true; case R.id.start_downloads: diff --git a/app/src/main/res/menu/download_menu.xml b/app/src/main/res/menu/download_menu.xml index f91f8ad7b..8728e146e 100644 --- a/app/src/main/res/menu/download_menu.xml +++ b/app/src/main/res/menu/download_menu.xml @@ -24,7 +24,7 @@ Progress lost, because the file was deleted Connection timeout Cannot recover this download - Clear finished downloads + Clear download history Do you want to clear your download history or delete all downloaded files? Stop Maximum retries From d071891b2af8b71f428d2a16815d783f16fca089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Sun, 5 Jan 2020 14:01:54 +0100 Subject: [PATCH 78/99] Add a snackbar to allow user to undo file deletion --- .../giga/ui/adapter/MissionAdapter.java | 52 +++++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index eea3f2795..11cdf5a3d 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -5,6 +5,7 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.graphics.Color; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; @@ -35,6 +36,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; +import com.google.android.material.snackbar.Snackbar; + import org.schabi.newpipe.BuildConfig; import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.NewPipe; @@ -46,6 +49,7 @@ import java.io.File; import java.lang.ref.WeakReference; import java.net.URI; import java.util.ArrayList; +import java.util.Iterator; import us.shandian.giga.get.DownloadMission; import us.shandian.giga.get.FinishedMission; @@ -84,6 +88,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb private static final String UNDEFINED_PROGRESS = "--.-%"; private static final String DEFAULT_MIME_TYPE = "*/*"; private static final String UNDEFINED_ETA = "--:--"; + private static final int TIMEOUT = 5000;// ms static { @@ -104,8 +109,12 @@ public class MissionAdapter extends Adapter implements Handler.Callb private MenuItem mPauseButton; private View mEmptyMessage; private RecoverHelper mRecover; + private View mView; + private ArrayList mHidden; + private Snackbar mSnackbar; private final Runnable rUpdater = this::updater; + private final Runnable rDelete = this::deleteFinishedDownloads; public MissionAdapter(Context context, @NonNull DownloadManager downloadManager, View emptyMessage, View root) { mContext = context; @@ -122,6 +131,10 @@ public class MissionAdapter extends Adapter implements Handler.Callb mDeleter = new Deleter(root, mContext, this, mDownloadManager, mIterator, mHandler); + mView = root; + + mHidden = new ArrayList<>(); + checkEmptyMessageVisibility(); onResume(); } @@ -558,18 +571,49 @@ public class MissionAdapter extends Adapter implements Handler.Callb } public void clearFinishedDownloads(boolean delete) { - if (delete && mIterator.hasFinishedMissions()) { + if (delete && mIterator.hasFinishedMissions() && mHidden.isEmpty()) { for (int i = 0; i < mIterator.getOldListSize(); i++) { FinishedMission mission = mIterator.getItem(i).mission instanceof FinishedMission ? (FinishedMission) mIterator.getItem(i).mission : null; if (mission != null) { - mDownloadManager.deleteMission(mission); - mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mission.storage.getUri())); + mIterator.hide(mission); + mHidden.add(mission); } } + applyChanges(); + + String msg = String.format(mContext.getString(R.string.deleted_downloads), String.valueOf(mHidden.size())); + mSnackbar = Snackbar.make(mView, msg, Snackbar.LENGTH_INDEFINITE); + mSnackbar.setAction(R.string.undo, s -> { + Iterator i = mHidden.iterator(); + while (i.hasNext()) { + mIterator.unHide(i.next()); + i.remove(); + } + applyChanges(); + mHandler.removeCallbacks(rDelete); + }); + mSnackbar.setActionTextColor(Color.YELLOW); + mSnackbar.show(); + + mHandler.postDelayed(rDelete, TIMEOUT); } else if (!delete) { mDownloadManager.forgetFinishedDownloads(); + applyChanges(); + } + } + + private void deleteFinishedDownloads() { + if(mSnackbar != null) mSnackbar.dismiss(); + + Iterator i = mHidden.iterator(); + while (i.hasNext()) { + Mission mission = i.next(); + if (mission != null) { + mDownloadManager.deleteMission(mission); + mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mission.storage.getUri())); + } + i.remove(); } - applyChanges(); } private boolean handlePopupItem(@NonNull ViewHolderItem h, @NonNull MenuItem option) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bc3389062..9e3f89357 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -588,4 +588,5 @@ The Storage Access Framework allows downloads to an external SD card.\nNote: some devices are not compatible Choose an instance Delete downloaded files + Deleted %s downloads From 2c8222fd559d4d536b4f2f35cf1f0b6ed87223ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Szcz=C4=99k?= Date: Sat, 11 Jan 2020 15:19:24 +0100 Subject: [PATCH 79/99] Style corrected --- .../java/us/shandian/giga/ui/adapter/MissionAdapter.java | 5 ++--- app/src/main/res/values/strings.xml | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 11cdf5a3d..fac196e0b 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -88,7 +88,6 @@ public class MissionAdapter extends Adapter implements Handler.Callb private static final String UNDEFINED_PROGRESS = "--.-%"; private static final String DEFAULT_MIME_TYPE = "*/*"; private static final String UNDEFINED_ETA = "--:--"; - private static final int TIMEOUT = 5000;// ms static { @@ -595,7 +594,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb mSnackbar.setActionTextColor(Color.YELLOW); mSnackbar.show(); - mHandler.postDelayed(rDelete, TIMEOUT); + mHandler.postDelayed(rDelete, 5000); } else if (!delete) { mDownloadManager.forgetFinishedDownloads(); applyChanges(); @@ -603,7 +602,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb } private void deleteFinishedDownloads() { - if(mSnackbar != null) mSnackbar.dismiss(); + if (mSnackbar != null) mSnackbar.dismiss(); Iterator i = mHidden.iterator(); while (i.hasNext()) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e3f89357..431f05d5a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -571,6 +571,8 @@ Cannot recover this download Clear download history Do you want to clear your download history or delete all downloaded files? + Delete downloaded files + Deleted %s downloads Stop Maximum retries Maximum number of attempts before canceling the download @@ -587,6 +589,4 @@ Use SAF The Storage Access Framework allows downloads to an external SD card.\nNote: some devices are not compatible Choose an instance - Delete downloaded files - Deleted %s downloads From 69c090b5a1148f11f4718ad5acae00c317552137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Thu, 9 Jan 2020 16:23:03 +0000 Subject: [PATCH 80/99] Translated using Weblate (German) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-de/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6d4fe2e13..d72051d18 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -14,7 +14,7 @@ Meintest du: %1$s\? Teilen mit Browser auswählen - Drehen des Geräts + Bildschirm drehen Downloadordner für Videos Heruntergeladene Videodateien werden hier gespeichert Wähle den Downloadordner für Videodateien aus @@ -278,7 +278,7 @@ Dies wird deine aktuellen Einstellungen überschreiben. Infos anzeigen Lesezeichen für Wiedergabelisten - Hinzufügen zu + Hinzufügen Zum Neuordnen ziehen Erstellen Einen löschen @@ -395,7 +395,7 @@ Keine Zum Hintergrund-Player minimieren Zum Popup-Player minimieren - Vorspulen während der Stille + Vorspulen bei Stille Schritt Zurücksetzen Kanäle @@ -518,17 +518,17 @@ Die Sprache ändert sich, sobald die App neu gestartet wird. PeerTube-Instanzen - "Finde auf %s die Instanzen, die am besten zu dir passen" + Finde auf %s die Instanzen, die am besten zu dir passen Instanz hinzufügen Gib die URL der Instanz ein - Validieren der Instanz fehlgeschlagen - Diese Instanz existiert bereits + Validierung der Instanz fehlgeschlagen + Instanz existiert bereits Lokal Kürzlich hinzugefügt Auto-generiert (kein Uploader gefunden) Wähle eine Instanz - Bevorzugte Peertube-Instanzen festlegen - Es werden nur https-Adressen unterstützt + Bevorzugte Peertube-Instanzen auswählen + Es werden nur HTTPS-Adressen unterstützt Dauer der Suche bei schnellem Vor-/Zurückspulen Am beliebtesten Wiederherstellen From 78c9e4e1ad78ec8e48df268e8f02714862463d5c Mon Sep 17 00:00:00 2001 From: nautilusx Date: Fri, 10 Jan 2020 07:10:50 +0000 Subject: [PATCH 81/99] Translated using Weblate (German) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-de/strings.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d72051d18..586da69ee 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -123,7 +123,8 @@ Bevorzugtes Videoformat Im Pop-up Modus abspielen NewPipe-Pop-up-Modus - Diese Berechtigung ist für das Öffnen im Pop-up-Modus erforderlich + Diese Berechtigung ist für das +\nÖffnen im Pop-up-Modus erforderlich Standardauflösung des Pop-ups Höhere Auflösungen anzeigen Nur manche Geräte unterstützen das Abspielen von 2K-/4K-Videos @@ -520,7 +521,7 @@ PeerTube-Instanzen Finde auf %s die Instanzen, die am besten zu dir passen Instanz hinzufügen - Gib die URL der Instanz ein + URL der Instanz eingeben Validierung der Instanz fehlgeschlagen Instanz existiert bereits Lokal @@ -533,4 +534,6 @@ Am beliebtesten Wiederherstellen Dieser Download kann nicht wiederhergestellt werden + Video-Vorschaubild für Sperrbildschirm aktivieren + Bei Verwendung des Hintergrundplayers wird ein Video-Miniaturbild auf dem Sperrbildschirm angezeigt \ No newline at end of file From 3f67b3b73c616d218cbd6cff4841be2326bf2cb7 Mon Sep 17 00:00:00 2001 From: B0pol Date: Fri, 10 Jan 2020 19:56:16 +0000 Subject: [PATCH 82/99] Translated using Weblate (French) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-fr/strings.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c8e238487..463057480 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -519,12 +519,12 @@ La langue changera lors du redémarrage de l\'application. Avance/rembobinage rapide sur une durée Instances PeerTube - Définissez vos instances peertube préférées - Cherchez des instances qui pourraient vous intéresser sur https://joinpeertube.org/instances#instances-list + Choisissez vos instances PeerTube préférées + Cherchez des instances qui pourraient vous intéresser sur %s Ajouter une instance Entrez l’URL de l’instance Échec de validation de l’instance - Sont prises en charge uniquement les URLs en https + Sont prises en charge uniquement les URLs en HTTPS L’instance existe déjà Local Ajoutées récemment @@ -532,4 +532,7 @@ récupération Impossible de récupérer ce téléchargement Choisissez une instance + Généré automatiquement (pas de téléverseur trouvé) + Activer la vidéo miniaturisée sur l\'écran de verrouillage + En utilisant le lecteur en arrière-plan, une vidéo miniaturisé sera affichée sur l\'écran de verrouillage \ No newline at end of file From c3e41e2427f3ad32f2835eecf415aa0c1b77cbe8 Mon Sep 17 00:00:00 2001 From: ssantos Date: Sat, 11 Jan 2020 12:18:48 +0000 Subject: [PATCH 83/99] Translated using Weblate (Portuguese) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-pt/strings.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 4bf692801..98b85bcab 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -518,12 +518,12 @@ O idioma mudará quando a app for reiniciada. Duração da busca de avanço/retrocesso rápido Instâncias do PeerTube - Defina as suas instâncias favoritas de peertube - Encontre as instâncias que lhe melhor convêm em https://joinpeertube.org/instances#instances-list + Defina as suas instâncias favoritas de PeerTube + Encontre as instâncias que lhe melhor convêm em %s Adicionar instância Digite o URL da instância Falha ao validar a instância - Somente URLs HTTPS são suportadas + Somente URLs HTTPS são suportada A instância já existe Local Recentemente adicionado @@ -532,4 +532,6 @@ recuperando Não é possível recuperar este descarregamento Escolha uma instância + Ativar miniatura do vídeo no ecrã de bloqueio + Ao usar o reprodutor de fundo, uma miniatura de vídeo será exibida no ecrã de bloqueio \ No newline at end of file From b83e1716fe9c084f8b423d8cfc8efcdce18aa5dc Mon Sep 17 00:00:00 2001 From: Osoitz Date: Sun, 12 Jan 2020 11:31:39 +0000 Subject: [PATCH 84/99] Translated using Weblate (Basque) Currently translated at 99.4% (522 of 525 strings) --- app/src/main/res/values-eu/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 2233c42ba..b376f1f6d 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -519,12 +519,12 @@ Kiosko Lehenetsia Aurreratze/atzeratze bilaketaren iraupena PeerTube instantziak - Ezarri zure gogoko peertube instantziak - Aurkitu instantziak hemen: https://joinpeertube.org/instances#instances-list + Hautatu zure gogoko PeerTube instantziak + Aurkitu instantziak hemen: %s Gehitu instantzia Sartu instantziaren URLa - Huts egin du instantzia balioztatzean - https URLak onartzen dira soilik + Ezin izan da instantzia balioztatu + HTTPS URLak onartzen dira soilik Instantzia badago aurretik Lokala Berriki gehitua From 7c4b9d8843900e4ccdd22cd0d3df7a3fcdd20782 Mon Sep 17 00:00:00 2001 From: Petros Grammatikopoulos Date: Sun, 12 Jan 2020 23:02:25 +0000 Subject: [PATCH 85/99] Translated using Weblate (Greek) Currently translated at 97.7% (513 of 525 strings) --- app/src/main/res/values-el/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index dd6643755..3d2397a0c 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -522,4 +522,6 @@ Δημιουργήθηκε αυτόματα (δεν βρέθηκε χρήστης μεταφόρτωσης) Ανάκτηση Δεν είναι δυνατή η ανάκτηση αυτής της λήψης + Ενεργοποίηση μικρογραφίας βίντεο στην οθόνη κλειδώματος + Όταν χρησιμοποιείται αναπαραγωγή παρασκηνίου μια μικρογραφία βίντεο θα εμφανίζεται στην οθόνη κλειδώματος \ No newline at end of file From 88e5be237e1f78a49d04c937d4168ddb410b0007 Mon Sep 17 00:00:00 2001 From: B0pol Date: Fri, 10 Jan 2020 17:12:12 +0000 Subject: [PATCH 86/99] Translated using Weblate (Esperanto) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-eo/strings.xml | 42 ++++++++++++++------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 784357da3..6d19f8213 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -41,12 +41,12 @@ Neniu elsendlflua ludilo trovita. Ĉu vi volas instali la aplikaĵon VLC\? La aplikaĵo Kore ne estas trovita. Ĉu instali ĝin? Montri la sekvan filmeton kaj similajn filmetojn - Ĉiuj miniaturoj ne ŝargeblas + Ĉiuj bildetoj ne ŝargeblas La subskribo de la ligilo de la filmeto ne malĉifreblas La retejo ne analizeblas - Miniaturo de la antaŭrigardo de la filmeto + Bildeto de la antaŭrigardo de la filmeto Legi filmeton, daŭro: - Miniaturo de la bildo de la alŝutinto + Bildeto de la alŝutinto La elŝutujo \'%1$s\' ne kreeblas Elŝutujo \'%1$s\' kreita Elŝutujo por filmetoj @@ -61,7 +61,7 @@ Signali eraron per retpoŝto SIGNALI Informoj: - Via komento (angle): + Vian komenton (angle): Detaloj: Signali eraron Filmeto @@ -71,7 +71,7 @@ Malfermi en ŝprucfenestron modon Forigas aŭdion ĉe KELKAJ distingivoj NewPipe ŝprucfenestron modon - Abonu + Aboni Abonita Kanalo malabonita Ne povis ŝanĝi abonon @@ -210,16 +210,16 @@ Tia dosierujo ne ekzistas Tia dosiero/enhavo ne ekzistas Dosiernomo ne povas esti malplena - Eraro okazis : %1$s - Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto : -\n -\n1. Iru ĉe tie retpaĝo : %1$s -\n2. Ensalutu kiam oni petas vin + Eraro okazis: %1$s + Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto : +\n +\n1. Iru ĉe tiu retpaĝo: %1$s +\n2. Ensalutu kiam oni petas vin \n3. Elŝuto devus komenci (ĝi estas la dosiero de eksporto) - Importu Soundcloud-n profilon per elŝuti la dosieron de eksporto : + Importu Soundcloud-n profilon tajpante ĉu la ligilon, ĉu vian ID : \n \n1. Ebligu komputilon modon en krozilo (la retejo malhaveblas por poŝtelefonoj) -\n2. Iru al tie retpaĝo : %1$s +\n2. Iru tien: %1$s \n3. Ensalutu kiam oni petas vin \n4. Kopiu la ligilon de profilo ke oni kondikis vin. Malŝaltu por malebligi ŝarĝajn bildetojn, konservi datumojn kaj uzadon de memoro. Ŝanĝoj forviŝas ambaŭ en-memoro kaj sur-disko bildo kaŝmemoro. @@ -242,7 +242,7 @@ Ludlistoj Spuroj Uzantoj - Malabonu + Malaboni Nova ongleto Elektu ongleton Kontrolo de volumena gesto @@ -291,8 +291,8 @@ Oni petos vin kie konservi ĉion elŝutaĵon. \nElektu AFM se vi volas elŝuti al ekstera SD-karto Uzu AFM - La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto. -\nKomento : kelkaj aparatoj ne kongruas + La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto. +\nKomento: kelkaj aparatoj ne kongruas Forviŝi ludajn poziciojn Forviŝi la totalon de ludaj pozicioj Ĉu vi volas forviŝi ĉiujn ludajn poziciojn \? @@ -437,7 +437,7 @@ Subtitoloj Modifi la dimension de la teksto kaj la fonajn stilojn de la subtitoloj de la ludilo. Ĝi bezonas restarto de la apo por efektiviĝi. 1 ero forviŝita. - NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉojn de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio. + NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉoj de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio. Ĉu vi volas ankaŭ importi agordojn\? Privateca politiko de NewPipe La NewPipe projekto respektas vian privatecon serioze. Konsekvence, la apo ne kolektas ajnan datumo sen via konsento. @@ -518,12 +518,12 @@ La lingvo ŝanĝos kiam la apo restartos. Rapida antaŭen / posten daŭron Instancoj de PeerTube - Registri viajn preferitajn instancojn de PeerTube - Trovu la instancojn kiu vi povus ŝati ĉe https://joinpeertube.org/instances#instances-list + Elekti viajn preferitajn instancojn de PeerTube + Trovu la instancojn kiu vi povus ŝati ĉe %s Aldoni instanco Eniri la ligilon de la instanco - Malsukcesis validigi instanco - Nur https ligiloj estas subtenitaj + Ne povis validigi instanco + Nur HTTPS ligiloj estas subtenitaj La instanco jam ekzistas Loka Freŝdate ĝisdatigita @@ -532,4 +532,6 @@ Reakiranta Ne povas reakiri tion elŝuton Elektu instancon + Enablu bildeta filmeton ĉe ŝlosita ekrano + Uzante la fona ludilo, bildeta filmeto vidiĝos ĉe ŝlosita ekrano \ No newline at end of file From 3afce82aa7352ccb4feccaca01982858868faca7 Mon Sep 17 00:00:00 2001 From: zmni Date: Sat, 11 Jan 2020 14:06:30 +0000 Subject: [PATCH 87/99] Translated using Weblate (Indonesian) Currently translated at 99.6% (523 of 525 strings) --- app/src/main/res/values-id/strings.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 938837bd5..8677df678 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -510,4 +510,21 @@ %s mendengarkan Bahasa akan diterapkan setelah aplikasi dimulai ulang. + Situs PeerTube + Pilih situs PeerTube favorit anda + Temukan situs yang sesuai dengan anda di %s + Tambah situs + Masukkan URL situs + Tidak bisa memvalidasi situs + Hanya mendukung URL HTTPS + Situs sudah ada + Lokal + Baru-baru ini ditambahkan + Disukai terbanyak + Dibuat otomatis (pengunggah tidak ditemukan) + memulihkan + Tidak bisa memulihkan unduhan ini + Pilih situs + Aktifkan kunci layar thumbnail video + Ketika menggunakan pemutar latar belakang, thumbnail video akan ditampilkan di tampilan kunci layar \ No newline at end of file From 46cc21512039bbdd424239bef6e2d15649e14b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 8 Jan 2020 20:22:06 +0000 Subject: [PATCH 88/99] Translated using Weblate (Turkish) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-tr/strings.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 533c0d736..1ea8ad817 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -519,12 +519,12 @@ Uygulama yeniden başlatıldıktan sonra dil değişecektir. Hızlı ileri/geri sarma süresi PeerTube örnekleri - Favori peertube örneklerinizi ayarlayın - https://joinpeertube.org/instances#instances-list adresinde size en uygun örnekleri bulun + Favori PeerTube örneklerinizi seçin + %s adresinde size en uygun örnekleri bulun Örnek ekle Örnek URL\'sini girin Örnek doğrulanamadı - Yalnızca https URL\'leri desteklenmektedir + Yalnızca HTTPS URL\'leri desteklenmektedir Örnek zaten var Yerel Son eklenen @@ -533,4 +533,6 @@ kurtarılıyor Bu indirme kurtarılamıyor Bir örnek seçin + Kilit ekranı video küçük resmini etkinleştir + Arka plan oynatıcıyı kullanırken kilit ekranında bir video küçük resmi görüntülenecektir \ No newline at end of file From 2038df976c055ad45352e1ceec7e069da3f3bd07 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Thu, 9 Jan 2020 18:26:47 +0000 Subject: [PATCH 89/99] Translated using Weblate (Polish) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-pl/strings.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 75ce1029d..e2a2ae80b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -525,12 +525,12 @@ Język zmieni się po ponownym uruchomieniu aplikacji. Krok czasu przewijania Wystąpienia PeerTube - Ustaw swoje ulubione instancje peertube - Znajdź instancje, które najbardziej Ci odpowiadają, na https://joinpeertube.org/instances#instances-list + Wybierz swoje ulubione instancje PeerTube + Znajdź wystąpienia, które najbardziej Ci odpowiadają na %s Dodaj instancję Wprowadź adres URL instancji - Nie udało się sprawdzić poprawności instancji - Obsługiwane są tylko adresy URL https + Nie można sprawdzić poprawności instancji + Obsługiwane są tylko adresy URL HTTPS Instancja już istnieje Lokalny Ostatnio dodane @@ -539,4 +539,6 @@ odzyskiwanie Nie można odzyskać tego pobrania Wybierz instancję + Włącz miniaturę wideo na ekranie blokady + Podczas korzystania z odtwarzacza w tle na ekranie blokady zostanie wyświetlona miniatura filmu \ No newline at end of file From 31b830d6d0839427b328c7ae9f2b69741bd05089 Mon Sep 17 00:00:00 2001 From: Daniele Lira Mereb Date: Fri, 10 Jan 2020 01:09:46 +0000 Subject: [PATCH 90/99] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-pt-rBR/strings.xml | 40 +++++++++++++++------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 9aeb53b3b..45fe51010 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -23,7 +23,7 @@ Noite Formato de áudio padrão Resolução padrão - Excluir + Apagar Não curtidas Curtidas Baixar @@ -134,7 +134,7 @@ abrir em modo popup Popup Segundo plano Lembrar tamanho e posição do popup - Lembrar do último tamanho e posição definido para o popup + Lembra da última posição e o tamanho usado no popup Popup Redimensionando Remove o áudio em ALGUMAS resoluções @@ -256,7 +256,7 @@ abrir em modo popup Sempre Uma vez Alterar orientação - Alterar para segundo plano + Trocar para segundo plano Trocar para popup Trocar para principal Players externos não suportam estes tipos de links @@ -271,7 +271,7 @@ abrir em modo popup Importar base de dados Exportar base de dados Sobrescreve seus dados como históricos e inscrições - Exportar históricos, inscrições e playlists + Exporta históricos, inscrições e playlists Exportado Importado Não há nenhum arquivo ZIP válido @@ -318,7 +318,7 @@ abrir em modo popup Usar pesquisa rápida A pesquisa rápida permite que o player procure resultados mais rapidamente porém com precisão reduzida Adicionar o próximo vídeo à fila automaticamente - Adicionar automaticamente um vídeo relacionado ao último da lista quando a repetição estiver desativada + Adiciona automaticamente um vídeo relacionado ao último da lista quando a repetição estiver desativada Arquivo Pasta não encontrada Origem do arquivo/conteúdo não encontrada @@ -361,7 +361,7 @@ abrir em modo popup Carregar capas Cache de imagens limpo Limpar metadados em cache - Exclui todos os dados de páginas em cache + Apaga todos os dados de páginas em cache Cache de metadados limpo Controles de velocidade de reprodução "Tempo " @@ -377,7 +377,7 @@ abrir em modo popup Altere o tamanho da legenda e o estilo da tela de fundo. É necessário reiniciar o aplicativo para ter efeito. Nenhum player instalado para reproduzir este arquivo Limpar histórico de assistidos - Apaga o histórico de vídeos assistidos e a lista de reprodução + Apaga o histórico de vídeos assistidos e a posição nas reproduções Apagar todo o histórico de assistidos\? Histórico de assistidos limpo. Limpar histórico de pesquisas @@ -485,9 +485,9 @@ abrir em modo popup Retomar a reprodução Retorna para a última posição em reprodução Posições em listas - Mostrar indicadores de posição em listas + Mostra indicadores de posição em listas Limpar dados - Posições de reprodução apagadas. + Posição nas reproduções apagadas. Arquivo movido ou excluído Já existe um arquivo com este nome Não foi possível sobrescrever o arquivo @@ -508,9 +508,9 @@ abrir em modo popup Usar SAF A Estrutura de Acesso ao Armazenamento permite baixar para um cartão SD. \nAviso: alguns dispositivos não são compatíveis - Apagar lista de reprodução - Deletar todo o histórico de reprodução - Deletar todo o histórico de reprodução\? + Limpar posição nas reproduções + Apaga o histórico de posição nas reproduções + Apagar toda posição nas reproduções\? Mude as pastas de download para surtir efeito Alterar serviço, selecionados: Quiosque Padrão @@ -527,4 +527,20 @@ abrir em modo popup O idioma será atualizado assim que o aplicativo for reiniciado. Duração do avançar/retroceder rápido Instâncias PeerTube + Selecione instâncias PeerTube favoritas + Encontre instâncias PeerTube em %s + Adicionar instância + Insira o link aqui + Não foi possível acessá-la + Apenas HTTPS são suportados + Instância já existe + Local + Recentes + Em alta + Gerado automaticamente (sem criador) + recuperando + Não foi possível recuperar o download + Escolha uma instância + Ativar capa do vídeo na tela de bloqueio + Mostra capa do vídeo na tela de bloqueio ao usar player em segundo plano \ No newline at end of file From 948d57d3d12df5691373fab78e9d280656432f11 Mon Sep 17 00:00:00 2001 From: Matsuri Date: Fri, 10 Jan 2020 03:54:47 +0000 Subject: [PATCH 91/99] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.3% (511 of 525 strings) --- app/src/main/res/values-b+zh+HANS+CN/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-b+zh+HANS+CN/strings.xml b/app/src/main/res/values-b+zh+HANS+CN/strings.xml index e246d54eb..cfa443afc 100644 --- a/app/src/main/res/values-b+zh+HANS+CN/strings.xml +++ b/app/src/main/res/values-b+zh+HANS+CN/strings.xml @@ -512,7 +512,7 @@ 没人在听 %s 人在听 - + 重新启动应用后,语言将更改。 PeerTube 服务器 @@ -531,4 +531,6 @@ 无法恢复此下载 选择一个服务器 快进 / 快退的单位时间 + 在锁屏界面显示视频缩略图 + 在后台播放时,锁屏界面将会显示视频的缩略图 \ No newline at end of file From bd8014bcbdac1cb9187424e14d77a44ffbbdf7af Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 9 Jan 2020 03:16:04 +0000 Subject: [PATCH 92/99] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-zh-rTW/strings.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 9713e4665..6cb16623f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -515,12 +515,12 @@ 語言將會在重新啟動應用程式後變更。 快轉/快退搜尋持續時間 PeerTube 站臺 - 設定您最愛的 PeerTube 站臺 - 在 https://joinpeertube.org/instances#instances-list 上找到最適合您的站臺 + 選取您最愛的 PeerTube 站臺 + 在 %s 上找到最適合您的站臺 新增站臺 輸入站臺 URL - 驗證站臺失敗 - 僅支援 https URL + 無法驗證站臺 + 僅支援 HTTPS URL 站臺已存在 本機 最近新增 @@ -529,4 +529,6 @@ 正在恢復 無法復原此下載 選擇一個站臺 + 啟用鎖定畫面影片縮圖 + 使用背景播放器時,鎖定畫面上將會顯示影片縮圖 \ No newline at end of file From bfead79c07a3fd5593e5aae576d495426ba8a05c Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 8 Jan 2020 19:54:22 +0000 Subject: [PATCH 93/99] Translated using Weblate (Hebrew) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-he/strings.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index f98fb7b3e..d1a72739d 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -531,12 +531,12 @@ קיוסק בררת מחדל משך קפיצה מהירה קדימה/אחורה מופעים של PeerTube - נא להגדיר את מופעי ה־peertube המועדפים עליך - איתור המופעים שהכי מתאימים לך תחת https://joinpeertube.org/instances#instances-list + נא לבחור את מופעי ה־PeerTube המועדפים עליך + איתור המופעים שהכי מתאימים לך תחת %s הוספת מופע נא להכניס כתובת מופע - אימות המופע נכשל - יש תמיכה בכתובות https בלבד + לא ניתן לאמת את המופע + יש תמיכה בכתובות HTTPS בלבד המופע כבר קיים מקומי נוספו לאחרונה @@ -545,4 +545,6 @@ בשחזור לא ניתן לשחזר את ההורדה הזאת נא לבחור מופע + הפעלת תמונה מוקטנת של הסרטון במסך הנעילה + בעת השימוש בנגן הרקע תופיע תמונה מוקטנת של הסרטון על מסך הנעילה \ No newline at end of file From 335e5c05dbe59a51442d4023be295ab9bf2eb84f Mon Sep 17 00:00:00 2001 From: MohammedSR Vevo Date: Thu, 9 Jan 2020 19:32:30 +0000 Subject: [PATCH 94/99] Translated using Weblate (Kurdish) Currently translated at 100.0% (525 of 525 strings) --- app/src/main/res/values-ku/strings.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 938175f71..50350e1b3 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -497,8 +497,8 @@ کیۆسکی بنەڕەتی خێرا بردنە پێشەوە\\ گێڕانەوە بۆکاتی سەرەتا دۆخی PeerTube - ئارەزوومەندییەکانی دۆخی PeerTube ڕێکبخە - ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە https://joinpeertube.org/instances#instances-list + ئارەزوومەندییەکانی دۆخی پێرتوبی ڕێکبخە + ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە %s زیادکردنی دۆخ بەستەری دۆخ دابنێ ناتوانرێ پشتگیری دۆخەکە بکرێ @@ -536,4 +536,6 @@ دەگەڕێنرێتەوە ناتوانرێ ئەم داگرتنە بهێنرێتەوە دۆخێک هەڵبژێرە + چالاککردنی وێنۆچکەی ڤیدیۆی داخستنی ڕوونما + کاتێ کارپێکەری پاشبنەما کاردەکات ئەوا وێنۆچکەی ڤیدیۆکە لە ڕوونما داخراوەکەدا نیشاندەدرێت \ No newline at end of file From 92b1fa5743bbeed427685622ff1b996d45dca68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Thu, 9 Jan 2020 17:28:27 +0000 Subject: [PATCH 95/99] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 96.2% (505 of 525 strings) --- app/src/main/res/values-nb-rNO/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 8afd21f54..1038d15c4 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -517,4 +517,8 @@ Språk vil ikke bli endret før programmet startes på ny. Forvalgt kiosk PeerTube-instanser + Lokal + Nylig lagt til + Mest likt + Velg en instans \ No newline at end of file From 1a8be2bbf5aaba87fe82edab61477c002122ae84 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Sat, 11 Jan 2020 11:58:45 +0000 Subject: [PATCH 96/99] Translated using Weblate (Interlingua) Currently translated at 11.4% (60 of 525 strings) --- app/src/main/res/values-ia/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index f077e3e24..6bbcac7b3 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -33,4 +33,5 @@ Pausar le discargas Seliger un instantia Non poteva connecter con le servitor + %1$s vistas \ No newline at end of file From 36e38e50e950d1988db5c8c6fedb227d7aa215ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=ADs=20B?= Date: Mon, 13 Jan 2020 13:23:43 +0000 Subject: [PATCH 97/99] Translated using Weblate (Occitan) Currently translated at 10.1% (53 of 525 strings) --- app/src/main/res/values-oc/strings.xml | 32 ++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml index 0e5b7ccd6..190c2c890 100644 --- a/app/src/main/res/values-oc/strings.xml +++ b/app/src/main/res/values-oc/strings.xml @@ -1,2 +1,30 @@ - - + + + %1$s vistas + Publicat lo %1$s + Cap de lector de flus trobat. Volètz installar VLC\? + Cap de lector de flus trobat (podètz installar VLC per lo legir). + Installar + Anullar + Dobrir dins lo navegador + Dobrir en mòde fenestron + Partejar + Telecargar + Telecargar lo fichièr de flus + Recercar + Paramètres + Voliatz dire: %1$s\? + Partejar amb + Causir un navegador + rotacion + Utilizar un lector de vidèo extèrne + Mòde fenestron de NewPipe + S\'abonar + Abonat + Anullar abonament + Impossible de cambiar l\'abonament + Impossible d\'actualizar l\'abonament + Afichar las informacions + Principal + Abonaments + \ No newline at end of file From 3d93ecd6ec35467191178e35dc64ca8a7716e41d Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 13 Jan 2020 20:25:32 +0100 Subject: [PATCH 98/99] Use Integer value directly for formatted string a --- .../main/java/us/shandian/giga/ui/adapter/MissionAdapter.java | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index fac196e0b..aaf7826ef 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -580,7 +580,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb } applyChanges(); - String msg = String.format(mContext.getString(R.string.deleted_downloads), String.valueOf(mHidden.size())); + String msg = String.format(mContext.getString(R.string.deleted_downloads), mHidden.size()); mSnackbar = Snackbar.make(mView, msg, Snackbar.LENGTH_INDEFINITE); mSnackbar.setAction(R.string.undo, s -> { Iterator i = mHidden.iterator(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 431f05d5a..e1b2cc0a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -572,7 +572,7 @@ Clear download history Do you want to clear your download history or delete all downloaded files? Delete downloaded files - Deleted %s downloads + Deleted %1$s downloads Stop Maximum retries Maximum number of attempts before canceling the download From 9f47a274a865e9a4ef2c072e44e74f702d45c1d5 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 13 Jan 2020 20:40:11 +0100 Subject: [PATCH 99/99] Update extractor version TeamNewPipe/NewPipeExtractor@bdbfa268355fea58d3a11ac2fae61a066f7fb693 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index f7017a6df..219d2b202 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,7 @@ dependencies { exclude module: 'support-annotations' }) - implementation 'com.github.TeamNewPipe:NewPipeExtractor:8e53fda' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:bdbfa26' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.23.0'