mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2026-10-02 13:51:48 +00:00
-Baked recovery records into play queue items.
-Added previous and next button on main video player. -Reverted double tap to seek for popup and main video players. -Improved shuffling to use recovery record. -Changed shuffling to place current playing stream to top of queue. -Fixed exception when removing last item on queue. -Changed fast forward and rewind button to previous and next on background notification. -Changed background notification to not update when screen is off and update immediately when screen is turned back on. -Removed unused intent strings. -Changed "Append" to "Enqueue" for append text.
This commit is contained in:
@@ -15,6 +15,8 @@ import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
public class PlayQueueItem implements Serializable {
|
||||
final public static int DEFAULT_QUALITY = Integer.MIN_VALUE;
|
||||
final public static long RECOVERY_UNSET = Long.MIN_VALUE;
|
||||
|
||||
final private String title;
|
||||
final private String url;
|
||||
@@ -23,28 +25,32 @@ public class PlayQueueItem implements Serializable {
|
||||
final private String thumbnailUrl;
|
||||
final private String uploader;
|
||||
|
||||
private int qualityIndex;
|
||||
private long recoveryPosition;
|
||||
private Throwable error;
|
||||
|
||||
private transient Single<StreamInfo> stream;
|
||||
|
||||
PlayQueueItem(final StreamInfo streamInfo) {
|
||||
this.title = streamInfo.name;
|
||||
this.url = streamInfo.url;
|
||||
this.serviceId = streamInfo.service_id;
|
||||
this.duration = streamInfo.duration;
|
||||
this.thumbnailUrl = streamInfo.thumbnail_url;
|
||||
this.uploader = streamInfo.uploader_name;
|
||||
|
||||
this.stream = Single.just(streamInfo);
|
||||
PlayQueueItem(@NonNull final StreamInfo info) {
|
||||
this(info.name, info.url, info.service_id, info.duration, info.thumbnail_url, info.uploader_name);
|
||||
this.stream = Single.just(info);
|
||||
}
|
||||
|
||||
PlayQueueItem(final StreamInfoItem streamInfoItem) {
|
||||
this.title = streamInfoItem.name;
|
||||
this.url = streamInfoItem.url;
|
||||
this.serviceId = streamInfoItem.service_id;
|
||||
this.duration = streamInfoItem.duration;
|
||||
this.thumbnailUrl = streamInfoItem.thumbnail_url;
|
||||
this.uploader = streamInfoItem.uploader_name;
|
||||
PlayQueueItem(@NonNull final StreamInfoItem item) {
|
||||
this(item.name, item.url, item.service_id, item.duration, item.thumbnail_url, item.uploader_name);
|
||||
}
|
||||
|
||||
private PlayQueueItem(final String name, final String url, final int serviceId,
|
||||
final long duration, final String thumbnailUrl, final String uploader) {
|
||||
this.title = name;
|
||||
this.url = url;
|
||||
this.serviceId = serviceId;
|
||||
this.duration = duration;
|
||||
this.thumbnailUrl = thumbnailUrl;
|
||||
this.uploader = uploader;
|
||||
|
||||
resetQualityIndex();
|
||||
resetRecoveryPosition();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -97,4 +103,32 @@ public class PlayQueueItem implements Serializable {
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError(onError);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Item States
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public int getQualityIndex() {
|
||||
return qualityIndex;
|
||||
}
|
||||
|
||||
public long getRecoveryPosition() {
|
||||
return recoveryPosition;
|
||||
}
|
||||
|
||||
public void setQualityIndex(int qualityIndex) {
|
||||
this.qualityIndex = qualityIndex;
|
||||
}
|
||||
|
||||
public void setRecoveryPosition(long recoveryPosition) {
|
||||
this.recoveryPosition = recoveryPosition;
|
||||
}
|
||||
|
||||
public void resetQualityIndex() {
|
||||
this.qualityIndex = DEFAULT_QUALITY;
|
||||
}
|
||||
|
||||
public void resetRecoveryPosition() {
|
||||
this.recoveryPosition = RECOVERY_UNSET;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user