From 35e005caaae238b8d3faa76b387144e8c555f5fc Mon Sep 17 00:00:00 2001 From: Stypox Date: Sun, 18 Jul 2021 14:22:41 +0200 Subject: [PATCH 1/2] Improve method order in DownloadDialog and add separator comments --- .../newpipe/download/DownloadDialog.java | 179 ++++++++++-------- 1 file changed, 99 insertions(+), 80 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index af8c1b258..0fec4c641 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -132,6 +132,11 @@ public class DownloadDialog extends DialogFragment registerForActivityResult( new StartActivityForResult(), this::requestDownloadPickVideoFolderResult); + + /*////////////////////////////////////////////////////////////////////////// + // Instance creation + //////////////////////////////////////////////////////////////////////////*/ + public static DownloadDialog newInstance(final StreamInfo info) { final DownloadDialog dialog = new DownloadDialog(); dialog.setInfo(info); @@ -153,6 +158,11 @@ public class DownloadDialog extends DialogFragment return instance; } + + /*////////////////////////////////////////////////////////////////////////// + // Setters + //////////////////////////////////////////////////////////////////////////*/ + private void setInfo(final StreamInfo info) { this.currentInfo = info; } @@ -194,6 +204,11 @@ public class DownloadDialog extends DialogFragment this.selectedSubtitleIndex = ssi; } + + /*////////////////////////////////////////////////////////////////////////// + // Android lifecycle + //////////////////////////////////////////////////////////////////////////*/ + @Override public void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -263,10 +278,6 @@ public class DownloadDialog extends DialogFragment }, Context.BIND_AUTO_CREATE); } - /*////////////////////////////////////////////////////////////////////////// - // Inits - //////////////////////////////////////////////////////////////////////////*/ - @Override public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { @@ -322,6 +333,55 @@ public class DownloadDialog extends DialogFragment fetchStreamsSize(); } + private void initToolbar(final Toolbar toolbar) { + if (DEBUG) { + Log.d(TAG, "initToolbar() called with: toolbar = [" + toolbar + "]"); + } + + toolbar.setTitle(R.string.download_dialog_title); + toolbar.setNavigationIcon(R.drawable.ic_arrow_back); + toolbar.inflateMenu(R.menu.dialog_url); + toolbar.setNavigationOnClickListener(v -> requireDialog().dismiss()); + toolbar.setNavigationContentDescription(R.string.cancel); + + okButton = toolbar.findViewById(R.id.okay); + okButton.setEnabled(false); // disable until the download service connection is done + + toolbar.setOnMenuItemClickListener(item -> { + if (item.getItemId() == R.id.okay) { + prepareSelectedDownload(); + if (getActivity() instanceof RouterActivity) { + getActivity().finish(); + } + return true; + } + return false; + }); + } + + @Override + public void onDestroy() { + super.onDestroy(); + disposables.clear(); + } + + @Override + public void onDestroyView() { + dialogBinding = null; + super.onDestroyView(); + } + + @Override + public void onSaveInstanceState(@NonNull final Bundle outState) { + super.onSaveInstanceState(outState); + Icepick.saveInstanceState(this, outState); + } + + + /*////////////////////////////////////////////////////////////////////////// + // Video, audio and subtitle spinners + //////////////////////////////////////////////////////////////////////////*/ + private void fetchStreamsSize() { disposables.clear(); disposables.add(StreamSizeWrapper.fetchSizeForWrapper(wrappedVideoStreams) @@ -356,30 +416,39 @@ public class DownloadDialog extends DialogFragment currentInfo.getServiceId())))); } - @Override - public void onDestroy() { - super.onDestroy(); - disposables.clear(); + private void setupAudioSpinner() { + if (getContext() == null) { + return; + } + + dialogBinding.qualitySpinner.setAdapter(audioStreamsAdapter); + dialogBinding.qualitySpinner.setSelection(selectedAudioIndex); + setRadioButtonsState(true); } - @Override - public void onDestroyView() { - dialogBinding = null; - super.onDestroyView(); + private void setupVideoSpinner() { + if (getContext() == null) { + return; + } + + dialogBinding.qualitySpinner.setAdapter(videoStreamsAdapter); + dialogBinding.qualitySpinner.setSelection(selectedVideoIndex); + setRadioButtonsState(true); } + private void setupSubtitleSpinner() { + if (getContext() == null) { + return; + } + + dialogBinding.qualitySpinner.setAdapter(subtitleStreamsAdapter); + dialogBinding.qualitySpinner.setSelection(selectedSubtitleIndex); + setRadioButtonsState(true); + } + + /*////////////////////////////////////////////////////////////////////////// - // Radio group Video&Audio options - Listener - //////////////////////////////////////////////////////////////////////////*/ - - @Override - public void onSaveInstanceState(@NonNull final Bundle outState) { - super.onSaveInstanceState(outState); - Icepick.saveInstanceState(this, outState); - } - - /*////////////////////////////////////////////////////////////////////////// - // Streams Spinner Listener + // Activity results //////////////////////////////////////////////////////////////////////////*/ private void requestDownloadPickAudioFolderResult(final ActivityResult result) { @@ -454,66 +523,11 @@ public class DownloadDialog extends DialogFragment } } - private void initToolbar(final Toolbar toolbar) { - if (DEBUG) { - Log.d(TAG, "initToolbar() called with: toolbar = [" + toolbar + "]"); - } - - toolbar.setTitle(R.string.download_dialog_title); - toolbar.setNavigationIcon(R.drawable.ic_arrow_back); - toolbar.inflateMenu(R.menu.dialog_url); - toolbar.setNavigationOnClickListener(v -> requireDialog().dismiss()); - toolbar.setNavigationContentDescription(R.string.cancel); - - okButton = toolbar.findViewById(R.id.okay); - okButton.setEnabled(false); // disable until the download service connection is done - - toolbar.setOnMenuItemClickListener(item -> { - if (item.getItemId() == R.id.okay) { - prepareSelectedDownload(); - if (getActivity() instanceof RouterActivity) { - getActivity().finish(); - } - return true; - } - return false; - }); - } /*////////////////////////////////////////////////////////////////////////// - // Utils + // Listeners //////////////////////////////////////////////////////////////////////////*/ - private void setupAudioSpinner() { - if (getContext() == null) { - return; - } - - dialogBinding.qualitySpinner.setAdapter(audioStreamsAdapter); - dialogBinding.qualitySpinner.setSelection(selectedAudioIndex); - setRadioButtonsState(true); - } - - private void setupVideoSpinner() { - if (getContext() == null) { - return; - } - - dialogBinding.qualitySpinner.setAdapter(videoStreamsAdapter); - dialogBinding.qualitySpinner.setSelection(selectedVideoIndex); - setRadioButtonsState(true); - } - - private void setupSubtitleSpinner() { - if (getContext() == null) { - return; - } - - dialogBinding.qualitySpinner.setAdapter(subtitleStreamsAdapter); - dialogBinding.qualitySpinner.setSelection(selectedSubtitleIndex); - setRadioButtonsState(true); - } - @Override public void onCheckedChanged(final RadioGroup group, @IdRes final int checkedId) { if (DEBUG) { @@ -563,6 +577,11 @@ public class DownloadDialog extends DialogFragment public void onNothingSelected(final AdapterView parent) { } + + /*////////////////////////////////////////////////////////////////////////// + // Download + //////////////////////////////////////////////////////////////////////////*/ + protected void setupDownloadOptions() { setRadioButtonsState(false); @@ -575,7 +594,7 @@ public class DownloadDialog extends DialogFragment dialogBinding.subtitleButton.setVisibility(isSubtitleStreamsAvailable ? View.VISIBLE : View.GONE); - prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + prefs = PreferenceManager.getDefaultSharedPreferences(requireContext()); final String defaultMedia = prefs.getString(getString(R.string.last_used_download_type), getString(R.string.last_download_type_video_key)); From 8f559965f6ebb88d80a2bd794746983da03fc4ed Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 19 Jul 2021 10:42:24 +0200 Subject: [PATCH 2/2] Call DownloadDialog dismiss() in the correct way --- .../org/schabi/newpipe/RouterActivity.java | 2 +- .../newpipe/download/DownloadDialog.java | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index c8636c66c..feb9e029d 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -589,9 +589,9 @@ public class RouterActivity extends AppCompatActivity { downloadDialog.setVideoStreams(sortedVideoStreams); downloadDialog.setAudioStreams(result.getAudioStreams()); downloadDialog.setSelectedVideoStream(selectedVideoStreamIndex); + downloadDialog.setOnDismissListener(dialog -> finish()); downloadDialog.show(fm, "downloadDialog"); fm.executePendingTransactions(); - downloadDialog.requireDialog().setOnDismissListener(dialog -> finish()); }, throwable -> showUnsupportedUrlDialog(currentUrl))); } diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 0fec4c641..628496c01 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -3,6 +3,8 @@ package org.schabi.newpipe.download; import android.app.Activity; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.content.ServiceConnection; import android.content.SharedPreferences; @@ -38,7 +40,6 @@ import com.nononsenseapps.filepicker.Utils; import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.R; -import org.schabi.newpipe.RouterActivity; import org.schabi.newpipe.databinding.DownloadDialogBinding; import org.schabi.newpipe.error.ErrorActivity; import org.schabi.newpipe.error.ErrorInfo; @@ -101,6 +102,9 @@ public class DownloadDialog extends DialogFragment @State int selectedSubtitleIndex = 0; + @Nullable + private OnDismissListener onDismissListener = null; + private StoredDirectoryHelper mainStorageAudio = null; private StoredDirectoryHelper mainStorageVideo = null; private DownloadManager downloadManager = null; @@ -204,6 +208,9 @@ public class DownloadDialog extends DialogFragment this.selectedSubtitleIndex = ssi; } + public void setOnDismissListener(@Nullable final OnDismissListener onDismissListener) { + this.onDismissListener = onDismissListener; + } /*////////////////////////////////////////////////////////////////////////// // Android lifecycle @@ -219,7 +226,7 @@ public class DownloadDialog extends DialogFragment if (!PermissionHelper.checkStoragePermissions(getActivity(), PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { - getDialog().dismiss(); + dismiss(); return; } @@ -341,7 +348,7 @@ public class DownloadDialog extends DialogFragment toolbar.setTitle(R.string.download_dialog_title); toolbar.setNavigationIcon(R.drawable.ic_arrow_back); toolbar.inflateMenu(R.menu.dialog_url); - toolbar.setNavigationOnClickListener(v -> requireDialog().dismiss()); + toolbar.setNavigationOnClickListener(v -> dismiss()); toolbar.setNavigationContentDescription(R.string.cancel); okButton = toolbar.findViewById(R.id.okay); @@ -350,15 +357,20 @@ public class DownloadDialog extends DialogFragment toolbar.setOnMenuItemClickListener(item -> { if (item.getItemId() == R.id.okay) { prepareSelectedDownload(); - if (getActivity() instanceof RouterActivity) { - getActivity().finish(); - } return true; } return false; }); } + @Override + public void onDismiss(@NonNull final DialogInterface dialog) { + super.onDismiss(dialog); + if (onDismissListener != null) { + onDismissListener.onDismiss(dialog); + } + } + @Override public void onDestroy() { super.onDestroy(); @@ -622,7 +634,7 @@ public class DownloadDialog extends DialogFragment } else { Toast.makeText(getContext(), R.string.no_streams_available_download, Toast.LENGTH_SHORT).show(); - getDialog().dismiss(); + dismiss(); } }