Compare commits
76 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8b2599297b | ||
![]() |
a9a43538be | ||
![]() |
905e4f16e2 | ||
![]() |
008489361d | ||
![]() |
dfa7fb53b2 | ||
![]() |
dc6604bcda | ||
![]() |
63194ff292 | ||
![]() |
53a727955f | ||
![]() |
a8fca89045 | ||
![]() |
1eff727722 | ||
![]() |
faefe957b0 | ||
![]() |
2fb8467673 | ||
![]() |
401422deb3 | ||
![]() |
b52ed8e4c9 | ||
![]() |
45194061b3 | ||
![]() |
ea917c82b6 | ||
![]() |
65d5303765 | ||
![]() |
08d37a4bef | ||
![]() |
da2b059802 | ||
![]() |
62d934dd8e | ||
![]() |
96086b7733 | ||
![]() |
182fc104bb | ||
![]() |
06a897fba0 | ||
![]() |
ff4b13245c | ||
![]() |
00a8906128 | ||
![]() |
8b73d2d39f | ||
![]() |
e976b3e43e | ||
![]() |
1585ca7c85 | ||
![]() |
f7697007e5 | ||
![]() |
249e9c0b52 | ||
![]() |
099d5570f4 | ||
![]() |
12bf409e10 | ||
![]() |
a01f1e64fe | ||
![]() |
5f549a8fc6 | ||
![]() |
eb144af0b9 | ||
![]() |
0d020d3a54 | ||
![]() |
e1042e326d | ||
![]() |
f085e7d362 | ||
![]() |
b995f39206 | ||
![]() |
0be78b1204 | ||
![]() |
0a67ecbc3a | ||
![]() |
c57b4ee965 | ||
![]() |
d4db7b3fc1 | ||
![]() |
e9db964a70 | ||
![]() |
90c8a714fc | ||
![]() |
d958c0c68a | ||
![]() |
377d02ab1a | ||
![]() |
2c0ad89a07 | ||
![]() |
101a8adbc2 | ||
![]() |
5009fa461c | ||
![]() |
f48f6ae5df | ||
![]() |
be504212d0 | ||
![]() |
0f075137c9 | ||
![]() |
8714664e00 | ||
![]() |
bfaf938543 | ||
![]() |
b605bc086c | ||
![]() |
e394b16335 | ||
![]() |
0457423498 | ||
![]() |
91d30dbb83 | ||
![]() |
63642a4d3e | ||
![]() |
1b64900c14 | ||
![]() |
2660178658 | ||
![]() |
3a0271cd4d | ||
![]() |
76e2a2f032 | ||
![]() |
932de969f0 | ||
![]() |
9082ab6ff7 | ||
![]() |
2461173e26 | ||
![]() |
48c2f8b91b | ||
![]() |
6766b25414 | ||
![]() |
aacaf1b3fe | ||
![]() |
4cc154cbe1 | ||
![]() |
ca030dd5ed | ||
![]() |
f000409a90 | ||
![]() |
697f0659e2 | ||
![]() |
5169ef1f00 | ||
![]() |
10faa45182 |
@@ -12,8 +12,8 @@ android {
|
||||
resValue "string", "app_name", "NewPipe"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 28
|
||||
versionCode 910
|
||||
versionName "0.19.1"
|
||||
versionCode 920
|
||||
versionName "0.19.2"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
@@ -46,6 +46,7 @@ android {
|
||||
} else {
|
||||
applicationIdSuffix ".debug." + normalizedWorkingBranch
|
||||
resValue "string", "app_name", "NewPipe " + workingBranch
|
||||
archivesBaseName = 'NewPipe_' + normalizedWorkingBranch
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -83,11 +83,12 @@ public class MainActivity extends AppCompatActivity {
|
||||
private static final String TAG = "MainActivity";
|
||||
public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release");
|
||||
|
||||
private ActionBarDrawerToggle toggle = null;
|
||||
private DrawerLayout drawer = null;
|
||||
private NavigationView drawerItems = null;
|
||||
private TextView headerServiceView = null;
|
||||
private Button toggleServiceButton = null;
|
||||
private ActionBarDrawerToggle toggle;
|
||||
private DrawerLayout drawer;
|
||||
private NavigationView drawerItems;
|
||||
private ImageView headerServiceIcon;
|
||||
private TextView headerServiceView;
|
||||
private Button toggleServiceButton;
|
||||
|
||||
private boolean servicesShown = false;
|
||||
private ImageView serviceArrow;
|
||||
@@ -285,11 +286,10 @@ public class MainActivity extends AppCompatActivity {
|
||||
View hView = navigationView.getHeaderView(0);
|
||||
|
||||
serviceArrow = hView.findViewById(R.id.drawer_arrow);
|
||||
headerServiceIcon = hView.findViewById(R.id.drawer_header_service_icon);
|
||||
headerServiceView = hView.findViewById(R.id.drawer_header_service_view);
|
||||
toggleServiceButton = hView.findViewById(R.id.drawer_header_action_button);
|
||||
toggleServiceButton.setOnClickListener(view -> {
|
||||
toggleServices();
|
||||
});
|
||||
toggleServiceButton.setOnClickListener(view -> toggleServices());
|
||||
}
|
||||
|
||||
private void toggleServices() {
|
||||
@@ -299,7 +299,6 @@ public class MainActivity extends AppCompatActivity {
|
||||
drawerItems.getMenu().removeGroup(R.id.menu_tabs_group);
|
||||
drawerItems.getMenu().removeGroup(R.id.menu_options_about_group);
|
||||
|
||||
|
||||
if(servicesShown) {
|
||||
showServices();
|
||||
} else {
|
||||
@@ -312,7 +311,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void showServices() {
|
||||
serviceArrow.setImageResource(R.drawable.ic_arrow_up_white);
|
||||
serviceArrow.setImageResource(R.drawable.ic_arrow_drop_up_white_24dp);
|
||||
|
||||
for(StreamingService s : NewPipe.getServices()) {
|
||||
final String title = s.getServiceInfo().getName() +
|
||||
@@ -370,7 +369,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
private void showTabs() throws ExtractionException {
|
||||
serviceArrow.setImageResource(R.drawable.ic_arrow_down_white);
|
||||
serviceArrow.setImageResource(R.drawable.ic_arrow_drop_down_white_24dp);
|
||||
|
||||
//Tabs
|
||||
int currentServiceId = ServiceHelper.getSelectedServiceId(this);
|
||||
@@ -428,9 +427,11 @@ public class MainActivity extends AppCompatActivity {
|
||||
// when the user returns to MainActivity
|
||||
drawer.closeDrawer(GravityCompat.START, false);
|
||||
try {
|
||||
String selectedServiceName = NewPipe.getService(
|
||||
ServiceHelper.getSelectedServiceId(this)).getServiceInfo().getName();
|
||||
final int selectedServiceId = ServiceHelper.getSelectedServiceId(this);
|
||||
final String selectedServiceName = NewPipe.getService(selectedServiceId).getServiceInfo().getName();
|
||||
headerServiceView.setText(selectedServiceName);
|
||||
headerServiceIcon.setImageResource(ServiceHelper.getIcon(selectedServiceId));
|
||||
|
||||
headerServiceView.post(() -> headerServiceView.setSelected(true));
|
||||
toggleServiceButton.setContentDescription(
|
||||
getString(R.string.drawer_header_description) + selectedServiceName);
|
||||
|
@@ -5,7 +5,7 @@ import android.view.ViewGroup;
|
||||
import org.schabi.newpipe.R;
|
||||
import org.schabi.newpipe.info_list.InfoItemBuilder;
|
||||
|
||||
public class StreamGridInfoItemHolder extends StreamMiniInfoItemHolder {
|
||||
public class StreamGridInfoItemHolder extends StreamInfoItemHolder {
|
||||
|
||||
public StreamGridInfoItemHolder(InfoItemBuilder infoItemBuilder, ViewGroup parent) {
|
||||
super(infoItemBuilder, R.layout.list_stream_grid_item, parent);
|
||||
|
@@ -40,7 +40,11 @@ public class StreamInfoItemHolder extends StreamMiniInfoItemHolder {
|
||||
public final TextView itemAdditionalDetails;
|
||||
|
||||
public StreamInfoItemHolder(InfoItemBuilder infoItemBuilder, ViewGroup parent) {
|
||||
super(infoItemBuilder, R.layout.list_stream_item, parent);
|
||||
this(infoItemBuilder, R.layout.list_stream_item, parent);
|
||||
}
|
||||
|
||||
public StreamInfoItemHolder(InfoItemBuilder infoItemBuilder, int layoutId, ViewGroup parent) {
|
||||
super(infoItemBuilder, layoutId, parent);
|
||||
itemAdditionalDetails = itemView.findViewById(R.id.itemAdditionalDetails);
|
||||
}
|
||||
|
||||
|
@@ -3,17 +3,9 @@ package org.schabi.newpipe.player;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -26,6 +18,12 @@ import android.widget.ProgressBar;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.exoplayer2.PlaybackParameters;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
|
||||
@@ -698,13 +696,10 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
|
||||
item.setTitle(player.isMuted() ? R.string.unmute : R.string.mute);
|
||||
|
||||
//2) Icon change accordingly to current App Theme
|
||||
item.setIcon(player.isMuted() ? getThemedDrawable(R.attr.volume_off) : getThemedDrawable(R.attr.volume_on));
|
||||
// using rootView.getContext() because getApplicationContext() didn't work
|
||||
item.setIcon(player.isMuted()
|
||||
? ThemeHelper.resolveResourceIdFromAttr(rootView.getContext(), R.attr.volume_off)
|
||||
: ThemeHelper.resolveResourceIdFromAttr(rootView.getContext(), R.attr.volume_on));
|
||||
}
|
||||
}
|
||||
|
||||
private Drawable getThemedDrawable(int attribute) {
|
||||
return getResources().getDrawable(
|
||||
getTheme().obtainStyledAttributes(R.style.Theme_AppCompat, new int[]{attribute})
|
||||
.getResourceId(0, 0));
|
||||
}
|
||||
}
|
||||
|
@@ -69,6 +69,11 @@ public class DataReader {
|
||||
return primitive[0] << 24 | primitive[1] << 16 | primitive[2] << 8 | primitive[3];
|
||||
}
|
||||
|
||||
public long readUnsignedInt() throws IOException {
|
||||
long value = readInt();
|
||||
return value & 0xffffffffL;
|
||||
}
|
||||
|
||||
public short readShort() throws IOException {
|
||||
primitiveRead(SHORT_SIZE);
|
||||
return (short) (primitive[0] << 8 | primitive[1]);
|
||||
|
@@ -294,10 +294,6 @@ public class Mp4DashReader {
|
||||
|
||||
|
||||
|
||||
private long readUint() throws IOException {
|
||||
return stream.readInt() & 0xffffffffL;
|
||||
}
|
||||
|
||||
public static boolean hasFlag(int flags, int mask) {
|
||||
return (flags & mask) == mask;
|
||||
}
|
||||
@@ -317,7 +313,7 @@ public class Mp4DashReader {
|
||||
private Box readBox() throws IOException {
|
||||
Box b = new Box();
|
||||
b.offset = stream.position();
|
||||
b.size = stream.readInt();
|
||||
b.size = stream.readUnsignedInt();
|
||||
b.type = stream.readInt();
|
||||
|
||||
if (b.size == 1) {
|
||||
@@ -478,7 +474,7 @@ public class Mp4DashReader {
|
||||
private long parse_tfdt() throws IOException {
|
||||
int version = stream.read();
|
||||
stream.skipBytes(3);// flags
|
||||
return version == 0 ? readUint() : stream.readLong();
|
||||
return version == 0 ? stream.readUnsignedInt() : stream.readLong();
|
||||
}
|
||||
|
||||
private Trun parse_trun() throws IOException {
|
||||
@@ -551,7 +547,7 @@ public class Mp4DashReader {
|
||||
stream.skipBytes(2 * (version == 0 ? 4 : 8));
|
||||
|
||||
Mvhd obj = new Mvhd();
|
||||
obj.timeScale = readUint();
|
||||
obj.timeScale = stream.readUnsignedInt();
|
||||
|
||||
// chunkDuration
|
||||
stream.skipBytes(version == 0 ? 4 : 8);
|
||||
@@ -563,7 +559,7 @@ public class Mp4DashReader {
|
||||
// predefined
|
||||
stream.skipBytes(76);
|
||||
|
||||
obj.nextTrackId = readUint();
|
||||
obj.nextTrackId = stream.readUnsignedInt();
|
||||
|
||||
return obj;
|
||||
}
|
||||
@@ -582,7 +578,7 @@ public class Mp4DashReader {
|
||||
|
||||
stream.skipBytes(4);// reserved
|
||||
|
||||
obj.duration = version == 0 ? readUint() : stream.readLong();
|
||||
obj.duration = version == 0 ? stream.readUnsignedInt() : stream.readLong();
|
||||
|
||||
stream.skipBytes(2 * 4);// reserved
|
||||
|
||||
|
@@ -46,7 +46,7 @@ public class Mp4FromDashWriter {
|
||||
|
||||
private int overrideMainBrand = 0x00;
|
||||
|
||||
private ArrayList<Integer> compatibleBrands = new ArrayList<>(5);
|
||||
private final ArrayList<Integer> compatibleBrands = new ArrayList<>(5);
|
||||
|
||||
public Mp4FromDashWriter(SharpStream... sources) throws IOException {
|
||||
for (SharpStream src : sources) {
|
||||
|
@@ -104,7 +104,7 @@ public class ChunkFileInputStream extends SharpStream {
|
||||
|
||||
@Override
|
||||
public long available() {
|
||||
return (int) (length - position);
|
||||
return length - position;
|
||||
}
|
||||
|
||||
@SuppressWarnings("EmptyCatchBlock")
|
||||
|
@@ -221,7 +221,7 @@ public class CircularFileWriter extends SharpStream {
|
||||
available = out.length - offsetOut;
|
||||
}
|
||||
|
||||
int length = Math.min(len, (int) available);
|
||||
int length = Math.min(len, (int) Math.min(Integer.MAX_VALUE, available));
|
||||
out.write(b, off, length);
|
||||
|
||||
len -= length;
|
||||
|
Before Width: | Height: | Size: 267 B |
Before Width: | Height: | Size: 261 B |
Before Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 425 B |
Before Width: | Height: | Size: 415 B |
Before Width: | Height: | Size: 470 B |
Before Width: | Height: | Size: 458 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:angle="90"
|
||||
android:endColor="#00000000"
|
||||
android:startColor="#4D000000"/>
|
||||
</shape>
|
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M7,10l5,5 5,-5z" />
|
||||
</vector>
|
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M7,14l5,-5 5,5z" />
|
||||
</vector>
|
@@ -1,82 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="150dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<Button
|
||||
android:id="@+id/drawer_header_action_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/drawer_header_description"
|
||||
android:background="?android:attr/selectableItemBackground" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/background_header"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_header_np_nude_view"
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
android:layout_marginLeft="30dp"
|
||||
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:src="@drawable/np_logo_nude_shadow"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_np_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_alignBottom="@id/drawer_header_np_nude_view"
|
||||
android:layout_alignTop="@id/drawer_header_np_nude_view"
|
||||
android:layout_toEndOf="@id/drawer_header_np_nude_view"
|
||||
android:layout_toRightOf="@id/drawer_header_np_nude_view"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_name"
|
||||
android:textSize="30sp"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textStyle="bold|italic" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_service_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="100dp"
|
||||
android:layout_alignLeft="@id/drawer_header_np_text_view"
|
||||
android:layout_alignStart="@id/drawer_header_np_text_view"
|
||||
android:layout_below="@id/drawer_header_np_text_view"
|
||||
android:layout_toLeftOf="@id/drawer_arrow"
|
||||
android:layout_marginRight="5dp"
|
||||
android:text="YouTube"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textStyle="italic"
|
||||
android:ellipsize="marquee"
|
||||
android:fadingEdge="horizontal"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:scrollHorizontally="true"
|
||||
android:singleLine="true" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_arrow"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:src="@drawable/ic_arrow_down_white"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
</RelativeLayout>
|
@@ -1,81 +1,122 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="150dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?colorPrimary"
|
||||
android:nextFocusDown="@+id/drawer_header_action_button">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/background_header"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/drawer_header_padding_top"
|
||||
android:fitsSystemWindows="true"
|
||||
android:gravity="bottom"
|
||||
android:minHeight="@dimen/drawer_header_content_min_height"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_header_newpipe_icon"
|
||||
android:layout_width="@dimen/drawer_header_newpipe_icon_size"
|
||||
android:layout_height="@dimen/drawer_header_newpipe_icon_size"
|
||||
android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space"
|
||||
app:srcCompat="@drawable/splash_forground"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_newpipe_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="@dimen/drawer_header_newpipe_icon_title_space"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start|center_vertical"
|
||||
android:hyphenationFrequency="full"
|
||||
android:maxWidth="@dimen/drawer_header_newpipe_title_max_width"
|
||||
android:maxLines="2"
|
||||
android:minWidth="@dimen/drawer_header_newpipe_title_min_width"
|
||||
android:text="@string/app_name"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textStyle="bold"
|
||||
app:autoSizeMaxTextSize="@dimen/drawer_header_newpipe_title_max_text_size"
|
||||
app:autoSizeMinTextSize="@dimen/drawer_header_newpipe_title_min_text_size"
|
||||
app:autoSizeTextType="uniform"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:background="@drawable/drawer_header_bottom_background"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_header_service_icon"
|
||||
android:layout_width="@dimen/drawer_header_service_icon_size"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:layout_marginRight="6dp"
|
||||
android:scaleType="fitCenter"
|
||||
app:tint="@color/drawer_header_font_color"
|
||||
tools:ignore="ContentDescription"
|
||||
tools:srcCompat="@drawable/youtube" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_service_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textSize="@dimen/drawer_header_service_title_text_size"
|
||||
tools:text="YouTube" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_arrow"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="4dp"
|
||||
app:srcCompat="@drawable/ic_arrow_drop_down_white_24dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/drawer_header_action_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/selectableItemBackground"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:src="@drawable/background_header"
|
||||
android:scaleType="centerCrop"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_header_np_nude_view"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginTop="20dp"
|
||||
|
||||
android:layout_width="70dp"
|
||||
android:layout_height="70dp"
|
||||
android:src="@drawable/np_logo_nude_shadow"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_np_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:text="@string/app_name"
|
||||
android:layout_toRightOf="@id/drawer_header_np_nude_view"
|
||||
android:layout_toEndOf="@id/drawer_header_np_nude_view"
|
||||
android:layout_alignTop="@id/drawer_header_np_nude_view"
|
||||
android:layout_alignBottom="@id/drawer_header_np_nude_view"
|
||||
android:gravity="center"
|
||||
android:textSize="30sp"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textStyle="bold|italic"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/drawer_header_service_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="100dp"
|
||||
android:text="YouTube"
|
||||
android:layout_below="@id/drawer_header_np_text_view"
|
||||
android:layout_alignLeft="@id/drawer_header_np_text_view"
|
||||
android:layout_alignStart="@id/drawer_header_np_text_view"
|
||||
android:layout_toLeftOf="@id/drawer_arrow"
|
||||
android:layout_marginRight="5dp"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/drawer_header_font_color"
|
||||
android:textStyle="italic"
|
||||
android:ellipsize="marquee"
|
||||
android:fadingEdge="horizontal"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:scrollHorizontally="true"
|
||||
android:singleLine="true" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawer_arrow"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:src="@drawable/ic_arrow_down_white"
|
||||
android:paddingEnd="20dp"
|
||||
android:contentDescription="TODO" />
|
||||
|
||||
</RelativeLayout>
|
||||
android:background="?selectableItemBackground"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -1,36 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.navigation.NavigationView android:id="@+id/navigation_layout"
|
||||
android:orientation="vertical"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
<com.google.android.material.navigation.NavigationView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
>
|
||||
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/navigation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:elevation="0dp"
|
||||
android:background="?attr/android:windowBackground"
|
||||
app:headerLayout="@layout/drawer_header"
|
||||
android:theme="@style/NavViewTextStyle"/>
|
||||
<!-- app:menu="@menu/drawer_items" -->
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/navigation_drawer_footer"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="60dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_alignLeft="@id/navigation"
|
||||
android:layout_alignRight="@id/navigation"
|
||||
android:layout_alignStart="@id/navigation"
|
||||
android:layout_alignEnd="@id/navigation"
|
||||
|
||||
android:layout_alignParentBottom="true">
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.navigation.NavigationView>
|
||||
android:id="@+id/navigation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:background="?android:attr/windowBackground"
|
||||
android:orientation="vertical"
|
||||
app:headerLayout="@layout/drawer_header" />
|
@@ -67,6 +67,19 @@
|
||||
android:textSize="@dimen/video_item_search_uploader_text_size"
|
||||
tools:text="Uploader"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/itemAdditionalDetails"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/itemUploaderView"
|
||||
android:layout_alignStart="@id/itemUploaderView"
|
||||
android:layout_alignEnd="@id/itemUploaderView"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textSize="@dimen/video_item_search_upload_date_text_size"
|
||||
tools:text="2 years ago • 10M views"/>
|
||||
|
||||
<org.schabi.newpipe.views.AnimatedProgressBar
|
||||
android:id="@+id/itemProgressView"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
|
@@ -456,7 +456,7 @@
|
||||
<string name="error_postprocessing_failed">后期处理失败</string>
|
||||
<string name="stop">停止</string>
|
||||
<string name="max_retry_msg">最大重试次数</string>
|
||||
<string name="max_retry_desc">取消下载前的最多重试着次数</string>
|
||||
<string name="max_retry_desc">取消下载前的最多重试次数</string>
|
||||
<string name="pause_downloads_on_mobile">在切换到移动流量网络时中断播放</string>
|
||||
<string name="pause_downloads_on_mobile_desc">切换至移动数据时可能有用,尽管一些下载无法被暂停</string>
|
||||
<string name="events">事件</string>
|
||||
@@ -551,7 +551,7 @@
|
||||
<plurals name="days">
|
||||
<item quantity="other">%d天</item>
|
||||
</plurals>
|
||||
<string name="feed_groups_header_title">Feed组</string>
|
||||
<string name="feed_groups_header_title">频道组</string>
|
||||
<string name="feed_oldest_subscription_update">最早订阅更新:%s</string>
|
||||
<string name="feed_subscription_not_loaded_count">未加载: %d</string>
|
||||
<string name="feed_notification_loading">正在加载feed…</string>
|
||||
@@ -565,7 +565,7 @@
|
||||
<string name="feed_group_dialog_name_input">名称</string>
|
||||
<string name="feed_group_dialog_delete_message">您要删除该组吗?</string>
|
||||
<string name="feed_create_new_group_button_title">新建</string>
|
||||
<string name="settings_category_feed_title">Feed</string>
|
||||
<string name="settings_category_feed_title">订阅</string>
|
||||
<string name="feed_update_threshold_title">Feed更新阈值</string>
|
||||
<string name="feed_update_threshold_summary">上次更新后,订阅被视为过时的时间-%s</string>
|
||||
<string name="feed_update_threshold_option_always_update">始终更新</string>
|
||||
|
@@ -557,8 +557,8 @@ otevření ve vyskakovacím okně</string>
|
||||
<item quantity="other">%d vteřin</item>
|
||||
</plurals>
|
||||
<string name="new_seek_duration_toast">Kvůli omezením ExoPlayer bylo prohledávání nastaveno na %d vteřin</string>
|
||||
<string name="mute">Umlčet</string>
|
||||
<string name="unmute">Odumlčet</string>
|
||||
<string name="mute">Ztišit</string>
|
||||
<string name="unmute">Obnovit hlasitost</string>
|
||||
<string name="help">Nápověda</string>
|
||||
<plurals name="minutes">
|
||||
<item quantity="one">%d minuta</item>
|
||||
|
@@ -572,7 +572,7 @@
|
||||
<string name="feed_group_dialog_delete_message">Möchtest du diese Gruppe löschen\?</string>
|
||||
<string name="feed_create_new_group_button_title">Neu</string>
|
||||
<string name="feed_update_threshold_option_always_update">Immer aktualisieren</string>
|
||||
<string name="feed_groups_header_title">Feed-Gruppen</string>
|
||||
<string name="feed_groups_header_title">Channel-Gruppen</string>
|
||||
<string name="feed_subscription_not_loaded_count">Nicht geladen: %d</string>
|
||||
<string name="feed_notification_loading">Feed laden…</string>
|
||||
<string name="feed_processing_message">Feed verarbeiten…</string>
|
||||
|
@@ -550,7 +550,7 @@
|
||||
<plurals name="days">
|
||||
<item quantity="other">%d hari</item>
|
||||
</plurals>
|
||||
<string name="feed_groups_header_title">Grup feed</string>
|
||||
<string name="feed_groups_header_title">Grup channel</string>
|
||||
<string name="feed_oldest_subscription_update">Pembaruan subscription terlama: %s</string>
|
||||
<string name="feed_subscription_not_loaded_count">Tidak dimuat: %d</string>
|
||||
<string name="feed_notification_loading">Memuat feed…</string>
|
||||
|
@@ -551,7 +551,7 @@
|
||||
<plurals name="days">
|
||||
<item quantity="other">%d 日</item>
|
||||
</plurals>
|
||||
<string name="feed_groups_header_title">フィード グループ</string>
|
||||
<string name="feed_groups_header_title">チャンネル グループ</string>
|
||||
<string name="feed_oldest_subscription_update">最も古い登録チャンネルの更新: %s</string>
|
||||
<string name="feed_subscription_not_loaded_count">読み込み失敗: %d</string>
|
||||
<string name="feed_notification_loading">フィードを読み込み中…</string>
|
||||
|
@@ -16,10 +16,10 @@
|
||||
<string name="screen_rotation">draaiing</string>
|
||||
<string name="download_path_title">Downloadlocatie voor video\'s</string>
|
||||
<string name="download_path_summary">Locatie om gedownloade video\'s in op te slaan</string>
|
||||
<string name="download_path_dialog_title">Kies de downloadlocatie voor video\'s</string>
|
||||
<string name="download_path_dialog_title">Voer de downloadlocatie in voor video\'s</string>
|
||||
<string name="default_resolution_title">Standaardresolutie</string>
|
||||
<string name="play_with_kodi_title">Afspelen met Kodi</string>
|
||||
<string name="kore_not_found">Installeer ontbrekende Kore-app\?</string>
|
||||
<string name="kore_not_found">Kore-app niet gevonden. Deze installeren\?</string>
|
||||
<string name="show_play_with_kodi_title">\"Afspelen met Kodi\"-optie tonen</string>
|
||||
<string name="show_play_with_kodi_summary">Toon een optie om een video af te spelen via Kodi media center</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
@@ -33,12 +33,12 @@
|
||||
<string name="use_external_audio_player_title">Externe audiospeler gebruiken</string>
|
||||
<string name="settings_category_video_audio_title">Audio en video</string>
|
||||
<string name="list_thumbnail_view_description">Videovoorbeeldminiatuur</string>
|
||||
<string name="detail_thumbnail_view_description">Videovoorbeeldminiatuur</string>
|
||||
<string name="detail_thumbnail_view_description">Speel video, tijd:</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">Gebruikersafbeelding van uploader</string>
|
||||
<string name="detail_dislikes_img_view_description">Vind-ik-niet-leuks</string>
|
||||
<string name="download_path_audio_title">Downloadfolder voor audio</string>
|
||||
<string name="download_path_audio_summary">Gedownloade muziek wordt hier opgeslagen</string>
|
||||
<string name="download_path_audio_dialog_title">Kies de downloadlocatie voor audiobestanden</string>
|
||||
<string name="download_path_audio_dialog_title">Voer de downloadlocatie in voor audiobestanden</string>
|
||||
<string name="theme_title">Thema</string>
|
||||
<string name="dark_theme_title">Donker</string>
|
||||
<string name="light_theme_title">Licht</string>
|
||||
@@ -85,7 +85,7 @@
|
||||
<string name="could_not_load_image">Kan afbeelding niet laden</string>
|
||||
<string name="app_ui_crash">App/UI gecrasht</string>
|
||||
<string name="info_labels">Wat:\\nVerzoek:\\nTaal van inhoud:\\nDienst:\\nTijd in GMT:\\nPakket:\\nVersie:\\nVersie van besturingssysteem:</string>
|
||||
<string name="report_error">Probleem melden</string>
|
||||
<string name="report_error">Meld een probleem</string>
|
||||
<string name="user_report">Gebruikersrapport</string>
|
||||
<string name="storage_permission_denied">Geef eerst toegang tot de opslag</string>
|
||||
<string name="start">Begin</string>
|
||||
@@ -105,7 +105,7 @@
|
||||
<string name="msg_running_detail">Druk voor meer informatie</string>
|
||||
<string name="msg_wait">Even geduld…</string>
|
||||
<string name="msg_copied">Gekopieerd naar klembord</string>
|
||||
<string name="no_available_dir">Kies een beschikbare downloadmap</string>
|
||||
<string name="no_available_dir">Selecteer een downloadmap in de Instellingen</string>
|
||||
<string name="black_theme_title">Zwart</string>
|
||||
<string name="recaptcha">reCAPTCHA</string>
|
||||
<string name="title_activity_recaptcha">reCAPTCHA-uitdaging</string>
|
||||
@@ -177,7 +177,7 @@
|
||||
<string name="enable_watch_history_title">Kijkgeschiedenis</string>
|
||||
<string name="enable_watch_history_summary">Kijkgeschiedenis bijhouden</string>
|
||||
<string name="resume_on_audio_focus_gain_title">Hervat afspelen</string>
|
||||
<string name="resume_on_audio_focus_gain_summary">Ga verder met afspelen na onderbrekingen (zoals telefoongesprekken)</string>
|
||||
<string name="resume_on_audio_focus_gain_summary">Ga verder met afspelen na onderbrekingen (b.v. telefoongesprekken)</string>
|
||||
<string name="notification_channel_name">NewPipe-melding</string>
|
||||
<string name="notification_channel_description">Meldingen voor NewPipe-achtergrond- en pop-upspelers</string>
|
||||
<string name="title_activity_history">Geschiedenis</string>
|
||||
@@ -212,7 +212,7 @@
|
||||
<string name="item_deleted">Item verwijderd</string>
|
||||
<string name="delete_item_search_history">Wil je dit item verwijderen uit je zoekgeschiedenis?</string>
|
||||
<string name="show_hold_to_append_title">Toon tip \"Ingedrukt houden om toe te voegen\"</string>
|
||||
<string name="show_hold_to_append_summary">Toon tip als achtergrond- of pop-upknop wordt ingedrukt op de videogegevenspagina</string>
|
||||
<string name="show_hold_to_append_summary">Toon tip als de achtergrond- of pop-upknop wordt ingedrukt op de videogegevenspagina</string>
|
||||
<string name="background_player_append">Toegevoegd aan wachtrij voor achtergrondspeler</string>
|
||||
<string name="popup_playing_append">Toegevoegd aan wachtrij voor pop-upspeler</string>
|
||||
<string name="play_all">Alles afspelen</string>
|
||||
@@ -237,7 +237,7 @@
|
||||
<string name="play_queue_remove">Verwijderen</string>
|
||||
<string name="play_queue_stream_detail">Details</string>
|
||||
<string name="play_queue_audio_settings">Audio-instellingen</string>
|
||||
<string name="hold_to_append">Ingedrukt houden om toe te voegen aan wachtrij</string>
|
||||
<string name="hold_to_append">Houd ingedrukt om toe te voegen aan de wachtrij</string>
|
||||
<string name="unknown_content">[Onbekend]</string>
|
||||
<string name="enqueue_on_background">Toevoegen aan wachtrij in de achtergrond</string>
|
||||
<string name="enqueue_on_popup">Toevoegen aan wachtrij in nieuwe pop-up</string>
|
||||
@@ -318,7 +318,7 @@
|
||||
<string name="enable_disposed_exceptions_title">Out-of-lifecycle-fouten melden</string>
|
||||
<string name="enable_disposed_exceptions_summary">Forceer het melden van niet-bezorgbare Rx-uitzonderingen buiten fragment of activiteitscyclus</string>
|
||||
<string name="use_inexact_seek_title">Snelle, minder exact spoelen gebruiken</string>
|
||||
<string name="use_inexact_seek_summary">Onnauwkeurig zoeken laat de speler sneller posities zoeken met verminderde precisie. 5, 15 of 25 zoeken werkt dan niet.</string>
|
||||
<string name="use_inexact_seek_summary">Minder exact spoelen laat de speler sneller posities zoeken met verminderde precisie. 5, 15 en 25 seconden werken niet.</string>
|
||||
<string name="auto_queue_title">Volgende stream automatisch in wachtrij plaatsen</string>
|
||||
<string name="auto_queue_summary">Automatisch een gerelateerde stream toekennen bij het afspelen van de laatste stream in een niet-herhalende afspeelwachtlijst</string>
|
||||
<string name="file">Bestand</string>
|
||||
@@ -369,7 +369,7 @@
|
||||
<string name="caption_setting_description">Bijschriftgrootte en -achtergrondstijlen wijzigen. Vereist een herstart van de app.</string>
|
||||
<string name="toast_no_player">Er is geen app geïnstalleerd die dit bestand kan afspelen</string>
|
||||
<string name="clear_views_history_title">Kijkgeschiedenis wissen</string>
|
||||
<string name="clear_views_history_summary">Verwijdert de geschiedenis van afgespeelde streams</string>
|
||||
<string name="clear_views_history_summary">Verwijdert de geschiedenis van afgespeelde streams en afspeelposities</string>
|
||||
<string name="delete_view_history_alert">De gehele kijkgeschiedenis wissen\?</string>
|
||||
<string name="watch_history_deleted">Kijkgeschiedenis gewist.</string>
|
||||
<string name="clear_search_history_title">Zoekgeschiedenis wissen</string>
|
||||
@@ -458,13 +458,13 @@
|
||||
<string name="stop">Stop</string>
|
||||
<string name="max_retry_msg">Maximum aantal keer proberen</string>
|
||||
<string name="max_retry_desc">Maximum aantal pogingen voordat de download wordt geannuleerd</string>
|
||||
<string name="pause_downloads_on_mobile">Onderbreken op netwerken met datalimiet</string>
|
||||
<string name="pause_downloads_on_mobile_desc">Handig bij het overschakelen naar mobiele gegevens, hoewel sommige downloads niet onderbroken kunnen worden</string>
|
||||
<string name="pause_downloads_on_mobile">Pauzeren bij overschakelen naar mobiele data</string>
|
||||
<string name="pause_downloads_on_mobile_desc">Handig voor wanneer u naar mobiel internet overschakelt, hoewel sommige downloads niet gepauzeerd kunnen worden</string>
|
||||
<string name="events">Gebeurtenissen</string>
|
||||
<string name="conferences">Conferenties</string>
|
||||
<string name="error_timeout">Time-out van verbinding</string>
|
||||
<string name="show_comments_title">Reacties tonen</string>
|
||||
<string name="show_comments_summary">Schakel uit om reacties niet te tonen</string>
|
||||
<string name="show_comments_summary">Schakel dit uit om reacties te verbergen</string>
|
||||
<string name="autoplay_title">Automatisch afspelen</string>
|
||||
<plurals name="comments">
|
||||
<item quantity="one">%s reactie</item>
|
||||
@@ -473,40 +473,40 @@
|
||||
<string name="no_comments">Geen reacties</string>
|
||||
<string name="error_unable_to_load_comments">Kan reacties niet laden</string>
|
||||
<string name="close">Sluiten</string>
|
||||
<string name="downloads_storage_use_saf_summary">Het \'Storage Access Framework\' laat downloads naar een externe SD kaart toe.
|
||||
\n Niet alle toestellen zijn compatibel</string>
|
||||
<string name="downloads_storage_use_saf_summary">Het \'Storage Access Framework\' laat downloads naar een externe SD kaart toe.
|
||||
\nNiet alle toestellen zijn compatibel</string>
|
||||
<string name="settings_category_clear_data_title">Wis data</string>
|
||||
<string name="download_choose_new_path">Verander de downloadmappen om effect te bekomen</string>
|
||||
<string name="enable_playback_resume_title">Afspelen hervatten</string>
|
||||
<string name="enable_playback_resume_summary">Laatste afspeelpositie herstellen</string>
|
||||
<string name="enable_playback_resume_title">Hervat afspelen</string>
|
||||
<string name="enable_playback_resume_summary">Herstel de vorige afspeelpositie</string>
|
||||
<string name="enable_playback_state_lists_title">Posities in lijsten</string>
|
||||
<string name="enable_playback_state_lists_summary">Afspeelpositie-indicatoren in lijsten tonen</string>
|
||||
<string name="watch_history_states_deleted">Afspeelposities verwijderd.</string>
|
||||
<string name="missing_file">Bestand verplaatst of verwijderd</string>
|
||||
<string name="overwrite_unrelated_warning">Een bestand met deze naam bestaat al</string>
|
||||
<string name="overwrite_failed">kan het bestand niet overschrijven</string>
|
||||
<string name="download_already_pending">Er is een download in behandeling met deze naam</string>
|
||||
<string name="overwrite_unrelated_warning">Een bestand met dezelfde naam bestaat al</string>
|
||||
<string name="overwrite_failed">het is niet mogelijk het bestand te overschrijven</string>
|
||||
<string name="download_already_pending">Er is al een download met deze naam bezig</string>
|
||||
<string name="error_insufficient_storage">Geen ruimte meer op het apparaat</string>
|
||||
<string name="error_progress_lost">Voortgang verloren, omdat het bestand is verwijderd</string>
|
||||
<string name="error_progress_lost">Voortgang verloren, omdat bestand was verwijderd</string>
|
||||
<string name="confirm_prompt">Wil je je downloadgeschiedenis wissen of alle gedownloade bestanden verwijderen\?</string>
|
||||
<string name="enable_queue_limit">Downloadwachtrij beperken</string>
|
||||
<string name="enable_queue_limit_desc">Een download zal tegelijkertijd worden uitgevoerd</string>
|
||||
<string name="start_downloads">Downloads starten</string>
|
||||
<string name="enable_queue_limit">Limiteer de download wachtrij</string>
|
||||
<string name="enable_queue_limit_desc">Er zal maximaal 1 bestand tegelijk worden gedownload</string>
|
||||
<string name="start_downloads">Download starten</string>
|
||||
<string name="pause_downloads">Downloads pauzeren</string>
|
||||
<string name="downloads_storage_ask_title">Vraag waar te downloaden</string>
|
||||
<string name="downloads_storage_ask_summary">Je zal gevraagd worden waar elke download op te slaan</string>
|
||||
<string name="downloads_storage_ask_title">Vraag waar bestanden geplaatst moeten worden</string>
|
||||
<string name="downloads_storage_ask_summary">U zal worden gevraagd waar u bestanden wilt opslaan</string>
|
||||
<string name="downloads_storage_ask_summary_kitkat">Je zal gevraagd worden waar elke download op te slaan.
|
||||
\nKies SAF als je wilt downloaden naar een externe SD-kaart</string>
|
||||
<string name="downloads_storage_use_saf_title">SAF gebruiken</string>
|
||||
<string name="clear_playback_states_title">Afspeelposities verwijderen</string>
|
||||
<string name="clear_playback_states_summary">Alle afspeelposities verwijderen</string>
|
||||
<string name="downloads_storage_use_saf_title">Gebruik SAF</string>
|
||||
<string name="clear_playback_states_title">Verwijder afspeelposities</string>
|
||||
<string name="clear_playback_states_summary">Verwijder alle afspeelposities</string>
|
||||
<string name="delete_playback_states_alert">Alle afspeelposities verwijderen\?</string>
|
||||
<string name="no_one_watching">Niemand kijkt</string>
|
||||
<string name="no_one_watching">Niemand is aan het kijken</string>
|
||||
<plurals name="watching">
|
||||
<item quantity="one">%s kijkt</item>
|
||||
<item quantity="other">%s kijken</item>
|
||||
<item quantity="one">%s kijker</item>
|
||||
<item quantity="other">%s kijkers</item>
|
||||
</plurals>
|
||||
<string name="no_one_listening">Niemand luistert</string>
|
||||
<string name="no_one_listening">Niemand is aan het luisteren</string>
|
||||
<plurals name="listening">
|
||||
<item quantity="one">%s luisteraar</item>
|
||||
<item quantity="other">%s luisteraars</item>
|
||||
@@ -514,38 +514,38 @@
|
||||
<string name="localization_changes_requires_app_restart">De taal zal veranderen zodra de app opnieuw is opgestart.</string>
|
||||
<string name="default_kiosk_page_summary">Standaardkiosk</string>
|
||||
<string name="seek_duration_title">Duur van snel voor-/achteruit zoeken</string>
|
||||
<string name="peertube_instance_url_title">PeerTube-instanties</string>
|
||||
<string name="peertube_instance_url_summary">Selecteer je favoriete PeerTube-instanties</string>
|
||||
<string name="peertube_instance_url_help">Zoek de instanties die je leuk vindt op %s</string>
|
||||
<string name="peertube_instance_add_title">Instantie toevoegen</string>
|
||||
<string name="peertube_instance_add_help">Instantie-URL invoeren</string>
|
||||
<string name="peertube_instance_add_fail">Kon instantie niet valideren</string>
|
||||
<string name="peertube_instance_add_https_only">Alleen HTTPS-URL\'s worden ondersteund</string>
|
||||
<string name="peertube_instance_add_exists">Instantie bestaat al</string>
|
||||
<string name="peertube_instance_url_title">PeerTube instanties</string>
|
||||
<string name="peertube_instance_url_summary">Favoriete PeerTube instanties instellen</string>
|
||||
<string name="peertube_instance_url_help">Vind het kanaal dat je leuk vind op %s</string>
|
||||
<string name="peertube_instance_add_title">Kanaal toevoegen</string>
|
||||
<string name="peertube_instance_add_help">Kanaal URL invoeren</string>
|
||||
<string name="peertube_instance_add_fail">Kon kanaal niet valideren</string>
|
||||
<string name="peertube_instance_add_https_only">Alleen HTTPS links worden ondersteund</string>
|
||||
<string name="peertube_instance_add_exists">Kanaal bestaat al</string>
|
||||
<string name="local">Lokaal</string>
|
||||
<string name="recently_added">Onlangs toegevoegd</string>
|
||||
<string name="recently_added">Recentelijk toegevoegd</string>
|
||||
<string name="playlist_no_uploader">Automatisch gegenereerd (geen uploader gevonden)</string>
|
||||
<string name="recovering">herstellen</string>
|
||||
<string name="error_download_resource_gone">Kan deze download niet herstellen</string>
|
||||
<string name="choose_instance_prompt">Kies een instantie</string>
|
||||
<string name="enable_lock_screen_video_thumbnail_title">Videominiatuur op vergrendelscherm</string>
|
||||
<string name="enable_lock_screen_video_thumbnail_summary">Een videominiatuur wordt getoond op het vergrendelscherm wanneer de achtergrondspeler wordt gebruikt</string>
|
||||
<string name="clear_download_history">Downloadgeschiedenis wissen</string>
|
||||
<string name="delete_downloaded_files">Gedownloade bestanden verwijderen</string>
|
||||
<string name="enable_lock_screen_video_thumbnail_title">Video afbeelding laten zien op vergrendelingsscherm</string>
|
||||
<string name="enable_lock_screen_video_thumbnail_summary">Een video afbeelding wordt weergegeven op het vergrendelscherm wanneer de achtergrond speler wordt gebruikt</string>
|
||||
<string name="clear_download_history">Download geschiedenis verwijderen</string>
|
||||
<string name="delete_downloaded_files">Verwijder gedownloade bestanden</string>
|
||||
<string name="deleted_downloads">%1$s downloads verwijderd</string>
|
||||
<string name="permission_display_over_apps">Geef toestemming voor weergave over andere apps</string>
|
||||
<string name="app_language_title">App-taal</string>
|
||||
<string name="systems_language">Systeemstandaard</string>
|
||||
<string name="app_language_title">Applicatie taal</string>
|
||||
<string name="systems_language">Systeem taal gebruiken</string>
|
||||
<string name="subtitle_activity_recaptcha">Druk op \"Klaar\" zodra opgelost</string>
|
||||
<string name="recaptcha_done_button">Klaar</string>
|
||||
<string name="videos_string">Video\'s</string>
|
||||
<string name="new_seek_duration_toast">Door beperkingen van ExoPlayer is de zoekduur ingesteld op %d seconden</string>
|
||||
<string name="mute">Dempen</string>
|
||||
<string name="unmute">Dempen opheffen</string>
|
||||
<string name="mute">Geluid dempen</string>
|
||||
<string name="unmute">Geluid aanzetten</string>
|
||||
<string name="help">Hulp</string>
|
||||
<plurals name="seconds">
|
||||
<item quantity="one">%d seconde</item>
|
||||
<item quantity="other">%d secondes</item>
|
||||
<item quantity="other">%d seconden</item>
|
||||
</plurals>
|
||||
<plurals name="minutes">
|
||||
<item quantity="one">%d minuut</item>
|
||||
@@ -560,11 +560,11 @@
|
||||
<item quantity="other">%d dagen</item>
|
||||
</plurals>
|
||||
<string name="feed_groups_header_title">Feedgroepen</string>
|
||||
<string name="feed_oldest_subscription_update">Oudste abonnementsupdate: %s</string>
|
||||
<string name="feed_oldest_subscription_update">Oudste abonnements-update: %s</string>
|
||||
<string name="feed_subscription_not_loaded_count">Niet geladen: %d</string>
|
||||
<string name="feed_notification_loading">Feed aan het laden…</string>
|
||||
<string name="feed_processing_message">Feed aan het verwerken…</string>
|
||||
<string name="feed_group_dialog_select_subscriptions">Abonnementen selecteren</string>
|
||||
<string name="feed_group_dialog_select_subscriptions">Selecteer abonnementen</string>
|
||||
<string name="feed_group_dialog_empty_selection">Geen abonnement geselecteerd</string>
|
||||
<plurals name="feed_group_dialog_selection_count">
|
||||
<item quantity="one">%d geselecteerd</item>
|
||||
@@ -572,7 +572,7 @@
|
||||
</plurals>
|
||||
<string name="feed_group_dialog_empty_name">Lege groepsnaam</string>
|
||||
<string name="feed_group_dialog_name_input">Naam</string>
|
||||
<string name="feed_group_dialog_delete_message">Wil je deze groep verwijderen\?</string>
|
||||
<string name="feed_group_dialog_delete_message">Wilt u deze groep verwijderen\?</string>
|
||||
<string name="feed_create_new_group_button_title">Nieuw</string>
|
||||
<string name="settings_category_feed_title">Feed</string>
|
||||
<string name="feed_update_threshold_title">Drempel voor feedupdate</string>
|
||||
@@ -593,4 +593,7 @@
|
||||
\nYouTube is een voorbeeld van een service die deze snelle methode aanbiedt door zijn RSS-feed.
|
||||
\n
|
||||
\nDe keuze komt dus neer op wat je liever hebt: snelheid of precieze informatie.</string>
|
||||
<string name="drawer_header_description">Toggle service, momenteel geselecteerd:</string>
|
||||
<string name="most_liked">Meest geliked</string>
|
||||
<string name="error_postprocessing_stopped">NewPipe werd gesloten terwijl het bezig was met het bestand</string>
|
||||
</resources>
|
@@ -550,11 +550,62 @@
|
||||
<string name="recaptcha_done_button">Gotowe</string>
|
||||
<string name="videos_string">Filmy</string>
|
||||
<plurals name="seconds">
|
||||
<item quantity="one">%d sekund</item>
|
||||
<item quantity="few">%d sekund</item>
|
||||
<item quantity="one">%d sekunda</item>
|
||||
<item quantity="few">%d sekundy</item>
|
||||
<item quantity="many">%d sekund</item>
|
||||
</plurals>
|
||||
<string name="new_seek_duration_toast">Ze względu na ograniczenia ExoPlayer, czas trwania wyszukiwania został ustawiony na %d sekund</string>
|
||||
<string name="mute">Wycisz</string>
|
||||
<string name="unmute">Wyłącz wyciszenie</string>
|
||||
<string name="feed_use_dedicated_fetch_method_help_text">Czy uważasz, że ładowanie kanałów jest zbyt powolne\? Jeśli tak, spróbuj włączyć szybkie ładowanie (możesz go zmienić w ustawieniach lub naciskając przycisk poniżej).
|
||||
\n
|
||||
\nNewPipe oferuje dwie strategie ładowania kanału:
|
||||
\n• Pobieranie całego kanału subskrypcji, który jest powolny, ale kompletny.
|
||||
\n• Korzystanie z dedykowanego punktu końcowego usługi, który jest szybki, ale zwykle nie jest kompletny.
|
||||
\n
|
||||
\nRóżnica między nimi polega na tym, że w szybkim zwykle brakuje pewnych informacji, takich jak czas trwania lub typ pozycji (nie można odróżnić filmów na żywo od zwykłych) i może zwrócić mniej pozycji.
|
||||
\n
|
||||
\nYouTube jest przykładem usługi, która oferuje tę szybką metodę z kanałem RSS.
|
||||
\n
|
||||
\nTak więc wybór sprowadza się do tego, co wolisz: prędkości lub precyzyjne informacje.</string>
|
||||
<string name="feed_use_dedicated_fetch_method_disable_button">Wyłącz tryb szybki</string>
|
||||
<string name="feed_use_dedicated_fetch_method_enable_button">Włącz tryb szybki</string>
|
||||
<string name="feed_use_dedicated_fetch_method_summary">Dostępne w niektórych usługach jest zwykle znacznie szybsze, ale może zwrócić ograniczoną liczbę pozycji i często niekompletne informacje (np. Brak czasu trwania, typ pozycji, brak statusu na żywo).</string>
|
||||
<string name="feed_use_dedicated_fetch_method_title">Pobierz z dedykowanego kanału, jeśli jest dostępny</string>
|
||||
<string name="feed_update_threshold_option_always_update">Zawsze aktualizuj</string>
|
||||
<string name="feed_update_threshold_summary">Czas po ostatniej aktualizacji, zanim subskrypcja zostanie uznana za nieaktualną — %s</string>
|
||||
<string name="feed_update_threshold_title">Próg aktualizacji kanału</string>
|
||||
<string name="settings_category_feed_title">Kanał</string>
|
||||
<string name="feed_create_new_group_button_title">Nowy</string>
|
||||
<string name="feed_group_dialog_delete_message">Czy chcesz usunąć tę grupę\?</string>
|
||||
<string name="feed_group_dialog_name_input">Nazwa</string>
|
||||
<string name="feed_group_dialog_empty_name">Pusta nazwa grupy</string>
|
||||
<plurals name="feed_group_dialog_selection_count">
|
||||
<item quantity="one">wybrany %d</item>
|
||||
<item quantity="few">wybrano %d</item>
|
||||
<item quantity="many">wybrano %d</item>
|
||||
</plurals>
|
||||
<string name="feed_group_dialog_empty_selection">Nie wybrano żadnej subskrypcji</string>
|
||||
<string name="feed_group_dialog_select_subscriptions">Wybierz subskrypcje</string>
|
||||
<string name="feed_processing_message">Przetwarzam plik danych…</string>
|
||||
<string name="feed_notification_loading">Ładowanie kanału…</string>
|
||||
<string name="feed_subscription_not_loaded_count">Nie uruchamia się: %d</string>
|
||||
<string name="feed_oldest_subscription_update">Najstarsza aktualizacja subskrypcji: %s</string>
|
||||
<string name="feed_groups_header_title">Grupy kanałów</string>
|
||||
<plurals name="days">
|
||||
<item quantity="one">%d dzień</item>
|
||||
<item quantity="few">%d dni</item>
|
||||
<item quantity="many">%d dni</item>
|
||||
</plurals>
|
||||
<plurals name="hours">
|
||||
<item quantity="one">%d godzina</item>
|
||||
<item quantity="few">%d godziny</item>
|
||||
<item quantity="many">%d godzin</item>
|
||||
</plurals>
|
||||
<plurals name="minutes">
|
||||
<item quantity="one">%d minuta</item>
|
||||
<item quantity="few">%d minuty</item>
|
||||
<item quantity="many">%d minut</item>
|
||||
</plurals>
|
||||
<string name="help">Pomoc</string>
|
||||
</resources>
|