Use view binding in DownloadDialog.
This commit is contained in:
parent
7c581ec108
commit
7682ebd245
|
@ -16,12 +16,8 @@ import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.EditText;
|
|
||||||
import android.widget.RadioButton;
|
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.Spinner;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.IdRes;
|
import androidx.annotation.IdRes;
|
||||||
|
@ -40,6 +36,7 @@ import com.nononsenseapps.filepicker.Utils;
|
||||||
import org.schabi.newpipe.MainActivity;
|
import org.schabi.newpipe.MainActivity;
|
||||||
import org.schabi.newpipe.R;
|
import org.schabi.newpipe.R;
|
||||||
import org.schabi.newpipe.RouterActivity;
|
import org.schabi.newpipe.RouterActivity;
|
||||||
|
import org.schabi.newpipe.databinding.DownloadDialogBinding;
|
||||||
import org.schabi.newpipe.extractor.MediaFormat;
|
import org.schabi.newpipe.extractor.MediaFormat;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.localization.Localization;
|
import org.schabi.newpipe.extractor.localization.Localization;
|
||||||
|
@ -116,11 +113,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
|
|
||||||
private final CompositeDisposable disposables = new CompositeDisposable();
|
private final CompositeDisposable disposables = new CompositeDisposable();
|
||||||
|
|
||||||
private EditText nameEditText;
|
private DownloadDialogBinding dialogBinding;
|
||||||
private Spinner streamsSpinner;
|
|
||||||
private RadioGroup radioStreamsGroup;
|
|
||||||
private TextView threadsCountTextView;
|
|
||||||
private SeekBar threadsSeekBar;
|
|
||||||
|
|
||||||
private SharedPreferences prefs;
|
private SharedPreferences prefs;
|
||||||
|
|
||||||
|
@ -277,38 +270,35 @@ public class DownloadDialog extends DialogFragment
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
nameEditText = view.findViewById(R.id.file_name);
|
dialogBinding = DownloadDialogBinding.bind(view);
|
||||||
nameEditText.setText(FilenameUtils.createFilename(getContext(), currentInfo.getName()));
|
|
||||||
|
dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(),
|
||||||
|
currentInfo.getName()));
|
||||||
selectedAudioIndex = ListHelper
|
selectedAudioIndex = ListHelper
|
||||||
.getDefaultAudioFormat(getContext(), currentInfo.getAudioStreams());
|
.getDefaultAudioFormat(getContext(), currentInfo.getAudioStreams());
|
||||||
|
|
||||||
selectedSubtitleIndex = getSubtitleIndexBy(subtitleStreamsAdapter.getAll());
|
selectedSubtitleIndex = getSubtitleIndexBy(subtitleStreamsAdapter.getAll());
|
||||||
|
|
||||||
streamsSpinner = view.findViewById(R.id.quality_spinner);
|
dialogBinding.qualitySpinner.setOnItemSelectedListener(this);
|
||||||
streamsSpinner.setOnItemSelectedListener(this);
|
|
||||||
|
|
||||||
threadsCountTextView = view.findViewById(R.id.threads_count);
|
dialogBinding.videoAudioGroup.setOnCheckedChangeListener(this);
|
||||||
threadsSeekBar = view.findViewById(R.id.threads);
|
|
||||||
|
|
||||||
radioStreamsGroup = view.findViewById(R.id.video_audio_group);
|
initToolbar(dialogBinding.toolbarLayout.toolbar);
|
||||||
radioStreamsGroup.setOnCheckedChangeListener(this);
|
|
||||||
|
|
||||||
initToolbar(view.findViewById(R.id.toolbar));
|
|
||||||
setupDownloadOptions();
|
setupDownloadOptions();
|
||||||
|
|
||||||
prefs = PreferenceManager.getDefaultSharedPreferences(requireContext());
|
prefs = PreferenceManager.getDefaultSharedPreferences(requireContext());
|
||||||
|
|
||||||
final int threads = prefs.getInt(getString(R.string.default_download_threads), 3);
|
final int threads = prefs.getInt(getString(R.string.default_download_threads), 3);
|
||||||
threadsCountTextView.setText(String.valueOf(threads));
|
dialogBinding.threadsCount.setText(String.valueOf(threads));
|
||||||
threadsSeekBar.setProgress(threads - 1);
|
dialogBinding.threads.setProgress(threads - 1);
|
||||||
threadsSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
dialogBinding.threads.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onProgressChanged(final SeekBar seekbar, final int progress,
|
public void onProgressChanged(final SeekBar seekbar, final int progress,
|
||||||
final boolean fromUser) {
|
final boolean fromUser) {
|
||||||
final int newProgress = progress + 1;
|
final int newProgress = progress + 1;
|
||||||
prefs.edit().putInt(getString(R.string.default_download_threads), newProgress)
|
prefs.edit().putInt(getString(R.string.default_download_threads), newProgress)
|
||||||
.apply();
|
.apply();
|
||||||
threadsCountTextView.setText(String.valueOf(newProgress));
|
dialogBinding.threadsCount.setText(String.valueOf(newProgress));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -326,19 +316,19 @@ public class DownloadDialog extends DialogFragment
|
||||||
|
|
||||||
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedVideoStreams)
|
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedVideoStreams)
|
||||||
.subscribe(result -> {
|
.subscribe(result -> {
|
||||||
if (radioStreamsGroup.getCheckedRadioButtonId() == R.id.video_button) {
|
if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.video_button) {
|
||||||
setupVideoSpinner();
|
setupVideoSpinner();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedAudioStreams)
|
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedAudioStreams)
|
||||||
.subscribe(result -> {
|
.subscribe(result -> {
|
||||||
if (radioStreamsGroup.getCheckedRadioButtonId() == R.id.audio_button) {
|
if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.audio_button) {
|
||||||
setupAudioSpinner();
|
setupAudioSpinner();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedSubtitleStreams)
|
disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedSubtitleStreams)
|
||||||
.subscribe(result -> {
|
.subscribe(result -> {
|
||||||
if (radioStreamsGroup.getCheckedRadioButtonId() == R.id.subtitle_button) {
|
if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.subtitle_button) {
|
||||||
setupSubtitleSpinner();
|
setupSubtitleSpinner();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
@ -350,6 +340,12 @@ public class DownloadDialog extends DialogFragment
|
||||||
disposables.clear();
|
disposables.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
dialogBinding = null;
|
||||||
|
super.onDestroyView();
|
||||||
|
}
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
// Radio group Video&Audio options - Listener
|
// Radio group Video&Audio options - Listener
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
|
@ -429,8 +425,8 @@ public class DownloadDialog extends DialogFragment
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
streamsSpinner.setAdapter(audioStreamsAdapter);
|
dialogBinding.qualitySpinner.setAdapter(audioStreamsAdapter);
|
||||||
streamsSpinner.setSelection(selectedAudioIndex);
|
dialogBinding.qualitySpinner.setSelection(selectedAudioIndex);
|
||||||
setRadioButtonsState(true);
|
setRadioButtonsState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,8 +435,8 @@ public class DownloadDialog extends DialogFragment
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
streamsSpinner.setAdapter(videoStreamsAdapter);
|
dialogBinding.qualitySpinner.setAdapter(videoStreamsAdapter);
|
||||||
streamsSpinner.setSelection(selectedVideoIndex);
|
dialogBinding.qualitySpinner.setSelection(selectedVideoIndex);
|
||||||
setRadioButtonsState(true);
|
setRadioButtonsState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,8 +445,8 @@ public class DownloadDialog extends DialogFragment
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
streamsSpinner.setAdapter(subtitleStreamsAdapter);
|
dialogBinding.qualitySpinner.setAdapter(subtitleStreamsAdapter);
|
||||||
streamsSpinner.setSelection(selectedSubtitleIndex);
|
dialogBinding.qualitySpinner.setSelection(selectedSubtitleIndex);
|
||||||
setRadioButtonsState(true);
|
setRadioButtonsState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -475,7 +471,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
threadsSeekBar.setEnabled(flag);
|
dialogBinding.threads.setEnabled(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -486,7 +482,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
+ "parent = [" + parent + "], view = [" + view + "], "
|
+ "parent = [" + parent + "], view = [" + view + "], "
|
||||||
+ "position = [" + position + "], id = [" + id + "]");
|
+ "position = [" + position + "], id = [" + id + "]");
|
||||||
}
|
}
|
||||||
switch (radioStreamsGroup.getCheckedRadioButtonId()) {
|
switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) {
|
||||||
case R.id.audio_button:
|
case R.id.audio_button:
|
||||||
selectedAudioIndex = position;
|
selectedAudioIndex = position;
|
||||||
break;
|
break;
|
||||||
|
@ -506,16 +502,14 @@ public class DownloadDialog extends DialogFragment
|
||||||
protected void setupDownloadOptions() {
|
protected void setupDownloadOptions() {
|
||||||
setRadioButtonsState(false);
|
setRadioButtonsState(false);
|
||||||
|
|
||||||
final RadioButton audioButton = radioStreamsGroup.findViewById(R.id.audio_button);
|
|
||||||
final RadioButton videoButton = radioStreamsGroup.findViewById(R.id.video_button);
|
|
||||||
final RadioButton subtitleButton = radioStreamsGroup.findViewById(R.id.subtitle_button);
|
|
||||||
final boolean isVideoStreamsAvailable = videoStreamsAdapter.getCount() > 0;
|
final boolean isVideoStreamsAvailable = videoStreamsAdapter.getCount() > 0;
|
||||||
final boolean isAudioStreamsAvailable = audioStreamsAdapter.getCount() > 0;
|
final boolean isAudioStreamsAvailable = audioStreamsAdapter.getCount() > 0;
|
||||||
final boolean isSubtitleStreamsAvailable = subtitleStreamsAdapter.getCount() > 0;
|
final boolean isSubtitleStreamsAvailable = subtitleStreamsAdapter.getCount() > 0;
|
||||||
|
|
||||||
audioButton.setVisibility(isAudioStreamsAvailable ? View.VISIBLE : View.GONE);
|
dialogBinding.audioButton.setVisibility(isAudioStreamsAvailable ? View.VISIBLE : View.GONE);
|
||||||
videoButton.setVisibility(isVideoStreamsAvailable ? View.VISIBLE : View.GONE);
|
dialogBinding.videoButton.setVisibility(isVideoStreamsAvailable ? View.VISIBLE : View.GONE);
|
||||||
subtitleButton.setVisibility(isSubtitleStreamsAvailable ? View.VISIBLE : View.GONE);
|
dialogBinding.subtitleButton.setVisibility(isSubtitleStreamsAvailable
|
||||||
|
? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||||
final String defaultMedia = prefs.getString(getString(R.string.last_used_download_type),
|
final String defaultMedia = prefs.getString(getString(R.string.last_used_download_type),
|
||||||
|
@ -523,24 +517,24 @@ public class DownloadDialog extends DialogFragment
|
||||||
|
|
||||||
if (isVideoStreamsAvailable
|
if (isVideoStreamsAvailable
|
||||||
&& (defaultMedia.equals(getString(R.string.last_download_type_video_key)))) {
|
&& (defaultMedia.equals(getString(R.string.last_download_type_video_key)))) {
|
||||||
videoButton.setChecked(true);
|
dialogBinding.videoButton.setChecked(true);
|
||||||
setupVideoSpinner();
|
setupVideoSpinner();
|
||||||
} else if (isAudioStreamsAvailable
|
} else if (isAudioStreamsAvailable
|
||||||
&& (defaultMedia.equals(getString(R.string.last_download_type_audio_key)))) {
|
&& (defaultMedia.equals(getString(R.string.last_download_type_audio_key)))) {
|
||||||
audioButton.setChecked(true);
|
dialogBinding.audioButton.setChecked(true);
|
||||||
setupAudioSpinner();
|
setupAudioSpinner();
|
||||||
} else if (isSubtitleStreamsAvailable
|
} else if (isSubtitleStreamsAvailable
|
||||||
&& (defaultMedia.equals(getString(R.string.last_download_type_subtitle_key)))) {
|
&& (defaultMedia.equals(getString(R.string.last_download_type_subtitle_key)))) {
|
||||||
subtitleButton.setChecked(true);
|
dialogBinding.subtitleButton.setChecked(true);
|
||||||
setupSubtitleSpinner();
|
setupSubtitleSpinner();
|
||||||
} else if (isVideoStreamsAvailable) {
|
} else if (isVideoStreamsAvailable) {
|
||||||
videoButton.setChecked(true);
|
dialogBinding.videoButton.setChecked(true);
|
||||||
setupVideoSpinner();
|
setupVideoSpinner();
|
||||||
} else if (isAudioStreamsAvailable) {
|
} else if (isAudioStreamsAvailable) {
|
||||||
audioButton.setChecked(true);
|
dialogBinding.audioButton.setChecked(true);
|
||||||
setupAudioSpinner();
|
setupAudioSpinner();
|
||||||
} else if (isSubtitleStreamsAvailable) {
|
} else if (isSubtitleStreamsAvailable) {
|
||||||
subtitleButton.setChecked(true);
|
dialogBinding.subtitleButton.setChecked(true);
|
||||||
setupSubtitleSpinner();
|
setupSubtitleSpinner();
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(getContext(), R.string.no_streams_available_download,
|
Toast.makeText(getContext(), R.string.no_streams_available_download,
|
||||||
|
@ -550,9 +544,9 @@ public class DownloadDialog extends DialogFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRadioButtonsState(final boolean enabled) {
|
private void setRadioButtonsState(final boolean enabled) {
|
||||||
radioStreamsGroup.findViewById(R.id.audio_button).setEnabled(enabled);
|
dialogBinding.audioButton.setEnabled(enabled);
|
||||||
radioStreamsGroup.findViewById(R.id.video_button).setEnabled(enabled);
|
dialogBinding.videoButton.setEnabled(enabled);
|
||||||
radioStreamsGroup.findViewById(R.id.subtitle_button).setEnabled(enabled);
|
dialogBinding.subtitleButton.setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getSubtitleIndexBy(final List<SubtitlesStream> streams) {
|
private int getSubtitleIndexBy(final List<SubtitlesStream> streams) {
|
||||||
|
@ -582,7 +576,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getNameEditText() {
|
private String getNameEditText() {
|
||||||
final String str = nameEditText.getText().toString().trim();
|
final String str = dialogBinding.fileName.getText().toString().trim();
|
||||||
|
|
||||||
return FilenameUtils.createFilename(context, str.isEmpty() ? currentInfo.getName() : str);
|
return FilenameUtils.createFilename(context, str.isEmpty() ? currentInfo.getName() : str);
|
||||||
}
|
}
|
||||||
|
@ -619,7 +613,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
|
|
||||||
String filename = getNameEditText().concat(".");
|
String filename = getNameEditText().concat(".");
|
||||||
|
|
||||||
switch (radioStreamsGroup.getCheckedRadioButtonId()) {
|
switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) {
|
||||||
case R.id.audio_button:
|
case R.id.audio_button:
|
||||||
selectedMediaType = getString(R.string.last_download_type_audio_key);
|
selectedMediaType = getString(R.string.last_download_type_audio_key);
|
||||||
mainStorage = mainStorageAudio;
|
mainStorage = mainStorageAudio;
|
||||||
|
@ -669,7 +663,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
filename, mime);
|
filename, mime);
|
||||||
} else {
|
} else {
|
||||||
File initialSavePath;
|
File initialSavePath;
|
||||||
if (radioStreamsGroup.getCheckedRadioButtonId() == R.id.audio_button) {
|
if (dialogBinding.videoAudioGroup.getCheckedRadioButtonId() == R.id.audio_button) {
|
||||||
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MUSIC);
|
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MUSIC);
|
||||||
} else {
|
} else {
|
||||||
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MOVIES);
|
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MOVIES);
|
||||||
|
@ -862,7 +856,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
final Stream selectedStream;
|
final Stream selectedStream;
|
||||||
Stream secondaryStream = null;
|
Stream secondaryStream = null;
|
||||||
final char kind;
|
final char kind;
|
||||||
int threads = threadsSeekBar.getProgress() + 1;
|
int threads = dialogBinding.threads.getProgress() + 1;
|
||||||
final String[] urls;
|
final String[] urls;
|
||||||
final MissionRecoveryInfo[] recoveryInfo;
|
final MissionRecoveryInfo[] recoveryInfo;
|
||||||
String psName = null;
|
String psName = null;
|
||||||
|
@ -870,7 +864,7 @@ public class DownloadDialog extends DialogFragment
|
||||||
long nearLength = 0;
|
long nearLength = 0;
|
||||||
|
|
||||||
// more download logic: select muxer, subtitle converter, etc.
|
// more download logic: select muxer, subtitle converter, etc.
|
||||||
switch (radioStreamsGroup.getCheckedRadioButtonId()) {
|
switch (dialogBinding.videoAudioGroup.getCheckedRadioButtonId()) {
|
||||||
case R.id.audio_button:
|
case R.id.audio_button:
|
||||||
kind = 'a';
|
kind = 'a';
|
||||||
selectedStream = audioStreamsAdapter.getItem(selectedAudioIndex);
|
selectedStream = audioStreamsAdapter.getItem(selectedAudioIndex);
|
||||||
|
|
Loading…
Reference in New Issue