2018-04-23 22:02:36 +02:00
|
|
|
package org.schabi.newpipe.local.dialog;
|
2018-01-22 04:32:49 +01:00
|
|
|
|
2018-08-31 16:12:56 +02:00
|
|
|
import android.app.Dialog;
|
2018-01-22 04:32:49 +01:00
|
|
|
import android.os.Bundle;
|
2019-10-04 14:59:08 +02:00
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import androidx.fragment.app.DialogFragment;
|
2018-08-31 16:12:56 +02:00
|
|
|
import android.view.Window;
|
2018-01-22 04:32:49 +01:00
|
|
|
|
|
|
|
import org.schabi.newpipe.database.stream.model.StreamEntity;
|
|
|
|
import org.schabi.newpipe.util.StateSaver;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Queue;
|
|
|
|
|
|
|
|
public abstract class PlaylistDialog extends DialogFragment implements StateSaver.WriteRead {
|
|
|
|
|
|
|
|
private List<StreamEntity> streamEntities;
|
|
|
|
|
|
|
|
private StateSaver.SavedState savedState;
|
|
|
|
|
|
|
|
protected void setInfo(final List<StreamEntity> entities) {
|
|
|
|
this.streamEntities = entities;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected List<StreamEntity> getStreams() {
|
|
|
|
return streamEntities;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// LifeCycle
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
savedState = StateSaver.tryToRestore(savedInstanceState, this);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDestroy() {
|
|
|
|
super.onDestroy();
|
|
|
|
StateSaver.onDestroy(savedState);
|
|
|
|
}
|
|
|
|
|
2018-08-31 16:12:56 +02:00
|
|
|
@NonNull
|
|
|
|
@Override
|
|
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
|
|
final Dialog dialog = super.onCreateDialog(savedInstanceState);
|
|
|
|
//remove title
|
|
|
|
final Window window = dialog.getWindow();
|
|
|
|
if (window != null) {
|
|
|
|
window.requestFeature(Window.FEATURE_NO_TITLE);
|
|
|
|
}
|
|
|
|
return dialog;
|
|
|
|
}
|
|
|
|
|
2018-01-22 04:32:49 +01:00
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// State Saving
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String generateSuffix() {
|
|
|
|
final int size = streamEntities == null ? 0 : streamEntities.size();
|
|
|
|
return "." + size + ".list";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void writeTo(Queue<Object> objectsToSave) {
|
|
|
|
objectsToSave.add(streamEntities);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@SuppressWarnings("unchecked")
|
2018-08-28 19:17:14 +02:00
|
|
|
public void readFrom(@NonNull Queue<Object> savedObjects) {
|
2018-01-22 04:32:49 +01:00
|
|
|
streamEntities = (List<StreamEntity>) savedObjects.poll();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSaveInstanceState(Bundle outState) {
|
|
|
|
super.onSaveInstanceState(outState);
|
|
|
|
if (getActivity() != null) {
|
|
|
|
savedState = StateSaver.tryToSave(getActivity().isChangingConfigurations(),
|
|
|
|
savedState, outState, this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|