Skip to content

Commit

Permalink
Added preference: Play next on completion
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreyPavlenko committed Jun 20, 2020
1 parent 5648628 commit 80241bc
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public interface BrowsableItemPrefs extends MediaPrefs {
Pref<BooleanSupplier> SUBTITLE_ARTIST = Pref.b("SUBTITLE_ARTIST", false);
Pref<BooleanSupplier> SUBTITLE_DURATION = Pref.b("SUBTITLE_DURATION", true);
Pref<BooleanSupplier> SHOW_TRACK_ICONS = Pref.b("SHOW_TRACK_ICONS", true);
Pref<BooleanSupplier> PLAY_NEXT = Pref.b("PLAY_NEXT", true);
int SORT_BY_NONE = 0;
int SORT_BY_NAME = 1;
int SORT_BY_FILE_NAME = 2;
Expand Down Expand Up @@ -156,10 +157,6 @@ default boolean getShowTrackIconsPref() {
return getBooleanPref(SHOW_TRACK_ICONS);
}

default void setShowTrackIconsPref(boolean b) {
applyBooleanPref(SHOW_TRACK_ICONS, b);
}

default Pref<IntSupplier> getSortByPrefKey() {
return SORT_BY;
}
Expand All @@ -179,4 +176,12 @@ default boolean getSortDescPref() {
default void setSortDescPref(boolean desc) {
applyBooleanPref(SORT_DESC, desc);
}

default boolean getPlayNextPref() {
return getBooleanPref(PLAY_NEXT);
}

default void setPlayNextPref(boolean play) {
applyBooleanPref(PLAY_NEXT, play);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,11 @@ private FutureSupplier<Void> engineEnded(MediaEngine engine) {
if (i != null) {
if (i.isVideo()) i.getPrefs().setWatchedPref(true);

if (!i.getParent().getPrefs().getPlayNextPref()) {
onStop(true);
return completedVoid();
}

return i.getNextPlayable().then(this::prepareItem).then(next -> {
if (next != null) {
skipTo(true, next);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,14 @@ private PreferenceViewAdapter createAdapter() {
o.seekMax = 20;
});

sub1 = set.subSet(o -> o.title = R.string.playback_prefs);
sub1 = set.subSet(o -> o.title = R.string.playback_settings);
sub1.addBooleanPref(o -> {
o.store = mediaPrefs;
o.pref = BrowsableItemPrefs.PLAY_NEXT;
o.title = R.string.play_next_on_completion;
});

sub1 = set.subSet(o -> o.title = R.string.playback_control);

sub2 = sub1.subSet(o -> o.title = R.string.rw_ff_click);
sub2.addIntPref(o -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
import me.aap.fermata.R;
import me.aap.fermata.media.engine.MediaEngine;
import me.aap.fermata.media.engine.MediaEngineManager;
import me.aap.fermata.media.lib.MediaLib;
import me.aap.fermata.media.lib.MediaLib.BrowsableItem;
import me.aap.fermata.media.lib.MediaLib.Favorites;
import me.aap.fermata.media.lib.MediaLib.Folders;
import me.aap.fermata.media.lib.MediaLib.Item;
import me.aap.fermata.media.lib.MediaLib.PlayableItem;
import me.aap.fermata.media.lib.MediaLib.Playlist;
import me.aap.fermata.media.pref.BrowsableItemPrefs;
import me.aap.fermata.media.pref.MediaLibPrefs;
import me.aap.fermata.media.pref.MediaPrefs;
import me.aap.fermata.media.pref.PlayableItemPrefs;
Expand Down Expand Up @@ -145,15 +145,21 @@ private FutureSupplier<Void> buildBrowsableMenu(MainActivityDelegate a, OverlayM
b.addItem(R.id.playlist_remove, R.drawable.playlist_remove, R.string.playlist_remove).setData(bi);
}
}

if (parent instanceof Folders) {
b.addItem(R.id.folders_remove, R.drawable.remove_folder, R.string.remove_folder);
}

if (hasBookmarks) {
b.addItem(R.id.bookmarks, R.drawable.bookmark_filled, R.string.bookmarks).setFutureSubmenu(this::buildBookmarksMenu);
}
if (!(bi instanceof Playlist)) {
a.addPlaylistMenu(b, bi.getPlayableChildren(true), bi::getName);
}
if (parent instanceof Folders) {
b.addItem(R.id.folders_remove, R.drawable.remove_folder, R.string.remove_folder);
}

b.addItem(R.id.playback_settings, R.drawable.playback_settings, R.string.playback_settings)
.setSubmenu(sb -> sb.addItem(R.id.play_next, R.string.play_next_on_completion)
.setChecked(bi.getPrefs().getPlayNextPref()).setHandler(this));

addMediaEngineMenu(a, b);
return completedVoid();
Expand Down Expand Up @@ -366,7 +372,7 @@ public boolean menuItemSelected(OverlayMenuItem i) {
break;
case R.id.playlist_remove:
Playlist p = i.getData();
((MediaLib.Playlists) p.getParent()).removeItems(Collections.singletonList(p));
p.getParent().removeItems(Collections.singletonList(p));
break;
case R.id.bookmark_remove_all_confirm:
if ((item instanceof BrowsableItem)) {
Expand All @@ -384,6 +390,10 @@ public boolean menuItemSelected(OverlayMenuItem i) {
case R.id.repeat_disable:
((PlayableItem) item).setRepeatItemEnabled(id == R.id.repeat_enable);
break;
case R.id.play_next:
BrowsableItemPrefs brPrefs = ((BrowsableItem) item).getPrefs();
brPrefs.setPlayNextPref(!brPrefs.getPlayNextPref());
break;
case R.id.mark_watched:
case R.id.mark_unwatched:
((PlayableItem) item).getPrefs().setWatchedPref(id == R.id.mark_watched);
Expand Down
15 changes: 15 additions & 0 deletions fermata/src/main/res/drawable/playback_settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M3,6h18v5h2V6c0,-1.1 -0.9,-2 -2,-2H3C1.9,4 1,4.9 1,6v12c0,1.1 0.9,2 2,2h9v-2H3V6z"
android:fillColor="#000000"/>
<path
android:pathData="M15,12l-6,-4l0,8z"
android:fillColor="#000000"/>
<path
android:pathData="M22.71,18.43c0.03,-0.29 0.04,-0.58 0.01,-0.86l1.07,-0.85c0.1,-0.08 0.12,-0.21 0.06,-0.32l-1.03,-1.79c-0.06,-0.11 -0.19,-0.15 -0.31,-0.11L21.23,15c-0.23,-0.17 -0.48,-0.31 -0.75,-0.42l-0.2,-1.36C20.26,13.09 20.16,13 20.03,13h-2.07c-0.12,0 -0.23,0.09 -0.25,0.21l-0.2,1.36c-0.26,0.11 -0.51,0.26 -0.74,0.42l-1.28,-0.5c-0.12,-0.05 -0.25,0 -0.31,0.11l-1.03,1.79c-0.06,0.11 -0.04,0.24 0.06,0.32l1.07,0.86c-0.03,0.29 -0.04,0.58 -0.01,0.86l-1.07,0.85c-0.1,0.08 -0.12,0.21 -0.06,0.32l1.03,1.79c0.06,0.11 0.19,0.15 0.31,0.11l1.27,-0.5c0.23,0.17 0.48,0.31 0.75,0.42l0.2,1.36c0.02,0.12 0.12,0.21 0.25,0.21h2.07c0.12,0 0.23,-0.09 0.25,-0.21l0.2,-1.36c0.26,-0.11 0.51,-0.26 0.74,-0.42l1.28,0.5c0.12,0.05 0.25,0 0.31,-0.11l1.03,-1.79c0.06,-0.11 0.04,-0.24 -0.06,-0.32L22.71,18.43zM19,19.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5s1.5,0.67 1.5,1.5S19.83,19.5 19,19.5z"
android:fillColor="#000000"/>
</vector>
5 changes: 4 additions & 1 deletion fermata/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
<string name="addon_name_web_browser">Веб браузер</string>

<string name="interface_prefs">Интерфейс</string>
<string name="playback_prefs">Управление воспроизведением</string>
<string name="playback_settings">Найстройки воспроизведения</string>
<string name="playback_control">Управление воспроизведением</string>
<string name="engine_prefs">Медиа движок</string>

<string name="theme">Тема приложения</string>
Expand All @@ -20,6 +21,8 @@
<string name="show_track_icons">Показывать иконки треков</string>
<string name="text_icon_scale">Маштаб текста и иконки</string>

<string name="play_next_on_completion">Воспроизводить следующий трек</string>

<string name="rw_ff_click">Назад/Вперед - нажатие</string>
<string name="rw_ff_long_click">Назад/Вперед - долгое нажатие</string>
<string name="prev_next_long_click">Предыдущий/Следующий - долгое нажатие</string>
Expand Down
3 changes: 3 additions & 0 deletions fermata/src/main/res/values/ids.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@
<item name="repeat_track" type="id" />
<item name="repeat_folder" type="id" />

<item name="playback_settings" type="id" />
<item name="play_next" type="id" />

<item name="bookmarks" type="id" />
<item name="bookmark_select" type="id" />
<item name="bookmark_create" type="id" />
Expand Down
5 changes: 4 additions & 1 deletion fermata/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
<string name="addon_name_youtube" translatable="false">Youtube</string>

<string name="interface_prefs">Interface</string>
<string name="playback_prefs">Playback control</string>
<string name="playback_settings">Playback settings</string>
<string name="playback_control">Playback control</string>
<string name="engine_prefs">Media engine</string>

<string name="theme">Application theme</string>
Expand All @@ -33,6 +34,8 @@
<string name="show_track_icons">Show track icons</string>
<string name="text_icon_scale">Text and icon scale</string>

<string name="play_next_on_completion">Play next on completion</string>

<string name="rw_ff_click">RW/FF - click</string>
<string name="rw_ff_long_click">RW/FF - long click</string>
<string name="prev_next_long_click">Prev/Next - long click</string>
Expand Down

0 comments on commit 80241bc

Please sign in to comment.