Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ open class SerializedPlatformVideo(
override var playbackTime: Long = -1;
@kotlinx.serialization.Serializable(with = OffsetDateTimeNullableSerializer::class)
override var playbackDate: OffsetDateTime? = null;
@kotlinx.serialization.Serializable(with = OffsetDateTimeNullableSerializer::class)
var addedToPlaylistDateTime: OffsetDateTime? = OffsetDateTime.now();

override fun toJson() : String {
return Json.encodeToString(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,79 @@ class PlaylistFragment : MainFragment() {
);
};

setOnSort {
val playlist = _playlist ?: return@setOnSort;

UISlideOverlays.showOverlay(overlayContainer, "Sort " + context.getString(R.string.playlist) + " [${playlist.name}] by:", null, {},
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Name (Ascending)",
"",
tag = 1,
call = {
playlist.videos.sortBy { it.name }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
}),
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Name (Descending)",
"",
tag = 2,
call = {
playlist.videos.sortByDescending { it.name }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
}),
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Added Date (Oldest)",
"",
tag = 3,
call = {
playlist.videos.sortBy { it.addedToPlaylistDateTime }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
}),
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Added Date (Newest)",
"",
tag = 4,
call = {
playlist.videos.sortByDescending { it.addedToPlaylistDateTime }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
}),
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Release Date (Oldest)",
"",
tag = 5,
call = {
playlist.videos.sortBy { it.datetime }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
}),
SlideUpMenuItem(
context,
R.drawable.ic_sort,
"Release Date (Newest)",
"",
tag = 6,
call = {
playlist.videos.sortByDescending { it.datetime }
StatePlaylists.instance.createOrUpdatePlaylist(playlist);
onShown(playlist)
})
);
};

_taskLoadPlaylist = TaskHandler<String, Playlist>(
StateApp.instance.scopeGetter,
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,13 @@ abstract class VideoListEditorView : LinearLayout {
protected var _buttonExport: ImageButton;
private var _buttonShare: ImageButton;
private var _buttonEdit: ImageButton;
private var _buttonSort: ImageButton;
private var _buttonSearch: ImageButton;

private var _search: SearchView;

private var _onShare: (()->Unit)? = null;
private var _onSort: (()->Unit)? = null;

private var _loadedVideos: List<IPlatformVideo>? = null;
private var _loadedVideosCanEdit: Boolean = false;
Expand Down Expand Up @@ -107,6 +109,14 @@ abstract class VideoListEditorView : LinearLayout {
buttonShuffle.setOnClickListener { hideSearchKeyboard();onShuffleClick(); hideSearchKeyboard(); };

_buttonEdit.setOnClickListener { hideSearchKeyboard(); onEditClick(); };
_buttonSort = findViewById(R.id.button_sort);
val onSort = _onSort;
if(onSort != null) {
_buttonSort.setOnClickListener { hideSearchKeyboard(); onSort.invoke() };
_buttonSort.visibility = View.VISIBLE;
}
else
_buttonSort.visibility = View.GONE;
setButtonExportVisible(false);
setButtonDownloadVisible(canEdit());

Expand All @@ -127,6 +137,15 @@ abstract class VideoListEditorView : LinearLayout {
_buttonShare.visibility = View.VISIBLE;
}

fun setOnSort(onSort: (()-> Unit)? = null) {
_onSort = onSort;
_buttonSort.setOnClickListener {
hideSearchKeyboard();
onSort?.invoke();
};
_buttonSort.visibility = View.VISIBLE;
}

open fun canEdit(): Boolean { return false; }
open fun onPlayAllClick() { }
open fun onShuffleClick() { }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,10 @@ class StatePlaylists {
if(!Settings.instance.other.playlistAllowDups && playlist.videos.any { it.url == video.url })
return false;

val serializedVideo = SerializedPlatformVideo.fromVideo(video);
serializedVideo.addedToPlaylistDateTime = OffsetDateTime.now();

playlist.videos.add(SerializedPlatformVideo.fromVideo(video));
playlist.videos.add(serializedVideo);
playlist.dateUpdate = OffsetDateTime.now();
playlistStore.saveAsync(playlist, true);

Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/ic_sort.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:fillColor="@android:color/white"
android:pathData="M6 36h12v-4h-12v4zm0-24v4h36v-4h-36zm0 14h24v-4h-24v4z"/><path d="M0 0h48v48h-48z"/>
</vector>
17 changes: 17 additions & 0 deletions app/src/main/res/layout/fragment_video_list_editor.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,23 @@
android:scaleType="fitXY" />


<ImageButton
android:id="@+id/button_sort"
android:layout_width="40dp"
android:layout_height="40dp"
android:contentDescription="@string/cd_button_sort"
android:background="@drawable/background_button_round"
android:gravity="center"
android:layout_marginStart="5dp"
android:layout_marginRight="10dp"
app:layout_constraintRight_toLeftOf="@id/button_edit"
app:layout_constraintTop_toTopOf="@id/button_share"
android:orientation="horizontal"
android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_sort"
android:padding="10dp"
app:tint="@color/white" />

<ImageButton
android:id="@+id/button_edit"
android:layout_width="40dp"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,7 @@
<string name="cd_button_settings">Settings</string>
<string name="cd_image_group">Group image</string>
<string name="cd_button_edit">Edit</string>
<string name="cd_button_sort">Sort</string>
<string name="cd_button_download">Download</string>
<string name="cd_minimize_close">Close</string>
<string name="cd_minimize_pause">Pause</string>
Expand Down