commit
a67f6591e3
@ -1,3 +1,11 @@
|
|||||||
|
### Version 1.0.24 Tag: v1.0.24 (2019-01-09)
|
||||||
|
* Set video quality (@digiwizkid)
|
||||||
|
* BN Strings update (@digiwizkid)
|
||||||
|
* RU Strings update (@ferhadnecef)
|
||||||
|
* Added another level in video options menu
|
||||||
|
* Moved torrent progressbas into video
|
||||||
|
* Better NSFW Filter labeling
|
||||||
|
|
||||||
### Version 1.0.23 Tag: v1.0.23 (2019-01-06)
|
### Version 1.0.23 Tag: v1.0.23 (2019-01-06)
|
||||||
* Moved video playback into fragment
|
* Moved video playback into fragment
|
||||||
* Added duration to video list
|
* Added duration to video list
|
||||||
|
@ -22,12 +22,13 @@ Beta Test on Google Play: https://play.google.com/store/apps/details?id=net.schu
|
|||||||
- [X] Very Basic Torrent playback
|
- [X] Very Basic Torrent playback
|
||||||
- [X] Change Server
|
- [X] Change Server
|
||||||
- [X] Search
|
- [X] Search
|
||||||
- [X] App Icon and assets
|
|
||||||
- [X] Themes / Dark mode
|
- [X] Themes / Dark mode
|
||||||
- [X] Background playback
|
- [X] Background playback
|
||||||
- [X] NSFW Filter option
|
- [X] NSFW Filter option
|
||||||
- [X] Authentication / Login
|
- [X] Authentication / Login
|
||||||
- [X] Like/dislike video
|
- [X] Like/dislike video
|
||||||
|
- [X] Video speed selection
|
||||||
|
- [X] Video quality selection
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ android {
|
|||||||
applicationId "net.schueller.peertube"
|
applicationId "net.schueller.peertube"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 1023
|
versionCode 1024
|
||||||
versionName "1.0.23"
|
versionName "1.0.24"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
ext {
|
ext {
|
||||||
libVersions = [
|
libVersions = [
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 Stefan Schüller <sschueller@techdroid.com>
|
||||||
|
*
|
||||||
|
* License: GPL-3.0+
|
||||||
|
* This program is free software: you can redistribute it 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.schueller.peertube.fragment;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||||
|
import com.mikepenz.iconics.Iconics;
|
||||||
|
|
||||||
|
import net.schueller.peertube.R;
|
||||||
|
import net.schueller.peertube.model.File;
|
||||||
|
import net.schueller.peertube.model.Resolution;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
public class VideoMenuQualityFragment extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
|
private static ArrayList<File> mFiles;
|
||||||
|
public static final String TAG = "VideoMenuQuality";
|
||||||
|
private static File autoQualityFile;
|
||||||
|
|
||||||
|
public static VideoMenuQualityFragment newInstance(ArrayList<File> files) {
|
||||||
|
|
||||||
|
mFiles = files;
|
||||||
|
|
||||||
|
// Auto quality
|
||||||
|
if (autoQualityFile == null) {
|
||||||
|
autoQualityFile = new File();
|
||||||
|
Resolution autoQualityResolution = new Resolution();
|
||||||
|
autoQualityResolution.setId(0);
|
||||||
|
autoQualityResolution.setLabel("Auto");
|
||||||
|
autoQualityFile.setId(0);
|
||||||
|
autoQualityFile.setResolution(autoQualityResolution);
|
||||||
|
}
|
||||||
|
if (!mFiles.contains(autoQualityFile)) {
|
||||||
|
mFiles.add(0, autoQualityFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new VideoMenuQualityFragment();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater,
|
||||||
|
@Nullable ViewGroup container,
|
||||||
|
@Nullable Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
View view = inflater.inflate(R.layout.fragment_video_options_quality_popup_menu, container,
|
||||||
|
false);
|
||||||
|
|
||||||
|
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||||
|
Integer videoQuality = sharedPref.getInt("pref_quality", 0);
|
||||||
|
|
||||||
|
for (File file : mFiles) {
|
||||||
|
|
||||||
|
LinearLayout menuRow = (LinearLayout) inflater.inflate(R.layout.row_popup_menu, null);
|
||||||
|
|
||||||
|
TextView iconView = menuRow.findViewById(R.id.video_quality_icon);
|
||||||
|
iconView.setId(file.getResolution().getId());
|
||||||
|
TextView textView = menuRow.findViewById(R.id.video_quality_text);
|
||||||
|
|
||||||
|
Log.v(TAG, file.getResolution().getLabel());
|
||||||
|
textView.setText(file.getResolution().getLabel());
|
||||||
|
|
||||||
|
textView.setOnClickListener(view1 -> {
|
||||||
|
// Log.v(TAG, file.getResolution().getLabel());
|
||||||
|
SharedPreferences.Editor editor = sharedPref.edit();
|
||||||
|
editor.putInt("pref_quality", file.getResolution().getId());
|
||||||
|
editor.apply();
|
||||||
|
|
||||||
|
for (File fileV : mFiles) {
|
||||||
|
TextView iconViewV = view.findViewById(fileV.getResolution().getId());
|
||||||
|
iconViewV.setText("");
|
||||||
|
}
|
||||||
|
|
||||||
|
iconView.setText(R.string.video_quality_active_icon);
|
||||||
|
new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build();
|
||||||
|
|
||||||
|
//TODO: set new video quality on running video
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add to menu
|
||||||
|
LinearLayout menuHolder = view.findViewById(R.id.video_quality_menu);
|
||||||
|
menuHolder.addView(menuRow);
|
||||||
|
|
||||||
|
// Set current
|
||||||
|
if (videoQuality.equals(file.getResolution().getId())) {
|
||||||
|
iconView.setText(R.string.video_quality_active_icon);
|
||||||
|
new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return view;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 Stefan Schüller <sschueller@techdroid.com>
|
||||||
|
*
|
||||||
|
* License: GPL-3.0+
|
||||||
|
* This program is free software: you can redistribute it 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.schueller.peertube.fragment;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||||
|
import com.mikepenz.iconics.Iconics;
|
||||||
|
|
||||||
|
import net.schueller.peertube.R;
|
||||||
|
import net.schueller.peertube.service.VideoPlayerService;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
public class VideoMenuSpeedFragment extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
|
private static VideoPlayerService videoPlayerService;
|
||||||
|
public static final String TAG = "VideoMenuSpeed";
|
||||||
|
|
||||||
|
private TextView speed05Icon;
|
||||||
|
private TextView speed10Icon;
|
||||||
|
private TextView speed15Icon;
|
||||||
|
private TextView speed20Icon;
|
||||||
|
|
||||||
|
public static VideoMenuSpeedFragment newInstance(VideoPlayerService mService) {
|
||||||
|
videoPlayerService = mService;
|
||||||
|
return new VideoMenuSpeedFragment();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater,
|
||||||
|
@Nullable ViewGroup container,
|
||||||
|
@Nullable Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
View view = inflater.inflate(R.layout.fragment_video_options_speed_popup_menu, container,
|
||||||
|
false);
|
||||||
|
|
||||||
|
// Icons
|
||||||
|
speed05Icon = view.findViewById(R.id.video_speed05_icon);
|
||||||
|
speed10Icon = view.findViewById(R.id.video_speed10_icon);
|
||||||
|
speed15Icon = view.findViewById(R.id.video_speed15_icon);
|
||||||
|
speed20Icon = view.findViewById(R.id.video_speed20_icon);
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
TextView speed05 = view.findViewById(R.id.video_speed05);
|
||||||
|
TextView speed10 = view.findViewById(R.id.video_speed10);
|
||||||
|
TextView speed15 = view.findViewById(R.id.video_speed15);
|
||||||
|
TextView speed20 = view.findViewById(R.id.video_speed20);
|
||||||
|
|
||||||
|
// Default
|
||||||
|
setVideoSpeed(1.0f, speed10Icon);
|
||||||
|
|
||||||
|
// Attach the listener
|
||||||
|
speed05.setOnClickListener(v -> setVideoSpeed(0.5f, speed05Icon));
|
||||||
|
speed10.setOnClickListener(v -> setVideoSpeed(1.0f, speed10Icon));
|
||||||
|
speed15.setOnClickListener(v -> setVideoSpeed(1.5f, speed15Icon));
|
||||||
|
speed20.setOnClickListener(v -> setVideoSpeed(2.0f, speed20Icon));
|
||||||
|
|
||||||
|
return view;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setVideoSpeed(Float speed, TextView icon) {
|
||||||
|
|
||||||
|
speed05Icon.setText("");
|
||||||
|
speed10Icon.setText("");
|
||||||
|
speed15Icon.setText("");
|
||||||
|
speed20Icon.setText("");
|
||||||
|
|
||||||
|
videoPlayerService.setPlayBackSpeed(speed);
|
||||||
|
|
||||||
|
icon.setText(R.string.video_speed_active_icon);
|
||||||
|
new Iconics.IconicsBuilder().ctx(getContext()).on(icon).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -251,11 +251,10 @@ public class VideoMetaDataFragment extends Fragment {
|
|||||||
new Iconics.IconicsBuilder().ctx(context).on(videoOptions).build();
|
new Iconics.IconicsBuilder().ctx(context).on(videoOptions).build();
|
||||||
|
|
||||||
videoOptions.setOnClickListener(v -> {
|
videoOptions.setOnClickListener(v -> {
|
||||||
|
|
||||||
VideoOptionsFragment videoOptionsFragment =
|
VideoOptionsFragment videoOptionsFragment =
|
||||||
VideoOptionsFragment.newInstance(mService);
|
VideoOptionsFragment.newInstance(mService, video.getFiles());
|
||||||
videoOptionsFragment.show(getActivity().getSupportFragmentManager(),
|
videoOptionsFragment.show(getActivity().getSupportFragmentManager(),
|
||||||
"video_options_fragment");
|
VideoOptionsFragment.TAG);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,30 +17,36 @@
|
|||||||
*/
|
*/
|
||||||
package net.schueller.peertube.fragment;
|
package net.schueller.peertube.fragment;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||||
import com.mikepenz.iconics.Iconics;
|
import com.mikepenz.iconics.Iconics;
|
||||||
import net.schueller.peertube.R;
|
import net.schueller.peertube.R;
|
||||||
|
import net.schueller.peertube.model.File;
|
||||||
import net.schueller.peertube.service.VideoPlayerService;
|
import net.schueller.peertube.service.VideoPlayerService;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
public class VideoOptionsFragment extends BottomSheetDialogFragment {
|
public class VideoOptionsFragment extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
private static VideoPlayerService videoPlayerService;
|
private static VideoPlayerService videoPlayerService;
|
||||||
|
private static ArrayList<File> files;
|
||||||
|
|
||||||
private TextView speed05Icon;
|
public static final String TAG = "VideoOptions";
|
||||||
private TextView speed10Icon;
|
|
||||||
private TextView speed15Icon;
|
|
||||||
private TextView speed20Icon;
|
|
||||||
|
|
||||||
public static VideoOptionsFragment newInstance(VideoPlayerService mService) {
|
|
||||||
|
public static VideoOptionsFragment newInstance(VideoPlayerService mService, ArrayList<File> mFiles) {
|
||||||
videoPlayerService = mService;
|
videoPlayerService = mService;
|
||||||
|
files = mFiles;
|
||||||
return new VideoOptionsFragment();
|
return new VideoOptionsFragment();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,43 +59,40 @@ public class VideoOptionsFragment extends BottomSheetDialogFragment {
|
|||||||
View view = inflater.inflate(R.layout.fragment_video_options_popup_menu, container,
|
View view = inflater.inflate(R.layout.fragment_video_options_popup_menu, container,
|
||||||
false);
|
false);
|
||||||
|
|
||||||
// Icons
|
LinearLayout menuHolder = view.findViewById(R.id.video_options_popup);
|
||||||
speed05Icon = view.findViewById(R.id.video_speed05_icon);
|
|
||||||
speed10Icon = view.findViewById(R.id.video_speed10_icon);
|
|
||||||
speed15Icon = view.findViewById(R.id.video_speed15_icon);
|
|
||||||
speed20Icon = view.findViewById(R.id.video_speed20_icon);
|
|
||||||
|
|
||||||
// Buttons
|
// Video Speed
|
||||||
TextView speed05 = view.findViewById(R.id.video_speed05);
|
LinearLayout menuRow = (LinearLayout) inflater.inflate(R.layout.row_popup_menu, null);
|
||||||
TextView speed10 = view.findViewById(R.id.video_speed10);
|
TextView iconView = menuRow.findViewById(R.id.video_quality_icon);
|
||||||
TextView speed15 = view.findViewById(R.id.video_speed15);
|
TextView textView = menuRow.findViewById(R.id.video_quality_text);
|
||||||
TextView speed20 = view.findViewById(R.id.video_speed20);
|
textView.setText(getString(R.string.menu_video_options_playback_speed));
|
||||||
|
iconView.setText(R.string.video_option_speed_icon);
|
||||||
|
new Iconics.IconicsBuilder().ctx(getContext()).on(iconView).build();
|
||||||
|
textView.setOnClickListener(view1 -> {
|
||||||
|
VideoMenuSpeedFragment videoMenuSpeedFragment =
|
||||||
|
VideoMenuSpeedFragment.newInstance(videoPlayerService);
|
||||||
|
videoMenuSpeedFragment.show(getActivity().getSupportFragmentManager(),
|
||||||
|
VideoMenuSpeedFragment.TAG);
|
||||||
|
});
|
||||||
|
menuHolder.addView(menuRow);
|
||||||
|
|
||||||
// Default
|
// Video Quality
|
||||||
setVideoSpeed(1.0f, speed10Icon);
|
LinearLayout menuRow2 = (LinearLayout) inflater.inflate(R.layout.row_popup_menu, null);
|
||||||
|
TextView iconView2 = menuRow2.findViewById(R.id.video_quality_icon);
|
||||||
// Attach the listener
|
TextView textView2 = menuRow2.findViewById(R.id.video_quality_text);
|
||||||
speed05.setOnClickListener(v -> setVideoSpeed(0.5f, speed05Icon));
|
textView2.setText(getString(R.string.menu_video_options_quality));
|
||||||
speed10.setOnClickListener(v -> setVideoSpeed(1.0f, speed10Icon));
|
iconView2.setText(R.string.video_option_quality_icon);
|
||||||
speed15.setOnClickListener(v -> setVideoSpeed(1.5f, speed15Icon));
|
new Iconics.IconicsBuilder().ctx(getContext()).on(iconView2).build();
|
||||||
speed20.setOnClickListener(v -> setVideoSpeed(2.0f, speed20Icon));
|
textView2.setOnClickListener(view1 -> {
|
||||||
|
VideoMenuQualityFragment videoMenuQualityFragment =
|
||||||
|
VideoMenuQualityFragment.newInstance(files);
|
||||||
|
videoMenuQualityFragment.show(getActivity().getSupportFragmentManager(),
|
||||||
|
videoMenuQualityFragment.TAG);
|
||||||
|
});
|
||||||
|
menuHolder.addView(menuRow2);
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setVideoSpeed(Float speed, TextView icon) {
|
|
||||||
|
|
||||||
speed05Icon.setText("");
|
|
||||||
speed10Icon.setText("");
|
|
||||||
speed15Icon.setText("");
|
|
||||||
speed20Icon.setText("");
|
|
||||||
|
|
||||||
videoPlayerService.setPlayBackSpeed(speed);
|
|
||||||
|
|
||||||
icon.setText(R.string.video_speed_active_icon);
|
|
||||||
new Iconics.IconicsBuilder().ctx(getContext()).on(icon).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -34,6 +34,8 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -54,6 +56,7 @@ import com.mikepenz.iconics.Iconics;
|
|||||||
import net.schueller.peertube.R;
|
import net.schueller.peertube.R;
|
||||||
|
|
||||||
import net.schueller.peertube.helper.APIUrlHelper;
|
import net.schueller.peertube.helper.APIUrlHelper;
|
||||||
|
import net.schueller.peertube.model.File;
|
||||||
import net.schueller.peertube.model.Video;
|
import net.schueller.peertube.model.Video;
|
||||||
import net.schueller.peertube.network.GetVideoDataService;
|
import net.schueller.peertube.network.GetVideoDataService;
|
||||||
import net.schueller.peertube.network.RetrofitInstance;
|
import net.schueller.peertube.network.RetrofitInstance;
|
||||||
@ -77,6 +80,7 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL
|
|||||||
private Boolean isFullscreen = false;
|
private Boolean isFullscreen = false;
|
||||||
private VideoPlayerService mService;
|
private VideoPlayerService mService;
|
||||||
private TorrentStream torrentStream;
|
private TorrentStream torrentStream;
|
||||||
|
private LinearLayout torrentStatus;
|
||||||
|
|
||||||
private static final String TAG = "VideoPlayerFragment";
|
private static final String TAG = "VideoPlayerFragment";
|
||||||
|
|
||||||
@ -122,7 +126,7 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL
|
|||||||
mVideoUuid = videoUuid;
|
mVideoUuid = videoUuid;
|
||||||
|
|
||||||
assert activity != null;
|
assert activity != null;
|
||||||
progressBar = activity.findViewById(R.id.progress);
|
progressBar = activity.findViewById(R.id.torrent_progress);
|
||||||
progressBar.setMax(100);
|
progressBar.setMax(100);
|
||||||
|
|
||||||
simpleExoPlayerView = new PlayerView(context);
|
simpleExoPlayerView = new PlayerView(context);
|
||||||
@ -131,6 +135,8 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL
|
|||||||
simpleExoPlayerView.setControllerShowTimeoutMs(1000);
|
simpleExoPlayerView.setControllerShowTimeoutMs(1000);
|
||||||
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);
|
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);
|
||||||
|
|
||||||
|
torrentStatus = activity.findViewById(R.id.exo_torrent_status);
|
||||||
|
|
||||||
// Full screen Icon
|
// Full screen Icon
|
||||||
TextView fullscreenButton = activity.findViewById(R.id.exo_fullscreen);
|
TextView fullscreenButton = activity.findViewById(R.id.exo_fullscreen);
|
||||||
fullscreenButton.setText(R.string.video_expand_icon);
|
fullscreenButton.setText(R.string.video_expand_icon);
|
||||||
@ -202,18 +208,29 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL
|
|||||||
assert videoMetaDataFragment != null;
|
assert videoMetaDataFragment != null;
|
||||||
videoMetaDataFragment.updateVideoMeta(video, mService);
|
videoMetaDataFragment.updateVideoMeta(video, mService);
|
||||||
|
|
||||||
Log.v(TAG, "url : " + video.getFiles().get(0).getFileUrl());
|
|
||||||
|
|
||||||
mService.setCurrentStreamUrl(video.getFiles().get(0).getFileUrl());
|
|
||||||
|
|
||||||
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
if (sharedPref.getBoolean("pref_torrent_player", false)) {
|
|
||||||
|
|
||||||
|
if (sharedPref.getBoolean("pref_torrent_player", false)) {
|
||||||
|
torrentStatus.setVisibility(View.VISIBLE);
|
||||||
String stream = video.getFiles().get(0).getTorrentUrl();
|
String stream = video.getFiles().get(0).getTorrentUrl();
|
||||||
Log.v(TAG, "getTorrentUrl : " + video.getFiles().get(0).getTorrentUrl());
|
Log.v(TAG, "getTorrentUrl : " + video.getFiles().get(0).getTorrentUrl());
|
||||||
torrentStream = setupTorrentStream();
|
torrentStream = setupTorrentStream();
|
||||||
torrentStream.startStream(stream);
|
torrentStream.startStream(stream);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
Integer videoQuality = sharedPref.getInt("pref_quality", 0);
|
||||||
|
|
||||||
|
//get video qualities
|
||||||
|
String urlToPlay = video.getFiles().get(0).getFileUrl();
|
||||||
|
for (File file :video.getFiles()) {
|
||||||
|
// Set quality if it matches
|
||||||
|
if (file.getResolution().getId().equals(videoQuality)) {
|
||||||
|
urlToPlay = file.getFileUrl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mService.setCurrentStreamUrl(urlToPlay);
|
||||||
|
|
||||||
|
torrentStatus.setVisibility(View.GONE);
|
||||||
startPlayer();
|
startPlayer();
|
||||||
}
|
}
|
||||||
Log.v(TAG, "end of load Video");
|
Log.v(TAG, "end of load Video");
|
||||||
|
@ -21,7 +21,6 @@ public class File {
|
|||||||
private Integer id;
|
private Integer id;
|
||||||
private String fileDownloadUrl;
|
private String fileDownloadUrl;
|
||||||
private Integer fps;
|
private Integer fps;
|
||||||
private String label;
|
|
||||||
private Resolution resolution;
|
private Resolution resolution;
|
||||||
private String resolutionLabel;
|
private String resolutionLabel;
|
||||||
private String magnetUri;
|
private String magnetUri;
|
||||||
@ -54,14 +53,6 @@ public class File {
|
|||||||
this.fps = fps;
|
this.fps = fps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLabel() {
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLabel(String label) {
|
|
||||||
this.label = label;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Resolution getResolution() {
|
public Resolution getResolution() {
|
||||||
return resolution;
|
return resolution;
|
||||||
}
|
}
|
||||||
|
@ -4,124 +4,7 @@
|
|||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:background="@color/videoBackgroundColor"
|
android:background="@color/videoBackgroundColor"
|
||||||
|
android:id="@+id/video_options_popup"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed05_icon"
|
|
||||||
android:layout_width="32dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed05"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:text="@string/video_speed_05"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed10_icon"
|
|
||||||
android:layout_width="32dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed10"
|
|
||||||
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:text="@string/video_speed_10"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed15_icon"
|
|
||||||
android:layout_width="32dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed15"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:text="@string/video_speed_15"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed20_icon"
|
|
||||||
android:layout_width="32dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/video_speed20"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:gravity="center|start"
|
|
||||||
android:text="@string/video_speed_20"
|
|
||||||
android:textAllCaps="false"
|
|
||||||
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@ -0,0 +1,11 @@
|
|||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/video_quality_menu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/videoBackgroundColor"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -0,0 +1,127 @@
|
|||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/videoBackgroundColor"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed05_icon"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed05"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:text="@string/video_speed_05"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed10_icon"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed10"
|
||||||
|
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:text="@string/video_speed_10"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed15_icon"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed15"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:text="@string/video_speed_15"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed20_icon"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_speed20"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:text="@string/video_speed_20"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
@ -15,12 +15,5 @@
|
|||||||
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ProgressBar
|
|
||||||
android:id="@+id/progress"
|
|
||||||
style="?android:attr/progressBarStyleHorizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:indeterminate="false"
|
|
||||||
android:max="100" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
31
app/src/main/res/layout/row_popup_menu.xml
Normal file
31
app/src/main/res/layout/row_popup_menu.xml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_quality_icon"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/video_quality_text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:gravity="center|start"
|
||||||
|
android:text=""
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -10,8 +10,6 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:targetApi="28">
|
tools:targetApi="28">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/exo_more_button"
|
android:id="@+id/exo_more_button"
|
||||||
android:layout_width="32dp"
|
android:layout_width="32dp"
|
||||||
@ -146,4 +144,20 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:visibility="gone"
|
||||||
|
android:id="@+id/exo_torrent_status"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/torrent_progress"
|
||||||
|
style="?android:attr/progressBarStyleHorizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:indeterminate="false"
|
||||||
|
android:max="100" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
331
app/src/main/res/values-bn/strings.xml
Normal file
331
app/src/main/res/values-bn/strings.xml
Normal file
@ -0,0 +1,331 @@
|
|||||||
|
<resources>
|
||||||
|
<string name="app_name" translatable="false">PeerTube</string>
|
||||||
|
|
||||||
|
<string name="title_activity_video_play">VideoPlayActivity</string>
|
||||||
|
<string name="title_activity_settings">সেটিং</string>
|
||||||
|
<string name="title_activity_login">সাইন ইন</string>
|
||||||
|
|
||||||
|
<!-- Strings related to login -->
|
||||||
|
<string name="prompt_server">সার্ভার</string>
|
||||||
|
<string name="prompt_email">ইমেল / ইয়ুজারনেম</string>
|
||||||
|
<string name="prompt_password">পাসওয়ার্ড</string>
|
||||||
|
<string name="action_sign_in">সাইন ইন</string>
|
||||||
|
<string name="action_sign_in_short">সাইন ইন</string>
|
||||||
|
<string name="error_invalid_email">ভুল ইমেল আইডি</string>
|
||||||
|
<string name="error_invalid_password">পাসওয়ার্ড খুব ছোট</string>
|
||||||
|
<string name="error_incorrect_password">ভুল পাসওয়ার্ড</string>
|
||||||
|
<string name="error_field_required">এটি জরুরি ফিল্ড</string>
|
||||||
|
<string name="permission_rationale">"Contacts permissions are needed for providing email
|
||||||
|
completions."
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- Action bar -->
|
||||||
|
<string name="action_bar_title_search">সার্চ</string>
|
||||||
|
<string name="action_bar_title_settings">সেটিং</string>
|
||||||
|
<string name="action_bar_title_logout">" লগআউট"</string>
|
||||||
|
|
||||||
|
<!-- Bottom navigation bar -->
|
||||||
|
<string name="bottom_nav_title_home">হোম</string>
|
||||||
|
<string name="bottom_nav_title_trending">"Trending"</string>
|
||||||
|
<string name="bottom_nav_title_subscriptions">Subscriptions</string>
|
||||||
|
<string name="bottom_nav_title_account">একাউন্ট</string>
|
||||||
|
|
||||||
|
<!-- Strings related to Settings -->
|
||||||
|
<string name="peertube_required_server_version" translatable="false">1.0.0-alpha.7</string>
|
||||||
|
|
||||||
|
<string name="pref_default_api_base_url" formatted="false" translatable="false">https://troll.tv</string>
|
||||||
|
<string name="pref_title_peertube_server">PeerTube Server</string>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Strings related to Video meta data -->
|
||||||
|
<string name="meta_data_seperator" translatable="false">\u0020-\u0020</string>
|
||||||
|
<string name="meta_data_views">\u0020Views</string>
|
||||||
|
<string name="meta_data_owner_seperator" translatable="false">\@</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="video_row_video_thumbnail">Video Thumbnail</string>
|
||||||
|
<string name="video_row_account_avatar">Account Avatar</string>
|
||||||
|
|
||||||
|
<string name="pref_title_show_nsfw">NSFW দেখাও</string>
|
||||||
|
<string name="pref_description_show_nsfw">NSFW content will be shown if enabled.</string>
|
||||||
|
<string name="pref_language">ভাষা ফিলটার</string>
|
||||||
|
<string name="pref_description_language">" ভিডিওর ভাষা পছন্দ করুন, কিছু পছন্দ না করলে সব ভাষার ভিডিও দেখা যাবে"</string>
|
||||||
|
<string name="title_activity_url_video_play">UrlVideoPlayActivity</string>
|
||||||
|
<string name="pref_title_torrent_player">Torrent Video Player</string>
|
||||||
|
<string name="pref_description_torrent_player">Video playback via a torrent stream. This requires Storage Permissions. (Alpha, not stable!)</string>
|
||||||
|
<string name="pref_title_license">লাইসেন্স</string>
|
||||||
|
<string name="pref_description_license">\n<b>GNU Affero General Public License v3.0</b>\n\nPermissions of this strongest copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. When a modified version is used to provide a service over a network, the complete source code of the modified version must be made available.</string>
|
||||||
|
<string name="pref_title_version">ভার্সন</string>
|
||||||
|
<string name="search_hint">সার্চ PeerTube</string>
|
||||||
|
<string name="title_activity_search">সার্চ</string>
|
||||||
|
<string name="no_data_available">" কোন উত্তর নেই"</string>
|
||||||
|
<string name="descr_overflow_button">আরও</string>
|
||||||
|
<string name="menu_share">শেয়ার</string>
|
||||||
|
<string name="playback_channel_name" translatable="false">PeerTube</string>
|
||||||
|
<string name="invalid_url">Invalid Url!</string>
|
||||||
|
<string name="pref_title_dark_mode">ডার্ক মোড</string>
|
||||||
|
<string name="pref_description_dark_mode">Restart App for Dark Mode to take effect.</string>
|
||||||
|
<string name="pref_title_app_theme">App Theme</string>
|
||||||
|
<string name="pref_description_app_theme">Restart App for theme to take effect.</string>
|
||||||
|
|
||||||
|
<string name="ab">Abkhazian</string>
|
||||||
|
<string name="aa">Afar</string>
|
||||||
|
<string name="af">Afrikaans</string>
|
||||||
|
<string name="ak">Akan</string>
|
||||||
|
<string name="sq">Albanian</string>
|
||||||
|
<string name="ase">American Sign Language</string>
|
||||||
|
<string name="am">Amharic</string>
|
||||||
|
<string name="ar">Arabic</string>
|
||||||
|
<string name="an">Aragonese</string>
|
||||||
|
<string name="hy">Armenian</string>
|
||||||
|
<string name="as">Assamese</string>
|
||||||
|
<string name="av">Avaric</string>
|
||||||
|
<string name="ay">Aymara</string>
|
||||||
|
<string name="az">Azerbaijani</string>
|
||||||
|
<string name="bm">Bambara</string>
|
||||||
|
<string name="ba">Bashkir</string>
|
||||||
|
<string name="eu">Basque</string>
|
||||||
|
<string name="be">Belarusian</string>
|
||||||
|
<string name="bn">বাংলা</string>
|
||||||
|
<string name="bi">Bislama</string>
|
||||||
|
<string name="bs">Bosnian</string>
|
||||||
|
<string name="bzs">Brazilian Sign Language</string>
|
||||||
|
<string name="br">Breton</string>
|
||||||
|
<string name="bfi">British Sign Language</string>
|
||||||
|
<string name="bg">Bulgarian</string>
|
||||||
|
<string name="my">Burmese</string>
|
||||||
|
<string name="ca">Catalan</string>
|
||||||
|
<string name="ch">Chamorro</string>
|
||||||
|
<string name="ce">Chechen</string>
|
||||||
|
<string name="zh">Chinese</string>
|
||||||
|
<string name="csl">Chinese Sign Language</string>
|
||||||
|
<string name="cv">Chuvash</string>
|
||||||
|
<string name="kw">Cornish</string>
|
||||||
|
<string name="co">Corsican</string>
|
||||||
|
<string name="cr">Cree</string>
|
||||||
|
<string name="hr">Croatian</string>
|
||||||
|
<string name="cs">Czech</string>
|
||||||
|
<string name="cse">Czech Sign Language</string>
|
||||||
|
<string name="da">Danish</string>
|
||||||
|
<string name="dsl">Danish Sign Language</string>
|
||||||
|
<string name="dv">Dhivehi</string>
|
||||||
|
<string name="nl">Dutch</string>
|
||||||
|
<string name="dz">Dzongkha</string>
|
||||||
|
<string name="en">ইংলিশ</string>
|
||||||
|
<string name="eo">Esperanto</string>
|
||||||
|
<string name="et">Estonian</string>
|
||||||
|
<string name="ee">Ewe</string>
|
||||||
|
<string name="fo">Faroese</string>
|
||||||
|
<string name="fj">Fijian</string>
|
||||||
|
<string name="fi">Finnish</string>
|
||||||
|
<string name="fr">French</string>
|
||||||
|
<string name="fsl">French Sign Language</string>
|
||||||
|
<string name="ff">Fulah</string>
|
||||||
|
<string name="gl">Galician</string>
|
||||||
|
<string name="lg">Ganda</string>
|
||||||
|
<string name="ka">Georgian</string>
|
||||||
|
<string name="de">German</string>
|
||||||
|
<string name="gsg">German Sign Language</string>
|
||||||
|
<string name="gn">Guarani</string>
|
||||||
|
<string name="gu">Gujarati</string>
|
||||||
|
<string name="ht">Haitian</string>
|
||||||
|
<string name="ha">Hausa</string>
|
||||||
|
<string name="he">Hebrew</string>
|
||||||
|
<string name="hz">Herero</string>
|
||||||
|
<string name="hi">Hindi</string>
|
||||||
|
<string name="ho">Hiri Motu</string>
|
||||||
|
<string name="hu">Hungarian</string>
|
||||||
|
<string name="is">Icelandic</string>
|
||||||
|
<string name="ig">Igbo</string>
|
||||||
|
<string name="id">Indonesian</string>
|
||||||
|
<string name="iu">Inuktitut</string>
|
||||||
|
<string name="ik">Inupiaq</string>
|
||||||
|
<string name="ga">Irish</string>
|
||||||
|
<string name="it">Italian</string>
|
||||||
|
<string name="ja">Japanese</string>
|
||||||
|
<string name="jsl">Japanese Sign Language</string>
|
||||||
|
<string name="jv">Javanese</string>
|
||||||
|
<string name="kl">Kalaallisut</string>
|
||||||
|
<string name="kn">Kannada</string>
|
||||||
|
<string name="kr">Kanuri</string>
|
||||||
|
<string name="ks">Kashmiri</string>
|
||||||
|
<string name="kk">Kazakh</string>
|
||||||
|
<string name="km">Khmer</string>
|
||||||
|
<string name="ki">Kikuyu</string>
|
||||||
|
<string name="rw">Kinyarwanda</string>
|
||||||
|
<string name="ky">Kirghiz</string>
|
||||||
|
<string name="tlh">Klingon</string>
|
||||||
|
<string name="kv">Komi</string>
|
||||||
|
<string name="kg">Kongo</string>
|
||||||
|
<string name="ko">Korean</string>
|
||||||
|
<string name="avk">Kotava</string>
|
||||||
|
<string name="kj">Kuanyama</string>
|
||||||
|
<string name="ku">Kurdish</string>
|
||||||
|
<string name="lo">Lao</string>
|
||||||
|
<string name="lv">Latvian</string>
|
||||||
|
<string name="li">Limburgan</string>
|
||||||
|
<string name="ln">Lingala</string>
|
||||||
|
<string name="lt">Lithuanian</string>
|
||||||
|
<string name="jbo">Lojban</string>
|
||||||
|
<string name="lu">Luba-Katanga</string>
|
||||||
|
<string name="lb">Luxembourgish</string>
|
||||||
|
<string name="mk">Macedonian</string>
|
||||||
|
<string name="mg">Malagasy</string>
|
||||||
|
<string name="ms">Malay (macrolanguage)</string>
|
||||||
|
<string name="ml">Malayalam</string>
|
||||||
|
<string name="mt">Maltese</string>
|
||||||
|
<string name="gv">Manx</string>
|
||||||
|
<string name="mi">Maori</string>
|
||||||
|
<string name="mr">Marathi</string>
|
||||||
|
<string name="mh">Marshallese</string>
|
||||||
|
<string name="el">Modern Greek (1453-)</string>
|
||||||
|
<string name="mn">Mongolian</string>
|
||||||
|
<string name="na">Nauru</string>
|
||||||
|
<string name="nv">Navajo</string>
|
||||||
|
<string name="ng">Ndonga</string>
|
||||||
|
<string name="ne">Nepali (macrolanguage)</string>
|
||||||
|
<string name="nd">North Ndebele</string>
|
||||||
|
<string name="se">Northern Sami</string>
|
||||||
|
<string name="no">Norwegian</string>
|
||||||
|
<string name="nb">Norwegian Bokmål</string>
|
||||||
|
<string name="nn">Norwegian Nynorsk</string>
|
||||||
|
<string name="ny">Nyanja</string>
|
||||||
|
<string name="oc">Occitan</string>
|
||||||
|
<string name="oj">Ojibwa</string>
|
||||||
|
<string name="or">Oriya (macrolanguage)</string>
|
||||||
|
<string name="om">Oromo</string>
|
||||||
|
<string name="os">Ossetian</string>
|
||||||
|
<string name="pks">Pakistan Sign Language</string>
|
||||||
|
<string name="pa">Panjabi</string>
|
||||||
|
<string name="fa">Persian</string>
|
||||||
|
<string name="pl">Polish</string>
|
||||||
|
<string name="pt">Portuguese</string>
|
||||||
|
<string name="ps">Pushto</string>
|
||||||
|
<string name="qu">Quechua</string>
|
||||||
|
<string name="ro">Romanian</string>
|
||||||
|
<string name="rm">Romansh</string>
|
||||||
|
<string name="rn">Rundi</string>
|
||||||
|
<string name="ru">Russian</string>
|
||||||
|
<string name="rsl">Russian Sign Language</string>
|
||||||
|
<string name="sm">Samoan</string>
|
||||||
|
<string name="sg">Sango</string>
|
||||||
|
<string name="sc">Sardinian</string>
|
||||||
|
<string name="sdl">Saudi Arabian Sign Language</string>
|
||||||
|
<string name="gd">Scottish Gaelic</string>
|
||||||
|
<string name="sr">Serbian</string>
|
||||||
|
<string name="sh">Serbo-Croatian</string>
|
||||||
|
<string name="sn">Shona</string>
|
||||||
|
<string name="ii">Sichuan Yi</string>
|
||||||
|
<string name="sd">Sindhi</string>
|
||||||
|
<string name="si">Sinhala</string>
|
||||||
|
<string name="sk">Slovak</string>
|
||||||
|
<string name="sl">Slovenian</string>
|
||||||
|
<string name="so">Somali</string>
|
||||||
|
<string name="sfs">South African Sign Language</string>
|
||||||
|
<string name="nr">South Ndebele</string>
|
||||||
|
<string name="st">Southern Sotho</string>
|
||||||
|
<string name="es">Spanish</string>
|
||||||
|
<string name="su">Sundanese</string>
|
||||||
|
<string name="sw">Swahili (macrolanguage)</string>
|
||||||
|
<string name="ss">Swati</string>
|
||||||
|
<string name="sv">Swedish</string>
|
||||||
|
<string name="swl">Swedish Sign Language</string>
|
||||||
|
<string name="tl">Tagalog</string>
|
||||||
|
<string name="ty">Tahitian</string>
|
||||||
|
<string name="tg">Tajik</string>
|
||||||
|
<string name="ta">Tamil</string>
|
||||||
|
<string name="tt">Tatar</string>
|
||||||
|
<string name="te">Telugu</string>
|
||||||
|
<string name="th">Thai</string>
|
||||||
|
<string name="bo">Tibetan</string>
|
||||||
|
<string name="ti">Tigrinya</string>
|
||||||
|
<string name="to">Tonga (Tonga Islands)</string>
|
||||||
|
<string name="ts">Tsonga</string>
|
||||||
|
<string name="tn">Tswana</string>
|
||||||
|
<string name="tr">Turkish</string>
|
||||||
|
<string name="tk">Turkmen</string>
|
||||||
|
<string name="tw">Twi</string>
|
||||||
|
<string name="ug">Uighur</string>
|
||||||
|
<string name="uk">Ukrainian</string>
|
||||||
|
<string name="ur">Urdu</string>
|
||||||
|
<string name="uz">Uzbek</string>
|
||||||
|
<string name="ve">Venda</string>
|
||||||
|
<string name="vi">Vietnamese</string>
|
||||||
|
<string name="wa">Walloon</string>
|
||||||
|
<string name="cy">Welsh</string>
|
||||||
|
<string name="fy">Western Frisian</string>
|
||||||
|
<string name="wo">Wolof</string>
|
||||||
|
<string name="xh">Xhosa</string>
|
||||||
|
<string name="yi">Yiddish</string>
|
||||||
|
<string name="yo">Yoruba</string>
|
||||||
|
<string name="za">Zhuang</string>
|
||||||
|
<string name="zu">Zulu</string>
|
||||||
|
|
||||||
|
<string name="red">লাল</string>
|
||||||
|
<string name="pink">গোলাপি</string>
|
||||||
|
<string name="purple">বেগুনি</string>
|
||||||
|
<string name="indigo">Indigo</string>
|
||||||
|
<string name="blue">নীল</string>
|
||||||
|
<string name="lightblue">হালকা নীল</string>
|
||||||
|
<string name="cyan">Cyan</string>
|
||||||
|
<string name="teal">Teal</string>
|
||||||
|
<string name="green">সবুজ</string>
|
||||||
|
<string name="lightgreen">হালকা সবুজ</string>
|
||||||
|
<string name="lime">Lime</string>
|
||||||
|
<string name="yellow">হলুদ</string>
|
||||||
|
<string name="amber">Amber</string>
|
||||||
|
<string name="orange">কমলা</string>
|
||||||
|
<string name="deeporange">Deep Orange</string>
|
||||||
|
<string name="brown">বাদামী</string>
|
||||||
|
<string name="gray">ধুসর</string>
|
||||||
|
<string name="bluegray">Bluegray</string>
|
||||||
|
<string name="video_speed_05">0.5x</string>
|
||||||
|
<string name="video_speed_10">Normal</string>
|
||||||
|
<string name="video_speed_15">1.5x</string>
|
||||||
|
<string name="video_speed_20">2x</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="video_speed_active_icon" translatable="false">{faw-check}</string>
|
||||||
|
<string name="video_expand_icon" translatable="false">{faw-expand}</string>
|
||||||
|
<string name="video_compress_icon" translatable="false">{faw-compress}</string>
|
||||||
|
<string name="video_more_icon" translatable="false">{faw-ellipsis-v}</string>
|
||||||
|
<string name="video_thumbs_up_icon" translatable="false">{faw-thumbs-up}</string>
|
||||||
|
<string name="video_thumbs_down_icon" translatable="false">{faw-thumbs-down}</string>
|
||||||
|
<string name="video_share_icon" translatable="false">{faw-share}</string>
|
||||||
|
<string name="video_download_icon" translatable="false">{faw-download}</string>
|
||||||
|
<string name="video_save_icon" translatable="false">{faw-save}</string>
|
||||||
|
|
||||||
|
<string name="pref_title_background_play">Background Playback</string>
|
||||||
|
<string name="pref_description_background_play">If enabled, continues to play video in background.</string>
|
||||||
|
<string name="bottom_nav_title_local">Local</string>
|
||||||
|
|
||||||
|
<string name="title_activity_account">একাউন্ট</string>
|
||||||
|
<string name="menu_video_more_report">রিপোর্ট</string>
|
||||||
|
<string name="menu_video_more_blacklist">Blacklist</string>
|
||||||
|
<string name="video_download_permission_error">Can not download video without write permission</string>
|
||||||
|
<string name="video_rating_failed">Rating Failed</string>
|
||||||
|
<string name="video_login_required_for_service">You must login to use this service</string>
|
||||||
|
|
||||||
|
<string name="video_meta_button_share">শেয়ার</string>
|
||||||
|
<string name="video_meta_button_download">ডাউনলোড</string>
|
||||||
|
<string name="video_meta_button_privacy">Privacy</string>
|
||||||
|
<string name="video_meta_button_category">Category</string>
|
||||||
|
<string name="video_meta_button_license">License</string>
|
||||||
|
<string name="video_meta_button_language">ভাষা</string>
|
||||||
|
<string name="video_meta_button_tags">Tags</string>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Constants, Don't translate -->
|
||||||
|
<string name="pref_token_access" translatable="false">pref_token_access</string>
|
||||||
|
<string name="pref_token_refresh" translatable="false">pref_token_refresh</string>
|
||||||
|
<string name="pref_token_expiration" translatable="false">pref_token_expiration</string>
|
||||||
|
<string name="pref_token_type" translatable="false">pref_token_type</string>
|
||||||
|
<string name="pref_auth_username" translatable="false">pref_auth_username</string>
|
||||||
|
<string name="pref_auth_password" translatable="false">pref_auth_password</string>
|
||||||
|
<string name="video_rating_none" translatable="false">none</string>
|
||||||
|
<string name="video_rating_like" translatable="false">like</string>
|
||||||
|
<string name="video_rating_dislike" translatable="false">dislike</string>
|
||||||
|
<string name="deeppurple">গাঢ় বেগুনি</string>
|
||||||
|
|
||||||
|
|
||||||
|
</resources>
|
@ -252,7 +252,7 @@
|
|||||||
<string name="gray">Серый</string>
|
<string name="gray">Серый</string>
|
||||||
<string name="bluegray">Серо-голубой</string>
|
<string name="bluegray">Серо-голубой</string>
|
||||||
<string name="video_speed_05">0.5x</string>
|
<string name="video_speed_05">0.5x</string>
|
||||||
<string name="video_speed_10">Нормальный</string>
|
<string name="video_speed_10">Нормальная</string>
|
||||||
<string name="video_speed_15">1.5x</string>
|
<string name="video_speed_15">1.5x</string>
|
||||||
<string name="video_speed_20">2x</string>
|
<string name="video_speed_20">2x</string>
|
||||||
|
|
||||||
|
@ -435,4 +435,16 @@
|
|||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="empty_array"/>
|
<string-array name="empty_array"/>
|
||||||
|
|
||||||
|
<string-array name="quality">
|
||||||
|
<item>Low</item>
|
||||||
|
<item>Medium</item>
|
||||||
|
<item>High</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="qualityValues">
|
||||||
|
<item>Low</item>
|
||||||
|
<item>Medium</item>
|
||||||
|
<item>High</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -46,8 +46,8 @@
|
|||||||
<string name="video_row_video_thumbnail">Video Thumbnail</string>
|
<string name="video_row_video_thumbnail">Video Thumbnail</string>
|
||||||
<string name="video_row_account_avatar">Account Avatar</string>
|
<string name="video_row_account_avatar">Account Avatar</string>
|
||||||
|
|
||||||
<string name="pref_title_show_nsfw">Show NSFW</string>
|
<string name="pref_title_show_nsfw">NSFW Content</string>
|
||||||
<string name="pref_description_show_nsfw">NSFW content will be shown if enabled.</string>
|
<string name="pref_description_show_nsfw">Show NSFW content</string>
|
||||||
<string name="pref_language">Languages filter</string>
|
<string name="pref_language">Languages filter</string>
|
||||||
<string name="pref_description_language">Select video languages that should be shown. None selected will show all videos in all languages.</string>
|
<string name="pref_description_language">Select video languages that should be shown. None selected will show all videos in all languages.</string>
|
||||||
<string name="title_activity_url_video_play">UrlVideoPlayActivity</string>
|
<string name="title_activity_url_video_play">UrlVideoPlayActivity</string>
|
||||||
@ -285,8 +285,10 @@
|
|||||||
<string name="video_speed_15">1.5x</string>
|
<string name="video_speed_15">1.5x</string>
|
||||||
<string name="video_speed_20">2x</string>
|
<string name="video_speed_20">2x</string>
|
||||||
|
|
||||||
|
<string name="video_option_speed_icon" translatable="false">{faw-play-circle}</string>
|
||||||
|
<string name="video_option_quality_icon" translatable="false">{faw-cog}</string>
|
||||||
<string name="video_speed_active_icon" translatable="false">{faw-check}</string>
|
<string name="video_speed_active_icon" translatable="false">{faw-check}</string>
|
||||||
|
<string name="video_quality_active_icon" translatable="false">{faw-check}</string>
|
||||||
<string name="video_expand_icon" translatable="false">{faw-expand}</string>
|
<string name="video_expand_icon" translatable="false">{faw-expand}</string>
|
||||||
<string name="video_compress_icon" translatable="false">{faw-compress}</string>
|
<string name="video_compress_icon" translatable="false">{faw-compress}</string>
|
||||||
<string name="video_more_icon" translatable="false">{faw-ellipsis-v}</string>
|
<string name="video_more_icon" translatable="false">{faw-ellipsis-v}</string>
|
||||||
@ -315,6 +317,8 @@
|
|||||||
<string name="video_meta_button_language">Language</string>
|
<string name="video_meta_button_language">Language</string>
|
||||||
<string name="video_meta_button_tags">Tags</string>
|
<string name="video_meta_button_tags">Tags</string>
|
||||||
|
|
||||||
|
<string name="menu_video_options_playback_speed">Playback speed</string>
|
||||||
|
<string name="menu_video_options_quality">Quality</string>
|
||||||
|
|
||||||
<!-- Constants, Don't translate -->
|
<!-- Constants, Don't translate -->
|
||||||
<string name="pref_token_access" translatable="false">pref_token_access</string>
|
<string name="pref_token_access" translatable="false">pref_token_access</string>
|
||||||
@ -328,4 +332,5 @@
|
|||||||
<string name="video_rating_dislike" translatable="false">dislike</string>
|
<string name="video_rating_dislike" translatable="false">dislike</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user