1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2026-01-14 02:32:40 +00:00

Compare commits

...

23 Commits

Author SHA1 Message Date
Christian Schabesberger
70541bf561 moved on to version 0.9.5 2017-05-07 20:05:00 +02:00
Christian Schabesberger
48dd8e88e3 Merge branch 'master' of github.com:theScrabi/NewPipe 2017-05-07 19:48:21 +02:00
Eduardo Caron
52c2e0899d Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.4% (166 of 167 strings)
2017-05-07 18:46:09 +02:00
Christian Schabesberger
9955d5b62f Merge branch 'resize' 2017-05-04 21:31:38 +02:00
Marian Hanzel
8e26247fa1 Translated using Weblate (Slovak)
Currently translated at 100.0% (167 of 167 strings)
2017-05-04 21:02:23 +02:00
Weblate
72924e2692 Merge remote-tracking branch 'origin/master' 2017-05-04 18:46:39 +02:00
Eduardo Caron
8c2c8d630f Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.8% (165 of 167 strings)
2017-05-04 18:46:39 +02:00
Freddy Morán Jr
5ccf0baa6b Translated using Weblate (Spanish)
Currently translated at 100.0% (167 of 167 strings)
2017-05-04 18:46:36 +02:00
Christian Schabesberger
8fff0ccdf2 Merge pull request #532 from mauriciocolli/improve-readme
Update Readme
2017-05-04 00:10:44 +02:00
Mauricio Colli
35264bfb97 Update Readme 2017-05-03 16:13:31 -03:00
Matej U
4c9b0dc8e9 Translated using Weblate (Slovenian)
Currently translated at 100.0% (167 of 167 strings)
2017-05-02 21:02:58 +02:00
Freddy Morán Jr
4deb7caa83 Translated using Weblate (Spanish)
Currently translated at 100.0% (167 of 167 strings)
2017-05-02 17:22:14 +02:00
Enol P
45f1a512b4 Translated using Weblate (Asturian)
Currently translated at 98.2% (164 of 167 strings)
2017-05-01 18:44:12 +02:00
Mladen Pejaković
ab95fdc087 Translated using Weblate (Serbian)
Currently translated at 99.4% (166 of 167 strings)
2017-05-01 15:46:36 +02:00
Christian Schabesberger
df608b9ded Merge branch 'feature-resize' of https://github.com/mauriciocolli/NewPipe into resize 2017-05-01 15:15:30 +02:00
Tobias Groza
6a4c81d160 Translated using Weblate (German)
Currently translated at 98.2% (164 of 167 strings)
2017-05-01 12:45:14 +02:00
Mauricio Colli
040d658540 Implement resizable popup 2017-05-01 02:23:50 -03:00
naofum
cbc9913e9c Translated using Weblate (Japanese)
Currently translated at 100.0% (167 of 167 strings)
2017-04-30 05:47:23 +02:00
Wout Bertrums
f007cbd5ee Translated using Weblate (Dutch)
Currently translated at 100.0% (167 of 167 strings)
2017-04-29 18:46:39 +02:00
zmni
7351591df7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (167 of 167 strings)
2017-04-29 16:52:22 +02:00
monolifed
5222d4cbba Translated using Weblate (Turkish)
Currently translated at 100.0% (167 of 167 strings)
2017-04-29 09:48:33 +02:00
Weblate
ef9966815e Merge remote-tracking branch 'origin/master' 2017-04-29 08:27:55 +02:00
ad73440ce9 Translated using Weblate (Czech)
Currently translated at 93.9% (154 of 164 strings)
2017-04-29 08:27:51 +02:00
27 changed files with 285 additions and 43 deletions

View File

@@ -19,11 +19,11 @@ Project status:
## Screenshots
[<img src="screenshots/screenshot_1.png" width=150>](screenshots/screenshot_1.png)
[<img src="screenshots/screenshot_2.png" width=150>](screenshots/screenshot_2.png)
[<img src="screenshots/screenshot_3.png" width=150>](screenshots/screenshot_3.png)
[<img src="screenshots/screenshot_4.png" width=150>](screenshots/screenshot_4.png)
[<img src="screenshots/screenshot_5.png" width=150>](screenshots/screenshot_5.png)
[<img src="screenshots/screenshot_1.png" width=160>](screenshots/screenshot_1.png)
[<img src="screenshots/screenshot_2.png" width=160>](screenshots/screenshot_2.png)
[<img src="screenshots/screenshot_3.png" width=160>](screenshots/screenshot_3.png)
[<img src="screenshots/screenshot_4.png" width=160>](screenshots/screenshot_4.png)
[<img src="screenshots/screenshot_5.png" width=160>](screenshots/screenshot_5.png)
## Description
@@ -35,6 +35,7 @@ NewPipe does not use any Google framework libraries, or the YouTube API. It only
* Display general information about a video
* Watch YouTube videos
* Listen to YouTube videos (experimental)
* Popup mode (floating player)
* Select the streaming player to watch the video with
* Download videos
* Download audio only

View File

@@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 15
targetSdkVersion 25
versionCode 31
versionName "0.9.4"
versionCode 32
versionName "0.9.5"
}
buildTypes {
release {

View File

@@ -19,6 +19,7 @@ import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -420,7 +421,10 @@ public class VideoDetailFragment extends BaseFragment implements StreamExtractor
if (isLoading.get()) return;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !PermissionHelper.checkSystemAlertWindowPermission(activity)) {
Toast.makeText(activity, R.string.msg_popup_permission, Toast.LENGTH_LONG).show();
Toast toast = Toast.makeText(activity, R.string.msg_popup_permission, Toast.LENGTH_LONG);
TextView messageView = (TextView) toast.getView().findViewById(android.R.id.message);
if (messageView != null) messageView.setGravity(Gravity.CENTER);
toast.show();
return;
}

View File

@@ -7,13 +7,14 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -24,6 +25,7 @@ import android.view.View;
import android.view.WindowManager;
import android.widget.PopupMenu;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.widget.Toast;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
@@ -58,14 +60,19 @@ public class PopupVideoPlayer extends Service {
public static final String ACTION_OPEN_DETAIL = "org.schabi.newpipe.player.PopupVideoPlayer.OPEN_DETAIL";
public static final String ACTION_REPEAT = "org.schabi.newpipe.player.PopupVideoPlayer.REPEAT";
private static final String POPUP_SAVED_WIDTH = "popup_saved_width";
private static final String POPUP_SAVED_X = "popup_saved_x";
private static final String POPUP_SAVED_Y = "popup_saved_y";
private WindowManager windowManager;
private WindowManager.LayoutParams windowLayoutParams;
private GestureDetector gestureDetector;
private float screenWidth, screenHeight;
private float popupWidth, popupHeight;
private float currentPopupHeight = 110.0f * Resources.getSystem().getDisplayMetrics().density;
//private float minimumHeight = 100; // TODO: Use it when implementing the resize of the popup
private float minimumWidth, minimumHeight;
private float maximumWidth, maximumHeight;
private final String setAlphaMethodName = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) ? "setImageAlpha" : "setAlpha";
private NotificationManager notificationManager;
@@ -114,6 +121,8 @@ public class PopupVideoPlayer extends Service {
@Override
public void onConfigurationChanged(Configuration newConfig) {
updateScreenSize();
updatePopupSize(windowLayoutParams.width, -1);
checkPositionBounds();
}
@Override
@@ -129,6 +138,8 @@ public class PopupVideoPlayer extends Service {
currentExtractorWorker.cancel();
currentExtractorWorker = null;
}
savePositionAndSize();
}
@Override
@@ -144,21 +155,33 @@ public class PopupVideoPlayer extends Service {
private void initPopup() {
if (DEBUG) Log.d(TAG, "initPopup() called");
View rootView = View.inflate(this, R.layout.player_popup, null);
playerImpl.setup(rootView);
updateScreenSize();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean popupRememberSizeAndPos = sharedPreferences.getBoolean(getString(R.string.popup_remember_size_pos_key), true);
float defaultSize = getResources().getDimension(R.dimen.popup_default_width);
popupWidth = popupRememberSizeAndPos ? sharedPreferences.getFloat(POPUP_SAVED_WIDTH, defaultSize) : defaultSize;
windowLayoutParams = new WindowManager.LayoutParams(
(int) getMinimumVideoWidth(currentPopupHeight), (int) currentPopupHeight,
(int) popupWidth, (int) getMinimumVideoHeight(popupWidth),
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
windowLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
int centerX = (int) (screenWidth / 2f - popupWidth / 2f);
int centerY = (int) (screenHeight / 2f - popupHeight / 2f);
windowLayoutParams.x = popupRememberSizeAndPos ? sharedPreferences.getInt(POPUP_SAVED_X, centerX) : centerX;
windowLayoutParams.y = popupRememberSizeAndPos ? sharedPreferences.getInt(POPUP_SAVED_Y, centerY) : centerY;
checkPositionBounds();
MySimpleOnGestureListener listener = new MySimpleOnGestureListener();
gestureDetector = new GestureDetector(this, listener);
gestureDetector.setIsLongpressEnabled(false);
//gestureDetector.setIsLongpressEnabled(false);
rootView.setOnTouchListener(listener);
playerImpl.getLoadingPanel().setMinimumWidth(windowLayoutParams.width);
playerImpl.getLoadingPanel().setMinimumHeight(windowLayoutParams.height);
@@ -219,13 +242,13 @@ public class PopupVideoPlayer extends Service {
notificationManager.notify(NOTIFICATION_ID, notBuilder.build());
}
/*//////////////////////////////////////////////////////////////////////////
// Misc
//////////////////////////////////////////////////////////////////////////*/
public void onVideoClose() {
if (DEBUG) Log.d(TAG, "onVideoClose() called");
savePositionAndSize();
stopSelf();
}
@@ -245,10 +268,23 @@ public class PopupVideoPlayer extends Service {
// Utils
//////////////////////////////////////////////////////////////////////////*/
private float getMinimumVideoWidth(float height) {
float width = height * (16.0f / 9.0f); // Respect the 16:9 ratio that most videos have
if (DEBUG) Log.d(TAG, "getMinimumVideoWidth() called with: height = [" + height + "], returned: " + width);
return width;
private void checkPositionBounds() {
if (windowLayoutParams.x > screenWidth - windowLayoutParams.width) windowLayoutParams.x = (int) (screenWidth - windowLayoutParams.width);
if (windowLayoutParams.x < 0) windowLayoutParams.x = 0;
if (windowLayoutParams.y > screenHeight - windowLayoutParams.height) windowLayoutParams.y = (int) (screenHeight - windowLayoutParams.height);
if (windowLayoutParams.y < 0) windowLayoutParams.y = 0;
}
private void savePositionAndSize() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(PopupVideoPlayer.this);
sharedPreferences.edit().putInt(POPUP_SAVED_X, windowLayoutParams.x).apply();
sharedPreferences.edit().putInt(POPUP_SAVED_Y, windowLayoutParams.y).apply();
sharedPreferences.edit().putFloat(POPUP_SAVED_WIDTH, windowLayoutParams.width).apply();
}
private float getMinimumVideoHeight(float width) {
//if (DEBUG) Log.d(TAG, "getMinimumVideoHeight() called with: width = [" + width + "], returned: " + height);
return width / (16.0f / 9.0f); // Respect the 16:9 ratio that most videos have
}
private void updateScreenSize() {
@@ -258,11 +294,39 @@ public class PopupVideoPlayer extends Service {
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
if (DEBUG) Log.d(TAG, "updateScreenSize() called > screenWidth = " + screenWidth + ", screenHeight = " + screenHeight);
popupWidth = getResources().getDimension(R.dimen.popup_default_width);
popupHeight = getMinimumVideoHeight(popupWidth);
minimumWidth = getResources().getDimension(R.dimen.popup_minimum_width);
minimumHeight = getMinimumVideoHeight(minimumWidth);
maximumWidth = screenWidth;
maximumHeight = screenHeight;
}
private void updatePopupSize(int width, int height) {
//if (DEBUG) Log.d(TAG, "updatePopupSize() called with: width = [" + width + "], height = [" + height + "]");
width = (int) (width > maximumWidth ? maximumWidth : width < minimumWidth ? minimumWidth : width);
if (height == -1) height = (int) getMinimumVideoHeight(width);
else height = (int) (height > maximumHeight ? maximumHeight : height < minimumHeight ? minimumHeight : height);
windowLayoutParams.width = width;
windowLayoutParams.height = height;
popupWidth = width;
popupHeight = height;
if (DEBUG) Log.d(TAG, "updatePopupSize() updated values: width = [" + width + "], height = [" + height + "]");
windowManager.updateViewLayout(playerImpl.getRootView(), windowLayoutParams);
}
///////////////////////////////////////////////////////////////////////////
private class VideoPlayerImpl extends VideoPlayer {
private TextView resizingIndicator;
VideoPlayerImpl() {
super("VideoPlayerImpl" + PopupVideoPlayer.TAG, PopupVideoPlayer.this);
}
@@ -271,13 +335,20 @@ public class PopupVideoPlayer extends Service {
public void playUrl(String url, String format, boolean autoPlay) {
super.playUrl(url, format, autoPlay);
windowLayoutParams.width = (int) getMinimumVideoWidth(currentPopupHeight);
windowLayoutParams.width = (int) popupWidth;
windowLayoutParams.height = (int) getMinimumVideoHeight(popupWidth);
windowManager.updateViewLayout(getRootView(), windowLayoutParams);
notBuilder = createNotification();
startForeground(NOTIFICATION_ID, notBuilder.build());
}
@Override
public void initViews(View rootView) {
super.initViews(rootView);
resizingIndicator = (TextView) rootView.findViewById(R.id.resizing_indicator);
}
@Override
public void destroy() {
super.destroy();
@@ -422,12 +493,21 @@ public class PopupVideoPlayer extends Service {
showAndAnimateControl(R.drawable.ic_replay_white, false);
}
@SuppressWarnings("WeakerAccess")
public TextView getResizingIndicator() {
return resizingIndicator;
}
}
private class MySimpleOnGestureListener extends GestureDetector.SimpleOnGestureListener implements View.OnTouchListener {
private int initialPopupX, initialPopupY;
private boolean isMoving;
private int onDownPopupWidth = 0;
private boolean isResizing;
private boolean isResizingRightSide;
@Override
public boolean onDoubleTap(MotionEvent e) {
if (DEBUG) Log.d(TAG, "onDoubleTap() called with: e = [" + e + "]" + "rawXy = " + e.getRawX() + ", " + e.getRawY() + ", xy = " + e.getX() + ", " + e.getY());
@@ -450,15 +530,32 @@ public class PopupVideoPlayer extends Service {
if (DEBUG) Log.d(TAG, "onDown() called with: e = [" + e + "]");
initialPopupX = windowLayoutParams.x;
initialPopupY = windowLayoutParams.y;
popupWidth = playerImpl.getRootView().getWidth();
popupHeight = playerImpl.getRootView().getHeight();
popupWidth = windowLayoutParams.width;
popupHeight = windowLayoutParams.height;
onDownPopupWidth = windowLayoutParams.width;
return false;
}
@Override
public void onLongPress(MotionEvent e) {
if (DEBUG) Log.d(TAG, "onLongPress() called with: e = [" + e + "]");
playerImpl.showAndAnimateControl(-1, true);
playerImpl.getLoadingPanel().setVisibility(View.GONE);
playerImpl.animateView(playerImpl.getControlsRoot(), false, 0, 0);
playerImpl.animateView(playerImpl.getCurrentDisplaySeek(), false, 0, 0);
playerImpl.animateView(playerImpl.getResizingIndicator(), true, 200, 0);
isResizing = true;
isResizingRightSide = e.getRawX() > windowLayoutParams.x + (windowLayoutParams.width / 2f);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (!isMoving || playerImpl.getControlsRoot().getAlpha() != 1f) playerImpl.animateView(playerImpl.getControlsRoot(), true, 30, 0);
if (isResizing) return false;
if (!isMoving || playerImpl.getControlsRoot().getAlpha() != 1f) playerImpl.animateView(playerImpl.getControlsRoot(), true, 0, 0);
isMoving = true;
float diffX = (int) (e2.getRawX() - e1.getRawX()), posX = (int) (initialPopupX + diffX);
float diffY = (int) (e2.getRawY() - e1.getRawY()), posY = (int) (initialPopupY + diffY);
@@ -477,7 +574,7 @@ public class PopupVideoPlayer extends Service {
", e2.getRaw = [" + e2.getRawX() + ", " + e2.getRawY() + "]" +
", distanceXy = [" + distanceX + ", " + distanceY + "]" +
", posXy = [" + posX + ", " + posY + "]" +
", popupWh rootView.get wh = [" + popupWidth + " x " + popupHeight + "]");
", popupWh = [" + popupWidth + " x " + popupHeight + "]");
windowManager.updateViewLayout(playerImpl.getRootView(), windowLayoutParams);
return true;
}
@@ -492,9 +589,31 @@ public class PopupVideoPlayer extends Service {
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP && isMoving) {
isMoving = false;
onScrollEnd();
if (event.getAction() == MotionEvent.ACTION_MOVE && isResizing && !isMoving) {
//if (DEBUG) Log.d(TAG, "onTouch() ACTION_MOVE > v = [" + v + "], e1.getRaw = [" + event.getRawX() + ", " + event.getRawY() + "]");
int width;
if (isResizingRightSide) width = (int) event.getRawX() - windowLayoutParams.x;
else {
width = (int) (windowLayoutParams.width + (windowLayoutParams.x - event.getRawX()));
if (width > minimumWidth) windowLayoutParams.x = initialPopupX - (width - onDownPopupWidth);
}
if (width <= maximumWidth && width >= minimumWidth) updatePopupSize(width, -1);
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
if (DEBUG) Log.d(TAG, "onTouch() ACTION_UP > v = [" + v + "], e1.getRaw = [" + event.getRawX() + ", " + event.getRawY() + "]");
if (isMoving) {
isMoving = false;
onScrollEnd();
}
if (isResizing) {
isResizing = false;
playerImpl.animateView(playerImpl.getResizingIndicator(), false, 100, 0);
playerImpl.changeState(playerImpl.getCurrentState());
}
savePositionAndSize();
}
return true;
}

View File

@@ -5,7 +5,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:gravity="center">
android:gravity="center"
tools:layout_width="@dimen/popup_default_width"
tools:layout_height="101.25dp">
<com.google.android.exoplayer2.ui.AspectRatioFrameLayout
@@ -189,4 +191,21 @@
android:layout_height="wrap_content"
android:indeterminate="true"/>
</RelativeLayout>
<TextView
android:id="@+id/resizing_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:background="#6e000000"
android:gravity="center"
android:padding="5dp"
android:text="@string/popup_resizing_indicator_title"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="gone"
tools:ignore="RtlHardcoded"
tools:visibility="visible"/>
</FrameLayout>

View File

@@ -183,4 +183,14 @@ abrir en ventanu emerxente</string>
<string name="reCaptcha_title">Prueba reCAPTCHA</string>
<string name="recaptcha_request_toast">Prueba reCAPTCHA solicitada</string>
<string name="controls_background_title">Fondu</string>
<string name="controls_popup_title">Ventanu emerxente</string>
<string name="default_popup_resolution_title">Resolución por defeutu de ventanu emerxente</string>
<string name="show_higher_resolutions_title">Amosar resoluciones más altes</string>
<string name="show_higher_resolutions_summary">Namái dellos preseos sofiten vídeos en 2k/4k</string>
<string name="filter">Peñera</string>
<string name="refresh">Refrescar</string>
<string name="clear">Llimpiar</string>
</resources>

View File

@@ -183,4 +183,5 @@ Chcete restartovat ihned?</string>
<string name="msg_popup_permission">Toto oprávnění je vyžadováno pro
otevření ve vyskakovacím okně</string>
<string name="use_old_player_title">Použít starý přehrávač</string>
</resources>

View File

@@ -199,4 +199,7 @@ Möchten Sie jetzt neu starten?</string>
<string name="default_popup_resolution_title">Standardauflösung des Popups</string>
<string name="show_higher_resolutions_title">Zeige höhere Auflösungen an</string>
<string name="show_higher_resolutions_summary">Nur einige Geräte unterstützen das Abspielen von 2k-/4k-Videos</string>
<string name="controls_background_title">Hintergrund</string>
<string name="controls_popup_title">Popup</string>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="view_count_text">%1$s reproducciones</string>
<string name="view_count_text">%1$s visualizaciones</string>
<string name="upload_date_text">Publicado en %1$s</string>
<string name="no_player_found">No se encontró ningún reproductor de vídeo. ¿Desea instalar VLC?</string>
<string name="install">Instalar</string>
@@ -188,11 +188,18 @@ abrir en modo popup</string>
<string name="popup_playing_toast">Reproduciendo en modo popup</string>
<string name="use_old_player_title">Usar reproductor antiguo</string>
<string name="use_old_player_summary">Versión antigua en reproductor Mediaframework.</string>
<string name="preferred_video_format_title">Formato de vídeo preferido</string>
<string name="preferred_video_format_title">Formato de vídeo por defecto</string>
<string name="disabled">Desactivado</string>
<string name="subscriber_plural">Suscriptores</string>
<string name="show_higher_resolutions_title">Mostrar resoluciones más altas</string>
<string name="show_higher_resolutions_summary">Solo algunos dispositivos soportan reproducción de vídeos de 2k/4k</string>
<string name="default_popup_resolution_title">Resolución predeterminada del popup</string>
<string name="show_higher_resolutions_summary">Sólo algunos dispositivos soportan reproducción de vídeos en 2K/4K</string>
<string name="default_popup_resolution_title">Resolución del popup por defecto</string>
<string name="controls_background_title">Segundo plano</string>
<string name="controls_popup_title">Popup</string>
<string name="filter">Filtro</string>
<string name="refresh">Actualizar</string>
<string name="clear">Limpiar</string>
</resources>

View File

@@ -194,4 +194,11 @@ membuka di mode popup</string>
<string name="default_popup_resolution_title">Resolusi popup bawaan</string>
<string name="show_higher_resolutions_title">Tampilkan resolusi yang lebih tinggi</string>
<string name="show_higher_resolutions_summary">Hanya perangkat tertentu yang mendukung pemutaran video 2k/4k</string>
<string name="controls_background_title">Latar Belakang</string>
<string name="controls_popup_title">Popup</string>
<string name="refresh">Segarkan</string>
<string name="clear">Bersihkan</string>
<string name="filter">Filter</string>
</resources>

View File

@@ -201,4 +201,11 @@
<string name="default_popup_resolution_title">デフォルトのポップアップ解像度</string>
<string name="show_higher_resolutions_title">高い解像度で表示</string>
<string name="show_higher_resolutions_summary">一部のデバイスのみ 2K/4K ビデオの再生をサポートしています</string>
<string name="controls_background_title">背景</string>
<string name="controls_popup_title">ポップアップ</string>
<string name="filter">フィルター</string>
<string name="refresh">更新</string>
<string name="clear">クリア</string>
</resources>

View File

@@ -192,4 +192,11 @@ te openen in pop-upmodus</string>
<string name="default_popup_resolution_title">Standaardresolutie voor pop-up</string>
<string name="show_higher_resolutions_title">Hogere resoluties weergeven</string>
<string name="show_higher_resolutions_summary">Video\'s afspelen in 2k/4k wordt maar op sommige apparaten ondersteund</string>
<string name="controls_background_title">Achtergrond</string>
<string name="controls_popup_title">Pop-up</string>
<string name="filter">Filter</string>
<string name="refresh">Verversen</string>
<string name="clear">Wissen</string>
</resources>

View File

@@ -175,4 +175,10 @@ abrir em modo popup</string>
<string name="popup_mode_share_menu_title">Modo de popup NewPipe</string>
<string name="filter">Filtro</string>
<string name="refresh">Atualizar</string>
<string name="clear">Limpar</string>
<string name="controls_popup_title">Popup</string>
</resources>

View File

@@ -196,4 +196,11 @@ otvorenie okna na popredí</string>
<string name="default_popup_resolution_title">Predvolená veľkosť okna</string>
<string name="show_higher_resolutions_title">Zobraziť vyššie rozlíšenie</string>
<string name="show_higher_resolutions_summary">Len niektoré zariadenia podporujú videá 2k/4k</string>
<string name="controls_background_title">Pozadie</string>
<string name="controls_popup_title">V okne</string>
<string name="filter">Filter</string>
<string name="refresh">Obnoviť</string>
<string name="clear">Vyčistiť</string>
</resources>

View File

@@ -199,4 +199,11 @@ odpiranje v pojavnem načinu</string>
<string name="show_higher_resolutions_title">Pokaži večje ločljivosti</string>
<string name="show_higher_resolutions_summary">Predvajanje posnetkov 2k/4k omogočajo le nekatere naprave.</string>
<string name="subscriber_plural">naročniki</string>
<string name="controls_background_title">Ozadje</string>
<string name="controls_popup_title">Pojavno okno</string>
<string name="filter">Filter</string>
<string name="refresh">Osveži</string>
<string name="clear">Počisti</string>
</resources>

View File

@@ -202,4 +202,11 @@
<string name="show_higher_resolutions_title">Прикажи више резолуције</string>
<string name="show_higher_resolutions_summary">Само неки уређаји подржавају пуштање 2k/4k видеа</string>
<string name="subscriber_plural">пријављених</string>
<string name="filter">Филтер</string>
<string name="refresh">Освежи</string>
<string name="clear">Очисти</string>
<string name="controls_background_title">Позадина</string>
<string name="controls_popup_title">Прозорче</string>
</resources>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="popup_default_width">230dp</dimen>
<dimen name="popup_minimum_width">140dp</dimen>
<!-- Video Item Detail View Dimensions-->
<!-- Text Size -->
<dimen name="channel_item_detail_title_text_size">18sp</dimen>

View File

@@ -189,4 +189,11 @@ açmak için gerekli</string>
<string name="reCaptcha_title">reCAPTCHA Formu</string>
<string name="recaptcha_request_toast">reCAPTCHA Formu istendi</string>
<string name="controls_background_title">Arkaplan</string>
<string name="controls_popup_title">ılır Pencere</string>
<string name="filter">Süzgeç</string>
<string name="refresh">Yenile</string>
<string name="clear">Temizle</string>
</resources>

View File

@@ -17,7 +17,8 @@
<dimen name="video_item_search_duration_horizontal_padding">5sp</dimen>
<dimen name="video_item_search_duration_margin">2sp</dimen>
<!-- Miscellaneous -->
<dimen name="popup_default_width">180dp</dimen>
<dimen name="popup_minimum_width">120dp</dimen>
<!-- Video Item Detail View Dimensions-->
<!-- Text Size -->
<dimen name="video_item_detail_title_text_size">16sp</dimen>

View File

@@ -2,6 +2,7 @@
<resources translatable="false">
<!-- Categories -->
<string name="settings_category_video_audio" translatable="false">settings_category_video_audio</string>
<string name="settings_category_popup" translatable="false">settings_category_popup</string>
<string name="settings_category_appearance" translatable="false">settings_category_appearance</string>
<string name="settings_content_options" translatable="false">settings_content_options</string>
<string name="settings_category_other" translatable="false">settings_category_other</string>
@@ -27,6 +28,8 @@
<item>144p</item>
</string-array>
<string name="popup_remember_size_pos_key" translatable="false">popup_remember_size_pos_key</string>
<string name="default_popup_resolution_key" translatable="false">default_popup_resolution_key</string>
<string name="default_popup_resolution_value" translatable="false">480p</string>

View File

@@ -59,6 +59,8 @@
<string name="light_theme_title">Light</string>
<string name="dark_theme_title">Dark</string>
<string name="black_theme_title">Black</string>
<string name="popup_remember_size_pos_title">Remember popup size and position</string>
<string name="popup_remember_size_pos_summary">Remember the last size and position set to the popup</string>
<string name="download_dialog_title">Download</string>
<string-array name="download_options">
@@ -86,6 +88,7 @@
<string name="similar_videos_btn_text">Similar videos</string>
<string name="search_language_title">Preferred content language</string>
<string name="settings_category_video_audio_title">Video &amp; Audio</string>
<string name="settings_category_popup_title">Popup</string>
<string name="settings_category_appearance_title">Appearance</string>
<string name="settings_category_other_title">Other</string>
<string name="background_player_time_text" translatable="false">%1$s - NewPipe</string>
@@ -109,6 +112,7 @@
<string name="filter">Filter</string>
<string name="refresh">Refresh</string>
<string name="clear">Clear</string>
<string name="popup_resizing_indicator_title">Resizing</string>
<!-- error strings -->
<string name="general_error">Error</string>

View File

@@ -27,14 +27,6 @@
android:summary="%s"
android:defaultValue="@string/default_resolution_value"/>
<ListPreference
android:key="@string/default_popup_resolution_key"
android:title="@string/default_popup_resolution_title"
android:entries="@array/resolution_list"
android:entryValues="@array/resolution_list"
android:summary="%s"
android:defaultValue="@string/default_popup_resolution_value"/>
<CheckBoxPreference
android:key="@string/show_higher_resolutions_key"
android:title="@string/show_higher_resolutions_title"
@@ -64,6 +56,28 @@
android:summary="@string/use_old_player_summary"
android:defaultValue="false"/>
</PreferenceCategory>
<PreferenceCategory
android:key="@string/settings_category_popup"
android:title="@string/settings_category_popup_title"
android:textAllCaps="true">
<ListPreference
android:key="@string/default_popup_resolution_key"
android:title="@string/default_popup_resolution_title"
android:entries="@array/resolution_list"
android:entryValues="@array/resolution_list"
android:summary="%s"
android:defaultValue="@string/default_popup_resolution_value"/>
<CheckBoxPreference
android:key="@string/popup_remember_size_pos_key"
android:title="@string/popup_remember_size_pos_title"
android:summary="@string/popup_remember_size_pos_summary"
android:defaultValue="true"/>
</PreferenceCategory>
<PreferenceCategory
android:key="@string/settings_category_appearance"
android:title="@string/settings_category_appearance_title"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 241 KiB