Add a add to playlist option in the share menu.

This commit is contained in:
Kalle Struik 2021-10-02 19:21:25 +02:00
parent 2e3e7f9bf2
commit d844e0aba6
5 changed files with 103 additions and 6 deletions

View file

@ -1,6 +1,8 @@
package org.schabi.newpipe.local.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -40,6 +42,9 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
private final CompositeDisposable playlistDisposables = new CompositeDisposable();
@Nullable
private OnDismissListener onDismissListener = null;
public static Disposable onPlaylistFound(
final Context context, final Runnable onSuccess, final Runnable onFailed
) {
@ -83,6 +88,14 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
return dialog;
}
public void setOnDismissListener(@Nullable final OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
public OnDismissListener getOnDismissListener() {
return onDismissListener;
}
/*//////////////////////////////////////////////////////////////////////////
// LifeCycle - Creation
//////////////////////////////////////////////////////////////////////////*/
@ -141,6 +154,14 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
playlistAdapter = null;
}
@Override
public void onDismiss(@NonNull final DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
/*//////////////////////////////////////////////////////////////////////////
// Helper
//////////////////////////////////////////////////////////////////////////*/
@ -150,7 +171,12 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
return;
}
PlaylistCreationDialog.newInstance(getStreams()).show(getParentFragmentManager(), TAG);
final PlaylistCreationDialog dialog = PlaylistCreationDialog.newInstance(getStreams());
// Move the dismissListener to the new dialog.
dialog.setOnDismissListener(this.onDismissListener);
this.onDismissListener = null;
dialog.show(getParentFragmentManager(), TAG);
requireDialog().dismiss();
}

View file

@ -1,6 +1,8 @@
package org.schabi.newpipe.local.dialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.text.InputType;
import android.widget.Toast;
@ -20,6 +22,9 @@ import java.util.List;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
public final class PlaylistCreationDialog extends PlaylistDialog {
@Nullable
private OnDismissListener onDismissListener = null;
public static PlaylistCreationDialog newInstance(final List<StreamEntity> streams) {
final PlaylistCreationDialog dialog = new PlaylistCreationDialog();
dialog.setInfo(streams);
@ -29,9 +34,22 @@ public final class PlaylistCreationDialog extends PlaylistDialog {
public static PlaylistCreationDialog newInstance(final PlaylistAppendDialog appendDialog) {
final PlaylistCreationDialog dialog = new PlaylistCreationDialog();
dialog.setInfo(appendDialog.getStreams());
dialog.setOnDismissListener(appendDialog.getOnDismissListener());
return dialog;
}
public void setOnDismissListener(@Nullable final OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
@Override
public void onDismiss(@NonNull final DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
/*//////////////////////////////////////////////////////////////////////////
// Dialog
//////////////////////////////////////////////////////////////////////////*/